From: msokolov@ivan.Harhan.ORG (Michael Sokolov)
To: linuxppc-dev@lists.linuxppc.org
Subject: Re: boot methods
Date: Mon, 15 Oct 01 14:32:22 PDT [thread overview]
Message-ID: <0110152132.AA08287@ivan.Harhan.ORG> (raw)
Paul Mackerras <paulus@samba.org> wrote:
> There is improvement because you can have a separate wrapper for each
> firmware, if necessary. At present if we want to change the way
> information is passed into the kernel, we have to synchronously change
> several different firmware/booter implementations, which are
> maintained in separate places by separate people. The list includes
> (at least) BootX, miboot, yaboot, PPCBoot, and Michael Sokolov's VAX
> console. This is a logistical nightmare. Just getting the updates
> into the firmware/booters is bad enough, but then you create problems
> for users who then can't boot old kernels with the new firmware or new
> kernels with the old firmware.
Just for the record, in my case there is no problem with either getting the
changes into the Linux booter or new and old kernels coexisting. My firmware,
which is indeed a VAX console clone for PPC, knows absolutely nothing about how
to boot Linux or any other OS, just like the real VAX console. Just like the
real VAX console, it hands the problem of booting the user's OS of choice to
the OS vendor. To boot Linux I have an entity called ppc-linux-boot, which is
completely free, maintained in public CVS, and not tied to or controlled by SBS
or any other hardware/firmware vendor.
As ppc-linux-boot is free, public, and independent of the SBS firmware, there
can no problem with people changing it any way they want. It is not part of the
system ROM, it is a user-installed utility stored in the user console store, so
any user can easily and legitimately change it whenever s/he likes without
needing any blessing from the hardware manufacturer, and can use experimental
versions hacked by anyone in the world if s/he likes.
When the vmlinux boot interface changes for a platform supported by ppc-linux-
boot, I'll change runlnx (the part of ppc-linux-boot that actually transfers
control to vmlinux) accordingly. I can make the new version support both old
and new kernels by having a boot flag (the user always has to set the correct
boot flags anyway) select the kernel boot interface.
> The reason that nothing has been done is precisely because it is so
> hard at present to change the way that information is passed into the
> kernel, because we still boot the vmlinux directly in some situations.
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.
> If we absolutely *have* to boot a vmlinux directly without a wrapper,
> then probably the best thing is to use bi_recs and pass in a pointer
> to them, since that is reasonably flexible and can be made to be
> forwards and backwards compatible without too much pain.
Yes, and I'm looking forward to usable bi_recs.
> Changing to
> this scheme is going to cause considerable pain in the short term,
> though.
Not at all. Here's how you can make it painless. 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. Existing ports can be converted gradually as their users work
out the transition. I would gladly change the SBS board ports. In fact, one
should first check if the current memory-based bi_recs are being used by anyone
at all. If they aren't, change parse_bootinfo() to take a pointer, remove its
invokation from machine_init altogether, and leave it up to subarch maintainers
to call it from their platform_init's when they are ready to change. Or if the
current memory-based bi_recs are only used on CONFIG_ALL_PPC, do the same but
put the code for locating them and calling parse_bootinfo() in pmac_init,
prep_init, and chrp_init for now. This would have zero impact on CONFIG_ALL_PPC
users while clearing the way for board port maintainers to convert to bi_recs
individually when they are ready.
--
Michael Sokolov 5791 VAN ALLEN WAY
Software Engineer CARLSBAD CA 92008-7321 USA
SBS Technologies, Inc. Phone: +1-760-438-6900 x2347
Communications Products or 1-888-SBS-COMM x2347
Fax: +1-760-438-6985
E-mail: msokolov@sbs.com
or msokolov@ivan.Harhan.ORG
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
next reply other threads:[~2001-10-15 21:32 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-15 21:32 Michael Sokolov [this message]
2001-10-19 12:05 ` boot methods Paul Mackerras
2001-10-19 13:28 ` Wolfgang Denk
-- strict thread matches above, loose matches on Subject: below --
2001-11-05 6:26 Albert D. Cahalan
2001-11-05 15:10 ` Tom Rini
[not found] <20011015213734.24146@smtp.adsl.oleane.com>
2001-10-15 22:04 ` Wolfgang Denk
2001-10-12 18:21 Michael Sokolov
2001-10-12 18:13 Tom Rini
2001-11-03 1:13 ` Paul Mackerras
2001-11-03 1:55 ` Tom Rini
2001-11-02 23:57 ` Matt Porter
2001-11-03 9:45 ` Wolfgang Denk
2001-11-03 15:15 ` Tom Rini
2001-11-03 18:36 ` Wolfgang Denk
2001-11-06 16:59 ` Mark A. Greer
2001-11-06 18:55 ` Tom Rini
2001-11-06 21:21 ` Mark A. Greer
2001-10-12 16:56 Michael Sokolov
2001-10-12 7:32 Paul Mackerras
2001-10-12 8:40 ` Geert Uytterhoeven
2001-10-12 9:16 ` Wolfgang Denk
2001-10-13 11:20 ` Paul Mackerras
2001-10-14 15:44 ` Wolfgang Denk
2001-10-15 12:42 ` Benjamin Herrenschmidt
2001-10-15 13:32 ` Wolfgang Denk
2001-10-12 10:19 ` Michael Schmitz
2001-10-12 10:55 ` Juergen E. Fischer
2001-10-12 13:37 ` Nils Krueger
2001-10-12 21:53 ` Michel Lanners
2001-10-13 11:01 ` Michel Dänzer
2001-10-15 13:50 ` Peter Bergner
2001-10-16 23:49 ` Val Henson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0110152132.AA08287@ivan.Harhan.ORG \
--to=msokolov@ivan.harhan.org \
--cc=linuxppc-dev@lists.linuxppc.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).