public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Jones <pjones@redhat.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Robin Holt <holt@sgi.com>,
	hpa@sgi.com, Yinghai Lu <yinghai@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: Revert commit 5dcd14ecd4 - breaks EFI boot with SLES11 elilo.efi
Date: Wed, 6 Mar 2013 11:55:33 -0500	[thread overview]
Message-ID: <20130306165533.GA25932@fenchurch.internal.datastacks.com> (raw)
In-Reply-To: <512FC82B.40909@zytor.com>

On Thu, Feb 28, 2013 at 01:12:11PM -0800, H. Peter Anvin wrote:
> Then make it follow the boot spec:
> 
> > In 32-bit boot protocol, the first step in loading a Linux kernel
> > should be to setup the boot parameters (struct boot_params,
> > traditionally known as "zero page"). The memory for struct boot_params
> > should be allocated and initialized to all zero. Then the setup header
> > from offset 0x01f1 of kernel image on should be loaded into struct
> > boot_params and examined. The end of setup header can be calculated as
> > follow:
> > 
> >         0x0202 + byte value at offset 0x0201
> 
> ... so we don't have to.

So, the problem here seems to be that there's never been widespread
compliance with this paragraph, but this patch assumes there has.  A
brief survey concludes:

grub 1 on bios - loads the kernel and edits the parameters it cares
                 about in place
grub 1 on efi - allocates a buffer (fails to clear it) and modifies
                the parameters it cares about, then copies it back
grub 2 on bios - clears the buffer, writes what it cares about
grub 2 on efi (using efi boot stub) - reads the buffer, modifies fields
        it cares about, passes the pointer to the boot stub
elilo - allocates a new buffer, copies the kernel structure in to it,
        allocates another buffer, clears it, copies the first structure
	in to it, frees the first buffer, modifies fields it cares about
	in the second buffer, clears some other fields in the second
	structure, and passes the pointer in when it calls the old entry
	point
	(It's possible that there's some newer version of elilo than 3.14,
	which I had handy, but I'm not going to do deeper research on a
	project that keeps a link to its CVS repo on the most obvious
	google result, lest I lose the will to live.)
syslinux - I'm just going to assume that your code matches the spec.

So it's certainly worth trying to find a better way to check this, but I
don't think this patch is it.  If we're going to enforce it, we have to
make sure that a bootloader that's conforming to what was de facto the
standard in 0x020b still works.  Otherwise we're just breaking
bootloaders for no reason, and that will end poorly.

I'd suggest we add a field for the bootloader to make a positive
declaration of what version it is using, and only check for the sentinel
if the field claims it's doing 0x020c or newer.

-- 
        Peter

  parent reply	other threads:[~2013-03-06 16:55 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-28 20:52 Revert commit 5dcd14ecd4 - breaks EFI boot with SLES11 elilo.efi Robin Holt
2013-02-28 21:05 ` H. Peter Anvin
2013-02-28 21:09   ` Robin Holt
2013-02-28 21:12     ` H. Peter Anvin
2013-02-28 23:02       ` Yinghai Lu
2013-02-28 23:09         ` H. Peter Anvin
2013-03-05  8:15           ` Robin Holt
2013-03-05 15:22             ` H. Peter Anvin
2013-03-05 19:12               ` Yinghai Lu
2013-03-05 19:52                 ` Robin Holt
2013-03-05 20:14                   ` Yinghai Lu
2013-03-05 20:22                     ` Robin Holt
2013-03-06 16:53                 ` Josh Boyer
2013-03-06 17:26                   ` H. Peter Anvin
2013-03-06 17:36                     ` Josh Boyer
2013-03-06 17:37                       ` H. Peter Anvin
2013-03-06 20:40                         ` Josh Boyer
2013-03-06 20:43                           ` H. Peter Anvin
2013-03-07  4:53                       ` [tip:x86/urgent] x86: Don' t clear efi_info even if the sentinel hits tip-bot for Josh Boyer
2013-03-06 18:00                     ` [PATCH] Be explicit about what the x86 0x020c boot parameter version requires Peter Jones
2013-03-07  4:31                       ` H. Peter Anvin
2013-03-07  8:39                         ` Matt Fleming
2013-03-07  4:54                       ` [tip:x86/urgent] x86, doc: Be explicit about what the x86 struct boot_params requires tip-bot for Peter Jones
2013-03-06 16:55       ` Peter Jones [this message]
2013-03-06 17:14         ` Revert commit 5dcd14ecd4 - breaks EFI boot with SLES11 elilo.efi H. Peter Anvin
2013-03-06 17:32           ` Peter Jones

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=20130306165533.GA25932@fenchurch.internal.datastacks.com \
    --to=pjones@redhat.com \
    --cc=holt@sgi.com \
    --cc=hpa@sgi.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=yinghai@kernel.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