On 01/20/2012 02:47 AM, Peter Maydell wrote: > On 19 January 2012 23:17, Rob Herring <rob.herr...@calxeda.com> wrote: >> On 01/19/2012 03:44 PM, Peter Maydell wrote: >>> On 19 January 2012 21:31, Mark Langsdorf <mark.langsd...@calxeda.com> wrote: >>>> + highbank_binfo.board_id = 0xEC10100f; /* provided by deviceTree */ >>> >>> Where does this number come from? It's not in >>> http://www.arm.linux.org.uk/developer/machines/ >>> >>> Is 3027 (==0xbd3) you? >>> http://www.arm.linux.org.uk/developer/machines/list.php?id=3027 >>> >> >> Much of the data there is wrong as none of it is used. 0 or -1 is the >> right value as those are obviously meaningless. A highbank kernel will >> never be booted without devicetree and in that case this number is >> irrelevant. This is the legacy boot interface and qemu really needs to >> learn to boot with a separate dtb. > > Yeah, but the documentation even for DTB boot says we should pass > in a machine number. If 0 or -1 are right then there should be > some documentation that says so. I'll accept "mailing list post > from some authoritative person [eg Grant Likely]" if necessary.
Kernel DT co-maintainer is not authoritative enough for you? 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. Rob