|
@@ -3568,6 +3568,13 @@ static int vfio_initfn(PCIDevice *pdev)
|
|
|
vdev->emulated_config_bits[PCI_HEADER_TYPE] =
|
|
|
PCI_HEADER_TYPE_MULTI_FUNCTION;
|
|
|
|
|
|
+ /* Restore or clear multifunction, this is always controlled by QEMU */
|
|
|
+ if (vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
|
|
|
+ vdev->pdev.config[PCI_HEADER_TYPE] |= PCI_HEADER_TYPE_MULTI_FUNCTION;
|
|
|
+ } else {
|
|
|
+ vdev->pdev.config[PCI_HEADER_TYPE] &= ~PCI_HEADER_TYPE_MULTI_FUNCTION;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* Clear host resource mapping info. If we choose not to register a
|
|
|
* BAR, such as might be the case with the option ROM, we can get
|