From: Maurice Petallo <mauricex.r.peta...@intel.com>

sdhc host may share same interrupt line with other IO devices that
trigger interrupt frequently, like USB. In this case, we encountered
continous prints of warning message "got irq while runtime suspended"
when the interrupt triggered by other IO devices sharing the same line.
To avoid this scenario, first check the interrupt everytime ISR enters.

Signed-off-by: Maurice Petallo <mauricex.r.peta...@intel.com>
---
 drivers/mmc/host/sdhci.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 4e36df8..a1267a8 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2409,13 +2409,6 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
 
        spin_lock(&host->lock);
 
-       if (host->runtime_suspended) {
-               spin_unlock(&host->lock);
-               pr_warning("%s: got irq while runtime suspended\n",
-                      mmc_hostname(host->mmc));
-               return IRQ_HANDLED;
-       }
-
        intmask = sdhci_readl(host, SDHCI_INT_STATUS);
 
        if (!intmask || intmask == 0xffffffff) {
@@ -2423,6 +2416,13 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
                goto out;
        }
 
+       if (host->runtime_suspended) {
+               spin_unlock(&host->lock);
+               pr_warning("%s: got irq while runtime suspended\n",
+                      mmc_hostname(host->mmc));
+               return IRQ_HANDLED;
+       }
+
 again:
        DBG("*** %s got interrupt: 0x%08x\n",
                mmc_hostname(host->mmc), intmask);
-- 
1.7.10.4

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to