From: Matthew D. <col...@us...> - 2002-08-22 19:15:50
Attachments:
simple_topo-v0.3-in_kernel-2.5.31.patch
|
Andrew, Linus, et al: Here's the latest version of the Simple Topology API. I've broken the patches into a solely in-kernel portion, and a portion that exposes the API to userspace via syscalls and prctl. This patch (part 1) is the in-kernel part. I hope that the smaller versions of these patches will draw more feedback, comments, flames, etc. Other than that, the patch remains relatively unchanged from the last posting. Cheers! -Matt |
From: Christoph H. <hc...@in...> - 2002-08-22 19:23:00
|
On Thu, Aug 22, 2002 at 12:13:23PM -0700, Matthew Dobson wrote: > --- linux-2.5.27-vanilla/include/linux/mmzone.h Sat Jul 20 12:11:05 2002 > +++ linux-2.5.27-api/include/linux/mmzone.h Wed Jul 24 17:33:41 2002 > @@ -220,15 +20,15 @@ > #define NODE_MEM_MAP(nid) mem_map > #define MAX_NR_NODES 1 > > -#else /* !CONFIG_DISCONTIGMEM */ > - > -#include <asm/mmzone.h> > +#else /* CONFIG_DISCONTIGMEM */ > > /* page->zone is currently 8 bits ... */ > #define MAX_NR_NODES (255 / MAX_NR_ZONES) > > #endif /* !CONFIG_DISCONTIGMEM */ > > +#include <asm/mmzone.h> > + What is the exact purpose of this change? |
From: Matthew D. <col...@us...> - 2002-08-22 20:44:21
|
The file asm/mmzone.h needs to be included in both the CONFIG_DISCONTIGMEM and !CONFIG_DISCONTIGMEM cases (at least after my patch). This just pulls the #include out of the #ifdefs. Cheers! -Matt Christoph Hellwig wrote: > On Thu, Aug 22, 2002 at 12:13:23PM -0700, Matthew Dobson wrote: > >>--- linux-2.5.27-vanilla/include/linux/mmzone.h Sat Jul 20 12:11:05 2002 >>+++ linux-2.5.27-api/include/linux/mmzone.h Wed Jul 24 17:33:41 2002 >>@@ -220,15 +20,15 @@ >> #define NODE_MEM_MAP(nid) mem_map >> #define MAX_NR_NODES 1 >> >>-#else /* !CONFIG_DISCONTIGMEM */ >>- >>-#include <asm/mmzone.h> >>+#else /* CONFIG_DISCONTIGMEM */ >> >> /* page->zone is currently 8 bits ... */ >> #define MAX_NR_NODES (255 / MAX_NR_ZONES) >> >> #endif /* !CONFIG_DISCONTIGMEM */ >> >>+#include <asm/mmzone.h> >>+ > > > What is the exact purpose of this change? > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > Lse-tech mailing list > Lse...@li... > https://lists.sourceforge.net/lists/listinfo/lse-tech > |
From: Christoph H. <hc...@in...> - 2002-08-22 20:48:40
|
On Thu, Aug 22, 2002 at 01:41:51PM -0700, Matthew Dobson wrote: > The file asm/mmzone.h needs to be included in both the CONFIG_DISCONTIGMEM and > !CONFIG_DISCONTIGMEM cases (at least after my patch). This just pulls the > #include out of the #ifdefs. Maybe I've noticed that myself? But why do you suddenly break every port of execept of i386,ia64, alpha and mips64? What is the reason your patch needs this? |
From: Pavel M. <pa...@su...> - 2002-08-27 21:07:48
|
Hi! > Andrew, Linus, et al: > Here's the latest version of the Simple Topology API. I've broken the patches > into a solely in-kernel portion, and a portion that exposes the API to > userspace via syscalls and prctl. This patch (part 1) is the in-kernel part. > I hope that the smaller versions of these patches will draw more feedback, > comments, flames, etc. Other than that, the patch remains relatively unchanged > from the last posting. > - bool 'Multiquad NUMA system' CONFIG_MULTIQUAD > + bool 'Multi-node NUMA system support' CONFIG_X86_NUMA Why not simply CONFIG_NUMA? Pavel > + if [ "" = "y" ]; then > + #Platform Choices > + bool 'Multiquad (IBM/Sequent) NUMAQ support' CONFIG_X86_NUMAQ > + if [ "" = "y" ]; then > + define_bool CONFIG_MULTIQUAD y > + define_bool CONFIG_X86_TSC_DISABLE y > + fi > + fi > fi > > bool 'Machine Check Exception' CONFIG_X86_MCE > diff -Nur linux-2.5.27-vanilla/arch/i386/kernel/smpboot.c linux-2.5.27-api/arch/i386/kernel/smpboot.c > --- linux-2.5.27-vanilla/arch/i386/kernel/smpboot.c Sat Jul 20 12:11:18 2002 > +++ linux-2.5.27-api/arch/i386/kernel/smpboot.c Wed Jul 24 17:33:41 2002 > @@ -60,6 +60,9 @@ > /* Bitmask of currently online CPUs */ > unsigned long cpu_online_map; > > +/* Bitmask of currently online memory blocks */ > +unsigned long memblk_online_map; > + > static volatile unsigned long cpu_callin_map; > volatile unsigned long cpu_callout_map; > static unsigned long smp_commenced_mask; > diff -Nur linux-2.5.27-vanilla/include/asm-i386/mmzone.h linux-2.5.27-api/include/asm-i386/mmzone.h > --- linux-2.5.27-vanilla/include/asm-i386/mmzone.h Wed Dec 31 16:00:00 1969 > +++ linux-2.5.27-api/include/asm-i386/mmzone.h Wed Jul 24 17:33:41 2002 > @@ -0,0 +1,53 @@ > +/* > + * linux/include/asm-i386/mmzone.h > + * > + * Written by: Matthew Dobson, IBM Corporation > + * > + * Copyright (C) 2002, IBM Corp. > + * > + * All rights reserved. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, but > + * WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or > + * NON INFRINGEMENT. See the GNU General Public License for more > + * details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > + * > + * Send feedback to <col...@us...> > + */ > +#ifndef _ASM_MMZONE_H_ > +#define _ASM_MMZONE_H_ > + > +#ifdef CONFIG_X86_NUMAQ > + > +#define NR_MEMBLKS 32 /* Max number of Memory Blocks */ > + > +#include <asm/numaq.h> > + > +#else /* !CONFIG_X86_NUMAQ */ > + > +#define NR_MEMBLKS 1 > + > +/* Other architectures wishing to use this simple topology API should fill > + in the below functions as appropriate in their own <arch>.h file. */ > +#define _cpu_to_node(cpu) (0) > +#define _memblk_to_node(memblk) (0) > +#define _node_to_node(nid) (0) > +#define _node_to_cpu(node) (0) > +#define _node_to_memblk(node) (0) > + > +#endif /* CONFIG_X86_NUMAQ */ > + > +/* Returns the number of the current Node. */ > +#define numa_node_id() (_cpu_to_node(smp_processor_id())) > + > +#endif /* _ASM_MMZONE_H_ */ > diff -Nur linux-2.5.27-vanilla/include/asm-i386/numaq.h linux-2.5.27-api/include/asm-i386/numaq.h > --- linux-2.5.27-vanilla/include/asm-i386/numaq.h Wed Dec 31 16:00:00 1969 > +++ linux-2.5.27-api/include/asm-i386/numaq.h Wed Jul 24 17:33:41 2002 > @@ -0,0 +1,60 @@ > +/* > + * linux/include/asm-i386/numaq.h > + * > + * Written by: Matthew Dobson, IBM Corporation > + * > + * Copyright (C) 2002, IBM Corp. > + * > + * All rights reserved. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, but > + * WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or > + * NON INFRINGEMENT. See the GNU General Public License for more > + * details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > + * > + * Send feedback to <col...@us...> > + */ > +#ifndef _I386_NUMAQ_H > +#define _I386_NUMAQ_H > + > +#ifdef CONFIG_X86_NUMAQ > + > +#include <asm/smpboot.h> > + > +/* Returns the number of the node containing CPU 'cpu' */ > +#define _cpu_to_node(cpu) (cpu_to_logical_apicid(cpu) >> 4) > + > +/* Returns the number of the node containing MemBlk 'memblk' */ > +#define _memblk_to_node(memblk) (memblk) > + > +/* Returns the number of the node containing Node 'nid'. This architecture is flat, > + so it is a pretty simple function! */ > +#define _node_to_node(nid) (nid) > + > +/* Returns the number of the first CPU on Node 'node' */ > +static inline int _node_to_cpu(int node) > +{ > + int i, cpu, logical_apicid = node << 4; > + > + for(i = 1; i < 16; i <<= 1) > + if ((cpu = logical_apicid_to_cpu(logical_apicid | i)) >= 0) > + return cpu; > + > + return 0; > +} > + > +/* Returns the number of the first MemBlk on Node 'node' */ > +#define _node_to_memblk(node) (node) > + > +#endif /* CONFIG_X86_NUMAQ */ > +#endif /* _I386_NUMAQ_H */ > diff -Nur linux-2.5.27-vanilla/include/asm-i386/smp.h linux-2.5.27-api/include/asm-i386/smp.h > --- linux-2.5.27-vanilla/include/asm-i386/smp.h Sat Jul 20 12:11:06 2002 > +++ linux-2.5.27-api/include/asm-i386/smp.h Wed Jul 24 17:33:41 2002 > @@ -55,6 +55,7 @@ > extern void smp_alloc_memory(void); > extern unsigned long phys_cpu_present_map; > extern unsigned long cpu_online_map; > +extern unsigned long memblk_online_map; > extern volatile unsigned long smp_invalidate_needed; > extern int pic_mode; > extern int smp_num_siblings; > @@ -95,6 +96,11 @@ > return hweight32(cpu_online_map); > } > > +extern inline unsigned int num_online_memblks(void) > +{ > + return hweight32(memblk_online_map); > +} > + > extern inline int any_online_cpu(unsigned int mask) > { > if (mask & cpu_online_map) > diff -Nur linux-2.5.27-vanilla/include/linux/mmzone.h linux-2.5.27-api/include/linux/mmzone.h > --- linux-2.5.27-vanilla/include/linux/mmzone.h Sat Jul 20 12:11:05 2002 > +++ linux-2.5.27-api/include/linux/mmzone.h Wed Jul 24 17:33:41 2002 > @@ -220,15 +20,15 @@ > #define NODE_MEM_MAP(nid) mem_map > #define MAX_NR_NODES 1 > > -#else /* !CONFIG_DISCONTIGMEM */ > - > -#include <asm/mmzone.h> > +#else /* CONFIG_DISCONTIGMEM */ > > /* page->zone is currently 8 bits ... */ > #define MAX_NR_NODES (255 / MAX_NR_ZONES) > > #endif /* !CONFIG_DISCONTIGMEM */ > > +#include <asm/mmzone.h> > + > #define MAP_ALIGN(x) ((((x) % sizeof(struct page)) == 0) ? (x) : ((x) + > sizeof(struct page) - ((x) % sizeof(struct page)))) > > diff -Nur linux-2.5.27-vanilla/include/linux/smp.h linux-2.5.27-api/include/linux/smp.h > --- linux-2.5.27-vanilla/include/linux/smp.h Sat Jul 20 12:11:22 2002 > +++ linux-2.5.27-api/include/linux/smp.h Wed Jul 24 17:33:41 2002 > @@ -93,6 +93,7 @@ > #define smp_call_function(func,info,retry,wait) ({ 0; }) > static inline void smp_send_reschedule(int cpu) { } > static inline void smp_send_reschedule_all(void) { } > +#define memblk_online_map 1 > #define cpu_online_map 1 > #define cpu_online(cpu) ({ cpu; 1; }) > #define num_online_cpus() 1 -- Philips Velo 1: 1"x4"x8", 300gram, 60, 12MB, 40bogomips, linux, mutt, details at http://atrey.karlin.mff.cuni.cz/~pavel/velo/index.html. |
From: Andrea A. <an...@su...> - 2002-08-27 21:17:13
|
On Tue, Aug 27, 2002 at 02:31:16PM +0000, Pavel Machek wrote: > Hi! > > > Andrew, Linus, et al: > > Here's the latest version of the Simple Topology API. I've broken the patches > > into a solely in-kernel portion, and a portion that exposes the API to > > userspace via syscalls and prctl. This patch (part 1) is the in-kernel part. > > I hope that the smaller versions of these patches will draw more feedback, > > comments, flames, etc. Other than that, the patch remains relatively unchanged > > from the last posting. > > > - bool 'Multiquad NUMA system' CONFIG_MULTIQUAD > > + bool 'Multi-node NUMA system support' CONFIG_X86_NUMA > > Why not simply CONFIG_NUMA? that is just used by the common code, it fits well for that usage and it has different semantics. Andrea |
From: Pavel M. <pa...@su...> - 2002-08-28 19:29:22
|
Hi! > > > - bool 'Multiquad NUMA system' CONFIG_MULTIQUAD > > > + bool 'Multi-node NUMA system support' CONFIG_X86_NUMA > > > > Why not simply CONFIG_NUMA? > > Because NUMA is subordinate to X86, and another technology named NUMA > might appear? Nano-uplinked micro-array... No Ugliness Munched Archive? > Whatever... NUMA means non-uniform memory access. At least IBM, AMD and SGI do NUMA; and I guess anyone with 100+ nodes *has* numa machine. (BUt as andrea already explained, CONFIG_NUMA is already taken for generic NUMA support.) Pavel -- Casualities in World Trade Center: ~3k dead inside the building, cryptography in U.S.A. and free speech in Czech Republic. |
From: Timothy D. W. <wo...@os...> - 2002-08-28 22:36:05
|
How about the old Marketing name CONFIG_CCNUMA? Tim On Wed, 2002-08-28 at 12:29, Pavel Machek wrote: > Hi! > > > > > - bool 'Multiquad NUMA system' CONFIG_MULTIQUAD > > > > + bool 'Multi-node NUMA system support' CONFIG_X86_NUMA > > > > > > Why not simply CONFIG_NUMA? > > > > Because NUMA is subordinate to X86, and another technology named NUMA > > might appear? Nano-uplinked micro-array... No Ugliness Munched Archive? > > Whatever... > > NUMA means non-uniform memory access. At least IBM, AMD and SGI do > NUMA; and I guess anyone with 100+ nodes *has* numa machine. (BUt as > andrea already explained, CONFIG_NUMA is already taken for generic > NUMA support.) > > Pavel > > -- > Casualities in World Trade Center: ~3k dead inside the building, > cryptography in U.S.A. and free speech in Czech Republic. > > > ------------------------------------------------------- > This sf.net email is sponsored by: Jabber - The world's fastest growing > real-time communications platform! Don't just IM. Build it in! > http://www.jabber.com/osdn/xim > _______________________________________________ > Lse-tech mailing list > Lse...@li... > https://lists.sourceforge.net/lists/listinfo/lse-tech -- Timothy D. Witham - Lab Director - wo...@os... Open Source Development Lab Inc - A non-profit corporation 15275 SW Koll Parkway - Suite H - Beaverton OR, 97006 (503)-626-2455 x11 (office) (503)-702-2871 (cell) (503)-626-2436 (fax) |