From: vehemens <veh...@ve...> - 2005-11-23 20:36:54
|
I've managed to eliminate a number of lockups when running one or more copies of glxgears and other GL programs with the patch below. This suggests that the driver needs some type of command timing/processing rules to prevent lockup (NOPs?). I working on the other lockups, but debug seems to fix the problem which is another indicator that the remaining problems are due to timing. *** drm111605/shared-core/radeon_state.c Fri Nov 11 20:25:43 2005 --- drmbld/shared-core/radeon_state.c Wed Nov 23 11:35:29 2005 *************** *** 2737,2742 **** --- 2737,2743 ---- drm_radeon_cmd_header_t header; int orig_nbox, orig_bufsz; char *kbuf = NULL; + RING_LOCALS; LOCK_TEST_WITH_RETURN(dev, filp); *************** *** 2791,2796 **** --- 2792,2802 ---- header.i = *(int *)cmdbuf.buf; cmdbuf.buf += sizeof(header); cmdbuf.bufsz -= sizeof(header); + + /* hack */ + BEGIN_RING(2); + RADEON_WAIT_UNTIL_IDLE(); + ADVANCE_RING(); switch (header.header.cmd_type) { case RADEON_CMD_PACKET: |