VirtualBox

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


Ignore:
Timestamp:
Jun 4, 2019 10:35:45 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
131083
Message:

VMM/HMVMXR0: Nested VMX: bugref:9180 Software interrupts cannot cause VM-exits directly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r78952 r78960  
    1406414064    switch (uAccessType)
    1406514065    {
    14066         case VMX_EXIT_QUAL_CRX_ACCESS_WRITE:       /* MOV to CRx */
     14066        /*
     14067         * MOV to CRx.
     14068         */
     14069        case VMX_EXIT_QUAL_CRX_ACCESS_WRITE:
    1406714070        {
    1406814071            rc = hmR0VmxImportGuestState(pVCpu, pVmcsInfo, IEM_CPUMCTX_EXTRN_MUST_MASK);
     
    1411814121        }
    1411914122
    14120         case VMX_EXIT_QUAL_CRX_ACCESS_READ:        /* MOV from CRx */
     14123        /*
     14124         * MOV from CRx.
     14125         */
     14126        case VMX_EXIT_QUAL_CRX_ACCESS_READ:
    1412114127        {
    1412214128            uint8_t const iGReg  = VMX_EXIT_QUAL_CRX_GENREG(uExitQual);
     
    1414214148        }
    1414314149
     14150        /*
     14151         * CLTS (Clear Task-Switch Flag in CR0).
     14152         */
    1414414153        case VMX_EXIT_QUAL_CRX_ACCESS_CLTS:
    1414514154        {
    14146             /*
    14147              * CLTS (Clear Task-Switch Flag in CR0).
    14148              */
    1414914155            rcStrict = hmR0VmxExitClts(pVCpu, pVmcsInfo, pVmxTransient->cbInstr);
    1415014156            break;
    1415114157        }
    1415214158
     14159        /*
     14160         * LMSW (Load Machine-Status Word into CR0).
     14161         * LMSW cannot clear CR0.PE, so no fRealOnV86Active kludge needed here.
     14162         */
    1415314163        case VMX_EXIT_QUAL_CRX_ACCESS_LMSW:
    1415414164        {
    14155             /*
    14156              * LMSW (Load Machine-Status Word into CR0).
    14157              * LMSW cannot clear CR0.PE, so no fRealOnV86Active kludge needed here.
    14158              */
    1415914165            RTGCPTR        GCPtrEffDst;
    1416014166            uint8_t const  cbInstr     = pVmxTransient->cbInstr;
     
    1579515801    AssertRCReturn(rc, rc);
    1579615802
    15797     Assert(VMX_EXIT_INT_INFO_IS_VALID(pVmxTransient->uExitIntInfo));
    15798     uint32_t const uExtIntType = VMX_EXIT_INT_INFO_TYPE(pVmxTransient->uExitIntInfo);
     15803    uint64_t const uExitIntInfo = pVmxTransient->uExitIntInfo;
     15804    Assert(VMX_EXIT_INT_INFO_IS_VALID(uExitIntInfo));
     15805    uint32_t const uExtIntType = VMX_EXIT_INT_INFO_TYPE(uExitIntInfo);
    1579915806
    1580015807    switch (uExtIntType)
     
    1582815835
    1582915836        /*
    15830          * This should only happen when "acknowledge external interrupts on VM-exit" is set.
    15831          * We don't set it when executing guests or nested-guests.
     15837         * External interrupts:
     15838         *    This should only happen when "acknowledge external interrupts on VM-exit" control is set.
     15839         *    However, we don't set it when executing guests or nested-guests. For nested-guests it is
     15840         *    emulated while injecting interrupts into the guest.
     15841         *
     15842         * Software interrupts:
     15843         *    VM-exits cannot be caused by software interrupts.
    1583215844         */
    1583315845        case VMX_EXIT_INT_INFO_TYPE_EXT_INT:
    15834             RT_FALL_THRU();
     15846        case VMX_EXIT_INT_INFO_TYPE_SW_INT:
    1583515847        default:
    1583615848        {
Note: See TracChangeset for help on using the changeset viewer.

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