Message ID | 20191024114059.102802-16-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: s390: Add support for protected VMs | expand |
On 24/10/2019 13.40, Janosch Frank wrote: > From: Michael Mueller <mimu@linux.ibm.com> > > The following fields are added to the sie control block type 4: > - Machine Check Interruption Code (mcic) > - External Damage Code (edc) > - Failing Storage Address (faddr) > > Signed-off-by: Michael Mueller <mimu@linux.ibm.com> > --- > arch/s390/include/asm/kvm_host.h | 33 +++++++++++++++++++++++--------- > 1 file changed, 24 insertions(+), 9 deletions(-) > > diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h > index 63fc32d38aa9..0ab309b7bf4c 100644 > --- a/arch/s390/include/asm/kvm_host.h > +++ b/arch/s390/include/asm/kvm_host.h > @@ -261,16 +261,31 @@ struct kvm_s390_sie_block { > #define HPID_VSIE 0x5 > __u8 hpid; /* 0x00b8 */ > __u8 reservedb9[7]; /* 0x00b9 */ > - __u32 eiparams; /* 0x00c0 */ > - __u16 extcpuaddr; /* 0x00c4 */ > - __u16 eic; /* 0x00c6 */ > + union { > + struct { > + __u32 eiparams; /* 0x00c0 */ > + __u16 extcpuaddr; /* 0x00c4 */ > + __u16 eic; /* 0x00c6 */ > + }; > + __u64 mcic; /* 0x00c0 */ > + } __packed; > __u32 reservedc8; /* 0x00c8 */ > - __u16 pgmilc; /* 0x00cc */ > - __u16 iprcc; /* 0x00ce */ > - __u32 dxc; /* 0x00d0 */ > - __u16 mcn; /* 0x00d4 */ > - __u8 perc; /* 0x00d6 */ > - __u8 peratmid; /* 0x00d7 */ > + union { > + struct { > + __u16 pgmilc; /* 0x00cc */ > + __u16 iprcc; /* 0x00ce */ > + }; > + __u32 edc; /* 0x00cc */ > + } __packed; > + union { > + struct { > + __u32 dxc; /* 0x00d0 */ > + __u16 mcn; /* 0x00d4 */ > + __u8 perc; /* 0x00d6 */ > + __u8 peratmid; /* 0x00d7 */ > + }; > + __u64 faddr; /* 0x00d0 */ > + } __packed; Maybe drop the __packed keywords since the struct members are naturally aligned anyway? Thomas
On 13.11.19 15:49, Thomas Huth wrote: > On 24/10/2019 13.40, Janosch Frank wrote: >> From: Michael Mueller <mimu@linux.ibm.com> >> >> The following fields are added to the sie control block type 4: >> - Machine Check Interruption Code (mcic) >> - External Damage Code (edc) >> - Failing Storage Address (faddr) >> >> Signed-off-by: Michael Mueller <mimu@linux.ibm.com> >> --- >> arch/s390/include/asm/kvm_host.h | 33 +++++++++++++++++++++++--------- >> 1 file changed, 24 insertions(+), 9 deletions(-) >> >> diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h >> index 63fc32d38aa9..0ab309b7bf4c 100644 >> --- a/arch/s390/include/asm/kvm_host.h >> +++ b/arch/s390/include/asm/kvm_host.h >> @@ -261,16 +261,31 @@ struct kvm_s390_sie_block { >> #define HPID_VSIE 0x5 >> __u8 hpid; /* 0x00b8 */ >> __u8 reservedb9[7]; /* 0x00b9 */ >> - __u32 eiparams; /* 0x00c0 */ >> - __u16 extcpuaddr; /* 0x00c4 */ >> - __u16 eic; /* 0x00c6 */ >> + union { >> + struct { >> + __u32 eiparams; /* 0x00c0 */ >> + __u16 extcpuaddr; /* 0x00c4 */ >> + __u16 eic; /* 0x00c6 */ >> + }; >> + __u64 mcic; /* 0x00c0 */ >> + } __packed; >> __u32 reservedc8; /* 0x00c8 */ >> - __u16 pgmilc; /* 0x00cc */ >> - __u16 iprcc; /* 0x00ce */ >> - __u32 dxc; /* 0x00d0 */ >> - __u16 mcn; /* 0x00d4 */ >> - __u8 perc; /* 0x00d6 */ >> - __u8 peratmid; /* 0x00d7 */ >> + union { >> + struct { >> + __u16 pgmilc; /* 0x00cc */ >> + __u16 iprcc; /* 0x00ce */ >> + }; >> + __u32 edc; /* 0x00cc */ >> + } __packed; >> + union { >> + struct { >> + __u32 dxc; /* 0x00d0 */ >> + __u16 mcn; /* 0x00d4 */ >> + __u8 perc; /* 0x00d6 */ >> + __u8 peratmid; /* 0x00d7 */ >> + }; >> + __u64 faddr; /* 0x00d0 */ >> + } __packed; > > Maybe drop the __packed keywords since the struct members are naturally > aligned anyway? > > Thomas > Thanks, I will give it a try. Michael
diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h index 63fc32d38aa9..0ab309b7bf4c 100644 --- a/arch/s390/include/asm/kvm_host.h +++ b/arch/s390/include/asm/kvm_host.h @@ -261,16 +261,31 @@ struct kvm_s390_sie_block { #define HPID_VSIE 0x5 __u8 hpid; /* 0x00b8 */ __u8 reservedb9[7]; /* 0x00b9 */ - __u32 eiparams; /* 0x00c0 */ - __u16 extcpuaddr; /* 0x00c4 */ - __u16 eic; /* 0x00c6 */ + union { + struct { + __u32 eiparams; /* 0x00c0 */ + __u16 extcpuaddr; /* 0x00c4 */ + __u16 eic; /* 0x00c6 */ + }; + __u64 mcic; /* 0x00c0 */ + } __packed; __u32 reservedc8; /* 0x00c8 */ - __u16 pgmilc; /* 0x00cc */ - __u16 iprcc; /* 0x00ce */ - __u32 dxc; /* 0x00d0 */ - __u16 mcn; /* 0x00d4 */ - __u8 perc; /* 0x00d6 */ - __u8 peratmid; /* 0x00d7 */ + union { + struct { + __u16 pgmilc; /* 0x00cc */ + __u16 iprcc; /* 0x00ce */ + }; + __u32 edc; /* 0x00cc */ + } __packed; + union { + struct { + __u32 dxc; /* 0x00d0 */ + __u16 mcn; /* 0x00d4 */ + __u8 perc; /* 0x00d6 */ + __u8 peratmid; /* 0x00d7 */ + }; + __u64 faddr; /* 0x00d0 */ + } __packed; __u64 peraddr; /* 0x00d8 */ __u8 eai; /* 0x00e0 */ __u8 peraid; /* 0x00e1 */