xref: /linux/arch/s390/include/asm/os_info.h (revision c98d2ecae08f02bd2dccd24e7e485e9f0211db65)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * OS info memory interface
4  *
5  * Copyright IBM Corp. 2012
6  * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
7  */
8 #ifndef _ASM_S390_OS_INFO_H
9 #define _ASM_S390_OS_INFO_H
10 
11 #include <linux/uio.h>
12 
13 #define OS_INFO_VERSION_MAJOR	1
14 #define OS_INFO_VERSION_MINOR	1
15 #define OS_INFO_MAGIC		0x4f53494e464f535aULL /* OSINFOSZ */
16 
17 #define OS_INFO_VMCOREINFO	0
18 #define OS_INFO_REIPL_BLOCK	1
19 #define OS_INFO_FLAGS_ENTRY	2
20 #define OS_INFO_RESERVED	3
21 #define OS_INFO_IDENTITY_BASE	4
22 #define OS_INFO_KASLR_OFFSET	5
23 #define OS_INFO_KASLR_OFF_PHYS	6
24 #define OS_INFO_VMEMMAP		7
25 #define OS_INFO_AMODE31_START	8
26 #define OS_INFO_AMODE31_END	9
27 #define OS_INFO_IMAGE_START	10
28 #define OS_INFO_IMAGE_END	11
29 #define OS_INFO_IMAGE_PHYS	12
30 
31 #define OS_INFO_FLAG_REIPL_CLEAR	(1UL << 0)
32 
33 struct os_info_entry {
34 	union {
35 		u64	addr;
36 		u64	val;
37 	};
38 	u64	size;
39 	u32	csum;
40 } __packed;
41 
42 struct os_info {
43 	u64	magic;
44 	u32	csum;
45 	u16	version_major;
46 	u16	version_minor;
47 	u64	crashkernel_addr;
48 	u64	crashkernel_size;
49 	struct os_info_entry entry[10];
50 	u8	reserved[3864];
51 } __packed;
52 
53 void os_info_init(void);
54 void os_info_entry_add_data(int nr, void *ptr, u64 len);
55 void os_info_entry_add_val(int nr, u64 val);
56 void os_info_crashkernel_add(unsigned long base, unsigned long size);
57 u32 os_info_csum(struct os_info *os_info);
58 
59 #ifdef CONFIG_CRASH_DUMP
60 void *os_info_old_entry(int nr, unsigned long *size);
61 static inline unsigned long os_info_old_value(int nr)
62 {
63 	unsigned long size;
64 
65 	return (unsigned long)os_info_old_entry(nr, &size);
66 }
67 #else
68 static inline void *os_info_old_entry(int nr, unsigned long *size)
69 {
70 	return NULL;
71 }
72 #endif
73 
74 #endif /* _ASM_S390_OS_INFO_H */
75