Loading drivers/gpu/msm/adreno.c +1 −1 Original line number Diff line number Diff line Loading @@ -2464,7 +2464,7 @@ void adreno_spin_idle_debug(struct adreno_device *adreno_dev, dev_err(device->dev, " hwfault=%8.8X\n", hwfault); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, adreno_gmu_gpu_fault(adreno_dev)); } /** Loading drivers/gpu/msm/adreno.h +4 −0 Original line number Diff line number Diff line Loading @@ -1329,6 +1329,10 @@ static inline void adreno_set_gpu_fault(struct adreno_device *adreno_dev, smp_wmb(); } static inline bool adreno_gmu_gpu_fault(struct adreno_device *adreno_dev) { return adreno_gpu_fault(adreno_dev) & ADRENO_GMU_FAULT; } /** * adreno_clear_gpu_fault() - Clear the GPU fault register Loading drivers/gpu/msm/adreno_a3xx.c +2 −2 Original line number Diff line number Diff line Loading @@ -685,7 +685,7 @@ static int a3xx_send_me_init(struct adreno_device *adreno_dev, struct kgsl_device *device = KGSL_DEVICE(adreno_dev); dev_err(device->dev, "CP initialization failed to idle\n"); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, false); } return ret; Loading Loading @@ -1823,7 +1823,7 @@ static int _ringbuffer_bootstrap_ucode(struct adreno_device *adreno_dev, if (ret) { KGSL_DRV_ERR(device, "microcode bootstrap failed to idle\n"); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, false); } /* Clear the chicken bit for speed up on A430 and its derivatives */ Loading drivers/gpu/msm/adreno_a4xx.c +1 −1 Original line number Diff line number Diff line Loading @@ -1535,7 +1535,7 @@ static int a4xx_send_me_init(struct adreno_device *adreno_dev, struct kgsl_device *device = KGSL_DEVICE(adreno_dev); dev_err(device->dev, "CP initialization failed to idle\n"); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, false); } return ret; Loading drivers/gpu/msm/adreno_dispatch.c +4 −4 Original line number Diff line number Diff line Loading @@ -2046,7 +2046,7 @@ static void recover_dispatch_q(struct kgsl_device *device, kfree(replay); } static void do_header_and_snapshot(struct kgsl_device *device, static void do_header_and_snapshot(struct kgsl_device *device, int fault, struct adreno_ringbuffer *rb, struct kgsl_drawobj_cmd *cmdobj) { struct kgsl_drawobj *drawobj = DRAWOBJ(cmdobj); Loading @@ -2054,7 +2054,7 @@ static void do_header_and_snapshot(struct kgsl_device *device, /* Always dump the snapshot on a non-drawobj failure */ if (cmdobj == NULL) { adreno_fault_header(device, rb, NULL); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, fault & ADRENO_GMU_FAULT); return; } Loading @@ -2066,7 +2066,7 @@ static void do_header_and_snapshot(struct kgsl_device *device, adreno_fault_header(device, rb, cmdobj); if (!(drawobj->context->flags & KGSL_CONTEXT_NO_SNAPSHOT)) kgsl_device_snapshot(device, drawobj->context); kgsl_device_snapshot(device, NULL, fault & ADRENO_GMU_FAULT); } static int dispatcher_do_fault(struct adreno_device *adreno_dev) Loading Loading @@ -2192,7 +2192,7 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev) adreno_readreg64(adreno_dev, ADRENO_REG_CP_IB1_BASE, ADRENO_REG_CP_IB1_BASE_HI, &base); do_header_and_snapshot(device, hung_rb, cmdobj); do_header_and_snapshot(device, fault, hung_rb, cmdobj); /* Turn off the KEEPALIVE vote from the ISR for hard fault */ if (gpudev->gpu_keepalive && fault & ADRENO_HARD_FAULT) Loading Loading
drivers/gpu/msm/adreno.c +1 −1 Original line number Diff line number Diff line Loading @@ -2464,7 +2464,7 @@ void adreno_spin_idle_debug(struct adreno_device *adreno_dev, dev_err(device->dev, " hwfault=%8.8X\n", hwfault); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, adreno_gmu_gpu_fault(adreno_dev)); } /** Loading
drivers/gpu/msm/adreno.h +4 −0 Original line number Diff line number Diff line Loading @@ -1329,6 +1329,10 @@ static inline void adreno_set_gpu_fault(struct adreno_device *adreno_dev, smp_wmb(); } static inline bool adreno_gmu_gpu_fault(struct adreno_device *adreno_dev) { return adreno_gpu_fault(adreno_dev) & ADRENO_GMU_FAULT; } /** * adreno_clear_gpu_fault() - Clear the GPU fault register Loading
drivers/gpu/msm/adreno_a3xx.c +2 −2 Original line number Diff line number Diff line Loading @@ -685,7 +685,7 @@ static int a3xx_send_me_init(struct adreno_device *adreno_dev, struct kgsl_device *device = KGSL_DEVICE(adreno_dev); dev_err(device->dev, "CP initialization failed to idle\n"); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, false); } return ret; Loading Loading @@ -1823,7 +1823,7 @@ static int _ringbuffer_bootstrap_ucode(struct adreno_device *adreno_dev, if (ret) { KGSL_DRV_ERR(device, "microcode bootstrap failed to idle\n"); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, false); } /* Clear the chicken bit for speed up on A430 and its derivatives */ Loading
drivers/gpu/msm/adreno_a4xx.c +1 −1 Original line number Diff line number Diff line Loading @@ -1535,7 +1535,7 @@ static int a4xx_send_me_init(struct adreno_device *adreno_dev, struct kgsl_device *device = KGSL_DEVICE(adreno_dev); dev_err(device->dev, "CP initialization failed to idle\n"); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, false); } return ret; Loading
drivers/gpu/msm/adreno_dispatch.c +4 −4 Original line number Diff line number Diff line Loading @@ -2046,7 +2046,7 @@ static void recover_dispatch_q(struct kgsl_device *device, kfree(replay); } static void do_header_and_snapshot(struct kgsl_device *device, static void do_header_and_snapshot(struct kgsl_device *device, int fault, struct adreno_ringbuffer *rb, struct kgsl_drawobj_cmd *cmdobj) { struct kgsl_drawobj *drawobj = DRAWOBJ(cmdobj); Loading @@ -2054,7 +2054,7 @@ static void do_header_and_snapshot(struct kgsl_device *device, /* Always dump the snapshot on a non-drawobj failure */ if (cmdobj == NULL) { adreno_fault_header(device, rb, NULL); kgsl_device_snapshot(device, NULL); kgsl_device_snapshot(device, NULL, fault & ADRENO_GMU_FAULT); return; } Loading @@ -2066,7 +2066,7 @@ static void do_header_and_snapshot(struct kgsl_device *device, adreno_fault_header(device, rb, cmdobj); if (!(drawobj->context->flags & KGSL_CONTEXT_NO_SNAPSHOT)) kgsl_device_snapshot(device, drawobj->context); kgsl_device_snapshot(device, NULL, fault & ADRENO_GMU_FAULT); } static int dispatcher_do_fault(struct adreno_device *adreno_dev) Loading Loading @@ -2192,7 +2192,7 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev) adreno_readreg64(adreno_dev, ADRENO_REG_CP_IB1_BASE, ADRENO_REG_CP_IB1_BASE_HI, &base); do_header_and_snapshot(device, hung_rb, cmdobj); do_header_and_snapshot(device, fault, hung_rb, cmdobj); /* Turn off the KEEPALIVE vote from the ISR for hard fault */ if (gpudev->gpu_keepalive && fault & ADRENO_HARD_FAULT) Loading