mmc: sdhci: Ignore unexpected CARD_INT interrupts
commit 161e6d44a5e2d3f85365cb717d60e363171b39e6 upstream. One of our kernelCI boxes hanged at boot because a faulty eSDHC device was triggering spurious CARD_INT interrupts for SD cards, causing CMD52 reads, which are not allowed for SD devices. This adds a sanity check to the interruption path, preventing that illegal command from getting sent if the CARD_INT interruption should be disabled. This quirk allows that particular machine to resume boot despite the faulty hardware, instead of getting hung dealing with thousands of mishandled interrupts. Suggested-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk> Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1d88791d5e
commit
04eb7db25b
@ -2719,7 +2719,8 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
|
||||
if (intmask & SDHCI_INT_RETUNE)
|
||||
mmc_retune_needed(host->mmc);
|
||||
|
||||
if (intmask & SDHCI_INT_CARD_INT) {
|
||||
if ((intmask & SDHCI_INT_CARD_INT) &&
|
||||
(host->ier & SDHCI_INT_CARD_INT)) {
|
||||
sdhci_enable_sdio_irq_nolock(host, false);
|
||||
host->thread_isr |= SDHCI_INT_CARD_INT;
|
||||
result = IRQ_WAKE_THREAD;
|
||||
|
Loading…
x
Reference in New Issue
Block a user