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 #define OS_INFO_MAX 13 31 32 #define OS_INFO_FLAG_REIPL_CLEAR (1UL << 0) 33 34 struct os_info_entry { 35 union { 36 u64 addr; 37 u64 val; 38 }; 39 u64 size; 40 u32 csum; 41 } __packed; 42 43 struct os_info { 44 u64 magic; 45 u32 csum; 46 u16 version_major; 47 u16 version_minor; 48 u64 crashkernel_addr; 49 u64 crashkernel_size; 50 struct os_info_entry entry[OS_INFO_MAX]; 51 u8 reserved[3804]; 52 } __packed; 53 54 void os_info_init(void); 55 void os_info_entry_add_data(int nr, void *ptr, u64 len); 56 void os_info_entry_add_val(int nr, u64 val); 57 void os_info_crashkernel_add(unsigned long base, unsigned long size); 58 u32 os_info_csum(struct os_info *os_info); 59 60 #ifdef CONFIG_CRASH_DUMP 61 void *os_info_old_entry(int nr, unsigned long *size); 62 static inline unsigned long os_info_old_value(int nr) 63 { 64 unsigned long size; 65 66 return (unsigned long)os_info_old_entry(nr, &size); 67 } 68 #else 69 static inline void *os_info_old_entry(int nr, unsigned long *size) 70 { 71 return NULL; 72 } 73 #endif 74 75 #endif /* _ASM_S390_OS_INFO_H */ 76