mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
kvm: Pass PCI device pointer to MSI routing functions
In-kernel ITS emulation on ARM64 will require to supply requester IDs. These IDs can now be retrieved from the device pointer using new pci_requester_id() function. This patch adds pci_dev pointer to KVM GSI routing functions and makes callers passing it. x86 architecture does not use requester IDs, but hw/i386/kvm/pci-assign.c also made passing PCI device pointer instead of NULL for consistency with the rest of the code. Signed-off-by: Pavel Fedin <p.fedin@samsung.com> Message-Id: <ce081423ba2394a4efc30f30708fca07656bc500.1444916432.git.p.fedin@samsung.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a05f686ff3
commit
dc9f06ca81
11 changed files with 31 additions and 25 deletions
|
@ -424,7 +424,7 @@ static void vfio_add_kvm_msi_virq(VFIOPCIDevice *vdev, VFIOMSIVector *vector,
|
|||
return;
|
||||
}
|
||||
|
||||
virq = kvm_irqchip_add_msi_route(kvm_state, *msg);
|
||||
virq = kvm_irqchip_add_msi_route(kvm_state, *msg, &vdev->pdev);
|
||||
if (virq < 0) {
|
||||
event_notifier_cleanup(&vector->kvm_interrupt);
|
||||
return;
|
||||
|
@ -449,9 +449,10 @@ static void vfio_remove_kvm_msi_virq(VFIOMSIVector *vector)
|
|||
event_notifier_cleanup(&vector->kvm_interrupt);
|
||||
}
|
||||
|
||||
static void vfio_update_kvm_msi_virq(VFIOMSIVector *vector, MSIMessage msg)
|
||||
static void vfio_update_kvm_msi_virq(VFIOMSIVector *vector, MSIMessage msg,
|
||||
PCIDevice *pdev)
|
||||
{
|
||||
kvm_irqchip_update_msi_route(kvm_state, vector->virq, msg);
|
||||
kvm_irqchip_update_msi_route(kvm_state, vector->virq, msg, pdev);
|
||||
}
|
||||
|
||||
static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
|
||||
|
@ -486,7 +487,7 @@ static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
|
|||
if (!msg) {
|
||||
vfio_remove_kvm_msi_virq(vector);
|
||||
} else {
|
||||
vfio_update_kvm_msi_virq(vector, *msg);
|
||||
vfio_update_kvm_msi_virq(vector, *msg, pdev);
|
||||
}
|
||||
} else {
|
||||
vfio_add_kvm_msi_virq(vdev, vector, msg, true);
|
||||
|
@ -760,7 +761,7 @@ static void vfio_update_msi(VFIOPCIDevice *vdev)
|
|||
}
|
||||
|
||||
msg = msi_get_message(&vdev->pdev, i);
|
||||
vfio_update_kvm_msi_virq(vector, msg);
|
||||
vfio_update_kvm_msi_virq(vector, msg, &vdev->pdev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue