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#define OS_INFO_VERSION_MAJOR	1
12#define OS_INFO_VERSION_MINOR	1
13#define OS_INFO_MAGIC		0x4f53494e464f535aULL /* OSINFOSZ */
14
15#define OS_INFO_VMCOREINFO	0
16#define OS_INFO_REIPL_BLOCK	1
17
18struct os_info_entry {
19	u64	addr;
20	u64	size;
21	u32	csum;
22} __packed;
23
24struct os_info {
25	u64	magic;
26	u32	csum;
27	u16	version_major;
28	u16	version_minor;
29	u64	crashkernel_addr;
30	u64	crashkernel_size;
31	struct os_info_entry entry[2];
32	u8	reserved[4024];
33} __packed;
34
35void os_info_init(void);
36void os_info_entry_add(int nr, void *ptr, u64 len);
37void os_info_crashkernel_add(unsigned long base, unsigned long size);
38u32 os_info_csum(struct os_info *os_info);
39
40#ifdef CONFIG_CRASH_DUMP
41void *os_info_old_entry(int nr, unsigned long *size);
42int copy_oldmem_kernel(void *dst, void *src, size_t count);
43#else
44static inline void *os_info_old_entry(int nr, unsigned long *size)
45{
46	return NULL;
47}
48#endif
49
50#endif /* _ASM_S390_OS_INFO_H */
51