diff --git a/debian/patches-debian/ia64-generic-nosmp.patch b/debian/patches-debian/ia64-generic-nosmp.patch deleted file mode 100644 index de2135bdd..000000000 --- a/debian/patches-debian/ia64-generic-nosmp.patch +++ /dev/null @@ -1,326 +0,0 @@ -#! /bin/sh -e -## DP: Description: Fix ia64 generic UP builds -## DP: Patch author: Jesse Barnes , dann frazier -## 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 -+ * Copyright (C) 2004 Silicon Graphics, Inc. -+ * Jesse Barnes -+ */ -+#include -+#include -+#include -+#include -+#include -+ -+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= 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 - #include - #include - #include -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) - - /*