Commit a9e8eda1 authored by Zhou, Jie's avatar Zhou, Jie Committed by Alexey Mednyy

ENGR00140050 GPU: workaround hang with heavy bus loading

The GPU hang when run two cubes together with one video playback.
According to the suggestion from AMD, we'd better not read register
when GPU active, especially for CP block.
Signed-off-by: default avatarZhou, Jie <>
parent 8c3e04a0
......@@ -58,7 +58,12 @@ kgsl_intr_decode(gsl_device_t *device, gsl_intrblock_t block_id)
unsigned int status;
// read the block's interrupt status bits
device->ftbl.device_regread(device, block->status_reg, &status);
/* exclude CP block here to avoid hang in heavy loading with VPU+GPU */
if (block_id == GSL_INTR_BLOCK_YDX_CP) {
status = 0x80000000;
} else {
device->ftbl.device_regread(device, block->status_reg, &status);
// mask off any interrupts which are disabled
status &= device->intr.enabled[block->id];
......@@ -356,12 +356,6 @@ kgsl_ringbuffer_submit(gsl_ringbuffer_t *rb)
// send the wptr to the hw
rb->device->ftbl.device_regwrite(rb->device, mmCP_RB_WPTR, rb->wptr);
// force wptr register to be updated
rb->device->ftbl.device_regread(rb->device, mmCP_RB_WPTR, &value);
} while (value != rb->wptr);
rb->flags |= GSL_FLAGS_ACTIVE;
kgsl_log_write( KGSL_LOG_GROUP_COMMAND | KGSL_LOG_LEVEL_TRACE, "<-- kgsl_ringbuffer_submit.\n" );
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment