| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|---|
| 2 | #ifndef _X86_CRASH_RESERVE_H | 
|---|
| 3 | #define _X86_CRASH_RESERVE_H | 
|---|
| 4 |  | 
|---|
| 5 | /* 16M alignment for crash kernel regions */ | 
|---|
| 6 | #define CRASH_ALIGN             SZ_16M | 
|---|
| 7 |  | 
|---|
| 8 | /* | 
|---|
| 9 | * Keep the crash kernel below this limit. | 
|---|
| 10 | * | 
|---|
| 11 | * Earlier 32-bits kernels would limit the kernel to the low 512 MB range | 
|---|
| 12 | * due to mapping restrictions. | 
|---|
| 13 | * | 
|---|
| 14 | * 64-bit kdump kernels need to be restricted to be under 64 TB, which is | 
|---|
| 15 | * the upper limit of system RAM in 4-level paging mode. Since the kdump | 
|---|
| 16 | * jump could be from 5-level paging to 4-level paging, the jump will fail if | 
|---|
| 17 | * the kernel is put above 64 TB, and during the 1st kernel bootup there's | 
|---|
| 18 | * no good way to detect the paging mode of the target kernel which will be | 
|---|
| 19 | * loaded for dumping. | 
|---|
| 20 | */ | 
|---|
| 21 | extern unsigned long swiotlb_size_or_default(void); | 
|---|
| 22 |  | 
|---|
| 23 | #ifdef CONFIG_X86_32 | 
|---|
| 24 | # define CRASH_ADDR_LOW_MAX     SZ_512M | 
|---|
| 25 | # define CRASH_ADDR_HIGH_MAX    SZ_512M | 
|---|
| 26 | #else | 
|---|
| 27 | # define CRASH_ADDR_LOW_MAX     SZ_4G | 
|---|
| 28 | # define CRASH_ADDR_HIGH_MAX    SZ_64T | 
|---|
| 29 | #endif | 
|---|
| 30 |  | 
|---|
| 31 | # define DEFAULT_CRASH_KERNEL_LOW_SIZE crash_low_size_default() | 
|---|
| 32 |  | 
|---|
| 33 | static inline unsigned long crash_low_size_default(void) | 
|---|
| 34 | { | 
|---|
| 35 | #ifdef CONFIG_X86_64 | 
|---|
| 36 | return max(swiotlb_size_or_default() + (8UL << 20), 256UL << 20); | 
|---|
| 37 | #else | 
|---|
| 38 | return 0; | 
|---|
| 39 | #endif | 
|---|
| 40 | } | 
|---|
| 41 |  | 
|---|
| 42 | #define HAVE_ARCH_ADD_CRASH_RES_TO_IOMEM_EARLY | 
|---|
| 43 |  | 
|---|
| 44 | #endif /* _X86_CRASH_RESERVE_H */ | 
|---|
| 45 |  | 
|---|