On Thu, 2022-04-14 at 15:20 +0200, Vitaly Kuznetsov wrote: > 'struct hv_enlightened_vmcs' definition in selftests is not '__packed' > and so we rely on the compiler doing the right padding. This is not > obvious so it seems beneficial to use the same definition as in kernel. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > --- > tools/testing/selftests/kvm/include/x86_64/evmcs.h | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/tools/testing/selftests/kvm/include/x86_64/evmcs.h b/tools/testing/selftests/kvm/include/x86_64/evmcs.h > index cc5d14a45702..b6067b555110 100644 > --- a/tools/testing/selftests/kvm/include/x86_64/evmcs.h > +++ b/tools/testing/selftests/kvm/include/x86_64/evmcs.h > @@ -41,6 +41,8 @@ struct hv_enlightened_vmcs { > u16 host_gs_selector; > u16 host_tr_selector; > > + u16 padding16_1; > + > u64 host_ia32_pat; > u64 host_ia32_efer; > > @@ -159,7 +161,7 @@ struct hv_enlightened_vmcs { > u64 ept_pointer; > > u16 virtual_processor_id; > - u16 padding16[3]; > + u16 padding16_2[3]; > > u64 padding64_2[5]; > u64 guest_physical_address; > @@ -195,15 +197,15 @@ struct hv_enlightened_vmcs { > u64 guest_rip; > > u32 hv_clean_fields; > - u32 hv_padding_32; > + u32 padding32_1; > u32 hv_synthetic_controls; > struct { > u32 nested_flush_hypercall:1; > u32 msr_bitmap:1; > u32 reserved:30; > - } hv_enlightenments_control; > + } __packed hv_enlightenments_control; > u32 hv_vp_id; > - > + u32 padding32_2; > u64 hv_vm_id; > u64 partition_assist_page; > u64 padding64_4[4]; > @@ -211,7 +213,7 @@ struct hv_enlightened_vmcs { > u64 padding64_5[7]; > u64 xss_exit_bitmap; > u64 padding64_6[7]; > -}; > +} __packed; > > #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_NONE 0 > #define HV_VMX_ENLIGHTENED_CLEAN_FIELD_IO_BITMAP BIT(0) Makes sense. Reviewed-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Best regards, Maxim Levitsky