* [PATCH] kexec: print out debugging message if required for kexec_load
@ 2025-10-30 7:33 Qiang Ma
2025-10-30 9:42 ` Baoquan He
2025-10-30 19:20 ` kernel test robot
0 siblings, 2 replies; 9+ messages in thread
From: Qiang Ma @ 2025-10-30 7:33 UTC (permalink / raw)
To: akpm, bhe; +Cc: kexec, linux-kernel, Qiang Ma
The commit a85ee18c7900 ("kexec_file: print out debugging message
if required") has added general code printing in kexec_file_load(),
but not in kexec_load().
Especially in the RISC-V architecture, kexec_image_info() has been
removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging
message if required")). As a result, when using '-d' for the kexec_load
interface, print nothing in the kernel space. This might be helpful for
verifying the accuracy of the data passed to the kernel. Therefore, refer to
this commit a85ee18c7900 ("kexec_file: print out debugging message
if required"), debug print information has been added.
Signed-off-by: Qiang Ma <maqianga@uniontech.com>
---
kernel/kexec.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 28008e3d462e..02845a7499e9 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -151,7 +151,15 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments,
if (ret)
goto out;
+ kexec_dprintk("nr_segments = %lu\n", image->nr_segments);
for (i = 0; i < nr_segments; i++) {
+ struct kexec_segment *ksegment;
+
+ ksegment = &image->segment[i];
+ kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n",
+ i, ksegment->buf, ksegment->bufsz, ksegment->mem,
+ ksegment->memsz);
+
ret = kimage_load_segment(image, i);
if (ret)
goto out;
@@ -163,6 +171,9 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments,
if (ret)
goto out;
+ kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n",
+ image->type, image->start, image->head, flags);
+
/* Install the new kernel and uninstall the old */
image = xchg(dest_image, image);
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-30 7:33 [PATCH] kexec: print out debugging message if required for kexec_load Qiang Ma @ 2025-10-30 9:42 ` Baoquan He 2025-10-30 11:41 ` Qiang Ma 2025-10-30 19:20 ` kernel test robot 1 sibling, 1 reply; 9+ messages in thread From: Baoquan He @ 2025-10-30 9:42 UTC (permalink / raw) To: Qiang Ma; +Cc: akpm, kexec, linux-kernel On 10/30/25 at 03:33pm, Qiang Ma wrote: > The commit a85ee18c7900 ("kexec_file: print out debugging message > if required") has added general code printing in kexec_file_load(), > but not in kexec_load(). > > Especially in the RISC-V architecture, kexec_image_info() has been > removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging > message if required")). As a result, when using '-d' for the kexec_load > interface, print nothing in the kernel space. This might be helpful for > verifying the accuracy of the data passed to the kernel. Therefore, refer to > this commit a85ee18c7900 ("kexec_file: print out debugging message > if required"), debug print information has been added. kexec_file_dbg_print setting when CONFIG_KEXEC_FILE is set. I doubt it doesn't work when you unset CONFIG_KEXEC_FILE. > > Signed-off-by: Qiang Ma <maqianga@uniontech.com> > --- > kernel/kexec.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/kernel/kexec.c b/kernel/kexec.c > index 28008e3d462e..02845a7499e9 100644 > --- a/kernel/kexec.c > +++ b/kernel/kexec.c > @@ -151,7 +151,15 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, > if (ret) > goto out; > > + kexec_dprintk("nr_segments = %lu\n", image->nr_segments); > for (i = 0; i < nr_segments; i++) { > + struct kexec_segment *ksegment; > + > + ksegment = &image->segment[i]; > + kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", > + i, ksegment->buf, ksegment->bufsz, ksegment->mem, > + ksegment->memsz); > + > ret = kimage_load_segment(image, i); > if (ret) > goto out; > @@ -163,6 +171,9 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, > if (ret) > goto out; > > + kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n", > + image->type, image->start, image->head, flags); > + > /* Install the new kernel and uninstall the old */ > image = xchg(dest_image, image); > > -- > 2.20.1 > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-30 9:42 ` Baoquan He @ 2025-10-30 11:41 ` Qiang Ma 2025-10-30 13:58 ` Baoquan He 0 siblings, 1 reply; 9+ messages in thread From: Qiang Ma @ 2025-10-30 11:41 UTC (permalink / raw) To: Baoquan He; +Cc: akpm, kexec, linux-kernel 在 2025/10/30 17:42, Baoquan He 写道: > On 10/30/25 at 03:33pm, Qiang Ma wrote: >> The commit a85ee18c7900 ("kexec_file: print out debugging message >> if required") has added general code printing in kexec_file_load(), >> but not in kexec_load(). >> >> Especially in the RISC-V architecture, kexec_image_info() has been >> removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging >> message if required")). As a result, when using '-d' for the kexec_load >> interface, print nothing in the kernel space. This might be helpful for >> verifying the accuracy of the data passed to the kernel. Therefore, refer to >> this commit a85ee18c7900 ("kexec_file: print out debugging message >> if required"), debug print information has been added. > kexec_file_dbg_print setting when CONFIG_KEXEC_FILE is set. I doubt it > doesn't work when you unset CONFIG_KEXEC_FILE. Yes, I just actually tested it and it really doesn't work when unset CONFIG_KEXEC_FILE. In the next version, I can add a KEXEC_DEBUG for the kernel and kexec-tools. >> Signed-off-by: Qiang Ma <maqianga@uniontech.com> >> --- >> kernel/kexec.c | 11 +++++++++++ >> 1 file changed, 11 insertions(+) >> >> diff --git a/kernel/kexec.c b/kernel/kexec.c >> index 28008e3d462e..02845a7499e9 100644 >> --- a/kernel/kexec.c >> +++ b/kernel/kexec.c >> @@ -151,7 +151,15 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, >> if (ret) >> goto out; >> >> + kexec_dprintk("nr_segments = %lu\n", image->nr_segments); >> for (i = 0; i < nr_segments; i++) { >> + struct kexec_segment *ksegment; >> + >> + ksegment = &image->segment[i]; >> + kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", >> + i, ksegment->buf, ksegment->bufsz, ksegment->mem, >> + ksegment->memsz); >> + >> ret = kimage_load_segment(image, i); >> if (ret) >> goto out; >> @@ -163,6 +171,9 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, >> if (ret) >> goto out; >> >> + kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n", >> + image->type, image->start, image->head, flags); >> + >> /* Install the new kernel and uninstall the old */ >> image = xchg(dest_image, image); >> >> -- >> 2.20.1 >> >> > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-30 11:41 ` Qiang Ma @ 2025-10-30 13:58 ` Baoquan He 2025-10-31 2:40 ` Qiang Ma 0 siblings, 1 reply; 9+ messages in thread From: Baoquan He @ 2025-10-30 13:58 UTC (permalink / raw) To: Qiang Ma; +Cc: akpm, kexec, linux-kernel On 10/30/25 at 07:41pm, Qiang Ma wrote: > > 在 2025/10/30 17:42, Baoquan He 写道: > > On 10/30/25 at 03:33pm, Qiang Ma wrote: > > > The commit a85ee18c7900 ("kexec_file: print out debugging message > > > if required") has added general code printing in kexec_file_load(), > > > but not in kexec_load(). > > > > > > Especially in the RISC-V architecture, kexec_image_info() has been > > > removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging > > > message if required")). As a result, when using '-d' for the kexec_load > > > interface, print nothing in the kernel space. This might be helpful for > > > verifying the accuracy of the data passed to the kernel. Therefore, refer to > > > this commit a85ee18c7900 ("kexec_file: print out debugging message > > > if required"), debug print information has been added. > > kexec_file_dbg_print setting when CONFIG_KEXEC_FILE is set. I doubt it > > doesn't work when you unset CONFIG_KEXEC_FILE. > > Yes, I just actually tested it and it really doesn't work when unset > CONFIG_KEXEC_FILE. > > In the next version, I can add a KEXEC_DEBUG for the kernel and kexec-tools. Hold on please, it may not need that highweight change. I will reply to you tomorrow if I have other idea. > > > > Signed-off-by: Qiang Ma <maqianga@uniontech.com> > > > --- > > > kernel/kexec.c | 11 +++++++++++ > > > 1 file changed, 11 insertions(+) > > > > > > diff --git a/kernel/kexec.c b/kernel/kexec.c > > > index 28008e3d462e..02845a7499e9 100644 > > > --- a/kernel/kexec.c > > > +++ b/kernel/kexec.c > > > @@ -151,7 +151,15 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, > > > if (ret) > > > goto out; > > > + kexec_dprintk("nr_segments = %lu\n", image->nr_segments); > > > for (i = 0; i < nr_segments; i++) { > > > + struct kexec_segment *ksegment; > > > + > > > + ksegment = &image->segment[i]; > > > + kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", > > > + i, ksegment->buf, ksegment->bufsz, ksegment->mem, > > > + ksegment->memsz); > > > + > > > ret = kimage_load_segment(image, i); > > > if (ret) > > > goto out; > > > @@ -163,6 +171,9 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, > > > if (ret) > > > goto out; > > > + kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n", > > > + image->type, image->start, image->head, flags); > > > + > > > /* Install the new kernel and uninstall the old */ > > > image = xchg(dest_image, image); > > > -- > > > 2.20.1 > > > > > > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-30 13:58 ` Baoquan He @ 2025-10-31 2:40 ` Qiang Ma 2025-10-31 8:14 ` Baoquan He 0 siblings, 1 reply; 9+ messages in thread From: Qiang Ma @ 2025-10-31 2:40 UTC (permalink / raw) To: Baoquan He; +Cc: akpm, kexec, linux-kernel 在 2025/10/30 21:58, Baoquan He 写道: > On 10/30/25 at 07:41pm, Qiang Ma wrote: >> 在 2025/10/30 17:42, Baoquan He 写道: >>> On 10/30/25 at 03:33pm, Qiang Ma wrote: >>>> The commit a85ee18c7900 ("kexec_file: print out debugging message >>>> if required") has added general code printing in kexec_file_load(), >>>> but not in kexec_load(). >>>> >>>> Especially in the RISC-V architecture, kexec_image_info() has been >>>> removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging >>>> message if required")). As a result, when using '-d' for the kexec_load >>>> interface, print nothing in the kernel space. This might be helpful for >>>> verifying the accuracy of the data passed to the kernel. Therefore, refer to >>>> this commit a85ee18c7900 ("kexec_file: print out debugging message >>>> if required"), debug print information has been added. >>> kexec_file_dbg_print setting when CONFIG_KEXEC_FILE is set. I doubt it >>> doesn't work when you unset CONFIG_KEXEC_FILE. >> Yes, I just actually tested it and it really doesn't work when unset >> CONFIG_KEXEC_FILE. >> >> In the next version, I can add a KEXEC_DEBUG for the kernel and kexec-tools. > Hold on please, it may not need that highweight change. I will reply to > you tomorrow if I have other idea. Ok. My current idea is to refer to kexec_file, define a kexec_dbg_print, initialize it in the kimage_alloc_init(), modify KEXEC_FLAGS and kexec_dprintk, and add the judgment of kexec_debug. >>>> Signed-off-by: Qiang Ma <maqianga@uniontech.com> >>>> --- >>>> kernel/kexec.c | 11 +++++++++++ >>>> 1 file changed, 11 insertions(+) >>>> >>>> diff --git a/kernel/kexec.c b/kernel/kexec.c >>>> index 28008e3d462e..02845a7499e9 100644 >>>> --- a/kernel/kexec.c >>>> +++ b/kernel/kexec.c >>>> @@ -151,7 +151,15 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, >>>> if (ret) >>>> goto out; >>>> + kexec_dprintk("nr_segments = %lu\n", image->nr_segments); >>>> for (i = 0; i < nr_segments; i++) { >>>> + struct kexec_segment *ksegment; >>>> + >>>> + ksegment = &image->segment[i]; >>>> + kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", >>>> + i, ksegment->buf, ksegment->bufsz, ksegment->mem, >>>> + ksegment->memsz); >>>> + >>>> ret = kimage_load_segment(image, i); >>>> if (ret) >>>> goto out; >>>> @@ -163,6 +171,9 @@ static int do_kexec_load(unsigned long entry, unsigned long nr_segments, >>>> if (ret) >>>> goto out; >>>> + kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n", >>>> + image->type, image->start, image->head, flags); >>>> + >>>> /* Install the new kernel and uninstall the old */ >>>> image = xchg(dest_image, image); >>>> -- >>>> 2.20.1 >>>> >>>> > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-31 2:40 ` Qiang Ma @ 2025-10-31 8:14 ` Baoquan He 2025-10-31 8:49 ` Qiang Ma 0 siblings, 1 reply; 9+ messages in thread From: Baoquan He @ 2025-10-31 8:14 UTC (permalink / raw) To: Qiang Ma; +Cc: akpm, kexec, linux-kernel On 10/31/25 at 10:40am, Qiang Ma wrote: > > 在 2025/10/30 21:58, Baoquan He 写道: > > On 10/30/25 at 07:41pm, Qiang Ma wrote: > > > 在 2025/10/30 17:42, Baoquan He 写道: > > > > On 10/30/25 at 03:33pm, Qiang Ma wrote: > > > > > The commit a85ee18c7900 ("kexec_file: print out debugging message > > > > > if required") has added general code printing in kexec_file_load(), > > > > > but not in kexec_load(). > > > > > > > > > > Especially in the RISC-V architecture, kexec_image_info() has been > > > > > removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging > > > > > message if required")). As a result, when using '-d' for the kexec_load > > > > > interface, print nothing in the kernel space. This might be helpful for > > > > > verifying the accuracy of the data passed to the kernel. Therefore, refer to > > > > > this commit a85ee18c7900 ("kexec_file: print out debugging message > > > > > if required"), debug print information has been added. > > > > kexec_file_dbg_print setting when CONFIG_KEXEC_FILE is set. I doubt it > > > > doesn't work when you unset CONFIG_KEXEC_FILE. > > > Yes, I just actually tested it and it really doesn't work when unset > > > CONFIG_KEXEC_FILE. > > > > > > In the next version, I can add a KEXEC_DEBUG for the kernel and kexec-tools. > > Hold on please, it may not need that highweight change. I will reply to > > you tomorrow if I have other idea. > Ok. My current idea is to refer to kexec_file, define a kexec_dbg_print, > initialize it in the kimage_alloc_init(), modify KEXEC_FLAGS and > kexec_dprintk, > and add the judgment of kexec_debug. Maybe we can unify it because kexec_file_dbg_print is declared and defined in CONFIG_KEXEC_CORE scope. Rename it to kexec_core_dbg_print and initialize it in do_kimage_alloc_init() for both, or in kimage_alloc_init() for kexec, and kimage_file_alloc_init() for kexec_file. It needs a new flag for kexec. What do you think? Please feel free to take it as reference, or you can go in other ways you have better one. diff --git a/include/linux/kexec.h b/include/linux/kexec.h index ff7e231b0485..df33a0dd5780 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h @@ -525,10 +525,10 @@ static inline int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages, g static inline void arch_kexec_pre_free_pages(void *vaddr, unsigned int pages) { } #endif -extern bool kexec_file_dbg_print; +extern bool kexec_core_dbg_print; #define kexec_dprintk(fmt, arg...) \ - do { if (kexec_file_dbg_print) pr_info(fmt, ##arg); } while (0) + do { if (kexec_core_dbg_print) pr_info(fmt, ##arg); } while (0) extern void *kimage_map_segment(struct kimage *image, unsigned long addr, unsigned long size); extern void kimage_unmap_segment(void *buffer); diff --git a/kernel/kexec.c b/kernel/kexec.c index 28008e3d462e..570adb845662 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c @@ -42,6 +42,7 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry, if (!image) return -ENOMEM; + kexec_core_dbg_print = !!(flags & KEXEC_DEBUG); image->start = entry; image->nr_segments = nr_segments; memcpy(image->segment, segments, nr_segments * sizeof(*segments)); diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c index fa00b239c5d9..3af3ba77a3bd 100644 --- a/kernel/kexec_core.c +++ b/kernel/kexec_core.c @@ -619,6 +619,7 @@ void kimage_free(struct kimage *image) if (image->file_mode) kimage_file_post_load_cleanup(image); + kexec_core_dbg_print = false; kfree(image); } diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index eb62a9794242..4a24aadbad02 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -138,8 +138,6 @@ void kimage_file_post_load_cleanup(struct kimage *image) */ kfree(image->image_loader_data); image->image_loader_data = NULL; - - kexec_file_dbg_print = false; } #ifdef CONFIG_KEXEC_SIG @@ -314,7 +312,7 @@ kimage_file_alloc_init(struct kimage **rimage, int kernel_fd, if (!image) return -ENOMEM; - kexec_file_dbg_print = !!(flags & KEXEC_FILE_DEBUG); + kexec_core_dbg_print = !!(flags & KEXEC_FILE_DEBUG); image->file_mode = 1; #ifdef CONFIG_CRASH_DUMP ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-31 8:14 ` Baoquan He @ 2025-10-31 8:49 ` Qiang Ma 0 siblings, 0 replies; 9+ messages in thread From: Qiang Ma @ 2025-10-31 8:49 UTC (permalink / raw) To: Baoquan He; +Cc: akpm, kexec, linux-kernel 在 2025/10/31 16:14, Baoquan He 写道: > On 10/31/25 at 10:40am, Qiang Ma wrote: >> 在 2025/10/30 21:58, Baoquan He 写道: >>> On 10/30/25 at 07:41pm, Qiang Ma wrote: >>>> 在 2025/10/30 17:42, Baoquan He 写道: >>>>> On 10/30/25 at 03:33pm, Qiang Ma wrote: >>>>>> The commit a85ee18c7900 ("kexec_file: print out debugging message >>>>>> if required") has added general code printing in kexec_file_load(), >>>>>> but not in kexec_load(). >>>>>> >>>>>> Especially in the RISC-V architecture, kexec_image_info() has been >>>>>> removed(commit eb7622d908a0 ("kexec_file, riscv: print out debugging >>>>>> message if required")). As a result, when using '-d' for the kexec_load >>>>>> interface, print nothing in the kernel space. This might be helpful for >>>>>> verifying the accuracy of the data passed to the kernel. Therefore, refer to >>>>>> this commit a85ee18c7900 ("kexec_file: print out debugging message >>>>>> if required"), debug print information has been added. >>>>> kexec_file_dbg_print setting when CONFIG_KEXEC_FILE is set. I doubt it >>>>> doesn't work when you unset CONFIG_KEXEC_FILE. >>>> Yes, I just actually tested it and it really doesn't work when unset >>>> CONFIG_KEXEC_FILE. >>>> >>>> In the next version, I can add a KEXEC_DEBUG for the kernel and kexec-tools. >>> Hold on please, it may not need that highweight change. I will reply to >>> you tomorrow if I have other idea. >> Ok. My current idea is to refer to kexec_file, define a kexec_dbg_print, >> initialize it in the kimage_alloc_init(), modify KEXEC_FLAGS and >> kexec_dprintk, >> and add the judgment of kexec_debug. > Maybe we can unify it because kexec_file_dbg_print is declared and > defined in CONFIG_KEXEC_CORE scope. Rename it to kexec_core_dbg_print > and initialize it in do_kimage_alloc_init() for both, or in > kimage_alloc_init() for kexec, and kimage_file_alloc_init() for > kexec_file. It needs a new flag for kexec. What do you think? I think it's okay. I had also considered unifying a flag before, but I thought there was a possibility that kexec_load and kexec_file_load could be executed simultaneously, so I gave up. Later, after looking at the kexec-tools code, I found that kexec_file_load would be executed first. So, it would be better to unify them into one flag. > > Please feel free to take it as reference, or you can go in other ways > you have better one. OK. > > diff --git a/include/linux/kexec.h b/include/linux/kexec.h > index ff7e231b0485..df33a0dd5780 100644 > --- a/include/linux/kexec.h > +++ b/include/linux/kexec.h > @@ -525,10 +525,10 @@ static inline int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages, g > static inline void arch_kexec_pre_free_pages(void *vaddr, unsigned int pages) { } > #endif > > -extern bool kexec_file_dbg_print; > +extern bool kexec_core_dbg_print; > > #define kexec_dprintk(fmt, arg...) \ > - do { if (kexec_file_dbg_print) pr_info(fmt, ##arg); } while (0) > + do { if (kexec_core_dbg_print) pr_info(fmt, ##arg); } while (0) > > extern void *kimage_map_segment(struct kimage *image, unsigned long addr, unsigned long size); > extern void kimage_unmap_segment(void *buffer); > diff --git a/kernel/kexec.c b/kernel/kexec.c > index 28008e3d462e..570adb845662 100644 > --- a/kernel/kexec.c > +++ b/kernel/kexec.c > @@ -42,6 +42,7 @@ static int kimage_alloc_init(struct kimage **rimage, unsigned long entry, > if (!image) > return -ENOMEM; > > + kexec_core_dbg_print = !!(flags & KEXEC_DEBUG); > image->start = entry; > image->nr_segments = nr_segments; > memcpy(image->segment, segments, nr_segments * sizeof(*segments)); > diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c > index fa00b239c5d9..3af3ba77a3bd 100644 > --- a/kernel/kexec_core.c > +++ b/kernel/kexec_core.c > @@ -619,6 +619,7 @@ void kimage_free(struct kimage *image) > if (image->file_mode) > kimage_file_post_load_cleanup(image); > > + kexec_core_dbg_print = false; > kfree(image); > } > > diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c > index eb62a9794242..4a24aadbad02 100644 > --- a/kernel/kexec_file.c > +++ b/kernel/kexec_file.c > @@ -138,8 +138,6 @@ void kimage_file_post_load_cleanup(struct kimage *image) > */ > kfree(image->image_loader_data); > image->image_loader_data = NULL; > - > - kexec_file_dbg_print = false; > } > > #ifdef CONFIG_KEXEC_SIG > @@ -314,7 +312,7 @@ kimage_file_alloc_init(struct kimage **rimage, int kernel_fd, > if (!image) > return -ENOMEM; > > - kexec_file_dbg_print = !!(flags & KEXEC_FILE_DEBUG); > + kexec_core_dbg_print = !!(flags & KEXEC_FILE_DEBUG); > image->file_mode = 1; > > #ifdef CONFIG_CRASH_DUMP > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-30 7:33 [PATCH] kexec: print out debugging message if required for kexec_load Qiang Ma 2025-10-30 9:42 ` Baoquan He @ 2025-10-30 19:20 ` kernel test robot 2025-10-31 1:35 ` Qiang Ma 1 sibling, 1 reply; 9+ messages in thread From: kernel test robot @ 2025-10-30 19:20 UTC (permalink / raw) To: Qiang Ma, akpm, bhe; +Cc: llvm, oe-kbuild-all, kexec, linux-kernel, Qiang Ma Hi Qiang, kernel test robot noticed the following build warnings: [auto build test WARNING on akpm-mm/mm-everything] [also build test WARNING on linus/master v6.18-rc3 next-20251030] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Qiang-Ma/kexec-print-out-debugging-message-if-required-for-kexec_load/20251030-153807 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20251030073316.529106-1-maqianga%40uniontech.com patch subject: [PATCH] kexec: print out debugging message if required for kexec_load config: x86_64-kexec (https://download.01.org/0day-ci/archive/20251031/202510310332.6XrLe70K-lkp@intel.com/config) compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251031/202510310332.6XrLe70K-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202510310332.6XrLe70K-lkp@intel.com/ All warnings (new ones prefixed by >>): >> kernel/kexec.c:160:10: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat] 159 | kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", | ~~ | %lu 160 | i, ksegment->buf, ksegment->bufsz, ksegment->mem, | ^ include/linux/kexec.h:531:55: note: expanded from macro 'kexec_dprintk' 531 | do { if (kexec_file_dbg_print) pr_info(fmt, ##arg); } while (0) | ~~~ ^~~ include/linux/printk.h:585:34: note: expanded from macro 'pr_info' 585 | printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) | ~~~ ^~~~~~~~~~~ include/linux/printk.h:512:60: note: expanded from macro 'printk' 512 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) | ~~~ ^~~~~~~~~~~ include/linux/printk.h:484:19: note: expanded from macro 'printk_index_wrap' 484 | _p_func(_fmt, ##__VA_ARGS__); \ | ~~~~ ^~~~~~~~~~~ 1 warning generated. vim +160 kernel/kexec.c 141 142 ret = machine_kexec_prepare(image); 143 if (ret) 144 goto out; 145 146 /* 147 * Some architecture(like S390) may touch the crash memory before 148 * machine_kexec_prepare(), we must copy vmcoreinfo data after it. 149 */ 150 ret = kimage_crash_copy_vmcoreinfo(image); 151 if (ret) 152 goto out; 153 154 kexec_dprintk("nr_segments = %lu\n", image->nr_segments); 155 for (i = 0; i < nr_segments; i++) { 156 struct kexec_segment *ksegment; 157 158 ksegment = &image->segment[i]; 159 kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", > 160 i, ksegment->buf, ksegment->bufsz, ksegment->mem, 161 ksegment->memsz); 162 163 ret = kimage_load_segment(image, i); 164 if (ret) 165 goto out; 166 } 167 168 kimage_terminate(image); 169 170 ret = machine_kexec_post_load(image); 171 if (ret) 172 goto out; 173 174 kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n", 175 image->type, image->start, image->head, flags); 176 177 /* Install the new kernel and uninstall the old */ 178 image = xchg(dest_image, image); 179 180 out: 181 #ifdef CONFIG_CRASH_DUMP 182 if ((flags & KEXEC_ON_CRASH) && kexec_crash_image) 183 arch_kexec_protect_crashkres(); 184 #endif 185 186 kimage_free(image); 187 out_unlock: 188 kexec_unlock(); 189 return ret; 190 } 191 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] kexec: print out debugging message if required for kexec_load 2025-10-30 19:20 ` kernel test robot @ 2025-10-31 1:35 ` Qiang Ma 0 siblings, 0 replies; 9+ messages in thread From: Qiang Ma @ 2025-10-31 1:35 UTC (permalink / raw) To: kernel test robot, akpm, bhe; +Cc: llvm, oe-kbuild-all, kexec, linux-kernel 在 2025/10/31 03:20, kernel test robot 写道: > Hi Qiang, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on akpm-mm/mm-everything] > [also build test WARNING on linus/master v6.18-rc3 next-20251030] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Qiang-Ma/kexec-print-out-debugging-message-if-required-for-kexec_load/20251030-153807 > base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything > patch link: https://lore.kernel.org/r/20251030073316.529106-1-maqianga%40uniontech.com > patch subject: [PATCH] kexec: print out debugging message if required for kexec_load > config: x86_64-kexec (https://download.01.org/0day-ci/archive/20251031/202510310332.6XrLe70K-lkp@intel.com/config) > compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261) > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251031/202510310332.6XrLe70K-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202510310332.6XrLe70K-lkp@intel.com/ ok. > All warnings (new ones prefixed by >>): > >>> kernel/kexec.c:160:10: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat] > 159 | kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", > | ~~ > | %lu > 160 | i, ksegment->buf, ksegment->bufsz, ksegment->mem, > | ^ > include/linux/kexec.h:531:55: note: expanded from macro 'kexec_dprintk' > 531 | do { if (kexec_file_dbg_print) pr_info(fmt, ##arg); } while (0) > | ~~~ ^~~ > include/linux/printk.h:585:34: note: expanded from macro 'pr_info' > 585 | printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) > | ~~~ ^~~~~~~~~~~ > include/linux/printk.h:512:60: note: expanded from macro 'printk' > 512 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) > | ~~~ ^~~~~~~~~~~ > include/linux/printk.h:484:19: note: expanded from macro 'printk_index_wrap' > 484 | _p_func(_fmt, ##__VA_ARGS__); \ > | ~~~~ ^~~~~~~~~~~ > 1 warning generated. Yes, this is an type mismatch, will fix and update in new post, thanks. > > vim +160 kernel/kexec.c > > 141 > 142 ret = machine_kexec_prepare(image); > 143 if (ret) > 144 goto out; > 145 > 146 /* > 147 * Some architecture(like S390) may touch the crash memory before > 148 * machine_kexec_prepare(), we must copy vmcoreinfo data after it. > 149 */ > 150 ret = kimage_crash_copy_vmcoreinfo(image); > 151 if (ret) > 152 goto out; > 153 > 154 kexec_dprintk("nr_segments = %lu\n", image->nr_segments); > 155 for (i = 0; i < nr_segments; i++) { > 156 struct kexec_segment *ksegment; > 157 > 158 ksegment = &image->segment[i]; > 159 kexec_dprintk("segment[%d]: buf=0x%p bufsz=0x%zx mem=0x%lx memsz=0x%zx\n", > > 160 i, ksegment->buf, ksegment->bufsz, ksegment->mem, > 161 ksegment->memsz); > 162 > 163 ret = kimage_load_segment(image, i); > 164 if (ret) > 165 goto out; > 166 } > 167 > 168 kimage_terminate(image); > 169 > 170 ret = machine_kexec_post_load(image); > 171 if (ret) > 172 goto out; > 173 > 174 kexec_dprintk("kexec_file_load: type:%u, start:0x%lx head:0x%lx flags:0x%lx\n", > 175 image->type, image->start, image->head, flags); > 176 > 177 /* Install the new kernel and uninstall the old */ > 178 image = xchg(dest_image, image); > 179 > 180 out: > 181 #ifdef CONFIG_CRASH_DUMP > 182 if ((flags & KEXEC_ON_CRASH) && kexec_crash_image) > 183 arch_kexec_protect_crashkres(); > 184 #endif > 185 > 186 kimage_free(image); > 187 out_unlock: > 188 kexec_unlock(); > 189 return ret; > 190 } > 191 > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-10-31 8:49 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-30 7:33 [PATCH] kexec: print out debugging message if required for kexec_load Qiang Ma 2025-10-30 9:42 ` Baoquan He 2025-10-30 11:41 ` Qiang Ma 2025-10-30 13:58 ` Baoquan He 2025-10-31 2:40 ` Qiang Ma 2025-10-31 8:14 ` Baoquan He 2025-10-31 8:49 ` Qiang Ma 2025-10-30 19:20 ` kernel test robot 2025-10-31 1:35 ` Qiang Ma
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox