[vfio-users] [PATCH v3 11/11] igd: move igd-passthrough-isa-bridge creation to machine init
Gerd Hoffmann
kraxel at redhat.com
Tue Jan 5 11:41:38 UTC 2016
This patch moves igd-passthrough-isa-bridge creation out of the xen
passthrough code into machine init. It is triggered by the
igd-passthru=on machine option. Advantages:
* This works for on both xen and kvm.
* It is activated for the pc machine type only, q35 has a real
isa bridge on 1f.0 and must be handled differently. The q35
plan is https://lkml.org/lkml/2015/11/26/183 (should land in
the next merge window, i.e. linux 4.5).
* If we don't need it any more some day (intel is busy removing
chipset dependencies from the guest driver) we have a single
machine switch to just turn off all igd passthru chipset
tweaks.
Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
---
hw/i386/pc_piix.c | 6 ++++++
hw/xen/xen_pt.c | 14 --------------
2 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index f36222e..2afbbd3 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -281,6 +281,12 @@ static void pc_init1(MachineState *machine,
if (pcmc->pci_enabled) {
pc_pci_device_init(pci_bus);
}
+
+#ifdef CONFIG_LINUX
+ if (machine->igd_gfx_passthru) {
+ igd_passthrough_isa_bridge_create(pci_bus);
+ }
+#endif
}
/* Looking for a pc_compat_2_4() function? It doesn't exist.
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 18a7f72..5f626c9 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -685,17 +685,6 @@ static const MemoryListener xen_pt_io_listener = {
.priority = 10,
};
-static void
-xen_igd_passthrough_isa_bridge_create(XenPCIPassthroughState *s,
- XenHostPCIDevice *dev)
-{
- uint16_t gpu_dev_id;
- PCIDevice *d = &s->dev;
-
- gpu_dev_id = dev->device_id;
- igd_passthrough_isa_bridge_create(d->bus);
-}
-
/* destroy. */
static void xen_pt_destroy(PCIDevice *d) {
@@ -810,9 +799,6 @@ static int xen_pt_initfn(PCIDevice *d)
xen_host_pci_device_put(&s->real_device);
return -1;
}
-
- /* Register ISA bridge for passthrough GFX. */
- xen_igd_passthrough_isa_bridge_create(s, &s->real_device);
}
/* Handle real device's MMIO/PIO BARs */
--
1.8.3.1
More information about the vfio-users
mailing list