On 05/12/2019 21.35, Markus Armbruster wrote: > Devices "ivshmem-plain" and "ivshmem-doorbell" support only MSI-X. > Config space register Interrupt Pin is zero. Device "ivshmem" > additionally supported legacy INTx, but it was removed in commit > 5a0e75f0a9 "hw/misc/ivshmem: Remove deprecated "ivshmem" legacy > device". The commit left ivshmem_update_irq() behind. Since the > Interrupt Pin register is zero, the function does nothing. Remove it. > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > hw/misc/ivshmem.c | 35 ----------------------------------- > 1 file changed, 35 deletions(-) > > diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c > index 5e3b05eae0..710cdb7263 100644 > --- a/hw/misc/ivshmem.c > +++ b/hw/misc/ivshmem.c > @@ -136,44 +136,11 @@ static inline bool ivshmem_is_master(IVShmemState *s) > return s->master == ON_OFF_AUTO_ON; > } > > -static void ivshmem_update_irq(IVShmemState *s) > -{ > - PCIDevice *d = PCI_DEVICE(s); > - uint32_t isr = s->intrstatus & s->intrmask; > - > - /* > - * Do nothing unless the device actually uses INTx. Here's how > - * the device variants signal interrupts, what they put in PCI > - * config space: > - * Device variant Interrupt Interrupt Pin MSI-X cap. > - * ivshmem-plain none 0 no > - * ivshmem-doorbell MSI-X 1 yes(1) > - * ivshmem,msi=off INTx 1 no > - * ivshmem,msi=on MSI-X 1(2) yes(1) > - * (1) if guest enabled MSI-X > - * (2) the device lies > - * Leads to the condition for doing nothing: > - */ > - if (ivshmem_has_feature(s, IVSHMEM_MSI) > - || !d->config[PCI_INTERRUPT_PIN]) { > - return; > - } > - > - /* don't print ISR resets */ > - if (isr) { > - IVSHMEM_DPRINTF("Set IRQ to %d (%04x %04x)\n", > - isr ? 1 : 0, s->intrstatus, s->intrmask); > - } > - > - pci_set_irq(d, isr != 0); > -} > - > static void ivshmem_IntrMask_write(IVShmemState *s, uint32_t val) > { > IVSHMEM_DPRINTF("IntrMask write(w) val = 0x%04x\n", val); > > s->intrmask = val; > - ivshmem_update_irq(s); > } > > static uint32_t ivshmem_IntrMask_read(IVShmemState *s) > @@ -189,7 +156,6 @@ static void ivshmem_IntrStatus_write(IVShmemState *s, > uint32_t val) > IVSHMEM_DPRINTF("IntrStatus write(w) val = 0x%04x\n", val); > > s->intrstatus = val; > - ivshmem_update_irq(s); > } > > static uint32_t ivshmem_IntrStatus_read(IVShmemState *s) > @@ -198,7 +164,6 @@ static uint32_t ivshmem_IntrStatus_read(IVShmemState *s) > > /* reading ISR clears all interrupts */ > s->intrstatus = 0; > - ivshmem_update_irq(s); > return ret; > } > >
Reviewed-by: Thomas Huth <th...@redhat.com>