vfio-pci: Fix multifunction=on
When an assigned device is initialized it copies the device config space into the emulated config space. Unfortunately multifunction is setup prior to the device initfn and gets clobbered. We need to restore it just like pci-assign does. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Bandan Das <bsd@redhat.com> Message-id: 20131112185059.7262.33780.stgit@bling.home Cc: qemu-stable@nongnu.org Signed-off-by: Anthony Liguori <aliguori@amazon.com>
This commit is contained in:
parent
7865eec4f5
commit
187d62327a
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user