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
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?