cxl: Do adapter fence check before handling afu interrupt
authorVaibhav Jain <vaibhav@linux.vnet.ibm.com>
Wed, 16 Nov 2016 14:09:33 +0000 (19:39 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 18 Nov 2016 11:41:08 +0000 (22:41 +1100)
commitabf051be684be768c1ee079514f4d07de9389d54
tree5bcd7e8bfb5fa072fee64a2bcc15c6f9631a1a79
parentbb81733de28c99e10b61dcaff1592142abe53442
cxl: Do adapter fence check before handling afu interrupt

If an afu interrupt is in flight when an eeh error is triggered the
control still reaches the function native_irq_multiplexed and the
PE-Handle read from the CXL_PSL_PEHandle_An register is 0xffff. The
function then erroneously assumes that the interrupt belonged to a
detached context and generates a warning with full stack dump in the
kernel log complaining:

"Unable to demultiplex CXL PSL IRQ for PE 65535 DSISR ffffffff DAR
ffffffff. (Possible AFU HW issue - was a term/remove acked with
outstanding transactions"

To fix this the patch adds new code to the function
native_irq_multiplexed function to compares the read value of register
CXL_PSL_PEHandle_An to ~0ULL. If true then logs a warning message
saying that the interrupt is being ignored and returns IRQ_HANDLED from
the irq handler.

Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Acked-by: Ian Munsie <imunsie@au1.ibm.com>
Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
drivers/misc/cxl/native.c