x86/Hyper-V: Fix definition of struct hv_vp_assist_page
authorTianyu Lan <Tianyu.Lan@microsoft.com>
Thu, 22 Aug 2019 14:30:19 +0000 (22:30 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 24 Sep 2019 11:37:11 +0000 (13:37 +0200)
The struct hv_vp_assist_page was defined incorrectly.
The "vtl_control" should be u64[3], "nested_enlightenments
_control" should be a u64 and there are 7 reserved bytes
following "enlighten_vmentry". Fix the definition.

Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/hyperv-tlfs.h

index 7a27056..3f08327 100644 (file)
@@ -524,14 +524,24 @@ struct hv_timer_message_payload {
        __u64 delivery_time;    /* When the message was delivered */
 } __packed;
 
+struct hv_nested_enlightenments_control {
+       struct {
+               __u32 directhypercall:1;
+               __u32 reserved:31;
+       } features;
+       struct {
+               __u32 reserved;
+       } hypercallControls;
+} __packed;
+
 /* Define virtual processor assist page structure. */
 struct hv_vp_assist_page {
        __u32 apic_assist;
-       __u32 reserved;
-       __u64 vtl_control[2];
-       __u64 nested_enlightenments_control[2];
-       __u32 enlighten_vmentry;
-       __u32 padding;
+       __u32 reserved1;
+       __u64 vtl_control[3];
+       struct hv_nested_enlightenments_control nested_control;
+       __u8 enlighten_vmentry;
+       __u8 reserved2[7];
        __u64 current_nested_vmcs;
 } __packed;