Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 1 | /* |
| 2 | * include/asm-s390/kexec.h |
| 3 | * |
| 4 | * (C) Copyright IBM Corp. 2005 |
| 5 | * |
| 6 | * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> |
| 7 | * |
| 8 | */ |
| 9 | |
| 10 | #ifndef _S390_KEXEC_H |
| 11 | #define _S390_KEXEC_H |
| 12 | |
Kirill A. Shutemov | ed7b188 | 2008-02-07 00:15:56 -0800 | [diff] [blame] | 13 | #ifdef __KERNEL__ |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 14 | #include <asm/page.h> |
Kirill A. Shutemov | ed7b188 | 2008-02-07 00:15:56 -0800 | [diff] [blame] | 15 | #endif |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 16 | #include <asm/processor.h> |
| 17 | /* |
| 18 | * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. |
| 19 | * I.e. Maximum page that is mapped directly into kernel memory, |
| 20 | * and kmap is not required. |
| 21 | */ |
| 22 | |
| 23 | /* Maximum physical address we can use pages from */ |
| 24 | #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) |
| 25 | |
| 26 | /* Maximum address we can reach in physical address mode */ |
| 27 | #define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL) |
| 28 | |
| 29 | /* Maximum address we can use for the control pages */ |
| 30 | /* Not more than 2GB */ |
Heiko Carstens | a1a392f | 2006-12-04 15:40:28 +0100 | [diff] [blame] | 31 | #define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31) |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 32 | |
Michael Holzheu | 60a0c68 | 2011-10-30 15:16:40 +0100 | [diff] [blame] | 33 | /* Maximum address we can use for the crash control pages */ |
| 34 | #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL) |
| 35 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 36 | /* Allocate one page for the pdp and the second for the code */ |
Huang Ying | 163f687 | 2008-08-15 00:40:22 -0700 | [diff] [blame] | 37 | #define KEXEC_CONTROL_PAGE_SIZE 4096 |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 38 | |
Michael Holzheu | dab7a7b | 2011-10-30 15:16:44 +0100 | [diff] [blame] | 39 | /* Alignment of crashkernel memory */ |
| 40 | #define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE |
| 41 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 42 | /* The native architecture */ |
| 43 | #define KEXEC_ARCH KEXEC_ARCH_S390 |
| 44 | |
Michael Holzheu | cb78edf | 2012-01-20 14:34:16 -0800 | [diff] [blame] | 45 | /* |
| 46 | * Size for s390x ELF notes per CPU |
| 47 | * |
| 48 | * Seven notes plus zero note at the end: prstatus, fpregset, timer, |
| 49 | * tod_cmp, tod_reg, control regs, and prefix |
| 50 | */ |
| 51 | #define KEXEC_NOTE_BYTES \ |
| 52 | (ALIGN(sizeof(struct elf_note), 4) * 8 + \ |
| 53 | ALIGN(sizeof("CORE"), 4) * 7 + \ |
| 54 | ALIGN(sizeof(struct elf_prstatus), 4) + \ |
| 55 | ALIGN(sizeof(elf_fpregset_t), 4) + \ |
| 56 | ALIGN(sizeof(u64), 4) + \ |
| 57 | ALIGN(sizeof(u64), 4) + \ |
| 58 | ALIGN(sizeof(u32), 4) + \ |
| 59 | ALIGN(sizeof(u64) * 16, 4) + \ |
| 60 | ALIGN(sizeof(u32), 4) \ |
| 61 | ) |
| 62 | |
akpm@osdl.org | bf20830 | 2006-01-09 20:51:45 -0800 | [diff] [blame] | 63 | /* Provide a dummy definition to avoid build failures. */ |
| 64 | static inline void crash_setup_regs(struct pt_regs *newregs, |
| 65 | struct pt_regs *oldregs) { } |
| 66 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 67 | #endif /*_S390_KEXEC_H */ |