mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
powerpc/fadump: make is_kdump_kernel() return false when fadump is active
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@linux.ibm.com> Acked-by: Baoquan He <bhe@redhat.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20230912082950.856977-2-hbathini@linux.ibm.com
This commit is contained in:
parent
86328b338c
commit
b098f1c323
2 changed files with 18 additions and 2 deletions
|
@ -99,10 +99,14 @@ void relocate_new_kernel(unsigned long indirection_page, unsigned long reboot_co
|
||||||
|
|
||||||
void kexec_copy_flush(struct kimage *image);
|
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);
|
void crash_free_reserved_phys_range(unsigned long begin, unsigned long end);
|
||||||
#define crash_free_reserved_phys_range crash_free_reserved_phys_range
|
#define crash_free_reserved_phys_range crash_free_reserved_phys_range
|
||||||
#endif
|
#endif /* CONFIG_PPC_RTAS */
|
||||||
|
#endif /* CONFIG_CRASH_DUMP */
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC_FILE
|
#ifdef CONFIG_KEXEC_FILE
|
||||||
extern const struct kexec_file_ops kexec_elf64_ops;
|
extern const struct kexec_file_ops kexec_elf64_ops;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <linux/uio.h>
|
#include <linux/uio.h>
|
||||||
#include <asm/rtas.h>
|
#include <asm/rtas.h>
|
||||||
#include <asm/inst.h>
|
#include <asm/inst.h>
|
||||||
|
#include <asm/fadump.h>
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#include <asm/udbg.h>
|
#include <asm/udbg.h>
|
||||||
|
@ -92,6 +93,17 @@ ssize_t copy_oldmem_page(struct iov_iter *iter, unsigned long pfn,
|
||||||
return csize;
|
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
|
#ifdef CONFIG_PPC_RTAS
|
||||||
/*
|
/*
|
||||||
* The crashkernel region will almost always overlap the RTAS region, so
|
* The crashkernel region will almost always overlap the RTAS region, so
|
||||||
|
|
Loading…
Add table
Reference in a new issue