[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] x86/svm: Rework VMCB comments



Identify the cleanbits by name as well as number.  For single reserved fields,
use an anonymous bitfield to reduce the number of res names.  Use 3-diget
offsets consistently for offsets.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <jbeulich@xxxxxxxx>
CC: Roger Pau Monné <roger@xxxxxxxxxxxxxx>
CC: Teddy Astie <teddy.astie@xxxxxxxxxx>
CC: Jason Andryuk <jason.andryuk@xxxxxxx>
CC: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
CC: Denis Mukhin <dmukhin@xxxxxxxx>

I've rebased FRED and Denis's AVIC to check how this extends, and everything
looks fine.  Both have some longer field names.
---
 xen/arch/x86/hvm/svm/vmcb.h | 152 ++++++++++++++++++------------------
 1 file changed, 76 insertions(+), 76 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/vmcb.h b/xen/arch/x86/hvm/svm/vmcb.h
index 151d0f1dd1ae..9d89ce44fe55 100644
--- a/xen/arch/x86/hvm/svm/vmcb.h
+++ b/xen/arch/x86/hvm/svm/vmcb.h
@@ -385,28 +385,28 @@ typedef union
 
 struct vmcb_struct {
     /* Control area */
-    uint32_t _cr_intercepts;         /* offset 0x00 - cleanbit 0 */
-    uint32_t _dr_intercepts;         /* offset 0x04 - cleanbit 0 */
-    uint32_t _exception_intercepts;  /* offset 0x08 - cleanbit 0 */
-    uint32_t _general1_intercepts;   /* offset 0x0C - cleanbit 0 */
-    uint32_t _general2_intercepts;   /* offset 0x10 - cleanbit 0 */
-    uint32_t _general3_intercepts;   /* offset 0x14 - cleanbit 0 */
-    uint32_t res01[9];
-    uint16_t _pause_filter_thresh;   /* offset 0x3C - cleanbit 0 */
-    uint16_t _pause_filter_count;    /* offset 0x3E - cleanbit 0 */
-    uint64_t _iopm_base_pa;          /* offset 0x40 - cleanbit 1 */
-    uint64_t _msrpm_base_pa;         /* offset 0x48 - cleanbit 1 */
-    uint64_t _tsc_offset;            /* offset 0x50 - cleanbit 0 */
-    uint32_t _asid;                  /* offset 0x58 - cleanbit 2 */
-    uint8_t  tlb_control;            /* offset 0x5C - TLB_CTRL_* */
+    uint32_t _cr_intercepts;             /* 0x000 - Clean.intercepts(0) */
+    uint32_t _dr_intercepts;             /* 0x004   | */
+    uint32_t _exception_intercepts;      /* 0x008   | */
+    uint32_t _general1_intercepts;       /* 0x00c   | */
+    uint32_t _general2_intercepts;       /* 0x010   | */
+    uint32_t _general3_intercepts;       /* 0x014   | */
+    uint32_t res01[9];                   /* 0x018   | */
+    uint16_t _pause_filter_thresh;       /* 0x03c   | */
+    uint16_t _pause_filter_count;        /* 0x03e   v */
+    uint64_t _iopm_base_pa;              /* 0x040 - Clean.iopm(1) */
+    uint64_t _msrpm_base_pa;             /* 0x048   v */
+    uint64_t _tsc_offset;                /* 0x050 - Clean.intercepts(0) */
+    uint32_t _asid;                      /* 0x058 - Clean.asid(2) */
+    uint8_t  tlb_control;                /* 0x05c - TLB_CTRL_* */
     uint8_t  res07[3];
-    vintr_t _vintr;             /* offset 0x60 - cleanbit 3 */
-    intstat_t int_stat;         /* offset 0x68 */
-    uint64_t exitcode;               /* offset 0x70 */
+    vintr_t _vintr;                      /* 0x060 - Clean.tpr(3) */
+    intstat_t int_stat;                  /* 0x068 */
+    uint64_t exitcode;                   /* 0x070 */
     union {
         struct {
-            uint64_t exitinfo1; /* offset 0x78 */
-            uint64_t exitinfo2; /* offset 0x80 */
+            uint64_t exitinfo1;          /* 0x078 */
+            uint64_t exitinfo2;          /* 0x080 */
         };
         union {
             struct {
@@ -454,8 +454,8 @@ struct vmcb_struct {
             } task_switch;
         } ei;
     };
-    intinfo_t exit_int_info;    /* offset 0x88 */
-    union {                     /* offset 0x90 - cleanbit 4 */
+    intinfo_t exit_int_info;             /* 0x088 */
+    union {                              /* 0x090 - Clean.np(4) */
         struct {
             bool _np        :1;
             bool _sev       :1;
@@ -467,72 +467,72 @@ struct vmcb_struct {
         uint64_t _np_ctrl;
     };
     uint64_t res08[2];
-    intinfo_t event_inj;        /* offset 0xA8 */
-    uint64_t _h_cr3;            /* offset 0xB0 - cleanbit 4 */
-    virt_ext_t virt_ext;        /* offset 0xB8 */
-    vmcbcleanbits_t cleanbits;  /* offset 0xC0 */
-    uint32_t res09;             /* offset 0xC4 */
-    uint64_t nextrip;           /* offset 0xC8 */
-    uint8_t  guest_ins_len;     /* offset 0xD0 */
-    uint8_t  guest_ins[15];     /* offset 0xD1 */
-    uint64_t res10a[8];         /* offset 0xE0 */
-    uint16_t bus_lock_count;    /* offset 0x120 */
-    uint16_t res10b[3];         /* offset 0x122 */
-    uint64_t res10c[91];        /* offset 0x128 pad to save area */
-
-    /* State Save area */
+    intinfo_t event_inj;                 /* 0x0a8 */
+    uint64_t _h_cr3;                     /* 0x0b0 - Clean.np(4) */
+    virt_ext_t virt_ext;                 /* 0x0b8 */
+    vmcbcleanbits_t cleanbits;           /* 0x0c0 */
+    uint32_t :32;
+    uint64_t nextrip;                    /* 0x0c8 */
+    uint8_t  guest_ins_len;              /* 0x0d0 */
+    uint8_t  guest_ins[15];              /* 0x0d1 */
+    uint64_t res10a[8];
+    uint16_t bus_lock_count;             /* 0x120 */
+    uint16_t res10b[3];
+    uint64_t res10c[91];
+
+    /* State Save area, offset 0x400 */
     union {
         struct segment_register sreg[6];
         struct {
-            struct segment_register es;  /* offset 0x400 - cleanbit 8 */
-            struct segment_register cs;  /* cleanbit 8 */
-            struct segment_register ss;  /* cleanbit 8 */
-            struct segment_register ds;  /* cleanbit 8 */
-            struct segment_register fs;
-            struct segment_register gs;
+            struct segment_register es;  /* 0x400 + 0x000 - Clean.seg(8) */
+            struct segment_register cs;  /* 0x400 + 0x010   | */
+            struct segment_register ss;  /* 0x400 + 0x020   | */
+            struct segment_register ds;  /* 0x400 + 0x030   v */
+            struct segment_register fs;  /* 0x400 + 0x040 */
+            struct segment_register gs;  /* 0x400 + 0x050 */
         };
     };
-    struct segment_register gdtr; /* cleanbit 7 */
-    struct segment_register ldtr;
-    struct segment_register idtr; /* cleanbit 7 */
-    struct segment_register tr;
+    struct segment_register gdtr;        /* 0x400 + 0x060 - Clean.dt(7) */
+    struct segment_register ldtr;        /* 0x400 + 0x070 */
+    struct segment_register idtr;        /* 0x400 + 0x080 - Clean.dt(7) */
+    struct segment_register tr;          /* 0x400 + 0x090 */
     uint64_t res10[5];
     uint8_t res11[3];
-    uint8_t _cpl;               /* cleanbit 8 */
-    uint32_t res12;
-    uint64_t _efer;             /* offset 0x400 + 0xD0 - cleanbit 5 */
+    uint8_t _cpl;                        /* 0x400 + 0x0cb - Clean.seg(8) */
+    uint32_t :32;
+    uint64_t _efer;                      /* 0x400 + 0x0d0 - Clean.cr(5) */
     uint64_t res13[14];
-    uint64_t _cr4;              /* offset 0x400 + 0x148 - cleanbit 5 */
-    uint64_t _cr3;              /* cleanbit 5 */
-    uint64_t _cr0;              /* cleanbit 5 */
-    uint64_t _dr7;              /* cleanbit 6 */
-    uint64_t _dr6;              /* cleanbit 6 */
-    uint64_t rflags;
-    uint64_t rip;
+    uint64_t _cr4;                       /* 0x400 + 0x148 - Clean.cr(5) */
+    uint64_t _cr3;                       /* 0x400 + 0x150   | */
+    uint64_t _cr0;                       /* 0x400 + 0x158   v */
+    uint64_t _dr7;                       /* 0x400 + 0x160 - Clean.dr(6) */
+    uint64_t _dr6;                       /* 0x400 + 0x168   v */
+    uint64_t rflags;                     /* 0x400 + 0x170 */
+    uint64_t rip;                        /* 0x400 + 0x178 */
     uint64_t res14[11];
-    uint64_t rsp;
-    uint64_t _msr_s_cet;        /* offset 0x400 + 0x1E0 - cleanbit 12 */
-    uint64_t _ssp;              /* offset 0x400 + 0x1E8   | */
-    uint64_t _msr_isst;         /* offset 0x400 + 0x1F0   v */
-    uint64_t rax;
-    uint64_t star;
-    uint64_t lstar;
-    uint64_t cstar;
-    uint64_t sfmask;
-    uint64_t kerngsbase;
-    uint64_t sysenter_cs;
-    uint64_t sysenter_esp;
-    uint64_t sysenter_eip;
-    uint64_t _cr2;              /* cleanbit 9 */
+    uint64_t rsp;                        /* 0x400 + 0x1d8 */
+    uint64_t _msr_s_cet;                 /* 0x400 + 0x1e0 - Clean.cet(12) */
+    uint64_t _ssp;                       /* 0x400 + 0x1e8   | */
+    uint64_t _msr_isst;                  /* 0x400 + 0x1f0   v */
+    uint64_t rax;                        /* 0x400 + 0x1f8 */
+    uint64_t star;                       /* 0x400 + 0x200 */
+    uint64_t lstar;                      /* 0x400 + 0x208 */
+    uint64_t cstar;                      /* 0x400 + 0x210 */
+    uint64_t sfmask;                     /* 0x400 + 0x218 */
+    uint64_t kerngsbase;                 /* 0x400 + 0x220 */
+    uint64_t sysenter_cs;                /* 0x400 + 0x228 */
+    uint64_t sysenter_esp;               /* 0x400 + 0x230 */
+    uint64_t sysenter_eip;               /* 0x400 + 0x238 */
+    uint64_t _cr2;                       /* 0x400 + 0x240 - Clean.cr2(9) */
     uint64_t res16[4];
-    uint64_t _g_pat;            /* cleanbit 4 */
-    uint64_t _debugctlmsr;      /* cleanbit 10 */
-    uint64_t _lastbranchfromip; /* cleanbit 10 */
-    uint64_t _lastbranchtoip;   /* cleanbit 10 */
-    uint64_t _lastintfromip;    /* cleanbit 10 */
-    uint64_t _lastinttoip;      /* cleanbit 10 */
+    uint64_t _g_pat;                     /* 0x400 + 0x268 - Clean.np(4) */
+    uint64_t _debugctlmsr;               /* 0x400 + 0x270 - Clean.lbr(10) */
+    uint64_t _lastbranchfromip;          /* 0x400 + 0x278   | */
+    uint64_t _lastbranchtoip;            /* 0x400 + 0x280   | */
+    uint64_t _lastintfromip;             /* 0x400 + 0x288   | */
+    uint64_t _lastinttoip;               /* 0x400 + 0x290   v */
     uint64_t res17[9];
-    uint64_t spec_ctrl;
+    uint64_t spec_ctrl;                  /* 0x400 + 0x2e0 */
     uint64_t res18[291];
 };
 
-- 
2.39.5




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.