msm: kgsl: Correctly handle gmu fault interrupts

Do not trigger dispatcher based snapshot or recovery. Instead,
wait for the next kgsl -> GMU interaction to timeout thus
triggering GMU snapshot and appropriate recovery steps based
on whether gpu was active or not.

Change-Id: I17b4245f4e0113bfc902d7dae46bb24d0bc2b65d
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
This commit is contained in:
Harshdeep Dhatt 2018-12-04 13:55:44 -07:00
commit d1e042852a
2 changed files with 2 additions and 8 deletions

View file

@ -1023,8 +1023,6 @@ static irqreturn_t gmu_irq_handler(int irq, void *data)
dev_err_ratelimited(&gmu->pdev->dev,
"GMU watchdog expired interrupt received\n");
adreno_set_gpu_fault(adreno_dev, ADRENO_GMU_FAULT);
adreno_dispatcher_schedule(device);
}
if (status & GMU_INT_HOST_AHB_BUS_ERR)
dev_err_ratelimited(&gmu->pdev->dev,

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*/
#include <linux/delay.h>
@ -843,7 +843,6 @@ irqreturn_t hfi_irq_handler(int irq, void *data)
struct kgsl_device *device = data;
struct gmu_device *gmu = KGSL_GMU_DEVICE(device);
struct kgsl_hfi *hfi = &gmu->hfi;
struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
unsigned int status = 0;
adreno_read_gmureg(ADRENO_DEVICE(device),
@ -853,12 +852,9 @@ irqreturn_t hfi_irq_handler(int irq, void *data)
if (status & HFI_IRQ_DBGQ_MASK)
tasklet_hi_schedule(&hfi->tasklet);
if (status & HFI_IRQ_CM3_FAULT_MASK) {
if (status & HFI_IRQ_CM3_FAULT_MASK)
dev_err_ratelimited(&gmu->pdev->dev,
"GMU CM3 fault interrupt received\n");
adreno_set_gpu_fault(adreno_dev, ADRENO_GMU_FAULT);
adreno_dispatcher_schedule(device);
}
if (status & ~HFI_IRQ_MASK)
dev_err_ratelimited(&gmu->pdev->dev,
"Unhandled HFI interrupts 0x%lx\n",