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