summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-02-21 21:06:55 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-21 21:06:55 -0500
commit2ef14f465b9e096531343f5b734cffc5f759f4a6 (patch)
tree07b504d7105842a4b1a74cf1e153023a02fb9c1e /include
parentcb715a836642e0ec69350670d1c2f800f3e2d2e4 (diff)
parent0da3e7f526fde7a6522a3038b7ce609fc50f6707 (diff)
Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 mm changes from Peter Anvin: "This is a huge set of several partly interrelated (and concurrently developed) changes, which is why the branch history is messier than one would like. The *really* big items are two humonguous patchsets mostly developed by Yinghai Lu at my request, which completely revamps the way we create initial page tables. In particular, rather than estimating how much memory we will need for page tables and then build them into that memory -- a calculation that has shown to be incredibly fragile -- we now build them (on 64 bits) with the aid of a "pseudo-linear mode" -- a #PF handler which creates temporary page tables on demand. This has several advantages: 1. It makes it much easier to support things that need access to data very early (a followon patchset uses this to load microcode way early in the kernel startup). 2. It allows the kernel and all the kernel data objects to be invoked from above the 4 GB limit. This allows kdump to work on very large systems. 3. It greatly reduces the difference between Xen and native (Xen's equivalent of the #PF handler are the temporary page tables created by the domain builder), eliminating a bunch of fragile hooks. The patch series also gets us a bit closer to W^X. Additional work in this pull is the 64-bit get_user() work which you were also involved with, and a bunch of cleanups/speedups to __phys_addr()/__pa()." * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (105 commits) x86, mm: Move reserving low memory later in initialization x86, doc: Clarify the use of asm("%edx") in uaccess.h x86, mm: Redesign get_user with a __builtin_choose_expr hack x86: Be consistent with data size in getuser.S x86, mm: Use a bitfield to mask nuisance get_user() warnings x86/kvm: Fix compile warning in kvm_register_steal_time() x86-32: Add support for 64bit get_user() x86-32, mm: Remove reference to alloc_remap() x86-32, mm: Remove reference to resume_map_numa_kva() x86-32, mm: Rip out x86_32 NUMA remapping code x86/numa: Use __pa_nodebug() instead x86: Don't panic if can not alloc buffer for swiotlb mm: Add alloc_bootmem_low_pages_nopanic() x86, 64bit, mm: hibernate use generic mapping_init x86, 64bit, mm: Mark data/bss/brk to nx x86: Merge early kernel reserve for 32bit and 64bit x86: Add Crash kernel low reservation x86, kdump: Remove crashkernel range find limit for 64bit memblock: Add memblock_mem_size() x86, boot: Not need to check setup_header version for setup_data ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/bootmem.h5
-rw-r--r--include/linux/kexec.h3
-rw-r--r--include/linux/memblock.h1
-rw-r--r--include/linux/mm.h1
-rw-r--r--include/linux/swiotlb.h2
5 files changed, 10 insertions, 2 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index 3f778c27f825..3cd16ba82f15 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -99,6 +99,9 @@ void *___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
99extern void *__alloc_bootmem_low(unsigned long size, 99extern void *__alloc_bootmem_low(unsigned long size,
100 unsigned long align, 100 unsigned long align,
101 unsigned long goal); 101 unsigned long goal);
102void *__alloc_bootmem_low_nopanic(unsigned long size,
103 unsigned long align,
104 unsigned long goal);
102extern void *__alloc_bootmem_low_node(pg_data_t *pgdat, 105extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
103 unsigned long size, 106 unsigned long size,
104 unsigned long align, 107 unsigned long align,
@@ -132,6 +135,8 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
132 135
133#define alloc_bootmem_low(x) \ 136#define alloc_bootmem_low(x) \
134 __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) 137 __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
138#define alloc_bootmem_low_pages_nopanic(x) \
139 __alloc_bootmem_low_nopanic(x, PAGE_SIZE, 0)
135#define alloc_bootmem_low_pages(x) \ 140#define alloc_bootmem_low_pages(x) \
136 __alloc_bootmem_low(x, PAGE_SIZE, 0) 141 __alloc_bootmem_low(x, PAGE_SIZE, 0)
137#define alloc_bootmem_low_pages_node(pgdat, x) \ 142#define alloc_bootmem_low_pages_node(pgdat, x) \
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index d0b8458a703a..d2e6927bbaae 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -191,6 +191,7 @@ extern struct kimage *kexec_crash_image;
191/* Location of a reserved region to hold the crash kernel. 191/* Location of a reserved region to hold the crash kernel.
192 */ 192 */
193extern struct resource crashk_res; 193extern struct resource crashk_res;
194extern struct resource crashk_low_res;
194typedef u32 note_buf_t[KEXEC_NOTE_BYTES/4]; 195typedef u32 note_buf_t[KEXEC_NOTE_BYTES/4];
195extern note_buf_t __percpu *crash_notes; 196extern note_buf_t __percpu *crash_notes;
196extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4]; 197extern u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
@@ -199,6 +200,8 @@ extern size_t vmcoreinfo_max_size;
199 200
200int __init parse_crashkernel(char *cmdline, unsigned long long system_ram, 201int __init parse_crashkernel(char *cmdline, unsigned long long system_ram,
201 unsigned long long *crash_size, unsigned long long *crash_base); 202 unsigned long long *crash_size, unsigned long long *crash_base);
203int parse_crashkernel_low(char *cmdline, unsigned long long system_ram,
204 unsigned long long *crash_size, unsigned long long *crash_base);
202int crash_shrink_memory(unsigned long new_size); 205int crash_shrink_memory(unsigned long new_size);
203size_t crash_get_memory_size(void); 206size_t crash_get_memory_size(void);
204void crash_free_reserved_phys_range(unsigned long begin, unsigned long end); 207void crash_free_reserved_phys_range(unsigned long begin, unsigned long end);
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index d452ee191066..f388203db7e8 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -155,6 +155,7 @@ phys_addr_t memblock_alloc_base(phys_addr_t size, phys_addr_t align,
155phys_addr_t __memblock_alloc_base(phys_addr_t size, phys_addr_t align, 155phys_addr_t __memblock_alloc_base(phys_addr_t size, phys_addr_t align,
156 phys_addr_t max_addr); 156 phys_addr_t max_addr);
157phys_addr_t memblock_phys_mem_size(void); 157phys_addr_t memblock_phys_mem_size(void);
158phys_addr_t memblock_mem_size(unsigned long limit_pfn);
158phys_addr_t memblock_start_of_DRAM(void); 159phys_addr_t memblock_start_of_DRAM(void);
159phys_addr_t memblock_end_of_DRAM(void); 160phys_addr_t memblock_end_of_DRAM(void);
160void memblock_enforce_memory_limit(phys_addr_t memory_limit); 161void memblock_enforce_memory_limit(phys_addr_t memory_limit);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 66e2f7c61e5c..9d9dcc35d6a1 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1386,7 +1386,6 @@ extern void __init mmap_init(void);
1386extern void show_mem(unsigned int flags); 1386extern void show_mem(unsigned int flags);
1387extern void si_meminfo(struct sysinfo * val); 1387extern void si_meminfo(struct sysinfo * val);
1388extern void si_meminfo_node(struct sysinfo *val, int nid); 1388extern void si_meminfo_node(struct sysinfo *val, int nid);
1389extern int after_bootmem;
1390 1389
1391extern __printf(3, 4) 1390extern __printf(3, 4)
1392void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...); 1391void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...);
diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
index 071d62c214a6..2de42f9401d2 100644
--- a/include/linux/swiotlb.h
+++ b/include/linux/swiotlb.h
@@ -23,7 +23,7 @@ extern int swiotlb_force;
23#define IO_TLB_SHIFT 11 23#define IO_TLB_SHIFT 11
24 24
25extern void swiotlb_init(int verbose); 25extern void swiotlb_init(int verbose);
26extern void swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose); 26int swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose);
27extern unsigned long swiotlb_nr_tbl(void); 27extern unsigned long swiotlb_nr_tbl(void);
28extern int swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs); 28extern int swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs);
29 29