From ec0b06ddcdcdbd1d437d86da15cedcabe05c3eb4 Mon Sep 17 00:00:00 2001 From: Tarun Karra Date: Mon, 28 Jan 2013 19:09:41 -0800 Subject: [PATCH] msm: kgsl: Run GPU fault tolerance at max clock GPU fault tolerance should take minimal time, set the GPU clock to max freqency to acheive this. When we set GPU clock to max freqency we vote for high CPU clock and bus bandwidth. Change-Id: I98a3f7c24f0939c08f9b12257817d17414e3f128 Signed-off-by: Tarun Karra --- drivers/gpu/msm/adreno.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c index 678a1b3e44b..4f460ed5e01 100644 --- a/drivers/gpu/msm/adreno.c +++ b/drivers/gpu/msm/adreno.c @@ -2000,6 +2000,8 @@ adreno_dump_and_exec_ft(struct kgsl_device *device) int result = -ETIMEDOUT; struct adreno_ft_data ft_data; struct adreno_device *adreno_dev = ADRENO_DEVICE(device); + struct kgsl_pwrctrl *pwr = &device->pwrctrl; + unsigned int curr_pwrlevel; if (device->state == KGSL_STATE_HUNG) goto done; @@ -2014,6 +2016,10 @@ adreno_dump_and_exec_ft(struct kgsl_device *device) INIT_COMPLETION(device->ft_gate); /* Detected a hang */ + /* Run fault tolerance at max power level */ + curr_pwrlevel = pwr->active_pwrlevel; + kgsl_pwrctrl_pwrlevel_change(device, pwr->max_pwrlevel); + /* Get the fault tolerance data as soon as hang is detected */ result = adreno_setup_ft_data(device, &ft_data); @@ -2042,6 +2048,9 @@ adreno_dump_and_exec_ft(struct kgsl_device *device) adreno_destroy_ft_data(&ft_data); } + /* restore power level */ + kgsl_pwrctrl_pwrlevel_change(device, curr_pwrlevel); + if (result) { kgsl_pwrctrl_set_state(device, KGSL_STATE_HUNG); } else {