diff --git a/tests/kfdtest/src/KFDBaseComponentTest.cpp b/tests/kfdtest/src/KFDBaseComponentTest.cpp index 44de55b93e..8d6ca73b7a 100644 --- a/tests/kfdtest/src/KFDBaseComponentTest.cpp +++ b/tests/kfdtest/src/KFDBaseComponentTest.cpp @@ -63,6 +63,8 @@ void KFDBaseComponentTest::SetUp() { g_TestGPUFamilyId = FamilyIdFromNode(nodeProperties); + GetSdmaInfo(nodeProperties, &m_numSdmaEngines, &m_numSdmaQueuesPerEngine); + m_FamilyId = g_TestGPUFamilyId; ROUTINE_END diff --git a/tests/kfdtest/src/KFDBaseComponentTest.hpp b/tests/kfdtest/src/KFDBaseComponentTest.hpp index 768664e3d6..cfd291b195 100644 --- a/tests/kfdtest/src/KFDBaseComponentTest.hpp +++ b/tests/kfdtest/src/KFDBaseComponentTest.hpp @@ -60,6 +60,8 @@ class KFDBaseComponentTest : public testing::Test { HsaVersionInfo m_VersionInfo; HsaSystemProperties m_SystemProperties; unsigned int m_FamilyId; + unsigned int m_numSdmaEngines; + unsigned int m_numSdmaQueuesPerEngine; HsaMemFlags m_MemoryFlags; HsaNodeInfo m_NodeInfo; diff --git a/tests/kfdtest/src/KFDTestUtil.cpp b/tests/kfdtest/src/KFDTestUtil.cpp index af9b3b3056..0021af2faf 100644 --- a/tests/kfdtest/src/KFDTestUtil.cpp +++ b/tests/kfdtest/src/KFDTestUtil.cpp @@ -126,6 +126,29 @@ unsigned int FamilyIdFromNode(const HsaNodeProperties *props) { return familyId; } +void GetSdmaInfo(const HsaNodeProperties *props, + unsigned int *p_num_sdma_engines, + unsigned int *p_num_sdma_queues_per_engine) { + int num_sdma_engines = 2; + int num_sdma_queues_per_engine = 2; + + switch (props->EngineId.ui32.Major) { + case 9: + if (props->EngineId.ui32.Stepping == 2) // RAVEN + num_sdma_engines = 1; + else if (props->EngineId.ui32.Stepping == 6) // VEGA20 + num_sdma_queues_per_engine = 8; + + break; + } + + if (p_num_sdma_engines) + *p_num_sdma_engines = num_sdma_engines; + + if (p_num_sdma_queues_per_engine) + *p_num_sdma_queues_per_engine = num_sdma_queues_per_engine; +} + bool isTonga(const HsaNodeProperties *props) { /* Tonga has some workarounds in the thunk that cause certain failures */ if (props->EngineId.ui32.Major == 8 && props->EngineId.ui32.Stepping == 2) { diff --git a/tests/kfdtest/src/KFDTestUtil.hpp b/tests/kfdtest/src/KFDTestUtil.hpp index b65dd96531..48e2701be0 100644 --- a/tests/kfdtest/src/KFDTestUtil.hpp +++ b/tests/kfdtest/src/KFDTestUtil.hpp @@ -48,8 +48,11 @@ HSAKMT_STATUS CreateQueueTypeEvent(bool ManualReset, bool IsSignaled, unsigned i bool is_dgpu(); bool isTonga(const HsaNodeProperties *props); -unsigned int FamilyIdFromNode(const HsaNodeProperties * props); +unsigned int FamilyIdFromNode(const HsaNodeProperties *props); +void GetSdmaInfo(const HsaNodeProperties *props, + unsigned int *p_num_sdma_engines, + unsigned int *p_num_sdma_queues_per_engine); class HsaMemoryBuffer { public: