generic: fix build failure in MIPS kexec code if SMP is enabled
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 35364
This commit is contained in:
parent
6ea9abadeb
commit
1b3c6ad1fb
4 changed files with 14 additions and 16 deletions
|
@ -57,20 +57,18 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||
extern int (*_machine_kexec_prepare)(struct kimage *);
|
||||
--- a/arch/mips/kernel/machine_kexec.c
|
||||
+++ b/arch/mips/kernel/machine_kexec.c
|
||||
@@ -13,12 +13,6 @@
|
||||
#include <asm/cacheflush.h>
|
||||
@@ -14,10 +14,6 @@
|
||||
#include <asm/page.h>
|
||||
|
||||
-extern const unsigned char relocate_new_kernel[];
|
||||
extern const unsigned char relocate_new_kernel[];
|
||||
-extern const size_t relocate_new_kernel_size;
|
||||
-
|
||||
-extern unsigned long kexec_start_address;
|
||||
-extern unsigned long kexec_indirection_page;
|
||||
-
|
||||
|
||||
int (*_machine_kexec_prepare)(struct kimage *) = NULL;
|
||||
void (*_machine_kexec_shutdown)(void) = NULL;
|
||||
void (*_machine_crash_shutdown)(struct pt_regs *regs) = NULL;
|
||||
@@ -61,21 +55,34 @@ typedef void (*noretfun_t)(void) __attri
|
||||
@@ -61,21 +57,34 @@ typedef void (*noretfun_t)(void) __attri
|
||||
void
|
||||
machine_kexec(struct kimage *image)
|
||||
{
|
||||
|
@ -107,7 +105,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||
|
||||
/*
|
||||
* The generic kexec code builds a page list with physical
|
||||
@@ -96,8 +103,8 @@ machine_kexec(struct kimage *image)
|
||||
@@ -96,8 +105,8 @@ machine_kexec(struct kimage *image)
|
||||
*/
|
||||
local_irq_disable();
|
||||
|
||||
|
@ -118,7 +116,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||
__flush_cache_all();
|
||||
#ifdef CONFIG_SMP
|
||||
/* All secondary cpus now may jump to kexec_wait cycle */
|
||||
@@ -108,4 +115,3 @@ machine_kexec(struct kimage *image)
|
||||
@@ -108,4 +117,3 @@ machine_kexec(struct kimage *image)
|
||||
#endif
|
||||
((noretfun_t) reboot_code_buffer)();
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||
#include <asm/cacheflush.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
@@ -21,9 +22,30 @@ void (*relocated_kexec_smp_wait) (void *
|
||||
@@ -23,9 +24,30 @@ void (*relocated_kexec_smp_wait) (void *
|
||||
atomic_t kexec_ready_to_reboot = ATOMIC_INIT(0);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -19,9 +19,9 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||
#include <asm/page.h>
|
||||
+#include <asm/uaccess.h>
|
||||
|
||||
int (*_machine_kexec_prepare)(struct kimage *) = NULL;
|
||||
void (*_machine_kexec_shutdown)(void) = NULL;
|
||||
@@ -35,6 +36,56 @@ static void machine_kexec_init_args(void
|
||||
extern const unsigned char relocate_new_kernel[];
|
||||
|
||||
@@ -37,6 +38,56 @@ static void machine_kexec_init_args(void
|
||||
pr_info("kexec_args[3] (desc): %p\n", (void *)kexec_args[3]);
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||
int
|
||||
machine_kexec_prepare(struct kimage *kimage)
|
||||
{
|
||||
@@ -45,6 +96,7 @@ machine_kexec_prepare(struct kimage *kim
|
||||
@@ -47,6 +98,7 @@ machine_kexec_prepare(struct kimage *kim
|
||||
* This can be overrided by _machine_kexec_prepare().
|
||||
*/
|
||||
machine_kexec_init_args();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/arch/mips/kernel/machine_kexec.c
|
||||
+++ b/arch/mips/kernel/machine_kexec.c
|
||||
@@ -23,67 +23,104 @@ void (*relocated_kexec_smp_wait) (void *
|
||||
@@ -25,67 +25,104 @@ void (*relocated_kexec_smp_wait) (void *
|
||||
atomic_t kexec_ready_to_reboot = ATOMIC_INIT(0);
|
||||
#endif
|
||||
|
||||
|
@ -151,7 +151,7 @@
|
|||
}
|
||||
|
||||
int
|
||||
@@ -95,8 +132,14 @@ machine_kexec_prepare(struct kimage *kim
|
||||
@@ -97,8 +134,14 @@ machine_kexec_prepare(struct kimage *kim
|
||||
*
|
||||
* This can be overrided by _machine_kexec_prepare().
|
||||
*/
|
||||
|
@ -168,7 +168,7 @@
|
|||
|
||||
if (_machine_kexec_prepare)
|
||||
return _machine_kexec_prepare(kimage);
|
||||
@@ -152,11 +195,13 @@ machine_kexec(struct kimage *image)
|
||||
@@ -154,11 +197,13 @@ machine_kexec(struct kimage *image)
|
||||
pr_info("kexec_indirection_page = %p\n",
|
||||
(void *)kexec_indirection_page);
|
||||
|
||||
|
|
Loading…
Reference in a new issue