VirtualBox

Changeset 61392 in vbox


Ignore:
Timestamp:
Jun 2, 2016 12:47:37 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
107706
Message:

CPUMRZFpuStatePrepareHostCpuForUse: Must always set VMCPU_FF_CPUM in raw-mode.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r61341 r61392  
    9292 * sseblk.s. When CR0 was changed by saving the FPU state, CPUM must now inform
    9393 * the VT-x (HMVMX) code about it as it caches the CR0 value in the VMCS.
     94 *
     95 *
     96 * @section sec_cpum_logging        Logging Level Assignments.
     97 *
     98 * Following log level assignments:
     99 *      - Log6 is used for FPU state management.
     100 *      - Log7 is used for FPU state actualization.
    94101 *
    95102 */
  • trunk/src/VBox/VMM/VMMRC/CPUMRC.cpp

    r61145 r61392  
    244244        cr0 |= X86_CR0_TS | X86_CR0_MP;
    245245        ASMSetCR0(cr0);
    246     }
    247 }
    248 
     246        Log6(("CPUMRCProcessForceFlag: cr0=%#x\n", cr0));
     247    }
     248    else
     249        Log6(("CPUMRCProcessForceFlag: no change -  cr0=%#x\n", ASMGetCR0()));
     250}
     251
  • trunk/src/VBox/VMM/VMMRZ/CPUMRZ.cpp

    r61317 r61392  
    5151#ifdef IN_RC
    5252            cpumRZSaveHostFPUState(&pVCpu->cpum.s);
    53             VMCPU_FF_SET(pVCpu, VMCPU_FF_CPUM); /* Must recalc CR0 before executing more code! */
     53            VMCPU_FF_SET(pVCpu, VMCPU_FF_CPUM);     /* Must recalc CR0 before executing more code! */
    5454#else
    5555            if (cpumRZSaveHostFPUState(&pVCpu->cpum.s) == VINF_CPUM_HOST_CR0_MODIFIED)
    5656                HMR0NotifyCpumModifiedHostCr0(pVCpu);
    5757#endif
     58            Log6(("CPUMRZFpuStatePrepareHostCpuForUse: #0 - %#x\n", ASMGetCR0()));
    5859            break;
    5960
    6061        case CPUM_USED_FPU_HOST:
    61 #if defined(IN_RING0) && ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS)
     62#ifdef IN_RC
     63            VMCPU_FF_SET(pVCpu, VMCPU_FF_CPUM);     /* (should be set already) */
     64#elif defined(IN_RING0) && ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS)
    6265            if (pVCpu->cpum.s.fUseFlags | CPUM_SYNC_FPU_STATE)
    6366            {
     
    6669            }
    6770#endif
     71            Log6(("CPUMRZFpuStatePrepareHostCpuForUse: #1 - %#x\n", ASMGetCR0()));
    6872            break;
    6973
     
    7882#ifdef IN_RING0
    7983            HMR0NotifyCpumUnloadedGuestFpuState(pVCpu);
     84#else
     85            VMCPU_FF_SET(pVCpu, VMCPU_FF_CPUM);     /* Must recalc CR0 before executing more code! */
    8086#endif
     87            Log6(("CPUMRZFpuStatePrepareHostCpuForUse: #2 - %#x\n", ASMGetCR0()));
    8188            break;
    8289
     
    121128            cpumRZSaveGuestFpuState(&pVCpu->cpum.s, false /*fLeaveFpuAccessible*/);
    122129        pVCpu->cpum.s.fUseFlags |= CPUM_USED_FPU_GUEST;
     130        Log7(("CPUMRZFpuStateActualizeForRead\n"));
    123131    }
    124132}
     
    149157# endif
    150158            cpumRZSaveGuestSseRegisters(&pVCpu->cpum.s);
     159        Log7(("CPUMRZFpuStateActualizeSseForRead\n"));
    151160    }
    152161#endif
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