From 3383e56426351ecd8da51033ae84f28eeffe4bbb Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sun, 20 Nov 2011 16:58:47 -0600 Subject: [PATCH] Improve GPU memory controller idle check * style fix * add better tracing for non-idle memory controller conditions --- src/add-ons/accelerants/radeon_hd/gpu.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/add-ons/accelerants/radeon_hd/gpu.cpp b/src/add-ons/accelerants/radeon_hd/gpu.cpp index 87c97bef79..7fd1101b19 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; }