From a4d570fa2b0cd457147622c6ed7fa6a8cbe90149 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Wed, 6 Nov 2019 19:10:58 -0500 Subject: [PATCH] kfdtest: Expand KFDQMTest.MultipleCpQueues to cover all CP queues Because of that, rename the test to AllCpQueues. Change-Id: I57105f863db2558e850c703d151ffebcce2c7a17 Signed-off-by: Yong Zhao --- tests/kfdtest/scripts/kfdtest.exclude | 2 +- tests/kfdtest/src/KFDBaseComponentTest.cpp | 4 ++-- tests/kfdtest/src/KFDBaseComponentTest.hpp | 1 + tests/kfdtest/src/KFDQMTest.cpp | 14 ++++++-------- tests/kfdtest/src/KFDTestUtil.cpp | 11 ++++++++--- tests/kfdtest/src/KFDTestUtil.hpp | 3 ++- 6 files changed, 20 insertions(+), 15 deletions(-) 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);