diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-19 23:27:25 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-19 23:27:25 -0500 |
| commit | 12fcdba1b7ae8b25696433f420b775aeb556d89b (patch) | |
| tree | 2826a8e5ebce9296ae8a53f2eb35c49946aadeee | |
| parent | 1268afe676ee9431a229fc68a2efb0dad4d5852f (diff) | |
| parent | 9032160275ba018003ff390835ff8ed2b5b788b8 (diff) | |
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86: Unify "numa=" command line option handling
Revert "x86: Make relocatable kernel work with new binutils"
| -rw-r--r-- | arch/x86/include/asm/numa_32.h | 2 | ||||
| -rw-r--r-- | arch/x86/include/asm/numa_64.h | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/vmlinux.lds.S | 11 | ||||
| -rw-r--r-- | arch/x86/mm/numa.c | 22 | ||||
| -rw-r--r-- | arch/x86/mm/numa_64.c | 24 | ||||
| -rw-r--r-- | arch/x86/mm/srat_32.c | 1 |
6 files changed, 32 insertions, 29 deletions
diff --git a/arch/x86/include/asm/numa_32.h b/arch/x86/include/asm/numa_32.h index a37229011b56..b0ef2b449a9d 100644 --- a/arch/x86/include/asm/numa_32.h +++ b/arch/x86/include/asm/numa_32.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef _ASM_X86_NUMA_32_H | 1 | #ifndef _ASM_X86_NUMA_32_H |
| 2 | #define _ASM_X86_NUMA_32_H | 2 | #define _ASM_X86_NUMA_32_H |
| 3 | 3 | ||
| 4 | extern int numa_off; | ||
| 5 | |||
| 4 | extern int pxm_to_nid(int pxm); | 6 | extern int pxm_to_nid(int pxm); |
| 5 | extern void numa_remove_cpu(int cpu); | 7 | extern void numa_remove_cpu(int cpu); |
| 6 | 8 | ||
diff --git a/arch/x86/include/asm/numa_64.h b/arch/x86/include/asm/numa_64.h index 5ae87285a502..0493be39607c 100644 --- a/arch/x86/include/asm/numa_64.h +++ b/arch/x86/include/asm/numa_64.h | |||
| @@ -40,6 +40,7 @@ extern void __cpuinit numa_remove_cpu(int cpu); | |||
| 40 | #ifdef CONFIG_NUMA_EMU | 40 | #ifdef CONFIG_NUMA_EMU |
| 41 | #define FAKE_NODE_MIN_SIZE ((u64)32 << 20) | 41 | #define FAKE_NODE_MIN_SIZE ((u64)32 << 20) |
| 42 | #define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL)) | 42 | #define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL)) |
| 43 | void numa_emu_cmdline(char *); | ||
| 43 | #endif /* CONFIG_NUMA_EMU */ | 44 | #endif /* CONFIG_NUMA_EMU */ |
| 44 | #else | 45 | #else |
| 45 | static inline void init_cpu_to_node(void) { } | 46 | static inline void init_cpu_to_node(void) { } |
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S index b34ab80fddd5..bf4700755184 100644 --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S | |||
| @@ -34,9 +34,11 @@ OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT) | |||
| 34 | #ifdef CONFIG_X86_32 | 34 | #ifdef CONFIG_X86_32 |
| 35 | OUTPUT_ARCH(i386) | 35 | OUTPUT_ARCH(i386) |
| 36 | ENTRY(phys_startup_32) | 36 | ENTRY(phys_startup_32) |
| 37 | jiffies = jiffies_64; | ||
| 37 | #else | 38 | #else |
| 38 | OUTPUT_ARCH(i386:x86-64) | 39 | OUTPUT_ARCH(i386:x86-64) |
| 39 | ENTRY(phys_startup_64) | 40 | ENTRY(phys_startup_64) |
| 41 | jiffies_64 = jiffies; | ||
| 40 | #endif | 42 | #endif |
| 41 | 43 | ||
| 42 | #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA) | 44 | #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA) |
| @@ -140,15 +142,6 @@ SECTIONS | |||
| 140 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) | 142 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) |
| 141 | 143 | ||
| 142 | DATA_DATA | 144 | DATA_DATA |
| 143 | /* | ||
| 144 | * Workaround a binutils (2.20.51.0.12 to 2.21.51.0.3) bug. | ||
| 145 | * This makes jiffies relocatable in such binutils | ||
| 146 | */ | ||
| 147 | #ifdef CONFIG_X86_32 | ||
| 148 | jiffies = jiffies_64; | ||
| 149 | #else | ||
| 150 | jiffies_64 = jiffies; | ||
| 151 | #endif | ||
| 152 | CONSTRUCTORS | 145 | CONSTRUCTORS |
| 153 | 146 | ||
| 154 | /* rarely changed data like cpu maps */ | 147 | /* rarely changed data like cpu maps */ |
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c index 787c52ca49c3..ebf6d7887a38 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c | |||
| @@ -2,6 +2,28 @@ | |||
| 2 | #include <linux/topology.h> | 2 | #include <linux/topology.h> |
| 3 | #include <linux/module.h> | 3 | #include <linux/module.h> |
| 4 | #include <linux/bootmem.h> | 4 | #include <linux/bootmem.h> |
| 5 | #include <asm/numa.h> | ||
| 6 | #include <asm/acpi.h> | ||
| 7 | |||
| 8 | int __initdata numa_off; | ||
| 9 | |||
| 10 | static __init int numa_setup(char *opt) | ||
| 11 | { | ||
| 12 | if (!opt) | ||
| 13 | return -EINVAL; | ||
| 14 | if (!strncmp(opt, "off", 3)) | ||
| 15 | numa_off = 1; | ||
| 16 | #ifdef CONFIG_NUMA_EMU | ||
| 17 | if (!strncmp(opt, "fake=", 5)) | ||
| 18 | numa_emu_cmdline(opt + 5); | ||
| 19 | #endif | ||
| 20 | #ifdef CONFIG_ACPI_NUMA | ||
| 21 | if (!strncmp(opt, "noacpi", 6)) | ||
| 22 | acpi_numa = -1; | ||
| 23 | #endif | ||
| 24 | return 0; | ||
| 25 | } | ||
| 26 | early_param("numa", numa_setup); | ||
| 5 | 27 | ||
| 6 | /* | 28 | /* |
| 7 | * Which logical CPUs are on which nodes | 29 | * Which logical CPUs are on which nodes |
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c index 1e72102e80c9..95ea1551eebc 100644 --- a/arch/x86/mm/numa_64.c +++ b/arch/x86/mm/numa_64.c | |||
| @@ -30,7 +30,6 @@ s16 apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = { | |||
| 30 | [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE | 30 | [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE |
| 31 | }; | 31 | }; |
| 32 | 32 | ||
| 33 | int numa_off __initdata; | ||
| 34 | static unsigned long __initdata nodemap_addr; | 33 | static unsigned long __initdata nodemap_addr; |
| 35 | static unsigned long __initdata nodemap_size; | 34 | static unsigned long __initdata nodemap_size; |
| 36 | 35 | ||
| @@ -263,6 +262,11 @@ static struct bootnode nodes[MAX_NUMNODES] __initdata; | |||
| 263 | static struct bootnode physnodes[MAX_NUMNODES] __cpuinitdata; | 262 | static struct bootnode physnodes[MAX_NUMNODES] __cpuinitdata; |
| 264 | static char *cmdline __initdata; | 263 | static char *cmdline __initdata; |
| 265 | 264 | ||
| 265 | void __init numa_emu_cmdline(char *str) | ||
| 266 | { | ||
| 267 | cmdline = str; | ||
| 268 | } | ||
| 269 | |||
| 266 | static int __init setup_physnodes(unsigned long start, unsigned long end, | 270 | static int __init setup_physnodes(unsigned long start, unsigned long end, |
| 267 | int acpi, int amd) | 271 | int acpi, int amd) |
| 268 | { | 272 | { |
| @@ -670,24 +674,6 @@ unsigned long __init numa_free_all_bootmem(void) | |||
| 670 | return pages; | 674 | return pages; |
| 671 | } | 675 | } |
| 672 | 676 | ||
| 673 | static __init int numa_setup(char *opt) | ||
| 674 | { | ||
| 675 | if (!opt) | ||
| 676 | return -EINVAL; | ||
| 677 | if (!strncmp(opt, "off", 3)) | ||
| 678 | numa_off = 1; | ||
| 679 | #ifdef CONFIG_NUMA_EMU | ||
| 680 | if (!strncmp(opt, "fake=", 5)) | ||
| 681 | cmdline = opt + 5; | ||
| 682 | #endif | ||
| 683 | #ifdef CONFIG_ACPI_NUMA | ||
| 684 | if (!strncmp(opt, "noacpi", 6)) | ||
| 685 | acpi_numa = -1; | ||
| 686 | #endif | ||
| 687 | return 0; | ||
| 688 | } | ||
| 689 | early_param("numa", numa_setup); | ||
| 690 | |||
| 691 | #ifdef CONFIG_NUMA | 677 | #ifdef CONFIG_NUMA |
| 692 | 678 | ||
| 693 | static __init int find_near_online_node(int node) | 679 | static __init int find_near_online_node(int node) |
diff --git a/arch/x86/mm/srat_32.c b/arch/x86/mm/srat_32.c index f16434568a51..ae96e7b8051d 100644 --- a/arch/x86/mm/srat_32.c +++ b/arch/x86/mm/srat_32.c | |||
| @@ -59,7 +59,6 @@ static struct node_memory_chunk_s __initdata node_memory_chunk[MAXCHUNKS]; | |||
| 59 | static int __initdata num_memory_chunks; /* total number of memory chunks */ | 59 | static int __initdata num_memory_chunks; /* total number of memory chunks */ |
| 60 | static u8 __initdata apicid_to_pxm[MAX_APICID]; | 60 | static u8 __initdata apicid_to_pxm[MAX_APICID]; |
| 61 | 61 | ||
| 62 | int numa_off __initdata; | ||
| 63 | int acpi_numa __initdata; | 62 | int acpi_numa __initdata; |
| 64 | 63 | ||
| 65 | static __init void bad_srat(void) | 64 | static __init void bad_srat(void) |
