Message ID | 20140814001422.GJ11121@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | RFC, archived |
Headers | show |
On Wed, 13 Aug 2014, Nishanth Aravamudan wrote: > +++ b/include/linux/topology.h > @@ -119,11 +119,20 @@ static inline int numa_node_id(void) > * Use the accessor functions set_numa_mem(), numa_mem_id() and cpu_to_mem(). > */ > DECLARE_PER_CPU(int, _numa_mem_); > +extern int _node_numa_mem_[MAX_NUMNODES]; Why are these variables starting with an _ ? Maybe _numa_mem was defined that way because it is typically not defined. We dont do this in other situations.
On 14.08.2014 [09:35:37 -0500], Christoph Lameter wrote: > On Wed, 13 Aug 2014, Nishanth Aravamudan wrote: > > > +++ b/include/linux/topology.h > > @@ -119,11 +119,20 @@ static inline int numa_node_id(void) > > * Use the accessor functions set_numa_mem(), numa_mem_id() and cpu_to_mem(). > > */ > > DECLARE_PER_CPU(int, _numa_mem_); > > +extern int _node_numa_mem_[MAX_NUMNODES]; > > Why are these variables starting with an _ ? > Maybe _numa_mem was defined that way because it is typically not defined. > We dont do this in other situations. That's how it was in Joonsoo's patch and I was trying to minimize the changes from his version (beyond making it compile). I can of course update it to not have a prefixing _ if that's preferred. Thanks, Nish
Hi Christoph, On 14.08.2014 [13:06:56 -0700], Nishanth Aravamudan wrote: > On 14.08.2014 [09:35:37 -0500], Christoph Lameter wrote: > > On Wed, 13 Aug 2014, Nishanth Aravamudan wrote: > > > > > +++ b/include/linux/topology.h > > > @@ -119,11 +119,20 @@ static inline int numa_node_id(void) > > > * Use the accessor functions set_numa_mem(), numa_mem_id() and cpu_to_mem(). > > > */ > > > DECLARE_PER_CPU(int, _numa_mem_); > > > +extern int _node_numa_mem_[MAX_NUMNODES]; > > > > Why are these variables starting with an _ ? > > Maybe _numa_mem was defined that way because it is typically not defined. > > We dont do this in other situations. > > That's how it was in Joonsoo's patch and I was trying to minimize the > changes from his version (beyond making it compile). I can of course > update it to not have a prefixing _ if that's preferred. Upon reflection, did you mean all of these variables? Would you rather I submitted a follow-on patch that removed the prefix _? Note that _node_numa_mem_ is also not defined if !MEMORYLESS_NODES. -Nish
diff --git a/include/linux/topology.h b/include/linux/topology.h index dda6ee521e74..909b6e43b694 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h @@ -119,11 +119,20 @@ static inline int numa_node_id(void) * Use the accessor functions set_numa_mem(), numa_mem_id() and cpu_to_mem(). */ DECLARE_PER_CPU(int, _numa_mem_); +extern int _node_numa_mem_[MAX_NUMNODES]; #ifndef set_numa_mem static inline void set_numa_mem(int node) { this_cpu_write(_numa_mem_, node); + _node_numa_mem_[numa_node_id()] = node; +} +#endif + +#ifndef node_to_mem_node +static inline int node_to_mem_node(int node) +{ + return _node_numa_mem_[node]; } #endif @@ -146,6 +155,7 @@ static inline int cpu_to_mem(int cpu) static inline void set_cpu_numa_mem(int cpu, int node) { per_cpu(_numa_mem_, cpu) = node; + _node_numa_mem_[cpu_to_node(cpu)] = node; } #endif @@ -159,6 +169,13 @@ static inline int numa_mem_id(void) } #endif +#ifndef node_to_mem_node +static inline int node_to_mem_node(int node) +{ + return node; +} +#endif + #ifndef cpu_to_mem static inline int cpu_to_mem(int cpu) { diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 18cee0d4c8a2..0883c42936d4 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -85,6 +85,7 @@ EXPORT_PER_CPU_SYMBOL(numa_node); */ DEFINE_PER_CPU(int, _numa_mem_); /* Kernel "local memory" node */ EXPORT_PER_CPU_SYMBOL(_numa_mem_); +int _node_numa_mem_[MAX_NUMNODES]; #endif /*