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