Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/qxl: return IRQ_NONE if it was not our irq

Return IRQ_NONE if it was not our irq. This is necessary for the case
when qxl is sharing irq line with a device A in a crash kernel. If qxl
is initialized before A and A's irq was raised during this gap,
returning IRQ_HANDLED in this case will cause this irq to be raised
again after EOI since kernel think it was handled but in fact it was
not.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by

Jason Wang and committed by
Dave Airlie
fbb60fe3 85d9e14c

+3
+3
drivers/gpu/drm/qxl/qxl_irq.c
··· 33 33 34 34 pending = xchg(&qdev->ram_header->int_pending, 0); 35 35 36 + if (!pending) 37 + return IRQ_NONE; 38 + 36 39 atomic_inc(&qdev->irq_received); 37 40 38 41 if (pending & QXL_INTERRUPT_DISPLAY) {