Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
ab14de6c | 2 | /* |
ab14de6c HC |
3 | * Copyright IBM Corp. 2007 |
4 | * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com> | |
5 | */ | |
6 | ||
7 | #ifndef _ASM_S390_SCLP_H | |
8 | #define _ASM_S390_SCLP_H | |
9 | ||
10 | #include <linux/types.h> | |
e5854a58 | 11 | #include <asm/chpid.h> |
9c095234 | 12 | #include <asm/cpu.h> |
ab14de6c | 13 | |
e5854a58 | 14 | #define SCLP_CHP_INFO_MASK_SIZE 32 |
d08d9430 | 15 | #define SCLP_MAX_CORES 256 |
e5854a58 PO |
16 | |
17 | struct sclp_chp_info { | |
18 | u8 recognized[SCLP_CHP_INFO_MASK_SIZE]; | |
19 | u8 standby[SCLP_CHP_INFO_MASK_SIZE]; | |
20 | u8 configured[SCLP_CHP_INFO_MASK_SIZE]; | |
21 | }; | |
22 | ||
05dd2530 HC |
23 | #define LOADPARM_LEN 8 |
24 | ||
25 | struct sclp_ipl_info { | |
26 | int is_valid; | |
27 | int has_dump; | |
28 | char loadparm[LOADPARM_LEN]; | |
29 | }; | |
30 | ||
d08d9430 | 31 | struct sclp_core_entry { |
10ad34bc | 32 | u8 core_id; |
8dfd523f DH |
33 | u8 reserved0; |
34 | u8 : 4; | |
35 | u8 sief2 : 1; | |
23861451 DH |
36 | u8 skey : 1; |
37 | u8 : 2; | |
b9e28897 DH |
38 | u8 : 2; |
39 | u8 gpere : 1; | |
217a4406 | 40 | u8 siif : 1; |
d614be05 DH |
41 | u8 sigpif : 1; |
42 | u8 : 3; | |
72cd82b9 DH |
43 | u8 reserved2[3]; |
44 | u8 : 2; | |
45 | u8 ib : 1; | |
4a5c3e08 DH |
46 | u8 cei : 1; |
47 | u8 : 4; | |
72cd82b9 | 48 | u8 reserved3[6]; |
08d07968 HC |
49 | u8 type; |
50 | u8 reserved1; | |
51 | } __attribute__((packed)); | |
52 | ||
d08d9430 | 53 | struct sclp_core_info { |
08d07968 HC |
54 | unsigned int configured; |
55 | unsigned int standby; | |
56 | unsigned int combined; | |
d08d9430 | 57 | struct sclp_core_entry core[SCLP_MAX_CORES]; |
08d07968 HC |
58 | }; |
59 | ||
37c5f6c8 DH |
60 | struct sclp_info { |
61 | unsigned char has_linemode : 1; | |
62 | unsigned char has_vt220 : 1; | |
63 | unsigned char has_siif : 1; | |
64 | unsigned char has_sigpif : 1; | |
d08d9430 | 65 | unsigned char has_core_type : 1; |
37c5f6c8 | 66 | unsigned char has_sprp : 1; |
f7ba1d34 ED |
67 | unsigned char has_hvs : 1; |
68 | unsigned char has_esca : 1; | |
8dfd523f | 69 | unsigned char has_sief2 : 1; |
4013ade3 | 70 | unsigned char has_64bscao : 1; |
b9e28897 | 71 | unsigned char has_gpere : 1; |
09be9cb9 | 72 | unsigned char has_cmma : 1; |
5236c751 | 73 | unsigned char has_gsls : 1; |
72cd82b9 | 74 | unsigned char has_ib : 1; |
4a5c3e08 | 75 | unsigned char has_cei : 1; |
a0eb55e6 | 76 | unsigned char has_pfmfi : 1; |
9c375490 | 77 | unsigned char has_ibs : 1; |
23861451 | 78 | unsigned char has_skey : 1; |
71cb1bf6 | 79 | unsigned char has_kss : 1; |
9e73ea70 | 80 | unsigned char has_gisaf : 1; |
37c5f6c8 DH |
81 | unsigned int ibc; |
82 | unsigned int mtid; | |
83 | unsigned int mtid_cp; | |
84 | unsigned int mtid_prev; | |
423d5b36 HC |
85 | unsigned long rzm; |
86 | unsigned long rnmax; | |
87 | unsigned long hamax; | |
d08d9430 | 88 | unsigned int max_cores; |
37c5f6c8 | 89 | unsigned long hsa_size; |
423d5b36 | 90 | unsigned long facilities; |
154fa27e | 91 | unsigned int hmfai; |
37c5f6c8 DH |
92 | }; |
93 | extern struct sclp_info sclp; | |
94 | ||
12283a40 SO |
95 | struct zpci_report_error_header { |
96 | u8 version; /* Interface version byte */ | |
97 | u8 action; /* Action qualifier byte | |
98 | * 1: Deconfigure and repair action requested | |
99 | * (OpenCrypto Problem Call Home) | |
100 | * 2: Informational Report | |
101 | * (OpenCrypto Successful Diagnostics Execution) | |
102 | */ | |
103 | u16 length; /* Length of Subsequent Data (up to 4K – SCLP header */ | |
104 | u8 data[0]; /* Subsequent Data passed verbatim to SCLP ET 24 */ | |
105 | } __packed; | |
106 | ||
d5ab7a34 HC |
107 | int sclp_early_get_core_info(struct sclp_core_info *info); |
108 | void sclp_early_get_ipl_info(struct sclp_ipl_info *info); | |
109 | void sclp_early_detect(void); | |
110 | void sclp_early_printk(const char *s); | |
55a5542a GS |
111 | void sclp_early_printk_force(const char *s); |
112 | void __sclp_early_printk(const char *s, unsigned int len, unsigned int force); | |
d5ab7a34 | 113 | |
af51160e | 114 | int _sclp_get_core_info(struct sclp_core_info *info); |
d08d9430 MS |
115 | int sclp_core_configure(u8 core); |
116 | int sclp_core_deconfigure(u8 core); | |
05dd2530 HC |
117 | int sclp_sdias_blk_count(void); |
118 | int sclp_sdias_copy(void *dest, int blk_num, int nr_blks); | |
119 | int sclp_chp_configure(struct chp_id chpid); | |
120 | int sclp_chp_deconfigure(struct chp_id chpid); | |
121 | int sclp_chp_read_info(struct sclp_chp_info *info); | |
7441b062 JG |
122 | int sclp_pci_configure(u32 fid); |
123 | int sclp_pci_deconfigure(u32 fid); | |
12283a40 | 124 | int sclp_pci_report(struct zpci_report_error_header *report, u32 fh, u32 fid); |
df9694c7 MS |
125 | int memcpy_hsa_kernel(void *dest, unsigned long src, size_t count); |
126 | int memcpy_hsa_user(void __user *dest, unsigned long src, size_t count); | |
e435dc31 | 127 | void sclp_ocf_cpc_name_copy(char *dst); |
fbf87dff | 128 | |
af51160e HC |
129 | static inline int sclp_get_core_info(struct sclp_core_info *info, int early) |
130 | { | |
131 | if (early) | |
d5ab7a34 | 132 | return sclp_early_get_core_info(info); |
af51160e HC |
133 | return _sclp_get_core_info(info); |
134 | } | |
135 | ||
ab14de6c | 136 | #endif /* _ASM_S390_SCLP_H */ |