diff -r 5158c0d3bde3 -r d00bf4f57250 baseport/syborg/soundsc/virtio_queue.cpp --- a/baseport/syborg/soundsc/virtio_queue.cpp Mon May 10 11:37:38 2010 +0100 +++ b/baseport/syborg/soundsc/virtio_queue.cpp Wed May 12 23:13:16 2010 +0100 @@ -15,7 +15,7 @@ #include "virtio_queue.h" -#define ENABLE_QEMU_AUDIO_MODEL_BUG_WORKAROUND +// #define ENABLE_QEMU_AUDIO_MODEL_BUG_WORKAROUND #define ENABLE_QEMU_VIRTIO_CLEANUP_BUG_WORKAROUND #define PHYS_ADDR(x) Epoc::LinearToPhysical( reinterpret_cast(x)) @@ -101,6 +101,7 @@ { if (first>=0) { FreeDescs(first); } + SYBORG_VIRTIO_DEBUG("AddBuf Q%x - not ready", iId ); return KErrNotReady; } iToken[first].iTotalLen = totalLen; @@ -146,15 +147,16 @@ TUint len = iUsed->iRing[nextUsedSlot].iLen; TUint descId = iUsed->iRing[nextUsedSlot].iId; ASSERT(descIdiRing[0]); iTokenSize = iCount * sizeof(TTransactionInfo); TUint usedOffset = Align( iDescSize + iAvailSize, KVirtIoAlignment ); - TUint iUsedSize = sizeof(TRingUsed) + (iCount-1) * sizeof(((TRingUsed*)0)->iRing[0]); + iUsedSize = sizeof(TRingUsed) + (iCount-1) * sizeof(((TRingUsed*)0)->iRing[0]); TUint size = usedOffset + iUsedSize; TUint8* iMemAligned; @@ -295,8 +302,8 @@ iAvail = reinterpret_cast( iMemAligned + iDescSize ); iUsed = reinterpret_cast( iMemAligned + usedOffset ); iToken = reinterpret_cast( Kern::Alloc( iTokenSize ) ); - SYBORG_VIRTIO_DEBUG("DQueue %d, Virt iDesc=%x,iAvail=%x,iToken=%x,iUsed=%x", - iId, iDesc, iAvail, iToken, iUsed ); + SYBORG_VIRTIO_DEBUG("DQueue %d, Virt iDesc=%x/%x,iAvail=%x/%x,iToken=%x,iUsed=%x/%x", + iId, iDesc, iDescSize, iAvail, iAvailSize, iToken, iUsed, iUsedSize ); SYBORG_VIRTIO_DEBUG("DQueue %d, Phys iDesc=%x, iUsed=%x", iId, PHYS_ADDR(iDesc), PHYS_ADDR(iUsed) ); ASSERT( ((PHYS_ADDR(iUsed)-PHYS_ADDR(iDesc))) == ((TUint32)((TUint8*)iUsed-(TUint8*)iDesc)) ); @@ -306,8 +313,8 @@ void DQueue::PreInitQueue() { memset(iDesc, -1, iDescSize ); - memset( ((TUint8*) iAvail) + 4, -1, iDescSize - 4 ); - memset( ((TUint8*) iUsed) + 4, -1, iDescSize - 4 ); + memset( ((TUint8*) iAvail) + 4, -1, iAvailSize - 4 ); + memset( ((TUint8*) iUsed) + 4, -1, iUsedSize - 4 ); iAvail->iFlags = 0; // no notifications from control queue iUsed->iFlags = 0;