--- 0019/xen/arch/ia64/xen/crash.c
+++ work/xen/arch/ia64/xen/crash.c
@@ -23,57 +23,16 @@
 #include <xen/sched.h>
 #include <public/xen.h>
 
-static void device_shootdown(void)
+void crash_save_xen_notes(void)
 {
-	printk("STUB: " __FILE__ ": %s: not implemented\n", __FUNCTION__);
-}
-
-static u32 *append_elf_note(u32 *buf, char *name, unsigned type, void *data,
-			    size_t data_len)
-{
-	Elf_Note note;
-
-	note.namesz = strlen(name) + 1;
-	note.descsz = data_len;
-	note.type   = type;
-	memcpy(buf, &note, sizeof(note));
-	buf += (sizeof(note) +3)/4;
-	memcpy(buf, name, note.namesz);
-	buf += (note.namesz + 3)/4;
-	memcpy(buf, data, note.descsz);
-	buf += (note.descsz + 3)/4;
+    crash_xen_info_t *info;
 
-	return buf;
-}
-
-static void final_note(u32 *buf)
-{
-	Elf_Note note;
-
-	note.namesz = 0;
-	note.descsz = 0;
-	note.type   = 0;
-	memcpy(buf, &note, sizeof(note));
-}
-
-static void crash_save_this_cpu(void)
-{
-	printk("STUB: " __FILE__ ": %s: not implemented\n", __FUNCTION__);
+    info = machine_crash_save_info();
 }
 
 void machine_crash_shutdown(void)
 {
-	printk("machine_crash_shutdown: %d\n", smp_processor_id());
-
-	if (in_interrupt()) {
-		ia64_eoi();
-	}
-	crash_save_this_cpu();
-	device_shootdown();
-#ifdef CONFIG_SMP
-	smp_send_stop();
-#endif
-
+	printk(__FILE__ ": %s: not implemented()\n", __FUNCTION__);
 }
 
 /*
--- 0023/xen/arch/ia64/xen/machine_kexec.c
+++ work/xen/arch/ia64/xen/machine_kexec.c
@@ -44,7 +44,7 @@ static void ia64_machine_kexec(xen_kexec
     int ii;
 
     if (image->type == KEXEC_TYPE_CRASH) {
-        crash_save_this_cpu();
+        crash_save_xen_notes();
         current->thread.ksp = (__u64)info->sw - 16;
     }
 
--- 0019/xen/include/asm-ia64/kexec.h
+++ work/xen/include/asm-ia64/kexec.h
@@ -4,6 +4,7 @@
 #include <xen/types.h>
 #include <xen/kexec.h>
 
+void crash_save_xen_notes(void);
 void machine_kexec(xen_kexec_image_t *image);
 
 #endif /* __IA64_KEXEC_H__ */
