vbox的更動 69144 路徑 trunk/src/VBox
- 時間撮記:
- 2017-10-20 上午10:44:18 (7 年 以前)
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMAll/CPUMAllMsrs.cpp
r69111 r69144 1442 1442 return VERR_CPUM_RAISE_GP_0; 1443 1443 1444 pVCpu->cpum.s.Guest.msrEFER = uValidatedEfer; 1445 1446 /* AMD64 Architecture Programmer's Manual: 15.15 TLB Control; flush the TLB 1447 if MSR_K6_EFER_NXE, MSR_K6_EFER_LME or MSR_K6_EFER_LMA are changed. */ 1448 if ( (uOldEfer & (MSR_K6_EFER_NXE | MSR_K6_EFER_LME | MSR_K6_EFER_LMA)) 1449 != (pVCpu->cpum.s.Guest.msrEFER & (MSR_K6_EFER_NXE | MSR_K6_EFER_LME | MSR_K6_EFER_LMA))) 1450 { 1451 /// @todo PGMFlushTLB(pVCpu, cr3, true /*fGlobal*/); 1452 HMFlushTLB(pVCpu); 1453 1454 /* Notify PGM about NXE changes. */ 1455 if ( (uOldEfer & MSR_K6_EFER_NXE) 1456 != (pVCpu->cpum.s.Guest.msrEFER & MSR_K6_EFER_NXE)) 1457 PGMNotifyNxeChanged(pVCpu, !(uOldEfer & MSR_K6_EFER_NXE)); 1458 } 1444 CPUMSetGuestEferNoCheck(pVCpu, uOldEfer, uValidatedEfer); 1459 1445 return VINF_SUCCESS; 1460 1446 } … … 6104 6090 6105 6091 /** 6092 * Sets the guest EFER MSR without performing any additional checks. 6093 * 6094 * @param pVCpu The cross context virtual CPU structure of the calling EMT. 6095 * @param uOldEfer The previous EFER MSR value. 6096 * @param uValidEfer The new, validated EFER MSR value. 6097 * 6098 * @remarks One would normally call CPUMQueryValidatedGuestEfer before calling this 6099 * function to change the EFER in order to perform an EFER transition. 6100 */ 6101 VMMDECL(void) CPUMSetGuestEferNoCheck(PVMCPU pVCpu, uint64_t uOldEfer, uint64_t uValidEfer) 6102 { 6103 pVCpu->cpum.s.Guest.msrEFER = uValidEfer; 6104 6105 /* AMD64 Architecture Programmer's Manual: 15.15 TLB Control; flush the TLB 6106 if MSR_K6_EFER_NXE, MSR_K6_EFER_LME or MSR_K6_EFER_LMA are changed. */ 6107 if ( (uOldEfer & (MSR_K6_EFER_NXE | MSR_K6_EFER_LME | MSR_K6_EFER_LMA)) 6108 != (pVCpu->cpum.s.Guest.msrEFER & (MSR_K6_EFER_NXE | MSR_K6_EFER_LME | MSR_K6_EFER_LMA))) 6109 { 6110 /// @todo PGMFlushTLB(pVCpu, cr3, true /*fGlobal*/); 6111 HMFlushTLB(pVCpu); 6112 6113 /* Notify PGM about NXE changes. */ 6114 if ( (uOldEfer & MSR_K6_EFER_NXE) 6115 != (pVCpu->cpum.s.Guest.msrEFER & MSR_K6_EFER_NXE)) 6116 PGMNotifyNxeChanged(pVCpu, !(uOldEfer & MSR_K6_EFER_NXE)); 6117 } 6118 } 6119 6120 6121 /** 6106 6122 * Validates an EFER MSR write. 6107 6123 *
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器