From e1cfb0f5a2e130f2dbef921edd0f8f6a294f7211 Mon Sep 17 00:00:00 2001 From: Sheng Yang <sheng@linux.intel.com> Date: Thu, 21 May 2009 17:08:54 -0700 Subject: [PATCH 16/25] kvm: qemu: Move assigned device capability init earlier For if assign_irq() is called before capability init, it don't know device support MSI or not for the first time calling. So it won't enable MSI2INTx... Signed-off-by: Sheng Yang <sheng@linux.intel.com> Signed-off-by: Avi Kivity <avi@redhat.com> (cherry picked from commit ba7ce8c2f1faab5af6c6c638fe872b53564b37f4) Signed-off-by: Chris Wright <chrisw@redhat.com> Bugzilla: 498085 Message-Id: <1242950943-30180-17-git-send-email-chrisw@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> RH-Upstream-status: applied Acked-by: Juan Quintela <quintela@redhat.com> Acked-by: Marcelo Tosatti <mtosatti@redhat.com> Acked-by: Don Dutile <ddutile@redhat.com> --- qemu/hw/device-assignment.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/qemu/hw/device-assignment.c b/qemu/hw/device-assignment.c index f807cc8..573c150 100644 --- a/qemu/hw/device-assignment.c +++ b/qemu/hw/device-assignment.c @@ -1150,6 +1150,11 @@ struct PCIDevice *init_assigned_device(AssignedDevInfo *adev, PCIBus *bus) pci_init(pacc); dev->pdev = pci_get_dev(pacc, 0, adev->bus, adev->dev, adev->func); + if (pci_enable_capability_support(pci_dev, 0, NULL, + assigned_device_pci_cap_write_config, + assigned_device_pci_cap_init) < 0) + goto assigned_out; + /* assign device to guest */ r = assign_device(adev); if (r < 0) @@ -1160,11 +1165,6 @@ struct PCIDevice *init_assigned_device(AssignedDevInfo *adev, PCIBus *bus) if (r < 0) goto assigned_out; - if (pci_enable_capability_support(pci_dev, 0, NULL, - assigned_device_pci_cap_write_config, - assigned_device_pci_cap_init) < 0) - goto assigned_out; - /* intercept MSI-X entry page in the MMIO */ if (dev->cap.available & ASSIGNED_DEVICE_CAP_MSIX) if (assigned_dev_register_msix_mmio(dev)) -- 1.6.3.rc4.29.g8146