On 2023/9/14 11:31, Baoquan He wrote: > Both crashk_res and crashk_low_res are used to mark the reserved > crashkernel regions in iomem_resource tree. And later the generic > crashkernel resrvation will be added into crash_core.c. So move > crashk_res and crashk_low_res definition into crash_core.c to avoid > compiling error if CONFIG_CRASH_CORE=on while CONFIG_KEXEC_CORE is > unset. > > Meanwhile include <asm/crash_core.h> in <linux/crash_core.h> if generic > reservation is needed. In that case, <asm/crash_core.h> need be added > by ARCH. In asm/crash_core.h, ARCH can provide its own macro definitions > to override macros in <linux/crash_core.h> if needed. Wrap the including > into CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION ifdeffery scope to > avoid compiling error in other ARCH-es which don't take the generic > reservation way yet. Reviewed-by: Zhen Lei <thunder.leizhen@xxxxxxxxxx> > > Signed-off-by: Baoquan He <bhe@xxxxxxxxxx> > --- > include/linux/crash_core.h | 8 ++++++++ > include/linux/kexec.h | 4 ---- > kernel/crash_core.c | 16 ++++++++++++++++ > kernel/kexec_core.c | 17 ----------------- > 4 files changed, 24 insertions(+), 21 deletions(-) > > diff --git a/include/linux/crash_core.h b/include/linux/crash_core.h > index 4dbd6565e0ff..3c735a7e33fb 100644 > --- a/include/linux/crash_core.h > +++ b/include/linux/crash_core.h > @@ -5,6 +5,14 @@ > #include <linux/linkage.h> > #include <linux/elfcore.h> > #include <linux/elf.h> > +#ifdef CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION > +#include <asm/crash_core.h> > +#endif > + > +/* Location of a reserved region to hold the crash kernel. > + */ > +extern struct resource crashk_res; > +extern struct resource crashk_low_res; > > #define CRASH_CORE_NOTE_NAME "CORE" > #define CRASH_CORE_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4) > diff --git a/include/linux/kexec.h b/include/linux/kexec.h > index 32c78078552c..8227455192b7 100644 > --- a/include/linux/kexec.h > +++ b/include/linux/kexec.h > @@ -22,10 +22,6 @@ > #include <uapi/linux/kexec.h> > #include <linux/verification.h> > > -/* Location of a reserved region to hold the crash kernel. > - */ > -extern struct resource crashk_res; > -extern struct resource crashk_low_res; > extern note_buf_t __percpu *crash_notes; > > #ifdef CONFIG_KEXEC_CORE > diff --git a/kernel/crash_core.c b/kernel/crash_core.c > index ca66b5f41dc7..ad7dc03f3993 100644 > --- a/kernel/crash_core.c > +++ b/kernel/crash_core.c > @@ -35,6 +35,22 @@ u32 *vmcoreinfo_note; > /* trusted vmcoreinfo, e.g. we can make a copy in the crash memory */ > static unsigned char *vmcoreinfo_data_safecopy; > > +/* Location of the reserved area for the crash kernel */ > +struct resource crashk_res = { > + .name = "Crash kernel", > + .start = 0, > + .end = 0, > + .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM, > + .desc = IORES_DESC_CRASH_KERNEL > +}; > +struct resource crashk_low_res = { > + .name = "Crash kernel", > + .start = 0, > + .end = 0, > + .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM, > + .desc = IORES_DESC_CRASH_KERNEL > +}; > + > /* > * parsing the "crashkernel" commandline > * > diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c > index 9dc728982d79..be5642a4ec49 100644 > --- a/kernel/kexec_core.c > +++ b/kernel/kexec_core.c > @@ -52,23 +52,6 @@ atomic_t __kexec_lock = ATOMIC_INIT(0); > /* Flag to indicate we are going to kexec a new kernel */ > bool kexec_in_progress = false; > > - > -/* Location of the reserved area for the crash kernel */ > -struct resource crashk_res = { > - .name = "Crash kernel", > - .start = 0, > - .end = 0, > - .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM, > - .desc = IORES_DESC_CRASH_KERNEL > -}; > -struct resource crashk_low_res = { > - .name = "Crash kernel", > - .start = 0, > - .end = 0, > - .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM, > - .desc = IORES_DESC_CRASH_KERNEL > -}; > - > int kexec_should_crash(struct task_struct *p) > { > /* > -- Regards, Zhen Lei _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec