On Mon, 22 Mar 2021 at 22:56, Michael S. Tsirkin <m...@redhat.com> wrote: > On Mon, Mar 22, 2021 at 06:46:06PM +0000, Peter Maydell wrote: > > This happens because pm_update_sci() calls pci_irq_handler(), > > which calls pci_intx(pci_dev), which returns -1, which is not > > a valid interrupt number to call pci_irq_handler() with. > > > > Q: given that pci_irq_handler() says it must only be called with > > an irqnum in [0..3], shouldn't pci_set_irq() be a bit more > > cautious than to pull a byte directly out of PCI_INTERRUPT_PIN > > and assume it's valid? (Is this guest-writable, or is it read-only?) > > It's read-only.
Ah, so if a device model (a) doesn't set the value to a correct interrupt number and then (b) triggers an interrupt for itself, then that's a device model bug ? It might be worth assert()ing that the irqnum is valid, just to catch this kind of bug a bit more obviously. thanks -- PMM