Loading arch/ppc64/kernel/cputable.c +13 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Power3+ */ Loading @@ -71,6 +72,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Northstar */ Loading @@ -83,6 +85,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Pulsar */ Loading @@ -95,6 +98,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* I-star */ Loading @@ -107,6 +111,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* S-star */ Loading @@ -119,6 +124,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Power4 */ Loading @@ -131,6 +137,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power4, }, { /* Power4+ */ Loading @@ -143,6 +150,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power4, }, { /* PPC970 */ Loading @@ -157,6 +165,7 @@ struct cpu_spec cpu_specs[] = { PPC_FEATURE_HAS_ALTIVEC_COMP, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_ppc970, }, { /* PPC970FX */ Loading @@ -171,6 +180,7 @@ struct cpu_spec cpu_specs[] = { PPC_FEATURE_HAS_ALTIVEC_COMP, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_ppc970, }, { /* PPC970MP */ Loading Loading @@ -199,6 +209,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, }, { /* Power5 */ Loading @@ -213,6 +224,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, }, { /* BE DD1.x */ Loading @@ -239,6 +251,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, } }; arch/ppc64/kernel/sysfs.c +29 −19 Original line number Diff line number Diff line Loading @@ -215,17 +215,22 @@ static void register_cpu_online(unsigned int cpu) if (cpu_has_feature(CPU_FTR_MMCRA)) sysdev_create_file(s, &attr_mmcra); if (cur_cpu_spec->num_pmcs >= 1) sysdev_create_file(s, &attr_pmc1); if (cur_cpu_spec->num_pmcs >= 2) sysdev_create_file(s, &attr_pmc2); if (cur_cpu_spec->num_pmcs >= 3) sysdev_create_file(s, &attr_pmc3); if (cur_cpu_spec->num_pmcs >= 4) sysdev_create_file(s, &attr_pmc4); if (cur_cpu_spec->num_pmcs >= 5) sysdev_create_file(s, &attr_pmc5); if (cur_cpu_spec->num_pmcs >= 6) sysdev_create_file(s, &attr_pmc6); if (cpu_has_feature(CPU_FTR_PMC8)) { if (cur_cpu_spec->num_pmcs >= 7) sysdev_create_file(s, &attr_pmc7); if (cur_cpu_spec->num_pmcs >= 8) sysdev_create_file(s, &attr_pmc8); } if (cpu_has_feature(CPU_FTR_SMT)) sysdev_create_file(s, &attr_purr); Loading @@ -252,17 +257,22 @@ static void unregister_cpu_online(unsigned int cpu) if (cpu_has_feature(CPU_FTR_MMCRA)) sysdev_remove_file(s, &attr_mmcra); if (cur_cpu_spec->num_pmcs >= 1) sysdev_remove_file(s, &attr_pmc1); if (cur_cpu_spec->num_pmcs >= 2) sysdev_remove_file(s, &attr_pmc2); if (cur_cpu_spec->num_pmcs >= 3) sysdev_remove_file(s, &attr_pmc3); if (cur_cpu_spec->num_pmcs >= 4) sysdev_remove_file(s, &attr_pmc4); if (cur_cpu_spec->num_pmcs >= 5) sysdev_remove_file(s, &attr_pmc5); if (cur_cpu_spec->num_pmcs >= 6) sysdev_remove_file(s, &attr_pmc6); if (cpu_has_feature(CPU_FTR_PMC8)) { if (cur_cpu_spec->num_pmcs >= 7) sysdev_remove_file(s, &attr_pmc7); if (cur_cpu_spec->num_pmcs >= 8) sysdev_remove_file(s, &attr_pmc8); } if (cpu_has_feature(CPU_FTR_SMT)) sysdev_remove_file(s, &attr_purr); Loading include/asm-ppc64/cputable.h +3 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ struct cpu_spec { unsigned int icache_bsize; unsigned int dcache_bsize; /* number of performance monitor counters */ unsigned int num_pmcs; /* this is called to initialize various CPU bits like L1 cache, * BHT, SPD, etc... from head.S before branching to identify_machine */ Loading Loading
arch/ppc64/kernel/cputable.c +13 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Power3+ */ Loading @@ -71,6 +72,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Northstar */ Loading @@ -83,6 +85,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Pulsar */ Loading @@ -95,6 +98,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* I-star */ Loading @@ -107,6 +111,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* S-star */ Loading @@ -119,6 +124,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power3, }, { /* Power4 */ Loading @@ -131,6 +137,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power4, }, { /* Power4+ */ Loading @@ -143,6 +150,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_power4, }, { /* PPC970 */ Loading @@ -157,6 +165,7 @@ struct cpu_spec cpu_specs[] = { PPC_FEATURE_HAS_ALTIVEC_COMP, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_ppc970, }, { /* PPC970FX */ Loading @@ -171,6 +180,7 @@ struct cpu_spec cpu_specs[] = { PPC_FEATURE_HAS_ALTIVEC_COMP, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 8, .cpu_setup = __setup_cpu_ppc970, }, { /* PPC970MP */ Loading Loading @@ -199,6 +209,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, }, { /* Power5 */ Loading @@ -213,6 +224,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, }, { /* BE DD1.x */ Loading @@ -239,6 +251,7 @@ struct cpu_spec cpu_specs[] = { .cpu_user_features = COMMON_USER_PPC64, .icache_bsize = 128, .dcache_bsize = 128, .num_pmcs = 6, .cpu_setup = __setup_cpu_power4, } };
arch/ppc64/kernel/sysfs.c +29 −19 Original line number Diff line number Diff line Loading @@ -215,17 +215,22 @@ static void register_cpu_online(unsigned int cpu) if (cpu_has_feature(CPU_FTR_MMCRA)) sysdev_create_file(s, &attr_mmcra); if (cur_cpu_spec->num_pmcs >= 1) sysdev_create_file(s, &attr_pmc1); if (cur_cpu_spec->num_pmcs >= 2) sysdev_create_file(s, &attr_pmc2); if (cur_cpu_spec->num_pmcs >= 3) sysdev_create_file(s, &attr_pmc3); if (cur_cpu_spec->num_pmcs >= 4) sysdev_create_file(s, &attr_pmc4); if (cur_cpu_spec->num_pmcs >= 5) sysdev_create_file(s, &attr_pmc5); if (cur_cpu_spec->num_pmcs >= 6) sysdev_create_file(s, &attr_pmc6); if (cpu_has_feature(CPU_FTR_PMC8)) { if (cur_cpu_spec->num_pmcs >= 7) sysdev_create_file(s, &attr_pmc7); if (cur_cpu_spec->num_pmcs >= 8) sysdev_create_file(s, &attr_pmc8); } if (cpu_has_feature(CPU_FTR_SMT)) sysdev_create_file(s, &attr_purr); Loading @@ -252,17 +257,22 @@ static void unregister_cpu_online(unsigned int cpu) if (cpu_has_feature(CPU_FTR_MMCRA)) sysdev_remove_file(s, &attr_mmcra); if (cur_cpu_spec->num_pmcs >= 1) sysdev_remove_file(s, &attr_pmc1); if (cur_cpu_spec->num_pmcs >= 2) sysdev_remove_file(s, &attr_pmc2); if (cur_cpu_spec->num_pmcs >= 3) sysdev_remove_file(s, &attr_pmc3); if (cur_cpu_spec->num_pmcs >= 4) sysdev_remove_file(s, &attr_pmc4); if (cur_cpu_spec->num_pmcs >= 5) sysdev_remove_file(s, &attr_pmc5); if (cur_cpu_spec->num_pmcs >= 6) sysdev_remove_file(s, &attr_pmc6); if (cpu_has_feature(CPU_FTR_PMC8)) { if (cur_cpu_spec->num_pmcs >= 7) sysdev_remove_file(s, &attr_pmc7); if (cur_cpu_spec->num_pmcs >= 8) sysdev_remove_file(s, &attr_pmc8); } if (cpu_has_feature(CPU_FTR_SMT)) sysdev_remove_file(s, &attr_purr); Loading
include/asm-ppc64/cputable.h +3 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ struct cpu_spec { unsigned int icache_bsize; unsigned int dcache_bsize; /* number of performance monitor counters */ unsigned int num_pmcs; /* this is called to initialize various CPU bits like L1 cache, * BHT, SPD, etc... from head.S before branching to identify_machine */ Loading