1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef LINUX_CRASH_RESERVE_H
3#define LINUX_CRASH_RESERVE_H
4
5#include <linux/linkage.h>
6#include <linux/elfcore.h>
7#include <linux/elf.h>
8#ifdef CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
9#include <asm/crash_reserve.h>
10#endif
11
12/* Location of a reserved region to hold the crash kernel.
13 */
14extern struct resource crashk_res;
15extern struct resource crashk_low_res;
16
17int __init parse_crashkernel(char *cmdline, unsigned long long system_ram,
18		unsigned long long *crash_size, unsigned long long *crash_base,
19		unsigned long long *low_size, bool *high);
20
21#ifdef CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION
22#ifndef DEFAULT_CRASH_KERNEL_LOW_SIZE
23#define DEFAULT_CRASH_KERNEL_LOW_SIZE	(128UL << 20)
24#endif
25#ifndef CRASH_ALIGN
26#define CRASH_ALIGN			SZ_2M
27#endif
28#ifndef CRASH_ADDR_LOW_MAX
29#define CRASH_ADDR_LOW_MAX		SZ_4G
30#endif
31#ifndef CRASH_ADDR_HIGH_MAX
32#define CRASH_ADDR_HIGH_MAX		memblock_end_of_DRAM()
33#endif
34
35void __init reserve_crashkernel_generic(char *cmdline,
36		unsigned long long crash_size,
37		unsigned long long crash_base,
38		unsigned long long crash_low_size,
39		bool high);
40#else
41static inline void __init reserve_crashkernel_generic(char *cmdline,
42		unsigned long long crash_size,
43		unsigned long long crash_base,
44		unsigned long long crash_low_size,
45		bool high)
46{}
47#endif
48#endif /* LINUX_CRASH_RESERVE_H */
49