After cleared the handled irq status, sdhci_irq will check the interrupt status again at end. And it will loop back to handle the irq if any new interrupts happened. But card int will keep active all the time since its status is readonly and can't be cleared at that time. So in case card int happend, the function will be looped with max_loops (16 times). Signed-off-by: Kevin Liu <kliu5@xxxxxxxxxxx> Signed-off-by: Jialing Fu <jlfu@xxxxxxxxxxx> --- drivers/mmc/host/sdhci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 3bb9b88..664650b 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2431,6 +2431,8 @@ again: result = IRQ_HANDLED; intmask = sdhci_readl(host, SDHCI_INT_STATUS); + if (cardint) + intmask &= ~SDHCI_INT_CARD_INT; if (intmask && --max_loops) goto again; out: -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html