summaryrefslogtreecommitdiff
path: root/purgatory/arch/ia64/entry.S
diff options
context:
space:
mode:
authorZou Nan hai <nanhai.zou@intel.com>2006-07-27 11:28:57 -0600
committerEric W. Biederman <ebiederm@xmission.com>2006-07-27 11:28:57 -0600
commit9241000f28eb6b86a06c0be2d6cf31498373bc1c (patch)
tree695d4baeb68efcc81784e469b4ed8e03c13e1fc6 /purgatory/arch/ia64/entry.S
parenta59caf2ae4f2027c3644551b03d5474d4d634ec5 (diff)
kdump ia64
On Fri, 2006-06-09 at 19:50, Welterlen Benoit wrote: > Zou Nan hai wrote: > > The ia64 kdump patch is in 2 parts. > > > > the kexec-kdump-ia64-2.6.16.patch should apply on top of the previous > > kexec patch by Khalid in Tony's test tree. > > > > the kexec-tools-kdump-ia64.patch should apply to kexec-tools-1.101 > > with kexec-tools-1.101-kdump.patch > > > > > > To test it. > > Build first SMP kernel with KEXEC and KDUMP enabled. > > > > Boot it with kernel parameter "crashkernel=XXX@YYY" > > means reserver XXX from YYY for crashdumping. > > Build an UP kernel with KEXEC KDUMP VMCORE enabled. > > load this kernel as a crashdumping kernel > > kexec -p vmlinux.gz --initrd=initrd --append="...." > > > > trigger a crash, > > maybe "echo c > /proc/sysrq-trigger" > > after the crash kernel boots, > > cp /proc/vmcore core > > > > gdb first_kernel_vmlinux core > > > > please test and review. > > > > Signed-off-by: Khalid Aziz <khalid_aziz@hp.com> > > Signed-off-by: Zou Nan hai <nanhai.zou@intel.com> > > > > > > https://lists.osdl.org/mailman/listinfo/fastboot > > > > Hello Nan hai, > > I tried your patches. It seems that the kexec-tools-kdump-ia64.patch > file can not be applied after the latest release of kexec-tools > http://lse.sourceforge.net/kdump/patches/1.101-kdump9/kexec-tools-1.101-kdump9.patch > > I modified it for that. (attached file). > > I have a question about kdump : > > When the second kernel is loaded, kexec checks if the segments of the > new kernel are in the reserved memory > > valid_memory_range in kexec/kexec.c : > if ((send > mem_max) || (sstart < mem_min)) return 0; > > but mem_min and mem_max are defined by the XXX@YYY argument of the > first kernel. > For me, with 512@512 : > more /proc/iomem > ... > 049cc000-77ffffff : System RAM > 20000000-3fffffff : Crash kernel > ... > So, I can not load the second kernel : Invalid memory segment > 0x4000000 - 0x469ffff > > When I set 64@64 argument for the first kernel, the checking is ok, > but I have another issue : > kexec_load failed: Cannot assign requested address > entry = 0x80020 flags = 320001 > nr_segments = 6 > segment[0].buf = 0x6000000000021b90 > segment[0].bufsz = 20 > segment[0].mem = (nil) > segment[0].memsz = 10000 > segment[1].buf = 0x60000000000222d0 > segment[1].bufsz = 10638 > segment[1].mem = 0x80000 > segment[1].memsz = 20000 > segment[2].buf = 0x2000000003b50010 > segment[2].bufsz = 23473c > segment[2].mem = 0x100000 > segment[2].memsz = 240000 > segment[3].buf = 0x20000000002f0010 > segment[3].bufsz = 692dd8 > segment[3].mem = 0x4000000 > segment[3].memsz = 6a0000 > segment[4].buf = 0x2000000000990010 > segment[4].bufsz = 42c8 > segment[4].mem = 0x46a0000 > segment[4].memsz = 10000 > segment[5].buf = 0x20000000009a0010 > segment[5].bufsz = 17c3ec > segment[5].mem = 0x46b0000 > segment[5].memsz = 2d0000 > > > Segments of the second kernel are the same than the first one > (0x0000000004000000, 0x00000000046a0000 ...) > We can not change the PHYSICAL_START as in other architectures (x86, > x86_64, powerpc). > > So, I don't understand how it should work. Can you please have some > explanation on this ? > > Thank you very much ! > > Best regards, > > Benoit Welterlen > > > ______________________________________________________________________ I modify the patch based on this one, fixed some bugs in it. please test. Thanks Zou Nan hai Signed-off-by: Zou Nan hai <nanhai.zou@intel.com> Signed-off-by: Maneesh Soni <maneesh@in.ibm.com>
Diffstat (limited to 'purgatory/arch/ia64/entry.S')
-rw-r--r--purgatory/arch/ia64/entry.S54
1 files changed, 18 insertions, 36 deletions
diff --git a/purgatory/arch/ia64/entry.S b/purgatory/arch/ia64/entry.S
index 78169a6..1821505 100644
--- a/purgatory/arch/ia64/entry.S
+++ b/purgatory/arch/ia64/entry.S
@@ -1,7 +1,7 @@
/*
* purgatory: setup code
*
- * Copyright (C) 2005 Zou Nan hai (nanhai.zou@intel.com)
+ * Copyright (C) 2005-2006 Zou Nan hai (nanhai.zou@intel.com)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,6 +16,10 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#define DECLARE_DATA8(name) \
+.global name; \
+.size name, 8; \
+name: data8 0x0
.global __dummy_efi_function
.align 32
@@ -35,18 +39,10 @@ purgatory_start:
ld8 gp=[r2];;
br.call.sptk.many b0=purgatory
;;
- alloc r2 = ar.pfs, 0, 0, 5, 0
+ alloc r2 = ar.pfs, 0, 0, 2, 0
;;
mov out0=r28
-
- movl r2=__command_line;;
- ld8 out1=[r2];;
- movl r2=__command_line_len;;
- ld8 out2=[r2];;
- movl r2=__ramdisk_base;;
- ld8 out3=[r2];;
- movl r2=__ramdisk_size;;
- ld8 out4=[r2];;
+ movl out1=__ramdisk_base;;
br.call.sptk.many b0=ia64_env_setup
movl r10=__kernel_entry;;
ld8 r14=[r10];;
@@ -58,28 +54,14 @@ purgatory_start:
br.call.sptk.many b0=b6
.endp purgatory_start
-.align 32
-.global __kernel_entry
-.size __kernel_entry, 8
-__kernel_entry:
- data8 0x0
-.global __command_line
-.size __command_line, 8
-__command_line:
- data8 0x0
-.global __command_line_len
-.size __command_line_len, 8
-__command_line_len:
- data8 0x0
-.global __ramdisk_base
-.size __ramdisk_base, 8
-__ramdisk_base:
- data8 0x0
-.global __ramdisk_size
-.size __ramdisk_size, 8
-__ramdisk_size:
- data8 0x0
-.global __gp_value
-.size __gp_value, 8
-__gp_value:
- data8 0x0
+DECLARE_DATA8(__kernel_entry)
+DECLARE_DATA8(__ramdisk_base)
+DECLARE_DATA8(__ramdisk_size)
+DECLARE_DATA8(__command_line)
+DECLARE_DATA8(__command_line_len)
+DECLARE_DATA8(__efi_memmap_base)
+DECLARE_DATA8(__efi_memmap_size)
+DECLARE_DATA8(__loaded_segments)
+DECLARE_DATA8(__loaded_segments_num)
+
+DECLARE_DATA8(__gp_value)