[RAZR HD Android Development] kabaldan:
I'm not sure if it is the same case as reported, probably yes, but this is what I've seen in kernel log when the calc finally failed to start correctly for me after endless trying:

<2>[ 7896.978847,1] kgsl kgsl-3d0: |kgsl_iommu_fault_handler| GPU PAGE FAULT: addr = 13E100 pid = 25289
<2>[ 7896.979335,1] kgsl kgsl-3d0: |kgsl_iommu_fault_handler| context = 0 FSR = 4000000A FSYNR0 = 1E000007 FSYNR1 = 1E000007(read fault)
<3>[ 7896.979824,1] kgsl kgsl-3d0: ---- nearby memory ----
<3>[ 7896.980098,1] kgsl kgsl-3d0: *EMPTY*
<3>[ 7896.980526,1] kgsl kgsl-3d0: <- fault @ 0013E100
<3>[ 7896.980800,1] kgsl kgsl-3d0: [A4CE1000 - A4CF1000] (+guard) (pid = 25289) (command)
<6>[ 7899.049899,0] SLIM_CL: skip reconfig sequence
<3>[ 7899.377443,0] kgsl kgsl-3d0: |adreno_ft_detect| Proc RenderThread, ctxt_id 4 ts 6used GPU for 2200 ms long ib detected on global ts 415293
<3>[ 7899.377901,0] kgsl kgsl-3d0: |_adreno_check_long_ib| IB ran too long, invalidate ctxt
<3>[ 7899.378176,0] kgsl kgsl-3d0: |_adreno_ft| Bad context commands failed
<2>[ 7899.378298,0] kgsl kgsl-3d0: |mh_axi_error| axi read error: 00000010 pt 00000000 gpu a555d7c9 phys a555d7c9
<1>[ 7899.378450,0] EBI error detected!
<1>[ 7899.378572,0] Device = msm_ebi_erp.1
<1>[ 7899.378664,0] ERR_ADDR = 0xf8001da0
<1>[ 7899.378725,0] APACKET0 = 0x0000e400
<1>[ 7899.378817,0] APACKET1 = 0x03407408
<1>[ 7899.378939,0] ERR_CNTL = 0x00001011
<1>[ 7899.379030,0] AMID = 0x0000e400
<1>[ 7899.379091,0] Type = read, double word, non-secure
<1>[ 7899.379213,0] ALOCK = normal
<1>[ 7899.379305,0] ABURST = increment
<1>[ 7899.379366,0] CODE = decode error
<3>[ 7899.379519,0] kgsl kgsl-3d0: |kgsl_iommu_clk_disable_event| IOMMU disable clock event being cancelled, iommu_last_cmd_ts: 65645, retired ts: 6563c
<6>[ 7899.997526,1] fence timeout on [d4a54980] after 3000ms
<4>[ 7899.997800,1] fence:
<4>[ 7899.997831,1] --------------
<4>[ 7899.997831,1] [d4a54980] kgsl-fence: active
<4>[ 7899.997831,1] kgsl-3d0_oid.calculator2(25289)-RenderThread(25310)-4_pt active: 8 / 5 retired:5
<4>[ 7899.997861,1]
<4>[ 7899.999326,1] msm_fb_wait_for_fence: sync_fence_wait timed out!Waiting 10 more seconds
<6>[ 7909.997465,1] fence timeout on [d4a54980] after 10000ms
<4>[ 7909.997556,1] fence:
<4>[ 7909.997556,1] --------------
<4>[ 7909.997556,1] [d4a54980] kgsl-fence: active
<4>[ 7909.997556,1] kgsl-3d0_oid.calculator2(25289)-RenderThread(25310)-4_pt active: 8 / 5 retired:5
<4>[ 7909.997556,1]
<3>[ 7909.998014,1] msm_fb_wait_for_fence: sync_fence_wait failed! ret = ffffffc2
<6>[ 7913.027558,1] fence timeout on [d4a54980] after 3000ms
<4>[ 7913.027832,1] fence:
<4>[ 7913.027863,1] --------------
<4>[ 7913.027863,1] [d4a54980] kgsl-fence: active
<4>[ 7913.027863,1] kgsl-3d0_oid.calculator2(25289)-RenderThread(25310)-4_pt active: 8 / 5 retired:5
<4>[ 7913.027893,1]
<4>[ 7913.029267,1] msm_fb_wait_for_fence: sync_fence_wait timed out!Waiting 10 more seconds
<3>[ 7919.387423,0] kgsl kgsl-3d0: |adreno_ringbuffer_drain| rptr: 754, wptr: a0d
<3>[ 7919.387515,0] kgsl kgsl-3d0: |adreno_idle| spun too long waiting for RB to idle
<3>[ 7919.428992,0] kgsl kgsl-3d0: |adreno_ft| policy 0x6 status 0x0

This is GPU (Adreno) failure. I doubt that fiddling with CPU governors can fix something like this.

Patches are welcome on gerrit, this may be tough.

The GPU recovered after screen timeout & suspend, then resume.