[SeaBIOS] [PATCH 00/11] Relocate init code to high memory
gleb at redhat.com
Thu Sep 16 08:34:40 CEST 2010
On Wed, Sep 15, 2010 at 11:34:31PM -0400, Kevin O'Connor wrote:
> On Thu, Sep 16, 2010 at 05:18:33AM +0200, Peter Stuge wrote:
> > Kevin O'Connor wrote:
> > > The one-time init code could be called again on a soft-reboot, but
> > > SeaBIOS now detects this case and attempts a hard-reboot.
> > Could it just skip relocation on warm boots?
> It's possible, but it requires reserving the ram used to store the
> init code. It seems like a waste to reserve memory from the OS for
> something that is already in flash and used so infrequently.
> >Or is there a problem
> > with knowing where things were relocated to?
> It's tricky - harder than doing a hard-reboot - but possible. (The
> difficulty is in resetting the malloc zones while the relocated code
> is in one of the malloc zones.)
> > > qemu and kvm don't appear to have a reliable way to hard-reboot
> > > - normal reboots don't reset the 0xc0000-0xfffff memory.
> > That should probably be fixed.
> > > kvm doesn't keep a pristine copy of the bios
> > Ditto.
> Yeah. It looks like kvm is updating the ram at 0xffff0000 when writes
> are done to 0xf0000. It's not ideal.
AFAIK immediately after reset memory accesses to 0xffff0000 and 0xf0000
are directed to exactly same ROM chip. Are you saying that after shadowing
BIOS at location 0xf0000 and modifying it in memory BIOS copy as seeing
at 0xffff0000 changes too?
More information about the SeaBIOS