VirtualBox

Changeset 46784 in vbox


Ignore:
Timestamp:
Jun 25, 2013 4:27:59 PM (12 years ago)
Author:
vboxsync
Message:

VMM/HMSVMR0: AMD-V bits. DSL now boots.

File:
1 edited

Legend:

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

    r46779 r46784  
    631631        /* Set up unconditional intercepts and conditions. */
    632632        pVmcb->ctrl.u32InterceptCtrl1 =   SVM_CTRL1_INTERCEPT_INTR          /* External interrupt causes a VM-exit. */
    633                                         | SVM_CTRL1_INTERCEPT_VINTR         /* Interrupt-window VM-exit. */
    634633                                        | SVM_CTRL1_INTERCEPT_NMI           /* Non-Maskable Interrupts causes a VM-exit. */
    635634                                        | SVM_CTRL1_INTERCEPT_SMI           /* System Management Interrupt cause a VM-exit. */
     
    19941993
    19951994    SVMEVENT Event;
    1996     Event.u         = 0;
    1997     Event.n.u1Valid = 1;
     1995    Event.u          = 0;
     1996    Event.n.u1Valid  = 1;
     1997    Event.n.u8Vector = uVector;
    19981998
    19991999    /* Refer AMD spec. 15.20 "Event Injection" for the format. */
     
    26892689    pSvmTransient->fVectoringPF = false;                        /* Vectoring page-fault needs to be determined later. */
    26902690    hmR0SvmSaveGuestState(pVCpu, pMixedCtx);                    /* Save the guest state from the VMCB to the guest-CPU context. */
     2691
     2692    Log4(("Vintr Intercept=%RTbool\n", !!(pVmcb->ctrl.u32InterceptCtrl1 & SVM_CTRL1_INTERCEPT_VINTR)));
    26912693
    26922694    if (RT_LIKELY(pSvmTransient->u64ExitCode != (uint64_t)SVM_EXIT_INVALID))
     
    37243726
    37253727        rc = EMInterpretWrmsr(pVM, pVCpu, CPUMCTX2CORE(pCtx));
    3726         AssertMsg(rc == VINF_SUCCESS || rc == VERR_EM_INTERPRETER, ("hmR0SvmExitMsr: EMInterpretWrmsr failed rc=%Rrc\n", rc));
     3728        if (RT_LIKELY(rc == VINF_SUCCESS))
     3729            pCtx->rip += 2;     /* Hardcoded opcode, AMD-V doesn't give us this information. */
     3730        else
     3731            AssertMsg(rc == VERR_EM_INTERPRETER, ("hmR0SvmExitMsr: EMInterpretWrmsr failed rc=%Rrc\n", rc));
    37273732
    37283733        if (pCtx->ecx == MSR_K6_EFER)
     
    37343739        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitRdmsr);
    37353740        rc = EMInterpretRdmsr(pVM, pVCpu, CPUMCTX2CORE(pCtx));
    3736         AssertMsg(rc == VINF_SUCCESS || rc == VERR_EM_INTERPRETER, ("hmR0SvmExitMsr: EMInterpretRdmsr failed rc=%Rrc\n", rc));
     3741        if (RT_LIKELY(rc == VINF_SUCCESS))
     3742            pCtx->rip += 2;     /* Hardcoded opcode, AMD-V doesn't give us this information. */
     3743        else
     3744            AssertMsg(rc == VERR_EM_INTERPRETER, ("hmR0SvmExitMsr: EMInterpretRdmsr failed rc=%Rrc\n", rc));
    37373745    }
    37383746
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