kfdtest: Add SDMANopPacket class

The class is very useful for triaging complex SDMA issues.

Change-Id: Ib5de729f7fc62f41e894ef98d3967e7e1745d454
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
This commit is contained in:
Yong Zhao
2019-09-22 17:13:17 -04:00
committed by Yong Zhao
vanhempi 98b0652917
commit 75c654cfea
3 muutettua tiedostoa jossa 58 lisäystä ja 0 poistoa
@@ -25,6 +25,7 @@
#define __SDMA_PKT_STRUCT_H__
const unsigned int SDMA_OP_NOP = 0;
const unsigned int SDMA_OP_COPY = 1;
const unsigned int SDMA_OP_WRITE = 2;
@@ -354,4 +355,33 @@ typedef struct SDMA_PKT_TIMESTAMP_TAG
} ADDR_HI_UNION;
} SDMA_PKT_TIMESTAMP, *PSDMA_PKT_TIMESTAMP;
/*
** Definitions for SDMA_PKT_NOP packet
*/
typedef struct SDMA_PKT_NOP_TAG
{
union
{
struct
{
unsigned int op:8;
unsigned int sub_op:8;
unsigned int count:14;
unsigned int reserved_0:2;
};
unsigned int DW_0_DATA;
} HEADER_UNION;
union
{
struct
{
unsigned int data0:32;
};
unsigned int DW_1_DATA;
} DATA0_UNION;
} SDMA_PKT_NOP, *PSDMA_PKT_NOP;
#endif // __SDMA_PKT_STRUCT_H__
+13
Näytä tiedosto
@@ -246,3 +246,16 @@ void SDMATimePacket::InitPacket(void *destaddr) {
packetData.ADDR_LO_UNION.DW_1_DATA, /*dst_addr_31_0*/
packetData.ADDR_HI_UNION.DW_2_DATA); /*dst_addr_63_32*/
}
SDMANopPacket::SDMANopPacket(unsigned int count) {
packetSize = count;
packetData = reinterpret_cast<SDMA_PKT_NOP *>(calloc(count, sizeof(unsigned int)));
packetData->HEADER_UNION.op = SDMA_OP_NOP;
packetData->HEADER_UNION.sub_op = 0;
packetData->HEADER_UNION.count = count - 1;
}
SDMANopPacket::~SDMANopPacket() {
free(packetData);
}
+15
Näytä tiedosto
@@ -158,5 +158,20 @@ class SDMATimePacket : public SDMAPacket {
SDMA_PKT_TIMESTAMP packetData;
};
class SDMANopPacket : public SDMAPacket {
public:
SDMANopPacket(unsigned int count = 1);
virtual ~SDMANopPacket(void);
// @returns Pointer to the packet
virtual const void *GetPacket() const { return packetData; }
// @returns Packet size in bytes
virtual unsigned int SizeInBytes() const { return packetSize; }
private:
SDMA_PKT_NOP *packetData;
unsigned int packetSize;
};
#endif // __KFD_SDMA_PACKET__H__