From 395750264d7e39f49c453508e345a6707682dfb3 Mon Sep 17 00:00:00 2001 From: shaoyunl Date: Thu, 18 Jul 2019 18:52:56 -0400 Subject: [PATCH] KFDTest : Add family ID when building SDMA packet Some SDMA packet format might be different among asic versions Change-Id: Ic7eda7554c23e3972e168480874ca67a92677346 Signed-off-by: shaoyunl --- tests/kfdtest/src/KFDIPCTest.cpp | 8 +++--- tests/kfdtest/src/KFDMemoryTest.cpp | 10 +++---- tests/kfdtest/src/KFDQMTest.cpp | 37 +++++++++++++------------- tests/kfdtest/src/KFDTestUtil.cpp | 10 ++++--- tests/kfdtest/src/KFDTestUtilQueue.cpp | 3 ++- tests/kfdtest/src/SDMAPacket.cpp | 30 ++++++++++----------- tests/kfdtest/src/SDMAPacket.hpp | 15 +++++------ tests/kfdtest/src/SDMAQueue.cpp | 2 +- 8 files changed, 57 insertions(+), 58 deletions(-) diff --git a/tests/kfdtest/src/KFDIPCTest.cpp b/tests/kfdtest/src/KFDIPCTest.cpp index eba001ebb2..ea5a23a94e 100644 --- a/tests/kfdtest/src/KFDIPCTest.cpp +++ b/tests/kfdtest/src/KFDIPCTest.cpp @@ -88,13 +88,13 @@ void KFDIPCTest::BasicTestChildProcess(int defaultGPUNode, int *pipefd) { /* Check for pattern in the shared Local Memory */ ASSERT_SUCCESS(sdmaQueue.Create(defaultGPUNode)); size = size < sharedSize ? size : sharedSize; - sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(tempSysBuffer.As(), + sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(sdmaQueue.GetFamilyId(), tempSysBuffer.As(), sharedLocalBuffer, size)); sdmaQueue.Wait4PacketConsumption(); EXPECT_TRUE(WaitOnValue(tempSysBuffer.As(), 0xAAAAAAAA)); /* Fill in the Local Memory with different pattern */ - sdmaQueue.PlaceAndSubmitPacket(SDMAWriteDataPacket(sharedLocalBuffer, 0xBBBBBBBB)); + sdmaQueue.PlaceAndSubmitPacket(SDMAWriteDataPacket(sdmaQueue.GetFamilyId(), sharedLocalBuffer, 0xBBBBBBBB)); sdmaQueue.Wait4PacketConsumption(); /* Clean up */ @@ -125,7 +125,7 @@ void KFDIPCTest::BasicTestParentProcess(int defaultGPUNode, pid_t cpid, int *pip /* Copy pattern in Local Memory before sharing it */ ASSERT_SUCCESS(sdmaQueue.Create(defaultGPUNode)); - sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(toShareLocalBuffer.As(), + sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(sdmaQueue.GetFamilyId(), toShareLocalBuffer.As(), tempSysBuffer.As(), size)); sdmaQueue.Wait4PacketConsumption(); @@ -141,7 +141,7 @@ void KFDIPCTest::BasicTestParentProcess(int defaultGPUNode, pid_t cpid, int *pip EXPECT_EQ(WEXITSTATUS(status), 0); /* Check for the new pattern filled in by child process */ - sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(tempSysBuffer.As(), + sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(sdmaQueue.GetFamilyId(), tempSysBuffer.As(), toShareLocalBuffer.As(), size)); sdmaQueue.Wait4PacketConsumption(); EXPECT_TRUE(WaitOnValue(tempSysBuffer.As(), 0xBBBBBBBB)); diff --git a/tests/kfdtest/src/KFDMemoryTest.cpp b/tests/kfdtest/src/KFDMemoryTest.cpp index 69b0e5e477..801ba64afa 100644 --- a/tests/kfdtest/src/KFDMemoryTest.cpp +++ b/tests/kfdtest/src/KFDMemoryTest.cpp @@ -453,7 +453,7 @@ TEST_F(KFDMemoryTest, MemoryRegister) { dispatch0.Submit(pm4Queue); dispatch0.Sync(g_TestTimeOut); - sdmaQueue.PlaceAndSubmitPacket(SDMAWriteDataPacket(sdmaBuffer.As(), 0x12345678)); + sdmaQueue.PlaceAndSubmitPacket(SDMAWriteDataPacket(sdmaQueue.GetFamilyId(), sdmaBuffer.As(), 0x12345678)); sdmaQueue.Wait4PacketConsumption(); EXPECT_TRUE(WaitOnValue(&stackData[sdmaOffset], 0x12345678)); @@ -496,7 +496,7 @@ TEST_F(KFDMemoryTest, MemoryRegister) { dispatch1.Submit(pm4Queue); dispatch1.Sync(g_TestTimeOut); - sdmaQueue.PlaceAndSubmitPacket(SDMAWriteDataPacket(sdmaBuffer.As(), 0xD0BED0BE)); + sdmaQueue.PlaceAndSubmitPacket(SDMAWriteDataPacket(sdmaQueue.GetFamilyId(), sdmaBuffer.As(), 0xD0BED0BE)); sdmaQueue.Wait4PacketConsumption(); EXPECT_SUCCESS(pm4Queue.Destroy()); @@ -1021,10 +1021,10 @@ TEST_F(KFDMemoryTest, MMBench) { #define INTERLEAVE_SDMA() do { \ if (interleaveSDMA) { \ sdmaQueue[0].PlaceAndSubmitPacket( \ - SDMAWriteDataPacket(sdmaBuffer.As(), \ + SDMAWriteDataPacket(sdmaQueue[0].GetFamilyId(), sdmaBuffer.As(), \ 0x12345678)); \ sdmaQueue[1].PlaceAndSubmitPacket( \ - SDMAWriteDataPacket(sdmaBuffer.As()+16, \ + SDMAWriteDataPacket(sdmaQueue[1].GetFamilyId(), sdmaBuffer.As()+16, \ 0x12345678)); \ } \ } while (0) @@ -1601,7 +1601,7 @@ TEST_F(KFDMemoryTest, SignalHandling) { pDb[0] = 0x02020202; ASSERT_SUCCESS(queue.Create(defaultGPUNode)); - queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(pDb, 0x01010101) ); + queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(queue.GetFamilyId(), pDb, 0x01010101) ); queue.Wait4PacketConsumption(); EXPECT_TRUE(WaitOnValue(pDb, 0x01010101)); EXPECT_SUCCESS(queue.Destroy()); diff --git a/tests/kfdtest/src/KFDQMTest.cpp b/tests/kfdtest/src/KFDQMTest.cpp index 07b83c6dea..942f426ff7 100644 --- a/tests/kfdtest/src/KFDQMTest.cpp +++ b/tests/kfdtest/src/KFDQMTest.cpp @@ -155,7 +155,7 @@ TEST_F(KFDQMTest, SubmitPacketSdmaQueue) { ASSERT_SUCCESS(queue.Create(defaultGPUNode)); - queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(destBuf.As(), 0x02020202)); + queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(queue.GetFamilyId(), destBuf.As(), 0x02020202)); queue.Wait4PacketConsumption(); @@ -188,9 +188,9 @@ TEST_F(KFDQMTest, MultipleSdmaQueues) { destBuf.Fill(0x0); srcBuf.Fill(qidx + 0xa0); queues[qidx].PlaceAndSubmitPacket( - SDMACopyDataPacket(destBuf.As(), srcBuf.As(), bufSize)); + SDMACopyDataPacket(queues[qidx].GetFamilyId(), destBuf.As(), srcBuf.As(), bufSize)); queues[qidx].PlaceAndSubmitPacket( - SDMAWriteDataPacket(destBuf.As() + bufSize/4, 0x02020202)); + SDMAWriteDataPacket(queues[qidx].GetFamilyId(), destBuf.As() + bufSize/4, 0x02020202)); queues[qidx].Wait4PacketConsumption(); @@ -241,7 +241,7 @@ TEST_F(KFDQMTest, SdmaConcurrentCopies) { for (unsigned j = 0; j < NPACKETS; j++) queue.PlacePacket( - SDMACopyDataPacket(dstBuf.As()+COPY_SIZE*j, + SDMACopyDataPacket(queue.GetFamilyId(), dstBuf.As()+COPY_SIZE*j, srcBuf.As()+COPY_SIZE*j, COPY_SIZE)); queue.SubmitPacket(); @@ -260,7 +260,7 @@ TEST_F(KFDQMTest, SdmaConcurrentCopies) { } log << "Done." << std::endl; - queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(srcBuf.As(), 0x02020202)); + queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(queue.GetFamilyId(), srcBuf.As(), 0x02020202)); queue.Wait4PacketConsumption(); EXPECT_TRUE(WaitOnValue(srcBuf.As(), 0x02020202)); @@ -326,7 +326,7 @@ TEST_F(KFDQMTest, DisableSdmaQueueByUpdateWithNullAddress) { ASSERT_SUCCESS(queue.Create(defaultGPUNode)); - queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(destBuf.As(), 0)); + queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(queue.GetFamilyId(), destBuf.As(), 0)); WaitOnValue(destBuf.As(), 0); @@ -334,7 +334,7 @@ TEST_F(KFDQMTest, DisableSdmaQueueByUpdateWithNullAddress) { EXPECT_SUCCESS(queue.Update(BaseQueue::DEFAULT_QUEUE_PERCENTAGE, BaseQueue::DEFAULT_PRIORITY, true)); - queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(destBuf.As(), 0)); + queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(queue.GetFamilyId(), destBuf.As(), 0)); // Don't sync since we don't expect rptr to change when the queue is disabled. Delay(2000); @@ -1268,9 +1268,9 @@ TEST_F(KFDQMTest, SdmaQueueWraparound) { destBuf.Fill(0x0); srcBuf.Fill(pktIdx); queue.PlaceAndSubmitPacket( - SDMACopyDataPacket(destBuf.As(), srcBuf.As(), bufSize)); + SDMACopyDataPacket(queue.GetFamilyId(), destBuf.As(), srcBuf.As(), bufSize)); queue.PlaceAndSubmitPacket( - SDMAWriteDataPacket(destBuf.As() + bufSize/4, 0x02020202)); + SDMAWriteDataPacket(queue.GetFamilyId(), destBuf.As() + bufSize/4, 0x02020202)); queue.Wait4PacketConsumption(); EXPECT_TRUE(WaitOnValue(destBuf.As() + bufSize/4, 0x02020202)); @@ -1280,7 +1280,7 @@ TEST_F(KFDQMTest, SdmaQueueWraparound) { } for (unsigned int pktIdx = 0; pktIdx <= queue.Size()/sizeof(SDMA_PKT_WRITE_UNTILED); ++pktIdx) { - queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(destBuf.As(), pktIdx)); + queue.PlaceAndSubmitPacket(SDMAWriteDataPacket(queue.GetFamilyId(), destBuf.As(), pktIdx)); queue.Wait4PacketConsumption(); WaitOnValue(destBuf.As(), pktIdx); } @@ -1406,7 +1406,7 @@ sdma_copy(HSAuint32 node, void *src, void *const dst[], int n, HSAuint64 size) { HsaEvent *event; ASSERT_SUCCESS(CreateQueueTypeEvent(false, false, node, &event)); ASSERT_SUCCESS(sdmaQueue.Create(node)); - sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(dst, src, n, size)); + sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(sdmaQueue.GetFamilyId(), dst, src, n, size)); sdmaQueue.Wait4PacketConsumption(event); EXPECT_SUCCESS(sdmaQueue.Destroy()); hsaKmtDestroyEvent(event); @@ -1418,7 +1418,7 @@ sdma_fill(HSAint32 node, void *dst, unsigned int data, HSAuint64 size) { HsaEvent *event; ASSERT_SUCCESS(CreateQueueTypeEvent(false, false, node, &event)); ASSERT_SUCCESS(sdmaQueue.Create(node)); - sdmaQueue.PlaceAndSubmitPacket(SDMAFillDataPacket(dst, data, size)); + sdmaQueue.PlaceAndSubmitPacket(SDMAFillDataPacket(sdmaQueue.GetFamilyId(), dst, data, size)); sdmaQueue.Wait4PacketConsumption(event); EXPECT_SUCCESS(sdmaQueue.Destroy()); hsaKmtDestroyEvent(event); @@ -1647,10 +1647,11 @@ TEST_F(KFDQMTest, SdmaEventInterrupt) { /* Let sDMA have some workload first.*/ queue[i].PlacePacket(SDMATimePacket(&ts[1])); queue[i].PlacePacket( - SDMACopyDataPacket(dst[i], src, bufSize)); + SDMACopyDataPacket(queue[i].GetFamilyId(), dst[i], src, bufSize)); queue[i].PlacePacket(SDMATimePacket(&ts[2])); queue[i].PlacePacket( - SDMAFencePacket(reinterpret_cast(event[i]->EventData.HWData2), event[i]->EventId)); + SDMAFencePacket(queue[i].GetFamilyId(), + reinterpret_cast(event[i]->EventData.HWData2), event[i]->EventId)); queue[i].PlacePacket(SDMATimePacket(&ts[3])); queue[i].PlacePacket(SDMATrapPacket(event[i]->EventId)); queue[i].PlacePacket(SDMATimePacket(&ts[4])); @@ -1738,9 +1739,9 @@ TEST_F(KFDQMTest, GPUDoorbellWrite) { * engine. This should submit the PM4 packet on the first * queue. */ - otherQueue.PlacePacket(SDMAWriteDataPacket(qRes->Queue_write_ptr, + otherQueue.PlacePacket(SDMAWriteDataPacket(otherQueue.GetFamilyId(), qRes->Queue_write_ptr, pendingWptr)); - otherQueue.PlacePacket(SDMAWriteDataPacket(qRes->Queue_DoorBell, + otherQueue.PlacePacket(SDMAWriteDataPacket(otherQueue.GetFamilyId(), qRes->Queue_DoorBell, pendingWptr)); #else /* Write the wptr and doorbell update using WRITE_DATA packets @@ -1764,9 +1765,9 @@ TEST_F(KFDQMTest, GPUDoorbellWrite) { * engine. This should submit the PM4 packet on the first * queue. */ - otherQueue.PlacePacket(SDMAWriteDataPacket(qRes->Queue_write_ptr, + otherQueue.PlacePacket(SDMAWriteDataPacket(otherQueue.GetFamilyId(), qRes->Queue_write_ptr, 2, &pendingWptr64)); - otherQueue.PlacePacket(SDMAWriteDataPacket(qRes->Queue_DoorBell, + otherQueue.PlacePacket(SDMAWriteDataPacket(otherQueue.GetFamilyId(), qRes->Queue_DoorBell, 2, &pendingWptr64)); #else /* Write the 64-bit wptr and doorbell update using RELEASE_MEM diff --git a/tests/kfdtest/src/KFDTestUtil.cpp b/tests/kfdtest/src/KFDTestUtil.cpp index 68bf8268fb..144a16b926 100644 --- a/tests/kfdtest/src/KFDTestUtil.cpp +++ b/tests/kfdtest/src/KFDTestUtil.cpp @@ -272,8 +272,10 @@ void HsaMemoryBuffer::Fill(HSAuint32 value, BaseQueue& baseQueue, HSAuint64 offs size = size ? size : m_Size; ASSERT_TRUE(size + offset <= m_Size) << "Buffer Overflow" << std::endl; - baseQueue.PlacePacket(SDMAFillDataPacket((reinterpret_cast(this->As() + offset)), value, size)); - baseQueue.PlacePacket(SDMAFencePacket(reinterpret_cast(event->EventData.HWData2), event->EventId)); + baseQueue.PlacePacket(SDMAFillDataPacket(baseQueue.GetFamilyId(), + (reinterpret_cast(this->As() + offset)), value, size)); + baseQueue.PlacePacket(SDMAFencePacket(baseQueue.GetFamilyId(), + reinterpret_cast(event->EventData.HWData2), event->EventId)); baseQueue.PlaceAndSubmitPacket(SDMATrapPacket(event->EventId)); EXPECT_SUCCESS(hsaKmtWaitOnEvent(event, g_TestTimeOut)); @@ -326,10 +328,10 @@ bool HsaMemoryBuffer::IsPattern(HSAuint64 location, HSAuint32 pattern, BaseQueue return false; *tmp = ~pattern; - baseQueue.PlacePacket(SDMACopyDataPacket((void *)tmp, + baseQueue.PlacePacket(SDMACopyDataPacket(baseQueue.GetFamilyId(), (void *)tmp, reinterpret_cast(this->As() + location), sizeof(HSAuint32))); - baseQueue.PlacePacket(SDMAFencePacket(reinterpret_cast(event->EventData.HWData2), + baseQueue.PlacePacket(SDMAFencePacket(baseQueue.GetFamilyId(), reinterpret_cast(event->EventData.HWData2), event->EventId)); baseQueue.PlaceAndSubmitPacket(SDMATrapPacket(event->EventId)); diff --git a/tests/kfdtest/src/KFDTestUtilQueue.cpp b/tests/kfdtest/src/KFDTestUtilQueue.cpp index e1fe07d4df..92283f71fb 100644 --- a/tests/kfdtest/src/KFDTestUtilQueue.cpp +++ b/tests/kfdtest/src/KFDTestUtilQueue.cpp @@ -31,6 +31,7 @@ #include "PM4Packet.hpp" #include "KFDTestUtil.hpp" #include "KFDTestUtilQueue.hpp" +#include "KFDBaseComponentTest.hpp" #define MB_PER_SEC(size, time) ((((size) * 1ULL) >> 20) * 1000ULL * 1000ULL * 1000ULL / (time)) @@ -355,7 +356,7 @@ void sdma_multicopy(std::vector &array, int mashup, TSPattern ts for (i = 0; i < array.size(); i++) { sharedPacket packet(new - SDMACopyDataPacket(array[i].dst, array[i].src, array[i].size)); + SDMACopyDataPacket(g_baseTest->GetFamilyIdFromNodeId(array[i].node), array[i].dst, array[i].src, array[i].size)); packetList.push_back(packet); /* We put the real queue_id in local handle[] to reduce some assignment.*/ diff --git a/tests/kfdtest/src/SDMAPacket.cpp b/tests/kfdtest/src/SDMAPacket.cpp index f78745037b..2cd13f0823 100644 --- a/tests/kfdtest/src/SDMAPacket.cpp +++ b/tests/kfdtest/src/SDMAPacket.cpp @@ -32,18 +32,16 @@ */ #define SDMA_COUNT(c) (m_FamilyId < FAMILY_AI ? (c) : (c)-1) -SDMAWriteDataPacket::SDMAWriteDataPacket(void): +SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data): packetData(NULL) { + m_FamilyId = familyId; + InitPacket(destAddr, 1, &data); } -SDMAWriteDataPacket::SDMAWriteDataPacket(void* destAddr, unsigned int data): - packetData(NULL) { - InitPacket(destAddr, data); -} - -SDMAWriteDataPacket::SDMAWriteDataPacket(void* destAddr, unsigned int ndw, +SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int ndw, void *data): packetData(NULL) { + m_FamilyId = familyId; InitPacket(destAddr, ndw, data); } @@ -52,10 +50,6 @@ SDMAWriteDataPacket::~SDMAWriteDataPacket(void) { free(packetData); } -void SDMAWriteDataPacket::InitPacket(void* destAddr, unsigned int data) { - InitPacket(destAddr, 1, &data); -} - void SDMAWriteDataPacket::InitPacket(void* destAddr, unsigned int ndw, void *data) { packetSize = sizeof(SDMA_PKT_WRITE_UNTILED) + @@ -79,7 +73,8 @@ SDMACopyDataPacket::~SDMACopyDataPacket(void) { free(packetData); } -SDMACopyDataPacket::SDMACopyDataPacket(void *const dsts[], void *src, int n, unsigned int surfsize) { +SDMACopyDataPacket::SDMACopyDataPacket(unsigned int familyId, + void *const dsts[], void *src, int n, unsigned int surfsize) { int32_t size = 0, i; void **dst = reinterpret_cast(malloc(sizeof(void*) * n)); const int singlePacketSize = sizeof(SDMA_PKT_COPY_LINEAR) + @@ -88,6 +83,7 @@ SDMACopyDataPacket::SDMACopyDataPacket(void *const dsts[], void *src, int n, uns if (n > 2) WARN() << "SDMACopyDataPacket does not support more than 2 dst addresses!" << std::endl; + m_FamilyId = familyId; memcpy(dst, dsts, sizeof(void*) * n); packetSize = ((surfsize + TWO_MEG - 1) >> BITS) * singlePacketSize; @@ -125,18 +121,19 @@ SDMACopyDataPacket::SDMACopyDataPacket(void *const dsts[], void *src, int n, uns free(dst); } -SDMACopyDataPacket::SDMACopyDataPacket(void* dst, void *src, unsigned int surfsize) { - new (this)SDMACopyDataPacket(&dst, src, 1, surfsize); +SDMACopyDataPacket::SDMACopyDataPacket(unsigned int familyId, void* dst, void *src, unsigned int surfsize) { + new (this)SDMACopyDataPacket(familyId, &dst, src, 1, surfsize); } SDMAFillDataPacket::~SDMAFillDataPacket() { free(m_PacketData); } -SDMAFillDataPacket::SDMAFillDataPacket(void *dst, unsigned int data, unsigned int size) { +SDMAFillDataPacket::SDMAFillDataPacket(unsigned int familyId, void *dst, unsigned int data, unsigned int size) { unsigned int copy_size; SDMA_PKT_CONSTANT_FILL *pSDMA; + m_FamilyId = familyId; /* SDMA support maximum 0x3fffe0 byte in one copy. Use 2M copy_size */ m_PacketSize = ((size + TWO_MEG - 1) >> BITS) * sizeof(SDMA_PKT_CONSTANT_FILL); pSDMA = reinterpret_cast(calloc(1, m_PacketSize)); @@ -174,7 +171,8 @@ SDMAFillDataPacket::SDMAFillDataPacket(void *dst, unsigned int data, unsigned in SDMAFencePacket::SDMAFencePacket(void) { } -SDMAFencePacket::SDMAFencePacket(void* destAddr, unsigned int data) { +SDMAFencePacket::SDMAFencePacket(unsigned int familyId, void* destAddr, unsigned int data) { + m_FamilyId = familyId; InitPacket(destAddr, data); } diff --git a/tests/kfdtest/src/SDMAPacket.hpp b/tests/kfdtest/src/SDMAPacket.hpp index b1afb374ce..cb27c944ac 100644 --- a/tests/kfdtest/src/SDMAPacket.hpp +++ b/tests/kfdtest/src/SDMAPacket.hpp @@ -38,18 +38,15 @@ class SDMAPacket : public BasePacket { class SDMAWriteDataPacket : public SDMAPacket { public: - // Empty constructor, before using the packet call the init func - SDMAWriteDataPacket(void); // This contructor will also init the packet, no need for additional calls - SDMAWriteDataPacket(void* destAddr, unsigned int data); - SDMAWriteDataPacket(void* destAddr, unsigned int ndw, void *data); + SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data); + SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int ndw, void *data); virtual ~SDMAWriteDataPacket(void); // @returns Pointer to the packet virtual const void *GetPacket() const { return packetData; } // @breif Initialise the packet - void InitPacket(void* destAddr, unsigned int data); void InitPacket(void* destAddr, unsigned int ndw, void *data); // @returns Packet size in bytes virtual unsigned int SizeInBytes() const { return packetSize; } @@ -63,8 +60,8 @@ class SDMAWriteDataPacket : public SDMAPacket { class SDMACopyDataPacket : public SDMAPacket { public: // This contructor will also init the packet, no need for additional calls - SDMACopyDataPacket(void *dest, void *src, unsigned int size); - SDMACopyDataPacket(void *const dst[], void *src, int n, unsigned int surfsize); + SDMACopyDataPacket(unsigned int familyId, void *dest, void *src, unsigned int size); + SDMACopyDataPacket(unsigned int familyId, void *const dst[], void *src, int n, unsigned int surfsize); virtual ~SDMACopyDataPacket(void); @@ -84,7 +81,7 @@ class SDMACopyDataPacket : public SDMAPacket { class SDMAFillDataPacket : public SDMAPacket { public: // This contructor will also init the packet, no need for additional calls - SDMAFillDataPacket(void *dest, unsigned int data, unsigned int size); + SDMAFillDataPacket(unsigned int familyId, void *dest, unsigned int data, unsigned int size); virtual ~SDMAFillDataPacket(void); @@ -106,7 +103,7 @@ class SDMAFencePacket : public SDMAPacket { // Empty constructor, before using the packet call the init func SDMAFencePacket(void); // This contructor will also init the packet, no need for additional calls - SDMAFencePacket(void* destAddr, unsigned int data); + SDMAFencePacket(unsigned int familyId, void* destAddr, unsigned int data); virtual ~SDMAFencePacket(void); diff --git a/tests/kfdtest/src/SDMAQueue.cpp b/tests/kfdtest/src/SDMAQueue.cpp index 9b77f78310..ece6cc5237 100644 --- a/tests/kfdtest/src/SDMAQueue.cpp +++ b/tests/kfdtest/src/SDMAQueue.cpp @@ -82,7 +82,7 @@ void SDMAQueue::SubmitPacket() { void SDMAQueue::Wait4PacketConsumption(HsaEvent *event, unsigned int timeOut) { if (event) { - PlacePacket(SDMAFencePacket((void*)event->EventData.HWData2, event->EventId)); + PlacePacket(SDMAFencePacket(m_FamilyId, (void*)event->EventData.HWData2, event->EventId)); PlaceAndSubmitPacket(SDMATrapPacket(event->EventId));