On 05.02.20 07:59, Thomas Huth wrote: > On 03/02/2020 14.19, Christian Borntraeger wrote: >> From: Michael Mueller <mimu@xxxxxxxxxxxxx> >> >> Define the interruption injection codes and the related fields in the >> sie control block for PVM interruption injection. > > You seem to only add the details for external interrupts and I/O > interrupts here? Maybe mention this in the description ... otherwise it > is confusing when you read patch 17 later ... or maybe merge this patch > here with patch 17 ? What about the following: This defines the necessary data structures in the SIE control block to inject external and I/O interrupts. We first define the the interrupt injection control, which defines the next interrupt to inject. Then we define the fields that contain the payload for external and I/O interrupts. The definitions for machine checks come in a later patch. > >> Signed-off-by: Michael Mueller <mimu@xxxxxxxxxxxxx> >> --- >> arch/s390/include/asm/kvm_host.h | 25 +++++++++++++++++++++---- >> 1 file changed, 21 insertions(+), 4 deletions(-) >> >> diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h >> index 58845b315be0..a45d10d87a8a 100644 >> --- a/arch/s390/include/asm/kvm_host.h >> +++ b/arch/s390/include/asm/kvm_host.h >> @@ -222,7 +222,15 @@ struct kvm_s390_sie_block { >> __u8 icptcode; /* 0x0050 */ >> __u8 icptstatus; /* 0x0051 */ >> __u16 ihcpu; /* 0x0052 */ >> - __u8 reserved54[2]; /* 0x0054 */ >> + __u8 reserved54; /* 0x0054 */ >> +#define IICTL_CODE_NONE 0x00 >> +#define IICTL_CODE_MCHK 0x01 >> +#define IICTL_CODE_EXT 0x02 >> +#define IICTL_CODE_IO 0x03 >> +#define IICTL_CODE_RESTART 0x04 >> +#define IICTL_CODE_SPECIFICATION 0x10 >> +#define IICTL_CODE_OPERAND 0x11 >> + __u8 iictl; /* 0x0055 */ >> __u16 ipa; /* 0x0056 */ >> __u32 ipb; /* 0x0058 */ >> __u32 scaoh; /* 0x005c */ >> @@ -259,7 +267,8 @@ struct kvm_s390_sie_block { >> #define HPID_KVM 0x4 >> #define HPID_VSIE 0x5 >> __u8 hpid; /* 0x00b8 */ >> - __u8 reservedb9[11]; /* 0x00b9 */ >> + __u8 reservedb9[7]; /* 0x00b9 */ >> + __u32 eiparams; /* 0x00c0 */ >> __u16 extcpuaddr; /* 0x00c4 */ >> __u16 eic; /* 0x00c6 */ >> __u32 reservedc8; /* 0x00c8 */ >> @@ -275,8 +284,16 @@ struct kvm_s390_sie_block { >> __u8 oai; /* 0x00e2 */ >> __u8 armid; /* 0x00e3 */ >> __u8 reservede4[4]; /* 0x00e4 */ >> - __u64 tecmc; /* 0x00e8 */ >> - __u8 reservedf0[12]; /* 0x00f0 */ >> + union { >> + __u64 tecmc; /* 0x00e8 */ >> + struct { >> + __u16 subchannel_id; /* 0x00e8 */ >> + __u16 subchannel_nr; /* 0x00ea */ >> + __u32 io_int_parm; /* 0x00ec */ >> + __u32 io_int_word; /* 0x00f0 */ >> + }; >> + } __packed; >> + __u8 reservedf4[8]; /* 0x00f4 */ > > Maybe add a comment to the new struct for which injection type it is > good for ... otherwise this might get hard to understand in the future > (especially if more stuff gets added like in patch 17). Not sure. We usually do not have documentation inside this structure for other things. > Anyway, > Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx> thanks