radeonsi: constify a bunch of the perfcounter structs.

This moves the structs from the data segment to the rodata segment,
which seems like the more correct place for them.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie
2017-05-03 08:40:41 +10:00
parent ad282c0b9e
commit 7088b655e8
3 changed files with 46 additions and 52 deletions
@@ -603,7 +603,7 @@ void r600_perfcounters_add_block(struct r600_common_screen *rscreen,
struct r600_perfcounters *pc, struct r600_perfcounters *pc,
const char *name, unsigned flags, const char *name, unsigned flags,
unsigned counters, unsigned selectors, unsigned counters, unsigned selectors,
unsigned instances, void *data) unsigned instances, const void *data)
{ {
struct r600_perfcounter_block *block = &pc->blocks[pc->num_blocks]; struct r600_perfcounter_block *block = &pc->blocks[pc->num_blocks];
+2 -2
View File
@@ -243,7 +243,7 @@ struct r600_perfcounter_block {
char *selector_names; char *selector_names;
unsigned selector_name_stride; unsigned selector_name_stride;
void *data; const void *data;
}; };
struct r600_perfcounters { struct r600_perfcounters {
@@ -301,7 +301,7 @@ void r600_perfcounters_add_block(struct r600_common_screen *,
struct r600_perfcounters *, struct r600_perfcounters *,
const char *name, unsigned flags, const char *name, unsigned flags,
unsigned counters, unsigned selectors, unsigned counters, unsigned selectors,
unsigned instances, void *data); unsigned instances, const void *data);
void r600_perfcounters_do_destroy(struct r600_perfcounters *); void r600_perfcounters_do_destroy(struct r600_perfcounters *);
void r600_query_hw_reset_buffers(struct r600_common_context *rctx, void r600_query_hw_reset_buffers(struct r600_common_context *rctx,
struct r600_query_hw *query); struct r600_query_hw *query);
+43 -49
View File
@@ -60,22 +60,22 @@ enum si_pc_reg_layout {
}; };
struct si_pc_block_base { struct si_pc_block_base {
const char *name; char name[8];
unsigned num_counters; unsigned num_counters;
unsigned flags; unsigned flags;
unsigned select_or; unsigned select_or;
unsigned select0; unsigned select0;
unsigned counter0_lo; unsigned counter0_lo;
unsigned *select; unsigned select[4];
unsigned *counters; unsigned counters[4];
unsigned num_multi; unsigned num_multi;
unsigned num_prelude; unsigned num_prelude;
unsigned layout; unsigned layout;
}; };
struct si_pc_block { struct si_pc_block {
struct si_pc_block_base *b; const struct si_pc_block_base *b;
unsigned selectors; unsigned selectors;
unsigned instances; unsigned instances;
}; };
@@ -98,7 +98,7 @@ static const unsigned si_pc_shader_type_bits[] = {
S_036780_CS_EN(1), S_036780_CS_EN(1),
}; };
static struct si_pc_block_base cik_CB = { static const struct si_pc_block_base cik_CB = {
.name = "CB", .name = "CB",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS, .flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS,
@@ -110,22 +110,19 @@ static struct si_pc_block_base cik_CB = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static unsigned cik_CPC_select[] = { static const struct si_pc_block_base cik_CPC = {
R_036024_CPC_PERFCOUNTER0_SELECT,
R_036010_CPC_PERFCOUNTER0_SELECT1,
R_03600C_CPC_PERFCOUNTER1_SELECT,
};
static struct si_pc_block_base cik_CPC = {
.name = "CPC", .name = "CPC",
.num_counters = 2, .num_counters = 2,
.select = cik_CPC_select, .select = { R_036024_CPC_PERFCOUNTER0_SELECT,
R_036010_CPC_PERFCOUNTER0_SELECT1,
R_03600C_CPC_PERFCOUNTER1_SELECT },
.counter0_lo = R_034018_CPC_PERFCOUNTER0_LO, .counter0_lo = R_034018_CPC_PERFCOUNTER0_LO,
.num_multi = 1, .num_multi = 1,
.layout = SI_PC_MULTI_CUSTOM | SI_PC_REG_REVERSE, .layout = SI_PC_MULTI_CUSTOM | SI_PC_REG_REVERSE,
}; };
static struct si_pc_block_base cik_CPF = { static const struct si_pc_block_base cik_CPF = {
.name = "CPF", .name = "CPF",
.num_counters = 2, .num_counters = 2,
@@ -135,7 +132,7 @@ static struct si_pc_block_base cik_CPF = {
.layout = SI_PC_MULTI_ALTERNATE | SI_PC_REG_REVERSE, .layout = SI_PC_MULTI_ALTERNATE | SI_PC_REG_REVERSE,
}; };
static struct si_pc_block_base cik_CPG = { static const struct si_pc_block_base cik_CPG = {
.name = "CPG", .name = "CPG",
.num_counters = 2, .num_counters = 2,
@@ -145,7 +142,7 @@ static struct si_pc_block_base cik_CPG = {
.layout = SI_PC_MULTI_ALTERNATE | SI_PC_REG_REVERSE, .layout = SI_PC_MULTI_ALTERNATE | SI_PC_REG_REVERSE,
}; };
static struct si_pc_block_base cik_DB = { static const struct si_pc_block_base cik_DB = {
.name = "DB", .name = "DB",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS, .flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS,
@@ -156,7 +153,7 @@ static struct si_pc_block_base cik_DB = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_GDS = { static const struct si_pc_block_base cik_GDS = {
.name = "GDS", .name = "GDS",
.num_counters = 4, .num_counters = 4,
@@ -166,19 +163,16 @@ static struct si_pc_block_base cik_GDS = {
.layout = SI_PC_MULTI_TAIL, .layout = SI_PC_MULTI_TAIL,
}; };
static unsigned cik_GRBM_counters[] = { static const struct si_pc_block_base cik_GRBM = {
R_034100_GRBM_PERFCOUNTER0_LO,
R_03410C_GRBM_PERFCOUNTER1_LO,
};
static struct si_pc_block_base cik_GRBM = {
.name = "GRBM", .name = "GRBM",
.num_counters = 2, .num_counters = 2,
.select0 = R_036100_GRBM_PERFCOUNTER0_SELECT, .select0 = R_036100_GRBM_PERFCOUNTER0_SELECT,
.counters = cik_GRBM_counters, .counters = { R_034100_GRBM_PERFCOUNTER0_LO,
R_03410C_GRBM_PERFCOUNTER1_LO },
}; };
static struct si_pc_block_base cik_GRBMSE = { static const struct si_pc_block_base cik_GRBMSE = {
.name = "GRBMSE", .name = "GRBMSE",
.num_counters = 4, .num_counters = 4,
@@ -186,7 +180,7 @@ static struct si_pc_block_base cik_GRBMSE = {
.counter0_lo = R_034114_GRBM_SE0_PERFCOUNTER_LO, .counter0_lo = R_034114_GRBM_SE0_PERFCOUNTER_LO,
}; };
static struct si_pc_block_base cik_IA = { static const struct si_pc_block_base cik_IA = {
.name = "IA", .name = "IA",
.num_counters = 4, .num_counters = 4,
@@ -196,7 +190,7 @@ static struct si_pc_block_base cik_IA = {
.layout = SI_PC_MULTI_TAIL, .layout = SI_PC_MULTI_TAIL,
}; };
static struct si_pc_block_base cik_PA_SC = { static const struct si_pc_block_base cik_PA_SC = {
.name = "PA_SC", .name = "PA_SC",
.num_counters = 8, .num_counters = 8,
.flags = R600_PC_BLOCK_SE, .flags = R600_PC_BLOCK_SE,
@@ -208,7 +202,7 @@ static struct si_pc_block_base cik_PA_SC = {
}; };
/* According to docs, PA_SU counters are only 48 bits wide. */ /* According to docs, PA_SU counters are only 48 bits wide. */
static struct si_pc_block_base cik_PA_SU = { static const struct si_pc_block_base cik_PA_SU = {
.name = "PA_SU", .name = "PA_SU",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_SE, .flags = R600_PC_BLOCK_SE,
@@ -219,7 +213,7 @@ static struct si_pc_block_base cik_PA_SU = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_SPI = { static const struct si_pc_block_base cik_SPI = {
.name = "SPI", .name = "SPI",
.num_counters = 6, .num_counters = 6,
.flags = R600_PC_BLOCK_SE, .flags = R600_PC_BLOCK_SE,
@@ -230,7 +224,7 @@ static struct si_pc_block_base cik_SPI = {
.layout = SI_PC_MULTI_BLOCK, .layout = SI_PC_MULTI_BLOCK,
}; };
static struct si_pc_block_base cik_SQ = { static const struct si_pc_block_base cik_SQ = {
.name = "SQ", .name = "SQ",
.num_counters = 16, .num_counters = 16,
.flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_SHADER, .flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_SHADER,
@@ -242,7 +236,7 @@ static struct si_pc_block_base cik_SQ = {
.counter0_lo = R_034700_SQ_PERFCOUNTER0_LO, .counter0_lo = R_034700_SQ_PERFCOUNTER0_LO,
}; };
static struct si_pc_block_base cik_SX = { static const struct si_pc_block_base cik_SX = {
.name = "SX", .name = "SX",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_SE, .flags = R600_PC_BLOCK_SE,
@@ -253,7 +247,7 @@ static struct si_pc_block_base cik_SX = {
.layout = SI_PC_MULTI_TAIL, .layout = SI_PC_MULTI_TAIL,
}; };
static struct si_pc_block_base cik_TA = { static const struct si_pc_block_base cik_TA = {
.name = "TA", .name = "TA",
.num_counters = 2, .num_counters = 2,
.flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS | R600_PC_BLOCK_SHADER_WINDOWED, .flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS | R600_PC_BLOCK_SHADER_WINDOWED,
@@ -264,7 +258,7 @@ static struct si_pc_block_base cik_TA = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_TD = { static const struct si_pc_block_base cik_TD = {
.name = "TD", .name = "TD",
.num_counters = 2, .num_counters = 2,
.flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS | R600_PC_BLOCK_SHADER_WINDOWED, .flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS | R600_PC_BLOCK_SHADER_WINDOWED,
@@ -275,7 +269,7 @@ static struct si_pc_block_base cik_TD = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_TCA = { static const struct si_pc_block_base cik_TCA = {
.name = "TCA", .name = "TCA",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_INSTANCE_GROUPS, .flags = R600_PC_BLOCK_INSTANCE_GROUPS,
@@ -286,7 +280,7 @@ static struct si_pc_block_base cik_TCA = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_TCC = { static const struct si_pc_block_base cik_TCC = {
.name = "TCC", .name = "TCC",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_INSTANCE_GROUPS, .flags = R600_PC_BLOCK_INSTANCE_GROUPS,
@@ -297,7 +291,7 @@ static struct si_pc_block_base cik_TCC = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_TCP = { static const struct si_pc_block_base cik_TCP = {
.name = "TCP", .name = "TCP",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS | R600_PC_BLOCK_SHADER_WINDOWED, .flags = R600_PC_BLOCK_SE | R600_PC_BLOCK_INSTANCE_GROUPS | R600_PC_BLOCK_SHADER_WINDOWED,
@@ -308,7 +302,7 @@ static struct si_pc_block_base cik_TCP = {
.layout = SI_PC_MULTI_ALTERNATE, .layout = SI_PC_MULTI_ALTERNATE,
}; };
static struct si_pc_block_base cik_VGT = { static const struct si_pc_block_base cik_VGT = (const struct si_pc_block_base) {
.name = "VGT", .name = "VGT",
.num_counters = 4, .num_counters = 4,
.flags = R600_PC_BLOCK_SE, .flags = R600_PC_BLOCK_SE,
@@ -319,7 +313,7 @@ static struct si_pc_block_base cik_VGT = {
.layout = SI_PC_MULTI_TAIL, .layout = SI_PC_MULTI_TAIL,
}; };
static struct si_pc_block_base cik_WD = { static const struct si_pc_block_base cik_WD = {
.name = "WD", .name = "WD",
.num_counters = 4, .num_counters = 4,
@@ -327,14 +321,14 @@ static struct si_pc_block_base cik_WD = {
.counter0_lo = R_034200_WD_PERFCOUNTER0_LO, .counter0_lo = R_034200_WD_PERFCOUNTER0_LO,
}; };
static struct si_pc_block_base cik_MC = { static const struct si_pc_block_base cik_MC = {
.name = "MC", .name = "MC",
.num_counters = 4, .num_counters = 4,
.layout = SI_PC_FAKE, .layout = SI_PC_FAKE,
}; };
static struct si_pc_block_base cik_SRBM = { static const struct si_pc_block_base cik_SRBM = {
.name = "SRBM", .name = "SRBM",
.num_counters = 2, .num_counters = 2,
@@ -349,7 +343,7 @@ static struct si_pc_block_base cik_SRBM = {
* blindly once it believes it has identified the hardware, so the order of * blindly once it believes it has identified the hardware, so the order of
* blocks here matters. * blocks here matters.
*/ */
static struct si_pc_block groups_CIK[] = { static const struct si_pc_block groups_CIK[] = {
{ &cik_CB, 226, 4 }, { &cik_CB, 226, 4 },
{ &cik_CPF, 17 }, { &cik_CPF, 17 },
{ &cik_DB, 257, 4 }, { &cik_DB, 257, 4 },
@@ -376,7 +370,7 @@ static struct si_pc_block groups_CIK[] = {
}; };
static struct si_pc_block groups_VI[] = { static const struct si_pc_block groups_VI[] = {
{ &cik_CB, 396, 4 }, { &cik_CB, 396, 4 },
{ &cik_CPF, 19 }, { &cik_CPF, 19 },
{ &cik_DB, 257, 4 }, { &cik_DB, 257, 4 },
@@ -407,8 +401,8 @@ static void si_pc_get_size(struct r600_perfcounter_block *group,
unsigned count, unsigned *selectors, unsigned count, unsigned *selectors,
unsigned *num_select_dw, unsigned *num_read_dw) unsigned *num_select_dw, unsigned *num_read_dw)
{ {
struct si_pc_block *sigroup = (struct si_pc_block *)group->data; const struct si_pc_block *sigroup = (const struct si_pc_block *)group->data;
struct si_pc_block_base *regs = sigroup->b; const struct si_pc_block_base *regs = sigroup->b;
unsigned layout_multi = regs->layout & SI_PC_MULTI_MASK; unsigned layout_multi = regs->layout & SI_PC_MULTI_MASK;
if (regs->layout & SI_PC_FAKE) { if (regs->layout & SI_PC_FAKE) {
@@ -467,8 +461,8 @@ static void si_pc_emit_select(struct r600_common_context *ctx,
struct r600_perfcounter_block *group, struct r600_perfcounter_block *group,
unsigned count, unsigned *selectors) unsigned count, unsigned *selectors)
{ {
struct si_pc_block *sigroup = (struct si_pc_block *)group->data; const struct si_pc_block *sigroup = (const struct si_pc_block *)group->data;
struct si_pc_block_base *regs = sigroup->b; const struct si_pc_block_base *regs = sigroup->b;
struct radeon_winsys_cs *cs = ctx->gfx.cs; struct radeon_winsys_cs *cs = ctx->gfx.cs;
unsigned idx; unsigned idx;
unsigned layout_multi = regs->layout & SI_PC_MULTI_MASK; unsigned layout_multi = regs->layout & SI_PC_MULTI_MASK;
@@ -521,7 +515,7 @@ static void si_pc_emit_select(struct r600_common_context *ctx,
for (idx = 0; idx < select1_count; ++idx) for (idx = 0; idx < select1_count; ++idx)
radeon_emit(cs, 0); radeon_emit(cs, 0);
} else if (layout_multi == SI_PC_MULTI_CUSTOM) { } else if (layout_multi == SI_PC_MULTI_CUSTOM) {
unsigned *reg = regs->select; const unsigned *reg = regs->select;
for (idx = 0; idx < count; ++idx) { for (idx = 0; idx < count; ++idx) {
radeon_set_uconfig_reg(cs, *reg++, selectors[idx] | regs->select_or); radeon_set_uconfig_reg(cs, *reg++, selectors[idx] | regs->select_or);
if (idx < regs->num_multi) if (idx < regs->num_multi)
@@ -608,8 +602,8 @@ static void si_pc_emit_read(struct r600_common_context *ctx,
unsigned count, unsigned *selectors, unsigned count, unsigned *selectors,
struct r600_resource *buffer, uint64_t va) struct r600_resource *buffer, uint64_t va)
{ {
struct si_pc_block *sigroup = (struct si_pc_block *)group->data; const struct si_pc_block *sigroup = (const struct si_pc_block *)group->data;
struct si_pc_block_base *regs = sigroup->b; const struct si_pc_block_base *regs = sigroup->b;
struct radeon_winsys_cs *cs = ctx->gfx.cs; struct radeon_winsys_cs *cs = ctx->gfx.cs;
unsigned idx; unsigned idx;
unsigned reg = regs->counter0_lo; unsigned reg = regs->counter0_lo;
@@ -658,7 +652,7 @@ static void si_pc_cleanup(struct r600_common_screen *rscreen)
void si_init_perfcounters(struct si_screen *screen) void si_init_perfcounters(struct si_screen *screen)
{ {
struct r600_perfcounters *pc; struct r600_perfcounters *pc;
struct si_pc_block *blocks; const struct si_pc_block *blocks;
unsigned num_blocks; unsigned num_blocks;
unsigned i; unsigned i;
@@ -710,7 +704,7 @@ void si_init_perfcounters(struct si_screen *screen)
goto error; goto error;
for (i = 0; i < num_blocks; ++i) { for (i = 0; i < num_blocks; ++i) {
struct si_pc_block *block = &blocks[i]; const struct si_pc_block *block = &blocks[i];
unsigned instances = block->instances; unsigned instances = block->instances;
if (!strcmp(block->b->name, "IA")) { if (!strcmp(block->b->name, "IA")) {