From 2d6f044f6b8d264bb3e3af07061086eb2751aa1a Mon Sep 17 00:00:00 2001 From: Akhil P Oommen Date: Wed, 13 Mar 2019 13:03:21 +0530 Subject: [PATCH] msm: kgsl: Fix preemption fault handling for A6xx GPU In preemption fault handler, check only the STOP bit of ADRENO_REG_CP_PREEMPT register to see if the preemption is complete. Change-Id: Id1f2d0947412e996d6028558124c3e528527cec6 Signed-off-by: Akhil P Oommen Signed-off-by: Sebanti Das --- drivers/gpu/msm/adreno_a6xx_preempt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/msm/adreno_a6xx_preempt.c b/drivers/gpu/msm/adreno_a6xx_preempt.c index dd80eeacc474..d83c095ab1c9 100644 --- a/drivers/gpu/msm/adreno_a6xx_preempt.c +++ b/drivers/gpu/msm/adreno_a6xx_preempt.c @@ -139,7 +139,7 @@ static void _a6xx_preemption_fault(struct adreno_device *adreno_dev) if (kgsl_state_is_awake(device)) { kgsl_regread(device, A6XX_CP_CONTEXT_SWITCH_CNTL, &status); - if (status == 0) { + if (!(status & 0x1)) { adreno_set_preempt_state(adreno_dev, ADRENO_PREEMPT_COMPLETE); @@ -149,7 +149,7 @@ static void _a6xx_preemption_fault(struct adreno_device *adreno_dev) } dev_err(device->dev, - "Preemption timed out: cur=%d R/W=%X/%X, next=%d R/W=%X/%X\n", + "Preemption Fault: cur=%d R/W=0x%x/0x%x, next=%d R/W=0x%x/0x%x\n", adreno_dev->cur_rb->id, adreno_get_rptr(adreno_dev->cur_rb), adreno_dev->cur_rb->wptr,