Commit 28fe04e
Mahadevan P
PENDING: drm/msm/dp: disable HPD IRQ during shutdown to prevent IOMMU faults
During system shutdown, the DP HPD interrupt can fire after the
platform device has started tearing down and IOMMU translation has
been disabled. The IRQ thread (msm_dp_display_irq_thread) processes
the HPD event, and proceeds to access hardware registers.
Because IOMMU translation is no longer active at that point, the
register access causes a translation fault and a NOC decode error on
the interconnect.
Fix this by disabling the IRQ at the interrupt controller before
calling pm_runtime_disable() in a new .shutdown callback.
synchronize_irq() is called between the two to ensure that any
currently-executing instance of the IRQ thread has finished before
we proceed.
After this sequence the IRQ line is masked, no new HPD events can
be delivered, so no hardware access can race with the IOMMU teardown
that follows.
Signed-off-by: Jayant Shekhar <Jayant.Shekar@oss.qualcomm.com>
Signed-off-by: Mahadevan P <mahadevan.p@oss.qualcomm.com>1 parent c9744ad commit 28fe04e
1 file changed
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1441 | 1441 | | |
1442 | 1442 | | |
1443 | 1443 | | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
1444 | 1453 | | |
1445 | 1454 | | |
1446 | 1455 | | |
| |||
1487 | 1496 | | |
1488 | 1497 | | |
1489 | 1498 | | |
| 1499 | + | |
1490 | 1500 | | |
1491 | 1501 | | |
1492 | 1502 | | |
| |||
0 commit comments