hrev43296 adds 1 changeset to branch 'master' old head: 021332df5dcdfa8f8a1584a53328e303ae5beec8 new head: 3383e56426351ecd8da51033ae84f28eeffe4bbb ---------------------------------------------------------------------------- 1 files changed, 18 insertions(+), 3 deletions(-) src/add-ons/accelerants/radeon_hd/gpu.cpp | 21 ++++++++++++++++++--- ############################################################################ Revision: hrev43296 Commit: 3383e56426351ecd8da51033ae84f28eeffe4bbb URL: http://cgit.haiku-os.org/haiku/commit/?id=3383e56 Author: Alexander von Gluck IV <kallisti5@xxxxxxxxxxx> Date: Sun Nov 20 22:58:47 2011 UTC Improve GPU memory controller idle check * style fix * add better tracing for non-idle memory controller conditions ---------------------------------------------------------------------------- diff --git a/src/add-ons/accelerants/radeon_hd/gpu.cpp b/src/add-ons/accelerants/radeon_hd/gpu.cpp index 87c97be..7fd1101 100644 --- a/src/add-ons/accelerants/radeon_hd/gpu.cpp +++ b/src/add-ons/accelerants/radeon_hd/gpu.cpp @@ -217,11 +217,26 @@ uint32 radeon_gpu_mc_idlecheck() { uint32 idleStatus; - if (!((idleStatus = Read32(MC, SRBM_STATUS)) & - (VMC_BUSY | MCB_BUSY | - MCDZ_BUSY | MCDY_BUSY | MCDX_BUSY | MCDW_BUSY))) + + uint32 busyBits + = (VMC_BUSY | MCB_BUSY | MCDZ_BUSY | MCDY_BUSY | MCDX_BUSY | MCDW_BUSY); + if (!((idleStatus = Read32(MC, SRBM_STATUS)) & busyBits)) return 0; + bool state; + state = (idleStatus & VMC_BUSY) != 0; + TRACE("%s: VMC is %s\n", __func__, state ? "busy" : "idle"); + state = (idleStatus & MCB_BUSY) != 0; + TRACE("%s: MCB is %s\n", __func__, state ? "busy" : "idle"); + state = (idleStatus & MCDZ_BUSY) != 0; + TRACE("%s: MCDZ is %s\n", __func__, state ? "busy" : "idle"); + state = (idleStatus & MCDY_BUSY) != 0; + TRACE("%s: MCDY is %s\n", __func__, state ? "busy" : "idle"); + state = (idleStatus & MCDX_BUSY) != 0; + TRACE("%s: MCDX is %s\n", __func__, state ? "busy" : "idle"); + state = (idleStatus & MCDW_BUSY) != 0; + TRACE("%s: MCDW is %s\n", __func__, state ? "busy" : "idle"); + return idleStatus; }