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:
parent
a0f2281e2b
commit
ad0d839206
1 changed files with 4 additions and 5 deletions
|
@ -2588,11 +2588,10 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < smmu->num_global_irqs; ++i) {
|
for (i = 0; i < smmu->num_global_irqs; ++i) {
|
||||||
err = request_irq(smmu->irqs[i],
|
err = request_threaded_irq(smmu->irqs[i],
|
||||||
arm_smmu_global_fault,
|
NULL, arm_smmu_global_fault,
|
||||||
IRQF_SHARED,
|
IRQF_ONESHOT | IRQF_SHARED,
|
||||||
"arm-smmu global fault",
|
"arm-smmu global fault", smmu);
|
||||||
smmu);
|
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(dev, "failed to request global IRQ %d (%u)\n",
|
dev_err(dev, "failed to request global IRQ %d (%u)\n",
|
||||||
i, smmu->irqs[i]);
|
i, smmu->irqs[i]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue