kfdtest: Add CreateDestroyCpQueue and CreateDestroySdmaQueue test

Those two tests cover the basic queue creation and destruction
without submitting packets to CP and SDMA user queues. During bringup,
they bring values in term of untangling the issues arising in queue
creation and packet execution, which are two very different kinds.

Because of those two tests, we also rename some existing tests as
follows:
CreateCpQueue             ->   SubmitPacketCpQueue
CreateSdmaQueue           ->   SubmitPacketSdmaQueue
CreateMultipleCpQueues    ->   MultipleCpQueues
CreateMultipleSdmaQueues  ->   MultipleSdmaQueues

Lastly, move MultipleCpQueues test closer to the CP queue section
rather than leaving it behind the SDMA queue section.

Change-Id: I110fb3f3fb21878339045dd1d1c8c9d61b8988b7
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Этот коммит содержится в:
Yong Zhao
2019-04-18 13:25:32 -04:00
коммит произвёл Yong Zhao
родитель e109ce541c
Коммит 5b18614eaf
+64 -34
Просмотреть файл
@@ -55,7 +55,22 @@ void KFDQMTest::TearDown() {
ROUTINE_END
}
TEST_F(KFDQMTest, CreateCpQueue) {
TEST_F(KFDQMTest, CreateDestroyCpQueue) {
TEST_START(TESTPROFILE_RUNALL)
int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
PM4Queue queue;
ASSERT_SUCCESS(queue.Create(defaultGPUNode));
EXPECT_SUCCESS(queue.Destroy());
TEST_END
}
TEST_F(KFDQMTest, SubmitPacketCpQueue) {
TEST_START(TESTPROFILE_RUNALL)
int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
@@ -80,7 +95,53 @@ TEST_F(KFDQMTest, CreateCpQueue) {
TEST_END
}
TEST_F(KFDQMTest, CreateSdmaQueue) {
TEST_F(KFDQMTest, MultipleCpQueues) {
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];
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx)
ASSERT_SUCCESS(queues[qidx].Create(defaultGPUNode)) << " QueueId=" << qidx;
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) {
queues[qidx].PlaceAndSubmitPacket(PM4WriteDataPacket(destBuf.As<unsigned int*>()+qidx*2, qidx, qidx));
queues[qidx].Wait4PacketConsumption();
WaitOnValue(destBuf.As<unsigned int*>()+qidx*2, qidx);
}
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx)
EXPECT_SUCCESS(queues[qidx].Destroy());
TEST_END
}
TEST_F(KFDQMTest, CreateDestroySdmaQueue) {
TEST_START(TESTPROFILE_RUNALL)
int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
SDMAQueue queue;
ASSERT_SUCCESS(queue.Create(defaultGPUNode));
EXPECT_SUCCESS(queue.Destroy());
TEST_END
}
TEST_F(KFDQMTest, SubmitPacketSdmaQueue) {
TEST_START(TESTPROFILE_RUNALL)
int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
@@ -105,7 +166,7 @@ TEST_F(KFDQMTest, CreateSdmaQueue) {
TEST_END
}
TEST_F(KFDQMTest, CreateMultipleSdmaQueues) {
TEST_F(KFDQMTest, MultipleSdmaQueues) {
TEST_START(TESTPROFILE_RUNALL)
int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
@@ -208,37 +269,6 @@ TEST_F(KFDQMTest, SdmaConcurrentCopies) {
TEST_END
}
TEST_F(KFDQMTest, CreateMultipleCpQueues) {
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];
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx)
ASSERT_SUCCESS(queues[qidx].Create(defaultGPUNode)) << " QueueId=" << qidx;
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) {
queues[qidx].PlaceAndSubmitPacket(PM4WriteDataPacket(destBuf.As<unsigned int*>()+qidx*2, qidx, qidx));
queues[qidx].Wait4PacketConsumption();
WaitOnValue(destBuf.As<unsigned int*>()+qidx*2, qidx);
}
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx)
EXPECT_SUCCESS(queues[qidx].Destroy());
TEST_END
}
TEST_F(KFDQMTest, DisableCpQueueByUpdateWithNullAddress) {
TEST_START(TESTPROFILE_RUNALL)