+++ /dev/null
- 0 files changed
-
-Index: linux-2.6.0-test5/drivers/Makefile
-===================================================================
---- linux-2.6.0-test5.orig/drivers/Makefile 2003-09-09 03:50:21.000000000 +0800
-+++ linux-2.6.0-test5/drivers/Makefile 2003-09-25 21:15:21.000000000 +0800
-@@ -49,3 +49,4 @@
- obj-$(CONFIG_MCA) += mca/
- obj-$(CONFIG_EISA) += eisa/
- obj-$(CONFIG_CPU_FREQ) += cpufreq/
-+obj-$(CONFIG_CRASH_DUMP) += dump/
-Index: linux-2.6.0-test5/include/linux/sysctl.h
-===================================================================
---- linux-2.6.0-test5.orig/include/linux/sysctl.h 2003-09-09 03:50:06.000000000 +0800
-+++ linux-2.6.0-test5/include/linux/sysctl.h 2003-09-25 21:15:22.000000000 +0800
-@@ -127,6 +127,7 @@
- KERN_PANIC_ON_OOPS=57, /* int: whether we will panic on an oops */
- KERN_HPPA_PWRSW=58, /* int: hppa soft-power enable */
- KERN_HPPA_UNALIGNED=59, /* int: hppa unaligned-trap enable */
-+ KERN_DUMP=60, /* directory: dump parameters */
- };
-
-
-Index: linux-2.6.0-test5/include/linux/major.h
-===================================================================
---- linux-2.6.0-test5.orig/include/linux/major.h 2003-09-25 20:50:36.000000000 +0800
-+++ linux-2.6.0-test5/include/linux/major.h 2003-09-25 21:15:22.000000000 +0800
-@@ -157,6 +157,8 @@
-
- #define OSST_MAJOR 206 /* OnStream-SCx0 SCSI tape */
-
-+#define CRASH_DUMP_MAJOR 221 /* crash dump interface */
-+
- #define IBM_TTY3270_MAJOR 227
- #define IBM_FS3270_MAJOR 228
-
-Index: linux-2.6.0-test5/include/asm-i386/mach-default/irq_vectors.h
-===================================================================
---- linux-2.6.0-test5.orig/include/asm-i386/mach-default/irq_vectors.h 2003-09-09 03:49:58.000000000 +0800
-+++ linux-2.6.0-test5/include/asm-i386/mach-default/irq_vectors.h 2003-09-25 21:15:22.000000000 +0800
-@@ -48,6 +48,7 @@
- #define INVALIDATE_TLB_VECTOR 0xfd
- #define RESCHEDULE_VECTOR 0xfc
- #define CALL_FUNCTION_VECTOR 0xfb
-+#define DUMP_VECTOR 0xfa
-
- #define THERMAL_APIC_VECTOR 0xf0
- /*
-Index: linux-2.6.0-test5/include/asm-i386/kmap_types.h
-===================================================================
---- linux-2.6.0-test5.orig/include/asm-i386/kmap_types.h 2003-09-25 20:50:35.000000000 +0800
-+++ linux-2.6.0-test5/include/asm-i386/kmap_types.h 2003-09-25 21:17:25.000000000 +0800
-@@ -33,6 +33,7 @@
- * Add new entries in pairs:
- * the 4G/4G virtual stack must be 8K aligned on each cpu.
- */
-- KM_TYPE_NR
-+ KM_DUMP,
-+ KM_TYPE_NR,
- };
- #endif
-Index: linux-2.6.0-test5/include/asm-i386/smp.h
-===================================================================
---- linux-2.6.0-test5.orig/include/asm-i386/smp.h 2003-09-09 03:50:07.000000000 +0800
-+++ linux-2.6.0-test5/include/asm-i386/smp.h 2003-09-25 21:15:22.000000000 +0800
-@@ -37,6 +37,7 @@
- extern int cpu_sibling_map[];
-
- extern void smp_flush_tlb(void);
-+extern void dump_send_ipi(void);
- extern void smp_message_irq(int cpl, void *dev_id, struct pt_regs *regs);
- extern void smp_send_reschedule(int cpu);
- extern void smp_invalidate_rcv(void); /* Process an NMI */
-Index: linux-2.6.0-test5/arch/i386/kernel/i386_ksyms.c
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/kernel/i386_ksyms.c 2003-09-25 20:50:21.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/kernel/i386_ksyms.c 2003-09-25 21:18:16.000000000 +0800
-@@ -16,6 +16,7 @@
- #include <linux/tty.h>
- #include <linux/highmem.h>
- #include <linux/time.h>
-+#include <linux/nmi.h>
-
- #include <asm/semaphore.h>
- #include <asm/processor.h>
-@@ -34,6 +35,7 @@
- #include <asm/nmi.h>
- #include <asm/edd.h>
- #include <asm/ist.h>
-+#include <asm/e820.h>
-
- extern void dump_thread(struct pt_regs *, struct user *);
- extern spinlock_t rtc_lock;
-@@ -214,3 +216,20 @@
- #if defined(CONFIG_X86_SPEEDSTEP_SMI) || defined(CONFIG_X86_SPEEDSTEP_SMI_MODULE)
- EXPORT_SYMBOL(ist_info);
- #endif
-+
-+#ifdef CONFIG_CRASH_DUMP_MODULE
-+#ifdef CONFIG_SMP
-+extern irq_desc_t irq_desc[NR_IRQS];
-+extern unsigned long irq_affinity[NR_IRQS];
-+extern void stop_this_cpu(void *);
-+EXPORT_SYMBOL(irq_desc);
-+EXPORT_SYMBOL(irq_affinity);
-+EXPORT_SYMBOL(stop_this_cpu);
-+EXPORT_SYMBOL(dump_send_ipi);
-+#endif
-+extern int pfn_is_ram(unsigned long);
-+EXPORT_SYMBOL(pfn_is_ram);
-+#ifdef ARCH_HAS_NMI_WATCHDOG
-+EXPORT_SYMBOL(touch_nmi_watchdog);
-+#endif
-+#endif
-Index: linux-2.6.0-test5/arch/i386/kernel/nmi.c
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/kernel/nmi.c 2003-09-25 20:50:21.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/kernel/nmi.c 2003-09-25 21:15:22.000000000 +0800
-@@ -24,6 +24,7 @@
- #include <linux/kernel_stat.h>
- #include <linux/module.h>
- #include <linux/nmi.h>
-+#include <linux/dump.h>
- #include <linux/sysdev.h>
-
- #include <asm/smp.h>
-@@ -460,6 +461,7 @@
- bust_spinlocks(1);
- printk("NMI Watchdog detected LOCKUP on CPU%d, eip %08lx, registers:\n", cpu, regs->eip);
- show_registers(regs);
-+ dump("NMI Watchdog detected LOCKUP", regs);
- printk("console shuts up ...\n");
- console_silent();
- spin_unlock(&nmi_print_lock);
-Index: linux-2.6.0-test5/arch/i386/kernel/setup.c
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/kernel/setup.c 2003-09-25 20:50:21.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/kernel/setup.c 2003-09-25 21:15:23.000000000 +0800
-@@ -450,6 +450,7 @@
- print_memory_map(who);
- } /* setup_memory_region */
-
-+unsigned long crashdump_addr = 0xdeadbeef;
-
- static void __init parse_cmdline_early (char ** cmdline_p)
- {
-@@ -567,6 +568,9 @@
- if (c == ' ' && !memcmp(from, "highmem=", 8))
- highmem_pages = memparse(from+8, &from) >> PAGE_SHIFT;
-
-+ if (c == ' ' && !memcmp(from, "crashdump=", 10))
-+ crashdump_addr = memparse(from+10, &from);
-+
- c = *(from++);
- if (!c)
- break;
-@@ -949,6 +953,8 @@
-
- __setup("noreplacement", noreplacement_setup);
-
-+extern void crashdump_reserve(void);
-+
- void __init setup_arch(char **cmdline_p)
- {
- unsigned long max_low_pfn;
-Index: linux-2.6.0-test5/arch/i386/kernel/smp.c
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/kernel/smp.c 2003-09-25 20:50:21.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/kernel/smp.c 2003-09-25 21:15:23.000000000 +0800
-@@ -19,6 +19,7 @@
- #include <linux/mc146818rtc.h>
- #include <linux/cache.h>
- #include <linux/interrupt.h>
-+#include <linux/dump.h>
-
- #include <asm/mtrr.h>
- #include <asm/pgalloc.h>
-@@ -144,6 +145,13 @@
- */
- cfg = __prepare_ICR(shortcut, vector);
-
-+ if (vector == DUMP_VECTOR) {
-+ /*
-+ * Setup DUMP IPI to be delivered as an NMI
-+ */
-+ cfg = (cfg&~APIC_VECTOR_MASK)|APIC_DM_NMI;
-+ }
-+
- /*
- * Send the IPI. The write to APIC_ICR fires this off.
- */
-@@ -477,6 +485,11 @@
- send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR);
- }
-
-+void dump_send_ipi(void)
-+{
-+ send_IPI_allbutself(DUMP_VECTOR);
-+}
-+
- /*
- * Structure and data for smp_call_function(). This is designed to minimise
- * static memory requirements. It also looks cleaner.
-@@ -545,7 +558,7 @@
- return 0;
- }
-
--static void stop_this_cpu (void * dummy)
-+void stop_this_cpu (void * dummy)
- {
- /*
- * Remove this CPU:
-@@ -606,4 +619,3 @@
- atomic_inc(&call_data->finished);
- }
- }
--
-Index: linux-2.6.0-test5/arch/i386/kernel/traps.c
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/kernel/traps.c 2003-09-25 20:50:21.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/kernel/traps.c 2003-09-25 21:15:23.000000000 +0800
-@@ -25,6 +25,7 @@
- #include <linux/highmem.h>
- #include <linux/kallsyms.h>
- #include <linux/ptrace.h>
-+#include <linux/dump.h>
-
- #ifdef CONFIG_EISA
- #include <linux/ioport.h>
-@@ -322,6 +323,7 @@
- #endif
- CHK_REMOTE_DEBUG(0,SIGTRAP,err,regs,)
- show_registers(regs);
-+ dump((char *)str, regs);
- bust_spinlocks(0);
- spin_unlock_irq(&die_lock);
- if (in_interrupt())
-Index: linux-2.6.0-test5/arch/i386/mm/init.c
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/mm/init.c 2003-09-25 20:50:21.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/mm/init.c 2003-09-25 21:15:23.000000000 +0800
-@@ -96,6 +96,12 @@
- SetPageReserved(page);
- }
-
-+/* To enable modules to check if a page is in RAM */
-+int pfn_is_ram(unsigned long pfn)
-+{
-+ return (page_is_ram(pfn));
-+}
-+
- #ifdef CONFIG_HIGHMEM
-
- #ifndef CONFIG_DISCONTIGMEM
-Index: linux-2.6.0-test5/arch/i386/boot/Makefile
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/boot/Makefile 2003-09-25 20:50:20.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/boot/Makefile 2003-09-25 21:19:54.000000000 +0800
-@@ -100,3 +100,4 @@
-
- install: $(BOOTIMAGE)
- sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $< System.map "$(INSTALL_PATH)"
-+ if [ -f init/kerntypes.o ]; then cp init/kerntypes.o $(INSTALL_PATH)/Kerntypes; fi
-Index: linux-2.6.0-test5/arch/i386/Kconfig
-===================================================================
---- linux-2.6.0-test5.orig/arch/i386/Kconfig 2003-09-25 20:50:20.000000000 +0800
-+++ linux-2.6.0-test5/arch/i386/Kconfig 2003-09-25 21:15:23.000000000 +0800
-@@ -1229,6 +1229,56 @@
-
- menu "Kernel hacking"
-
-+config CRASH_DUMP
-+ tristate "Crash dump support (EXPERIMENTAL)"
-+ depends on EXPERIMENTAL
-+ default n
-+ ---help---
-+ Say Y here to enable saving an image of system memory when a panic
-+ or other error occurs. Dumps can also be forced with the SysRq+d
-+ key if MAGIC_SYSRQ is enabled.
-+
-+config CRASH_DUMP_BLOCKDEV
-+ tristate "Crash dump block device driver"
-+ depends on CRASH_DUMP
-+ help
-+ Say Y to allow saving crash dumps directly to a disk device.
-+
-+config CRASH_DUMP_NETDEV
-+ tristate "Crash dump network device driver"
-+ depends on CRASH_DUMP
-+ help
-+ Say Y to allow saving crash dumps over a network device.
-+
-+config CRASH_DUMP_MEMDEV
-+ bool "Crash dump staged memory driver"
-+ depends on CRASH_DUMP
-+ help
-+ Say Y to allow intermediate saving crash dumps in spare
-+ memory pages which would then be written out to disk
-+ later.
-+
-+config CRASH_DUMP_SOFTBOOT
-+ bool "Save crash dump across a soft reboot"
-+ depends on CRASH_DUMP_MEMDEV
-+ help
-+ Say Y to allow a crash dump to be preserved in memory
-+ pages across a soft reboot and written out to disk
-+ thereafter. For this to work, CRASH_DUMP must be
-+ configured as part of the kernel (not as a module).
-+
-+config CRASH_DUMP_COMPRESS_RLE
-+ tristate "Crash dump RLE compression"
-+ depends on CRASH_DUMP
-+ help
-+ Say Y to allow saving dumps with Run Length Encoding compression.
-+
-+config CRASH_DUMP_COMPRESS_GZIP
-+ tristate "Crash dump GZIP compression"
-+ depends on CRASH_DUMP
-+ help
-+ Say Y to allow saving dumps with Gnu Zip compression.
-+
- config DEBUG_KERNEL
- bool "Kernel debugging"
- help
-Index: linux-2.6.0-test5/arch/s390/boot/Makefile
-===================================================================
---- linux-2.6.0-test5.orig/arch/s390/boot/Makefile 2003-09-09 03:50:58.000000000 +0800
-+++ linux-2.6.0-test5/arch/s390/boot/Makefile 2003-09-25 21:15:23.000000000 +0800
-@@ -16,4 +16,4 @@
-
- install: $(CONFIGURE) $(obj)/image
- sh -x $(obj)/install.sh $(KERNELRELEASE) $(obj)/image \
-- System.map Kerntypes "$(INSTALL_PATH)"
-+ System.map init/kerntypes.o "$(INSTALL_PATH)"
-Index: linux-2.6.0-test5/arch/s390/boot/install.sh
-===================================================================
---- linux-2.6.0-test5.orig/arch/s390/boot/install.sh 2003-09-09 03:50:08.000000000 +0800
-+++ linux-2.6.0-test5/arch/s390/boot/install.sh 2003-09-25 21:15:23.000000000 +0800
-@@ -16,7 +16,8 @@
- # $1 - kernel version
- # $2 - kernel image file
- # $3 - kernel map file
--# $4 - default install path (blank if root directory)
-+# $4 - kernel type file
-+# $5 - default install path (blank if root directory)
- #
-
- # User may have a custom install script
-@@ -26,13 +27,22 @@
-
- # Default install - same as make zlilo
-
--if [ -f $4/vmlinuz ]; then
-- mv $4/vmlinuz $4/vmlinuz.old
-+if [ -f $5/vmlinuz ]; then
-+ mv $5/vmlinuz $5/vmlinuz.old
- fi
-
--if [ -f $4/System.map ]; then
-- mv $4/System.map $4/System.old
-+if [ -f $5/System.map ]; then
-+ mv $5/System.map $5/System.old
- fi
-
--cat $2 > $4/vmlinuz
--cp $3 $4/System.map
-+if [ -f $5/Kerntypes ]; then
-+ mv $5/Kerntypes $5/Kerntypes.old
-+fi
-+
-+cat $2 > $5/vmlinuz
-+cp $3 $5/System.map
-+
-+# copy the kernel type file if it exists
-+if [ -f $4 ]; then
-+ cp $4 $5/Kerntypes
-+fi
-Index: linux-2.6.0-test5/scripts/mkcompile_h
-===================================================================
---- linux-2.6.0-test5.orig/scripts/mkcompile_h 2003-09-25 20:50:39.000000000 +0800
-+++ linux-2.6.0-test5/scripts/mkcompile_h 2003-09-25 21:23:37.000000000 +0800
-@@ -33,7 +33,7 @@
-
- UTS_LEN=64
- UTS_TRUNCATE="sed -e s/\(.\{1,$UTS_LEN\}\).*/\1/"
--
-+LINUX_COMPILE_VERSION_ID="__linux_compile_version_id__`hostname | tr -c '[0-9A-Za-z\n]' '__'`_`LANG=C date | tr -c '[0-9A-Za-z\n]' '_'`"
- # Generate a temporary compile.h
-
- ( echo /\* This file is auto generated, version $VERSION \*/
-@@ -55,6 +55,8 @@
- fi
-
- echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
-+ echo \#define LINUX_COMPILE_VERSION_ID $LINUX_COMPILE_VERSION_ID
-+ echo \#define LINUX_COMPILE_VERSION_ID_TYPE typedef char* "$LINUX_COMPILE_VERSION_ID""_t"
- ) > .tmpcompile
-
- # Only replace the real compile.h if the new one is different,
-Index: linux-2.6.0-test5/kernel/ksyms.c
-===================================================================
---- linux-2.6.0-test5.orig/kernel/ksyms.c 2003-09-25 20:50:37.000000000 +0800
-+++ linux-2.6.0-test5/kernel/ksyms.c 2003-09-25 21:15:23.000000000 +0800
-@@ -60,6 +60,8 @@
- #include <linux/backing-dev.h>
- #include <linux/percpu_counter.h>
- #include <asm/checksum.h>
-+#include <linux/dump.h>
-+#include <linux/bootmem.h>
-
- #if defined(CONFIG_PROC_FS)
- #include <linux/proc_fs.h>
-@@ -624,3 +626,9 @@
- EXPORT_SYMBOL(console_printk);
-
- EXPORT_SYMBOL(current_kernel_time);
-+
-+#ifdef CONFIG_CRASH_DUMP_MODULE
-+EXPORT_SYMBOL(min_low_pfn);
-+EXPORT_SYMBOL(dump_oncpu);
-+EXPORT_SYMBOL(dump_function_ptr);
-+#endif
-Index: linux-2.6.0-test5/kernel/panic.c
-===================================================================
---- linux-2.6.0-test5.orig/kernel/panic.c 2003-09-09 03:50:32.000000000 +0800
-+++ linux-2.6.0-test5/kernel/panic.c 2003-09-25 21:26:46.000000000 +0800
-@@ -18,11 +18,16 @@
- #include <linux/interrupt.h>
- #include <linux/nmi.h>
-
-+#ifdef CONFIG_KEXEC
-+#include <linux/kexec.h>
-+#endif
-+
- asmlinkage void sys_sync(void); /* it's really int */
-
- int panic_timeout;
- int panic_on_oops;
- int tainted;
-+void (*dump_function_ptr)(const char *, const struct pt_regs *) = 0;
-
- struct notifier_block *panic_notifier_list;
-
-@@ -55,6 +60,7 @@
- va_start(args, fmt);
- vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
-+
- printk(KERN_EMERG "Kernel panic: %s\n",buf);
- if (in_interrupt())
- printk(KERN_EMERG "In interrupt handler - not syncing\n");
-@@ -78,6 +84,19 @@
- * We can't use the "normal" timers since we just panicked..
- */
- printk(KERN_EMERG "Rebooting in %d seconds..",panic_timeout);
-+#ifdef CONFIG_KEXEC
-+ {
-+ struct kimage *image;
-+ image = xchg(&kexec_image, 0);
-+ if (image) {
-+ printk(KERN_EMERG "by starting a new kernel ..\n");
-+ mdelay(panic_timeout*1000);
-+ machine_kexec(image);
-+ }
-+ }
-+#endif
-+
-+
- for (i = 0; i < panic_timeout; i++) {
- touch_nmi_watchdog();
- mdelay(1000);
-Index: linux-2.6.0-test5/kernel/sched.c
-===================================================================
---- linux-2.6.0-test5.orig/kernel/sched.c 2003-09-25 20:50:37.000000000 +0800
-+++ linux-2.6.0-test5/kernel/sched.c 2003-09-25 21:15:23.000000000 +0800
-@@ -43,6 +43,9 @@
- #define cpu_to_node_mask(cpu) (cpu_online_map)
- #endif
-
-+/* used to soft spin in sched while dump is in progress */
-+int dump_oncpu;
-+
- /*
- * Convert user-nice values [ -20 ... 0 ... 19 ]
- * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
-@@ -1460,6 +1463,15 @@
- unsigned long run_time;
- int idx;
-
-+ /*
-+ * If crash dump is in progress, this other cpu's
-+ * need to wait until it completes.
-+ * NB: this code is optimized away for kernels without
-+ * dumping enabled.
-+ */
-+ if (unlikely(dump_oncpu))
-+ goto dump_scheduling_disabled;
-+
- /*
- * Test if we are atomic. Since do_exit() needs to call into
- * schedule() atomically, we ignore that path for now.
-@@ -1583,6 +1595,16 @@
- preempt_enable_no_resched();
- if (test_thread_flag(TIF_NEED_RESCHED))
- goto need_resched;
-+
-+ return;
-+
-+ dump_scheduling_disabled:
-+ /* allow scheduling only if this is the dumping cpu */
-+ if (dump_oncpu != smp_processor_id()+1) {
-+ while (dump_oncpu)
-+ cpu_relax();
-+ }
-+ return;
- }
-
- #ifdef CONFIG_PREEMPT
-Index: linux-2.6.0-test5/lib/Kconfig
-===================================================================
---- linux-2.6.0-test5.orig/lib/Kconfig 2003-09-09 03:50:07.000000000 +0800
-+++ linux-2.6.0-test5/lib/Kconfig 2003-09-25 21:15:23.000000000 +0800
-@@ -17,14 +17,16 @@
- #
- config ZLIB_INFLATE
- tristate
-- default y if CRAMFS=y || PPP_DEFLATE=y || JFFS2_FS=y || ZISOFS_FS=y || BINFMT_ZFLAT=y || CRYPTO_DEFLATE=y
-- default m if CRAMFS=m || PPP_DEFLATE=m || JFFS2_FS=m || ZISOFS_FS=m || BINFMT_ZFLAT=m || CRYPTO_DEFLATE=m
-+ default y if CRAMFS=y || PPP_DEFLATE=y || JFFS2_FS=y || ZISOFS_FS=y || BINFMT_ZFLAT=y || CRYPTO_DEFLATE=y || CRASH_DUMP_COMPRESS_GZIP=y
-+ default m if CRAMFS=m || PPP_DEFLATE=m || JFFS2_FS=m || ZISOFS_FS=m || BINFMT_ZFLAT=m || CRYPTO_DEFLATE=m || CRASH_DUMP_COMPRESS_GZIP=m
-
- config ZLIB_DEFLATE
- tristate
- default m if PPP_DEFLATE!=y && JFFS2_FS!=y && CRYPTO_DEFLATE!=y && \
-- (PPP_DEFLATE=m || JFFS2_FS=m || CRYPTO_DEFLATE=m)
-- default y if PPP_DEFLATE=y || JFFS2_FS=y || CRYPTO_DEFLATE=y
-+ (PPP_DEFLATE=m || JFFS2_FS=m || CRYPTO_DEFLATE=m \
-+ || CRASH_DUMP_COMPRESS_GZIP=m )
-+ default y if PPP_DEFLATE=y || JFFS2_FS=y || CRYPTO_DEFLATE=y \
-+ || CRASH_DUMP_COMPRESS_GZIP=y
-
- endmenu
-
-Index: linux-2.6.0-test5/mm/page_alloc.c
-===================================================================
---- linux-2.6.0-test5.orig/mm/page_alloc.c 2003-09-25 20:50:37.000000000 +0800
-+++ linux-2.6.0-test5/mm/page_alloc.c 2003-09-25 21:15:23.000000000 +0800
-@@ -89,7 +89,8 @@
- page->mapping = NULL;
- }
-
--#ifndef CONFIG_HUGETLB_PAGE
-+#if !defined(CONFIG_HUGETLB_PAGE) && !defined(CONFIG_CRASH_DUMP) \
-+ && !defined(CONFIG_CRASH_DUMP_MODULE)
- #define prep_compound_page(page, order) do { } while (0)
- #define destroy_compound_page(page, order) do { } while (0)
- #else
-Index: linux-2.6.0-test5/init/Makefile
-===================================================================
---- linux-2.6.0-test5.orig/init/Makefile 2003-09-09 03:50:02.000000000 +0800
-+++ linux-2.6.0-test5/init/Makefile 2003-09-25 21:15:23.000000000 +0800
-@@ -9,6 +9,9 @@
- mounts-$(CONFIG_BLK_DEV_INITRD) += do_mounts_initrd.o
- mounts-$(CONFIG_BLK_DEV_MD) += do_mounts_md.o
-
-+extra-$(CONFIG_CRASH_DUMP) += kerntypes.o
-+CFLAGS_kerntypes.o := -gstabs
-+
- # files to be removed upon make clean
- clean-files := ../include/linux/compile.h
-
-@@ -24,3 +27,4 @@
- include/linux/compile.h: FORCE
- @echo ' CHK $@'
- @sh $(srctree)/scripts/mkcompile_h $@ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CC) $(CFLAGS)"
-+
-Index: linux-2.6.0-test5/init/main.c
-===================================================================
---- linux-2.6.0-test5.orig/init/main.c 2003-09-25 20:50:37.000000000 +0800
-+++ linux-2.6.0-test5/init/main.c 2003-09-25 21:15:23.000000000 +0800
-@@ -96,6 +96,16 @@
- int system_running = 0;
-
- /*
-+ * The kernel_magic value represents the address of _end, which allows
-+ * namelist tools to "match" each other respectively. That way a tool
-+ * that looks at /dev/mem can verify that it is using the right System.map
-+ * file -- if kernel_magic doesn't equal the namelist value of _end,
-+ * something's wrong.
-+ */
-+extern unsigned long _end;
-+unsigned long *kernel_magic = &_end;
-+
-+/*
- * Boot command-line arguments
- */
- #define MAX_INIT_ARGS 8
-Index: linux-2.6.0-test5/init/version.c
-===================================================================
---- linux-2.6.0-test5.orig/init/version.c 2003-09-09 03:50:04.000000000 +0800
-+++ linux-2.6.0-test5/init/version.c 2003-09-25 21:15:23.000000000 +0800
-@@ -10,6 +10,7 @@
- #include <linux/uts.h>
- #include <linux/utsname.h>
- #include <linux/version.h>
-+#include <linux/stringify.h>
-
- #define version(a) Version_ ## a
- #define version_string(a) version(a)
-@@ -28,3 +29,6 @@
- const char *linux_banner =
- "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
- LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
-+
-+const char *LINUX_COMPILE_VERSION_ID = __stringify(LINUX_COMPILE_VERSION_ID);
-+LINUX_COMPILE_VERSION_ID_TYPE;