On 09/12/23 at 01:59pm, Hari Bathini wrote: > Currently, is_kdump_kernel() returns true in crash dump capture kernel > for both kdump and fadump crash dump capturing methods, as both these > methods set elfcorehdr_addr. Some restrictions enforced for crash dump > capture kernel, based on is_kdump_kernel(), are specifically meant for > kdump case and not desirable for fadump - eg. IO queues restriction in > device drivers. So, define is_kdump_kernel() to return false when f/w > assisted dump is active. > > Signed-off-by: Hari Bathini <hbathini@xxxxxxxxxxxxx> > --- > arch/powerpc/include/asm/kexec.h | 8 ++++++-- > arch/powerpc/kernel/crash_dump.c | 12 ++++++++++++ > 2 files changed, 18 insertions(+), 2 deletions(-) LGTM, Acked-by: Baoquan He <bhe@xxxxxxxxxx> > > diff --git a/arch/powerpc/include/asm/kexec.h b/arch/powerpc/include/asm/kexec.h > index a1ddba01e7d1..e1b43aa12175 100644 > --- a/arch/powerpc/include/asm/kexec.h > +++ b/arch/powerpc/include/asm/kexec.h > @@ -99,10 +99,14 @@ void relocate_new_kernel(unsigned long indirection_page, unsigned long reboot_co > > void kexec_copy_flush(struct kimage *image); > > -#if defined(CONFIG_CRASH_DUMP) && defined(CONFIG_PPC_RTAS) > +#if defined(CONFIG_CRASH_DUMP) > +bool is_kdump_kernel(void); > +#define is_kdump_kernel is_kdump_kernel > +#if defined(CONFIG_PPC_RTAS) > void crash_free_reserved_phys_range(unsigned long begin, unsigned long end); > #define crash_free_reserved_phys_range crash_free_reserved_phys_range > -#endif > +#endif /* CONFIG_PPC_RTAS */ > +#endif /* CONFIG_CRASH_DUMP */ > > #ifdef CONFIG_KEXEC_FILE > extern const struct kexec_file_ops kexec_elf64_ops; > diff --git a/arch/powerpc/kernel/crash_dump.c b/arch/powerpc/kernel/crash_dump.c > index 9a3b85bfc83f..2086fa6cdc25 100644 > --- a/arch/powerpc/kernel/crash_dump.c > +++ b/arch/powerpc/kernel/crash_dump.c > @@ -19,6 +19,7 @@ > #include <linux/uio.h> > #include <asm/rtas.h> > #include <asm/inst.h> > +#include <asm/fadump.h> > > #ifdef DEBUG > #include <asm/udbg.h> > @@ -92,6 +93,17 @@ ssize_t copy_oldmem_page(struct iov_iter *iter, unsigned long pfn, > return csize; > } > > +/* > + * Return true only when kexec based kernel dump capturing method is used. > + * This ensures all restritions applied for kdump case are not automatically > + * applied for fadump case. > + */ > +bool is_kdump_kernel(void) > +{ > + return !is_fadump_active() && elfcorehdr_addr != ELFCORE_ADDR_MAX; > +} > +EXPORT_SYMBOL_GPL(is_kdump_kernel); > + > #ifdef CONFIG_PPC_RTAS > /* > * The crashkernel region will almost always overlap the RTAS region, so > -- > 2.41.0 > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec