From ba3bbcb7fe5b4bb2e8be8dee46cfb637333471f6 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Sat, 11 Jan 2014 17:59:52 +0100 Subject: [PATCH 02/22] Revert "pc: Disable the "use flash device for BIOS unless KVM" misfeature" RH-Author: Laszlo Ersek Message-id: <1389463208-6278-3-git-send-email-lersek@redhat.com> Patchwork-id: 56614 O-Subject: [RHEL-7.0 qemu-kvm PATCH 02/18] Revert "pc: Disable the "use flash device for BIOS unless KVM" misfeature" Bugzilla: 1032346 RH-Acked-by: Paolo Bonzini RH-Acked-by: Amos Kong RH-Acked-by: Andrew Jones RH-Acked-by: Kevin Wolf This reverts commit 23231f783d082bef74ba1d9fed6b07fdd058cb87. RHEL-7 note -- I'll quote Markus' awesome original, RHEL-7-specific commit message here: > Use of a flash memory device for the BIOS was added in series "[PATCH > v10 0/8] PC system flash support", commit 4732dca..1b89faf, v1.1. > > Flash vs. ROM is a guest-visible difference. Thus, flash use had to > be suppressed for machine types pc-1.0 and older. This was > accomplished by adding a dummy device "pc-sysfw" with property > "rom_only": > > * Non-zero rom_only means "use ROM". Default for pc-1.0 and older. > * Zero rom_only means "maybe use flash". Default for newer machines. > > Not only is the dummy device ugly, it was also retroactively added to > the older machine types! Fortunately, it's not guest-visible (thus no > immediate guest ABI breakage), and has no vmstate (thus no immediate > migration breakage). Breakage occurs only if the user unwisely > enables flash by setting rom_only to zero. Patch review FAIL #1. > > Why "maybe use flash"? Flash didn't work with KVM. Therefore, > rom_only=0 really means "use flash, except when KVM is enabled, use > ROM". This is a Bad Idea, because it makes enabling/ disabling KVM > guest-visible. Patch review FAIL #2. > > Aside: it also precludes migrating between KVM on and off, but that's > not possible for other reasons anyway. > > Upstream commit 9953f88 killed the misfeature for new machine types. > Upstream commit 9e1c2ec reverted the kill, but left a dead variable > behind. This is what's in RHEL-7 is before this patch. > > KVM has recently been made to support flash (KVM_CAP_READONLY_MEM), > which permitted upstream QEMU to redo the flash vs. ROM switch > properly (commit 338ea90..dafb82e). This commit range is Jordan's series that this backport is all about. > The required follow-up cleanup > hasn't been committed, yet: Paolo's [PATCH v2 0/3] Remove legacy sysfw > code. It has now, I'm including it in the series. > Instead of backporting all that, I'm simply ripping out the flash > feature. ROM has been working just fine for us, and I don't think we > should complicate RHEL-7 maintenance and support by having two ways to > map BIOS, at least not without sufficient business reason. The business reason seems to be OVMF... > The result behaves just like upstream with the follow-up cleanup > applied, except -pflash doesn't affect the BIOS mapping, but remains > as it always was: it creates an unused drive. ... and for it we need -pflash to create the real thing. Signed-off-by: Laszlo Ersek --- hw/block/pc_sysfw.c | 9 --------- 1 file changed, 9 deletions(-) Signed-off-by: Miroslav Rezanina --- hw/block/pc_sysfw.c | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) diff --git a/hw/block/pc_sysfw.c b/hw/block/pc_sysfw.c index 0bc5b7a..6149b20 100644 --- a/hw/block/pc_sysfw.c +++ b/hw/block/pc_sysfw.c @@ -36,7 +36,6 @@ #define BIOS_FILENAME "bios.bin" -#if 0 /* Disabled for Red Hat Enterprise Linux */ typedef struct PcSysFwDevice { SysBusDevice busdev; uint8_t rom_only; @@ -136,7 +135,6 @@ static void pc_system_flash_init(MemoryRegion *rom_memory, pc_isa_bios_init(rom_memory, flash_mem, size); } -#endif /* Disabled for Red Hat Enterprise Linux */ static void old_pc_system_rom_init(MemoryRegion *rom_memory) { @@ -193,7 +191,6 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory) bios); } -#if 0 /* Disabled for Red Hat Enterprise Linux */ /* * Bug-compatible flash vs. ROM selection enabled? * A few older machines enable this. @@ -288,9 +285,3 @@ static void pcsysfw_register (void) type_init (pcsysfw_register); -#else /* Disabled for Red Hat Enterprise Linux */ -void pc_system_firmware_init(MemoryRegion *rom_memory) -{ - old_pc_system_rom_init(rom_memory); -} -#endif -- 1.7.1