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) {
|
||||
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]);
|
||||
|
|
Loading…
Add table
Reference in a new issue