VirtualBox

Changeset 35994 in vbox


Ignore:
Timestamp:
Feb 16, 2011 1:30:53 PM (14 years ago)
Author:
vboxsync
Message:

Two cases where CPUM_CHANGED_GLOBAL_TLB_FLUSH was missing, causing stale TLB entries and mayhem.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpum.h

    r35361 r35994  
    367367#define CPUM_CHANGED_HIDDEN_SEL_REGS            RT_BIT(10)
    368368#define CPUM_CHANGED_CPUID                      RT_BIT(11)
    369 #define CPUM_CHANGED_ALL                        \
    370     ( CPUM_CHANGED_FPU_REM | CPUM_CHANGED_CR0 | CPUM_CHANGED_CR3 | CPUM_CHANGED_CR4 | CPUM_CHANGED_GDTR | CPUM_CHANGED_IDTR \
    371      | CPUM_CHANGED_LDTR | CPUM_CHANGED_TR | CPUM_CHANGED_SYSENTER_MSR | CPUM_CHANGED_HIDDEN_SEL_REGS | CPUM_CHANGED_CPUID )
     369/** All except CPUM_CHANGED_HIDDEN_SEL_REGS_INVALID.  */
     370#define CPUM_CHANGED_ALL                        (  CPUM_CHANGED_FPU_REM \
     371                                                 | CPUM_CHANGED_CR0 \
     372                                                 | CPUM_CHANGED_GLOBAL_TLB_FLUSH \
     373                                                 | CPUM_CHANGED_CR3 \
     374                                                 | CPUM_CHANGED_CR4 \
     375                                                 | CPUM_CHANGED_GDTR \
     376                                                 | CPUM_CHANGED_IDTR \
     377                                                 | CPUM_CHANGED_LDTR \
     378                                                 | CPUM_CHANGED_TR \
     379                                                 | CPUM_CHANGED_SYSENTER_MSR \
     380                                                 | CPUM_CHANGED_HIDDEN_SEL_REGS \
     381                                                 | CPUM_CHANGED_CPUID )
    372382/** This one is used by raw-mode to indicate that the hidden register
    373383 * information is not longer reliable and have to be re-determined.
  • trunk/src/recompiler/VBoxRecompiler.c

    r35696 r35994  
    19341934    fFlags = CPUMR3RemEnter(pVCpu, &uCpl);
    19351935    LogFlow(("CPUMR3RemEnter %x %x\n", fFlags, uCpl));
    1936     if (fFlags & (  CPUM_CHANGED_CR4  | CPUM_CHANGED_CR3  | CPUM_CHANGED_CR0
    1937                   | CPUM_CHANGED_GDTR | CPUM_CHANGED_IDTR | CPUM_CHANGED_LDTR
    1938                   | CPUM_CHANGED_FPU_REM | CPUM_CHANGED_SYSENTER_MSR | CPUM_CHANGED_CPUID))
     1936    if (fFlags & (  CPUM_CHANGED_GLOBAL_TLB_FLUSH
     1937                  | CPUM_CHANGED_CR4
     1938                  | CPUM_CHANGED_CR0
     1939                  | CPUM_CHANGED_CR3
     1940                  | CPUM_CHANGED_GDTR
     1941                  | CPUM_CHANGED_IDTR
     1942                  | CPUM_CHANGED_SYSENTER_MSR
     1943                  | CPUM_CHANGED_LDTR
     1944                  | CPUM_CHANGED_CPUID
     1945                  | CPUM_CHANGED_FPU_REM
     1946                 )
     1947        )
    19391948    {
    19401949        if (fFlags & CPUM_CHANGED_GLOBAL_TLB_FLUSH)
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