From: "Huang, Ying" <ying.huang@intel.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andi Kleen <ak@suse.de>,
"Eric W. Biederman" <ebiederm@xmission.com>,
akpm@linux-foundation.org,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH -v6 0/3] x86 boot: 32-bit boot protocol
Date: Tue, 23 Oct 2007 10:28:35 +0800 [thread overview]
Message-ID: <1193106515.23935.60.camel@caritas-dev.intel.com> (raw)
In-Reply-To: <471CEEFA.60001@zytor.com>
Hi, Peter,
On Mon, 2007-10-22 at 11:42 -0700, H. Peter Anvin wrote:
> This patchset should be rebased on top of Rusty's changes; the rebase is
> fairly trivial and I was originally intending to simply commit the
> rebase as-is, with the boot protocol version bumped to 2.08.
>
> However, the documentation section is simply wrong in a number of
> places. In particular:
>
> +In 32-bit boot protocol, the first step in loading a Linux kernel
> +should still be to load the real-mode code and then examine the kernel
> +header at offset 0x01f1. But, it is not necessary to load all
> +real-mode code, just first 4K bytes traditionally known as "zero page"
> +is needed.
>
> This is incorrect. The zeropage (which really is better referred to as
> struct boot_param) should be initialized to all zero, except for the
> setup header (starting at offset 0x1f0 or 0x1f1(*)) to the length
> specified either by boot protocol version or by the byte at offset 0x201.
I will change this.
> +At entry, the CPU must be in 32-bit protected mode with paging
> +disabled; the CS and DS must be 4G flat segments; %esi holds the base
> +address of the "zero page"; %esp, %ebp, %edi should be zero.
>
> You also need to have a GDT loaded with the selectors for __BOOT_CS
> (0x10) and __BOOT_DS (0x18) containing appropriate values, and you
> should enter with interrupts disabled. For safety, set up ES and SS as
> well as DS.
>
> The bit about %esp, %ebp and %edi being zero is nonsense, although
> specifying at least %ebp == %edi == 0 for future use isn't a bad idea.
> On the other hand, %ebx *is* supposed to be zero.
I will change this.
> The documentation in zero-page.txt is wrong when it comes to protocol
> versions. Most of these fields are ancient, and only a handful of the
> remainder can be tied to specific protocol versions.
So, should the protocol of current fields be set to "ALL" as that of
setup header.
> + struct setup_data {
> + u64 next;
> + u32 type;
> + u32 len;
> + u8 data[0];
> + } __attribute__((packed));
>
> Why packed?
I will change this.
> Time permitting, I might rewrite this myself, but it may be quicker for
> you to update it.
OK, I will update it as soon as possible.
Best Regards,
Huang Ying
prev parent reply other threads:[~2007-10-23 2:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-22 7:16 [PATCH -v6 0/3] x86 boot: 32-bit boot protocol Huang, Ying
2007-10-22 18:42 ` H. Peter Anvin
2007-10-23 2:28 ` Huang, Ying [this message]
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=1193106515.23935.60.camel@caritas-dev.intel.com \
--to=ying.huang@intel.com \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.