[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Use of flash for x86 BIOS (was: [PATCH 0/2] Implement migra
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] Use of flash for x86 BIOS (was: [PATCH 0/2] Implement migration support for pflash_cfi01) |
Date: |
Thu, 21 Mar 2013 08:45:04 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
[Note cc: Jordan, who added flash to x86 in commit bd183c79]
Peter Maydell <address@hidden> writes:
> These patches implement migration support for pflash_cfi01.
> The first patch just drops some useless state so we don't
> have to think about it for migration.
>
> NB that pflash_cfi01 is used in the x86 pc model. I think this
> means that migration while the BIOS is accessing the flash
> wouldn't have worked properly. Since migration from a device
> with no vmstate to one with vmstate works OK this shouldn't
> break cross-version migration. However x86 maintainers may
> wish to review and confirm this for themselves...
x86 maintainers may wish to *switch it off* until it's done fully and
properly, by setting "pc-sysfw" property "rom_only" to 1.
x86 flash use was added in series "[PATCH v10 0/8] PC system flash
support", commit 4732dcaf..1b89fafe, v1.1. Core code is
pc_system_firmware_init(). Works as follows, as far as I can tell:
* Create a "pc-sysfw" device with default properties.
This device does nothing in particular, and is *not* guest-visible.
It appears to be used just as a property container.
* If (default) property "rom_only" is non-zero, map the BIOS ROM the
traditional way. Get its contents from the file named by -bios,
default "bios.bin".
This is the case for isapc as well as pc-1.0 and older.
* Else, if KVM is enabled, putting BIOS in flash doesn't actually work
(KVM restriction), so force "rom_only" to one, and map the BIOS ROM
the traditional way, as above.
Fatal error if the user defined drive if=pflash,bus=0,unit=0, because
that's valid only when we're using flash for the BIOS ROM.
I understand this case is meant to go away when the KVM restriction
gets lifted.
* Else, map the BIOS ROM as flash device.
Note: for now, this case applies only when KVM is disabled.
- If the user did not define said pflash drive, create one with BIOS
ROM contents (get it the same way as above). Failure is fatal.
- Create a "cfi.pflash01" block device backed by the pflash drive.
What does this mean?
1. The "pc-sysfw" device is mostly harmless.
2. Enabling/disabling KVM is guest-visible! With KVM disabled, you get
a flash memory device. With KVM enabled, you get a ROM. Not good;
KVM should be as transparent as possible to the guest.
I raised this issue last August, Jordan told me he's working on
it[*], and I let the matter rest then. That was a mistake.
[*] http://lists.nongnu.org/archive/html/qemu-devel/2012-08/msg03178.html