hw/i386/pc_sysfw: Alias rather than copy isa-bios region
In the -bios case the "isa-bios" memory region is an alias to the BIOS mapped
to the top of the 4G memory boundary. Do the same in the -pflash case, but only
for new machine versions for migration compatibility. This establishes common
behavior and makes pflash commands work in the "isa-bios" region which some
real-world legacy bioses rely on.
Note that in the sev_enabled() case, the "isa-bios" memory region in the -pflash
case will now also point to encrypted memory, just like it already does in the
-bios case.
When running `info mtree` before and after this commit with
`qemu-system-x86_64 -S -drive \
if=pflash,format=raw,readonly=on,file=/usr/share/qemu/bios-256k.bin` and running
`diff -u before.mtree after.mtree` results in the following changes in the
memory tree:
--- before.mtree
+++ after.mtree
@@ -71,7 +71,7 @@
0000000000000000-
ffffffffffffffff (prio -1, i/o): pci
00000000000a0000-
00000000000bffff (prio 1, i/o): vga-lowmem
00000000000c0000-
00000000000dffff (prio 1, rom): pc.rom
-
00000000000e0000-
00000000000fffff (prio 1, rom): isa-bios
+
00000000000e0000-
00000000000fffff (prio 1, romd): alias isa-bios @system.flash0
0000000000020000-
000000000003ffff
00000000000a0000-
00000000000bffff (prio 1, i/o): alias smram-region @pci
00000000000a0000-
00000000000bffff
00000000000c0000-
00000000000c3fff (prio 1, i/o): alias pam-pci @pci
00000000000c0000-
00000000000c3fff
00000000000c4000-
00000000000c7fff (prio 1, i/o): alias pam-pci @pci
00000000000c4000-
00000000000c7fff
@@ -108,7 +108,7 @@
0000000000000000-
ffffffffffffffff (prio -1, i/o): pci
00000000000a0000-
00000000000bffff (prio 1, i/o): vga-lowmem
00000000000c0000-
00000000000dffff (prio 1, rom): pc.rom
-
00000000000e0000-
00000000000fffff (prio 1, rom): isa-bios
+
00000000000e0000-
00000000000fffff (prio 1, romd): alias isa-bios @system.flash0
0000000000020000-
000000000003ffff
00000000000a0000-
00000000000bffff (prio 1, i/o): alias smram-region @pci
00000000000a0000-
00000000000bffff
00000000000c0000-
00000000000c3fff (prio 1, i/o): alias pam-pci @pci
00000000000c0000-
00000000000c3fff
00000000000c4000-
00000000000c7fff (prio 1, i/o): alias pam-pci @pci
00000000000c4000-
00000000000c7fff
@@ -131,11 +131,14 @@
memory-region: pc.ram
0000000000000000-
0000000007ffffff (prio 0, ram): pc.ram
+memory-region: system.flash0
+
00000000fffc0000-
00000000ffffffff (prio 0, romd): system.flash0
+
memory-region: pci
0000000000000000-
ffffffffffffffff (prio -1, i/o): pci
00000000000a0000-
00000000000bffff (prio 1, i/o): vga-lowmem
00000000000c0000-
00000000000dffff (prio 1, rom): pc.rom
-
00000000000e0000-
00000000000fffff (prio 1, rom): isa-bios
+
00000000000e0000-
00000000000fffff (prio 1, romd): alias isa-bios @system.flash0
0000000000020000-
000000000003ffff
memory-region: smram
00000000000a0000-
00000000000bffff (prio 0, ram): alias smram-low @pc.ram
00000000000a0000-
00000000000bffff
Note that in both cases the "system" memory region contains the entry
00000000fffc0000-
00000000ffffffff (prio 0, romd): system.flash0
but the "system.flash0" memory region only appears standalone when "isa-bios" is
an alias.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Message-ID: <
20240508175507.22270-7-shentey@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>