VirtualBox

Ignore:
Timestamp:
Apr 19, 2018 8:54:23 AM (7 years ago)
Author:
vboxsync
Message:

VMM/HM: Clean up and also fix HMR0EnsureCompleteBasicContext for AMD-V which also selectively re-loads guest state back into the VMCB.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/HMInternal.h

    r71529 r71910  
    173173#define HM_CHANGED_GUEST_SYSENTER_ESP_MSR        RT_BIT(15)
    174174#define HM_CHANGED_GUEST_EFER_MSR                RT_BIT(16)
    175 #define HM_CHANGED_GUEST_LAZY_MSRS               RT_BIT(17)     /* Shared */ /** @todo Move this to VT-x specific? */
    176 #define HM_CHANGED_GUEST_XCPT_INTERCEPTS         RT_BIT(18)
     175#define HM_CHANGED_GUEST_APIC_STATE              RT_BIT(17)
     176#define HM_CHANGED_GUEST_HWVIRT                  RT_BIT(18)
     177/* Logically common VMM state. */
     178#define HM_CHANGED_VMM_GUEST_XCPT_INTERCEPTS     RT_BIT(19)
     179#define HM_CHANGED_VMM_GUEST_LAZY_MSRS           RT_BIT(20)
    177180/* VT-x specific state. */
    178 #define HM_CHANGED_VMX_GUEST_AUTO_MSRS           RT_BIT(19)
    179 #define HM_CHANGED_VMX_GUEST_ACTIVITY_STATE      RT_BIT(20)
    180 #define HM_CHANGED_VMX_GUEST_APIC_STATE          RT_BIT(21)
    181 #define HM_CHANGED_VMX_ENTRY_CTLS                RT_BIT(22)
    182 #define HM_CHANGED_VMX_EXIT_CTLS                 RT_BIT(23)
     181#define HM_CHANGED_VMX_GUEST_AUTO_MSRS           RT_BIT(21)
     182#define HM_CHANGED_VMX_GUEST_ACTIVITY_STATE      RT_BIT(22)
     183#define HM_CHANGED_VMX_ENTRY_CTLS                RT_BIT(23)
     184#define HM_CHANGED_VMX_EXIT_CTLS                 RT_BIT(24)
    183185/* AMD-V specific state. */
    184 #define HM_CHANGED_SVM_GUEST_APIC_STATE          RT_BIT(19)
    185 #define HM_CHANGED_SVM_RESERVED1                 RT_BIT(20)
    186 #define HM_CHANGED_SVM_RESERVED2                 RT_BIT(21)
    187 #define HM_CHANGED_SVM_RESERVED3                 RT_BIT(22)
    188 #define HM_CHANGED_SVM_RESERVED4                 RT_BIT(23)
    189 
    190 #define HM_CHANGED_ALL_GUEST                     (  HM_CHANGED_GUEST_CR0                \
    191                                                   | HM_CHANGED_GUEST_CR3                \
    192                                                   | HM_CHANGED_GUEST_CR4                \
    193                                                   | HM_CHANGED_GUEST_GDTR               \
    194                                                   | HM_CHANGED_GUEST_IDTR               \
    195                                                   | HM_CHANGED_GUEST_LDTR               \
    196                                                   | HM_CHANGED_GUEST_TR                 \
    197                                                   | HM_CHANGED_GUEST_SEGMENT_REGS       \
    198                                                   | HM_CHANGED_GUEST_DEBUG              \
    199                                                   | HM_CHANGED_GUEST_RIP                \
    200                                                   | HM_CHANGED_GUEST_RSP                \
    201                                                   | HM_CHANGED_GUEST_RFLAGS             \
    202                                                   | HM_CHANGED_GUEST_CR2                \
    203                                                   | HM_CHANGED_GUEST_SYSENTER_CS_MSR    \
    204                                                   | HM_CHANGED_GUEST_SYSENTER_EIP_MSR   \
    205                                                   | HM_CHANGED_GUEST_SYSENTER_ESP_MSR   \
    206                                                   | HM_CHANGED_GUEST_EFER_MSR           \
    207                                                   | HM_CHANGED_GUEST_LAZY_MSRS          \
    208                                                   | HM_CHANGED_GUEST_XCPT_INTERCEPTS    \
    209                                                   | HM_CHANGED_VMX_GUEST_AUTO_MSRS      \
    210                                                   | HM_CHANGED_VMX_GUEST_ACTIVITY_STATE \
    211                                                   | HM_CHANGED_VMX_GUEST_APIC_STATE     \
    212                                                   | HM_CHANGED_VMX_ENTRY_CTLS           \
     186#define HM_CHANGED_SVM_RESERVED1                 RT_BIT(21)
     187#define HM_CHANGED_SVM_RESERVED2                 RT_BIT(22)
     188#define HM_CHANGED_SVM_RESERVED3                 RT_BIT(23)
     189#define HM_CHANGED_SVM_RESERVED4                 RT_BIT(24)
     190
     191#define HM_CHANGED_ALL_GUEST                     (  HM_CHANGED_GUEST_CR0                 \
     192                                                  | HM_CHANGED_GUEST_CR3                 \
     193                                                  | HM_CHANGED_GUEST_CR4                 \
     194                                                  | HM_CHANGED_GUEST_GDTR                \
     195                                                  | HM_CHANGED_GUEST_IDTR                \
     196                                                  | HM_CHANGED_GUEST_LDTR                \
     197                                                  | HM_CHANGED_GUEST_TR                  \
     198                                                  | HM_CHANGED_GUEST_SEGMENT_REGS        \
     199                                                  | HM_CHANGED_GUEST_DEBUG               \
     200                                                  | HM_CHANGED_GUEST_RIP                 \
     201                                                  | HM_CHANGED_GUEST_RSP                 \
     202                                                  | HM_CHANGED_GUEST_RFLAGS              \
     203                                                  | HM_CHANGED_GUEST_CR2                 \
     204                                                  | HM_CHANGED_GUEST_SYSENTER_CS_MSR     \
     205                                                  | HM_CHANGED_GUEST_SYSENTER_EIP_MSR    \
     206                                                  | HM_CHANGED_GUEST_SYSENTER_ESP_MSR    \
     207                                                  | HM_CHANGED_GUEST_EFER_MSR            \
     208                                                  | HM_CHANGED_GUEST_APIC_STATE          \
     209                                                  | HM_CHANGED_GUEST_HWVIRT              \
     210                                                  | HM_CHANGED_VMM_GUEST_XCPT_INTERCEPTS \
     211                                                  | HM_CHANGED_VMM_GUEST_LAZY_MSRS       \
     212                                                  | HM_CHANGED_VMX_GUEST_AUTO_MSRS      \
     213                                                  | HM_CHANGED_VMX_GUEST_ACTIVITY_STATE  \
     214                                                  | HM_CHANGED_VMX_ENTRY_CTLS            \
    213215                                                  | HM_CHANGED_VMX_EXIT_CTLS)
    214216
    215 #define HM_CHANGED_HOST_CONTEXT                  RT_BIT(24)
     217#define HM_CHANGED_HOST_CONTEXT                  RT_BIT(25)
    216218
    217219/* Bits shared between host and guest. */
    218 #define HM_CHANGED_HOST_GUEST_SHARED_STATE       (  HM_CHANGED_GUEST_CR0                \
    219                                                   | HM_CHANGED_GUEST_DEBUG              \
    220                                                   | HM_CHANGED_GUEST_LAZY_MSRS)
     220#define HM_CHANGED_HOST_GUEST_SHARED_STATE       (  HM_CHANGED_GUEST_CR0           \
     221                                                  | HM_CHANGED_GUEST_DEBUG         \
     222                                                  | HM_CHANGED_VMM_GUEST_LAZY_MSRS)
    221223/** @} */
    222224
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