VirtualBox

Ignore:
Timestamp:
Jun 21, 2017 8:29:25 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
116269
Message:

VMM: Nested Hw.virt: Fixes and debugger info support for VCPU hwvirt state.

File:
1 edited

Legend:

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

    r67165 r67529  
    277277static FNSVMEXITHANDLER hmR0SvmExitVmsave;
    278278static FNSVMEXITHANDLER hmR0SvmExitInvlpga;
     279static FNSVMEXITHANDLER hmR0SvmExitVmrun;
    279280#endif
    280281/** @} */
     
    589590    uint16_t offMsrpm;
    590591    uint32_t uMsrpmBit;
    591     int rc = hmSvmGetMsrpmOffsetAndBit(uMsr, &offMsrpm, &uMsrpmBit);
     592    int rc = HMSvmGetMsrpmOffsetAndBit(uMsr, &offMsrpm, &uMsrpmBit);
    592593    AssertRC(rc);
    593594
     
    24402441    uint8_t   uVector     = Event.n.u8Vector;
    24412442    uint8_t   uVectorType = Event.n.u3Type;
    2442     TRPMEVENT enmTrapType = hmSvmEventToTrpmEventType(&Event);
     2443    TRPMEVENT enmTrapType = HMSvmEventToTrpmEventType(&Event);
    24432444
    24442445    Log4(("HM event->TRPM: uVector=%#x enmTrapType=%d\n", uVector, uVectorType));
     
    29672968    HMSVM_ASSERT_PREEMPT_SAFE();
    29682969
    2969 #ifdef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM
     2970#if defined(VBOX_WITH_NESTED_HWVIRT) && defined(VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM)
    29702971    /* Nested Hw. virt through SVM R0 execution is not yet implemented, IEM only, we shouldn't get here. */
    29712972    if (CPUMIsGuestInSvmNestedHwVirtMode(pCtx))
     2973    {
     2974        Log2(("hmR0SvmPreRunGuest: Rescheduling to IEM due to nested-hwvirt or forced IEM exec -> VINF_EM_RESCHEDULE_REM\n"));
    29722975        return VINF_EM_RESCHEDULE_REM;
     2976    }
    29732977#endif
    29742978
     
    36403644                case SVM_EXIT_VMSAVE:   return hmR0SvmExitVmsave(pVCpu, pCtx, pSvmTransient);
    36413645                case SVM_EXIT_INVLPGA:  return hmR0SvmExitInvlpga(pVCpu, pCtx, pSvmTransient);
     3646                case SVM_EXIT_VMRUN:    return hmR0SvmExitVmrun(pVCpu, pCtx, pSvmTransient);
    36423647#else
    36433648                case SVM_EXIT_CLGI:
     
    36463651                case SVM_EXIT_VMSAVE:
    36473652                case SVM_EXIT_INVLPGA:
     3653                case SVM_EXIT_VMRUN:
    36483654#endif
    36493655                case SVM_EXIT_RSM:
    3650                 case SVM_EXIT_VMRUN:
    36513656                case SVM_EXIT_SKINIT:
    36523657                    return hmR0SvmExitSetPendingXcptUD(pVCpu, pCtx, pSvmTransient);
     
    58095814    return VBOXSTRICTRC_VAL(rcStrict);
    58105815}
     5816
     5817
     5818/**
     5819 * \#VMEXIT handler for STGI (SVM_EXIT_VMRUN). Conditional \#VMEXIT.
     5820 */
     5821HMSVM_EXIT_DECL hmR0SvmExitVmrun(PVMCPU pVCpu, PCPUMCTX pCtx, PSVMTRANSIENT pSvmTransient)
     5822{
     5823    HMSVM_VALIDATE_EXIT_HANDLER_PARAMS();
     5824    /** @todo Stat. */
     5825    /* STAM_COUNTER_INC(&pVCpu->hm.s.StatExitVmrun); */
     5826    uint8_t const cbInstr = hmR0SvmGetInstrLengthHwAssist(pVCpu, pCtx, 3);
     5827    VBOXSTRICTRC rcStrict = IEMExecDecodedVmrun(pVCpu, cbInstr);
     5828    return VBOXSTRICTRC_VAL(rcStrict);
     5829}
    58115830#endif /* VBOX_WITH_NESTED_HWVIRT */
    58125831
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