r3360 - in trunk/kernel/source/kernel-source-2.6.12-2.6.12: . debian/patches debian/patches/series

Dann Frazier dannf@costa.debian.org
Sun, 19 Jun 2005 06:17:03 +0000


Author: dannf
Date: 2005-06-19 06:17:02 +0000 (Sun, 19 Jun 2005)
New Revision: 3360

Added:
   trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/ia64-generic-nosmp.patch
Modified:
   trunk/kernel/source/kernel-source-2.6.12-2.6.12/TODO.patches
   trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/series/2.6.12-1
Log:
updated ia64-generic-nosmp patch - fix a merge issue and a compile issue

Modified: trunk/kernel/source/kernel-source-2.6.12-2.6.12/TODO.patches
===================================================================
--- trunk/kernel/source/kernel-source-2.6.12-2.6.12/TODO.patches	2005-06-19 00:19:39 UTC (rev 3359)
+++ trunk/kernel/source/kernel-source-2.6.12-2.6.12/TODO.patches	2005-06-19 06:17:02 UTC (rev 3360)
@@ -6,9 +6,6 @@
 fix-alpha-ext3-oops.patch
 	NOT ACCEPTED. Takes care of some compiler bug, someone should
 	check whether the compiler bug is still present.
-ia64-generic-nosmp.patch
-	NOT ACCEPTED.
-	One hunk (include/asm-ia64/smp.h) fails to apply.
 powerpc-g4-l2-flush-errata.patch
 	NOT ACCEPTED. Needs to be reviewed. Last hunk fails to apply
 	to include/asm-ppc/cputable.h, as patch introduces a #define
@@ -79,6 +76,9 @@
 	ACCEPTED.
 fs-isofs-range-check-3.patch
 	ACCEPTED.
+ia64-generic-nosmp.patch
+	NOT ACCEPTED.
+	One hunk (include/asm-ia64/smp.h) failed to apply, manually corrected.
 ia64-irq-affinity-upfix.patch
 	NOT ACCEPTED | INCLUDED.
 modular-ide-pnp.patch

