VirtualBox

Changeset 56665 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Jun 28, 2015 3:28:49 PM (9 years ago)
Author:
vboxsync
Message:

hmR0SvmExitIOInstr: Adjusted the u3SEG validity check to exclude pre-Bulldozer CPUs as it cause OS/2 failures on Opteron 2384. This should fix the #GP in QLISP.

File:
1 edited

Legend:

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

    r56664 r56665  
    48074807                if (IoExitInfo.n.u1Type == SVM_IOIO_WRITE)
    48084808                {
    4809                     if (pVM->hm.s.svm.u32Features & AMD_CPUID_SVM_FEATURE_EDX_NRIP_SAVE)
     4809                    /* Don't know exactly how to detect whether u3SEG is valid, currently
     4810                       only enabling it for Bulldozer and later with NRIP.  OS/2 broke on
     4811                       2384 Opterons when only checking NRIP. */
     4812                    if (   (pVM->hm.s.svm.u32Features & AMD_CPUID_SVM_FEATURE_EDX_NRIP_SAVE)
     4813                        && pVM->cpum.ro.GuestFeatures.enmMicroarch >= kCpumMicroarch_AMD_15h_First)
     4814                    {
     4815                        AssertMsg(IoExitInfo.n.u3SEG == X86_SREG_DS || cbInstr > 1 + IoExitInfo.n.u1REP,
     4816                                  ("u32Seg=%d cbInstr=%d u1REP=%d", IoExitInfo.n.u3SEG, cbInstr, IoExitInfo.n.u1REP));
    48104817                        rcStrict = IEMExecStringIoWrite(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1REP, (uint8_t)cbInstr,
    48114818                                                        IoExitInfo.n.u3SEG);
     4819                    }
    48124820                    else
    48134821                        rcStrict = IEMExecOne(pVCpu);
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