]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
cf13f0ea | 2 | /* |
a53c8fab | 3 | * Copyright IBM Corp. 2005 |
cf13f0ea HC |
4 | * |
5 | * Author(s): Rolf Adelsberger <adelsberger@de.ibm.com> | |
6 | * | |
7 | */ | |
8 | ||
9 | #ifndef _S390_KEXEC_H | |
10 | #define _S390_KEXEC_H | |
11 | ||
cf13f0ea | 12 | #include <asm/processor.h> |
da477737 | 13 | #include <asm/page.h> |
cf13f0ea HC |
14 | /* |
15 | * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. | |
16 | * I.e. Maximum page that is mapped directly into kernel memory, | |
17 | * and kmap is not required. | |
18 | */ | |
19 | ||
20 | /* Maximum physical address we can use pages from */ | |
21 | #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) | |
22 | ||
23 | /* Maximum address we can reach in physical address mode */ | |
24 | #define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL) | |
25 | ||
26 | /* Maximum address we can use for the control pages */ | |
27 | /* Not more than 2GB */ | |
a1a392f0 | 28 | #define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31) |
cf13f0ea | 29 | |
7e01b5ac MS |
30 | /* Allocate control page with GFP_DMA */ |
31 | #define KEXEC_CONTROL_MEMORY_GFP GFP_DMA | |
32 | ||
60a0c68d MH |
33 | /* Maximum address we can use for the crash control pages */ |
34 | #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL) | |
35 | ||
cf13f0ea | 36 | /* Allocate one page for the pdp and the second for the code */ |
163f6876 | 37 | #define KEXEC_CONTROL_PAGE_SIZE 4096 |
cf13f0ea | 38 | |
dab7a7b1 MH |
39 | /* Alignment of crashkernel memory */ |
40 | #define KEXEC_CRASH_MEM_ALIGN HPAGE_SIZE | |
41 | ||
cf13f0ea HC |
42 | /* The native architecture */ |
43 | #define KEXEC_ARCH KEXEC_ARCH_S390 | |
44 | ||
bf208305 | 45 | /* Provide a dummy definition to avoid build failures. */ |
46 | static inline void crash_setup_regs(struct pt_regs *newregs, | |
47 | struct pt_regs *oldregs) { } | |
48 | ||
e49bb0a2 PR |
49 | struct kimage; |
50 | struct s390_load_data { | |
51 | /* Pointer to the kernel buffer. Used to register cmdline etc.. */ | |
52 | void *kernel_buf; | |
53 | ||
54 | /* Total size of loaded segments in memory. Used as an offset. */ | |
55 | size_t memsz; | |
56 | ||
57 | /* Load address of initrd. Used to register INITRD_START in kernel. */ | |
58 | unsigned long initrd_load_addr; | |
59 | }; | |
60 | ||
61 | int kexec_file_add_purgatory(struct kimage *image, | |
62 | struct s390_load_data *data); | |
63 | int kexec_file_add_initrd(struct kimage *image, | |
64 | struct s390_load_data *data, | |
65 | char *initrd, unsigned long initrd_len); | |
66 | int *kexec_file_update_kernel(struct kimage *iamge, | |
67 | struct s390_load_data *data); | |
68 | ||
69 | extern const struct kexec_file_ops s390_kexec_image_ops; | |
8be01882 | 70 | extern const struct kexec_file_ops s390_kexec_elf_ops; |
e49bb0a2 | 71 | |
cf13f0ea | 72 | #endif /*_S390_KEXEC_H */ |