powerpc/xive: Discard ESB load value when interrupt is invalid
authorFrederic Barrat <fbarrat@linux.ibm.com>
Mon, 13 Jan 2020 13:01:18 +0000 (14:01 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jan 2020 15:45:26 +0000 (16:45 +0100)
commit7cf7a7d025879086bd69570398832e00d3613dd5
treefb6b8698a1eb9f4af9e8be3b6eb849f2e11f9037
parent6145307fa69332ab98cfd0efd6c63394418ba23b
powerpc/xive: Discard ESB load value when interrupt is invalid

commit 17328f218fb760c9c6accc5b52494889243a6b98 upstream.

A load on an ESB page returning all 1's means that the underlying
device has invalidated the access to the PQ state of the interrupt
through mmio. It may happen, for example when querying a PHB interrupt
while the PHB is in an error state.

In that case, we should consider the interrupt to be invalid when
checking its state in the irq_get_irqchip_state() handler.

Fixes: da15c03b047d ("powerpc/xive: Implement get_irqchip_state method for XIVE to fix shutdown race")
Cc: stable@vger.kernel.org # v5.4+
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
[clg: wrote a commit log, introduced XIVE_ESB_INVALID ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200113130118.27969-1-clg@kaod.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/include/asm/xive-regs.h
arch/powerpc/sysdev/xive/common.c