Thread (15 messages) 15 messages, 4 authors, 2022-02-25

Re: [PATCH v6 0/4] Add perf interface to expose nvdimm

From: kajoljain <hidden>
Date: 2022-02-25 08:40:25
Also in: lkml, nvdimm


On 2/25/22 13:17, Aneesh Kumar K V wrote:
On Fri, 2022-02-25 at 12:08 +0530, kajoljain wrote:
quoted

On 2/25/22 11:25, Nageswara Sastry wrote:
quoted

On 17/02/22 10:03 pm, Kajol Jain wrote:
quoted
....
quoted
quoted
quoted
Changelog
Tested these patches with the automated tests at
avocado-misc-tests/perf/perf_nmem.py
URL:
https://github.com/avocado-framework-tests/avocado-misc-tests/blob/master/perf/perf_nmem.py


1. On the system where target id and online id were different then
not
seeing value in 'cpumask' and those tests failed.

Example:
Log from dmesg
...
papr_scm ibm,persistent-memory:ibm,pmemory@44100003: Region
registered
with target node 1 and online node 0
...
Hi Nageswara Sastry,
       Thanks for testing the patch set. Yes you right, incase target
node id and online node id is different, it can happen when target
node is not online and hence can cause this issue, thanks for
pointing
it.

Function dev_to_node will return node id for a given nvdimm device
which
can be offline in some scenarios. We should use numa node id return
by
numa_map_to_online_node function in that scenario. This function
incase
given node is offline, it will lookup for next closest online node
and
return that nodeid.

Can you try with below change and see, if you are still getting this
issue. Please let me know.
diff --git a/arch/powerpc/platforms/pseries/papr_scm.c
b/arch/powerpc/platforms/pseries/papr_scm.c
index bdf2620db461..4dd513d7c029 100644
--- a/arch/powerpc/platforms/pseries/papr_scm.c
+++ b/arch/powerpc/platforms/pseries/papr_scm.c
@@ -536,7 +536,7 @@ static void papr_scm_pmu_register(struct
papr_scm_priv *p)
                                PERF_PMU_CAP_NO_EXCLUDE;

        /*updating the cpumask variable */
-       nodeid = dev_to_node(&p->pdev->dev);
+       nodeid = numa_map_to_online_node(dev_to_node(&p->pdev->dev));
        nd_pmu->arch_cpumask = *cpumask_of_node(nodeid);
quoted
Can you use p->region->numa_node? 
Hi Aneesh,
      Thanks for reviewing the changes. Actually we can't use numa_node
field of region structure directly inside papr_scm.c as we will get
dereferencing issue

Result of build with this change:

arch/powerpc/platforms/pseries/papr_scm.c: In function
'papr_scm_pmu_register':
arch/powerpc/platforms/pseries/papr_scm.c:539:21: error: dereferencing
pointer to incomplete type 'struct nd_region'
  nodeid = &p->region->numa_node;
                     ^~
make[3]: *** [scripts/Makefile.build:288:
arch/powerpc/platforms/pseries/papr_scm.o] Error 1
make[2]: *** [scripts/Makefile.build:550:
arch/powerpc/platforms/pseries] Erro

This is because, this structure is defined inside drivers/nvdimm/nd.h
code which is not included in this file.

So, thats why I am using
`numa_map_to_online_node(dev_to_node(&p->pdev->dev));` directly.

Let me know if you are ok with initial change.

Thanks,
Kajol Jain
-aneesh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help