* [PATCH 0/1] mm: define default cpu_to_node
@ 2008-05-08 23:02 Mike Travis
2008-05-08 23:02 ` [PATCH 1/1] " Mike Travis
0 siblings, 1 reply; 4+ messages in thread
From: Mike Travis @ 2008-05-08 23:02 UTC (permalink / raw)
To: Ingo Molnar, Andrew Morton, bunk; +Cc: linux-sh, lethal, linux-kernel
The following patch is offered to resolve this problem:
| Adrian Bunk wrote:
|| Commit aa6b54461cc5c0019b9d792adf3176b444c10763
|| (asm-generic: add node_to_cpumask_ptr macro)
|| causes the following build error with migor_defconfig:
||
|| <-- snip -->
||
|| ...
|| CC arch/sh/kernel/asm-offsets.s
|| In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:8,
|| from /home/bunk/linux/kernel-2.6/git/linux-2.6/arch/sh/kernel/asm-offsets.c:13:
|| /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/gfp.h: In function 'alloc_pages_node':
|| /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/gfp.h:190:
|| error: implicit declaration of function 'cpu_to_node'
|| make[2]: *** [arch/sh/kernel/asm-offsets.s] Error 1
||
Ahh, this is what caused the error. In include/asm-generic/topology.h
cpu_to_node is only defined now if NUMA is turned off.
#ifndef CONFIG_NUMA
/* Other architectures wishing to use this simple topology API should fill
in the below functions as appropriate in their own <asm/topology.h> file. */
#ifndef cpu_to_node
#define cpu_to_node(cpu) ((void)(cpu),0)
#endif
...
So before my change arch 'sh' used the default define whether NUMA was
set or not.
An alternative would be to change all the arch's that define cpu_to_node
as an inline to:
#define cpu_to_node(cpu) _cpu_to_node(cpu)
static inline int _cpu_to_node(int cpu)
{
...
}
Then asm-generic/topology.h could define cpu_to_node if it's not already
defined.
Andrew or Ingo - do you have any preferences?
Thanks,
Mike
Signed-off-by: Mike Travis <travis@sgi.com>
# alpha
Cc: Richard Henderson <rth@twiddle.net>
# powerpc
Cc: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
# sh
Cc: Adrian Bunk <bunk@kernel.org>
Cc: lethal@linux-sh.org
Cc: linux-sh@vger.kernel.org
# sparc
Cc: David S. Miller <davem@davemloft.net>
Cc: William L. Irwin <wli@holomorphy.com>
# x86
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
---
--
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 1/1] mm: define default cpu_to_node 2008-05-08 23:02 [PATCH 0/1] mm: define default cpu_to_node Mike Travis @ 2008-05-08 23:02 ` Mike Travis 2008-05-09 5:20 ` Paul Mundt 0 siblings, 1 reply; 4+ messages in thread From: Mike Travis @ 2008-05-08 23:02 UTC (permalink / raw) To: Ingo Molnar, Andrew Morton, bunk Cc: linux-sh, lethal, linux-kernel, Richard Henderson, Paul Mackerras, Anton Blanchard, David S. Miller, William L. Irwin, H. Peter Anvin, Thomas Gleixner [-- Attachment #1: fix-cpu_to_node --] [-- Type: text/plain, Size: 3693 bytes --] * Some architectures have CONFIG_NUMA=y but do not define a default cpu_to_node macro. This provides the default in asm-generic/topology.h but it relies on the fact that cpu_to_node is a defined macro (and not an inline function). Which means that those architecutures that define cpu_to_node as a function are changed to: #define cpu_to_node(cpu) _cpu_to_node(cpu) < ... declare the _cpu_to_node(int cpu) function. ... > Based on: //git.kernel.org/pub/scm/linux/kernel/git/sfr/linux-next.git Signed-off-by: Mike Travis <travis@sgi.com> # alpha Cc: Richard Henderson <rth@twiddle.net> # powerpc Cc: Paul Mackerras <paulus@samba.org> Cc: Anton Blanchard <anton@samba.org> # sh Cc: Adrian Bunk <bunk@kernel.org> Cc: lethal@linux-sh.org Cc: linux-sh@vger.kernel.org # sparc Cc: David S. Miller <davem@davemloft.net> Cc: William L. Irwin <wli@holomorphy.com> # x86 Cc: H. Peter Anvin <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> --- include/asm-alpha/topology.h | 3 ++- include/asm-generic/topology.h | 11 ++++++++--- include/asm-powerpc/topology.h | 3 ++- include/asm-sparc64/topology.h | 3 ++- include/asm-x86/topology.h | 6 ++++-- 5 files changed, 18 insertions(+), 8 deletions(-) --- linux-2.6-next.orig/include/asm-alpha/topology.h +++ linux-2.6-next/include/asm-alpha/topology.h @@ -6,7 +6,8 @@ #include <asm/machvec.h> #ifdef CONFIG_NUMA -static inline int cpu_to_node(int cpu) +#define cpu_to_node(cpu) _cpu_to_node(cpu) +static inline int _cpu_to_node(int cpu) { int node; --- linux-2.6-next.orig/include/asm-generic/topology.h +++ linux-2.6-next/include/asm-generic/topology.h @@ -27,13 +27,18 @@ #ifndef _ASM_GENERIC_TOPOLOGY_H #define _ASM_GENERIC_TOPOLOGY_H +/* + * cpu_to_node is referenced but not defined in some arch's that + * have CONFIG_NUMA=y + */ +#ifndef cpu_to_node +#define cpu_to_node(cpu) ((void)(cpu),0) +#endif + #ifndef CONFIG_NUMA /* Other architectures wishing to use this simple topology API should fill in the below functions as appropriate in their own <asm/topology.h> file. */ -#ifndef cpu_to_node -#define cpu_to_node(cpu) ((void)(cpu),0) -#endif #ifndef parent_node #define parent_node(node) ((void)(node),0) #endif --- linux-2.6-next.orig/include/asm-powerpc/topology.h +++ linux-2.6-next/include/asm-powerpc/topology.h @@ -10,7 +10,8 @@ struct device_node; #include <asm/mmzone.h> -static inline int cpu_to_node(int cpu) +#define cpu_to_node(cpu) _cpu_to_node(cpu) +static inline int _cpu_to_node(int cpu) { return numa_cpu_lookup_table[cpu]; } --- linux-2.6-next.orig/include/asm-sparc64/topology.h +++ linux-2.6-next/include/asm-sparc64/topology.h @@ -5,7 +5,8 @@ #include <asm/mmzone.h> -static inline int cpu_to_node(int cpu) +#define cpu_to_node(cpu) _cpu_to_node(cpu) +static inline int _cpu_to_node(int cpu) { return numa_cpu_lookup_table[cpu]; } --- linux-2.6-next.orig/include/asm-x86/topology.h +++ linux-2.6-next/include/asm-x86/topology.h @@ -53,7 +53,8 @@ extern cpumask_t node_to_cpumask_map[]; /* Returns the number of the node containing CPU 'cpu' */ #ifdef CONFIG_X86_32 #define early_cpu_to_node(cpu) cpu_to_node(cpu) -static inline int cpu_to_node(int cpu) +#define cpu_to_node(cpu) _cpu_to_node(cpu) +static inline int _cpu_to_node(int cpu) { return cpu_to_node_map[cpu]; } @@ -76,7 +77,8 @@ static inline int early_cpu_to_node(int #define early_cpu_to_node(cpu) cpu_to_node(cpu) #endif -static inline int cpu_to_node(int cpu) +#define cpu_to_node(cpu) _cpu_to_node(cpu) +static inline int _cpu_to_node(int cpu) { #ifdef CONFIG_DEBUG_PER_CPU_MAPS if (x86_cpu_to_node_map_early_ptr) { -- ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] mm: define default cpu_to_node 2008-05-08 23:02 ` [PATCH 1/1] " Mike Travis @ 2008-05-09 5:20 ` Paul Mundt 2008-05-09 15:01 ` Mike Travis 0 siblings, 1 reply; 4+ messages in thread From: Paul Mundt @ 2008-05-09 5:20 UTC (permalink / raw) To: Mike Travis Cc: Ingo Molnar, Andrew Morton, bunk, linux-sh, linux-kernel, Richard Henderson, Paul Mackerras, Anton Blanchard, David S. Miller, William L. Irwin, H. Peter Anvin, Thomas Gleixner On Thu, May 08, 2008 at 04:02:39PM -0700, Mike Travis wrote: > * Some architectures have CONFIG_NUMA=y but do not define a > default cpu_to_node macro. This provides the default in > asm-generic/topology.h but it relies on the fact that > cpu_to_node is a defined macro (and not an inline function). > NACK.. This isn't going to work anyways, cpu_to_node() is just where the first build error occurs. If you do this, then parent_node() is the next one to blow up, node_to_cpumask() after that, etc, etc. For now I've just stubbed the asm-generic/topology.h definitions in to asm-sh/topology.h. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] mm: define default cpu_to_node 2008-05-09 5:20 ` Paul Mundt @ 2008-05-09 15:01 ` Mike Travis 0 siblings, 0 replies; 4+ messages in thread From: Mike Travis @ 2008-05-09 15:01 UTC (permalink / raw) To: Paul Mundt, Mike Travis, Ingo Molnar, Andrew Morton, bunk, linux-sh, linux-kernel, Richard Henderson, Paul Mackerras, Anton Blanchard, David S. Miller, William L. Irwin, H. Peter Anvin, Thomas Gleixner Paul Mundt wrote: > On Thu, May 08, 2008 at 04:02:39PM -0700, Mike Travis wrote: >> * Some architectures have CONFIG_NUMA=y but do not define a >> default cpu_to_node macro. This provides the default in >> asm-generic/topology.h but it relies on the fact that >> cpu_to_node is a defined macro (and not an inline function). >> > NACK.. This isn't going to work anyways, cpu_to_node() is just where the > first build error occurs. If you do this, then parent_node() is the next > one to blow up, node_to_cpumask() after that, etc, etc. For now I've just > stubbed the asm-generic/topology.h definitions in to asm-sh/topology.h. Ok, Thanks! I was looking at that but without being able to compile it, it was just a wild swing towards the fence... ;-) And your rationale makes sense, if an arch really has numa topology then it should define what that is. Cheers, Mike ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-05-09 15:01 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-05-08 23:02 [PATCH 0/1] mm: define default cpu_to_node Mike Travis 2008-05-08 23:02 ` [PATCH 1/1] " Mike Travis 2008-05-09 5:20 ` Paul Mundt 2008-05-09 15:01 ` Mike Travis
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox