On 21/04/2015 02:29, Kevin O'Connor wrote:
On a typical x86 machine, the BIOS image is located in read-only memory at 0xffff0000. The chipsets typically also support shadowing that image to ram (or as a read-only copy) at 0xf0000. However, neither qemu nor kvm fully support all the shadowing capabilities of a typical x86 chipset. So, seabios will copy itself from the image at 0xffff0000 to ram at 0xf0000. Unfortunately, kvm had a bug where the resulting ram image at 0xf0000 was actually mapped to the same ram at 0xffff0000 and changes to the memory copy at 0xf0000 would also change the copy at 0xffff0000. This made it impossible for reboots to redeploy the original pristine copy of seabios.
Nowadays QEMU and KVM can emulate this correctly, but any version of QEMU before the introduction of the memory API (before 1.1 roughly) was not able to support this.
Paolo