1 /* 2 * Copyright IBM Corp. 2005 3 * 4 * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> 5 * 6 */ 7 8 #ifndef _S390_KEXEC_H 9 #define _S390_KEXEC_H 10 11 #include <asm/processor.h> 12 #include <asm/page.h> 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 */ 27 #define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31) 28 29 /* Allocate control page with GFP_DMA */ 30 #define KEXEC_CONTROL_MEMORY_GFP GFP_DMA 31 32 /* Maximum address we can use for the crash control pages */ 33 #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL) 34 35 /* Allocate one page for the pdp and the second for the code */ 36 #define KEXEC_CONTROL_PAGE_SIZE 4096 37 38 /* Alignment of crashkernel memory */ 39 #define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE 40 41 /* The native architecture */ 42 #define KEXEC_ARCH KEXEC_ARCH_S390 43 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 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 66 #endif /*_S390_KEXEC_H */ 67