From jk@ozlabs.org Thu Apr 13 14:05:59 2006 Return-Path: Received: from imap.linux.ibm.com ([unix socket]) by imap.linux.ibm.com (Cyrus v2.3.1-Invoca-RPM-2.3.1-2.1) with LMTPA; Thu, 13 Apr 2006 08:06:58 -0400 X-Sieve: CMU Sieve 2.3 Received: by imap.linux.ibm.com (Postfix, from userid 101) id 6811B45C033; Thu, 13 Apr 2006 08:06:58 -0400 (EDT) X-Spam-TestScore: none X-Spam-TokenSummary: Bayes not run. X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on imap.linux.ibm.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.1.1 X-Spam-Relay-Country: Received: from smtp.linux.ibm.com (smtp.linux.ibm.com [9.26.4.197]) by imap.linux.ibm.com (Postfix) with ESMTP id CE6F645C02E for ; Thu, 13 Apr 2006 08:06:55 -0400 (EDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.linux.ibm.com (Postfix) with ESMTP id 57BF898045 for ; Thu, 13 Apr 2006 08:06:55 -0400 (EDT) Received: from d12nrmr1707.megacenter.de.ibm.com (d12nrmr1707.megacenter.de.ibm.com [9.149.167.81]) by smtp.linux.ibm.com (Postfix) with ESMTP id BBBF698034 for ; Thu, 13 Apr 2006 08:06:54 -0400 (EDT) Received: from d12av03.megacenter.de.ibm.com (d12av03.megacenter.de.ibm.com [9.149.165.213]) by d12nrmr1707.megacenter.de.ibm.com (8.12.10/NCO/VER6.8) with ESMTP id k3DC7bdI067018; Thu, 13 Apr 2006 14:07:37 +0200 Received: from d12av03.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av03.megacenter.de.ibm.com (8.12.11/8.13.3) with ESMTP id k3DC6gnX013879; Thu, 13 Apr 2006 14:06:42 +0200 Received: from d01relay05.pok.ibm.com (d01relay05.pok.ibm.com [9.56.227.237]) by d12av03.megacenter.de.ibm.com (8.12.11/8.12.11) with ESMTP id k3DC6fPf013866; Thu, 13 Apr 2006 14:06:42 +0200 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay05.pok.ibm.com (8.12.10/NCO/VER6.8) with ESMTP id k3DC6fUX113838; Thu, 13 Apr 2006 08:06:41 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.12.11/8.13.3) with ESMTP id k3DC6eqR018700; Thu, 13 Apr 2006 08:06:41 -0400 Received: from smtp.linux.ibm.com (ltc-eth1000.torolab.ibm.com [9.26.4.197]) by d01av02.pok.ibm.com (8.12.11/8.12.11) with ESMTP id k3DC6e8Q018697; Thu, 13 Apr 2006 08:06:40 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.linux.ibm.com (Postfix) with ESMTP id D20BC98046; Thu, 13 Apr 2006 08:06:33 -0400 (EDT) Received: from linux.ibm.com (localhost.localdomain [127.0.0.1]) by smtp.linux.ibm.com (Postfix) with ESMTP id 0E6F098048; Thu, 13 Apr 2006 08:06:26 -0400 (EDT) X-Original-To: ibm-linux-cell@linux.ibm.com Delivered-To: ibm-linux-cell@linux.ibm.com Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.linux.ibm.com (Postfix) with ESMTP id 817EF98046 for ; Thu, 13 Apr 2006 08:06:23 -0400 (EDT) Received: from sd0112e0.au.ibm.com (d23rh903.au.ibm.com [9.190.250.240]) by smtp.linux.ibm.com (Postfix) with ESMTP id BF68698045 for ; Thu, 13 Apr 2006 08:06:22 -0400 (EDT) Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.250.242]) by sd0112e0.au.ibm.com (8.12.10/NCO/VER6.8) with ESMTP id k3DC9eG7193756 for ; Thu, 13 Apr 2006 22:09:40 +1000 Received: from d23av01.au.ibm.com (loopback [127.0.0.1]) by d23av01.au.ibm.com (8.12.11/8.13.3) with ESMTP id k3DC6KfA027284 for ; Thu, 13 Apr 2006 22:06:21 +1000 Received: from ozlabs.au.ibm.com (ozlabs.au.ibm.com [9.190.163.12]) by d23av01.au.ibm.com (8.12.11/8.12.11) with ESMTP id k3DC6Kmh027281 for ; Thu, 13 Apr 2006 22:06:20 +1000 Received: by ozlabs.au.ibm.com (Postfix, from userid 1008) id 2C04673723; Thu, 13 Apr 2006 22:07:23 +1000 (EST) To: From: Jeremy Kerr Date: Thu, 13 Apr 2006 14:05:59 +0200 In-Reply-To: <1144929954.687268.447274275348.qpush@pokey> Message-Id: <1144929959.996165.981282949513.qpush@pokey> Subject: [ibm-linux-cell] [PATCH 1/3] powerpc: Make of_node_to_nid check parents X-BeenThere: ibm-linux-cell@linux.ibm.com X-Mailman-Version: 2.1.7 Precedence: list List-Id: Discussion of Linux on Cell kernel development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: ibm-linux-cell-bounces@linux.ibm.com Errors-To: ibm-linux-cell-bounces@linux.ibm.com X-Virus-Scanned: amavisd-new at linux.ibm.com X-Length: 8882 X-UID: 1981 Change of_node_to_nid() to traverse the device tree, looking for a numa id. Cell uses this to assign ids to SPUs, which are children of the CPU node. Existing users of of_node_to_nid() are altered to use of_node_to_nid_single(), which doesn't do the traversal. Signed-off-by: Jeremy Kerr --- arch/powerpc/mm/numa.c | 32 +++++++++++++++++++++++++++----- include/asm-powerpc/topology.h | 7 +++++++ 2 files changed, 34 insertions(+), 5 deletions(-) Index: linus-2.6/arch/powerpc/mm/numa.c =================================================================== --- linus-2.6.orig/arch/powerpc/mm/numa.c +++ linus-2.6/arch/powerpc/mm/numa.c @@ -208,6 +208,28 @@ static int of_node_numa_domain(struct de return numa_domain; } +/* Walk the device tree upwards, looking for an associativity id */ +int of_node_to_nid(struct device_node *device) +{ + struct device_node *tmp; + int nid = -1; + + of_node_get(device); + while (device) { + nid = of_node_numa_domain(device); + if (nid != -1) + break; + + tmp = device; + device = of_get_parent(tmp); + of_node_put(tmp); + } + of_node_put(device); + + return nid; +} +EXPORT_SYMBOL_GPL(of_node_to_nid); + /* * In theory, the "ibm,associativity" property may contain multiple * associativity lists because a resource may be multiply connected Index: linus-2.6/include/asm-powerpc/topology.h =================================================================== --- linus-2.6.orig/include/asm-powerpc/topology.h +++ linus-2.6/include/asm-powerpc/topology.h @@ -27,6 +27,8 @@ static inline int node_to_first_cpu(int return first_cpu(tmp); } +int of_node_to_nid(struct device_node *device); + #define pcibus_to_node(node) (-1) #define pcibus_to_cpumask(bus) (cpu_online_map) @@ -59,6 +61,11 @@ extern void __init dump_numa_cpu_topolog #else +static inline int of_node_to_nid(struct device_node *device) +{ + return 0; +} + static inline void dump_numa_cpu_topology(void) {} #include