Some of these have been posted as RFC several times, the primary purpose here is preparation for vGPU and IGD support. This includes methods of specifying a device other than a PCI bus address, as vGPUs are not likely to be discrete or even SR-IOV VF-like devices. We also work on the abstraction of memory regions because we expect vGPUs may take advantage of regions with sparse mmaps (ie. part of the region is direct access while part is trapped for emulation). We can also immediatley apply these changes to cleanup the additional memory regions we use when MSI-X does this implicitly. This also helps to generalize regions for the addition of device specific regions where IGD assignment exposes additional information through an OpRegion as well as information about the PCI host bridge and ISA bridge of the physical system. With IGD assignment we also have a need to fixup ROM images, which also translates to "soft-modding" of assigned devices, allowing the ROM to automatically match the device. Finally we split out the VGA setup such that we can later enable it automatically in device specific cases.
We rely on vfio kernel changes to fully enable some of these features, but I think these patches stand on their own sufficiently to propose them now. Thanks, Alex --- Alex Williamson (6): vfio: Add sysfsdev property for pci & platform vfio: Wrap VFIO_DEVICE_GET_REGION_INFO vfio: Generalize region support vfio/pci: Convert all MemoryRegion to dynamic alloc and consistent functions vfio/pci: Fixup PCI option ROMs vfio/pci: Split out VGA setup hw/arm/sysbus-fdt.c | 4 hw/vfio/common.c | 190 +++++++++++++-- hw/vfio/pci-quirks.c | 62 ++--- hw/vfio/pci.c | 525 +++++++++++++++++++++-------------------- hw/vfio/pci.h | 12 + hw/vfio/platform.c | 126 ++++------ include/hw/vfio/vfio-common.h | 27 ++ trace-events | 10 + 8 files changed, 542 insertions(+), 414 deletions(-)