diff --git a/include/hsakmttypes.h b/include/hsakmttypes.h index 656e85d707..df83817010 100644 --- a/include/hsakmttypes.h +++ b/include/hsakmttypes.h @@ -870,21 +870,120 @@ typedef struct _HSA_UUID #define HSA_DEFINE_UUID DEFINE_GUID #endif +// HSA_UUID that identifies the GPU ColorBuffer (CB) block +// {9ba429c6-af2d-4b38-b349-157271beac6a} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_CB, +0x9ba429c6, 0xaf2d, 0x4b38, 0xb3, 0x49, 0x15, 0x72, 0x71, 0xbe, 0xac, 0x6a); + +// HSA_UUID that identifies the GPU (CPF) block +// {2b0ad2b5-1c43-4f46-a7bc-e119411ea6c9} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_CPF, +0x2b0ad2b5, 0x1c43, 0x4f46, 0xa7, 0xbc, 0xe1, 0x19, 0x41, 0x1e, 0xa6, 0xc9); + +// HSA_UUID that identifies the GPU (CPG) block +// {590ec94d-20f0-448f-8dff-316c679de7ff +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_CPG, +0x590ec94d, 0x20f0, 0x448f, 0x8d, 0xff, 0x31, 0x6c, 0x67, 0x9d, 0xe7, 0xff); + +// HSA_UUID that identifies the GPU (DB) block +// {3d1a47fc-0013-4ed4-8306-822ca0b7a6c2 +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_DB, +0x3d1a47fc, 0x0013, 0x4ed4, 0x83, 0x06, 0x82, 0x2c, 0xa0, 0xb7, 0xa6, 0xc2); + +// HSA_UUID that identifies the GPU (GDS) block +// {f59276ec-2526-4bf8-8ec0-118f77700dc9 +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_GDS, +0xf59276ec, 0x2526, 0x4bf8, 0x8e, 0xc0, 0x11, 0x8f, 0x77, 0x70, 0x0d, 0xc9); + +// HSA_UUID that identifies the GPU (GRBM) block +// {8f00933c-c33d-4801-97b7-7007f78573ad +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_GRBM, +0x8f00933c, 0xc33d, 0x4801, 0x97, 0xb7, 0x70, 0x07, 0xf7, 0x85, 0x73, 0xad); + +// HSA_UUID that identifies the GPU (GRBMSE) block +// {34ebd8d7-7c8b-4d15-88fa-0e4e4af59ac1 +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_GRBMSE, +0x34ebd8d7, 0x7c8b, 0x4d15, 0x88, 0xfa, 0x0e, 0x4e, 0x4a, 0xf5, 0x9a, 0xc1); + +// HSA_UUID that identifies the GPU (IA) block +// {34276944-4264-4fcd-9d6e-ae264582ec51 +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_IA, +0x34276944, 0x4264, 0x4fcd, 0x9d, 0x6e, 0xae, 0x26, 0x45, 0x82, 0xec, 0x51); + +// HSA_UUID that identifies the GPU Memory Controller (MC) block +// {13900B57-4956-4D98-81D0-68521937F59C +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_MC, +0x13900b57, 0x4956, 0x4d98, 0x81, 0xd0, 0x68, 0x52, 0x19, 0x37, 0xf5, 0x9c); + +// HSA_UUID that identifies the GPU (PASC) block +// {b0e7fb5d-0efc-4744-b516-5d23dc1fd56c +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_PASC, +0xb0e7fb5d, 0x0efc, 0x4744, 0xb5, 0x16, 0x5d, 0x23, 0xdc, 0x1f, 0xd5, 0x6c); + +// HSA_UUID that identifies the GPU (PASU) block +// {9a152b6a-1fad-45f2-a5bf-f163826bd0cd +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_PASU, +0x9a152b6a, 0x1fad, 0x45f2, 0xa5, 0xbf, 0xf1, 0x63, 0x82, 0x6b, 0xd0, 0xcd); + +// HSA_UUID that identifies the GPU (SPI) block +// {eda81044-d62c-47eb-af89-4f6fbf3b38e0 +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_SPI, +0xeda81044, 0xd62c, 0x47eb, 0xaf, 0x89, 0x4f, 0x6f, 0xbf, 0x3b, 0x38, 0xe0); + +// HSA_UUID that identifies the GPU (SRBM) block +// {9f8040e0-6830-4019-acc8-463c9e445b89 +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_SRBM, +0x9f8040e0, 0x6830, 0x4019, 0xac, 0xc8, 0x46, 0x3c, 0x9e, 0x44, 0x5b, 0x89); // GUID that identifies the GPU Shader Sequencer (SQ) block // {B5C396B6-D310-47E4-86FC-5CC3043AF508} HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_SQ, 0xb5c396b6, 0xd310, 0x47e4, 0x86, 0xfc, 0x5c, 0xc3, 0x4, 0x3a, 0xf5, 0x8); +// HSA_UUID that identifies the GPU (SX) block +// {bdb8d737-43cc-4162-be52-51cfb847beaf} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_SX, +0xbdb8d737, 0x43cc, 0x4162, 0xbe, 0x52, 0x51, 0xcf, 0xb8, 0x47, 0xbe, 0xaf); + +// HSA_UUID that identifies the GPU (TA) block +// {c01ee43d-ad92-44b1-8ab9-be5e696ceea7} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_TA, +0xc01ee43d, 0xad92, 0x44b1, 0x8a, 0xb9, 0xbe, 0x5e, 0x69, 0x6c, 0xee, 0xa7); + // HSA_UUID that identifies the GPU TextureCache (TCA) block // {333e393f-e147-4f49-a6d1-60914c7086b0} HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_TCA, 0x333e393f, 0xe147, 0x4f49, 0xa6, 0xd1,0x60, 0x91, 0x4c, 0x70, 0x86, 0xb0); -// GUID that identifies the GPU Memory Controller (MC) block -// {13900B57-4956-4D98-81D0-68521937F59C} -HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_MC, -0x13900b57, 0x4956, 0x4d98, 0x81, 0xd0, 0x68, 0x52, 0x19, 0x37, 0xf5, 0x9c); +// HSA_UUID that identifies the GPU TextureCache (TCC) block +// {848ce855-d805-4566-a8ab-73e884cc6bff} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_TCC, +0x848ce855, 0xd805, 0x4566, 0xa8, 0xab, 0x73, 0xe8, 0x84, 0xcc, 0x6b, 0xff); + +// HSA_UUID that identifies the GPU (TCP) block +// {e10a013b-17d4-4bf5-b089-429591059b60} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_TCP, +0xe10a013b, 0x17d4, 0x4bf5, 0xb0, 0x89, 0x42, 0x95, 0x91, 0x05, 0x9b, 0x60); + +// HSA_UUID that identifies the GPU (TCS) block +// {4126245c-4d96-4d1a-8aed-a939d4cc8ec9} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_TCS, +0x4126245c, 0x4d96, 0x4d1a, 0x8a, 0xed, 0xa9, 0x39, 0xd4, 0xcc, 0x8e, 0xc9); + +// HSA_UUID that identifies the GPU (TD) block +// {7d7c0fe4-fe41-4fea-92c9-4544d7706dc6} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_TD, +0x7d7c0fe4, 0xfe41, 0x4fea, 0x92, 0xc9, 0x45, 0x44, 0xd7, 0x70, 0x6d, 0xc6); + +// HSA_UUID that identifies the GPU (VGT) block +// {0b6a8cb7-7a01-409f-a22c-3014854f1359} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_VGT, +0x0b6a8cb7, 0x7a01, 0x409f, 0xa2, 0x2c, 0x30, 0x14, 0x85, 0x4f, 0x13, 0x59); + +// HSA_UUID that identifies the GPU (WD) block +// {0e176789-46ed-4b02-972a-916d2fac244a} +HSA_DEFINE_UUID(HSA_PROFILEBLOCK_AMD_WD, +0x0e176789, 0x46ed, 0x4b02, 0x97, 0x2a, 0x91, 0x6d, 0x2f, 0xac, 0x24, 0x4a); // GUID that identifies the IMOMMUv2 HW device // {80969879-B0F6-4BE6-97F6-6A6300F5101D} diff --git a/src/perfctr.c b/src/perfctr.c index dd82e2114c..5267ac1dbe 100644 --- a/src/perfctr.c +++ b/src/perfctr.c @@ -177,12 +177,72 @@ static int blockid2uuid(enum perf_block_id block_id, HSA_UUID *uuid) int rc = 0; switch (block_id) { + case PERFCOUNTER_BLOCKID__CB: + *uuid = HSA_PROFILEBLOCK_AMD_CB; + break; + case PERFCOUNTER_BLOCKID__CPF: + *uuid = HSA_PROFILEBLOCK_AMD_CPF; + break; + case PERFCOUNTER_BLOCKID__CPG: + *uuid = HSA_PROFILEBLOCK_AMD_CPG; + break; + case PERFCOUNTER_BLOCKID__GDS: + *uuid = HSA_PROFILEBLOCK_AMD_GDS; + break; + case PERFCOUNTER_BLOCKID__GRBM: + *uuid = HSA_PROFILEBLOCK_AMD_GRBM; + break; + case PERFCOUNTER_BLOCKID__GRBMSE: + *uuid = HSA_PROFILEBLOCK_AMD_GRBMSE; + break; + case PERFCOUNTER_BLOCKID__IA: + *uuid = HSA_PROFILEBLOCK_AMD_IA; + break; + case PERFCOUNTER_BLOCKID__MC: + *uuid = HSA_PROFILEBLOCK_AMD_MC; + break; + case PERFCOUNTER_BLOCKID__PASC: + *uuid = HSA_PROFILEBLOCK_AMD_PASC; + break; + case PERFCOUNTER_BLOCKID__PASU: + *uuid = HSA_PROFILEBLOCK_AMD_PASU; + break; + case PERFCOUNTER_BLOCKID__SPI: + *uuid = HSA_PROFILEBLOCK_AMD_SPI; + break; + case PERFCOUNTER_BLOCKID__SRBM: + *uuid = HSA_PROFILEBLOCK_AMD_SRBM; + break; case PERFCOUNTER_BLOCKID__SQ: *uuid = HSA_PROFILEBLOCK_AMD_SQ; break; + case PERFCOUNTER_BLOCKID__SX: + *uuid = HSA_PROFILEBLOCK_AMD_SX; + break; + case PERFCOUNTER_BLOCKID__TA: + *uuid = HSA_PROFILEBLOCK_AMD_TA; + break; case PERFCOUNTER_BLOCKID__TCA: *uuid = HSA_PROFILEBLOCK_AMD_TCA; break; + case PERFCOUNTER_BLOCKID__TCC: + *uuid = HSA_PROFILEBLOCK_AMD_TCC; + break; + case PERFCOUNTER_BLOCKID__TCP: + *uuid = HSA_PROFILEBLOCK_AMD_TCP; + break; + case PERFCOUNTER_BLOCKID__TCS: + *uuid = HSA_PROFILEBLOCK_AMD_TCS; + break; + case PERFCOUNTER_BLOCKID__TD: + *uuid = HSA_PROFILEBLOCK_AMD_TD; + break; + case PERFCOUNTER_BLOCKID__VGT: + *uuid = HSA_PROFILEBLOCK_AMD_VGT; + break; + case PERFCOUNTER_BLOCKID__WD: + *uuid = HSA_PROFILEBLOCK_AMD_WD; + break; case PERFCOUNTER_BLOCKID__IOMMUV2: *uuid = HSA_PROFILEBLOCK_AMD_IOMMUV2; break; diff --git a/src/pmc_table.c b/src/pmc_table.c index 92c363bfa1..3abb57eb37 100644 --- a/src/pmc_table.c +++ b/src/pmc_table.c @@ -31,27 +31,155 @@ #include "libhsakmt.h" #include "pmc_table.h" -/* Unused counters - 163-167 */ -static uint32_t gfx7_sq_counter_ids[] = { -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, -23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, -43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, -63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, -83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, -102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, -134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, -150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 168, 169, 170, -171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, -187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, -203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, -219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, -235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250 +/****** CB ******/ +static uint32_t gfx7_cb_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, +165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, +181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, +197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, +213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225 }; -static uint32_t gfx7_tca_counter_ids[] = { -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, -23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 +/****** CPF ******/ +static uint32_t gfx7_cpf_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +}; + +/****** CPG ******/ +static uint32_t gfx7_cpg_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45 +}; + +/****** DB ******/ +static uint32_t gfx7_db_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, +165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, +181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, +197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, +213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, +229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, +245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256 +}; + +/****** GDS ******/ +static uint32_t gfx7_gds_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120 +}; + +/****** GRBM ******/ +static uint32_t gfx7_grbm_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 +}; + +/****** GRBMSE ******/ +static uint32_t gfx7_grbmse_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 +}; + +/****** IA ******/ +static uint32_t gfx7_ia_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 +}; + +/****** PASC ******/ +static uint32_t gfx7_pasc_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, +165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, +181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, +197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, +213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, +229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, +245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, +261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, +277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, +293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, +309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, +325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, +341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, +357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, +373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, +389, 390, 391, 392, 393, 394 +}; + +/****** PASU ******/ +static uint32_t gfx7_pasu_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152 +}; + +/****** SPI ******/ +static uint32_t gfx7_spi_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, +165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, +181, 182, 183, 184, 185 +}; + +/****** SQ ******/ +/* Unused counters - 163-167 */ +static uint32_t gfx7_sq_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 168, 169, +170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, +186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, +202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, +218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, +234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, +250 }; /* Unused counters - 166, 292 - 297 */ @@ -75,11 +203,6 @@ static uint32_t gfx8_sq_counter_ids[] = { 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 298 }; -static uint32_t gfx8_tca_counter_ids[] = { -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, -23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 -}; - /* Polaris 10/11 have the same SQ cpunter IDs but different from other gfx8's. */ /* Unused counters - 167 and 275 are *_DUMMY_LAST */ static uint32_t gfx8_pl_sq_counter_ids[] = { @@ -125,6 +248,96 @@ static uint32_t gfx9_sq_counter_ids[] = { 364, 365, 366, 367, 368, 369, 370, 371, 372 }; +/****** SRBM ******/ +static uint32_t gfx7_srbm_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 +}; + +/****** SX ******/ +static uint32_t gfx7_sx_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 +}; + +/****** TA ******/ +static uint32_t gfx7_ta_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110 +}; + +/****** TCA ******/ +static uint32_t gfx7_tca_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 +}; + +static uint32_t gfx8_tca_counter_ids[] = { +1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, +23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 +}; + +/****** TCC ******/ +static uint32_t gfx7_tcc_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, +81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 159 +}; + +/****** TCP ******/ +static uint32_t gfx7_tcp_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +149, 150, 151, 152, 153 +}; + +/****** TCS ******/ +static uint32_t gfx7_tcs_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 64, +65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, +85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, +104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, +120, 121, 122, 123, 124, 125, 126, 127 +}; + +/****** TD ******/ +static uint32_t gfx7_td_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 +}; + +/****** VGT ******/ +static uint32_t gfx7_vgt_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, +42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, +62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, +82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, +101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, +133, 134, 135, 136, 137, 138, 139 +}; + +/****** WD ******/ +static uint32_t gfx7_wd_counter_ids[] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 9 +}; + static struct perf_counter_block kaveri_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, @@ -136,6 +349,185 @@ static struct perf_counter_block kaveri_blocks[PERFCOUNTER_BLOCKID__MAX] = { }, }; +static struct perf_counter_block hawaii_blocks[PERFCOUNTER_BLOCKID__MAX] = { + [PERFCOUNTER_BLOCKID__CB] = { + .num_of_slots = 7, + .num_of_counters = sizeof(gfx7_cb_counter_ids) / + sizeof(*gfx7_cb_counter_ids), + .counter_ids = gfx7_cb_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__CPF] = { + .num_of_slots = 5, + .num_of_counters = sizeof(gfx7_cpf_counter_ids) / + sizeof(*gfx7_cpf_counter_ids), + .counter_ids = gfx7_cpf_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__CPG] = { + .num_of_slots = 5, + .num_of_counters = sizeof(gfx7_cpg_counter_ids) / + sizeof(*gfx7_cpg_counter_ids), + .counter_ids = gfx7_cpg_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__DB] = { + .num_of_slots = 12, + .num_of_counters = sizeof(gfx7_db_counter_ids) / + sizeof(*gfx7_db_counter_ids), + .counter_ids = gfx7_db_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__GDS] = { + .num_of_slots = 4, + .num_of_counters = sizeof(gfx7_gds_counter_ids) / + sizeof(*gfx7_gds_counter_ids), + .counter_ids = gfx7_gds_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__GRBM] = { + .num_of_slots = 2, + .num_of_counters = sizeof(gfx7_grbm_counter_ids) / + sizeof(*gfx7_grbm_counter_ids), + .counter_ids = gfx7_grbm_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__GRBMSE] = { + .num_of_slots = 1, + .num_of_counters = sizeof(gfx7_grbmse_counter_ids) / + sizeof(*gfx7_grbmse_counter_ids), + .counter_ids = gfx7_grbmse_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__IA] = { + .num_of_slots = 7, + .num_of_counters = sizeof(gfx7_ia_counter_ids) / + sizeof(*gfx7_ia_counter_ids), + .counter_ids = gfx7_ia_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__PASC] = { + .num_of_slots = 11, + .num_of_counters = sizeof(gfx7_pasc_counter_ids) / + sizeof(*gfx7_pasc_counter_ids), + .counter_ids = gfx7_pasc_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__PASU] = { + .num_of_slots = 10, + .num_of_counters = sizeof(gfx7_pasu_counter_ids) / + sizeof(*gfx7_pasu_counter_ids), + .counter_ids = gfx7_pasu_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__SPI] = { + .num_of_slots = 4, + .num_of_counters = sizeof(gfx7_spi_counter_ids) / + sizeof(*gfx7_spi_counter_ids), + .counter_ids = gfx7_spi_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__SRBM] = { + .num_of_slots = 2, + .num_of_counters = sizeof(gfx7_srbm_counter_ids) / + sizeof(*gfx7_srbm_counter_ids), + .counter_ids = gfx7_srbm_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__SQ] = { + .num_of_slots = 8, + .num_of_counters = sizeof(gfx7_sq_counter_ids) / + sizeof(*gfx7_sq_counter_ids), + .counter_ids = gfx7_sq_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__SX] = { + .num_of_slots = 4, + .num_of_counters = sizeof(gfx7_sx_counter_ids) / + sizeof(*gfx7_sx_counter_ids), + .counter_ids = gfx7_sx_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__TA] = { + .num_of_slots = 6, + .num_of_counters = sizeof(gfx7_ta_counter_ids) / + sizeof(*gfx7_ta_counter_ids), + .counter_ids = gfx7_ta_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__TCA] = { + .num_of_slots = 10, /* same as CZ */ + .num_of_counters = sizeof(gfx7_tca_counter_ids) / + sizeof(*gfx7_tca_counter_ids), + .counter_ids = gfx7_tca_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__TCC] = { + .num_of_slots = 10, + .num_of_counters = sizeof(gfx7_tcc_counter_ids) / + sizeof(*gfx7_tcc_counter_ids), + .counter_ids = gfx7_tcc_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__TCP] = { + .num_of_slots = 10, + .num_of_counters = sizeof(gfx7_tcp_counter_ids) / + sizeof(*gfx7_tcp_counter_ids), + .counter_ids = gfx7_tcp_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__TCS] = { + .num_of_slots = 7, + .num_of_counters = sizeof(gfx7_tcs_counter_ids) / + sizeof(*gfx7_tcs_counter_ids), + .counter_ids = gfx7_tcs_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__TD] = { + .num_of_slots = 6, + .num_of_counters = sizeof(gfx7_td_counter_ids) / + sizeof(*gfx7_td_counter_ids), + .counter_ids = gfx7_td_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__VGT] = { + .num_of_slots = 10, + .num_of_counters = sizeof(gfx7_vgt_counter_ids) / + sizeof(*gfx7_vgt_counter_ids), + .counter_ids = gfx7_vgt_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, + [PERFCOUNTER_BLOCKID__WD] = { + .num_of_slots = 4, + .num_of_counters = sizeof(gfx7_wd_counter_ids) / + sizeof(*gfx7_wd_counter_ids), + .counter_ids = gfx7_wd_counter_ids, + .counter_size_in_bits = 64, + .counter_mask = BITMASK(64) + }, +}; + static struct perf_counter_block carrizo_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, @@ -146,8 +538,8 @@ static struct perf_counter_block carrizo_blocks[PERFCOUNTER_BLOCKID__MAX] = { .counter_mask = BITMASK(64) }, [PERFCOUNTER_BLOCKID__TCA] = { - /* PMC0: PERF_SEL~PERF_SEL3, PMC1: PERF_SEL~PERF_SEL3, PMC2: PERF_SEL - * PMC3: PERF_SEL. So 10 PERF_SELs in total + /* PMC0: PERF_SEL~PERF_SEL3, PMC1: PERF_SEL~PERF_SEL3, + * PMC2: PERF_SEL, PMC3: PERF_SEL. So 10 PERF_SELs in total */ .num_of_slots = 10, .num_of_counters = sizeof(gfx8_tca_counter_ids) / @@ -177,25 +569,6 @@ static struct perf_counter_block fiji_blocks[PERFCOUNTER_BLOCKID__MAX] = { }, }; -static struct perf_counter_block hawaii_blocks[PERFCOUNTER_BLOCKID__MAX] = { - [PERFCOUNTER_BLOCKID__SQ] = { - .num_of_slots = 8, - .num_of_counters = sizeof(gfx7_sq_counter_ids) / - sizeof(*gfx7_sq_counter_ids), - .counter_ids = gfx7_sq_counter_ids, - .counter_size_in_bits = 64, - .counter_mask = BITMASK(64) - }, - [PERFCOUNTER_BLOCKID__TCA] = { - .num_of_slots = 10, /* same as CZ */ - .num_of_counters = sizeof(gfx7_tca_counter_ids) / - sizeof(*gfx7_tca_counter_ids), - .counter_ids = gfx7_tca_counter_ids, - .counter_size_in_bits = 64, - .counter_mask = BITMASK(64) - }, -}; - static struct perf_counter_block polaris_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, diff --git a/src/pmc_table.h b/src/pmc_table.h index c6d16ad47e..aa9d5bd0d1 100644 --- a/src/pmc_table.h +++ b/src/pmc_table.h @@ -30,8 +30,32 @@ enum perf_block_id { PERFCOUNTER_BLOCKID__FIRST = 0, - PERFCOUNTER_BLOCKID__SQ = PERFCOUNTER_BLOCKID__FIRST, + /* non-privileged */ + PERFCOUNTER_BLOCKID__CB = PERFCOUNTER_BLOCKID__FIRST, + PERFCOUNTER_BLOCKID__CPC, + PERFCOUNTER_BLOCKID__CPF, + PERFCOUNTER_BLOCKID__CPG, + PERFCOUNTER_BLOCKID__DB, + PERFCOUNTER_BLOCKID__GDS, + PERFCOUNTER_BLOCKID__GRBM, + PERFCOUNTER_BLOCKID__GRBMSE, + PERFCOUNTER_BLOCKID__IA, + PERFCOUNTER_BLOCKID__MC, + PERFCOUNTER_BLOCKID__PASC, + PERFCOUNTER_BLOCKID__PASU, + PERFCOUNTER_BLOCKID__SPI, + PERFCOUNTER_BLOCKID__SRBM, + PERFCOUNTER_BLOCKID__SQ, + PERFCOUNTER_BLOCKID__SX, + PERFCOUNTER_BLOCKID__TA, PERFCOUNTER_BLOCKID__TCA, + PERFCOUNTER_BLOCKID__TCC, + PERFCOUNTER_BLOCKID__TCP, + PERFCOUNTER_BLOCKID__TCS, + PERFCOUNTER_BLOCKID__TD, + PERFCOUNTER_BLOCKID__VGT, + PERFCOUNTER_BLOCKID__WD, + /* privileged */ PERFCOUNTER_BLOCKID__IOMMUV2, PERFCOUNTER_BLOCKID__MAX };