diff --git a/tests/kfdtest/scripts/kfdtest.exclude b/tests/kfdtest/scripts/kfdtest.exclude index de268ac323..4d1b3b34e4 100644 --- a/tests/kfdtest/scripts/kfdtest.exclude +++ b/tests/kfdtest/scripts/kfdtest.exclude @@ -13,7 +13,7 @@ FILTER[core_sws]=\ "KFDQMTest.CreateDestroyCpQueue:"\ "KFDQMTest.SubmitNopCpQueue:"\ "KFDQMTest.SubmitPacketCpQueue:"\ -"KFDQMTest.MultipleCpQueues:"\ +"KFDQMTest.AllCpQueues:"\ "KFDQMTest.CreateDestroySdmaQueue:"\ "KFDQMTest.SubmitNopSdmaQueue:"\ "KFDQMTest.SubmitPacketSdmaQueue:"\ diff --git a/tests/kfdtest/src/KFDBaseComponentTest.cpp b/tests/kfdtest/src/KFDBaseComponentTest.cpp index 27f3db1cda..f950a7a1f1 100644 --- a/tests/kfdtest/src/KFDBaseComponentTest.cpp +++ b/tests/kfdtest/src/KFDBaseComponentTest.cpp @@ -63,8 +63,8 @@ void KFDBaseComponentTest::SetUp() { m_FamilyId = FamilyIdFromNode(nodeProperties); - GetSdmaInfo(nodeProperties, &m_numSdmaEngines, &m_numSdmaXgmiEngines, - &m_numSdmaQueuesPerEngine); + GetHwQueueInfo(nodeProperties, &m_numCpQueues, &m_numSdmaEngines, + &m_numSdmaXgmiEngines, &m_numSdmaQueuesPerEngine); g_baseTest = this; diff --git a/tests/kfdtest/src/KFDBaseComponentTest.hpp b/tests/kfdtest/src/KFDBaseComponentTest.hpp index fce5c0d884..8a99e405e4 100644 --- a/tests/kfdtest/src/KFDBaseComponentTest.hpp +++ b/tests/kfdtest/src/KFDBaseComponentTest.hpp @@ -62,6 +62,7 @@ class KFDBaseComponentTest : public testing::Test { HsaVersionInfo m_VersionInfo; HsaSystemProperties m_SystemProperties; unsigned int m_FamilyId; + unsigned int m_numCpQueues; unsigned int m_numSdmaEngines; unsigned int m_numSdmaXgmiEngines; unsigned int m_numSdmaQueuesPerEngine; diff --git a/tests/kfdtest/src/KFDQMTest.cpp b/tests/kfdtest/src/KFDQMTest.cpp index e75537ef5a..b5ab04bc63 100644 --- a/tests/kfdtest/src/KFDQMTest.cpp +++ b/tests/kfdtest/src/KFDQMTest.cpp @@ -115,32 +115,30 @@ TEST_F(KFDQMTest, SubmitPacketCpQueue) { TEST_END } -TEST_F(KFDQMTest, MultipleCpQueues) { +TEST_F(KFDQMTest, AllCpQueues) { TEST_START(TESTPROFILE_RUNALL) int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; - static const unsigned int MAX_CP_QUEUES = 16; - HsaMemoryBuffer destBuf(PAGE_SIZE, defaultGPUNode, false); destBuf.Fill(0xFF); - PM4Queue queues[MAX_CP_QUEUES]; + std::vector queues(m_numCpQueues); - for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) + for (unsigned int qidx = 0; qidx < m_numCpQueues; ++qidx) ASSERT_SUCCESS(queues[qidx].Create(defaultGPUNode)) << " QueueId=" << qidx; - for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) { + for (unsigned int qidx = 0; qidx < m_numCpQueues; ++qidx) { queues[qidx].PlaceAndSubmitPacket(PM4WriteDataPacket(destBuf.As()+qidx*2, qidx, qidx)); queues[qidx].Wait4PacketConsumption(); - WaitOnValue(destBuf.As()+qidx*2, qidx); + EXPECT_TRUE(WaitOnValue(destBuf.As()+qidx*2, qidx)); } - for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) + for (unsigned int qidx = 0; qidx < m_numCpQueues; ++qidx) EXPECT_SUCCESS(queues[qidx].Destroy()); TEST_END diff --git a/tests/kfdtest/src/KFDTestUtil.cpp b/tests/kfdtest/src/KFDTestUtil.cpp index 105cc00679..327d4f6702 100644 --- a/tests/kfdtest/src/KFDTestUtil.cpp +++ b/tests/kfdtest/src/KFDTestUtil.cpp @@ -140,17 +140,19 @@ unsigned int FamilyIdFromNode(const HsaNodeProperties *props) { return familyId; } -void GetSdmaInfo(const HsaNodeProperties *props, +void GetHwQueueInfo(const HsaNodeProperties *props, + unsigned int *p_num_cp_queues, unsigned int *p_num_sdma_engines, unsigned int *p_num_sdma_xgmi_engines, unsigned int *p_num_sdma_queues_per_engine) { + int num_cp_queues = 24; int num_sdma_queues_per_engine = 2; if (props->EngineId.ui32.Major == 9) { if (props->EngineId.ui32.Stepping == 6) // VEGA20 num_sdma_queues_per_engine = 8; - } else if (props->EngineId.ui32.Major == 10) { //NAVIi - num_sdma_queues_per_engine = 8; + } else if (props->EngineId.ui32.Major == 10) { // NAVI + num_sdma_queues_per_engine = 8; } if (p_num_sdma_engines) @@ -161,6 +163,9 @@ void GetSdmaInfo(const HsaNodeProperties *props, if (p_num_sdma_queues_per_engine) *p_num_sdma_queues_per_engine = num_sdma_queues_per_engine; + + if (p_num_cp_queues) + *p_num_cp_queues = num_cp_queues; } bool isTonga(const HsaNodeProperties *props) { diff --git a/tests/kfdtest/src/KFDTestUtil.hpp b/tests/kfdtest/src/KFDTestUtil.hpp index 5fefff0516..139fbd1513 100644 --- a/tests/kfdtest/src/KFDTestUtil.hpp +++ b/tests/kfdtest/src/KFDTestUtil.hpp @@ -51,7 +51,8 @@ bool is_dgpu(); bool isTonga(const HsaNodeProperties *props); unsigned int FamilyIdFromNode(const HsaNodeProperties *props); -void GetSdmaInfo(const HsaNodeProperties *props, +void GetHwQueueInfo(const HsaNodeProperties *props, + unsigned int *p_num_cp_queues, unsigned int *p_num_sdma_engines, unsigned int *p_num_sdma_xgmi_engines, unsigned int *p_num_sdma_queues_per_engine);