xref: /linux/arch/s390/include/asm/os_info.h (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1 /*
2  * OS info memory interface
3  *
4  * Copyright IBM Corp. 2012
5  * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
6  */
7 #ifndef _ASM_S390_OS_INFO_H
8 #define _ASM_S390_OS_INFO_H
9 
10 #define OS_INFO_VERSION_MAJOR	1
11 #define OS_INFO_VERSION_MINOR	1
12 #define OS_INFO_MAGIC		0x4f53494e464f535aULL /* OSINFOSZ */
13 
14 #define OS_INFO_VMCOREINFO	0
15 #define OS_INFO_REIPL_BLOCK	1
16 
17 struct os_info_entry {
18 	u64	addr;
19 	u64	size;
20 	u32	csum;
21 } __packed;
22 
23 struct os_info {
24 	u64	magic;
25 	u32	csum;
26 	u16	version_major;
27 	u16	version_minor;
28 	u64	crashkernel_addr;
29 	u64	crashkernel_size;
30 	struct os_info_entry entry[2];
31 	u8	reserved[4024];
32 } __packed;
33 
34 void os_info_init(void);
35 void os_info_entry_add(int nr, void *ptr, u64 len);
36 void os_info_crashkernel_add(unsigned long base, unsigned long size);
37 u32 os_info_csum(struct os_info *os_info);
38 
39 #ifdef CONFIG_CRASH_DUMP
40 void *os_info_old_entry(int nr, unsigned long *size);
41 int copy_from_oldmem(void *dest, void *src, size_t count);
42 #else
43 static inline void *os_info_old_entry(int nr, unsigned long *size)
44 {
45 	return NULL;
46 }
47 #endif
48 
49 #endif /* _ASM_S390_OS_INFO_H */
50