VirtualBox

Changeset 70301 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Dec 22, 2017 6:06:27 AM (7 years ago)
Author:
vboxsync
Message:

VMM: Updating VMCB layout with the new GUEST_INTERRUPT_MASK field, interrupt shadow bitfield as a consequence.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_svm.h

    r70266 r70301  
    445445/** @} */
    446446
    447 /** @name SVMVMCB.ctrl.u64IntShadow
    448  * @{
    449  */
    450 #define SVM_INTERRUPT_SHADOW_ACTIVE           RT_BIT_64(0)
    451 /** @} */
    452 
    453447/** @name SVMINTCTRL.u3Type
    454448 * @{
     
    705699    SVMINTCTRL  IntCtrl;
    706700    /** Offset 0x68 - Interrupt shadow. */
    707     uint64_t    u64IntShadow;
     701    union
     702    {
     703        uint32_t    u1IntShadow    :  1;
     704        uint32_t    u1GuestIntMask :  1;
     705        uint32_t    u30Reserved0   : 30;
     706        uint64_t    u64IntShadowCtrl;
     707    } RT_UNION_NM(intshadow);
    708708    /** Offset 0x70 - Exit code. */
    709709    uint64_t    u64ExitCode;
     
    720720        uint32_t    u1Sev          :  1;
    721721        uint32_t    u1SevEs        :  1;
    722         uint32_t    u28Reserved0   : 28;
     722        uint32_t    u29Reserved0   : 29;
    723723        uint64_t    u64NpSevCtrl;
    724724    } RT_UNION_NM(np);
     
    736736        uint32_t    u1LbrVirt          :  1;
    737737        uint32_t    u1VirtVmsaveVmload :  1;
    738         uint32_t    u29Reserved0       : 29;
     738        uint32_t    u30Reserved1       : 30;
    739739        uint64_t    u64LbrVirtCtrl;
    740740    } RT_UNION_NM(lbrvirt);
     
    763763typedef const SVMVMCBCTRL *PCSVMVMCBCTRL;
    764764AssertCompileSize(SVMVMCBCTRL, 0x100);
    765 AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptRdCRx,                    0x00);
    766 AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptWrCRx,                    0x02);
    767 AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptRdDRx,                    0x04);
    768 AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptWrDRx,                    0x06);
    769 AssertCompileMemberOffset(SVMVMCBCTRL, u32InterceptXcpt,                     0x08);
    770 AssertCompileMemberOffset(SVMVMCBCTRL, u64InterceptCtrl,                     0x0c);
    771 AssertCompileMemberOffset(SVMVMCBCTRL, u8Reserved,                           0x14);
    772 AssertCompileMemberOffset(SVMVMCBCTRL, u16PauseFilterThreshold,              0x3c);
    773 AssertCompileMemberOffset(SVMVMCBCTRL, u16PauseFilterCount,                  0x3e);
    774 AssertCompileMemberOffset(SVMVMCBCTRL, u64IOPMPhysAddr,                      0x40);
    775 AssertCompileMemberOffset(SVMVMCBCTRL, u64MSRPMPhysAddr,                     0x48);
    776 AssertCompileMemberOffset(SVMVMCBCTRL, u64TSCOffset,                         0x50);
    777 AssertCompileMemberOffset(SVMVMCBCTRL, TLBCtrl,                              0x58);
    778 AssertCompileMemberOffset(SVMVMCBCTRL, IntCtrl,                              0x60);
    779 AssertCompileMemberOffset(SVMVMCBCTRL, u64IntShadow,                        0x68);
    780 AssertCompileMemberOffset(SVMVMCBCTRL, u64ExitCode,                          0x70);
    781 AssertCompileMemberOffset(SVMVMCBCTRL, u64ExitInfo1,                         0x78);
    782 AssertCompileMemberOffset(SVMVMCBCTRL, u64ExitInfo2,                         0x80);
    783 AssertCompileMemberOffset(SVMVMCBCTRL, ExitIntInfo,                          0x88);
    784 AssertCompileMemberOffset(SVMVMCBCTRL, RT_UNION_NM(np.) u64NpSevCtrl,        0x90);
    785 AssertCompileMemberOffset(SVMVMCBCTRL, AvicBar,                              0x98);
    786 AssertCompileMemberOffset(SVMVMCBCTRL, u8Reserved2,                          0xa0);
    787 AssertCompileMemberOffset(SVMVMCBCTRL, EventInject,                          0xa8);
    788 AssertCompileMemberOffset(SVMVMCBCTRL, u64NestedPagingCR3,                   0xb0);
    789 AssertCompileMemberOffset(SVMVMCBCTRL, RT_UNION_NM(lbrvirt.) u64LbrVirtCtrl, 0xb8);
    790 AssertCompileMemberOffset(SVMVMCBCTRL, u32VmcbCleanBits,                     0xc0);
    791 AssertCompileMemberOffset(SVMVMCBCTRL, u64NextRIP,                           0xc8);
    792 AssertCompileMemberOffset(SVMVMCBCTRL, cbInstrFetched,                       0xd0);
    793 AssertCompileMemberOffset(SVMVMCBCTRL, abInstr,                              0xd1);
    794 AssertCompileMemberOffset(SVMVMCBCTRL, AvicBackingPagePtr,                   0xe0);
    795 AssertCompileMemberOffset(SVMVMCBCTRL, u8Reserved3,                          0xe8);
    796 AssertCompileMemberOffset(SVMVMCBCTRL, AvicLogicalTablePtr,                  0xf0);
    797 AssertCompileMemberOffset(SVMVMCBCTRL, AvicPhysicalTablePtr,                 0xf8);
     765AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptRdCRx,                        0x00);
     766AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptWrCRx,                        0x02);
     767AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptRdDRx,                        0x04);
     768AssertCompileMemberOffset(SVMVMCBCTRL, u16InterceptWrDRx,                        0x06);
     769AssertCompileMemberOffset(SVMVMCBCTRL, u32InterceptXcpt,                         0x08);
     770AssertCompileMemberOffset(SVMVMCBCTRL, u64InterceptCtrl,                         0x0c);
     771AssertCompileMemberOffset(SVMVMCBCTRL, u8Reserved,                               0x14);
     772AssertCompileMemberOffset(SVMVMCBCTRL, u16PauseFilterThreshold,                  0x3c);
     773AssertCompileMemberOffset(SVMVMCBCTRL, u16PauseFilterCount,                      0x3e);
     774AssertCompileMemberOffset(SVMVMCBCTRL, u64IOPMPhysAddr,                          0x40);
     775AssertCompileMemberOffset(SVMVMCBCTRL, u64MSRPMPhysAddr,                         0x48);
     776AssertCompileMemberOffset(SVMVMCBCTRL, u64TSCOffset,                             0x50);
     777AssertCompileMemberOffset(SVMVMCBCTRL, TLBCtrl,                                  0x58);
     778AssertCompileMemberOffset(SVMVMCBCTRL, IntCtrl,                                  0x60);
     779AssertCompileMemberOffset(SVMVMCBCTRL, RT_UNION_NM(intshadow.) u64IntShadowCtrl, 0x68);
     780AssertCompileMemberOffset(SVMVMCBCTRL, u64ExitCode,                              0x70);
     781AssertCompileMemberOffset(SVMVMCBCTRL, u64ExitInfo1,                             0x78);
     782AssertCompileMemberOffset(SVMVMCBCTRL, u64ExitInfo2,                             0x80);
     783AssertCompileMemberOffset(SVMVMCBCTRL, ExitIntInfo,                              0x88);
     784AssertCompileMemberOffset(SVMVMCBCTRL, RT_UNION_NM(np.) u64NpSevCtrl,            0x90);
     785AssertCompileMemberOffset(SVMVMCBCTRL, AvicBar,                                  0x98);
     786AssertCompileMemberOffset(SVMVMCBCTRL, u8Reserved2,                              0xa0);
     787AssertCompileMemberOffset(SVMVMCBCTRL, EventInject,                              0xa8);
     788AssertCompileMemberOffset(SVMVMCBCTRL, u64NestedPagingCR3,                       0xb0);
     789AssertCompileMemberOffset(SVMVMCBCTRL, RT_UNION_NM(lbrvirt.) u64LbrVirtCtrl,     0xb8);
     790AssertCompileMemberOffset(SVMVMCBCTRL, u32VmcbCleanBits,                         0xc0);
     791AssertCompileMemberOffset(SVMVMCBCTRL, u64NextRIP,                               0xc8);
     792AssertCompileMemberOffset(SVMVMCBCTRL, cbInstrFetched,                           0xd0);
     793AssertCompileMemberOffset(SVMVMCBCTRL, abInstr,                                  0xd1);
     794AssertCompileMemberOffset(SVMVMCBCTRL, AvicBackingPagePtr,                       0xe0);
     795AssertCompileMemberOffset(SVMVMCBCTRL, u8Reserved3,                              0xe8);
     796AssertCompileMemberOffset(SVMVMCBCTRL, AvicLogicalTablePtr,                      0xf0);
     797AssertCompileMemberOffset(SVMVMCBCTRL, AvicPhysicalTablePtr,                     0xf8);
    798798
    799799/**
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette