Commit | Line | Data |
---|---|---|
cf13f0ea | 1 | /* |
a53c8fab | 2 | * Copyright IBM Corp. 2005 |
cf13f0ea HC |
3 | * |
4 | * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> | |
5 | * | |
6 | */ | |
7 | ||
8 | #ifndef _S390_KEXEC_H | |
9 | #define _S390_KEXEC_H | |
10 | ||
cf13f0ea | 11 | #include <asm/processor.h> |
da477737 | 12 | #include <asm/page.h> |
cf13f0ea HC |
13 | /* |
14 | * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. | |
15 | * I.e. Maximum page that is mapped directly into kernel memory, | |
16 | * and kmap is not required. | |
17 | */ | |
18 | ||
19 | /* Maximum physical address we can use pages from */ | |
20 | #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) | |
21 | ||
22 | /* Maximum address we can reach in physical address mode */ | |
23 | #define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL) | |
24 | ||
25 | /* Maximum address we can use for the control pages */ | |
26 | /* Not more than 2GB */ | |
a1a392f0 | 27 | #define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31) |
cf13f0ea | 28 | |
7e01b5ac MS |
29 | /* Allocate control page with GFP_DMA */ |
30 | #define KEXEC_CONTROL_MEMORY_GFP GFP_DMA | |
31 | ||
60a0c68d MH |
32 | /* Maximum address we can use for the crash control pages */ |
33 | #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL) | |
34 | ||
cf13f0ea | 35 | /* Allocate one page for the pdp and the second for the code */ |
163f6876 | 36 | #define KEXEC_CONTROL_PAGE_SIZE 4096 |
cf13f0ea | 37 | |
dab7a7b1 MH |
38 | /* Alignment of crashkernel memory */ |
39 | #define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE | |
40 | ||
cf13f0ea HC |
41 | /* The native architecture */ |
42 | #define KEXEC_ARCH KEXEC_ARCH_S390 | |
43 | ||
cb78edfd MH |
44 | /* |
45 | * Size for s390x ELF notes per CPU | |
46 | * | |
47 | * Seven notes plus zero note at the end: prstatus, fpregset, timer, | |
48 | * tod_cmp, tod_reg, control regs, and prefix | |
49 | */ | |
50 | #define KEXEC_NOTE_BYTES \ | |
51 | (ALIGN(sizeof(struct elf_note), 4) * 8 + \ | |
52 | ALIGN(sizeof("CORE"), 4) * 7 + \ | |
53 | ALIGN(sizeof(struct elf_prstatus), 4) + \ | |
54 | ALIGN(sizeof(elf_fpregset_t), 4) + \ | |
55 | ALIGN(sizeof(u64), 4) + \ | |
56 | ALIGN(sizeof(u64), 4) + \ | |
57 | ALIGN(sizeof(u32), 4) + \ | |
58 | ALIGN(sizeof(u64) * 16, 4) + \ | |
59 | ALIGN(sizeof(u32), 4) \ | |
60 | ) | |
61 | ||
bf208305 | 62 | /* Provide a dummy definition to avoid build failures. */ |
63 | static inline void crash_setup_regs(struct pt_regs *newregs, | |
64 | struct pt_regs *oldregs) { } | |
65 | ||
cf13f0ea | 66 | #endif /*_S390_KEXEC_H */ |