iommu/arm-smmu: use a threaded handler for global faults

We need to do some sleeping operations (like enabling clocks) in the
global fault handler.  Move to a threaded handler to avoid BUGs due to
sleeping in an atomic context.

Change-Id: I88eed743bfad4cc33daf3b9f81255587c72b0167
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
This commit is contained in:
Mitchel Humpherys 2015-02-04 21:29:46 -08:00 committed by David Keitel
parent a0f2281e2b
commit ad0d839206

View file

@ -2588,11 +2588,10 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)
}
for (i = 0; i < smmu->num_global_irqs; ++i) {
err = request_irq(smmu->irqs[i],
arm_smmu_global_fault,
IRQF_SHARED,
"arm-smmu global fault",
smmu);
err = request_threaded_irq(smmu->irqs[i],
NULL, arm_smmu_global_fault,
IRQF_ONESHOT | IRQF_SHARED,
"arm-smmu global fault", smmu);
if (err) {
dev_err(dev, "failed to request global IRQ %d (%u)\n",
i, smmu->irqs[i]);