55
55
typedef void (* crash_shutdown_t )(void );
56
56
57
57
#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 ;
71
60
72
61
extern void kexec_smp_wait (void ); /* get and clear naca physid, wait for
73
62
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 ;
81
63
extern 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 );
90
64
extern void machine_kexec_mask_interrupts (void );
91
65
92
- static inline bool kdump_in_progress (void )
93
- {
94
- return crashing_cpu >= 0 ;
95
- }
96
-
97
66
void relocate_new_kernel (unsigned long indirection_page , unsigned long reboot_code_buffer ,
98
67
unsigned long start_address ) __noreturn ;
99
-
100
68
void kexec_copy_flush (struct kimage * image );
101
69
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
-
111
70
#ifdef CONFIG_KEXEC_FILE
112
71
extern const struct kexec_file_ops kexec_elf64_ops ;
113
72
@@ -152,15 +111,56 @@ int setup_new_fdt_ppc64(const struct kimage *image, void *fdt,
152
111
153
112
#endif /* CONFIG_KEXEC_FILE */
154
113
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
157
123
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 )
159
131
{
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 ;
161
153
}
162
154
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 ) { }
164
164
165
165
static inline int crash_shutdown_register (crash_shutdown_t handler )
166
166
{
@@ -183,7 +183,7 @@ static inline void crash_send_ipi(void (*crash_ipi_callback)(struct pt_regs *))
183
183
{
184
184
}
185
185
186
- #endif /* CONFIG_KEXEC_CORE */
186
+ #endif /* CONFIG_CRASH_DUMP */
187
187
188
188
#ifdef CONFIG_PPC_BOOK3S_64
189
189
#include <asm/book3s/64/kexec.h>
0 commit comments