On 20 January 2012 13:48, Rob Herring <[email protected]> wrote:
> Kernel DT co-maintainer is not authoritative enough for you?
Only if I recognise their name :-) [ie, sorry.]
> The documentation needs some clarification.
>
>> But this is an ABI between boot loaders and the kernel so I don't
>> want to just have something random that happens to work. (And in
>> particular if -1 is the officially sanctioned number then we need
>> to fix arm_boot to be able to pass values >16 bits wide.)
>>
>
> Here's were the kernel sets the mach #. nr is from the database for
> non-DT and ~0 for DT machines.
>
> #define MACHINE_START(_type,_name) \
> static const struct machine_desc __mach_desc_##_type \
> __used \
> __attribute__((__section__(".arch.info.init"))) = { \
> .nr = MACH_TYPE_##_type, \
> .name = _name,
>
> #define MACHINE_END \
> };
>
> #define DT_MACHINE_START(_name, _namestr) \
> static const struct machine_desc __mach_desc_##_name \
> __used \
> __attribute__((__section__(".arch.info.init"))) = { \
> .nr = ~0, \
> .name = _namestr,
>
> In any case, the kernel ignores the value passed in if a valid dtb is
> passed in.
I wonder if we should be passing in anything-except-minus-1,
since if you pass -1 and no DT then the kernel will fail
silently, whereas if you pass something else and no DT the
kernel will complain about the mismatch.
Even when we add a --dtb foo option to qemu, there's bound
to be a pile of user error where users pass in --kernel but
not --dtb.
-- PMM