On Thu, Apr 15, 2021 at 4:44 AM Vaibhav Jain <vaib...@linux.ibm.com> wrote: > > Thanks for looking into this Dan, > > Dan Williams <dan.j.willi...@intel.com> writes: > > > On Wed, Apr 14, 2021 at 5:40 AM Vaibhav Jain <vaib...@linux.ibm.com> wrote: > >> > >> Currently drc_pmem_qeury_stats() generates a dev_err in case > >> "Enable Performance Information Collection" feature is disabled from > >> HMC. The error is of the form below: > >> > >> papr_scm ibm,persistent-memory:ibm,pmemory@44104001: Failed to query > >> performance stats, Err:-10 > >> > >> This error message confuses users as it implies a possible problem > >> with the nvdimm even though its due to a disabled feature. > >> > >> So we fix this by explicitly handling the H_AUTHORITY error from the > >> H_SCM_PERFORMANCE_STATS hcall and generating a warning instead of an > >> error, saying that "Performance stats in-accessible". > >> > >> Fixes: 2d02bf835e57('powerpc/papr_scm: Fetch nvdimm performance stats from > >> PHYP') > >> Signed-off-by: Vaibhav Jain <vaib...@linux.ibm.com> > >> --- > >> arch/powerpc/platforms/pseries/papr_scm.c | 3 +++ > >> 1 file changed, 3 insertions(+) > >> > >> diff --git a/arch/powerpc/platforms/pseries/papr_scm.c > >> b/arch/powerpc/platforms/pseries/papr_scm.c > >> index 835163f54244..9216424f8be3 100644 > >> --- a/arch/powerpc/platforms/pseries/papr_scm.c > >> +++ b/arch/powerpc/platforms/pseries/papr_scm.c > >> @@ -277,6 +277,9 @@ static ssize_t drc_pmem_query_stats(struct > >> papr_scm_priv *p, > >> dev_err(&p->pdev->dev, > >> "Unknown performance stats, Err:0x%016lX\n", > >> ret[0]); > >> return -ENOENT; > >> + } else if (rc == H_AUTHORITY) { > >> + dev_warn(&p->pdev->dev, "Performance stats in-accessible"); > >> + return -EPERM; > > > > So userspace can spam the kernel log? Why is kernel log message needed > > at all? EPERM told the caller what happened. > Currently this error message is only reported during probe of the > nvdimm. So userspace cannot directly spam kernel log.
Oh, ok, I saw things like papr_pdsm_fuel_gauge() in the call stack and thought this was reachable through an ioctl. Sorry for the noise.