aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m32r
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-08-15 14:11:45 -0400
committerSage Weil <sage@inktank.com>2013-08-15 14:11:45 -0400
commitee3e542fec6e69bc9fb668698889a37d93950ddf (patch)
treee74ee766a4764769ef1d3d45d266b4dea64101d3 /arch/m32r
parentfe2a801b50c0bb8039d627e5ae1fec249d10ff39 (diff)
parentf1d6e17f540af37bb1891480143669ba7636c4cf (diff)
Merge remote-tracking branch 'linus/master' into testing
Diffstat (limited to 'arch/m32r')
-rw-r--r--arch/m32r/Kconfig1
-rw-r--r--arch/m32r/Kconfig.debug7
-rw-r--r--arch/m32r/include/asm/pgtable.h3
-rw-r--r--arch/m32r/include/asm/uaccess.h12
-rw-r--r--arch/m32r/include/uapi/asm/socket.h2
-rw-r--r--arch/m32r/kernel/smpboot.c2
-rw-r--r--arch/m32r/mm/discontig.c6
-rw-r--r--arch/m32r/mm/init.c68
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
20config SBUS 21config 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
3source "lib/Kconfig.debug" 3source "lib/Kconfig.debug"
4 4
5config 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
12config DEBUG_PAGEALLOC 5config 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
346int __cpuinit __cpu_up(unsigned int cpu_id, struct task_struct *tidle) 346int __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
132unsigned long __init zone_sizes_init(void) 132void __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
41unsigned long mmu_context_cache_dat[NR_CPUS]; 41unsigned long mmu_context_cache_dat[NR_CPUS];
42#endif 42#endif
43static 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
60unsigned long __init zone_sizes_init(void) 59void __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 */
90extern unsigned long zone_sizes_init(void); 87extern 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
111int __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 *======================================================================*/
132void __init mem_init(void) 112void __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 *======================================================================*/
182void free_initmem(void) 134void 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 *======================================================================*/
192void free_initrd_mem(unsigned long start, unsigned long end) 144void 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