Re: question: malta doesn't use a1 for fdt from bootloader

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




在2023年12月25日十二月 下午1:33,Jiaxun Yang写道:
> 在 2023/12/22 17:51, dan@xxxxxxxxxx 写道:
>> 
>> Newbie question:
>> 
>> I noticed while writing some test automation with QEMU and U-Boot that
>> the Malta kernel appears to ignore any DTB provided by the bootloader, in
>> favour of using the one embedded into the kernel image. Is there a
>> reason behind this, or is it just not a thing that's been changed since
>> the board was converted to use device tree?
>
> Hi,
>
> It's a bit of history that DeviceTree passed by YAMON bootloader to 
> kernel does not compatible with upstream kernel's devicetree bindings,
> so we decided to just omit it.

Hi Dan,

I checked malta YAMON firmware release and can confirm that it is safe
on to do so. These firmwares won't set fw_arg0 to -2.

I think you can make it a patch.

Thanks
- Jiaxun


>
>> 
>> I patched my own kernel to check $a1 as the "mips generic" kernel does,
>> and it seems to work, but maybe I'm missing something? I did have to
>> rebuild U-Boot with different CONFIG options to make use of it (I don't
>> khow what real hardware Malta uses for a bootloader) so perhaps it has
>> limited use.
>> 
>> If the change is acceptable in principle I'll tidy it up and submit
>> a patch with all the proper procedure.
>
> I'm not sure if this is ok for YAMON-DT systems, will check on those 
> systems.
>
> Thanks
> - Jiaxun
>> 
>> Opinions welcome
>> 
>> -dan
>> 
>> 
>> diff --git a/arch/mips/mti-malta/malta-setup.c b/arch/mips/mti-malta/malta-setup.c
>> index 21cb3ac1237b..52e731f9b4e2 100644
>> --- a/arch/mips/mti-malta/malta-setup.c
>> +++ b/arch/mips/mti-malta/malta-setup.c
>> @@ -192,7 +192,9 @@ static void __init bonito_quirks_setup(void)
>>   
>>   void __init *plat_get_fdt(void)
>>   {
>> -       return (void *)__dtb_start;
>> +       return (fw_arg0 == -2) ?
>> +               (void *) (KSEG1ADDR(fw_arg1)) :
>> +               (void *) __dtb_start;
>>   }
>>   
>>   void __init plat_mem_setup(void)
>>

-- 
- Jiaxun





[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux