public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fix generic build when CONFIG_SMP=n
@ 2004-08-13 22:59 Jesse Barnes
  2004-08-16  3:29 ` dann frazier
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jesse Barnes @ 2004-08-13 22:59 UTC (permalink / raw)
  To: linux-ia64

[-- Attachment #1: Type: text/plain, Size: 539 bytes --]

This patch fixes the issues I saw with CONFIG_SMP=n when building a generic 
kernel with CONFIG_NUMA=y and CONFIG_DISCONTIGMEM=y.  It's still pretty 
rough, but I'd appreciate comments and testing on other platforms.  The 
per-cpu fixes are still pretty ugly--I'm sure I'm missing something that 
would make abstracting out per_cpu(cpu_info, cpu).node_data = 
mem_data[node].node_data much nicer looking.

Fixing the build of generic kernels w/o CONFIG_NUMA or CONFIG_DISCONTIGMEM is 
left as an exercise for the reader. :)

Thanks,
Jesse

[-- Attachment #2: ia64-generic-no-smp-2.patch --]
[-- Type: text/plain, Size: 9336 bytes --]

diff -Nru a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile
--- a/arch/ia64/kernel/Makefile	2004-08-13 15:50:37 -07:00
+++ b/arch/ia64/kernel/Makefile	2004-08-13 15:50:37 -07:00
@@ -15,6 +15,7 @@
 obj-$(CONFIG_IOSAPIC)		+= iosapic.o
 obj-$(CONFIG_MODULES)		+= module.o
 obj-$(CONFIG_SMP)		+= smp.o smpboot.o
+obj-$(CONFIG_NUMA)		+= numa.o
 obj-$(CONFIG_PERFMON)		+= perfmon_default_smpl.o
 obj-$(CONFIG_IA64_CYCLONE)	+= cyclone.o
 
diff -Nru a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
--- a/arch/ia64/kernel/acpi.c	2004-08-13 15:50:37 -07:00
+++ b/arch/ia64/kernel/acpi.c	2004-08-13 15:50:37 -07:00
@@ -618,8 +618,10 @@
 			if (smp_boot_data.cpu_phys_id[cpu] != hard_smp_processor_id())
 				node_cpuid[i++].phys_id = smp_boot_data.cpu_phys_id[cpu];
 	}
-	build_cpu_to_node_map();
 # endif
+#endif
+#ifdef CONFIG_ACPI_NUMA
+	build_cpu_to_node_map();
 #endif
 	/* Make boot-up look pretty */
 	printk(KERN_INFO "%d CPUs available, %d CPUs total\n", available_cpus, total_cpus);
diff -Nru a/arch/ia64/kernel/numa.c b/arch/ia64/kernel/numa.c
--- /dev/null	Wed Dec 31 16:00:00 196900
+++ b/arch/ia64/kernel/numa.c	2004-08-13 15:50:37 -07:00
@@ -0,0 +1,57 @@
+/*
+ * 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.  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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * ia64 kernel NUMA specific stuff
+ *
+ * Copyright (C) 2002 Erich Focht <efocht@ess.nec.de>
+ * Copyright (C) 2004 Silicon Graphics, Inc.
+ *   Jesse Barnes <jbarnes@sgi.com>
+ */
+#include <linux/config.h>
+#include <linux/topology.h>
+#include <linux/module.h>
+#include <asm/processor.h>
+#include <asm/smp.h>
+
+u8 cpu_to_node_map[NR_CPUS] __cacheline_aligned;
+EXPORT_SYMBOL(cpu_to_node_map);
+
+cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned;
+
+/**
+ * build_cpu_to_node_map - setup cpu to node and node to cpumask arrays
+ *
+ * Build cpu to node mapping and initialize the per node cpu masks using
+ * info from the node_cpuid array handed to us by ACPI.
+ */
+void __init build_cpu_to_node_map(void)
+{
+	int cpu, i, node;
+
+	for(node=0; node < MAX_NUMNODES; node++)
+		cpus_clear(node_to_cpu_mask[node]);
+
+	for(cpu = 0; cpu < NR_CPUS; ++cpu) {
+		node = -1;
+		for (i = 0; i < NR_CPUS; ++i)
+			if (cpu_physical_id(cpu) == node_cpuid[i].phys_id) {
+				node = node_cpuid[i].nid;
+				break;
+			}
+		cpu_to_node_map[cpu] = (node >= 0) ? node : 0;
+		if (node >= 0)
+			cpu_set(cpu, node_to_cpu_mask[node]);
+	}
+}
diff -Nru a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
--- a/arch/ia64/kernel/setup.c	2004-08-13 15:50:37 -07:00
+++ b/arch/ia64/kernel/setup.c	2004-08-13 15:50:37 -07:00
@@ -317,11 +317,9 @@
 	machvec_init(acpi_get_sysname());
 #endif
 
-#ifdef CONFIG_SMP
 	/* If we register an early console, allow CPU 0 to printk */
 	if (!early_console_setup())
 		cpu_set(smp_processor_id(), cpu_online_map);
-#endif
 
 #ifdef CONFIG_ACPI_BOOT
 	/* Initialize the ACPI boot-time table parser */
diff -Nru a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
--- a/arch/ia64/kernel/smpboot.c	2004-08-13 15:50:37 -07:00
+++ b/arch/ia64/kernel/smpboot.c	2004-08-13 15:50:37 -07:00
@@ -491,47 +491,6 @@
 	}
 }
 
-#ifdef CONFIG_NUMA
-
-/* on which node is each logical CPU (one cacheline even for 64 CPUs) */
-u8 cpu_to_node_map[NR_CPUS] __cacheline_aligned;
-EXPORT_SYMBOL(cpu_to_node_map);
-/* which logical CPUs are on which nodes */
-cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned;
-
-/*
- * Build cpu to node mapping and initialize the per node cpu masks.
- */
-void __init
-build_cpu_to_node_map (void)
-{
-	int cpu, i, node;
-
-	for(node=0; node<MAX_NUMNODES; node++)
-		cpus_clear(node_to_cpu_mask[node]);
-	for(cpu = 0; cpu < NR_CPUS; ++cpu) {
-		/*
-		 * All Itanium NUMA platforms I know use ACPI, so maybe we
-		 * can drop this ifdef completely.                    [EF]
-		 */
-#ifdef CONFIG_ACPI_NUMA
-		node = -1;
-		for (i = 0; i < NR_CPUS; ++i)
-			if (cpu_physical_id(cpu) == node_cpuid[i].phys_id) {
-				node = node_cpuid[i].nid;
-				break;
-			}
-#else
-#		error Fixme: Dunno how to build CPU-to-node map.
-#endif
-		cpu_to_node_map[cpu] = (node >= 0) ? node : 0;
-		if (node >= 0)
-			cpu_set(cpu, node_to_cpu_mask[node]);
-	}
-}
-
-#endif /* CONFIG_NUMA */
-
 /*
  * Cycle through the APs sending Wakeup IPIs to boot each.
  */
diff -Nru a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
--- a/arch/ia64/mm/discontig.c	2004-08-13 15:50:37 -07:00
+++ b/arch/ia64/mm/discontig.c	2004-08-13 15:50:37 -07:00
@@ -225,6 +225,33 @@
 }
 
 /**
+ * per_cpu_node_setup - setup per-cpu areas on each node
+ * @cpu_data: per-cpu area on this node
+ * @node: node to setup
+ *
+ * Copy the static per-cpu data into the region we just set aside and then
+ * setup __per_cpu_offset for each CPU on this node.  Return a pointer to
+ * the end of the area.
+ */
+static void *per_cpu_node_setup(void *cpu_data, int node)
+{
+#ifdef CONFIG_SMP
+	int cpu;
+
+	for (cpu = 0; cpu < NR_CPUS; cpu++) {
+		if (node == node_cpuid[cpu].nid) {
+			memcpy(__va(cpu_data), __phys_per_cpu_start,
+			       __per_cpu_end - __per_cpu_start);
+			__per_cpu_offset[cpu] = (char*)__va(cpu_data) -
+				__per_cpu_start;
+			cpu_data += PERCPU_PAGE_SIZE;
+		}
+	}
+#endif
+	return cpu_data;
+}
+
+/**
  * find_pernode_space - allocate memory for memory map and per-node structures
  * @start: physical start of range
  * @len: length of range
@@ -255,7 +282,7 @@
 static int __init find_pernode_space(unsigned long start, unsigned long len,
 				     int node)
 {
-	unsigned long epfn, cpu, cpus;
+	unsigned long epfn, cpus;
 	unsigned long pernodesize = 0, pernode, pages, mapsize;
 	void *cpu_data;
 	struct bootmem_data *bdp = &mem_data[node].bootmem_data;
@@ -305,20 +332,7 @@
 		mem_data[node].pgdat->bdata = bdp;
 		pernode += L1_CACHE_ALIGN(sizeof(pg_data_t));
 
-		/*
-		 * Copy the static per-cpu data into the region we
-		 * just set aside and then setup __per_cpu_offset
-		 * for each CPU on this node.
-		 */
-		for (cpu = 0; cpu < NR_CPUS; cpu++) {
-			if (node == node_cpuid[cpu].nid) {
-				memcpy(__va(cpu_data), __phys_per_cpu_start,
-				       __per_cpu_end - __per_cpu_start);
-				__per_cpu_offset[cpu] = (char*)__va(cpu_data) -
-					__per_cpu_start;
-				cpu_data += PERCPU_PAGE_SIZE;
-			}
-		}
+		cpu_data = per_cpu_node_setup(cpu_data, node);
 	}
 
 	return 0;
@@ -384,8 +398,8 @@
  */
 static void __init initialize_pernode_data(void)
 {
-	int cpu, node;
 	pg_data_t *pgdat_list[NR_NODES];
+	int cpu, node;
 
 	for (node = 0; node < numnodes; node++)
 		pgdat_list[node] = mem_data[node].pgdat;
@@ -395,12 +409,22 @@
 		memcpy(mem_data[node].node_data->pg_data_ptrs, pgdat_list,
 		       sizeof(pgdat_list));
 	}
-
+#ifdef CONFIG_SMP
 	/* Set the node_data pointer for each per-cpu struct */
 	for (cpu = 0; cpu < NR_CPUS; cpu++) {
 		node = node_cpuid[cpu].nid;
 		per_cpu(cpu_info, cpu).node_data = mem_data[node].node_data;
 	}
+#else
+	{
+		struct cpuinfo_ia64 *cpu0_cpu_info;
+		cpu = 0;
+		node = node_cpuid[cpu].nid;
+		cpu0_cpu_info = (struct cpuinfo_ia64 *)(__phys_per_cpu_start +
+			((char *)&per_cpu__cpu_info - __per_cpu_start));
+		cpu0_cpu_info->node_data = mem_data[node].node_data;
+	}
+#endif /* CONFIG_SMP */
 }
 
 /**
@@ -464,6 +488,7 @@
 	find_initrd();
 }
 
+#ifdef CONFIG_SMP
 /**
  * per_cpu_init - setup per-cpu variables
  *
@@ -474,15 +499,15 @@
 {
 	int cpu;
 
-	if (smp_processor_id() == 0) {
-		for (cpu = 0; cpu < NR_CPUS; cpu++) {
-			per_cpu(local_per_cpu_offset, cpu) =
-				__per_cpu_offset[cpu];
-		}
-	}
+	if (smp_processor_id() != 0)
+		return __per_cpu_start + __per_cpu_offset[smp_processor_id()];
+
+	for (cpu = 0; cpu < NR_CPUS; cpu++)
+		per_cpu(local_per_cpu_offset, cpu) = __per_cpu_offset[cpu];
 
 	return __per_cpu_start + __per_cpu_offset[smp_processor_id()];
 }
+#endif /* CONFIG_SMP */
 
 /**
  * show_mem - give short summary of memory stats
diff -Nru a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h
--- a/include/asm-ia64/smp.h	2004-08-13 15:50:37 -07:00
+++ b/include/asm-ia64/smp.h	2004-08-13 15:50:37 -07:00
@@ -126,6 +126,7 @@
 #else
 
 #define cpu_logical_id(cpuid)		0
+#define cpu_physical_id(i)	((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
 
 #endif /* CONFIG_SMP */
 #endif /* _ASM_IA64_SMP_H */
diff -Nru a/include/asm-ia64/sn/sn_cpuid.h b/include/asm-ia64/sn/sn_cpuid.h
--- a/include/asm-ia64/sn/sn_cpuid.h	2004-08-13 15:50:37 -07:00
+++ b/include/asm-ia64/sn/sn_cpuid.h	2004-08-13 15:50:37 -07:00
@@ -83,10 +83,6 @@
  *
  */
 
-#ifndef CONFIG_SMP
-#define cpu_physical_id(cpuid)			((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
-#endif
-
 /*
  * macros for some of these exist in sn/addrs.h & sn/arch.h, etc. However, 
  * trying #include these files here causes circular dependencies.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] fix generic build when CONFIG_SMP=n
  2004-08-13 22:59 [PATCH] fix generic build when CONFIG_SMP=n Jesse Barnes
@ 2004-08-16  3:29 ` dann frazier
  2004-08-16 22:23 ` Randy.Dunlap
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: dann frazier @ 2004-08-16  3:29 UTC (permalink / raw)
  To: linux-ia64

On Fri, Aug 13, 2004 at 03:59:59PM -0700, Jesse Barnes wrote:
> This patch fixes the issues I saw with CONFIG_SMP=n when building a generic 
> kernel with CONFIG_NUMA=y and CONFIG_DISCONTIGMEM=y.  It's still pretty 
> rough, but I'd appreciate comments and testing on other platforms.  The 
> per-cpu fixes are still pretty ugly--I'm sure I'm missing something that 
> would make abstracting out per_cpu(cpu_info, cpu).node_data = 
> mem_data[node].node_data much nicer looking.
> 
> Fixing the build of generic kernels w/o CONFIG_NUMA or CONFIG_DISCONTIGMEM is 
> left as an exercise for the reader. :)

Here's the results of some 2.6.8 boot testing:

-----------------------------------------------------------------------------
 generic-no-smp-2    generic_defconfig                                     
    patch?                delta               machine           results    
-----------------------------------------------------------------------------
     No               ITANIUM=y                HP i2000            OK
-----------------------------------------------------------------------------
     Yes              ITANIUM=y                HP i2000            OK
-----------------------------------------------------------------------------
     Yes              ITANIUM=y                   N/A         build fails [1]
                      SMP=n
-----------------------------------------------------------------------------
     Yes              ITANIUM=y                   N/A         build fails [2]
                      SMP=n
                      CYCLONE=n
-----------------------------------------------------------------------------
     Yes              ITANIUM=y                   N/A              OK
                      SMP=n
                      CYCLONE=n                HP i2000
                      SERIAL_SGI_L1_CONSOLE=n
-----------------------------------------------------------------------------
     Yes                                       HP rx2600           OK
-----------------------------------------------------------------------------
     Yes              SMP=n                    HP rx2600           OK
                      CYCLONE=n
                      SERIAL_SGI_L1_CONSOLE=n
[1]
  CC      arch/ia64/kernel/cyclone.o
arch/ia64/kernel/cyclone.c:13: error: parse error before "cyclone_setup"
arch/ia64/kernel/cyclone.c:14: warning: return type defaults to `int'
arch/ia64/kernel/cyclone.c: In function `get_offset_cyclone':
arch/ia64/kernel/cyclone.c:29: warning: implicit declaration of function `readl'arch/ia64/kernel/cyclone.c: At top level:
arch/ia64/kernel/cyclone.c:78: error: parse error before "init_cyclone_clock"
arch/ia64/kernel/cyclone.c:79: warning: return type defaults to `int'
arch/ia64/kernel/cyclone.c: In function `init_cyclone_clock':
arch/ia64/kernel/cyclone.c:92: warning: implicit declaration of function `ioremap_nocache'
arch/ia64/kernel/cyclone.c:92: warning: cast to pointer from integer of different size
arch/ia64/kernel/cyclone.c:98: warning: implicit declaration of function `readq'arch/ia64/kernel/cyclone.c:104: warning: implicit declaration of function `iounmap'
arch/ia64/kernel/cyclone.c:108: warning: cast to pointer from integer of different size
arch/ia64/kernel/cyclone.c:114: warning: implicit declaration of function `writel'
arch/ia64/kernel/cyclone.c:119: warning: cast to pointer from integer of different size
arch/ia64/kernel/cyclone.c:130: warning: cast to pointer from integer of different size
arch/ia64/kernel/cyclone.c: At top level:
arch/ia64/kernel/cyclone.c:157: warning: type defaults to `int' in declaration of `__initcall'
arch/ia64/kernel/cyclone.c:157: warning: parameter names (without types) in function declaration
arch/ia64/kernel/cyclone.c:157: warning: data definition has no type or storage class
make[1]: *** [arch/ia64/kernel/cyclone.o] Error 1
make: *** [arch/ia64/kernel] Error 2

[2]
  CC      drivers/serial/sn_console.o
drivers/serial/sn_console.c: In function `snt_sim_puts':
drivers/serial/sn_console.c:216: warning: implicit declaration of function `writeb'
drivers/serial/sn_console.c: In function `snt_sim_getc':
drivers/serial/sn_console.c:230: warning: implicit declaration of function `readb'
drivers/serial/sn_console.c: At top level:
drivers/serial/sn_console.c:1090: error: parse error before "else"
make[2]: *** [drivers/serial/sn_console.o] Error 1
make[1]: *** [drivers/serial] Error 2
make: *** [drivers] Error 2

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] fix generic build when CONFIG_SMP=n
  2004-08-13 22:59 [PATCH] fix generic build when CONFIG_SMP=n Jesse Barnes
  2004-08-16  3:29 ` dann frazier
@ 2004-08-16 22:23 ` Randy.Dunlap
  2004-08-17  1:10 ` Jesse Barnes
  2004-08-24 18:25 ` Jesse Barnes
  3 siblings, 0 replies; 5+ messages in thread
From: Randy.Dunlap @ 2004-08-16 22:23 UTC (permalink / raw)
  To: linux-ia64

[-- Attachment #1: Type: text/plain, Size: 2571 bytes --]

On Sun, 15 Aug 2004 21:29:37 -0600 dann frazier wrote:

| On Fri, Aug 13, 2004 at 03:59:59PM -0700, Jesse Barnes wrote:
| > This patch fixes the issues I saw with CONFIG_SMP=n when building a generic 
| > kernel with CONFIG_NUMA=y and CONFIG_DISCONTIGMEM=y.  It's still pretty 
| > rough, but I'd appreciate comments and testing on other platforms.  The 
| > per-cpu fixes are still pretty ugly--I'm sure I'm missing something that 
| > would make abstracting out per_cpu(cpu_info, cpu).node_data = 
| > mem_data[node].node_data much nicer looking.
| > 
| > Fixing the build of generic kernels w/o CONFIG_NUMA or CONFIG_DISCONTIGMEM is 
| > left as an exercise for the reader. :)
| 
| Here's the results of some 2.6.8 boot testing:
| 
| -----------------------------------------------------------------------------
|  generic-no-smp-2    generic_defconfig                                     
|     patch?                delta               machine           results    
| -----------------------------------------------------------------------------
|      No               ITANIUM=y                HP i2000            OK
| -----------------------------------------------------------------------------
|      Yes              ITANIUM=y                HP i2000            OK
| -----------------------------------------------------------------------------
|      Yes              ITANIUM=y                   N/A         build fails [1]
|                       SMP=n
| -----------------------------------------------------------------------------
|      Yes              ITANIUM=y                   N/A         build fails [2]
|                       SMP=n
|                       CYCLONE=n
| -----------------------------------------------------------------------------
|      Yes              ITANIUM=y                   N/A              OK
|                       SMP=n
|                       CYCLONE=n                HP i2000
|                       SERIAL_SGI_L1_CONSOLE=n
| -----------------------------------------------------------------------------
|      Yes                                       HP rx2600           OK
| -----------------------------------------------------------------------------
|      Yes              SMP=n                    HP rx2600           OK
|                       CYCLONE=n
|                       SERIAL_SGI_L1_CONSOLE=n
| [1]
is fixed by the attached patch...

| [2]

[2] is fixed by
http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.8.1/2.6.8.1-mm1/broken-out/fix-sn_console-for-config_smp=n.patch


--
~Randy

[-- Attachment #2: ia64_cyclone_nosmp.patch --]
[-- Type: application/octet-stream, Size: 636 bytes --]


fix ia64 cyclone build errors

Signed-off-by: Randy Dunlap <rddunlap@osdl.org>

diffstat:=
 arch/ia64/kernel/cyclone.c |    3 +++
 1 files changed, 3 insertions(+)

diff -Naurp ./arch/ia64/kernel/cyclone.c~ia64_no_smp ./arch/ia64/kernel/cyclone.c
--- ./arch/ia64/kernel/cyclone.c~ia64_no_smp	Mon Aug 16 14:13:52 2004
+++ ./arch/ia64/kernel/cyclone.c	Mon Aug 16 14:06:26 2004
@@ -1,7 +1,10 @@
+#include <linux/init.h>
 #include <linux/smp.h>
 #include <linux/time.h>
 #include <linux/errno.h>
 
+#include <asm/io.h>
+
 /* IBM Summit (EXA) Cyclone counter code*/
 #define CYCLONE_CBAR_ADDR 0xFEB00CD0
 #define CYCLONE_PMCC_OFFSET 0x51A0

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] fix generic build when CONFIG_SMP=n
  2004-08-13 22:59 [PATCH] fix generic build when CONFIG_SMP=n Jesse Barnes
  2004-08-16  3:29 ` dann frazier
  2004-08-16 22:23 ` Randy.Dunlap
@ 2004-08-17  1:10 ` Jesse Barnes
  2004-08-24 18:25 ` Jesse Barnes
  3 siblings, 0 replies; 5+ messages in thread
From: Jesse Barnes @ 2004-08-17  1:10 UTC (permalink / raw)
  To: linux-ia64

On Sunday, August 15, 2004 8:29 pm, dann frazier wrote:
> On Fri, Aug 13, 2004 at 03:59:59PM -0700, Jesse Barnes wrote:
> > This patch fixes the issues I saw with CONFIG_SMP=n when building a
> > generic kernel with CONFIG_NUMA=y and CONFIG_DISCONTIGMEM=y.  It's still
> > pretty rough, but I'd appreciate comments and testing on other platforms.
> >  The per-cpu fixes are still pretty ugly--I'm sure I'm missing something
> > that would make abstracting out per_cpu(cpu_info, cpu).node_data > > mem_data[node].node_data much nicer looking.
> >
> > Fixing the build of generic kernels w/o CONFIG_NUMA or
> > CONFIG_DISCONTIGMEM is left as an exercise for the reader. :)
>
> Here's the results of some 2.6.8 boot testing:
>
> ---------------------------------------------------------------------------
>-- generic-no-smp-2    generic_defconfig
>     patch?                delta               machine           results
> ---------------------------------------------------------------------------
>-- No               ITANIUM=y                HP i2000            OK
> ---------------------------------------------------------------------------
>-- Yes              ITANIUM=y                HP i2000            OK
> ---------------------------------------------------------------------------
>-- Yes              ITANIUM=y                   N/A         build fails [1]
> SMP=n
> ---------------------------------------------------------------------------
>-- Yes              ITANIUM=y                   N/A         build fails [2]
> SMP=n
>                       CYCLONE=n
> ---------------------------------------------------------------------------
>-- Yes              ITANIUM=y                   N/A              OK SMP=n
>                       CYCLONE=n                HP i2000
>                       SERIAL_SGI_L1_CONSOLE=n
> ---------------------------------------------------------------------------
>-- Yes                                       HP rx2600           OK
> ---------------------------------------------------------------------------
>-- Yes              SMP=n                    HP rx2600           OK
> CYCLONE=n
>                       SERIAL_SGI_L1_CONSOLE=n

I posted fixes for cyclone and the sgi console driver separately.  They should 
get in soon.

Jesse

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] fix generic build when CONFIG_SMP=n
  2004-08-13 22:59 [PATCH] fix generic build when CONFIG_SMP=n Jesse Barnes
                   ` (2 preceding siblings ...)
  2004-08-17  1:10 ` Jesse Barnes
@ 2004-08-24 18:25 ` Jesse Barnes
  3 siblings, 0 replies; 5+ messages in thread
From: Jesse Barnes @ 2004-08-24 18:25 UTC (permalink / raw)
  To: linux-ia64

On Friday, August 13, 2004 3:59 pm, Jesse Barnes wrote:
> This patch fixes the issues I saw with CONFIG_SMP=n when building a generic
> kernel with CONFIG_NUMA=y and CONFIG_DISCONTIGMEM=y.  It's still pretty
> rough, but I'd appreciate comments and testing on other platforms.  The
> per-cpu fixes are still pretty ugly--I'm sure I'm missing something that
> would make abstracting out per_cpu(cpu_info, cpu).node_data > mem_data[node].node_data much nicer looking.
>
> Fixing the build of generic kernels w/o CONFIG_NUMA or CONFIG_DISCONTIGMEM
> is left as an exercise for the reader. :)

No comments?  Tony, do you think it's ready to apply?

Thanks,
Jesse

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-08-24 18:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-13 22:59 [PATCH] fix generic build when CONFIG_SMP=n Jesse Barnes
2004-08-16  3:29 ` dann frazier
2004-08-16 22:23 ` Randy.Dunlap
2004-08-17  1:10 ` Jesse Barnes
2004-08-24 18:25 ` Jesse Barnes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox