<html><body><p><tt><font size="2">"Kajol Jain" <kjain@linux.ibm.com> wrote on 14/02/2020 01:36:06 PM:<br><br>> From: "Kajol Jain" <kjain@linux.ibm.com></font></tt><br><tt><font size="2">> To: linuxppc-dev@lists.ozlabs.org, mpe@ellerman.id.au</font></tt><br><tt><font size="2">> Cc: maddy@linux.vnet.ibm.com, anju@linux.vnet.ibm.com, Nageswara R <br>> Sastry/India/IBM@IBMIN, kjain@linux.ibm.com</font></tt><br><tt><font size="2">> Date: 14/02/2020 01:36 PM</font></tt><br><tt><font size="2">> Subject: [PATCH 2/2] powerpc/kernel/sysfs: Add new config option <br>> PMU_SYSFS to enable PMU SPRs sysfs file creation</font></tt><br><tt><font size="2">> <br>> Many of the performance monitoring unit (PMU) SPRs are<br>> exposed in the sysfs. This may not be a desirable since<br>> "perf" API is the primary interface to program PMU and<br>> collect counter data in the system. But that said, we<br>> cant remove these sysfs files since we dont whether<br>> anyone/anything is using them.<br>> <br>> So the patch adds a new CONFIG option 'CONFIG_PMU_SYSFS'<br>> (user selectable) to be used in sysfs file creation for<br>> PMU SPRs. New option by default is disabled, but can be<br>> enabled if user needs it.<br>> <br>> Tested this patch behaviour in powernv and pseries machines.<br>> Patch is also tested for pmac32_defconfig.<br>> <br>> Signed-off-by: Kajol Jain <kjain@linux.ibm.com></font></tt><br><br><tt><font size="2">Tested-by: Nageswara R Sastry <nasastry@in.ibm.com><br><br>Tested on PowerVM, PowerNV machines with and with out CONFIG_PMU_SYSFS</font></tt><br><tt><font size="2">With CONFIG_PMU_SYSFS=y<br>    For online CPUs can see the SPR files namely mmcr*, pmc*<br>With CONFIG_PMU_SYSFS=n<br>    Not seeing the SPR files<br></font></tt><br><tt><font size="2"><br>> ---<br>>  arch/powerpc/kernel/sysfs.c            | 6 ++++++<br>>  arch/powerpc/platforms/Kconfig.cputype | 6 ++++++<br>>  2 files changed, 12 insertions(+)<br>> <br>> diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c<br>> index 74da5eb..cd807e8 100644<br>> --- a/arch/powerpc/kernel/sysfs.c<br>> +++ b/arch/powerpc/kernel/sysfs.c<br>> @@ -562,6 +562,7 @@ void ppc_enable_pmcs(void)<br>>   * that are implemented on the current processor<br>>   */<br>>  <br>> +#ifdef CONFIG_PMU_SYSFS<br>>  #if defined(CONFIG_PPC64) || defined(CONFIG_PPC_BOOK3S_32)<br>>  #define HAS_PPC_PMC_CLASSIC   1<br>>  #define HAS_PPC_PMC_IBM      1<br>> @@ -575,6 +576,7 @@ void ppc_enable_pmcs(void)<br>>  #ifdef CONFIG_PPC_BOOK3S_32<br>>  #define HAS_PPC_PMC_G4      1<br>>  #endif<br>> +#endif /* CONFIG_PMU_SYSFS */<br>>  <br>>  #if defined(CONFIG_PPC64) && defined(CONFIG_DEBUG_MISC)<br>>  #define HAS_PPC_PA6T<br>> @@ -812,8 +814,10 @@ static int register_cpu_online(unsigned int cpu)<br>>           device_create_file(s, &pmc_attrs[i]);<br>>  <br>>  #ifdef CONFIG_PPC64<br>> +#ifdef   CONFIG_PMU_SYSFS<br>>     if (cpu_has_feature(CPU_FTR_MMCRA))<br>>        device_create_file(s, &dev_attr_mmcra);<br>> +#endif /* CONFIG_PMU_SYSFS */<br>>  <br>>     if (cpu_has_feature(CPU_FTR_PURR)) {<br>>        if (!firmware_has_feature(FW_FEATURE_LPAR))<br>> @@ -901,8 +905,10 @@ static int unregister_cpu_online(unsigned int cpu)<br>>           device_remove_file(s, &pmc_attrs[i]);<br>>  <br>>  #ifdef CONFIG_PPC64<br>> +#ifdef CONFIG_PMU_SYSFS<br>>     if (cpu_has_feature(CPU_FTR_MMCRA))<br>>        device_remove_file(s, &dev_attr_mmcra);<br>> +#endif /* CONFIG_PMU_SYSFS */<br>>  <br>>     if (cpu_has_feature(CPU_FTR_PURR))<br>>        device_remove_file(s, &dev_attr_purr);<br>> diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/<br>> platforms/Kconfig.cputype<br>> index 8d7f9c3..e58b48d 100644<br>> --- a/arch/powerpc/platforms/Kconfig.cputype<br>> +++ b/arch/powerpc/platforms/Kconfig.cputype<br>> @@ -417,6 +417,12 @@ config PPC_MM_SLICES<br>>  config PPC_HAVE_PMU_SUPPORT<br>>     bool<br>>  <br>> +config PMU_SYSFS<br>> +   bool "Create PMU SPRs sysfs file"<br>> +   default n<br>> +   help<br>> +     This option enables sysfs file creation for PMU SPRs like <br>> MMCR* and PMC*.<br>> +<br>>  config PPC_PERF_CTRS<br>>     def_bool y<br>>     depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT<br>> -- <br>> 1.8.3.1<br>> <br></font></tt><BR>
</body></html>