Lines Matching defs:uncore

78 	void (*scan)(struct amd_uncore *uncore, unsigned int cpu);
79 int (*init)(struct amd_uncore *uncore, unsigned int cpu);
80 void (*move)(struct amd_uncore *uncore, unsigned int cpu);
81 void (*free)(struct amd_uncore *uncore, unsigned int cpu);
105 * Some uncore PMUs do not have RDPMC assignments. In such cases,
391 int amd_uncore_ctx_cid(struct amd_uncore *uncore, unsigned int cpu)
393 union amd_uncore_info *info = per_cpu_ptr(uncore->info, cpu);
398 int amd_uncore_ctx_gid(struct amd_uncore *uncore, unsigned int cpu)
400 union amd_uncore_info *info = per_cpu_ptr(uncore->info, cpu);
405 int amd_uncore_ctx_num_pmcs(struct amd_uncore *uncore, unsigned int cpu)
407 union amd_uncore_info *info = per_cpu_ptr(uncore->info, cpu);
411 static void amd_uncore_ctx_free(struct amd_uncore *uncore, unsigned int cpu)
417 if (!uncore->init_done)
420 for (i = 0; i < uncore->num_pmus; i++) {
421 pmu = &uncore->pmus[i];
438 static int amd_uncore_ctx_init(struct amd_uncore *uncore, unsigned int cpu)
444 if (!uncore->init_done || !uncore->num_pmus)
447 cid = amd_uncore_ctx_cid(uncore, cpu);
448 gid = amd_uncore_ctx_gid(uncore, cpu);
450 for (i = 0; i < uncore->num_pmus; i++) {
451 pmu = &uncore->pmus[i];
468 if (cid == amd_uncore_ctx_cid(uncore, j)) {
500 amd_uncore_ctx_free(uncore, cpu);
505 static void amd_uncore_ctx_move(struct amd_uncore *uncore, unsigned int cpu)
511 if (!uncore->init_done)
514 for (i = 0; i < uncore->num_pmus; i++) {
515 pmu = &uncore->pmus[i];
539 struct amd_uncore *uncore;
543 uncore = &uncores[i];
544 uncore->scan(uncore, cpu);
552 struct amd_uncore *uncore;
556 uncore = &uncores[i];
557 if (uncore->init(uncore, cpu))
566 struct amd_uncore *uncore;
570 uncore = &uncores[i];
571 uncore->move(uncore, cpu);
579 struct amd_uncore *uncore;
583 uncore = &uncores[i];
584 uncore->free(uncore, cpu);
631 void amd_uncore_df_ctx_scan(struct amd_uncore *uncore, unsigned int cpu)
649 *per_cpu_ptr(uncore->info, cpu) = info;
653 int amd_uncore_df_ctx_init(struct amd_uncore *uncore, unsigned int cpu)
659 if (uncore->init_done)
660 return amd_uncore_ctx_init(uncore, cpu);
663 uncore->pmus = kzalloc(sizeof(*uncore->pmus), GFP_KERNEL);
664 if (!uncore->pmus) {
665 uncore->num_pmus = 0;
674 pmu = &uncore->pmus[0];
677 pmu->num_counters = amd_uncore_ctx_num_pmcs(uncore, cpu);
680 pmu->group = amd_uncore_ctx_gid(uncore, cpu);
717 uncore->num_pmus = 1;
720 uncore->init_done = true;
722 return amd_uncore_ctx_init(uncore, cpu);
765 void amd_uncore_l3_ctx_scan(struct amd_uncore *uncore, unsigned int cpu)
780 *per_cpu_ptr(uncore->info, cpu) = info;
784 int amd_uncore_l3_ctx_init(struct amd_uncore *uncore, unsigned int cpu)
790 if (uncore->init_done)
791 return amd_uncore_ctx_init(uncore, cpu);
794 uncore->pmus = kzalloc(sizeof(*uncore->pmus), GFP_KERNEL);
795 if (!uncore->pmus) {
796 uncore->num_pmus = 0;
805 pmu = &uncore->pmus[0];
808 pmu->num_counters = amd_uncore_ctx_num_pmcs(uncore, cpu);
811 pmu->group = amd_uncore_ctx_gid(uncore, cpu);
850 uncore->num_pmus = 1;
853 uncore->init_done = true;
855 return amd_uncore_ctx_init(uncore, cpu);
884 void amd_uncore_umc_ctx_scan(struct amd_uncore *uncore, unsigned int cpu)
898 *per_cpu_ptr(uncore->info, cpu) = info;
902 int amd_uncore_umc_ctx_init(struct amd_uncore *uncore, unsigned int cpu)
915 if (uncore->init_done)
916 return amd_uncore_ctx_init(uncore, cpu);
920 info = *per_cpu_ptr(uncore->info, i);
928 uncore->num_pmus += group_num_pmus[gid];
931 uncore->pmus = kzalloc(sizeof(*uncore->pmus) * uncore->num_pmus,
933 if (!uncore->pmus) {
934 uncore->num_pmus = 0;
940 pmu = &uncore->pmus[index];
979 uncore->num_pmus = index;
980 uncore->init_done = true;
982 return amd_uncore_ctx_init(uncore, cpu);
1011 struct amd_uncore *uncore;
1026 uncore = &uncores[i];
1028 BUG_ON(!uncore->scan);
1029 BUG_ON(!uncore->init);
1030 BUG_ON(!uncore->move);
1031 BUG_ON(!uncore->free);
1033 uncore->info = alloc_percpu(union amd_uncore_info);
1034 if (!uncore->info) {
1044 "perf/x86/amd/uncore:prepare",
1050 "perf/x86/amd/uncore:starting",
1056 "perf/x86/amd/uncore:online",
1070 uncore = &uncores[i];
1071 if (uncore->info) {
1072 free_percpu(uncore->info);
1073 uncore->info = NULL;
1082 struct amd_uncore *uncore;
1091 uncore = &uncores[i];
1092 if (!uncore->info)
1095 free_percpu(uncore->info);
1096 uncore->info = NULL;
1098 for (j = 0; j < uncore->num_pmus; j++) {
1099 pmu = &uncore->pmus[j];
1108 kfree(uncore->pmus);
1109 uncore->pmus = NULL;