@@ -24,6 +24,32 @@ extern const unsigned long arm64_relocate_new_kernel_size;
2424
2525static unsigned long kimage_start ;
2626
27+ /**
28+ * kexec_image_info - For debugging output.
29+ */
30+ #define kexec_image_info (_i ) _kexec_image_info(__func__, __LINE__, _i)
31+ static void _kexec_image_info (const char * func , int line ,
32+ const struct kimage * kimage )
33+ {
34+ unsigned long i ;
35+
36+ pr_debug ("%s:%d:\n" , func , line );
37+ pr_debug (" kexec kimage info:\n" );
38+ pr_debug (" type: %d\n" , kimage -> type );
39+ pr_debug (" start: %lx\n" , kimage -> start );
40+ pr_debug (" head: %lx\n" , kimage -> head );
41+ pr_debug (" nr_segments: %lu\n" , kimage -> nr_segments );
42+
43+ for (i = 0 ; i < kimage -> nr_segments ; i ++ ) {
44+ pr_debug (" segment[%lu]: %016lx - %016lx, 0x%lx bytes, %lu pages\n" ,
45+ i ,
46+ kimage -> segment [i ].mem ,
47+ kimage -> segment [i ].mem + kimage -> segment [i ].memsz ,
48+ kimage -> segment [i ].memsz ,
49+ kimage -> segment [i ].memsz / PAGE_SIZE );
50+ }
51+ }
52+
2753void machine_kexec_cleanup (struct kimage * kimage )
2854{
2955 /* Empty routine needed to avoid build errors. */
@@ -40,6 +66,8 @@ int machine_kexec_prepare(struct kimage *kimage)
4066{
4167 kimage_start = kimage -> start ;
4268
69+ kexec_image_info (kimage );
70+
4371 if (kimage -> type != KEXEC_TYPE_CRASH && cpus_are_stuck_in_kernel ()) {
4472 pr_err ("Can't kexec: CPUs are stuck in the kernel.\n" );
4573 return - EBUSY ;
@@ -125,6 +153,20 @@ void machine_kexec(struct kimage *kimage)
125153 reboot_code_buffer_phys = page_to_phys (kimage -> control_code_page );
126154 reboot_code_buffer = phys_to_virt (reboot_code_buffer_phys );
127155
156+ kexec_image_info (kimage );
157+
158+ pr_debug ("%s:%d: control_code_page: %p\n" , __func__ , __LINE__ ,
159+ kimage -> control_code_page );
160+ pr_debug ("%s:%d: reboot_code_buffer_phys: %pa\n" , __func__ , __LINE__ ,
161+ & reboot_code_buffer_phys );
162+ pr_debug ("%s:%d: reboot_code_buffer: %p\n" , __func__ , __LINE__ ,
163+ reboot_code_buffer );
164+ pr_debug ("%s:%d: relocate_new_kernel: %p\n" , __func__ , __LINE__ ,
165+ arm64_relocate_new_kernel );
166+ pr_debug ("%s:%d: relocate_new_kernel_size: 0x%lx(%lu) bytes\n" ,
167+ __func__ , __LINE__ , arm64_relocate_new_kernel_size ,
168+ arm64_relocate_new_kernel_size );
169+
128170 /*
129171 * Copy arm64_relocate_new_kernel to the reboot_code_buffer for use
130172 * after the kernel is shut down.
0 commit comments