powerpc/opal-irqchip: Fix double endian conversion
authorAlistair Popple <alistair@popple.id.au>
Mon, 7 Dec 2015 00:28:28 +0000 (11:28 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 8 Dec 2015 05:53:31 +0000 (16:53 +1100)
commit25642e1459ace29f6ce5a171efc8b7b59a52a2d4
tree1aa2e850daa6cc86ba24b7330c319a387df873f9
parent7f821fc9c77a9b01fe7b1d6e72717b33d8d64142
powerpc/opal-irqchip: Fix double endian conversion

The OPAL event calls return a mask of events that are active in big
endian format. This is checked when unmasking the events in the
irqchip by comparison with a cached value. The cached value was stored
in big endian format but should've been converted to CPU endian
first.

This bug leads to OPAL event delivery being delayed or dropped on some
systems. Symptoms may include a non-functional console.

The bug is fixed by calling opal_handle_events(...) instead of
duplicating code in opal_event_unmask(...).

Fixes: 9f0fd0499d30 ("powerpc/powernv: Add a virtual irqchip for opal events")
Cc: stable@vger.kernel.org # v4.2+
Reported-by: Douglas L Lehr <dllehr@us.ibm.com>
Signed-off-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/opal-irqchip.c