[IA64] IA64 Kexec/kdump
Changes and updates. 1. Remove fake rendz path and related code according to discuss with Khalid Aziz. 2. fc.i offset fix in relocate_kernel.S. 3. iospic shutdown code eoi and mask race fix from Fujitsu. 4. Warm boot hook in machine_kexec to SN SAL code from Jack Steiner. 5. Send slave to SAL slave loop patch from Jay Lan. 6. Kdump on non-recoverable MCA event patch from Jay Lan 7. Use CTL_UNNUMBERED in kdump_on_init sysctl. Signed-off-by: Zou Nan hai <nanhai.zou@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
@@ -43,6 +43,8 @@
|
||||
#include <linux/initrd.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/kexec.h>
|
||||
#include <linux/crash_dump.h>
|
||||
|
||||
#include <asm/ia32.h>
|
||||
#include <asm/machvec.h>
|
||||
@@ -252,6 +254,41 @@ reserve_memory (void)
|
||||
efi_memmap_init(&rsvd_region[n].start, &rsvd_region[n].end);
|
||||
n++;
|
||||
|
||||
#ifdef CONFIG_KEXEC
|
||||
/* crashkernel=size@offset specifies the size to reserve for a crash
|
||||
* kernel.(offset is ingored for keep compatibility with other archs)
|
||||
* By reserving this memory we guarantee that linux never set's it
|
||||
* up as a DMA target.Useful for holding code to do something
|
||||
* appropriate after a kernel panic.
|
||||
*/
|
||||
{
|
||||
char *from = strstr(saved_command_line, "crashkernel=");
|
||||
unsigned long base, size;
|
||||
if (from) {
|
||||
size = memparse(from + 12, &from);
|
||||
if (size) {
|
||||
sort_regions(rsvd_region, n);
|
||||
base = kdump_find_rsvd_region(size,
|
||||
rsvd_region, n);
|
||||
if (base != ~0UL) {
|
||||
rsvd_region[n].start =
|
||||
(unsigned long)__va(base);
|
||||
rsvd_region[n].end =
|
||||
(unsigned long)__va(base + size);
|
||||
n++;
|
||||
crashk_res.start = base;
|
||||
crashk_res.end = base + size - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
efi_memmap_res.start = ia64_boot_param->efi_memmap;
|
||||
efi_memmap_res.end = efi_memmap_res.start +
|
||||
ia64_boot_param->efi_memmap_size;
|
||||
boot_param_res.start = __pa(ia64_boot_param);
|
||||
boot_param_res.end = boot_param_res.start +
|
||||
sizeof(*ia64_boot_param);
|
||||
}
|
||||
#endif
|
||||
/* end of memory marker */
|
||||
rsvd_region[n].start = ~0UL;
|
||||
rsvd_region[n].end = ~0UL;
|
||||
@@ -263,6 +300,7 @@ reserve_memory (void)
|
||||
sort_regions(rsvd_region, num_rsvd_regions);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* find_initrd - get initrd parameters from the boot parameter structure
|
||||
*
|
||||
|
Reference in New Issue
Block a user