diff -r a232af6b0b1f -r a5496987b1da kernel/eka/include/drivers/dma_v1.h --- a/kernel/eka/include/drivers/dma_v1.h Wed Jun 23 12:58:21 2010 +0100 +++ b/kernel/eka/include/drivers/dma_v1.h Thu Jul 01 17:57:33 2010 +0100 @@ -393,15 +393,16 @@ void TFooDmaChannel::QueuedRequestCountChanged() { Kern::MutexWait(*iDmaMutex); - if ((iQueuedRequests > 0) && (iPrevQueuedRequests == 0)) + const TInt queued_now = __e32_atomic_load_acq32(&iQueuedRequests); + if ((queued_now > 0) && (iPrevQueuedRequests == 0)) { IncreasePowerCount(); // Base port specific } - else if ((iQueuedRequests == 0) && (iPrevQueuedRequests > 0)) + else if ((queued_now == 0) && (iPrevQueuedRequests > 0)) { DecreasePowerCount(); // Base port specific } - iPrevQueuedRequests = iQueuedRequests; + iPrevQueuedRequests = queued_now; Kern::MutexSignal(*iDmaMutex); }