@@ -50,7 +50,8 @@
#include "cpu.h"
#include "qemu/error-report.h"
#ifdef CONFIG_XEN
-# include <xen/hvm/hvm_info_table.h>
+#include <xen/hvm/hvm_info_table.h>
+#include "hw/xen/xen_pt.h"
#endif
#define MAX_IDE_BUS 2
@@ -496,11 +497,25 @@ static void pc_init_isa(MachineState *machine)
}
#ifdef CONFIG_XEN
+static void xen_igd_passthrough_pc_init_pci(MachineState *machine)
+{
+ pc_init1(machine, 1, 1, TYPE_I440FX_PCI_HOST_BRIDGE,
+ TYPE_XEN_IGD_PASSTHROUGH_I440FX_PCI_DEVICE);
+}
+
+static void xen_pc_init_pci(MachineState *machine)
+{
+ if (xen_has_gfx_passthru)
+ xen_igd_passthrough_pc_init_pci(machine);
+ else
+ pc_init_pci(machine);
+}
+
static void pc_xen_hvm_init(MachineState *machine)
{
PCIBus *bus;
- pc_init_pci(machine);
+ xen_pc_init_pci(machine);
bus = pci_find_primary_bus();
if (bus != NULL) {
Just register that pci host bridge specific to passthrough. Signed-off-by: Tiejun Chen <tiejun.chen@intel.com> --- hw/i386/pc_piix.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)