@@ -68,7 +68,6 @@ typedef struct Peer {
typedef struct EventfdEntry {
PCIDevice *pdev;
- int vector;
} EventfdEntry;
typedef struct IVShmemState {
@@ -288,9 +287,11 @@ static void fake_irqfd(void *opaque, const uint8_t *buf, int size) {
EventfdEntry *entry = opaque;
PCIDevice *pdev = entry->pdev;
+ IVShmemState *s = IVSHMEM(pdev);
+ int vector = entry - s->eventfd_table;
- IVSHMEM_DPRINTF("interrupt on vector %p %d\n", pdev, entry->vector);
- msix_notify(pdev, entry->vector);
+ IVSHMEM_DPRINTF("interrupt on vector %p %d\n", pdev, vector);
+ msix_notify(pdev, vector);
}
static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier *n,
@@ -312,7 +313,6 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier *
/* if MSI is supported we need multiple interrupts */
if (ivshmem_has_feature(s, IVSHMEM_MSI)) {
s->eventfd_table[vector].pdev = PCI_DEVICE(s);
- s->eventfd_table[vector].vector = vector;
qemu_chr_add_handlers(chr, ivshmem_can_receive, fake_irqfd,
ivshmem_event, &s->eventfd_table[vector]);
No need to store an extra int for which vector number it is when it can be computed by looking at the array position. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- hw/misc/ivshmem.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)