2
0

kfdtest: Add AllQueues test

This puts all CP and SDMA queues in a single test, which is
currently missing.

Change-Id: I98bf58df1be65fe9daf6311c016a48569a8ab674
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Este cometimento está contido em:
Yong Zhao
2019-11-06 19:52:03 -05:00
cometido por Yong Zhao
ascendente caa744944e
cometimento 10ffc63d7b
2 ficheiros modificados com 62 adições e 0 eliminações
+1
Ver ficheiro
@@ -18,6 +18,7 @@ FILTER[core_sws]=\
"KFDQMTest.SubmitNopSdmaQueue:"\
"KFDQMTest.SubmitPacketSdmaQueue:"\
"KFDQMTest.AllSdmaQueues:"\
"KFDQMTest.AllQueues:"\
"KFDEventTest.SignalEvent"
# HWS mode
+61
Ver ficheiro
@@ -243,6 +243,67 @@ TEST_F(KFDQMTest, AllSdmaQueues) {
TEST_END
}
TEST_F(KFDQMTest, AllQueues) {
TEST_START(TESTPROFILE_RUNALL)
int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
int bufSize = PAGE_SIZE;
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
unsigned int i, j;
const unsigned int numCpQueues = m_numCpQueues;
const unsigned int numSdmaQueues = m_numSdmaEngines * m_numSdmaQueuesPerEngine;
HsaMemoryBuffer destBufCp(PAGE_SIZE, defaultGPUNode, false);
destBufCp.Fill(0xFF);
HsaMemoryBuffer destBuf(bufSize << 1 , defaultGPUNode, false);
HsaMemoryBuffer srcBuf(bufSize, defaultGPUNode, false);
destBuf.Fill(0xFF);
std::vector<PM4Queue> cpQueues(numCpQueues);
std::vector<SDMAQueue> sdmaQueues(numSdmaQueues);
for (i = 0; i < numCpQueues; ++i)
ASSERT_SUCCESS(cpQueues[i].Create(defaultGPUNode)) << " QueueId=" << i;
for (j = 0; j < numSdmaQueues; ++j)
ASSERT_SUCCESS(sdmaQueues[j].Create(defaultGPUNode));
for (i = 0; i < numCpQueues; ++i) {
cpQueues[i].PlaceAndSubmitPacket(PM4WriteDataPacket(destBufCp.As<unsigned int*>()+i*2, i, i));
cpQueues[i].Wait4PacketConsumption();
EXPECT_TRUE(WaitOnValue(destBufCp.As<unsigned int*>()+i*2, i));
}
for (j = 0; j < numSdmaQueues; ++j) {
destBuf.Fill(0x0);
srcBuf.Fill(j + 0xa0);
sdmaQueues[j].PlaceAndSubmitPacket(
SDMACopyDataPacket(sdmaQueues[j].GetFamilyId(), destBuf.As<unsigned int*>(), srcBuf.As<unsigned int*>(), bufSize));
sdmaQueues[j].PlaceAndSubmitPacket(
SDMAWriteDataPacket(sdmaQueues[j].GetFamilyId(), destBuf.As<unsigned int*>() + bufSize/4, 0x02020202));
sdmaQueues[j].Wait4PacketConsumption();
EXPECT_TRUE(WaitOnValue(destBuf.As<unsigned int*>() + bufSize/4, 0x02020202));
EXPECT_SUCCESS(memcmp(
destBuf.As<unsigned int*>(), srcBuf.As<unsigned int*>(), bufSize));
}
for (i = 0; i < numCpQueues; ++i)
EXPECT_SUCCESS(cpQueues[i].Destroy());
for (j = 0; j < numSdmaQueues; ++j)
EXPECT_SUCCESS(sdmaQueues[j].Destroy());
TEST_END
}
/* The following test is designed to reproduce an intermittent hang on
* Fiji and other VI/Polaris GPUs. This test typically hangs in a few
* seconds. According to analysis done by HW engineers, the culprit