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
|
@ -979,7 +979,7 @@ static void assigned_dev_update_msi(PCIDevice *pci_dev)
|
|||
MSIMessage msg = msi_get_message(pci_dev, 0);
|
||||
int virq;
|
||||
|
||||
virq = kvm_irqchip_add_msi_route(kvm_state, msg);
|
||||
virq = kvm_irqchip_add_msi_route(kvm_state, msg, pci_dev);
|
||||
if (virq < 0) {
|
||||
perror("assigned_dev_update_msi: kvm_irqchip_add_msi_route");
|
||||
return;
|
||||
|
@ -1017,7 +1017,7 @@ static void assigned_dev_update_msi_msg(PCIDevice *pci_dev)
|
|||
}
|
||||
|
||||
kvm_irqchip_update_msi_route(kvm_state, assigned_dev->msi_virq[0],
|
||||
msi_get_message(pci_dev, 0));
|
||||
msi_get_message(pci_dev, 0), pci_dev);
|
||||
}
|
||||
|
||||
static bool assigned_dev_msix_masked(MSIXTableEntry *entry)
|
||||
|
@ -1083,7 +1083,7 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
|
|||
|
||||
msg.address = entry->addr_lo | ((uint64_t)entry->addr_hi << 32);
|
||||
msg.data = entry->data;
|
||||
r = kvm_irqchip_add_msi_route(kvm_state, msg);
|
||||
r = kvm_irqchip_add_msi_route(kvm_state, msg, pci_dev);
|
||||
if (r < 0) {
|
||||
return r;
|
||||
}
|
||||
|
@ -1602,7 +1602,8 @@ static void assigned_dev_msix_mmio_write(void *opaque, hwaddr addr,
|
|||
msg.data = entry->data;
|
||||
|
||||
ret = kvm_irqchip_update_msi_route(kvm_state,
|
||||
adev->msi_virq[i], msg);
|
||||
adev->msi_virq[i], msg,
|
||||
pdev);
|
||||
if (ret) {
|
||||
error_report("Error updating irq routing entry (%d)", ret);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue