diff options
author | Sage Weil <sage@inktank.com> | 2013-08-15 14:11:45 -0400 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-15 14:11:45 -0400 |
commit | ee3e542fec6e69bc9fb668698889a37d93950ddf (patch) | |
tree | e74ee766a4764769ef1d3d45d266b4dea64101d3 /arch/m32r | |
parent | fe2a801b50c0bb8039d627e5ae1fec249d10ff39 (diff) | |
parent | f1d6e17f540af37bb1891480143669ba7636c4cf (diff) |
Merge remote-tracking branch 'linus/master' into testing
Diffstat (limited to 'arch/m32r')
-rw-r--r-- | arch/m32r/Kconfig | 1 | ||||
-rw-r--r-- | arch/m32r/Kconfig.debug | 7 | ||||
-rw-r--r-- | arch/m32r/include/asm/pgtable.h | 3 | ||||
-rw-r--r-- | arch/m32r/include/asm/uaccess.h | 12 | ||||
-rw-r--r-- | arch/m32r/include/uapi/asm/socket.h | 2 | ||||
-rw-r--r-- | arch/m32r/kernel/smpboot.c | 2 | ||||
-rw-r--r-- | arch/m32r/mm/discontig.c | 6 | ||||
-rw-r--r-- | arch/m32r/mm/init.c | 68 |
8 files changed, 21 insertions, 80 deletions
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig index bcd17b206571..29a7ef4e448b 100644 --- a/arch/m32r/Kconfig +++ b/arch/m32r/Kconfig | |||
@@ -16,6 +16,7 @@ config M32R | |||
16 | select GENERIC_ATOMIC64 | 16 | select GENERIC_ATOMIC64 |
17 | select ARCH_USES_GETTIMEOFFSET | 17 | select ARCH_USES_GETTIMEOFFSET |
18 | select MODULES_USE_ELF_RELA | 18 | select MODULES_USE_ELF_RELA |
19 | select HAVE_DEBUG_STACKOVERFLOW | ||
19 | 20 | ||
20 | config SBUS | 21 | config SBUS |
21 | bool | 22 | bool |
diff --git a/arch/m32r/Kconfig.debug b/arch/m32r/Kconfig.debug index bb1afc1a31cc..6c612b7691b0 100644 --- a/arch/m32r/Kconfig.debug +++ b/arch/m32r/Kconfig.debug | |||
@@ -2,13 +2,6 @@ menu "Kernel hacking" | |||
2 | 2 | ||
3 | source "lib/Kconfig.debug" | 3 | source "lib/Kconfig.debug" |
4 | 4 | ||
5 | config DEBUG_STACKOVERFLOW | ||
6 | bool "Check for stack overflows" | ||
7 | depends on DEBUG_KERNEL | ||
8 | help | ||
9 | This option will cause messages to be printed if free stack space | ||
10 | drops below a certain limit. | ||
11 | |||
12 | config DEBUG_PAGEALLOC | 5 | config DEBUG_PAGEALLOC |
13 | bool "Debug page memory allocations" | 6 | bool "Debug page memory allocations" |
14 | depends on DEBUG_KERNEL && BROKEN | 7 | depends on DEBUG_KERNEL && BROKEN |
diff --git a/arch/m32r/include/asm/pgtable.h b/arch/m32r/include/asm/pgtable.h index 8a28cfea2729..103ce6710f07 100644 --- a/arch/m32r/include/asm/pgtable.h +++ b/arch/m32r/include/asm/pgtable.h | |||
@@ -347,9 +347,6 @@ static inline void pmd_set(pmd_t * pmdp, pte_t * ptep) | |||
347 | /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ | 347 | /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ |
348 | #define kern_addr_valid(addr) (1) | 348 | #define kern_addr_valid(addr) (1) |
349 | 349 | ||
350 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ | ||
351 | remap_pfn_range(vma, vaddr, pfn, size, prot) | ||
352 | |||
353 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 350 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
354 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 351 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
355 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT | 352 | #define __HAVE_ARCH_PTEP_SET_WRPROTECT |
diff --git a/arch/m32r/include/asm/uaccess.h b/arch/m32r/include/asm/uaccess.h index 1c7047bea200..84fe7ba53035 100644 --- a/arch/m32r/include/asm/uaccess.h +++ b/arch/m32r/include/asm/uaccess.h | |||
@@ -216,7 +216,7 @@ extern int fixup_exception(struct pt_regs *regs); | |||
216 | ({ \ | 216 | ({ \ |
217 | long __gu_err = 0; \ | 217 | long __gu_err = 0; \ |
218 | unsigned long __gu_val; \ | 218 | unsigned long __gu_val; \ |
219 | might_sleep(); \ | 219 | might_fault(); \ |
220 | __get_user_size(__gu_val,(ptr),(size),__gu_err); \ | 220 | __get_user_size(__gu_val,(ptr),(size),__gu_err); \ |
221 | (x) = (__typeof__(*(ptr)))__gu_val; \ | 221 | (x) = (__typeof__(*(ptr)))__gu_val; \ |
222 | __gu_err; \ | 222 | __gu_err; \ |
@@ -227,7 +227,7 @@ extern int fixup_exception(struct pt_regs *regs); | |||
227 | long __gu_err = -EFAULT; \ | 227 | long __gu_err = -EFAULT; \ |
228 | unsigned long __gu_val = 0; \ | 228 | unsigned long __gu_val = 0; \ |
229 | const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ | 229 | const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
230 | might_sleep(); \ | 230 | might_fault(); \ |
231 | if (access_ok(VERIFY_READ,__gu_addr,size)) \ | 231 | if (access_ok(VERIFY_READ,__gu_addr,size)) \ |
232 | __get_user_size(__gu_val,__gu_addr,(size),__gu_err); \ | 232 | __get_user_size(__gu_val,__gu_addr,(size),__gu_err); \ |
233 | (x) = (__typeof__(*(ptr)))__gu_val; \ | 233 | (x) = (__typeof__(*(ptr)))__gu_val; \ |
@@ -295,7 +295,7 @@ do { \ | |||
295 | #define __put_user_nocheck(x,ptr,size) \ | 295 | #define __put_user_nocheck(x,ptr,size) \ |
296 | ({ \ | 296 | ({ \ |
297 | long __pu_err; \ | 297 | long __pu_err; \ |
298 | might_sleep(); \ | 298 | might_fault(); \ |
299 | __put_user_size((x),(ptr),(size),__pu_err); \ | 299 | __put_user_size((x),(ptr),(size),__pu_err); \ |
300 | __pu_err; \ | 300 | __pu_err; \ |
301 | }) | 301 | }) |
@@ -305,7 +305,7 @@ do { \ | |||
305 | ({ \ | 305 | ({ \ |
306 | long __pu_err = -EFAULT; \ | 306 | long __pu_err = -EFAULT; \ |
307 | __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ | 307 | __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ |
308 | might_sleep(); \ | 308 | might_fault(); \ |
309 | if (access_ok(VERIFY_WRITE,__pu_addr,size)) \ | 309 | if (access_ok(VERIFY_WRITE,__pu_addr,size)) \ |
310 | __put_user_size((x),__pu_addr,(size),__pu_err); \ | 310 | __put_user_size((x),__pu_addr,(size),__pu_err); \ |
311 | __pu_err; \ | 311 | __pu_err; \ |
@@ -597,7 +597,7 @@ unsigned long __generic_copy_from_user(void *, const void __user *, unsigned lon | |||
597 | */ | 597 | */ |
598 | #define copy_to_user(to,from,n) \ | 598 | #define copy_to_user(to,from,n) \ |
599 | ({ \ | 599 | ({ \ |
600 | might_sleep(); \ | 600 | might_fault(); \ |
601 | __generic_copy_to_user((to),(from),(n)); \ | 601 | __generic_copy_to_user((to),(from),(n)); \ |
602 | }) | 602 | }) |
603 | 603 | ||
@@ -638,7 +638,7 @@ unsigned long __generic_copy_from_user(void *, const void __user *, unsigned lon | |||
638 | */ | 638 | */ |
639 | #define copy_from_user(to,from,n) \ | 639 | #define copy_from_user(to,from,n) \ |
640 | ({ \ | 640 | ({ \ |
641 | might_sleep(); \ | 641 | might_fault(); \ |
642 | __generic_copy_from_user((to),(from),(n)); \ | 642 | __generic_copy_from_user((to),(from),(n)); \ |
643 | }) | 643 | }) |
644 | 644 | ||
diff --git a/arch/m32r/include/uapi/asm/socket.h b/arch/m32r/include/uapi/asm/socket.h index 2a3b59e0e171..24be7c8da86a 100644 --- a/arch/m32r/include/uapi/asm/socket.h +++ b/arch/m32r/include/uapi/asm/socket.h | |||
@@ -74,4 +74,6 @@ | |||
74 | 74 | ||
75 | #define SO_SELECT_ERR_QUEUE 45 | 75 | #define SO_SELECT_ERR_QUEUE 45 |
76 | 76 | ||
77 | #define SO_BUSY_POLL 46 | ||
78 | |||
77 | #endif /* _ASM_M32R_SOCKET_H */ | 79 | #endif /* _ASM_M32R_SOCKET_H */ |
diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c index 0ac558adc605..bb21f4f63170 100644 --- a/arch/m32r/kernel/smpboot.c +++ b/arch/m32r/kernel/smpboot.c | |||
@@ -343,7 +343,7 @@ static void __init do_boot_cpu(int phys_id) | |||
343 | } | 343 | } |
344 | } | 344 | } |
345 | 345 | ||
346 | int __cpuinit __cpu_up(unsigned int cpu_id, struct task_struct *tidle) | 346 | int __cpu_up(unsigned int cpu_id, struct task_struct *tidle) |
347 | { | 347 | { |
348 | int timeout; | 348 | int timeout; |
349 | 349 | ||
diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c index 2c468e8b5853..27196303ce36 100644 --- a/arch/m32r/mm/discontig.c +++ b/arch/m32r/mm/discontig.c | |||
@@ -129,11 +129,10 @@ unsigned long __init setup_memory(void) | |||
129 | #define START_PFN(nid) (NODE_DATA(nid)->bdata->node_min_pfn) | 129 | #define START_PFN(nid) (NODE_DATA(nid)->bdata->node_min_pfn) |
130 | #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) | 130 | #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) |
131 | 131 | ||
132 | unsigned long __init zone_sizes_init(void) | 132 | void __init zone_sizes_init(void) |
133 | { | 133 | { |
134 | unsigned long zones_size[MAX_NR_ZONES], zholes_size[MAX_NR_ZONES]; | 134 | unsigned long zones_size[MAX_NR_ZONES], zholes_size[MAX_NR_ZONES]; |
135 | unsigned long low, start_pfn; | 135 | unsigned long low, start_pfn; |
136 | unsigned long holes = 0; | ||
137 | int nid, i; | 136 | int nid, i; |
138 | mem_prof_t *mp; | 137 | mem_prof_t *mp; |
139 | 138 | ||
@@ -147,7 +146,6 @@ unsigned long __init zone_sizes_init(void) | |||
147 | low = MAX_LOW_PFN(nid); | 146 | low = MAX_LOW_PFN(nid); |
148 | zones_size[ZONE_DMA] = low - start_pfn; | 147 | zones_size[ZONE_DMA] = low - start_pfn; |
149 | zholes_size[ZONE_DMA] = mp->holes; | 148 | zholes_size[ZONE_DMA] = mp->holes; |
150 | holes += zholes_size[ZONE_DMA]; | ||
151 | 149 | ||
152 | node_set_state(nid, N_NORMAL_MEMORY); | 150 | node_set_state(nid, N_NORMAL_MEMORY); |
153 | free_area_init_node(nid, zones_size, start_pfn, zholes_size); | 151 | free_area_init_node(nid, zones_size, start_pfn, zholes_size); |
@@ -161,6 +159,4 @@ unsigned long __init zone_sizes_init(void) | |||
161 | NODE_DATA(1)->node_zones->watermark[WMARK_MIN] = 0; | 159 | NODE_DATA(1)->node_zones->watermark[WMARK_MIN] = 0; |
162 | NODE_DATA(1)->node_zones->watermark[WMARK_LOW] = 0; | 160 | NODE_DATA(1)->node_zones->watermark[WMARK_LOW] = 0; |
163 | NODE_DATA(1)->node_zones->watermark[WMARK_HIGH] = 0; | 161 | NODE_DATA(1)->node_zones->watermark[WMARK_HIGH] = 0; |
164 | |||
165 | return holes; | ||
166 | } | 162 | } |
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c index ab4cbce91a9b..0d4146f644dc 100644 --- a/arch/m32r/mm/init.c +++ b/arch/m32r/mm/init.c | |||
@@ -40,7 +40,6 @@ unsigned long mmu_context_cache_dat; | |||
40 | #else | 40 | #else |
41 | unsigned long mmu_context_cache_dat[NR_CPUS]; | 41 | unsigned long mmu_context_cache_dat[NR_CPUS]; |
42 | #endif | 42 | #endif |
43 | static unsigned long hole_pages; | ||
44 | 43 | ||
45 | /* | 44 | /* |
46 | * function prototype | 45 | * function prototype |
@@ -57,7 +56,7 @@ void free_initrd_mem(unsigned long, unsigned long); | |||
57 | #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) | 56 | #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) |
58 | 57 | ||
59 | #ifndef CONFIG_DISCONTIGMEM | 58 | #ifndef CONFIG_DISCONTIGMEM |
60 | unsigned long __init zone_sizes_init(void) | 59 | void __init zone_sizes_init(void) |
61 | { | 60 | { |
62 | unsigned long zones_size[MAX_NR_ZONES] = {0, }; | 61 | unsigned long zones_size[MAX_NR_ZONES] = {0, }; |
63 | unsigned long max_dma; | 62 | unsigned long max_dma; |
@@ -83,11 +82,9 @@ unsigned long __init zone_sizes_init(void) | |||
83 | #endif /* CONFIG_MMU */ | 82 | #endif /* CONFIG_MMU */ |
84 | 83 | ||
85 | free_area_init_node(0, zones_size, start_pfn, 0); | 84 | free_area_init_node(0, zones_size, start_pfn, 0); |
86 | |||
87 | return 0; | ||
88 | } | 85 | } |
89 | #else /* CONFIG_DISCONTIGMEM */ | 86 | #else /* CONFIG_DISCONTIGMEM */ |
90 | extern unsigned long zone_sizes_init(void); | 87 | extern void zone_sizes_init(void); |
91 | #endif /* CONFIG_DISCONTIGMEM */ | 88 | #endif /* CONFIG_DISCONTIGMEM */ |
92 | 89 | ||
93 | /*======================================================================* | 90 | /*======================================================================* |
@@ -105,24 +102,7 @@ void __init paging_init(void) | |||
105 | for (i = 0 ; i < USER_PTRS_PER_PGD * 2 ; i++) | 102 | for (i = 0 ; i < USER_PTRS_PER_PGD * 2 ; i++) |
106 | pgd_val(pg_dir[i]) = 0; | 103 | pgd_val(pg_dir[i]) = 0; |
107 | #endif /* CONFIG_MMU */ | 104 | #endif /* CONFIG_MMU */ |
108 | hole_pages = zone_sizes_init(); | 105 | zone_sizes_init(); |
109 | } | ||
110 | |||
111 | int __init reservedpages_count(void) | ||
112 | { | ||
113 | int reservedpages, nid, i; | ||
114 | |||
115 | reservedpages = 0; | ||
116 | for_each_online_node(nid) { | ||
117 | unsigned long flags; | ||
118 | pgdat_resize_lock(NODE_DATA(nid), &flags); | ||
119 | for (i = 0 ; i < MAX_LOW_PFN(nid) - START_PFN(nid) ; i++) | ||
120 | if (PageReserved(nid_page_nr(nid, i))) | ||
121 | reservedpages++; | ||
122 | pgdat_resize_unlock(NODE_DATA(nid), &flags); | ||
123 | } | ||
124 | |||
125 | return reservedpages; | ||
126 | } | 106 | } |
127 | 107 | ||
128 | /*======================================================================* | 108 | /*======================================================================* |
@@ -131,48 +111,20 @@ int __init reservedpages_count(void) | |||
131 | *======================================================================*/ | 111 | *======================================================================*/ |
132 | void __init mem_init(void) | 112 | void __init mem_init(void) |
133 | { | 113 | { |
134 | int codesize, reservedpages, datasize, initsize; | ||
135 | int nid; | ||
136 | #ifndef CONFIG_MMU | 114 | #ifndef CONFIG_MMU |
137 | extern unsigned long memory_end; | 115 | extern unsigned long memory_end; |
138 | #endif | ||
139 | |||
140 | num_physpages = 0; | ||
141 | for_each_online_node(nid) | ||
142 | num_physpages += MAX_LOW_PFN(nid) - START_PFN(nid) + 1; | ||
143 | |||
144 | num_physpages -= hole_pages; | ||
145 | 116 | ||
146 | #ifndef CONFIG_DISCONTIGMEM | ||
147 | max_mapnr = num_physpages; | ||
148 | #endif /* CONFIG_DISCONTIGMEM */ | ||
149 | |||
150 | #ifdef CONFIG_MMU | ||
151 | high_memory = (void *)__va(PFN_PHYS(MAX_LOW_PFN(0))); | ||
152 | #else | ||
153 | high_memory = (void *)(memory_end & PAGE_MASK); | 117 | high_memory = (void *)(memory_end & PAGE_MASK); |
118 | #else | ||
119 | high_memory = (void *)__va(PFN_PHYS(MAX_LOW_PFN(0))); | ||
154 | #endif /* CONFIG_MMU */ | 120 | #endif /* CONFIG_MMU */ |
155 | 121 | ||
156 | /* clear the zero-page */ | 122 | /* clear the zero-page */ |
157 | memset(empty_zero_page, 0, PAGE_SIZE); | 123 | memset(empty_zero_page, 0, PAGE_SIZE); |
158 | 124 | ||
159 | /* this will put all low memory onto the freelists */ | 125 | set_max_mapnr(get_num_physpages()); |
160 | for_each_online_node(nid) | 126 | free_all_bootmem(); |
161 | totalram_pages += free_all_bootmem_node(NODE_DATA(nid)); | 127 | mem_init_print_info(NULL); |
162 | |||
163 | reservedpages = reservedpages_count() - hole_pages; | ||
164 | codesize = (unsigned long) &_etext - (unsigned long)&_text; | ||
165 | datasize = (unsigned long) &_edata - (unsigned long)&_etext; | ||
166 | initsize = (unsigned long) &__init_end - (unsigned long)&__init_begin; | ||
167 | |||
168 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " | ||
169 | "%dk reserved, %dk data, %dk init)\n", | ||
170 | nr_free_pages() << (PAGE_SHIFT-10), | ||
171 | num_physpages << (PAGE_SHIFT-10), | ||
172 | codesize >> 10, | ||
173 | reservedpages << (PAGE_SHIFT-10), | ||
174 | datasize >> 10, | ||
175 | initsize >> 10); | ||
176 | } | 128 | } |
177 | 129 | ||
178 | /*======================================================================* | 130 | /*======================================================================* |
@@ -181,7 +133,7 @@ void __init mem_init(void) | |||
181 | *======================================================================*/ | 133 | *======================================================================*/ |
182 | void free_initmem(void) | 134 | void free_initmem(void) |
183 | { | 135 | { |
184 | free_initmem_default(0); | 136 | free_initmem_default(-1); |
185 | } | 137 | } |
186 | 138 | ||
187 | #ifdef CONFIG_BLK_DEV_INITRD | 139 | #ifdef CONFIG_BLK_DEV_INITRD |
@@ -191,6 +143,6 @@ void free_initmem(void) | |||
191 | *======================================================================*/ | 143 | *======================================================================*/ |
192 | void free_initrd_mem(unsigned long start, unsigned long end) | 144 | void free_initrd_mem(unsigned long start, unsigned long end) |
193 | { | 145 | { |
194 | free_reserved_area(start, end, 0, "initrd"); | 146 | free_reserved_area((void *)start, (void *)end, -1, "initrd"); |
195 | } | 147 | } |
196 | #endif | 148 | #endif |