diff options
author | Yoichi Yuasa <yuasa@hh.iij4u.or.jp> | 2005-06-25 17:54:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-25 19:24:25 -0400 |
commit | b4819b593740a6d11db07b52e0fe35975b29a185 (patch) | |
tree | 3e697be3b75988432596131ccde17c33d2318650 | |
parent | 7919a693bd735ed0aa93fc359ae09a588cfeb3bc (diff) |
[PATCH] mips: add MIPS-specific support for flatmem/discontigmem
2.6.12-git6 doesn't boot on some MIPS machines. They need the support of flat
memory and discontig memory.
Signed-off-by: Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/mips/Kconfig | 6 | ||||
-rw-r--r-- | arch/mips/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/mips/mm/init.c | 4 | ||||
-rw-r--r-- | arch/mips/mm/pgtable.c | 2 | ||||
-rw-r--r-- | include/asm-mips/mmzone.h | 4 | ||||
-rw-r--r-- | include/asm-mips/page.h | 2 | ||||
-rw-r--r-- | include/asm-mips/pgtable.h | 2 |
7 files changed, 19 insertions, 5 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 94f5a8eb2c22..bd9de7b00c0a 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -1416,6 +1416,12 @@ config HIGHMEM | |||
1416 | bool "High Memory Support" | 1416 | bool "High Memory Support" |
1417 | depends on MIPS32 && (CPU_R3000 || CPU_SB1 || CPU_R7000 || CPU_RM9000 || CPU_R10000) && !(MACH_DECSTATION || MOMENCO_JAGUAR_ATX) | 1417 | depends on MIPS32 && (CPU_R3000 || CPU_SB1 || CPU_R7000 || CPU_RM9000 || CPU_R10000) && !(MACH_DECSTATION || MOMENCO_JAGUAR_ATX) |
1418 | 1418 | ||
1419 | config ARCH_FLATMEM_ENABLE | ||
1420 | def_bool y | ||
1421 | depends on !NUMA | ||
1422 | |||
1423 | source "mm/Kconfig" | ||
1424 | |||
1419 | config SMP | 1425 | config SMP |
1420 | bool "Multi-Processing support" | 1426 | bool "Multi-Processing support" |
1421 | depends on CPU_RM9000 || (SIBYTE_SB1250 && !SIBYTE_STANDALONE) || SGI_IP27 | 1427 | depends on CPU_RM9000 || (SIBYTE_SB1250 && !SIBYTE_STANDALONE) || SGI_IP27 |
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 6018ca25aceb..3a240e3e004c 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/root_dev.h> | 33 | #include <linux/root_dev.h> |
34 | #include <linux/highmem.h> | 34 | #include <linux/highmem.h> |
35 | #include <linux/console.h> | 35 | #include <linux/console.h> |
36 | #include <linux/mmzone.h> | ||
36 | 37 | ||
37 | #include <asm/addrspace.h> | 38 | #include <asm/addrspace.h> |
38 | #include <asm/bootinfo.h> | 39 | #include <asm/bootinfo.h> |
@@ -356,6 +357,8 @@ static inline void bootmem_init(void) | |||
356 | } | 357 | } |
357 | #endif | 358 | #endif |
358 | 359 | ||
360 | memory_present(0, first_usable_pfn, max_low_pfn); | ||
361 | |||
359 | /* Initialize the boot-time allocator with low memory only. */ | 362 | /* Initialize the boot-time allocator with low memory only. */ |
360 | bootmap_size = init_bootmem(first_usable_pfn, max_low_pfn); | 363 | bootmap_size = init_bootmem(first_usable_pfn, max_low_pfn); |
361 | 364 | ||
@@ -557,6 +560,7 @@ void __init setup_arch(char **cmdline_p) | |||
557 | 560 | ||
558 | parse_cmdline_early(); | 561 | parse_cmdline_early(); |
559 | bootmem_init(); | 562 | bootmem_init(); |
563 | sparse_init(); | ||
560 | paging_init(); | 564 | paging_init(); |
561 | resource_init(); | 565 | resource_init(); |
562 | } | 566 | } |
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 73843c528778..9c9a271c8a3a 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -128,7 +128,7 @@ static void __init fixrange_init(unsigned long start, unsigned long end, | |||
128 | #endif /* CONFIG_MIPS64 */ | 128 | #endif /* CONFIG_MIPS64 */ |
129 | #endif /* CONFIG_HIGHMEM */ | 129 | #endif /* CONFIG_HIGHMEM */ |
130 | 130 | ||
131 | #ifndef CONFIG_DISCONTIGMEM | 131 | #ifndef CONFIG_NEED_MULTIPLE_NODES |
132 | extern void pagetable_init(void); | 132 | extern void pagetable_init(void); |
133 | 133 | ||
134 | void __init paging_init(void) | 134 | void __init paging_init(void) |
@@ -253,7 +253,7 @@ void __init mem_init(void) | |||
253 | initsize >> 10, | 253 | initsize >> 10, |
254 | (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))); | 254 | (unsigned long) (totalhigh_pages << (PAGE_SHIFT-10))); |
255 | } | 255 | } |
256 | #endif /* !CONFIG_DISCONTIGMEM */ | 256 | #endif /* !CONFIG_NEED_MULTIPLE_NODES */ |
257 | 257 | ||
258 | #ifdef CONFIG_BLK_DEV_INITRD | 258 | #ifdef CONFIG_BLK_DEV_INITRD |
259 | void free_initrd_mem(unsigned long start, unsigned long end) | 259 | void free_initrd_mem(unsigned long start, unsigned long end) |
diff --git a/arch/mips/mm/pgtable.c b/arch/mips/mm/pgtable.c index 3b88fdeef329..3fe94202da8c 100644 --- a/arch/mips/mm/pgtable.c +++ b/arch/mips/mm/pgtable.c | |||
@@ -5,7 +5,7 @@ | |||
5 | 5 | ||
6 | void show_mem(void) | 6 | void show_mem(void) |
7 | { | 7 | { |
8 | #ifndef CONFIG_DISCONTIGMEM /* XXX(hch): later.. */ | 8 | #ifndef CONFIG_NEED_MULTIPLE_NODES /* XXX(hch): later.. */ |
9 | int pfn, total = 0, reserved = 0; | 9 | int pfn, total = 0, reserved = 0; |
10 | int shared = 0, cached = 0; | 10 | int shared = 0, cached = 0; |
11 | int highmem = 0; | 11 | int highmem = 0; |
diff --git a/include/asm-mips/mmzone.h b/include/asm-mips/mmzone.h index 29ee13be0b2a..d721143dbd47 100644 --- a/include/asm-mips/mmzone.h +++ b/include/asm-mips/mmzone.h | |||
@@ -8,6 +8,8 @@ | |||
8 | #include <asm/page.h> | 8 | #include <asm/page.h> |
9 | #include <mmzone.h> | 9 | #include <mmzone.h> |
10 | 10 | ||
11 | #ifdef CONFIG_DISCONTIGMEM | ||
12 | |||
11 | #define kvaddr_to_nid(kvaddr) pa_to_nid(__pa(kvaddr)) | 13 | #define kvaddr_to_nid(kvaddr) pa_to_nid(__pa(kvaddr)) |
12 | #define pfn_to_nid(pfn) pa_to_nid((pfn) << PAGE_SHIFT) | 14 | #define pfn_to_nid(pfn) pa_to_nid((pfn) << PAGE_SHIFT) |
13 | 15 | ||
@@ -36,4 +38,6 @@ | |||
36 | /* XXX: FIXME -- wli */ | 38 | /* XXX: FIXME -- wli */ |
37 | #define kern_addr_valid(addr) (0) | 39 | #define kern_addr_valid(addr) (0) |
38 | 40 | ||
41 | #endif /* CONFIG_DISCONTIGMEM */ | ||
42 | |||
39 | #endif /* _ASM_MMZONE_H_ */ | 43 | #endif /* _ASM_MMZONE_H_ */ |
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h index d1bf8240e73b..5cae35cd9ba9 100644 --- a/include/asm-mips/page.h +++ b/include/asm-mips/page.h | |||
@@ -127,7 +127,7 @@ static __inline__ int get_order(unsigned long size) | |||
127 | 127 | ||
128 | #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) | 128 | #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) |
129 | 129 | ||
130 | #ifndef CONFIG_DISCONTIGMEM | 130 | #ifndef CONFIG_NEED_MULTIPLE_NODES |
131 | #define pfn_to_page(pfn) (mem_map + (pfn)) | 131 | #define pfn_to_page(pfn) (mem_map + (pfn)) |
132 | #define page_to_pfn(page) ((unsigned long)((page) - mem_map)) | 132 | #define page_to_pfn(page) ((unsigned long)((page) - mem_map)) |
133 | #define pfn_valid(pfn) ((pfn) < max_mapnr) | 133 | #define pfn_valid(pfn) ((pfn) < max_mapnr) |
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h index 878843203d67..e76ccd6e3a5d 100644 --- a/include/asm-mips/pgtable.h +++ b/include/asm-mips/pgtable.h | |||
@@ -350,7 +350,7 @@ static inline void update_mmu_cache(struct vm_area_struct *vma, | |||
350 | __update_cache(vma, address, pte); | 350 | __update_cache(vma, address, pte); |
351 | } | 351 | } |
352 | 352 | ||
353 | #ifndef CONFIG_DISCONTIGMEM | 353 | #ifndef CONFIG_NEED_MULTIPLE_NODES |
354 | #define kern_addr_valid(addr) (1) | 354 | #define kern_addr_valid(addr) (1) |
355 | #endif | 355 | #endif |
356 | 356 | ||