public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86 Boot enhancements, boot protocol 2.04 7/9
Date: 04 Apr 2002 10:15:16 -0700	[thread overview]
Message-ID: <m1lmc3qtaz.fsf@frodo.biederman.org> (raw)
In-Reply-To: <m1ofh0spik.fsf@frodo.biederman.org> <a8flgc$ms2$1@cesium.transmeta.com>

"H. Peter Anvin" <hpa@zytor.com> writes:

> Followup to:  <m1ofh0spik.fsf@frodo.biederman.org>
> By author:    ebiederm@xmission.com (Eric W. Biederman)
> In newsgroup: linux.dev.kernel
> > 
> > +0240/4	2.04+	real_base	0x90000
> > +0244/4	2.04+	real_memsz	Memory used @ 0x90000
> > +0248/4	2.04+	real_filesz	Precomputed data for @ 0x90000
> > 
> [...]
> > +
> > +  low_base, low_memsz, low_filesz, 
> > +  real_base, real_memsz, real_filesz, 
> > +  high_base, high_memsz, high_filesz:
> > +	Up to this point building a zImage or a bzImage has been a very lossy
> > +	process.  The introduction of these six variables attempts to
> > +	rectify that situation.  They document exactly which pieces
> > +	of memory, the kernel uses during the boot process, and they
> > +	indicate exactly how large the various data segments of the
> > +	kernel are.  It is now possible to create a lossless
> > +	transformation to and from a static ELF executable.
> > +
> > +	For a bzImage the low program segment describes the memory
> > +	from 4KB - 572KB the kernel decompressors uses as a temorary
> > +	buffer.  For a zImage the low program segment describes the
> > +	memory from 4KB - 572KB where the compressed kernel is loaded. 
> > +
> > +	For a bzImage the high program segment describes the memory
> > +	from 1MB on where the compressed kernel is loaded, where
> > +	decompression takes place, where the kernel initially runs,
> > +	and where the kernels bss segment is.  For a zImage the high
> > +	program segment describes the memory from 1MB on where the
> > +	kernel is decompressed to, where the kernel initial runs, and
> > +	where the kernels bss segment is located.
> > +
> > +	The real program segment describes the memory from 572KB
> > +	(0x90000) to 640KB (0xa0000) that the real mode kernel uses.
> > +	This region may be moved lower in memory if the BIOS has
> > +	reserved region for some other purpose.  When doing so
> > +	the following considerations should be applied.
> > +	
> > +		For a zImage you may move the real mode kernel now
> > +		lower than low_base + low_memsz.
> > +
> > +		For a bzImage if you move real_base below (low_base +
> > +		low_memsz) the following are the values of the other
> > +		variables.
> > +			low_memsz -= (low_base + low_memsz) - real_base
> > +			high_memsz += (low_base + low_memsz) - real_base
> > +		
> > +	
> > +	With this information it becomes safe to to statically
> > +	relocate the real mode kernel as well as dynamically relocate
> > +	it.  real_base should not be > 0x90000.
> > +
> >  
> 
> Whereas this is technically correct, it is dangerously misleading.
> Please rephrase this to remove any unnecessary references to the
> legacy address 0x90000.

It's not legacy it is still the optimal address.  The amount of memory
required to load the kernel is directly related to how much low memory
the decompresser can use.  If you move it lower you need more memory
above 1MB to load the kernel.

To load the real mode code at < 0x90000 requires a fairly
sophisticated bootloader.  You have already convinced me how it is bad
for bootloaders to make BIOS calls on behalf of the kernel, and how
bad it is to need bootloaders to change.  So unless the real mode code
does the int 12 call itself and relocates itself as high as it can go
I really don't see the default load address changing.  And I am
documenting the default load address.

I'd like to change the way we do this, so I'm going to stare at this
problem a little bit more.  Changing the default load address and
still being able to compute how much memory the kernel is going
to use is a challenge.

Eric

  reply	other threads:[~2002-04-04 17:22 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-03 16:41 [PATCH] x86 Boot enhancements, boot protocol 2.04 7/9 Eric W. Biederman
2002-04-03 19:15 ` Tom Rini
2002-04-04  3:23   ` Eric W. Biederman
2002-04-04 14:10     ` Tom Rini
2002-04-04 15:38       ` Eric W. Biederman
2002-04-03 19:34 ` H. Peter Anvin
2002-04-04 17:15   ` Eric W. Biederman [this message]
2002-04-04 18:30     ` H. Peter Anvin
2002-04-04 19:04       ` Eric W. Biederman
2002-04-04 19:19         ` H. Peter Anvin
2002-04-04 19:32           ` Eric W. Biederman
2002-04-05 21:30           ` Eric W. Biederman
2002-04-05 22:04             ` H. Peter Anvin

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=m1lmc3qtaz.fsf@frodo.biederman.org \
    --to=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.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