Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20f21cba authored by Mitchel Humpherys's avatar Mitchel Humpherys Committed by Matt Wagantall
Browse files

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: default avatarMitchel Humpherys <mitchelh@codeaurora.org>
parent 4cb9bcb3
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -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]);