diff options
| author | Jan Kiszka <jan.kiszka@siemens.com> | 2012-05-17 10:32:31 -0300 |
|---|---|---|
| committer | Avi Kivity <avi@redhat.com> | 2012-05-21 19:22:49 +0300 |
| commit | 2cdfe53c5f502415932de552c0c7dad369954d4c (patch) | |
| tree | 7eb856f0631583a65770a9e6417962612005cedd /hw/pci.h | |
| parent | 5b5f1330da2d7e5b5cbde8c60738774b2bd8692f (diff) | |
| download | focaccia-qemu-2cdfe53c5f502415932de552c0c7dad369954d4c.tar.gz focaccia-qemu-2cdfe53c5f502415932de552c0c7dad369954d4c.zip | |
msix: Introduce vector notifiers
Vector notifiers shall be triggered by the MSI/MSI-X core whenever a relevant configuration change is programmed by the guest. In case of MSI-X, changes are reported when the effective mask (global && per-vector) alters its state. On unmask, the current vector configuration is included in the event report. This allows users - e.g. virtio-pci layer - to transfer this information to external MSI-X routing subsystems - like vhost + KVM in-kernel irqchip. This implementation only provides MSI-X support, but extension to MSI is feasible and will be provided later on when adding support for KVM PCI device assignment. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'hw/pci.h')
| -rw-r--r-- | hw/pci.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/pci.h b/hw/pci.h index 8d0aa498e5..c3cacce046 100644 --- a/hw/pci.h +++ b/hw/pci.h @@ -173,6 +173,10 @@ typedef struct PCIDeviceClass { const char *romfile; } PCIDeviceClass; +typedef int (*MSIVectorUseNotifier)(PCIDevice *dev, unsigned int vector, + MSIMessage msg); +typedef void (*MSIVectorReleaseNotifier)(PCIDevice *dev, unsigned int vector); + struct PCIDevice { DeviceState qdev; /* PCI config space */ @@ -243,6 +247,10 @@ struct PCIDevice { bool has_rom; MemoryRegion rom; uint32_t rom_bar; + + /* MSI-X notifiers */ + MSIVectorUseNotifier msix_vector_use_notifier; + MSIVectorReleaseNotifier msix_vector_release_notifier; }; void pci_register_bar(PCIDevice *pci_dev, int region_num, |