brintos

brintos / linux-shallow public Read only

0
0
Text · 6.3 KiB · 160acd4 Raw
241 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Definition for kernel virtual machines on s390.4 *5 * Adapted copy of struct definition kvm_s390_sie_block from6 * arch/s390/include/asm/kvm_host.h for use in userspace selftest programs.7 *8 * Copyright IBM Corp. 2008, 20249 *10 * Authors:11 *  Christoph Schlameuss <schlameuss@linux.ibm.com>12 *  Carsten Otte <cotte@de.ibm.com>13 */14 15#ifndef SELFTEST_KVM_SIE_H16#define SELFTEST_KVM_SIE_H17 18#include <linux/types.h>19 20struct kvm_s390_sie_block {21#define CPUSTAT_STOPPED    0x8000000022#define CPUSTAT_WAIT       0x1000000023#define CPUSTAT_ECALL_PEND 0x0800000024#define CPUSTAT_STOP_INT   0x0400000025#define CPUSTAT_IO_INT     0x0200000026#define CPUSTAT_EXT_INT    0x0100000027#define CPUSTAT_RUNNING    0x0080000028#define CPUSTAT_RETAINED   0x0040000029#define CPUSTAT_TIMING_SUB 0x0002000030#define CPUSTAT_SIE_SUB    0x0001000031#define CPUSTAT_RRF        0x0000800032#define CPUSTAT_SLSV       0x0000400033#define CPUSTAT_SLSR       0x0000200034#define CPUSTAT_ZARCH      0x0000080035#define CPUSTAT_MCDS       0x0000010036#define CPUSTAT_KSS        0x0000020037#define CPUSTAT_SM         0x0000008038#define CPUSTAT_IBS        0x0000004039#define CPUSTAT_GED2       0x0000001040#define CPUSTAT_G          0x0000000841#define CPUSTAT_GED        0x0000000442#define CPUSTAT_J          0x0000000243#define CPUSTAT_P          0x0000000144	__u32 cpuflags;			/* 0x0000 */45	__u32: 1;			/* 0x0004 */46	__u32 prefix : 18;47	__u32: 1;48	__u32 ibc : 12;49	__u8	reserved08[4];		/* 0x0008 */50#define PROG_IN_SIE BIT(0)51	__u32	prog0c;			/* 0x000c */52	union {53		__u8	reserved10[16];	/* 0x0010 */54		struct {55			__u64	pv_handle_cpu;56			__u64	pv_handle_config;57		};58	};59#define PROG_BLOCK_SIE	BIT(0)60#define PROG_REQUEST	BIT(1)61	__u32	prog20;			/* 0x0020 */62	__u8	reserved24[4];		/* 0x0024 */63	__u64	cputm;			/* 0x0028 */64	__u64	ckc;			/* 0x0030 */65	__u64	epoch;			/* 0x0038 */66	__u32	svcc;			/* 0x0040 */67#define LCTL_CR0	0x800068#define LCTL_CR6	0x020069#define LCTL_CR9	0x004070#define LCTL_CR10	0x002071#define LCTL_CR11	0x001072#define LCTL_CR14	0x000273	__u16   lctl;			/* 0x0044 */74	__s16	icpua;			/* 0x0046 */75#define ICTL_OPEREXC	0x8000000076#define ICTL_PINT	0x2000000077#define ICTL_LPSW	0x0040000078#define ICTL_STCTL	0x0004000079#define ICTL_ISKE	0x0000400080#define ICTL_SSKE	0x0000200081#define ICTL_RRBE	0x0000100082#define ICTL_TPROT	0x0000020083	__u32	ictl;			/* 0x0048 */84#define ECA_CEI		0x8000000085#define ECA_IB		0x4000000086#define ECA_SIGPI	0x1000000087#define ECA_MVPGI	0x0100000088#define ECA_AIV		0x0020000089#define ECA_VX		0x0002000090#define ECA_PROTEXCI	0x0000200091#define ECA_APIE	0x0000000892#define ECA_SII		0x0000000193	__u32	eca;			/* 0x004c */94#define ICPT_INST	0x0495#define ICPT_PROGI	0x0896#define ICPT_INSTPROGI	0x0C97#define ICPT_EXTREQ	0x1098#define ICPT_EXTINT	0x1499#define ICPT_IOREQ	0x18100#define ICPT_WAIT	0x1c101#define ICPT_VALIDITY	0x20102#define ICPT_STOP	0x28103#define ICPT_OPEREXC	0x2C104#define ICPT_PARTEXEC	0x38105#define ICPT_IOINST	0x40106#define ICPT_KSS	0x5c107#define ICPT_MCHKREQ	0x60108#define ICPT_INT_ENABLE	0x64109#define ICPT_PV_INSTR	0x68110#define ICPT_PV_NOTIFY	0x6c111#define ICPT_PV_PREF	0x70112	__u8	icptcode;		/* 0x0050 */113	__u8	icptstatus;		/* 0x0051 */114	__u16	ihcpu;			/* 0x0052 */115	__u8	reserved54;		/* 0x0054 */116#define IICTL_CODE_NONE		 0x00117#define IICTL_CODE_MCHK		 0x01118#define IICTL_CODE_EXT		 0x02119#define IICTL_CODE_IO		 0x03120#define IICTL_CODE_RESTART	 0x04121#define IICTL_CODE_SPECIFICATION 0x10122#define IICTL_CODE_OPERAND	 0x11123	__u8	iictl;			/* 0x0055 */124	__u16	ipa;			/* 0x0056 */125	__u32	ipb;			/* 0x0058 */126	__u32	scaoh;			/* 0x005c */127#define FPF_BPBC	0x20128	__u8	fpf;			/* 0x0060 */129#define ECB_GS		0x40130#define ECB_TE		0x10131#define ECB_SPECI	0x08132#define ECB_SRSI	0x04133#define ECB_HOSTPROTINT	0x02134#define ECB_PTF		0x01135	__u8	ecb;			/* 0x0061 */136#define ECB2_CMMA	0x80137#define ECB2_IEP	0x20138#define ECB2_PFMFI	0x08139#define ECB2_ESCA	0x04140#define ECB2_ZPCI_LSI	0x02141	__u8	ecb2;			/* 0x0062 */142#define ECB3_AISI	0x20143#define ECB3_AISII	0x10144#define ECB3_DEA	0x08145#define ECB3_AES	0x04146#define ECB3_RI		0x01147	__u8	ecb3;			/* 0x0063 */148#define ESCA_SCAOL_MASK ~0x3fU149	__u32	scaol;			/* 0x0064 */150	__u8	sdf;			/* 0x0068 */151	__u8	epdx;			/* 0x0069 */152	__u8	cpnc;			/* 0x006a */153	__u8	reserved6b;		/* 0x006b */154	__u32	todpr;			/* 0x006c */155#define GISA_FORMAT1 0x00000001156	__u32	gd;			/* 0x0070 */157	__u8	reserved74[12];		/* 0x0074 */158	__u64	mso;			/* 0x0080 */159	__u64	msl;			/* 0x0088 */160	__u64	psw_mask;		/* 0x0090 */161	__u64	psw_addr;		/* 0x0098 */162	__u64	gg14;			/* 0x00a0 */163	__u64	gg15;			/* 0x00a8 */164	__u8	reservedb0[8];		/* 0x00b0 */165#define HPID_KVM	0x4166#define HPID_VSIE	0x5167	__u8	hpid;			/* 0x00b8 */168	__u8	reservedb9[7];		/* 0x00b9 */169	union {170		struct {171			__u32	eiparams;	/* 0x00c0 */172			__u16	extcpuaddr;	/* 0x00c4 */173			__u16	eic;		/* 0x00c6 */174		};175		__u64	mcic;			/* 0x00c0 */176	} __packed;177	__u32	reservedc8;		/* 0x00c8 */178	union {179		struct {180			__u16	pgmilc;		/* 0x00cc */181			__u16	iprcc;		/* 0x00ce */182		};183		__u32	edc;			/* 0x00cc */184	} __packed;185	union {186		struct {187			__u32	dxc;		/* 0x00d0 */188			__u16	mcn;		/* 0x00d4 */189			__u8	perc;		/* 0x00d6 */190			__u8	peratmid;	/* 0x00d7 */191		};192		__u64	faddr;			/* 0x00d0 */193	} __packed;194	__u64	peraddr;		/* 0x00d8 */195	__u8	eai;			/* 0x00e0 */196	__u8	peraid;			/* 0x00e1 */197	__u8	oai;			/* 0x00e2 */198	__u8	armid;			/* 0x00e3 */199	__u8	reservede4[4];		/* 0x00e4 */200	union {201		__u64	tecmc;		/* 0x00e8 */202		struct {203			__u16	subchannel_id;	/* 0x00e8 */204			__u16	subchannel_nr;	/* 0x00ea */205			__u32	io_int_parm;	/* 0x00ec */206			__u32	io_int_word;	/* 0x00f0 */207		};208	} __packed;209	__u8	reservedf4[8];		/* 0x00f4 */210#define CRYCB_FORMAT_MASK	0x00000003211#define CRYCB_FORMAT0		0x00000000212#define CRYCB_FORMAT1		0x00000001213#define CRYCB_FORMAT2		0x00000003214	__u32	crycbd;			/* 0x00fc */215	__u64	gcr[16];		/* 0x0100 */216	union {217		__u64	gbea;		/* 0x0180 */218		__u64	sidad;219	};220	__u8    reserved188[8];		/* 0x0188 */221	__u64   sdnxo;			/* 0x0190 */222	__u8    reserved198[8];		/* 0x0198 */223	__u32	fac;			/* 0x01a0 */224	__u8	reserved1a4[20];	/* 0x01a4 */225	__u64	cbrlo;			/* 0x01b8 */226	__u8	reserved1c0[8];		/* 0x01c0 */227#define ECD_HOSTREGMGMT	0x20000000228#define ECD_MEF		0x08000000229#define ECD_ETOKENF	0x02000000230#define ECD_ECC		0x00200000231	__u32	ecd;			/* 0x01c8 */232	__u8	reserved1cc[18];	/* 0x01cc */233	__u64	pp;			/* 0x01de */234	__u8	reserved1e6[2];		/* 0x01e6 */235	__u64	itdba;			/* 0x01e8 */236	__u64   riccbd;			/* 0x01f0 */237	__u64	gvrd;			/* 0x01f8 */238} __packed __aligned(512);239 240#endif /* SELFTEST_KVM_SIE_H */241