Changeset 71927 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Apr 20, 2018 4:18:24 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 122171
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r71919 r71927 3913 3913 Log4(("ctrl.IntCtrl.u1VIrqPending %#x\n", pVmcb->ctrl.IntCtrl.n.u1VIrqPending)); 3914 3914 Log4(("ctrl.IntCtrl.u1VGif %#x\n", pVmcb->ctrl.IntCtrl.n.u1VGif)); 3915 Log4(("ctrl.IntCtrl.u6Reserved0 %#x\n", pVmcb->ctrl.IntCtrl.n.u6Reserved 0));3915 Log4(("ctrl.IntCtrl.u6Reserved0 %#x\n", pVmcb->ctrl.IntCtrl.n.u6Reserved)); 3916 3916 Log4(("ctrl.IntCtrl.u4VIntrPrio %#x\n", pVmcb->ctrl.IntCtrl.n.u4VIntrPrio)); 3917 3917 Log4(("ctrl.IntCtrl.u1IgnoreTPR %#x\n", pVmcb->ctrl.IntCtrl.n.u1IgnoreTPR)); … … 3919 3919 Log4(("ctrl.IntCtrl.u1VIntrMasking %#x\n", pVmcb->ctrl.IntCtrl.n.u1VIntrMasking)); 3920 3920 Log4(("ctrl.IntCtrl.u1VGifEnable %#x\n", pVmcb->ctrl.IntCtrl.n.u1VGifEnable)); 3921 Log4(("ctrl.IntCtrl.u5Reserved1 %#x\n", pVmcb->ctrl.IntCtrl.n.u5Reserved 1));3921 Log4(("ctrl.IntCtrl.u5Reserved1 %#x\n", pVmcb->ctrl.IntCtrl.n.u5Reserved)); 3922 3922 Log4(("ctrl.IntCtrl.u8VIntrVector %#x\n", pVmcb->ctrl.IntCtrl.n.u8VIntrVector)); 3923 3923 Log4(("ctrl.IntCtrl.u24Reserved %#x\n", pVmcb->ctrl.IntCtrl.n.u24Reserved)); … … 4992 4992 const uint8_t cbReg = (pIoExitInfo->u >> SVM_IOIO_OP_SIZE_SHIFT) & 7; 4993 4993 const uint8_t cAddrSizeBits = ((pIoExitInfo->u >> SVM_IOIO_ADDR_SIZE_SHIFT) & 7) << 4; 4994 const uint8_t iEffSeg = pIoExitInfo->n.u3S EG;4995 const bool fRep = pIoExitInfo->n.u1R EP;4996 const bool fStrIo = pIoExitInfo->n.u1S TR;4994 const uint8_t iEffSeg = pIoExitInfo->n.u3Seg; 4995 const bool fRep = pIoExitInfo->n.u1Rep; 4996 const bool fStrIo = pIoExitInfo->n.u1Str; 4997 4997 4998 4998 return HMSvmIsIOInterceptActive(pvIoBitmap, u16Port, enmIoType, cbReg, cAddrSizeBits, iEffSeg, fRep, fStrIo, … … 6863 6863 VBOXSTRICTRC rcStrict; 6864 6864 bool fUpdateRipAlready = false; 6865 if (IoExitInfo.n.u1S TR)6865 if (IoExitInfo.n.u1Str) 6866 6866 { 6867 6867 #ifdef VBOX_WITH_2ND_IEM_STEP … … 6882 6882 if (cbInstr <= 15 && cbInstr >= 1) 6883 6883 { 6884 Assert(cbInstr >= 1U + IoExitInfo.n.u1R EP);6884 Assert(cbInstr >= 1U + IoExitInfo.n.u1Rep); 6885 6885 if (IoExitInfo.n.u1Type == SVM_IOIO_WRITE) 6886 6886 { 6887 /* Don't know exactly how to detect whether u3S EGis valid, currently6887 /* Don't know exactly how to detect whether u3Seg is valid, currently 6888 6888 only enabling it for Bulldozer and later with NRIP. OS/2 broke on 6889 6889 2384 Opterons when only checking NRIP. */ … … 6892 6892 && pVM->cpum.ro.GuestFeatures.enmMicroarch >= kCpumMicroarch_AMD_15h_First) 6893 6893 { 6894 AssertMsg(IoExitInfo.n.u3S EG == X86_SREG_DS || cbInstr > 1U + IoExitInfo.n.u1REP,6895 ("u32Seg=%d cbInstr=%d u1REP=%d", IoExitInfo.n.u3S EG, cbInstr, IoExitInfo.n.u1REP));6896 rcStrict = IEMExecStringIoWrite(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1R EP, (uint8_t)cbInstr,6897 IoExitInfo.n.u3S EG, true /*fIoChecked*/);6894 AssertMsg(IoExitInfo.n.u3Seg == X86_SREG_DS || cbInstr > 1U + IoExitInfo.n.u1Rep, 6895 ("u32Seg=%d cbInstr=%d u1REP=%d", IoExitInfo.n.u3Seg, cbInstr, IoExitInfo.n.u1Rep)); 6896 rcStrict = IEMExecStringIoWrite(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1Rep, (uint8_t)cbInstr, 6897 IoExitInfo.n.u3Seg, true /*fIoChecked*/); 6898 6898 } 6899 else if (cbInstr == 1U + IoExitInfo.n.u1R EP)6900 rcStrict = IEMExecStringIoWrite(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1R EP, (uint8_t)cbInstr,6899 else if (cbInstr == 1U + IoExitInfo.n.u1Rep) 6900 rcStrict = IEMExecStringIoWrite(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1Rep, (uint8_t)cbInstr, 6901 6901 X86_SREG_DS, true /*fIoChecked*/); 6902 6902 else … … 6906 6906 else 6907 6907 { 6908 AssertMsg(IoExitInfo.n.u3S EG == X86_SREG_ES /*=0*/, ("%#x\n", IoExitInfo.n.u3SEG));6909 rcStrict = IEMExecStringIoRead(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1R EP, (uint8_t)cbInstr,6908 AssertMsg(IoExitInfo.n.u3Seg == X86_SREG_ES /*=0*/, ("%#x\n", IoExitInfo.n.u3Seg)); 6909 rcStrict = IEMExecStringIoRead(pVCpu, cbValue, enmAddrMode, IoExitInfo.n.u1Rep, (uint8_t)cbInstr, 6910 6910 true /*fIoChecked*/); 6911 6911 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIOStringRead); … … 6955 6955 { 6956 6956 /* IN/OUT - I/O instruction. */ 6957 Assert(!IoExitInfo.n.u1R EP);6957 Assert(!IoExitInfo.n.u1Rep); 6958 6958 6959 6959 if (IoExitInfo.n.u1Type == SVM_IOIO_WRITE)
Note:
See TracChangeset
for help on using the changeset viewer.