mei: txe: don't clean an unprocessed interrupt cause.
authorAlexander Usyskin <alexander.usyskin@intel.com>
Tue, 18 Oct 2016 22:34:48 +0000 (01:34 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Nov 2016 15:36:33 +0000 (16:36 +0100)
commitc0510383011fdc471c9fe501bb2462913e5c9308
treec1f9d2dde3b9f20039a39e8e58c45ddf477b02c6
parentdc70a200aac2dafd2502ac1cfc1a5ca6dde6486f
mei: txe: don't clean an unprocessed interrupt cause.

commit 43605e293eb13c07acb546c14f407a271837af17 upstream.

SEC registers are not accessible when the TXE device is in low power
state, hence the SEC interrupt cannot be processed if device is not
awake.

In some rare cases entrance to low power state (aliveness off) and input
ready bits can be signaled at the same time, resulting in communication
stall as input ready won't be signaled again after waking up. To resolve
this IPC_HHIER_SEC bit in HHISR_REG should not be cleaned if the
interrupt is not processed.

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/mei/hw-txe.c