diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/kernel/machine_kexec.c | 30 | ||||
-rw-r--r-- | arch/ia64/mm/discontig.c | 2 |
2 files changed, 31 insertions, 1 deletions
diff --git a/arch/ia64/kernel/machine_kexec.c b/arch/ia64/kernel/machine_kexec.c index 58e943a5d95..40f9c3e1922 100644 --- a/arch/ia64/kernel/machine_kexec.c +++ b/arch/ia64/kernel/machine_kexec.c @@ -15,6 +15,8 @@ #include <linux/cpu.h> #include <linux/irq.h> #include <linux/efi.h> +#include <linux/numa.h> +#include <linux/mmzone.h> #include <asm/mmu_context.h> #include <asm/setup.h> #include <asm/delay.h> @@ -121,3 +123,31 @@ void machine_kexec(struct kimage *image) unw_init_running(ia64_machine_kexec, image); for(;;); } + +void arch_crash_save_vmcoreinfo(void) +{ +#ifdef CONFIG_ARCH_DISCONTIGMEM_ENABLE + SYMBOL(pgdat_list); + LENGTH(pgdat_list, MAX_NUMNODES); + + SYMBOL(node_memblk); + LENGTH(node_memblk, NR_NODE_MEMBLKS); + SIZE(node_memblk_s); + OFFSET(node_memblk_s, start_paddr); + OFFSET(node_memblk_s, size); +#endif +#ifdef CONFIG_PGTABLE_3 + CONFIG(PGTABLE_3); +#elif CONFIG_PGTABLE_4 + CONFIG(PGTABLE_4); +#endif +} + +unsigned long paddr_vmcoreinfo_note(void) +{ + unsigned long vaddr, paddr; + vaddr = (unsigned long)(char *)&vmcoreinfo_note; + asm volatile ("tpa %0 = %1" : "=r"(paddr) : "r"(vaddr) : "memory"); + return paddr; +} + diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 5628067a74d..0b567398f38 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c @@ -48,7 +48,7 @@ struct early_node_data { static struct early_node_data mem_data[MAX_NUMNODES] __initdata; static nodemask_t memory_less_mask __initdata; -static pg_data_t *pgdat_list[MAX_NUMNODES]; +pg_data_t *pgdat_list[MAX_NUMNODES]; /* * To prevent cache aliasing effects, align per-node structures so that they |