]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
xen/x86: add all PCI devices to PVHv2 Dom0
authorRoger Pau Monne <roger.pau@citrix.com>
Wed, 31 Aug 2016 10:43:55 +0000 (12:43 +0200)
committerRoger Pau Monne <roger.pau@citrix.com>
Wed, 2 Nov 2016 17:34:50 +0000 (18:34 +0100)
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Cc: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/domain_build.c

index d7b54d991b4796e83e9a543659e77c11652918fa..d57eec2eec4aed99e1d0915cc3e8c895850af908 100644 (file)
@@ -2531,6 +2531,25 @@ static int __init hvm_setup_acpi(struct domain *d, paddr_t start_info)
     return 0;
 }
 
+static int __init hvm_setup_pci(struct domain *d)
+{
+    struct pci_dev *pdev;
+    int rc;
+
+    printk("** Adding PCI devices **\n");
+
+    pcidevs_lock();
+    list_for_each_entry( pdev, &d->arch.pdev_list, domain_list )
+    {
+        rc = hwdom_add_device(pdev);
+        if ( rc )
+            return rc;
+    }
+    pcidevs_unlock();
+
+    return 0;
+}
+
 static int __init construct_dom0_hvm(struct domain *d, const module_t *image,
                                      unsigned long image_headroom,
                                      module_t *initrd,
@@ -2577,6 +2596,13 @@ static int __init construct_dom0_hvm(struct domain *d, const module_t *image,
         return rc;
     }
 
+    rc = hvm_setup_pci(d);
+    if ( rc )
+    {
+        printk("Failed to add PCI devices: %d\n", rc);
+        return rc;
+    }
+
     clear_bit(_VPF_down, &d->vcpu[0]->pause_flags);
 
     return 0;