VirtualBox

Changeset 20180 in vbox


Ignore:
Timestamp:
Jun 2, 2009 8:56:20 AM (16 years ago)
Author:
vboxsync
Message:

Completed HWACCMInvalidatePhysPage

File:
1 edited

Legend:

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

    r19916 r20180  
    226226        return VINF_SUCCESS;
    227227
    228     PVMCPU pVCpu = VMMGetCpu(pVM);
    229228#ifdef IN_RING0
    230229    if (pVM->hwaccm.s.vmx.fSupported)
    231230    {
    232         /* @todo for all vcpus */
    233         return VMXR0InvalidatePhysPage(pVM, pVCpu, GCPhys);
     231        VMCPUID idThisCpu = VMMGetCpuId(pVM);
     232
     233        for (unsigned idCpu = 0; idCpu < pVM->cCPUs; idCpu++)
     234        {
     235            PVMCPU pVCpu = &pVM->aCpus[idCpu];
     236
     237            if (idThisCpu == idCpu)
     238            {
     239                VMXR0InvalidatePhysPage(pVM, pVCpu, GCPhys);
     240                continue;
     241            }
     242
     243            VMCPU_FF_SET(pVCpu, VMCPU_FF_TLB_FLUSH);
     244            if (VMCPU_GET_STATE(pVCpu) == VMCPUSTATE_STARTED_EXEC)
     245            {
     246                STAM_COUNTER_INC(&pVCpu->hwaccm.s.StatTlbShootdownFlush);
     247    #ifdef IN_RING0
     248                RTCPUID idHostCpu = pVCpu->hwaccm.s.idEnteredCpu;
     249                if (idHostCpu != NIL_RTCPUID)
     250                    RTMpPokeCpu(idHostCpu);
     251    #else
     252                VMR3NotifyCpuFFU(pVCpu->pUVCpu, VMNOTIFYFF_FLAGS_POKE);
     253    #endif
     254            }
     255            else
     256                STAM_COUNTER_INC(&pVCpu->hwaccm.s.StatFlushTLBManual);
     257        }
     258        return VINF_SUCCESS;
    234259    }
    235260
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