5555typedef void (* crash_shutdown_t )(void );
5656
5757#ifdef CONFIG_KEXEC_CORE
58-
59- /*
60- * This function is responsible for capturing register states if coming
61- * via panic or invoking dump using sysrq-trigger.
62- */
63- static inline void crash_setup_regs (struct pt_regs * newregs ,
64- struct pt_regs * oldregs )
65- {
66- if (oldregs )
67- memcpy (newregs , oldregs , sizeof (* newregs ));
68- else
69- ppc_save_regs (newregs );
70- }
58+ struct kimage ;
59+ struct pt_regs ;
7160
7261extern void kexec_smp_wait (void ); /* get and clear naca physid, wait for
7362 master to copy new code to 0 */
74- extern int crashing_cpu ;
75- extern void crash_send_ipi (void (* crash_ipi_callback )(struct pt_regs * ));
76- extern void crash_ipi_callback (struct pt_regs * );
77- extern int crash_wake_offline ;
78-
79- struct kimage ;
80- struct pt_regs ;
8163extern void default_machine_kexec (struct kimage * image );
82- extern void default_machine_crash_shutdown (struct pt_regs * regs );
83- extern int crash_shutdown_register (crash_shutdown_t handler );
84- extern int crash_shutdown_unregister (crash_shutdown_t handler );
85-
86- extern void crash_kexec_prepare (void );
87- extern void crash_kexec_secondary (struct pt_regs * regs );
88- int __init overlaps_crashkernel (unsigned long start , unsigned long size );
89- extern void reserve_crashkernel (void );
9064extern void machine_kexec_mask_interrupts (void );
9165
92- static inline bool kdump_in_progress (void )
93- {
94- return crashing_cpu >= 0 ;
95- }
96-
9766void relocate_new_kernel (unsigned long indirection_page , unsigned long reboot_code_buffer ,
9867 unsigned long start_address ) __noreturn ;
99-
10068void kexec_copy_flush (struct kimage * image );
10169
102- #if defined(CONFIG_CRASH_DUMP )
103- bool is_kdump_kernel (void );
104- #define is_kdump_kernel is_kdump_kernel
105- #if defined(CONFIG_PPC_RTAS )
106- void crash_free_reserved_phys_range (unsigned long begin , unsigned long end );
107- #define crash_free_reserved_phys_range crash_free_reserved_phys_range
108- #endif /* CONFIG_PPC_RTAS */
109- #endif /* CONFIG_CRASH_DUMP */
110-
11170#ifdef CONFIG_KEXEC_FILE
11271extern const struct kexec_file_ops kexec_elf64_ops ;
11372
@@ -152,15 +111,56 @@ int setup_new_fdt_ppc64(const struct kimage *image, void *fdt,
152111
153112#endif /* CONFIG_KEXEC_FILE */
154113
155- #else /* !CONFIG_KEXEC_CORE */
156- static inline void crash_kexec_secondary (struct pt_regs * regs ) { }
114+ #endif /* CONFIG_KEXEC_CORE */
115+
116+ #ifdef CONFIG_CRASH_RESERVE
117+ int __init overlaps_crashkernel (unsigned long start , unsigned long size );
118+ extern void reserve_crashkernel (void );
119+ #else
120+ static inline void reserve_crashkernel (void ) {}
121+ static inline int overlaps_crashkernel (unsigned long start , unsigned long size ) { return 0 ; }
122+ #endif
157123
158- static inline int overlaps_crashkernel (unsigned long start , unsigned long size )
124+ #if defined(CONFIG_CRASH_DUMP )
125+ /*
126+ * This function is responsible for capturing register states if coming
127+ * via panic or invoking dump using sysrq-trigger.
128+ */
129+ static inline void crash_setup_regs (struct pt_regs * newregs ,
130+ struct pt_regs * oldregs )
159131{
160- return 0 ;
132+ if (oldregs )
133+ memcpy (newregs , oldregs , sizeof (* newregs ));
134+ else
135+ ppc_save_regs (newregs );
136+ }
137+
138+ extern int crashing_cpu ;
139+ extern void crash_send_ipi (void (* crash_ipi_callback )(struct pt_regs * ));
140+ extern void crash_ipi_callback (struct pt_regs * regs );
141+ extern int crash_wake_offline ;
142+
143+ extern int crash_shutdown_register (crash_shutdown_t handler );
144+ extern int crash_shutdown_unregister (crash_shutdown_t handler );
145+ extern void default_machine_crash_shutdown (struct pt_regs * regs );
146+
147+ extern void crash_kexec_prepare (void );
148+ extern void crash_kexec_secondary (struct pt_regs * regs );
149+
150+ static inline bool kdump_in_progress (void )
151+ {
152+ return crashing_cpu >= 0 ;
161153}
162154
163- static inline void reserve_crashkernel (void ) { ; }
155+ bool is_kdump_kernel (void );
156+ #define is_kdump_kernel is_kdump_kernel
157+ #if defined(CONFIG_PPC_RTAS )
158+ void crash_free_reserved_phys_range (unsigned long begin , unsigned long end );
159+ #define crash_free_reserved_phys_range crash_free_reserved_phys_range
160+ #endif /* CONFIG_PPC_RTAS */
161+
162+ #else /* !CONFIG_CRASH_DUMP */
163+ static inline void crash_kexec_secondary (struct pt_regs * regs ) { }
164164
165165static inline int crash_shutdown_register (crash_shutdown_t handler )
166166{
@@ -183,7 +183,7 @@ static inline void crash_send_ipi(void (*crash_ipi_callback)(struct pt_regs *))
183183{
184184}
185185
186- #endif /* CONFIG_KEXEC_CORE */
186+ #endif /* CONFIG_CRASH_DUMP */
187187
188188#ifdef CONFIG_PPC_BOOK3S_64
189189#include <asm/book3s/64/kexec.h>
0 commit comments