If we don't do that, we have to wait for the job timeout to expire
before the fault jobs gets killed.

Signed-off-by: Boris Brezillon <boris.brezil...@collabora.com>
---
 drivers/gpu/drm/panfrost/panfrost_mmu.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c 
b/drivers/gpu/drm/panfrost/panfrost_mmu.c
index 2a9bf30edc9d..d5c624e776f1 100644
--- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
+++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
@@ -661,7 +661,7 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int irq, 
void *data)
                if ((status & mask) == BIT(as) && (exception_type & 0xF8) == 
0xC0)
                        ret = panfrost_mmu_map_fault_addr(pfdev, as, addr);
 
-               if (ret)
+               if (ret) {
                        /* terminal fault, print info about the fault */
                        dev_err(pfdev->dev,
                                "Unhandled Page fault in AS%d at VA 0x%016llX\n"
@@ -679,6 +679,10 @@ static irqreturn_t panfrost_mmu_irq_handler_thread(int 
irq, void *data)
                                access_type, access_type_name(pfdev, 
fault_status),
                                source_id);
 
+                       /* Disable the MMU to stop jobs on this AS immediately 
*/
+                       panfrost_mmu_disable(pfdev, as);
+               }
+
                status &= ~mask;
 
                /* If we received new MMU interrupts, process them before 
returning. */
-- 
2.31.1

Reply via email to