iommu/arm-smmu: Make fault triggering more reliable

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>
This commit is contained in:
Mitchel Humpherys 2015-10-21 13:59:50 -07:00 committed by David Keitel
parent b47628bf9f
commit 5997478ea4

View 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", dev_err(smmu->dev, "Writing 0x%lx to FSRRESTORE on cb %d\n",
flags, cfg->cbndx); flags, cfg->cbndx);
writel_relaxed(flags, cb_base + ARM_SMMU_CB_FSRRESTORE); writel_relaxed(flags, cb_base + ARM_SMMU_CB_FSRRESTORE);
/* give the interrupt time to fire... */
msleep(1000);
arm_smmu_disable_clocks(smmu); arm_smmu_disable_clocks(smmu);
} }