qemu-e2k/hw
Igor Mammedov 208fa0e436 pc: make 'pc.rom' readonly when machine has PCI enabled
looking at bios ROM mapping in QEMU it seems that only isapc
(i.e. not PCI enabled machine) requires ROM being mapped as
RW in other cases BIOS is mapped as RO. Do the same for option
ROM 'pc.rom' when machine has PCI enabled.

As useful side-effect pc.rom MemoryRegion stops being
put in vhost memory map (filtered out by vhost_section()),
which reduces number of entries by 1.

Coincidentally it fixes migration failure reported in

"[PATCH V2]  vhost: fix a migration failed because of vhost region merge"

where following destination CLI with /sys/module/vhost/parameters/max_mem_regions = 8

export DIMMSCOUNT=6
QEMU -enable-kvm \
     -netdev type=tap,id=guest0,vhost=on,script=no,vhostforce \
     -device virtio-net-pci,netdev=guest0 \
     -m 256,slots=256,maxmem=2G \
     `i=0; while [ $i -lt $DIMMSCOUNT ]; do echo \
         "-object memory-backend-ram,id=m$i,size=128M \
          -device pc-dimm,id=d$i,memdev=m$i"; i=$(($i + 1)); \
     done`

will fail to startup with error:

 "-device pc-dimm,id=d5,memdev=m5: a used vhost backend has no free memory slots left"

while it's possible to add the 6th DIMM during hotplug
on source.

Issue is caused by the fact that number of entries in vhost map
is bigger on 1 entry, when -device is processed, than
after guest boots up, and that offending entry belongs to
'pc.rom', it's not like vhost intends to do IO in ROM range
so making it RO hides region from vhost and makes number
of entries in vhost memory map at -device/machine_done time
match number of entries after guest boots.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reported-by: Peng Hao <peng.hao2@zte.com.cn>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2017-08-02 00:13:26 +03:00
..
9pfs docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
acpi docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
adc
alpha docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
arm docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
audio trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
block docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
bt be-hci: use backend functions 2017-06-02 11:33:53 +04:00
char trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
core loader: check get_image_size() return value 2017-07-31 13:06:38 +03:00
cpu hw/cpu: core.c can be compiled as common object 2017-06-09 12:02:55 +10:00
cris hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
display trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
dma trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
gpio
i2c migration/next for 20170601 2017-06-02 14:07:53 +01:00
i386 pc: make 'pc.rom' readonly when machine has PCI enabled 2017-08-02 00:13:26 +03:00
ide -----BEGIN PGP SIGNATURE----- 2017-07-19 13:43:58 +01:00
input trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
intc trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
ipack
ipmi qom: enforce readonly nature of link's check callback 2017-07-14 12:04:42 +02:00
isa trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
lm32
m68k hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
mem docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
microblaze hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
mips hw/mips: load_elf_strerror to report kernel loading failure 2017-07-28 13:32:32 +01:00
misc trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
moxie hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
net trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
nios2 hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
nvram trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
openrisc hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
pci trace-events: fix code style: %# -> 0x% 2017-08-01 12:13:07 +01:00
pci-bridge pci: Convert shpc_init() to Error 2017-07-03 22:29:49 +03:00
pci-host memory: Rename memory_region_init_ram() to memory_region_init_ram_nomigrate() 2017-07-14 17:59:42 +01:00
pcmcia
ppc trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
s390x trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
scsi trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
sd trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
sh4 hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
smbios
sparc docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
sparc64 memory: Rename memory_region_init_ram() to memory_region_init_ram_nomigrate() 2017-07-14 17:59:42 +01:00
ssi xilinx_spips: allow mmio execution 2017-06-27 15:09:15 +02:00
timer trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
tpm
tricore hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
unicore32 fix qemu-system-unicore32 crashing when calling without -kernel 2017-07-31 13:05:49 +03:00
usb trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
vfio trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
virtio vhost-user: fix legacy cross-endian configurations 2017-08-02 00:13:25 +03:00
watchdog shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
xen trace-events: fix code style: %# -> 0x% 2017-08-01 12:13:07 +01:00
xenpv xenfb: remove xen_init_display "temporary" hack 2017-07-07 11:10:03 -07:00
xtensa hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
Makefile.objs