Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753833AbYJCRzD (ORCPT ); Fri, 3 Oct 2008 13:55:03 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752099AbYJCRyx (ORCPT ); Fri, 3 Oct 2008 13:54:53 -0400 Received: from hrndva-omtalb.mail.rr.com ([71.74.56.124]:34977 "EHLO hrndva-omtalb.mail.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751781AbYJCRyx (ORCPT ); Fri, 3 Oct 2008 13:54:53 -0400 Date: Fri, 3 Oct 2008 13:54:49 -0400 (EDT) From: Steven Rostedt X-X-Sender: rostedt@gandalf.stny.rr.com To: Mathieu Desnoyers cc: colpatch@us.ibm.com, Ingo Molnar , Linus Torvalds , Peter Zijlstra , Jonathan Corbet , LKML , Thomas Gleixner , Andrew Morton , prasad@linux.vnet.ibm.com, "Frank Ch. Eigler" , David Wilder , hch@lst.de, Martin Bligh , Christoph Hellwig , Masami Hiramatsu , Steven Rostedt , Arnaldo Carvalho de Melo Subject: Re: [PATCH] x86 Topology cpu_to_node parameter check In-Reply-To: <20081003172143.GA7733@Krystal> Message-ID: References: <20081002085030.GF26084@elte.hu> <20081002085145.GA3202@elte.hu> <20081002090517.GA8708@elte.hu> <20081002093835.GA17699@elte.hu> <20081003045607.GA5940@Krystal> <20081003155605.GC1607@Krystal> <20081003172143.GA7733@Krystal> User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2292 Lines: 79 On Fri, 3 Oct 2008, Mathieu Desnoyers wrote: > * Steven Rostedt (rostedt@goodmis.org) wrote: > > > > On Fri, 3 Oct 2008, Mathieu Desnoyers wrote: > > > > > > That's how I did it first, but then I looked at asm-generic/topology.h > > > and have seen it uses #defines. Should we change them too ? > > > > > > > The old way of doing this is with defines. But all new code should be > > static inline functions when feasible. This way we can get typechecking > > on the parameters even when the configuration is disabled. > > > > Even if the rest of the file uses defines, the new code should be > > static inlines. Eventually, even the old defines will be converted. > > > > -- Steve > > > > Argh, I think topology.h is utterly broken :-( > > Have you noticed the subtile interaction between the > > include/asm-x86/topology.h : > > #define numa_node_id() 0 > #define cpu_to_node(cpu) 0 > #define early_cpu_to_node(cpu) 0 > ... > #include > > > and > include/asm-generic/topology.h : > #ifndef cpu_to_node > #define cpu_to_node(cpu) ((void)(cpu),0) > #endif > > If any architecture decide for some reason to use a static inline rather > than a define, as currently done with node_to_first_cpu : > > include/asm-x86/topology.h : > static inline int node_to_first_cpu(int node) > { > return first_cpu(cpu_online_map); > } > ... > #include > > include/asm-generic/topology.h : > #ifndef node_to_first_cpu > #define node_to_first_cpu(node) ((void)(node),0) > #endif > > (which will override the static inline !) > > It results in an override of the arch-specific version. Nice eh ? Seems that they expect cpu_to_node to be a macro if NUMA is not configured. Actually, since the asm-generic/topology.h does have the cpu shown (although not in inline format), the solution here is to simply remove the #define cpu_to_node() 0 And we can still make the early_cpu_to_node a static inline since it is not referenced in the generic code. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/