diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/kernel/machine_kexec.c | 30 | ||||
-rw-r--r-- | arch/ia64/mm/discontig.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/machine_kexec_32.c | 13 | ||||
-rw-r--r-- | arch/x86/kernel/machine_kexec_64.c | 9 |
4 files changed, 53 insertions, 1 deletions
diff --git a/arch/ia64/kernel/machine_kexec.c b/arch/ia64/kernel/machine_kexec.c index 58e943a5d95c..40f9c3e19220 100644 --- a/arch/ia64/kernel/machine_kexec.c +++ b/arch/ia64/kernel/machine_kexec.c | |||
@@ -15,6 +15,8 @@ | |||
15 | #include <linux/cpu.h> | 15 | #include <linux/cpu.h> |
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/efi.h> | 17 | #include <linux/efi.h> |
18 | #include <linux/numa.h> | ||
19 | #include <linux/mmzone.h> | ||
18 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
19 | #include <asm/setup.h> | 21 | #include <asm/setup.h> |
20 | #include <asm/delay.h> | 22 | #include <asm/delay.h> |
@@ -121,3 +123,31 @@ void machine_kexec(struct kimage *image) | |||
121 | unw_init_running(ia64_machine_kexec, image); | 123 | unw_init_running(ia64_machine_kexec, image); |
122 | for(;;); | 124 | for(;;); |
123 | } | 125 | } |
126 | |||
127 | void arch_crash_save_vmcoreinfo(void) | ||
128 | { | ||
129 | #ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE | ||
130 | SYMBOL(pgdat_list); | ||
131 | LENGTH(pgdat_list, MAX_NUMNODES); | ||
132 | |||
133 | SYMBOL(node_memblk); | ||
134 | LENGTH(node_memblk, NR_NODE_MEMBLKS); | ||
135 | SIZE(node_memblk_s); | ||
136 | OFFSET(node_memblk_s, start_paddr); | ||
137 | OFFSET(node_memblk_s, size); | ||
138 | #endif | ||
139 | #ifdef CONFIG_PGTABLE_3 | ||
140 | CONFIG(PGTABLE_3); | ||
141 | #elif CONFIG_PGTABLE_4 | ||
142 | CONFIG(PGTABLE_4); | ||
143 | #endif | ||
144 | } | ||
145 | |||
146 | unsigned long paddr_vmcoreinfo_note(void) | ||
147 | { | ||
148 | unsigned long vaddr, paddr; | ||
149 | vaddr = (unsigned long)(char *)&vmcoreinfo_note; | ||
150 | asm volatile ("tpa %0 = %1" : "=r"(paddr) : "r"(vaddr) : "memory"); | ||
151 | return paddr; | ||
152 | } | ||
153 | |||
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 5628067a74d2..0b567398f38e 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -48,7 +48,7 @@ struct early_node_data { | |||
48 | static struct early_node_data mem_data[MAX_NUMNODES] __initdata; | 48 | static struct early_node_data mem_data[MAX_NUMNODES] __initdata; |
49 | static nodemask_t memory_less_mask __initdata; | 49 | static nodemask_t memory_less_mask __initdata; |
50 | 50 | ||
51 | static pg_data_t *pgdat_list[MAX_NUMNODES]; | 51 | pg_data_t *pgdat_list[MAX_NUMNODES]; |
52 | 52 | ||
53 | /* | 53 | /* |
54 | * To prevent cache aliasing effects, align per-node structures so that they | 54 | * To prevent cache aliasing effects, align per-node structures so that they |
diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c index deda9a221cf2..ae20fa5afa62 100644 --- a/arch/x86/kernel/machine_kexec_32.c +++ b/arch/x86/kernel/machine_kexec_32.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/kexec.h> | 10 | #include <linux/kexec.h> |
11 | #include <linux/delay.h> | 11 | #include <linux/delay.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/numa.h> | ||
13 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
14 | #include <asm/pgalloc.h> | 15 | #include <asm/pgalloc.h> |
15 | #include <asm/tlbflush.h> | 16 | #include <asm/tlbflush.h> |
@@ -169,3 +170,15 @@ static int __init parse_crashkernel(char *arg) | |||
169 | return 0; | 170 | return 0; |
170 | } | 171 | } |
171 | early_param("crashkernel", parse_crashkernel); | 172 | early_param("crashkernel", parse_crashkernel); |
173 | |||
174 | void arch_crash_save_vmcoreinfo(void) | ||
175 | { | ||
176 | #ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE | ||
177 | SYMBOL(node_data); | ||
178 | LENGTH(node_data, MAX_NUMNODES); | ||
179 | #endif | ||
180 | #ifdef CONFIG_X86_PAE | ||
181 | CONFIG(X86_PAE); | ||
182 | #endif | ||
183 | } | ||
184 | |||
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index cd1899a2f0c5..e333ea110a58 100644 --- a/arch/x86/kernel/machine_kexec_64.c +++ b/arch/x86/kernel/machine_kexec_64.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/kexec.h> | 10 | #include <linux/kexec.h> |
11 | #include <linux/string.h> | 11 | #include <linux/string.h> |
12 | #include <linux/reboot.h> | 12 | #include <linux/reboot.h> |
13 | #include <linux/numa.h> | ||
13 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
14 | #include <asm/tlbflush.h> | 15 | #include <asm/tlbflush.h> |
15 | #include <asm/mmu_context.h> | 16 | #include <asm/mmu_context.h> |
@@ -257,3 +258,11 @@ static int __init setup_crashkernel(char *arg) | |||
257 | } | 258 | } |
258 | early_param("crashkernel", setup_crashkernel); | 259 | early_param("crashkernel", setup_crashkernel); |
259 | 260 | ||
261 | void arch_crash_save_vmcoreinfo(void) | ||
262 | { | ||
263 | #ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE | ||
264 | SYMBOL(node_data); | ||
265 | LENGTH(node_data, MAX_NUMNODES); | ||
266 | #endif | ||
267 | } | ||
268 | |||