From ad5c8c4844644b6e96ea34e09e8c28fa41078437 Mon Sep 17 00:00:00 2001 From: Amber Lin Date: Fri, 3 Mar 2017 11:52:28 -0500 Subject: [PATCH] Don't duplicate PMC tables Many devices have the same counter IDs for the hardware block. Devices in the same GFX generation usually have the same block counters. No need to list each device individually. Instead, have a table to share with all devices that have the same counter IDs, and have separated tables for devices that don't have the same counter IDs. Change-Id: I857056edc6f491f61af6e9598580e5dc7d372f94 [ROCm/ROCR-Runtime commit: 9e32cdb113965f5e27738ea322c07dafb63412b4] --- projects/rocr-runtime/src/pmc_table.c | 81 +++++++-------------------- 1 file changed, 20 insertions(+), 61 deletions(-) diff --git a/projects/rocr-runtime/src/pmc_table.c b/projects/rocr-runtime/src/pmc_table.c index de04230bd0..3036189131 100644 --- a/projects/rocr-runtime/src/pmc_table.c +++ b/projects/rocr-runtime/src/pmc_table.c @@ -31,7 +31,8 @@ #include "libhsakmt.h" #include "pmc_table.h" -static uint32_t kaveri_sq_counter_ids[] = { +/* 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, @@ -49,7 +50,7 @@ static uint32_t kaveri_sq_counter_ids[] = { }; /* Unused counters - 166, 292 - 297 */ -static uint32_t carrizo_sq_counter_ids[] = { +static uint32_t gfx8_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, @@ -69,49 +70,9 @@ static uint32_t carrizo_sq_counter_ids[] = { 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 298 }; -/* Unused counters - 166, 292 - 297 */ -static uint32_t fiji_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, 163, 164, 165, -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, 298 -}; - -/* Unused counters - 163 - 166, 167 and 251 are *_DUMMY_LAST */ -static uint32_t hawaii_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 -}; - -/* Polaris 10 and Polaris 11 have the same SQ cpunter IDs */ +/* 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 polaris_sq_counter_ids[] = { +static uint32_t gfx8_pl_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, @@ -135,9 +96,9 @@ static uint32_t polaris_sq_counter_ids[] = { static struct perf_counter_block kaveri_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, - .num_of_counters = sizeof(kaveri_sq_counter_ids) / - sizeof(*kaveri_sq_counter_ids), - .counter_ids = kaveri_sq_counter_ids, + .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) }, @@ -146,9 +107,9 @@ static struct perf_counter_block kaveri_blocks[PERFCOUNTER_BLOCKID__MAX] = { static struct perf_counter_block carrizo_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, - .num_of_counters = sizeof(carrizo_sq_counter_ids) / - sizeof(*carrizo_sq_counter_ids), - .counter_ids = carrizo_sq_counter_ids, + .num_of_counters = sizeof(gfx8_sq_counter_ids) / + sizeof(*gfx8_sq_counter_ids), + .counter_ids = gfx8_sq_counter_ids, .counter_size_in_bits = 64, .counter_mask = BITMASK(64) }, @@ -157,9 +118,9 @@ static struct perf_counter_block carrizo_blocks[PERFCOUNTER_BLOCKID__MAX] = { static struct perf_counter_block fiji_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, - .num_of_counters = sizeof(fiji_sq_counter_ids) / - sizeof(*fiji_sq_counter_ids), - .counter_ids = fiji_sq_counter_ids, + .num_of_counters = sizeof(gfx8_sq_counter_ids) / + sizeof(*gfx8_sq_counter_ids), + .counter_ids = gfx8_sq_counter_ids, .counter_size_in_bits = 64, .counter_mask = BITMASK(64) }, @@ -168,9 +129,9 @@ 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(hawaii_sq_counter_ids) / - sizeof(*hawaii_sq_counter_ids), - .counter_ids = hawaii_sq_counter_ids, + .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) }, @@ -179,9 +140,9 @@ static struct perf_counter_block hawaii_blocks[PERFCOUNTER_BLOCKID__MAX] = { static struct perf_counter_block polaris_blocks[PERFCOUNTER_BLOCKID__MAX] = { [PERFCOUNTER_BLOCKID__SQ] = { .num_of_slots = 8, - .num_of_counters = sizeof(polaris_sq_counter_ids) / - sizeof(*polaris_sq_counter_ids), - .counter_ids = polaris_sq_counter_ids, + .num_of_counters = sizeof(gfx8_pl_sq_counter_ids) / + sizeof(*gfx8_pl_sq_counter_ids), + .counter_ids = gfx8_pl_sq_counter_ids, .counter_size_in_bits = 64, .counter_mask = BITMASK(64) }, @@ -352,5 +313,3 @@ get_block_properties(uint32_t node_id, return HSAKMT_STATUS_SUCCESS; } - -