The INTSTS register is read-only, so the attempt to clear interrupts
authorkettenis <kettenis@openbsd.org>
Fri, 17 May 2024 19:43:45 +0000 (19:43 +0000)
committerkettenis <kettenis@openbsd.org>
Fri, 17 May 2024 19:43:45 +0000 (19:43 +0000)
commitec95d571da791a297995ec5be072a92750464ab8
tree7ba86cd59db48b1b1eb67b95af01289c9a991957
parent9953a406230a5ded9465bc4125ef8001aad0bff0
The INTSTS register is read-only, so the attempt to clear interrupts
by writing to it doesn't actually work.  Therefore we have to keep
processing interrupts until all the bits corresponding to enabled
interrupts are cleared.  This makes MSIs actually work, also on the AMD
implementations for which we currently disable MSIs.

Based on some digging by martijn@

ok ratchov@, martijn@, stsp@
sys/dev/pci/azalia.c