From e7cfb4d38dfb17cb48ab30e9238d0b0b79f7ace1 Mon Sep 17 00:00:00 2001 From: Pankaj Gupta Date: Thu, 11 Jun 2020 18:12:44 +0530 Subject: [PATCH] msm: kgsl: Do not clear dispatcher fault when adreno reset fails When adreno_reset fails, BUG_ON gets triggered to collect ram dump. Do not clear dispatcher fault bits in such case to get correct fault information from ram dump. Clear dispatcher fault when adreno_reset returns success. Change-Id: I6f54d48201d5e4ea5e3358b18d2f09ec7b285624 Signed-off-by: Pankaj Gupta --- drivers/gpu/msm/adreno_dispatch.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/msm/adreno_dispatch.c b/drivers/gpu/msm/adreno_dispatch.c index e42fc4a6bb03..9e2ec67844ae 100644 --- a/drivers/gpu/msm/adreno_dispatch.c +++ b/drivers/gpu/msm/adreno_dispatch.c @@ -2251,12 +2251,13 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev) ret = adreno_reset(device, fault); mutex_unlock(&device->mutex); - /* if any other fault got in until reset then ignore */ - atomic_set(&dispatcher->fault, 0); /* If adreno_reset() fails then what hope do we have for the future? */ BUG_ON(ret); + /* if any other fault got in until reset then ignore */ + atomic_set(&dispatcher->fault, 0); + /* recover all the dispatch_q's starting with the one that hung */ if (dispatch_q) recover_dispatch_q(device, dispatch_q, fault, base);