Copied: trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/ia64-generic-nosmp.patch (from rev 3342, trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/ia64-generic-nosmp.patch)
===================================================================
--- trunk/kernel/source/kernel-source-2.6.11-2.6.11/debian/patches/ia64-generic-nosmp.patch	2005-06-18 11:56:32 UTC (rev 3342)
+++ trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/ia64-generic-nosmp.patch	2005-06-19 06:17:02 UTC (rev 3360)
@@ -0,0 +1,326 @@
+#! /bin/sh -e
+## DP: Description: Fix ia64 generic UP builds
+## DP: Patch author: Jesse Barnes <jbarnes@engr.sgi.com>, dann frazier <dannf@debian.org>
+## DP: Upstream status: Submitted
+
+. $(dirname $0)/DPATCH
+
+@DPATCH@
+
+diff -urN linux-2.6.12.orig/arch/ia64/kernel/Makefile linux-2.6.12/arch/ia64/kernel/Makefile
+--- linux-2.6.12.orig/arch/ia64/kernel/Makefile	2005-06-17 13:48:29.000000000 -0600
++++ linux-2.6.12/arch/ia64/kernel/Makefile	2005-06-18 22:14:35.000000000 -0600
+@@ -17,6 +17,7 @@
+ obj-$(CONFIG_IOSAPIC)		+= iosapic.o
+ obj-$(CONFIG_MODULES)		+= module.o
+ obj-$(CONFIG_SMP)		+= smp.o smpboot.o domain.o
++obj-$(CONFIG_NUMA)		+= numa.o
+ obj-$(CONFIG_PERFMON)		+= perfmon_default_smpl.o
+ obj-$(CONFIG_IA64_CYCLONE)	+= cyclone.o
+ obj-$(CONFIG_IA64_MCA_RECOVERY)	+= mca_recovery.o
+diff -urN linux-2.6.12.orig/arch/ia64/kernel/acpi.c linux-2.6.12/arch/ia64/kernel/acpi.c
+--- linux-2.6.12.orig/arch/ia64/kernel/acpi.c	2005-06-17 13:48:29.000000000 -0600
++++ linux-2.6.12/arch/ia64/kernel/acpi.c	2005-06-18 22:14:35.000000000 -0600
+@@ -642,9 +642,11 @@
+ 			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);
+ 	return 0;
+diff -urN linux-2.6.12.orig/arch/ia64/kernel/numa.c linux-2.6.12/arch/ia64/kernel/numa.c
+--- linux-2.6.12.orig/arch/ia64/kernel/numa.c	1969-12-31 17:00:00.000000000 -0700
++++ linux-2.6.12/arch/ia64/kernel/numa.c	2005-06-18 22:14:35.000000000 -0600
+@@ -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 -urN linux-2.6.12.orig/arch/ia64/kernel/smpboot.c linux-2.6.12/arch/ia64/kernel/smpboot.c
+--- linux-2.6.12.orig/arch/ia64/kernel/smpboot.c	2005-06-17 13:48:29.000000000 -0600
++++ linux-2.6.12/arch/ia64/kernel/smpboot.c	2005-06-18 22:14:35.000000000 -0600
+@@ -524,47 +524,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 -urN linux-2.6.12.orig/arch/ia64/mm/discontig.c linux-2.6.12/arch/ia64/mm/discontig.c
+--- linux-2.6.12.orig/arch/ia64/mm/discontig.c	2005-06-17 13:48:29.000000000 -0600
++++ linux-2.6.12/arch/ia64/mm/discontig.c	2005-06-18 22:14:35.000000000 -0600
+@@ -274,6 +274,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
+@@ -304,7 +331,7 @@
+ static int __init find_pernode_space(unsigned long start, unsigned long len,
+ 				     int node)
+ {
+-	unsigned long epfn, cpu, cpus, phys_cpus;
++	unsigned long epfn, cpus, phys_cpus;
+ 	unsigned long pernodesize = 0, pernode, pages, mapsize;
+ 	void *cpu_data;
+ 	struct bootmem_data *bdp = &mem_data[node].bootmem_data;
+@@ -357,20 +384,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;
+@@ -436,8 +450,8 @@
+  */
+ static void __init initialize_pernode_data(void)
+ {
+-	int cpu, node;
+ 	pg_data_t *pgdat_list[MAX_NUMNODES];
++	int cpu, node;
+ 
+ 	for_each_online_node(node)
+ 		pgdat_list[node] = mem_data[node].pgdat;
+@@ -447,12 +461,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 */
+ }
+ 
+ /**
+@@ -519,6 +543,7 @@
+ 	find_initrd();
+ }
+ 
++#ifdef CONFIG_SMP
+ /**
+  * per_cpu_init - setup per-cpu variables
+  *
+@@ -529,15 +554,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 -urN linux-2.6.12.orig/include/asm-ia64/smp.h.rej linux-2.6.12/include/asm-ia64/smp.h.rej
+--- linux-2.6.12.orig/include/asm-ia64/smp.h.rej	1969-12-31 17:00:00.000000000 -0700
++++ linux-2.6.12/include/asm-ia64/smp.h.rej	2005-06-18 22:14:35.000000000 -0600
+@@ -0,0 +1,16 @@
++***************
++*** 126,131 ****
++  #else
++  
++  #define cpu_logical_id(cpuid)		0
++  
++  #endif /* CONFIG_SMP */
++  #endif /* _ASM_IA64_SMP_H */
++--- 126,132 ----
++  #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 -urN linux-2.6.12.orig/include/asm-ia64/sn/arch.h linux-2.6.12/include/asm-ia64/sn/arch.h
+--- linux-2.6.12.orig/include/asm-ia64/sn/arch.h	2005-06-17 13:48:29.000000000 -0600
++++ linux-2.6.12/include/asm-ia64/sn/arch.h	2005-06-18 22:15:39.000000000 -0600
+@@ -11,6 +11,7 @@
+ #ifndef _ASM_IA64_SN_ARCH_H
+ #define _ASM_IA64_SN_ARCH_H
+ 
++#include <linux/numa.h>
+ #include <asm/types.h>
+ #include <asm/percpu.h>
+ #include <asm/sn/types.h>
+diff -urN linux-2.6.12.orig/include/asm-ia64/sn/sn_cpuid.h linux-2.6.12/include/asm-ia64/sn/sn_cpuid.h
+--- linux-2.6.12.orig/include/asm-ia64/sn/sn_cpuid.h	2005-06-17 13:48:29.000000000 -0600
++++ linux-2.6.12/include/asm-ia64/sn/sn_cpuid.h	2005-06-18 22:14:35.000000000 -0600
+@@ -81,11 +81,6 @@
+  *
+  */
+ 
+-#ifndef CONFIG_SMP
+-#define cpu_physical_id(cpuid)			((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
+-#endif
+-
+-
+ #define get_node_number(addr)			NASID_GET(addr)
+ 
+ /*

Modified: trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/series/2.6.12-1
===================================================================
--- trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/series/2.6.12-1	2005-06-19 00:19:39 UTC (rev 3359)
+++ trunk/kernel/source/kernel-source-2.6.12-2.6.12/debian/patches/series/2.6.12-1	2005-06-19 06:17:02 UTC (rev 3360)
@@ -19,3 +19,4 @@
 + qla2xxx-removed.patch
 + remove-references-to-removed-drivers.patch
 + tty-locking-fixes9.patch
++ ia64-generic-nosmp.patch