qemu-patch-raspberry4/hw/ppc
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
..
e500-ccsr.h ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
e500.c PPC: e500: Fix GPIO controller interrupt number 2015-01-07 16:16:28 +01:00
e500.h PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
e500plat.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
mac.h block: Rename BlockDriverAIOCB* to BlockAIOCB* 2014-10-20 13:41:27 +02:00
mac_newworld.c PPC: Don't use legacy -usbdevice support for setting up board 2015-02-18 10:53:10 +01:00
mac_oldworld.c hw/usb: simplified usb_enabled 2015-01-07 16:16:29 +01:00
Makefile.objs target-ppc: virtex-ml507 machine type should depend on CONFIG_XILINX 2014-11-04 23:26:11 +01:00
mpc8544_guts.c cpu: Replace cpu_single_env with CPUState current_cpu 2013-07-09 21:20:28 +02:00
mpc8544ds.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
ppc.c ppc: do not use get_clock_realtime() 2015-01-07 16:16:26 +01:00
ppc4xx_devs.c SCSI changes that enable sending vendor-specific commands via virtio-scsi. 2014-08-19 13:00:57 +01:00
ppc4xx_pci.c hw/pci/ppc4xx_pci.c: Remove unused pci4xx_cfgaddr_read/write/ops 2014-11-04 23:26:12 +01:00
ppc405.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
ppc405_boards.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
ppc405_uc.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
ppc440_bamboo.c hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
ppc_booke.c hw/ppc: Avoid shifting left into sign bit 2014-03-27 19:22:49 +04:00
ppce500_spin.c ppce500_spin: Initialize struct properly 2014-04-08 11:20:05 +02:00
prep.c hw/usb: simplified usb_enabled 2015-01-07 16:16:29 +01:00
spapr.c NUMA fixes queue 2015-03-02 12:13:45 +00:00
spapr_events.c spapr: Move interrupt allocator to xics 2014-06-27 13:48:26 +02:00
spapr_hcall.c hw/ppc/spapr_hcall.c: Fix typo in function names 2014-09-08 12:50:47 +02:00
spapr_iommu.c spapr_vio/spapr_iommu: Move VIO bypass where it belongs 2015-03-09 14:59:52 +01:00
spapr_pci.c pseries: Limit PCI host bridge "index" value 2015-03-09 14:59:54 +01:00
spapr_pci_vfio.c 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
spapr_rtas.c ppc: spapr-rtas - implement os-term rtas call 2014-09-08 12:50:45 +02:00
spapr_vio.c spapr_vio/spapr_iommu: Move VIO bypass where it belongs 2015-03-09 14:59:52 +01:00
virtex_ml507.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00