From: Yang Zhang <yang.z.zh...@intel.com>

Some VBIOSs and drivers assume the IGD BDF (bus:device:function) is
always 00:02.0, so this patch reserves 00:02.0 for assigned IGD in
guest.

The original patch is from Weidong Han <weidong....@intel.com>

Signed-off-by: Yang Zhang <yang.z.zh...@intel.com>
Cc: Weidong Han <weidong....@intel.com>
---
 hw/pci/pci.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 4e0701d..e81816e 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -808,6 +808,12 @@ static PCIDevice *do_pci_register_device(PCIDevice 
*pci_dev, PCIBus *bus,
     if (devfn < 0) {
         for(devfn = bus->devfn_min ; devfn < ARRAY_SIZE(bus->devices);
             devfn += PCI_FUNC_MAX) {
+#if defined(CONFIG_XEN_PCI_PASSTHROUGH)
+            /* If gfx_passthru is in use, reserve 00:02.* for the IGD */
+            if (gfx_passthru && devfn == 0x10) {
+                continue;
+            }
+#endif
             if (!bus->devices[devfn])
                 goto found;
         }
-- 
1.7.1


Reply via email to