File Index
Files and directories
Sign in
FILE

sclp.h

File preview with syntax highlighting.

linux-6.19.14/arch/s390/include/asm/sclp.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 *    Copyright IBM Corp. 2007
  4 */
  5
  6#ifndef _ASM_S390_SCLP_H
  7#define _ASM_S390_SCLP_H
  8
  9#include <linux/types.h>
 10
 11#define SCLP_CHP_INFO_MASK_SIZE		32
 12#define EARLY_SCCB_SIZE		PAGE_SIZE
 13#define SCLP_MAX_CORES		512
 14/* 144 + 16 * SCLP_MAX_CORES + 2 * (SCLP_MAX_CORES - 1) */
 15#define EXT_SCCB_READ_SCP	(3 * PAGE_SIZE)
 16/* 24 + 16 * SCLP_MAX_CORES */
 17#define EXT_SCCB_READ_CPU	(3 * PAGE_SIZE)
 18
 19#define SCLP_ERRNOTIFY_AQ_RESET			0
 20#define SCLP_ERRNOTIFY_AQ_REPAIR		1
 21#define SCLP_ERRNOTIFY_AQ_INFO_LOG		2
 22#define SCLP_ERRNOTIFY_AQ_OPTICS_DATA		3
 23
 24#ifndef __ASSEMBLER__
 25#include <linux/uio.h>
 26#include <asm/chpid.h>
 27#include <asm/cpu.h>
 28
 29struct sclp_chp_info {
 30	u8 recognized[SCLP_CHP_INFO_MASK_SIZE];
 31	u8 standby[SCLP_CHP_INFO_MASK_SIZE];
 32	u8 configured[SCLP_CHP_INFO_MASK_SIZE];
 33};
 34
 35#define LOADPARM_LEN 8
 36
 37struct sclp_ipl_info {
 38	int is_valid;
 39	int has_dump;
 40	char loadparm[LOADPARM_LEN];
 41};
 42
 43struct sclp_core_entry {
 44	u8 core_id;
 45	u8 reserved0;
 46	u8 : 4;
 47	u8 sief2 : 1;
 48	u8 skey : 1;
 49	u8 : 2;
 50	u8 : 2;
 51	u8 gpere : 1;
 52	u8 siif : 1;
 53	u8 sigpif : 1;
 54	u8 : 3;
 55	u8 reserved2[3];
 56	u8 : 2;
 57	u8 ib : 1;
 58	u8 cei : 1;
 59	u8 : 4;
 60	u8 reserved3[6];
 61	u8 type;
 62	u8 reserved1;
 63} __attribute__((packed));
 64
 65struct sclp_core_info {
 66	unsigned int configured;
 67	unsigned int standby;
 68	unsigned int combined;
 69	struct sclp_core_entry core[SCLP_MAX_CORES];
 70};
 71
 72struct sclp_info {
 73	unsigned char has_linemode : 1;
 74	unsigned char has_vt220 : 1;
 75	unsigned char has_siif : 1;
 76	unsigned char has_sigpif : 1;
 77	unsigned char has_core_type : 1;
 78	unsigned char has_sprp : 1;
 79	unsigned char has_hvs : 1;
 80	unsigned char has_wti : 1;
 81	unsigned char has_esca : 1;
 82	unsigned char has_sief2 : 1;
 83	unsigned char has_64bscao : 1;
 84	unsigned char has_gpere : 1;
 85	unsigned char has_cmma : 1;
 86	unsigned char has_gsls : 1;
 87	unsigned char has_ib : 1;
 88	unsigned char has_cei : 1;
 89	unsigned char has_pfmfi : 1;
 90	unsigned char has_ibs : 1;
 91	unsigned char has_skey : 1;
 92	unsigned char has_kss : 1;
 93	unsigned char has_diag204_bif : 1;
 94	unsigned char has_gisaf : 1;
 95	unsigned char has_diag310 : 1;
 96	unsigned char has_diag318 : 1;
 97	unsigned char has_diag320 : 1;
 98	unsigned char has_diag324 : 1;
 99	unsigned char has_sipl : 1;
100	unsigned char has_sipl_eckd : 1;
101	unsigned char has_dirq : 1;
102	unsigned char has_iplcc : 1;
103	unsigned char has_zpci_lsi : 1;
104	unsigned char has_aisii : 1;
105	unsigned char has_aeni : 1;
106	unsigned char has_aisi : 1;
107	unsigned int ibc;
108	unsigned int mtid;
109	unsigned int mtid_cp;
110	unsigned int mtid_prev;
111	unsigned long rzm;
112	unsigned long rnmax;
113	unsigned long hamax;
114	unsigned int max_cores;
115	unsigned long hsa_size;
116	unsigned long facilities;
117	unsigned int hmfai;
118};
119extern struct sclp_info sclp;
120
121struct sccb_header {
122	u16	length;
123	u8	function_code;
124	u8	control_mask[3];
125	u16	response_code;
126} __packed;
127
128struct evbuf_header {
129	u16	length;
130	u8	type;
131	u8	flags;
132	u16	_reserved;
133} __packed;
134
135struct err_notify_evbuf {
136	struct evbuf_header header;
137	u8 action;
138	u8 atype;
139	u32 fh;
140	u32 fid;
141	u8 data[];
142} __packed;
143
144struct err_notify_sccb {
145	struct sccb_header header;
146	struct err_notify_evbuf evbuf;
147} __packed;
148
149struct zpci_report_error_header {
150	u8 version;	/* Interface version byte */
151	u8 action;	/* Action qualifier byte
152			 * 0: Adapter Reset Request
153			 * 1: Deconfigure and repair action requested
154			 *	(OpenCrypto Problem Call Home)
155			 * 2: Informational Report
156			 *	(OpenCrypto Successful Diagnostics Execution)
157			 */
158	u16 length;	/* Length of Subsequent Data (up to 4K – SCLP header */
159	u8 data[];	/* Subsequent Data passed verbatim to SCLP ET 24 */
160} __packed;
161
162extern char *sclp_early_sccb;
163
164void sclp_early_adjust_va(void);
165void sclp_early_set_buffer(void *sccb);
166int sclp_early_read_info(void);
167int sclp_early_read_storage_info(void);
168int sclp_early_get_core_info(struct sclp_core_info *info);
169void sclp_early_get_ipl_info(struct sclp_ipl_info *info);
170void sclp_early_detect(void);
171void sclp_early_detect_machine_features(void);
172void sclp_early_printk(const char *s);
173void __sclp_early_printk(const char *s, unsigned int len);
174void sclp_emergency_printk(const char *s);
175
176int sclp_init(void);
177int sclp_early_get_memsize(unsigned long *mem);
178int sclp_early_get_hsa_size(unsigned long *hsa_size);
179int _sclp_get_core_info(struct sclp_core_info *info);
180int sclp_core_configure(u8 core);
181int sclp_core_deconfigure(u8 core);
182int sclp_sdias_blk_count(void);
183int sclp_sdias_copy(void *dest, int blk_num, int nr_blks);
184int sclp_chp_configure(struct chp_id chpid);
185int sclp_chp_deconfigure(struct chp_id chpid);
186int sclp_chp_read_info(struct sclp_chp_info *info);
187int sclp_pci_configure(u32 fid);
188int sclp_pci_deconfigure(u32 fid);
189int sclp_ap_configure(u32 apid);
190int sclp_ap_deconfigure(u32 apid);
191int sclp_pci_report(struct zpci_report_error_header *report, u32 fh, u32 fid);
192size_t memcpy_hsa_iter(struct iov_iter *iter, unsigned long src, size_t count);
193void sclp_ocf_cpc_name_copy(char *dst);
194
195static inline int sclp_get_core_info(struct sclp_core_info *info, int early)
196{
197	if (early)
198		return sclp_early_get_core_info(info);
199	return _sclp_get_core_info(info);
200}
201
202#endif /* __ASSEMBLER__ */
203#endif /* _ASM_S390_SCLP_H */
~/ Read-only file preview.