From d0477083176c194d6c0911729cd8567ee5d32d2b Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Thu, 30 Jan 2025 13:39:52 -0500 Subject: [PATCH] kfdtest: Allow user to modify packet size for SDMA write packets This is primarily used for debug and negative testing for SDMA queue reset and shouldn't be used for normal run cases. --- libhsakmt/tests/kfdtest/src/SDMAPacket.cpp | 8 +++++--- libhsakmt/tests/kfdtest/src/SDMAPacket.hpp | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/libhsakmt/tests/kfdtest/src/SDMAPacket.cpp b/libhsakmt/tests/kfdtest/src/SDMAPacket.cpp index 9aa087c112..80c20a810e 100644 --- a/libhsakmt/tests/kfdtest/src/SDMAPacket.cpp +++ b/libhsakmt/tests/kfdtest/src/SDMAPacket.cpp @@ -32,10 +32,11 @@ */ #define SDMA_COUNT(c) (m_FamilyId < FAMILY_AI ? (c) : (c)-1) -SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data): +SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data, + unsigned int packetSizeOffset): packetData(NULL) { m_FamilyId = familyId; - InitPacket(destAddr, 1, &data); + InitPacket(destAddr, 1, &data, packetSizeOffset); } SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int ndw, @@ -46,9 +47,10 @@ SDMAWriteDataPacket::SDMAWriteDataPacket(unsigned int familyId, void* destAddr, } void SDMAWriteDataPacket::InitPacket(void* destAddr, unsigned int ndw, - void *data) { + void *data, unsigned int packetSizeOffset) { packetSize = sizeof(SDMA_PKT_WRITE_UNTILED) + (ndw - 1) * sizeof(unsigned int); + packetSize -= packetSizeOffset; packetData = reinterpret_cast(AllocPacket()); packetData->HEADER_UNION.op = SDMA_OP_WRITE; diff --git a/libhsakmt/tests/kfdtest/src/SDMAPacket.hpp b/libhsakmt/tests/kfdtest/src/SDMAPacket.hpp index e38b1e7837..0cb21fbb93 100644 --- a/libhsakmt/tests/kfdtest/src/SDMAPacket.hpp +++ b/libhsakmt/tests/kfdtest/src/SDMAPacket.hpp @@ -39,7 +39,8 @@ class SDMAPacket : public BasePacket { class SDMAWriteDataPacket : public SDMAPacket { public: // This contructor will also init the packet, no need for additional calls - SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data); + SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int data, + unsigned int packSizeOffset = 0); SDMAWriteDataPacket(unsigned int familyId, void* destAddr, unsigned int ndw, void *data); virtual ~SDMAWriteDataPacket(void) {} @@ -47,7 +48,7 @@ class SDMAWriteDataPacket : public SDMAPacket { // @returns Pointer to the packet virtual const void *GetPacket() const { return packetData; } // @breif Initialise the packet - void InitPacket(void* destAddr, unsigned int ndw, void *data); + void InitPacket(void* destAddr, unsigned int ndw, void *data, unsigned int packetSizeOffset = 0); // @returns Packet size in bytes virtual unsigned int SizeInBytes() const { return packetSize; }