VirtualBox

Ignore:
Timestamp:
Aug 14, 2019 2:34:38 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
132727
Message:

VMM: Refactoring VMMR0/* and VMMRZ/* to use VMCC & VMMCPUCC. bugref:9217

File:
1 edited

Legend:

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

    r78431 r80274  
    2020*   Header Files                                                                                                                 *
    2121*********************************************************************************************************************************/
     22#define VBOX_BUGREF_9217_PART_I
    2223#define LOG_GROUP LOG_GROUP_EM
    2324#include <VBox/vmm/em.h>
    2425#include "EMInternal.h"
    25 #include <VBox/vmm/vm.h>
     26#include <VBox/vmm/vmcc.h>
    2627#include <VBox/vmm/gvm.h>
    2728#include <iprt/errcore.h>
     
    4142#ifdef VBOX_BUGREF_9217
    4243VMMR0_INT_DECL(int) EMR0InitVM(PGVM pGVM)
    43 # define pVM pGVM /* temp hack */
    4444#else
    45 VMMR0_INT_DECL(int) EMR0InitVM(PGVM pGVM, PVM pVM)
     45VMMR0_INT_DECL(int) EMR0InitVM(PGVM pGVM, PVMCC pVM)
    4646#endif
    4747{
     
    4949     * Override ring-0 exit optimizations settings.
    5050     */
    51     bool fEnabledR0                = pVM->aCpus[0].em.s.fExitOptimizationEnabled
    52                                   && pVM->aCpus[0].em.s.fExitOptimizationEnabledR0
     51#ifdef VBOX_BUGREF_9217
     52    PVMCPUCC pVCpu0 = &pGVM->aCpus[0];
     53#else
     54    PVMCPUCC pVCpu0 = VMCC_GET_CPU_0(pVM);
     55#endif
     56
     57    bool fEnabledR0                = pVCpu0->em.s.fExitOptimizationEnabled
     58                                  && pVCpu0->em.s.fExitOptimizationEnabledR0
    5359                                  && (RTThreadPreemptIsPossible() || RTThreadPreemptIsPendingTrusty());
    5460    bool fEnabledR0PreemptDisabled = fEnabledR0
    55                                   && pVM->aCpus[0].em.s.fExitOptimizationEnabledR0PreemptDisabled
     61                                  && pVCpu0->em.s.fExitOptimizationEnabledR0PreemptDisabled
    5662                                  && RTThreadPreemptIsPendingTrusty();
     63    for (VMCPUID idCpu = 0; idCpu < pGVM->cCpus; idCpu++)
     64    {
    5765#ifdef VBOX_BUGREF_9217
    58     for (VMCPUID i = 0; i < pGVM->cCpusSafe; i++)
     66        PVMCPUCC pVCpu = &pGVM->aCpus[idCpu];
    5967#else
    60     for (VMCPUID i = 0; i < pGVM->cCpus; i++)
     68        PVMCPUCC pVCpu = VMCC_GET_CPU(pVM, idCpu);
    6169#endif
    62     {
    63         pVM->aCpus[i].em.s.fExitOptimizationEnabledR0                = fEnabledR0;
    64         pVM->aCpus[i].em.s.fExitOptimizationEnabledR0PreemptDisabled = fEnabledR0PreemptDisabled;
     70        pVCpu->em.s.fExitOptimizationEnabledR0                = fEnabledR0;
     71        pVCpu->em.s.fExitOptimizationEnabledR0PreemptDisabled = fEnabledR0PreemptDisabled;
    6572    }
    6673
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