qemu-patch-raspberry4/hw
David Gibson 3e4ac96871 pseries: Limit PCI host bridge "index" value
pseries guests can have large numbers of PCI host bridges.  To avoid the
user having to specify a number of different configuration values for every
one, the device supports an "index" property which is a shorthand setting
the various window and configuration addresses from a predefined sensible
set.

There are some problems with the details at present:
  * The "index" propery is signed, but negative values will create PCI
windows below where we expect, potentially colliding with other devices
  * No limit is imposed on the "index" property and large values can
translate to extremely large window addresses.  With PCI passthrough in
particular this can mean we exceed various mapping and physical address
limits causing the guest host bridge to not work in strange ways.

This patch addresses this, by making "index" unsigned, and imposing a
limit.  Currently the limit allows indices from 0..255 which is probably
enough host bridges for the time being.  It's fairly easy to extend if
we discover we need more.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
2015-03-09 14:59:54 +01:00
..
9pfs virtio: feature bit manipulation helpers 2015-02-26 13:04:07 +01:00
acpi aml-build: fix build for glib < 2.22 2015-03-03 17:42:18 +01:00
alpha QOM infrastructure fixes and device conversions 2015-03-02 13:20:43 +00:00
arm error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
audio pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
block virtio: add feature checking helpers 2015-02-26 13:04:07 +01:00
bt l2cap: fix access to freed memory 2014-08-15 19:12:48 +04:00
char pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
core pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
cpu icc_bus: fix typo ICC_BRIGDE -> ICC_BRIDGE 2014-11-03 19:51:56 +03:00
cris hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
display pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
dma vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
gpio PPC: Add MPC8XXX gpio controller 2014-11-04 23:26:12 +01:00
i2c pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
i386 pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
ide pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
input Add trace to ps2.c. 2015-02-10 09:27:20 +03:00
intc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
ipack pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
isa acpi, ich9: Add unplug cb for ich9. 2015-02-26 12:42:18 +01:00
lm32 acpi-build: make ROMs RAM blocks resizeable 2015-01-08 13:17:55 +02:00
m68k hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mem pc-dimm: add a function to calculate VM's current RAM size 2015-03-04 13:00:04 -05:00
microblaze hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mips QOM infrastructure fixes and device conversions 2015-03-02 13:20:43 +00:00
misc pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
moxie memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
net pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
nvram fw_cfg: fix endianness in fw_cfg_data_mem_read() / _write() 2015-01-16 11:54:30 +00:00
openrisc hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
pci pci-hotplug-old: Has been dead for five major releases, bury 2015-03-01 12:37:54 +01:00
pci-bridge pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
pci-host pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
pcmcia hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
ppc pseries: Limit PCI host bridge "index" value 2015-03-09 14:59:54 +01:00
s390x balloon: call qdev_alias_all_properties for proxy dev in balloon class init 2015-03-01 12:32:59 +01:00
scsi pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
sd pci: Trivial device model conversions to realize 2015-02-26 12:42:16 +01:00
sh4 r2d: Don't use legacy -usbdevice support for setting up board 2015-02-18 10:53:10 +01:00
sparc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
sparc64 QOM infrastructure fixes and device conversions 2015-03-02 13:20:43 +00:00
ssi ssi: xilinx_spi: Initialise CS GPIOs as NULL 2014-08-15 18:54:40 +04:00
timer fix mc146818rtc wrong subsection name to avoid vmstate_subsection_load() fail 2015-02-05 17:16:14 +01:00
tpm tpm: Support for capability flags of TIS 1.3 2015-03-01 12:33:21 +01:00
tricore target-tricore: check return value before using it 2014-11-02 10:04:34 +03:00
unicore32 memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
usb pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
vfio vfio-pci: Enable device request notification support 2015-03-02 11:38:55 -07:00
virtio pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
watchdog pci, pc, virtio fixes and cleanups 2015-03-09 09:14:28 +00:00
xen xen-pt: Fix PCI devices re-attach failed 2015-01-13 11:49:46 +00:00
xenpv hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xtensa target-xtensa: xtfpga: fix ml605 flash size 2015-03-07 15:27:55 +03:00
Makefile.objs vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00