OSDN Git Service

iommu/arm-smmu: Make fault triggering more reliable
authorMitchel Humpherys <mitchelh@codeaurora.org>
Wed, 21 Oct 2015 20:59:50 +0000 (13:59 -0700)
committerDavid Keitel <dkeitel@codeaurora.org>
Tue, 22 Mar 2016 18:14:29 +0000 (11:14 -0700)
We're currently disabling clocks/power immediately after writing to
FSRRESTORE, but if the fault is not handled before we disable the
clocks/power then the fault could be lost.  Add a 1-second sleep after
writing to FSRRESTORE to give the interrupt time to fire before turning
clocks/power back off.

Change-Id: Ieeba49686da5da92e43f03c3c593166592184433
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
drivers/iommu/arm-smmu.c

index 2337ad9..09761b7 100644 (file)
@@ -1355,6 +1355,8 @@ static void arm_smmu_trigger_fault(struct iommu_domain *domain,
        dev_err(smmu->dev, "Writing 0x%lx to FSRRESTORE on cb %d\n",
                flags, cfg->cbndx);
        writel_relaxed(flags, cb_base + ARM_SMMU_CB_FSRRESTORE);
+       /* give the interrupt time to fire... */
+       msleep(1000);
        arm_smmu_disable_clocks(smmu);
 }