aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorManivannan Sadhasivam <[email protected]>2021-12-16 13:42:24 +0530
committerGreg Kroah-Hartman <[email protected]>2021-12-17 17:17:14 +0100
commitd651ce8e917fa1bf6cfab8dca74c512edffc35d3 (patch)
treefdb0b56c3ae30362ad6496484859e96381637eb0 /include
parent42c4668f7efe1485dfc382517b412c0c6ab102b8 (diff)
bus: mhi: core: Fix race while handling SYS_ERR at power up
During SYS_ERR condition, as a response to the MHI_RESET from host, some devices tend to issue BHI interrupt without clearing the SYS_ERR state in the device. This creates a race condition and causes a failure in booting up the device. The issue is seen on the Sierra Wireless EM9191 modem during SYS_ERR handling in mhi_async_power_up(). Once the host detects that the device is in SYS_ERR state, it issues MHI_RESET and waits for the device to process the reset request. During this time, the device triggers the BHI interrupt to the host without clearing SYS_ERR condition. So the host starts handling the SYS_ERR condition again. To fix this issue, let's register the IRQ handler only after handling the SYS_ERR check to avoid getting spurious IRQs from the device. Fixes: e18d4e9fa79b ("bus: mhi: core: Handle syserr during power_up") Cc: [email protected] Reported-by: Aleksander Morgado <[email protected]> Tested-by: Aleksander Morgado <[email protected]> Tested-by: Thomas Perrot <[email protected]> Signed-off-by: Manivannan Sadhasivam <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions