Lines Matching refs:blk_num

526 static bool mlxbf_pmc_valid_range(int blk_num, uint32_t offset)  in mlxbf_pmc_valid_range()  argument
529 (offset + MLXBF_PMC_REG_SIZE <= pmc->block[blk_num].blk_size)) in mlxbf_pmc_valid_range()
628 static int mlxbf_pmc_config_l3_counters(int blk_num, bool enable, bool reset) in mlxbf_pmc_config_l3_counters() argument
637 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_config_l3_counters()
643 static int mlxbf_pmc_program_l3_counter(int blk_num, uint32_t cnt_num, in mlxbf_pmc_program_l3_counter() argument
653 if (mlxbf_pmc_config_l3_counters(blk_num, false, false)) in mlxbf_pmc_program_l3_counter()
659 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_l3_counter()
664 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_l3_counter()
710 static int mlxbf_pmc_program_counter(int blk_num, uint32_t cnt_num, in mlxbf_pmc_program_counter() argument
715 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_program_counter()
719 return mlxbf_pmc_program_l3_counter(blk_num, cnt_num, evt); in mlxbf_pmc_program_counter()
736 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
750 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
761 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + in mlxbf_pmc_program_counter()
770 static int mlxbf_pmc_read_l3_counter(int blk_num, uint32_t cnt_num, in mlxbf_pmc_read_l3_counter() argument
777 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_counter()
785 status = mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_counter()
802 static int mlxbf_pmc_read_counter(int blk_num, uint32_t cnt_num, bool is_l3, in mlxbf_pmc_read_counter() argument
809 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_read_counter()
813 return mlxbf_pmc_read_l3_counter(blk_num, cnt_num, result); in mlxbf_pmc_read_counter()
817 pmc->block[blk_num].counters * MLXBF_PMC_REG_SIZE; in mlxbf_pmc_read_counter()
825 status = mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_counter()
832 return mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_counter()
837 static int mlxbf_pmc_read_l3_event(int blk_num, uint32_t cnt_num, in mlxbf_pmc_read_l3_event() argument
848 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_event()
853 pmcaddr = pmc->block[blk_num].mmio_base + in mlxbf_pmc_read_l3_event()
891 static int mlxbf_pmc_read_event(int blk_num, uint32_t cnt_num, bool is_l3, in mlxbf_pmc_read_event() argument
897 if (cnt_num >= pmc->block[blk_num].counters) in mlxbf_pmc_read_event()
901 return mlxbf_pmc_read_l3_event(blk_num, cnt_num, result); in mlxbf_pmc_read_event()
905 pmc->block[blk_num].counters * MLXBF_PMC_REG_SIZE; in mlxbf_pmc_read_event()
913 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_event()
919 if (mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_event()
932 if (mlxbf_pmc_write(pmc->block[blk_num].mmio_base + perfcfg_offset, in mlxbf_pmc_read_event()
937 if (mlxbf_pmc_read(pmc->block[blk_num].mmio_base + perfval_offset, in mlxbf_pmc_read_event()
947 static int mlxbf_pmc_read_reg(int blk_num, uint32_t offset, uint64_t *result) in mlxbf_pmc_read_reg() argument
951 if (strstr(pmc->block_name[blk_num], "ecc")) { in mlxbf_pmc_read_reg()
952 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_read_reg()
960 if (mlxbf_pmc_valid_range(blk_num, offset)) in mlxbf_pmc_read_reg()
961 return mlxbf_pmc_read(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_read_reg()
968 static int mlxbf_pmc_write_reg(int blk_num, uint32_t offset, uint64_t data) in mlxbf_pmc_write_reg() argument
970 if (strstr(pmc->block_name[blk_num], "ecc")) { in mlxbf_pmc_write_reg()
971 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_write_reg()
975 if (mlxbf_pmc_valid_range(blk_num, offset)) in mlxbf_pmc_write_reg()
976 return mlxbf_pmc_write(pmc->block[blk_num].mmio_base + offset, in mlxbf_pmc_write_reg()
988 int blk_num, cnt_num, offset; in mlxbf_pmc_counter_show() local
992 blk_num = attr_counter->nr; in mlxbf_pmc_counter_show()
995 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_counter_show()
998 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) { in mlxbf_pmc_counter_show()
999 if (mlxbf_pmc_read_counter(blk_num, cnt_num, is_l3, &value)) in mlxbf_pmc_counter_show()
1001 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) { in mlxbf_pmc_counter_show()
1002 offset = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_counter_show()
1006 if (mlxbf_pmc_read_reg(blk_num, offset, &value)) in mlxbf_pmc_counter_show()
1021 int blk_num, cnt_num, offset, err, data; in mlxbf_pmc_counter_store() local
1025 blk_num = attr_counter->nr; in mlxbf_pmc_counter_store()
1033 if (!(strstr(pmc->block_name[blk_num], "ecc")) && data) in mlxbf_pmc_counter_store()
1037 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_counter_store()
1040 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) { in mlxbf_pmc_counter_store()
1041 err = mlxbf_pmc_read_event(blk_num, cnt_num, is_l3, &evt_num); in mlxbf_pmc_counter_store()
1044 err = mlxbf_pmc_program_counter(blk_num, cnt_num, evt_num, in mlxbf_pmc_counter_store()
1048 } else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) { in mlxbf_pmc_counter_store()
1049 offset = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_counter_store()
1053 err = mlxbf_pmc_write_reg(blk_num, offset, data); in mlxbf_pmc_counter_store()
1068 int blk_num, cnt_num, err; in mlxbf_pmc_event_show() local
1073 blk_num = attr_event->nr; in mlxbf_pmc_event_show()
1076 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_event_show()
1079 err = mlxbf_pmc_read_event(blk_num, cnt_num, is_l3, &evt_num); in mlxbf_pmc_event_show()
1083 evt_name = mlxbf_pmc_get_event_name(pmc->block_name[blk_num], evt_num); in mlxbf_pmc_event_show()
1097 int blk_num, cnt_num, evt_num, err; in mlxbf_pmc_event_store() local
1100 blk_num = attr_event->nr; in mlxbf_pmc_event_store()
1104 evt_num = mlxbf_pmc_get_event_num(pmc->block_name[blk_num], in mlxbf_pmc_event_store()
1114 if (strstr(pmc->block_name[blk_num], "l3cache")) in mlxbf_pmc_event_store()
1117 err = mlxbf_pmc_program_counter(blk_num, cnt_num, evt_num, is_l3); in mlxbf_pmc_event_store()
1131 int blk_num, i, size, len = 0, ret = 0; in mlxbf_pmc_event_list_show() local
1135 blk_num = attr_event_list->nr; in mlxbf_pmc_event_list_show()
1137 events = mlxbf_pmc_event_list(pmc->block_name[blk_num], &size); in mlxbf_pmc_event_list_show()
1160 int blk_num, value; in mlxbf_pmc_enable_show() local
1162 blk_num = attr_enable->nr; in mlxbf_pmc_enable_show()
1164 if (mlxbf_pmc_readl(pmc->block[blk_num].mmio_base + in mlxbf_pmc_enable_show()
1181 int err, en, blk_num; in mlxbf_pmc_enable_store() local
1183 blk_num = attr_enable->nr; in mlxbf_pmc_enable_store()
1190 err = mlxbf_pmc_config_l3_counters(blk_num, false, false); in mlxbf_pmc_enable_store()
1194 err = mlxbf_pmc_config_l3_counters(blk_num, false, true); in mlxbf_pmc_enable_store()
1197 err = mlxbf_pmc_config_l3_counters(blk_num, true, false); in mlxbf_pmc_enable_store()
1207 static int mlxbf_pmc_init_perftype_counter(struct device *dev, int blk_num) in mlxbf_pmc_init_perftype_counter() argument
1213 attr = &pmc->block[blk_num].attr_event_list; in mlxbf_pmc_init_perftype_counter()
1216 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1218 pmc->block[blk_num].block_attr[i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1222 if (strstr(pmc->block_name[blk_num], "l3cache")) { in mlxbf_pmc_init_perftype_counter()
1223 attr = &pmc->block[blk_num].attr_enable; in mlxbf_pmc_init_perftype_counter()
1227 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1230 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1234 pmc->block[blk_num].attr_counter = devm_kcalloc( in mlxbf_pmc_init_perftype_counter()
1235 dev, pmc->block[blk_num].counters, in mlxbf_pmc_init_perftype_counter()
1237 if (!pmc->block[blk_num].attr_counter) in mlxbf_pmc_init_perftype_counter()
1240 pmc->block[blk_num].attr_event = devm_kcalloc( in mlxbf_pmc_init_perftype_counter()
1241 dev, pmc->block[blk_num].counters, in mlxbf_pmc_init_perftype_counter()
1243 if (!pmc->block[blk_num].attr_event) in mlxbf_pmc_init_perftype_counter()
1247 for (j = 0; j < pmc->block[blk_num].counters; ++j) { in mlxbf_pmc_init_perftype_counter()
1248 attr = &pmc->block[blk_num].attr_counter[j]; in mlxbf_pmc_init_perftype_counter()
1253 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1256 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1259 attr = &pmc->block[blk_num].attr_event[j]; in mlxbf_pmc_init_perftype_counter()
1264 attr->nr = blk_num; in mlxbf_pmc_init_perftype_counter()
1267 pmc->block[blk_num].block_attr[++i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_counter()
1275 static int mlxbf_pmc_init_perftype_reg(struct device *dev, int blk_num) in mlxbf_pmc_init_perftype_reg() argument
1281 events = mlxbf_pmc_event_list(pmc->block_name[blk_num], &j); in mlxbf_pmc_init_perftype_reg()
1285 pmc->block[blk_num].attr_event = devm_kcalloc( in mlxbf_pmc_init_perftype_reg()
1287 if (!pmc->block[blk_num].attr_event) in mlxbf_pmc_init_perftype_reg()
1292 attr = &pmc->block[blk_num].attr_event[j]; in mlxbf_pmc_init_perftype_reg()
1296 attr->nr = blk_num; in mlxbf_pmc_init_perftype_reg()
1299 pmc->block[blk_num].block_attr[i] = &attr->dev_attr.attr; in mlxbf_pmc_init_perftype_reg()
1308 static int mlxbf_pmc_create_groups(struct device *dev, int blk_num) in mlxbf_pmc_create_groups() argument
1313 if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_COUNTER) in mlxbf_pmc_create_groups()
1314 err = mlxbf_pmc_init_perftype_counter(dev, blk_num); in mlxbf_pmc_create_groups()
1315 else if (pmc->block[blk_num].type == MLXBF_PMC_TYPE_REGISTER) in mlxbf_pmc_create_groups()
1316 err = mlxbf_pmc_init_perftype_reg(dev, blk_num); in mlxbf_pmc_create_groups()
1324 pmc->block[blk_num].block_attr_grp.attrs = pmc->block[blk_num].block_attr; in mlxbf_pmc_create_groups()
1325 pmc->block[blk_num].block_attr_grp.name = devm_kasprintf( in mlxbf_pmc_create_groups()
1326 dev, GFP_KERNEL, pmc->block_name[blk_num]); in mlxbf_pmc_create_groups()
1327 pmc->groups[blk_num] = &pmc->block[blk_num].block_attr_grp; in mlxbf_pmc_create_groups()