Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 1 | /* |
Heiko Carstens | a53c8fa | 2012-07-20 11:15:04 +0200 | [diff] [blame^] | 2 | * Copyright IBM Corp. 2005 |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 3 | * |
| 4 | * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> |
| 5 | * |
| 6 | */ |
| 7 | |
| 8 | #ifndef _S390_KEXEC_H |
| 9 | #define _S390_KEXEC_H |
| 10 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 11 | #include <asm/processor.h> |
Heiko Carstens | da47773 | 2012-05-23 13:55:45 +0200 | [diff] [blame] | 12 | #include <asm/page.h> |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 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 */ |
Heiko Carstens | a1a392f | 2006-12-04 15:40:28 +0100 | [diff] [blame] | 27 | #define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31) |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 28 | |
Michael Holzheu | 60a0c68 | 2011-10-30 15:16:40 +0100 | [diff] [blame] | 29 | /* Maximum address we can use for the crash control pages */ |
| 30 | #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL) |
| 31 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 32 | /* Allocate one page for the pdp and the second for the code */ |
Huang Ying | 163f687 | 2008-08-15 00:40:22 -0700 | [diff] [blame] | 33 | #define KEXEC_CONTROL_PAGE_SIZE 4096 |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 34 | |
Michael Holzheu | dab7a7b | 2011-10-30 15:16:44 +0100 | [diff] [blame] | 35 | /* Alignment of crashkernel memory */ |
| 36 | #define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE |
| 37 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 38 | /* The native architecture */ |
| 39 | #define KEXEC_ARCH KEXEC_ARCH_S390 |
| 40 | |
Michael Holzheu | cb78edf | 2012-01-20 14:34:16 -0800 | [diff] [blame] | 41 | /* |
| 42 | * Size for s390x ELF notes per CPU |
| 43 | * |
| 44 | * Seven notes plus zero note at the end: prstatus, fpregset, timer, |
| 45 | * tod_cmp, tod_reg, control regs, and prefix |
| 46 | */ |
| 47 | #define KEXEC_NOTE_BYTES \ |
| 48 | (ALIGN(sizeof(struct elf_note), 4) * 8 + \ |
| 49 | ALIGN(sizeof("CORE"), 4) * 7 + \ |
| 50 | ALIGN(sizeof(struct elf_prstatus), 4) + \ |
| 51 | ALIGN(sizeof(elf_fpregset_t), 4) + \ |
| 52 | ALIGN(sizeof(u64), 4) + \ |
| 53 | ALIGN(sizeof(u64), 4) + \ |
| 54 | ALIGN(sizeof(u32), 4) + \ |
| 55 | ALIGN(sizeof(u64) * 16, 4) + \ |
| 56 | ALIGN(sizeof(u32), 4) \ |
| 57 | ) |
| 58 | |
akpm@osdl.org | bf20830 | 2006-01-09 20:51:45 -0800 | [diff] [blame] | 59 | /* Provide a dummy definition to avoid build failures. */ |
| 60 | static inline void crash_setup_regs(struct pt_regs *newregs, |
| 61 | struct pt_regs *oldregs) { } |
| 62 | |
Heiko Carstens | cf13f0e | 2005-06-25 14:58:11 -0700 | [diff] [blame] | 63 | #endif /*_S390_KEXEC_H */ |