Re: boot methods
From: Paul Mackerras <hidden>
Date: 2001-10-19 12:05:11
Michael Sokolov writes:
But currently the vmlinux boot interface is defined per platform: the generic code passes the initial R3-R7 to platform_init(). It should be possible for a board port maintainer to change this interface in his/her port without affecting anyone else.
Yes, that is a very good point.
In arch/ppc/kernel/setup.c change the division of labor between machine_init and parse_bootinfo. Move the current logic for locating bi_recs in memory from parse_bootinfo to machine_init, passing the pointer to bi_recs to parse_bootinfo() as an argument. Then new board ports can be designed with a bi_recs interface instead of the current traditional one by doing something like parse_bootinfo(r3) in platform_init.
An excellent suggestion. Thank you. Is anyone using the bi_recs in anger yet? For CONFIG_ALL_PPC, we need to make a wrapper which can be booted using existing installed versions of BootX/quik/yaboot, which will accept the parameters as provided by those loaders and make up a set of bi_recs. Then we can require that pmac/prep/chrp _always_ use a wrapper, and then start to move the Open Firmware calls into the wrapper. Other platform maintainers can use a wrapper or not as they choose. For consistency and simplicity it would be nice if there was a standard register assignment on entry, for example having the physical address of the bi_recs in r3, but that is not essential. We should all agree on a comment set of bi_rec tags and the format for each type of entry. And I like Ben's suggestion of keeping the bi_recs around. Reactions? Thoughts? Comments? Paul. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/