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