diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-01-10 17:56:42 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-10 17:56:42 -0500 |
commit | 1de8cd3cb9f61e854e743c7210df43db517d4832 (patch) | |
tree | 2b69c5ba5e4094037fa04d0fcb6c4537c222cde8 /arch/x86/mm | |
parent | 1eb1b3b65dc3e3ffcc6a60e115c085c0c11c1077 (diff) | |
parent | 3d14bdad40315b54470cb7812293d14c8af2bf7d (diff) |
Merge branch 'linus' into x86/cleanups
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/fault.c | 24 | ||||
-rw-r--r-- | arch/x86/mm/init_32.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/init_64.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/numa_32.c | 4 |
4 files changed, 14 insertions, 22 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 57ec8c86a877..9e268b6b204e 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -667,7 +667,6 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code) | |||
667 | if (unlikely(in_atomic() || !mm)) | 667 | if (unlikely(in_atomic() || !mm)) |
668 | goto bad_area_nosemaphore; | 668 | goto bad_area_nosemaphore; |
669 | 669 | ||
670 | again: | ||
671 | /* | 670 | /* |
672 | * When running in the kernel we expect faults to occur only to | 671 | * When running in the kernel we expect faults to occur only to |
673 | * addresses in user space. All other faults represent errors in the | 672 | * addresses in user space. All other faults represent errors in the |
@@ -859,25 +858,14 @@ no_context: | |||
859 | oops_end(flags, regs, sig); | 858 | oops_end(flags, regs, sig); |
860 | #endif | 859 | #endif |
861 | 860 | ||
862 | /* | ||
863 | * We ran out of memory, or some other thing happened to us that made | ||
864 | * us unable to handle the page fault gracefully. | ||
865 | */ | ||
866 | out_of_memory: | 861 | out_of_memory: |
862 | /* | ||
863 | * We ran out of memory, call the OOM killer, and return the userspace | ||
864 | * (which will retry the fault, or kill us if we got oom-killed). | ||
865 | */ | ||
867 | up_read(&mm->mmap_sem); | 866 | up_read(&mm->mmap_sem); |
868 | if (is_global_init(tsk)) { | 867 | pagefault_out_of_memory(); |
869 | yield(); | 868 | return; |
870 | /* | ||
871 | * Re-lookup the vma - in theory the vma tree might | ||
872 | * have changed: | ||
873 | */ | ||
874 | goto again; | ||
875 | } | ||
876 | |||
877 | printk("VM: killing process %s\n", tsk->comm); | ||
878 | if (error_code & PF_USER) | ||
879 | do_group_exit(SIGKILL); | ||
880 | goto no_context; | ||
881 | 869 | ||
882 | do_sigbus: | 870 | do_sigbus: |
883 | up_read(&mm->mmap_sem); | 871 | up_read(&mm->mmap_sem); |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index a9dd0b7ad618..4a6989e47a53 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
@@ -327,6 +327,8 @@ int devmem_is_allowed(unsigned long pagenr) | |||
327 | { | 327 | { |
328 | if (pagenr <= 256) | 328 | if (pagenr <= 256) |
329 | return 1; | 329 | return 1; |
330 | if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) | ||
331 | return 0; | ||
330 | if (!page_is_ram(pagenr)) | 332 | if (!page_is_ram(pagenr)) |
331 | return 1; | 333 | return 1; |
332 | return 0; | 334 | return 0; |
@@ -1078,7 +1080,7 @@ int arch_add_memory(int nid, u64 start, u64 size) | |||
1078 | unsigned long start_pfn = start >> PAGE_SHIFT; | 1080 | unsigned long start_pfn = start >> PAGE_SHIFT; |
1079 | unsigned long nr_pages = size >> PAGE_SHIFT; | 1081 | unsigned long nr_pages = size >> PAGE_SHIFT; |
1080 | 1082 | ||
1081 | return __add_pages(zone, start_pfn, nr_pages); | 1083 | return __add_pages(nid, zone, start_pfn, nr_pages); |
1082 | } | 1084 | } |
1083 | #endif | 1085 | #endif |
1084 | 1086 | ||
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 9f7a0d24d42a..23f68e77ad1f 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -857,7 +857,7 @@ int arch_add_memory(int nid, u64 start, u64 size) | |||
857 | if (last_mapped_pfn > max_pfn_mapped) | 857 | if (last_mapped_pfn > max_pfn_mapped) |
858 | max_pfn_mapped = last_mapped_pfn; | 858 | max_pfn_mapped = last_mapped_pfn; |
859 | 859 | ||
860 | ret = __add_pages(zone, start_pfn, nr_pages); | 860 | ret = __add_pages(nid, zone, start_pfn, nr_pages); |
861 | WARN_ON_ONCE(ret); | 861 | WARN_ON_ONCE(ret); |
862 | 862 | ||
863 | return ret; | 863 | return ret; |
@@ -888,6 +888,8 @@ int devmem_is_allowed(unsigned long pagenr) | |||
888 | { | 888 | { |
889 | if (pagenr <= 256) | 889 | if (pagenr <= 256) |
890 | return 1; | 890 | return 1; |
891 | if (iomem_is_exclusive(pagenr << PAGE_SHIFT)) | ||
892 | return 0; | ||
891 | if (!page_is_ram(pagenr)) | 893 | if (!page_is_ram(pagenr)) |
892 | return 1; | 894 | return 1; |
893 | return 0; | 895 | return 0; |
diff --git a/arch/x86/mm/numa_32.c b/arch/x86/mm/numa_32.c index 8518c678d83f..d1f7439d173c 100644 --- a/arch/x86/mm/numa_32.c +++ b/arch/x86/mm/numa_32.c | |||
@@ -239,7 +239,7 @@ void resume_map_numa_kva(pgd_t *pgd_base) | |||
239 | start_pfn = node_remap_start_pfn[node]; | 239 | start_pfn = node_remap_start_pfn[node]; |
240 | size = node_remap_size[node]; | 240 | size = node_remap_size[node]; |
241 | 241 | ||
242 | printk(KERN_DEBUG "%s: node %d\n", __FUNCTION__, node); | 242 | printk(KERN_DEBUG "%s: node %d\n", __func__, node); |
243 | 243 | ||
244 | for (pfn = 0; pfn < size; pfn += PTRS_PER_PTE) { | 244 | for (pfn = 0; pfn < size; pfn += PTRS_PER_PTE) { |
245 | unsigned long vaddr = start_va + (pfn << PAGE_SHIFT); | 245 | unsigned long vaddr = start_va + (pfn << PAGE_SHIFT); |
@@ -251,7 +251,7 @@ void resume_map_numa_kva(pgd_t *pgd_base) | |||
251 | PAGE_KERNEL_LARGE_EXEC)); | 251 | PAGE_KERNEL_LARGE_EXEC)); |
252 | 252 | ||
253 | printk(KERN_DEBUG "%s: %08lx -> pfn %08lx\n", | 253 | printk(KERN_DEBUG "%s: %08lx -> pfn %08lx\n", |
254 | __FUNCTION__, vaddr, start_pfn + pfn); | 254 | __func__, vaddr, start_pfn + pfn); |
255 | } | 255 | } |
256 | } | 256 | } |
257 | } | 257 | } |