aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-10-30 21:07:02 -0500
committerPaul Mackerras <paulus@samba.org>2005-10-30 21:07:02 -0500
commitcf00a8d18b9a1c2d55b2728e89125c234e821db5 (patch)
tree99425b8acd08aae1e07a7ae31ff47fa18e4e8c91 /arch/powerpc
parent5f6b5b973a125de0dbe236ce659a495787c81ff0 (diff)
powerpc: Fix bug arising from having multiple memory_limit variables
We had a static memory_limit in prom.c, and then another one defined in setup_64.c and used in numa.c, which resulted in the kernel crashing when mem=xxx was given on the command line. This puts the declaration in system.h and the definition in mem.c. This also moves the definition of tce_alloc_start/end out of setup_64.c. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/prom.c4
-rw-r--r--arch/powerpc/kernel/setup_64.c9
-rw-r--r--arch/powerpc/mm/mem.c1
-rw-r--r--arch/powerpc/mm/numa.c2
-rw-r--r--arch/powerpc/platforms/iseries/setup.c2
5 files changed, 3 insertions, 15 deletions
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 6309a1a17c4a..2eccd0e159e3 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -78,15 +78,13 @@ extern struct rtas_t rtas;
78extern struct lmb lmb; 78extern struct lmb lmb;
79extern unsigned long klimit; 79extern unsigned long klimit;
80 80
81static unsigned long memory_limit;
82
83static int __initdata dt_root_addr_cells; 81static int __initdata dt_root_addr_cells;
84static int __initdata dt_root_size_cells; 82static int __initdata dt_root_size_cells;
85 83
86#ifdef CONFIG_PPC64 84#ifdef CONFIG_PPC64
87static int __initdata iommu_is_off; 85static int __initdata iommu_is_off;
88int __initdata iommu_force_on; 86int __initdata iommu_force_on;
89extern unsigned long tce_alloc_start, tce_alloc_end; 87unsigned long tce_alloc_start, tce_alloc_end;
90#endif 88#endif
91 89
92typedef u32 cell_t; 90typedef u32 cell_t;
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 681537f8ea10..40c48100bf1b 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -631,15 +631,6 @@ static int ppc64_panic_event(struct notifier_block *this,
631 return NOTIFY_DONE; 631 return NOTIFY_DONE;
632} 632}
633 633
634/*
635 * These three variables are used to save values passed to us by prom_init()
636 * via the device tree. The TCE variables are needed because with a memory_limit
637 * in force we may need to explicitly map the TCE are at the top of RAM.
638 */
639unsigned long memory_limit;
640unsigned long tce_alloc_start;
641unsigned long tce_alloc_end;
642
643#ifdef CONFIG_PPC_ISERIES 634#ifdef CONFIG_PPC_ISERIES
644/* 635/*
645 * On iSeries we just parse the mem=X option from the command line. 636 * On iSeries we just parse the mem=X option from the command line.
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 3ca331728d21..e43e8ef70088 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -59,6 +59,7 @@
59 59
60int init_bootmem_done; 60int init_bootmem_done;
61int mem_init_done; 61int mem_init_done;
62unsigned long memory_limit;
62 63
63/* 64/*
64 * This is called by /dev/mem to know if a given address has to 65 * This is called by /dev/mem to know if a given address has to
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index cb864b8f2750..4035cad8d7f1 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -20,6 +20,7 @@
20#include <asm/lmb.h> 20#include <asm/lmb.h>
21#include <asm/machdep.h> 21#include <asm/machdep.h>
22#include <asm/abs_addr.h> 22#include <asm/abs_addr.h>
23#include <asm/system.h>
23 24
24static int numa_enabled = 1; 25static int numa_enabled = 1;
25 26
@@ -300,7 +301,6 @@ static unsigned long __init numa_enforce_memory_limit(unsigned long start, unsig
300 * we've already adjusted it for the limit and it takes care of 301 * we've already adjusted it for the limit and it takes care of
301 * having memory holes below the limit. 302 * having memory holes below the limit.
302 */ 303 */
303 extern unsigned long memory_limit;
304 304
305 if (! memory_limit) 305 if (! memory_limit)
306 return size; 306 return size;
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index b27901481782..1544c6f10a38 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -302,8 +302,6 @@ static void __init iSeries_get_cmdline(void)
302 302
303static void __init iSeries_init_early(void) 303static void __init iSeries_init_early(void)
304{ 304{
305 extern unsigned long memory_limit;
306
307 DBG(" -> iSeries_init_early()\n"); 305 DBG(" -> iSeries_init_early()\n");
308 306
309 ppc64_firmware_features = FW_FEATURE_ISERIES; 307 ppc64_firmware_features = FW_FEATURE_ISERIES;