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

drm/nvd0/disp: handle yet another interrupt

Spotted while messing with overlay channels (probably as a result of
sending a similar "disable" sequence as we do for the flip channels).

The value in 0x61008c was 0x20, which one would reasonably guess is
"bit 5 == something to report about evo channel 5" - but who knows.

Spotted the binary driver getting this too, and it appears to not do
anything exciting as a result. So, handle it the same way and avoid
an IRQ storm.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

+6
+6
drivers/gpu/drm/nouveau/nvd0_display.c
··· 1585 1585 struct nvd0_display *disp = nvd0_display(dev); 1586 1586 u32 intr = nv_rd32(dev, 0x610088); 1587 1587 1588 + if (intr & 0x00000001) { 1589 + u32 stat = nv_rd32(dev, 0x61008c); 1590 + nv_wr32(dev, 0x61008c, stat); 1591 + intr &= ~0x00000001; 1592 + } 1593 + 1588 1594 if (intr & 0x00000002) { 1589 1595 u32 stat = nv_rd32(dev, 0x61009c); 1590 1596 int chid = ffs(stat) - 1;