KFDTest: Added gfx1010 SDMA fence packet support

Change-Id: I33d824353d77317363b73ddc52cd182f86b8bc66
Signed-off-by: shaoyunl <shaoyun.liu@amd.com>
Signed-off-by: Oak Zeng <Oak.Zeng@amd.com>
Tá an tiomantas seo le fáil i:
shaoyunl
2019-07-18 19:06:43 -04:00
tiomanta ag Shaoyun Liu
tuismitheoir 395750264d
tiomantas 5b44be1907
D'athraigh 2 comhad le 25 breiseanna agus 3 scriosta
+22 -2
Féach ar an gComhad
@@ -173,13 +173,16 @@ SDMAFencePacket::SDMAFencePacket(void) {
SDMAFencePacket::SDMAFencePacket(unsigned int familyId, void* destAddr, unsigned int data) {
m_FamilyId = familyId;
InitPacket(destAddr, data);
if (m_FamilyId < FAMILY_NV)
InitPacketCI(destAddr, data);
else
InitPacketNV(destAddr, data);
}
SDMAFencePacket::~SDMAFencePacket(void) {
}
void SDMAFencePacket::InitPacket(void* destAddr, unsigned int data) {
void SDMAFencePacket::InitPacketCI(void* destAddr, unsigned int data) {
memset(&packetData, 0, SizeInBytes());
packetData.HEADER_UNION.op = SDMA_OP_FENCE;
@@ -191,6 +194,23 @@ void SDMAFencePacket::InitPacket(void* destAddr, unsigned int data) {
packetData.DATA_UNION.data = data;
}
void SDMAFencePacket::InitPacketNV(void * destAddr,unsigned int data) {
memset(&packetData, 0, SizeInBytes());
/* GPA=0 becaue we use virtual address
* Snoop = 1 because we want the write be CPU coherent
* System = 1 because the memory is system memory
* mtype = uncached, for the purpose of CPU coherent, L2 policy doesn't matter in this case
*/
packetData.HEADER_UNION.DW_0_DATA = (0 << 23) | (1 << 22) | (1 << 20) | (3 << 15) | SDMA_OP_FENCE;
SplitU64(reinterpret_cast<unsigned long long>(destAddr),
packetData.ADDR_LO_UNION.DW_1_DATA, /*dst_addr_31_0*/
packetData.ADDR_HI_UNION.DW_2_DATA); /*dst_addr_63_32*/
packetData.DATA_UNION.data = data;
}
SDMATrapPacket::SDMATrapPacket(unsigned int eventID) {
InitPacket(eventID);