mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 13:22:57 +00:00
56a34d799b
struct crash_mem defined under include/linux/crash_core.h represents a list of memory ranges. While it is used to represent memory ranges for kdump kernel, it can also be used for other kind of memory ranges. In fact, KEXEC_FILE_LOAD syscall in powerpc uses this structure to represent reserved memory ranges and exclude memory ranges needed to find the right memory regions to load kexec kernel. So, make the definition of crash_mem structure available for !CONFIG_CRASH_DUMP case too. 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/20240226103010.589537-2-hbathini@linux.ibm.com
95 lines
2.7 KiB
C
95 lines
2.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef LINUX_CRASH_CORE_H
|
|
#define LINUX_CRASH_CORE_H
|
|
|
|
#include <linux/linkage.h>
|
|
#include <linux/elfcore.h>
|
|
#include <linux/elf.h>
|
|
|
|
struct kimage;
|
|
|
|
struct crash_mem {
|
|
unsigned int max_nr_ranges;
|
|
unsigned int nr_ranges;
|
|
struct range ranges[] __counted_by(max_nr_ranges);
|
|
};
|
|
|
|
#ifdef CONFIG_CRASH_DUMP
|
|
|
|
int crash_shrink_memory(unsigned long new_size);
|
|
ssize_t crash_get_memory_size(void);
|
|
|
|
#ifndef arch_kexec_protect_crashkres
|
|
/*
|
|
* Protection mechanism for crashkernel reserved memory after
|
|
* the kdump kernel is loaded.
|
|
*
|
|
* Provide an empty default implementation here -- architecture
|
|
* code may override this
|
|
*/
|
|
static inline void arch_kexec_protect_crashkres(void) { }
|
|
#endif
|
|
|
|
#ifndef arch_kexec_unprotect_crashkres
|
|
static inline void arch_kexec_unprotect_crashkres(void) { }
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef arch_crash_handle_hotplug_event
|
|
static inline void arch_crash_handle_hotplug_event(struct kimage *image) { }
|
|
#endif
|
|
|
|
int crash_check_update_elfcorehdr(void);
|
|
|
|
#ifndef crash_hotplug_cpu_support
|
|
static inline int crash_hotplug_cpu_support(void) { return 0; }
|
|
#endif
|
|
|
|
#ifndef crash_hotplug_memory_support
|
|
static inline int crash_hotplug_memory_support(void) { return 0; }
|
|
#endif
|
|
|
|
#ifndef crash_get_elfcorehdr_size
|
|
static inline unsigned int crash_get_elfcorehdr_size(void) { return 0; }
|
|
#endif
|
|
|
|
/* Alignment required for elf header segment */
|
|
#define ELF_CORE_HEADER_ALIGN 4096
|
|
|
|
extern int crash_exclude_mem_range(struct crash_mem *mem,
|
|
unsigned long long mstart,
|
|
unsigned long long mend);
|
|
extern int crash_prepare_elf64_headers(struct crash_mem *mem, int need_kernel_map,
|
|
void **addr, unsigned long *sz);
|
|
|
|
struct kimage;
|
|
struct kexec_segment;
|
|
|
|
#define KEXEC_CRASH_HP_NONE 0
|
|
#define KEXEC_CRASH_HP_ADD_CPU 1
|
|
#define KEXEC_CRASH_HP_REMOVE_CPU 2
|
|
#define KEXEC_CRASH_HP_ADD_MEMORY 3
|
|
#define KEXEC_CRASH_HP_REMOVE_MEMORY 4
|
|
#define KEXEC_CRASH_HP_INVALID_CPU -1U
|
|
|
|
extern void __crash_kexec(struct pt_regs *regs);
|
|
extern void crash_kexec(struct pt_regs *regs);
|
|
int kexec_should_crash(struct task_struct *p);
|
|
int kexec_crash_loaded(void);
|
|
void crash_save_cpu(struct pt_regs *regs, int cpu);
|
|
extern int kimage_crash_copy_vmcoreinfo(struct kimage *image);
|
|
|
|
#else /* !CONFIG_CRASH_DUMP*/
|
|
struct pt_regs;
|
|
struct task_struct;
|
|
struct kimage;
|
|
static inline void __crash_kexec(struct pt_regs *regs) { }
|
|
static inline void crash_kexec(struct pt_regs *regs) { }
|
|
static inline int kexec_should_crash(struct task_struct *p) { return 0; }
|
|
static inline int kexec_crash_loaded(void) { return 0; }
|
|
static inline void crash_save_cpu(struct pt_regs *regs, int cpu) {};
|
|
static inline int kimage_crash_copy_vmcoreinfo(struct kimage *image) { return 0; };
|
|
#endif /* CONFIG_CRASH_DUMP*/
|
|
|
|
#endif /* LINUX_CRASH_CORE_H */
|