VirtualBox

Changeset 74017 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Sep 1, 2018 5:29:02 AM (6 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 VMLAUNCH skeleton.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/HMVMXAll.cpp

    r74015 r74017  
    3434{
    3535    /* Internal processing errors. */
    36     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_1                 , "Ipe_1"         ),
    37     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_2                 , "Ipe_2"         ),
    38     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_3                 , "Ipe_3"         ),
    39     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_4                 , "Ipe_4"         ),
    40     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_5                 , "Ipe_5"         ),
    41     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_6                 , "Ipe_6"         ),
    42     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_7                 , "Ipe_7"         ),
    43     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_8                 , "Ipe_8"         ),
    44     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_9                 , "Ipe_9"         ),
     36    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_1                 , "Ipe_1"          ),
     37    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_2                 , "Ipe_2"          ),
     38    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_3                 , "Ipe_3"          ),
     39    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_4                 , "Ipe_4"          ),
     40    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_5                 , "Ipe_5"          ),
     41    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_6                 , "Ipe_6"          ),
     42    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_7                 , "Ipe_7"          ),
     43    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_8                 , "Ipe_8"          ),
     44    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Ipe_9                 , "Ipe_9"          ),
    4545    /* VMXON. */
    46     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_A20M            , "A20M"          ),
    47     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Cpl             , "Cpl"           ),
    48     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Cr0Fixed0       , "Cr0Fixed0"     ),
    49     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Cr4Fixed0       , "Cr4Fixed0"     ),
    50     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Intercept       , "Intercept"     ),
    51     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_LongModeCS      , "LongModeCS"    ),
    52     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_MsrFeatCtl      , "MsrFeatCtl"    ),
    53     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrAbnormal     , "PtrAbnormal"   ),
    54     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrAlign        , "PtrAlign"      ),
    55     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrMap          , "PtrMap"        ),
    56     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrPhysRead     , "PtrPhysRead"   ),
    57     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrWidth        , "PtrWidth"      ),
    58     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_RealOrV86Mode   , "RealOrV86Mode" ),
    59     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Success         , "Success"       ),
    60     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_ShadowVmcs      , "ShadowVmcs"    ),
    61     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_VmxAlreadyRoot  , "VmxAlreadyRoot"),
    62     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Vmxe            , "Vmxe"          ),
    63     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_VmcsRevId       , "VmcsRevId"     ),
    64     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_VmxRootCpl      , "VmxRootCpl"    ),
     46    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_A20M            , "A20M"           ),
     47    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Cpl             , "Cpl"            ),
     48    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Cr0Fixed0       , "Cr0Fixed0"      ),
     49    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Cr4Fixed0       , "Cr4Fixed0"      ),
     50    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Intercept       , "Intercept"      ),
     51    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_LongModeCS      , "LongModeCS"     ),
     52    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_MsrFeatCtl      , "MsrFeatCtl"     ),
     53    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrAbnormal     , "PtrAbnormal"    ),
     54    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrAlign        , "PtrAlign"       ),
     55    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrMap          , "PtrMap"         ),
     56    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrPhysRead     , "PtrPhysRead"    ),
     57    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_PtrWidth        , "PtrWidth"       ),
     58    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_RealOrV86Mode   , "RealOrV86Mode"  ),
     59    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Success         , "Success"        ),
     60    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_ShadowVmcs      , "ShadowVmcs"     ),
     61    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_VmxAlreadyRoot  , "VmxAlreadyRoot" ),
     62    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_Vmxe            , "Vmxe"           ),
     63    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_VmcsRevId       , "VmcsRevId"      ),
     64    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxon_VmxRootCpl      , "VmxRootCpl"     ),
    6565    /* VMXOFF. */
    66     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Cpl            , "Cpl"           ),
    67     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Intercept      , "Intercept"     ),
    68     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_LongModeCS     , "LongModeCS"    ),
    69     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_RealOrV86Mode  , "RealOrV86Mode" ),
    70     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Success        , "Success"       ),
    71     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Vmxe           , "Vmxe"          ),
    72     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_VmxRoot        , "VmxRoot"       ),
     66    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Cpl            , "Cpl"            ),
     67    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Intercept      , "Intercept"      ),
     68    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_LongModeCS     , "LongModeCS"     ),
     69    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_RealOrV86Mode  , "RealOrV86Mode"  ),
     70    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Success        , "Success"        ),
     71    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_Vmxe           , "Vmxe"           ),
     72    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmxoff_VmxRoot        , "VmxRoot"        ),
    7373    /* VMPTRLD. */
    74     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_Cpl           , "Cpl"           ),
    75     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_LongModeCS    , "LongModeCS"    ),
    76     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrAbnormal   , "PtrAbnormal"   ),
    77     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrAlign      , "PtrAlign"      ),
    78     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrMap        , "PtrMap"        ),
    79     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrReadPhys   , "PtrReadPhys"   ),
    80     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrVmxon      , "PtrVmxon"      ),
    81     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrWidth      , "PtrWidth"      ),
    82     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_RealOrV86Mode , "RealOrV86Mode" ),
    83     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_ShadowVmcs    , "ShadowVmcs"    ),
    84     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_Success       , "Success"       ),
    85     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_VmcsRevId     , "VmcsRevId"     ),
    86     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_VmxRoot       , "VmxRoot"       ),
     74    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_Cpl           , "Cpl"            ),
     75    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_LongModeCS    , "LongModeCS"     ),
     76    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrAbnormal   , "PtrAbnormal"    ),
     77    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrAlign      , "PtrAlign"       ),
     78    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrMap        , "PtrMap"         ),
     79    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrReadPhys   , "PtrReadPhys"    ),
     80    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrVmxon      , "PtrVmxon"       ),
     81    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_PtrWidth      , "PtrWidth"       ),
     82    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_RealOrV86Mode , "RealOrV86Mode"  ),
     83    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_ShadowVmcs    , "ShadowVmcs"     ),
     84    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_Success       , "Success"        ),
     85    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_VmcsRevId     , "VmcsRevId"      ),
     86    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrld_VmxRoot       , "VmxRoot"        ),
    8787    /* VMPTRST. */
    88     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_Cpl           , "Cpl"           ),
    89     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_LongModeCS    , "LongModeCS"    ),
    90     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_PtrMap        , "PtrMap"        ),
    91     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_RealOrV86Mode , "RealOrV86Mode" ),
    92     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_Success       , "Success"       ),
    93     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_VmxRoot       , "VmxRoot"       ),
     88    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_Cpl           , "Cpl"            ),
     89    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_LongModeCS    , "LongModeCS"     ),
     90    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_PtrMap        , "PtrMap"         ),
     91    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_RealOrV86Mode , "RealOrV86Mode"  ),
     92    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_Success       , "Success"        ),
     93    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmptrst_VmxRoot       , "VmxRoot"        ),
    9494    /* VMCLEAR. */
    95     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_Cpl           , "Cpl"           ),
    96     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_LongModeCS    , "LongModeCS"    ),
    97     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrAbnormal   , "PtrAbnormal"   ),
    98     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrAlign      , "PtrAlign"      ),
    99     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrMap        , "PtrMap"        ),
    100     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrReadPhys   , "PtrReadPhys"   ),
    101     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrVmxon      , "PtrVmxon"      ),
    102     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrWidth      , "PtrWidth"      ),
    103     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_RealOrV86Mode , "RealOrV86Mode" ),
    104     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_Success       , "Success"       ),
    105     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_VmxRoot       , "VmxRoot"       ),
     95    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_Cpl           , "Cpl"            ),
     96    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_LongModeCS    , "LongModeCS"     ),
     97    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrAbnormal   , "PtrAbnormal"    ),
     98    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrAlign      , "PtrAlign"       ),
     99    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrMap        , "PtrMap"         ),
     100    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrReadPhys   , "PtrReadPhys"    ),
     101    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrVmxon      , "PtrVmxon"       ),
     102    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_PtrWidth      , "PtrWidth"       ),
     103    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_RealOrV86Mode , "RealOrV86Mode"  ),
     104    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_Success       , "Success"        ),
     105    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmclear_VmxRoot       , "VmxRoot"        ),
    106106    /* VMWRITE. */
    107     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_Cpl           , "Cpl"           ),
    108     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_FieldInvalid  , "FieldInvalid"  ),
    109     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_FieldRo       , "FieldRo"       ),
    110     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_LinkPtrInvalid, "LinkPtrInvalid"),
    111     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_LongModeCS    , "LongModeCS"    ),
    112     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_PtrInvalid    , "PtrInvalid"    ),
    113     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_PtrMap        , "PtrMap"        ),
    114     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_RealOrV86Mode , "RealOrV86Mode" ),
    115     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_Success       , "Success"       ),
    116     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_VmxRoot       , "VmxRoot"       ),
     107    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_Cpl           , "Cpl"            ),
     108    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_FieldInvalid  , "FieldInvalid"   ),
     109    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_FieldRo       , "FieldRo"        ),
     110    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_LinkPtrInvalid, "LinkPtrInvalid" ),
     111    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_LongModeCS    , "LongModeCS"     ),
     112    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_PtrInvalid    , "PtrInvalid"     ),
     113    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_PtrMap        , "PtrMap"         ),
     114    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_RealOrV86Mode , "RealOrV86Mode"  ),
     115    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_Success       , "Success"        ),
     116    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmwrite_VmxRoot       , "VmxRoot"        ),
    117117    /* VMREAD. */
    118     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_Cpl            , "Cpl"           ),
    119     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_FieldInvalid   , "FieldInvalid"  ),
    120     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_LinkPtrInvalid , "LinkPtrInvalid"),
    121     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_LongModeCS     , "LongModeCS"    ),
    122     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_PtrInvalid     , "PtrInvalid"    ),
    123     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_PtrMap         , "PtrMap"        ),
    124     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_RealOrV86Mode  , "RealOrV86Mode" ),
    125     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_Success        , "Success"       ),
    126     VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_VmxRoot        , "VmxRoot"       )
     118    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_Cpl            , "Cpl"            ),
     119    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_FieldInvalid   , "FieldInvalid"   ),
     120    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_LinkPtrInvalid , "LinkPtrInvalid" ),
     121    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_LongModeCS     , "LongModeCS"     ),
     122    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_PtrInvalid     , "PtrInvalid"     ),
     123    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_PtrMap         , "PtrMap"         ),
     124    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_RealOrV86Mode  , "RealOrV86Mode"  ),
     125    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_Success        , "Success"        ),
     126    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmread_VmxRoot        , "VmxRoot"        ),
     127    /* VMLAUNCH. */
     128    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmlaunch_Cpl          , "Cpl"            ),
     129    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmlaunch_LongModeCS   , "LongModeCS"     ),
     130    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmlaunch_RealOrV86Mode, "RealOrV86Mode"  ),
     131    VMX_INSTR_DIAG_DESC(kVmxVInstrDiag_Vmlaunch_VmxRoot      , "VmxRoot"        )
    127132    /* kVmxVInstrDiag_Last */
    128133};
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r74015 r74017  
    19491949
    19501950/**
     1951 * VMLAUNCH instruction execution worker.
     1952 *
     1953 * @param   pVCpu           The cross context virtual CPU structure.
     1954 * @param   cbInstr         The instruction length.
     1955 * @param   pExitInfo       Pointer to the VM-exit instruction information struct.
     1956 *                          Optional, can  be NULL.
     1957 *
     1958 * @remarks Common VMX instruction checks are already expected to by the caller,
     1959 *          i.e. CR4.VMXE, Real/V86 mode, EFER/CS.L checks.
     1960 */
     1961IEM_STATIC VBOXSTRICTRC iemVmxVmlaunch(PVMCPU pVCpu, uint8_t cbInstr, PCVMXVEXITINFO pExitInfo)
     1962{
     1963    if (IEM_IS_VMX_NON_ROOT_MODE(pVCpu))
     1964    {
     1965        RT_NOREF(pExitInfo);
     1966        /** @todo NSTVMX: intercept. */
     1967    }
     1968    Assert(IEM_IS_VMX_ROOT_MODE(pVCpu));
     1969
     1970    /* CPL. */
     1971    if (CPUMGetGuestCPL(pVCpu) > 0)
     1972    {
     1973        Log(("vmlaunch: CPL %u -> #GP(0)\n", pVCpu->iem.s.uCpl));
     1974        pVCpu->cpum.GstCtx.hwvirt.vmx.enmInstrDiag = kVmxVInstrDiag_Vmlaunch_Cpl;
     1975        return iemRaiseGeneralProtectionFault0(pVCpu);
     1976    }
     1977
     1978    /** @todo NSTVMX: VMLAUNCH impl.   */
     1979    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     1980    return VERR_IEM_IPE_2;
     1981}
     1982
     1983
     1984/**
    19511985 * Implements 'VMXON'.
    19521986 */
     
    19591993/**
    19601994 * Implements 'VMXOFF'.
     1995 *
     1996 * @remarks Common VMX instruction checks are already expected to by the caller,
     1997 *          i.e. CR4.VMXE, Real/V86 mode, EFER/CS.L checks.
    19611998 */
    19621999IEM_CIMPL_DEF_0(iemCImpl_vmxoff)
     
    19662003    return VINF_EM_RAW_EMULATE_INSTR;
    19672004# else
    1968     IEM_VMX_IN_VMX_OPERATION(pVCpu, "vmxoff", kVmxVInstrDiag_Vmxoff);
    1969     IEM_VMX_INSTR_CHECKS(pVCpu, "vmxoff", kVmxVInstrDiag_Vmxoff);
    1970 
    19712005    if (IEM_IS_VMX_NON_ROOT_MODE(pVCpu))
    19722006    {
     
    20192053IEM_CIMPL_DEF_0(iemCImpl_vmlaunch)
    20202054{
    2021     RT_NOREF2(pVCpu, cbInstr);
    2022     /** @todo NSTVMX: VMLAUNCH impl. */
    2023     return VERR_IEM_IPE_2;
     2055    return iemVmxVmlaunch(pVCpu, cbInstr, NULL /* pExitInfo */);
    20242056}
    20252057
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r74015 r74017  
    252252{
    253253    IEMOP_MNEMONIC(vmlaunch, "vmlaunch");
     254    IEMOP_HLP_IN_VMX_OPERATION("vmlaunch", kVmxVInstrDiag_Vmlaunch);
     255    IEMOP_HLP_VMX_INSTR("vmalunch", kVmxVInstrDiag_Vmlaunch);
    254256    IEMOP_HLP_DONE_DECODING();
    255257    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmlaunch);
     
    277279{
    278280    IEMOP_MNEMONIC(vmxoff, "vmxoff");
     281    IEMOP_HLP_IN_VMX_OPERATION("vmxoff", kVmxVInstrDiag_Vmxoff);
     282    IEMOP_HLP_VMX_INSTR("vmxoff", kVmxVInstrDiag_Vmxoff);
    279283    IEMOP_HLP_DONE_DECODING();
    280284    return IEM_MC_DEFER_TO_CIMPL_0(iemCImpl_vmxoff);
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