From: ebiederm@xmission.com (Eric W. Biederman)
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Mikael Petterson <mikpe@it.uu.se>
Subject: Re: [GIT PULL] x86 setup: correct booting on 486 (revised)
Date: Tue, 06 Nov 2007 11:27:01 -0700 [thread overview]
Message-ID: <m1fxzj5ix6.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <4730AB1F.2030001@zytor.com> (H. Peter Anvin's message of "Tue, 06 Nov 2007 09:57:51 -0800")
"H. Peter Anvin" <hpa@zytor.com> writes:
> Eric W. Biederman wrote:
>>>
>>> I think it should be sparsely used, but stuff like simple end markers is
> pretty
>>> much what it's good for.
>>>
>>> The main reason I want to avoid adding another header field is that the
> header
>>> is a finite resource; one of the many poor decisions in its original design
> was
>>> using a 2-byte jump at the top, so address 0x281 is the end of the universe.
>>
>> That was fixed long ago (by having a 4 byte reserved field in the middle) that
>> we can do a two byte jump and then do a farther jump from there to the 16bit
>> code. So as long as we actually use discipline and really reserve
>> the field for a further jump there should be no need for 0x281 being the end
>> of the universe.
>>
>
> That's not the only complication. The thing that concern me more is boot
> loaders using the jump as a length indicator, and there is really very little
> chance to test that out safely, except perhaps by breaking it immediately (by
> adding a 16-byte jump at the end; that way we provide a minimum of overlap for
> boot loader authors.)
The old setup.S had that 16-byte jump in there.
We actually goofed when we added the relocatable bzImage support and
moved the 16bit jump.
> That being said, I don't see any such field (bootsect_kludge could be recycled,
> arguably, and pad2 is three bytes which is enough for a 16-bit jump.)
>
> At the moment, though, that would only push the maximum from 0x281 to 0x290,
> then we run into the next field in struct boot_params. Although this field can
> also be relocated over time, it once again shows that breaking this particular
> limit is nontrivial, and that we're better off trying to avoid pushing it.
> However, with a little discipline I think we can make 0x281 last us for the
> usable lifetime of this format. In the 10 years since the 2.00 format was
> created, we have only added 36 bytes of header, and we have 57 bytes left (plus
> 5 bytes of pad and 6 bytes of recyclable field.) When we get closer to full, if
> we haven't already created a mechanism making field additions obsolete I think
> we would be better off creating a pointer to a secondary header than trying to
> break the limitations involved in the current header format.
I have a hard time believing in discipline when I see the amount of
not invented here and various oddball mistakes (cause by overlooking
things) that seems to go on when extending the format. We never
needed to change the way the command line was passed, and we should
have kept the longer jump where we had it.
If we are going to through and add an additional pointer to a notes section
let's please put a jump in there so we can make the header longer as
we choose.
Pointers really, really, really suck for maintenance of binary formats.
Offsets against a known base are better, but better still is if you can
avoid them entirely. For what we are doing allocating a contiguous piece
of memory or file is not at all unreasonable.
Eric
next prev parent reply other threads:[~2007-11-06 18:28 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-05 2:16 H. Peter Anvin
2007-11-05 3:58 ` H. Peter Anvin
2007-11-05 17:15 ` Linus Torvalds
2007-11-05 17:56 ` H. Peter Anvin
2007-11-05 18:12 ` Linus Torvalds
2007-11-05 18:32 ` H. Peter Anvin
2007-11-05 18:36 ` Linus Torvalds
2007-11-05 20:21 ` Eric W. Biederman
2007-11-05 20:31 ` H. Peter Anvin
2007-11-05 20:51 ` Jeremy Fitzhardinge
2007-11-05 21:06 ` H. Peter Anvin
2007-11-06 0:59 ` Jeremy Fitzhardinge
2007-11-06 1:11 ` H. Peter Anvin
2007-11-06 1:18 ` Jeremy Fitzhardinge
2007-11-06 1:31 ` H. Peter Anvin
2007-11-06 16:17 ` Jeremy Fitzhardinge
2007-11-06 16:27 ` H. Peter Anvin
2007-11-06 16:55 ` Jeremy Fitzhardinge
2007-11-06 17:00 ` H. Peter Anvin
2007-11-06 17:09 ` Eric W. Biederman
2007-11-06 17:57 ` H. Peter Anvin
2007-11-06 18:27 ` Eric W. Biederman [this message]
2007-11-06 18:41 ` H. Peter Anvin
2007-11-06 17:04 ` Eric W. Biederman
2007-11-05 21:14 ` Eric W. Biederman
2007-11-05 21:28 ` H. Peter Anvin
2007-11-05 21:58 ` Eric W. Biederman
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=m1fxzj5ix6.fsf@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikpe@it.uu.se \
--cc=mingo@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®