Skip to content

Commit 3a8e217

Browse files
Gabriel Krisman Bertazigregkh
authored andcommitted
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>
1 parent 85fb980 commit 3a8e217

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

drivers/mmc/host/sdhci.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2629,7 +2629,8 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
26292629
pr_err("%s: Card is consuming too much power!\n",
26302630
mmc_hostname(host->mmc));
26312631

2632-
if (intmask & SDHCI_INT_CARD_INT) {
2632+
if ((intmask & SDHCI_INT_CARD_INT) &&
2633+
(host->ier & SDHCI_INT_CARD_INT)) {
26332634
sdhci_enable_sdio_irq_nolock(host, false);
26342635
host->thread_isr |= SDHCI_INT_CARD_INT;
26352636
result = IRQ_WAKE_THREAD;

0 commit comments

Comments
 (0)