Add helper functions to setup & free CPU notes buffer and to find if a given memory area is contiguous. Also, use boolean as return type for the function that finds if boot memory area is contiguous. While at it, save the virtual address of CPU notes buffer instead of physical address as virtual address is used often. Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/156821318971.5656.9281936950510635858.stgit@hbathini.in.ibm.com
87 lines
2.4 KiB
C
87 lines
2.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Firmware-Assisted Dump internal code.
|
|
*
|
|
* Copyright 2011, Mahesh Salgaonkar, IBM Corporation.
|
|
* Copyright 2019, Hari Bathini, IBM Corporation.
|
|
*/
|
|
|
|
#ifndef _ASM_POWERPC_FADUMP_INTERNAL_H
|
|
#define _ASM_POWERPC_FADUMP_INTERNAL_H
|
|
|
|
/*
|
|
* The RMA region will be saved for later dumping when kernel crashes.
|
|
* RMA is Real Mode Area, the first block of logical memory address owned
|
|
* by logical partition, containing the storage that may be accessed with
|
|
* translate off.
|
|
*/
|
|
#define RMA_START 0x0
|
|
#define RMA_END (ppc64_rma_size)
|
|
|
|
/*
|
|
* On some Power systems where RMO is 128MB, it still requires minimum of
|
|
* 256MB for kernel to boot successfully. When kdump infrastructure is
|
|
* configured to save vmcore over network, we run into OOM issue while
|
|
* loading modules related to network setup. Hence we need additional 64M
|
|
* of memory to avoid OOM issue.
|
|
*/
|
|
#define MIN_BOOT_MEM (((RMA_END < (0x1UL << 28)) ? (0x1UL << 28) : RMA_END) \
|
|
+ (0x1UL << 26))
|
|
|
|
/* The upper limit percentage for user specified boot memory size (25%) */
|
|
#define MAX_BOOT_MEM_RATIO 4
|
|
|
|
#define memblock_num_regions(memblock_type) (memblock.memblock_type.cnt)
|
|
|
|
/* Alignment per CMA requirement. */
|
|
#define FADUMP_CMA_ALIGNMENT (PAGE_SIZE << \
|
|
max_t(unsigned long, MAX_ORDER - 1, \
|
|
pageblock_order))
|
|
|
|
/* FAD commands */
|
|
#define FADUMP_REGISTER 1
|
|
#define FADUMP_UNREGISTER 2
|
|
#define FADUMP_INVALIDATE 3
|
|
|
|
#define FADUMP_CRASH_INFO_MAGIC str_to_u64("FADMPINF")
|
|
|
|
/* fadump crash info structure */
|
|
struct fadump_crash_info_header {
|
|
u64 magic_number;
|
|
u64 elfcorehdr_addr;
|
|
u32 crashing_cpu;
|
|
struct pt_regs regs;
|
|
struct cpumask online_mask;
|
|
};
|
|
|
|
struct fad_crash_memory_ranges {
|
|
unsigned long long base;
|
|
unsigned long long size;
|
|
};
|
|
|
|
/* Firmware-assisted dump configuration details. */
|
|
struct fw_dump {
|
|
unsigned long reserve_dump_area_start;
|
|
unsigned long reserve_dump_area_size;
|
|
/* cmd line option during boot */
|
|
unsigned long reserve_bootvar;
|
|
|
|
unsigned long cpu_state_data_size;
|
|
unsigned long hpte_region_size;
|
|
unsigned long boot_memory_size;
|
|
|
|
unsigned long fadumphdr_addr;
|
|
unsigned long cpu_notes_buf_vaddr;
|
|
unsigned long cpu_notes_buf_size;
|
|
|
|
int ibm_configure_kernel_dump;
|
|
|
|
unsigned long fadump_enabled:1;
|
|
unsigned long fadump_supported:1;
|
|
unsigned long dump_active:1;
|
|
unsigned long dump_registered:1;
|
|
unsigned long nocma:1;
|
|
};
|
|
|
|
#endif /* _ASM_POWERPC_FADUMP_INTERNAL_H */
|