mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
d651ce8e91
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:
|
||
---|---|---|
.. | ||
fsl-mc | ||
mhi | ||
arm-cci.c | ||
arm-integrator-lm.c | ||
brcmstb_gisb.c | ||
bt1-apb.c | ||
bt1-axi.c | ||
da8xx-mstpri.c | ||
hisi_lpc.c | ||
imx-weim.c | ||
intel-ixp4xx-eb.c | ||
Kconfig | ||
Makefile | ||
mips_cdmm.c | ||
moxtet.c | ||
mvebu-mbus.c | ||
omap-ocp2scp.c | ||
omap_l3_noc.c | ||
omap_l3_noc.h | ||
omap_l3_smx.c | ||
omap_l3_smx.h | ||
qcom-ebi2.c | ||
simple-pm-bus.c | ||
sun50i-de2.c | ||
sunxi-rsb.c | ||
tegra-aconnect.c | ||
tegra-gmi.c | ||
ti-pwmss.c | ||
ti-sysc.c | ||
ts-nbus.c | ||
uniphier-system-bus.c | ||
vexpress-config.c |