X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/6e23517e21c62b52a02cf82a41b47f224276eb1a..c60a96964d6c0debd55081138749e3643b6b0562:/target/linux/generic-2.6/patches-2.6.30/029-mips_kexec.patch diff --git a/target/linux/generic-2.6/patches-2.6.30/029-mips_kexec.patch b/target/linux/generic-2.6/patches-2.6.30/029-mips_kexec.patch index 9273f70ba..49b80e7d4 100644 --- a/target/linux/generic-2.6/patches-2.6.30/029-mips_kexec.patch +++ b/target/linux/generic-2.6/patches-2.6.30/029-mips_kexec.patch @@ -52,11 +52,9 @@ create mode 100644 arch/mips/kernel/crash_dump.c arch/mips/include/asm/kexec.h | 21 20 + 1 - 0 ! 9 files changed, 399 insertions(+), 10 deletions(-) -Index: linux-2.6.30.7/arch/mips/Kconfig -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/Kconfig 2009-09-27 20:41:06.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/Kconfig 2009-09-27 21:02:55.000000000 +0200 -@@ -1966,6 +1966,29 @@ +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -1966,6 +1966,29 @@ config KEXEC support. As of this writing the exact hardware interface is strongly in flux, so no good recommendation can be made. @@ -86,11 +84,9 @@ Index: linux-2.6.30.7/arch/mips/Kconfig config SECCOMP bool "Enable seccomp to safely compute untrusted bytecode" depends on PROC_FS -Index: linux-2.6.30.7/arch/mips/Makefile -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/Makefile 2009-09-27 20:41:07.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/Makefile 2009-09-27 21:03:31.000000000 +0200 -@@ -603,6 +603,10 @@ +--- a/arch/mips/Makefile ++++ b/arch/mips/Makefile +@@ -603,6 +603,10 @@ else load-$(CONFIG_CPU_CAVIUM_OCTEON) += 0xffffffff81100000 endif @@ -101,11 +97,9 @@ Index: linux-2.6.30.7/arch/mips/Makefile cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic drivers-$(CONFIG_PCI) += arch/mips/pci/ -Index: linux-2.6.30.7/arch/mips/kernel/Makefile -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/kernel/Makefile 2009-09-27 20:41:06.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/kernel/Makefile 2009-09-27 21:02:55.000000000 +0200 -@@ -83,7 +83,8 @@ +--- a/arch/mips/kernel/Makefile ++++ b/arch/mips/kernel/Makefile +@@ -83,7 +83,8 @@ obj-$(CONFIG_I8253) += i8253.o obj-$(CONFIG_GPIO_TXX9) += gpio_txx9.o @@ -115,10 +109,8 @@ Index: linux-2.6.30.7/arch/mips/kernel/Makefile obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_MIPS_MACHINE) += mips_machine.o -Index: linux-2.6.30.7/arch/mips/kernel/crash.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.7/arch/mips/kernel/crash.c 2009-09-27 21:02:55.000000000 +0200 +--- /dev/null ++++ b/arch/mips/kernel/crash.c @@ -0,0 +1,90 @@ +/* + * Architecture specific (MIPS) functions for kexec based crash dumps. @@ -180,7 +172,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/crash.c + + unsigned int ncpus = num_online_cpus() - 1;/* Excluding the panic cpu */ + -+ smp_call_function (crash_shutdown_secondary, NULL, 0, 0); ++ smp_call_function (crash_shutdown_secondary, NULL, 0); + smp_wmb(); + + /* @@ -210,10 +202,8 @@ Index: linux-2.6.30.7/arch/mips/kernel/crash.c + crash_kexec_prepare_cpus(); + cpu_set(crashing_cpu, cpus_in_crash); +} -Index: linux-2.6.30.7/arch/mips/kernel/crash_dump.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux-2.6.30.7/arch/mips/kernel/crash_dump.c 2009-09-27 21:02:55.000000000 +0200 +--- /dev/null ++++ b/arch/mips/kernel/crash_dump.c @@ -0,0 +1,96 @@ +/* + * Routines for doing kexec-based kdump. @@ -311,11 +301,9 @@ Index: linux-2.6.30.7/arch/mips/kernel/crash_dump.c + return ret; +} +arch_initcall(kdump_buf_page_init); -Index: linux-2.6.30.7/arch/mips/kernel/machine_kexec.c -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/kernel/machine_kexec.c 2009-09-15 19:46:05.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/kernel/machine_kexec.c 2009-09-27 21:02:55.000000000 +0200 -@@ -19,9 +19,25 @@ +--- a/arch/mips/kernel/machine_kexec.c ++++ b/arch/mips/kernel/machine_kexec.c +@@ -19,9 +19,25 @@ extern const size_t relocate_new_kernel_ extern unsigned long kexec_start_address; extern unsigned long kexec_indirection_page; @@ -341,7 +329,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/machine_kexec.c return 0; } -@@ -33,13 +49,18 @@ +@@ -33,13 +49,18 @@ machine_kexec_cleanup(struct kimage *kim void machine_shutdown(void) { @@ -361,7 +349,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/machine_kexec.c typedef void (*noretfun_t)(void) __attribute__((noreturn)); void -@@ -52,7 +73,9 @@ +@@ -52,7 +73,9 @@ machine_kexec(struct kimage *image) reboot_code_buffer = (unsigned long)page_address(image->control_code_page); @@ -372,7 +360,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/machine_kexec.c kexec_indirection_page = (unsigned long) phys_to_virt(image->head & PAGE_MASK); -@@ -63,7 +86,7 @@ +@@ -63,7 +86,7 @@ machine_kexec(struct kimage *image) * The generic kexec code builds a page list with physical * addresses. they are directly accessible through KSEG0 (or * CKSEG0 or XPHYS if on 64bit system), hence the @@ -381,7 +369,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/machine_kexec.c */ for (ptr = &image->head; (entry = *ptr) && !(entry &IND_DONE); ptr = (entry & IND_INDIRECTION) ? -@@ -78,8 +101,39 @@ +@@ -78,8 +101,39 @@ machine_kexec(struct kimage *image) */ local_irq_disable(); @@ -424,10 +412,8 @@ Index: linux-2.6.30.7/arch/mips/kernel/machine_kexec.c + return 0; } +early_param("crashkernel", parse_crashkernel_cmdline); -Index: linux-2.6.30.7/arch/mips/kernel/relocate_kernel.S -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/kernel/relocate_kernel.S 2009-09-15 19:46:05.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/kernel/relocate_kernel.S 2009-09-27 21:02:55.000000000 +0200 +--- a/arch/mips/kernel/relocate_kernel.S ++++ b/arch/mips/kernel/relocate_kernel.S @@ -14,7 +14,13 @@ #include #include @@ -442,7 +428,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/relocate_kernel.S PTR_L s0, kexec_indirection_page PTR_L s1, kexec_start_address -@@ -26,7 +32,6 @@ +@@ -26,7 +32,6 @@ process_entry: and s3, s2, 0x1 beq s3, zero, 1f and s4, s2, ~0x1 /* store destination addr in s4 */ @@ -450,7 +436,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/relocate_kernel.S b process_entry 1: -@@ -40,6 +45,7 @@ +@@ -40,6 +45,7 @@ process_entry: /* done page */ and s3, s2, 0x4 beq s3, zero, 1f @@ -458,7 +444,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/relocate_kernel.S b done 1: /* source page */ -@@ -56,14 +62,102 @@ +@@ -56,14 +62,102 @@ copy_word: PTR_ADD s2, s2, SZREG LONG_SUB s6, s6, 1 beq s6, zero, process_entry @@ -561,10 +547,8 @@ Index: linux-2.6.30.7/arch/mips/kernel/relocate_kernel.S kexec_start_address: EXPORT(kexec_start_address) PTR 0x0 -Index: linux-2.6.30.7/arch/mips/kernel/setup.c -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/kernel/setup.c 2009-09-15 19:46:05.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/kernel/setup.c 2009-09-27 21:02:55.000000000 +0200 +--- a/arch/mips/kernel/setup.c ++++ b/arch/mips/kernel/setup.c @@ -21,7 +21,7 @@ #include #include @@ -574,7 +558,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/setup.c #include #include #include -@@ -489,6 +489,11 @@ +@@ -489,6 +489,11 @@ static void __init arch_mem_init(char ** } bootmem_init(); @@ -586,7 +570,7 @@ Index: linux-2.6.30.7/arch/mips/kernel/setup.c sparse_init(); paging_init(); } -@@ -543,6 +548,9 @@ +@@ -543,6 +548,9 @@ static void __init resource_init(void) */ request_resource(res, &code_resource); request_resource(res, &data_resource); @@ -596,10 +580,8 @@ Index: linux-2.6.30.7/arch/mips/kernel/setup.c } } -Index: linux-2.6.30.7/arch/mips/include/asm/kexec.h -=================================================================== ---- linux-2.6.30.7.orig/arch/mips/include/asm/kexec.h 2009-09-15 19:46:05.000000000 +0200 -+++ linux-2.6.30.7/arch/mips/include/asm/kexec.h 2009-09-27 21:02:55.000000000 +0200 +--- a/arch/mips/include/asm/kexec.h ++++ b/arch/mips/include/asm/kexec.h @@ -9,6 +9,8 @@ #ifndef _MIPS_KEXEC # define _MIPS_KEXEC