儲存庫 vbox 的更動 56813
- 時間撮記:
- 2015-7-6 上午11:03:52 (10 年 以前)
- svn:sync-xref-src-repo-rev:
- 101464
- 位置:
- trunk/src/VBox/VMM
- 檔案:
-
- 修改 3 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMMAll/GIMAllKvm.cpp
r56793 r56813 226 226 { 227 227 bool fEnable = RT_BOOL(uRawValue & MSR_GIM_KVM_SYSTEM_TIME_ENABLE_BIT); 228 #ifndef IN_RING3 229 # ifdef IN_RING0 228 #ifdef IN_RING0 230 229 gimR0KvmUpdateSystemTime(pVM, pVCpu); 231 # else 230 return VINF_CPUM_R3_MSR_WRITE; 231 #elif defined(IN_RC) 232 232 Assert(pVM->cCpus == 1); 233 233 if (fEnable) … … 238 238 ASMSetFlags(fEFlags); 239 239 } 240 # endif241 240 return VINF_CPUM_R3_MSR_WRITE; 242 #else 241 #else /* IN_RING3 */ 243 242 if (!fEnable) 244 243 { … … 271 270 } 272 271 return VINF_SUCCESS; 273 #endif /* IN_RING3 */272 #endif 274 273 } 275 274 … … 278 277 { 279 278 #ifndef IN_RING3 280 281 279 return VINF_CPUM_R3_MSR_WRITE; 282 280 #else -
trunk/src/VBox/VMM/VMMR0/GIMR0Kvm.cpp
r56791 r56813 28 28 #include <VBox/vmm/vm.h> 29 29 30 #include <iprt/s emaphore.h>30 #include <iprt/spinlock.h> 31 31 32 32 … … 46 46 Assert(GIMIsEnabled(pVM)); 47 47 PGIMKVM pKvm = &pVM->gim.s.u.Kvm; 48 AssertReturn(pKvm->h FastMtx != NIL_RTSEMFASTMUTEX, VERR_GIM_IPE_3);48 AssertReturn(pKvm->hSpinlockR0 != NIL_RTSPINLOCK, VERR_GIM_IPE_3); 49 49 50 50 /* … … 62 62 * will be applied to the remaining. 63 63 */ 64 RTS emFastMutexRequest(pKvm->hFastMtx);64 RTSpinlockAcquire(pKvm->hSpinlockR0); 65 65 for (uint32_t i = 0; i < pVM->cCpus; i++) 66 66 { 67 PGIMKVMCPU pKvmCpu 67 PGIMKVMCPU pKvmCpu = &pVM->aCpus[i].gim.s.u.KvmCpu; 68 68 if ( !pKvmCpu->uTsc 69 69 && !pKvmCpu->uVirtNanoTS) … … 73 73 } 74 74 } 75 RTS emFastMutexRelease(pKvm->hFastMtx);75 RTSpinlockRelease(pKvm->hSpinlockR0); 76 76 77 77 return VINF_SUCCESS; … … 91 91 92 92 PGIMKVM pKvm = &pVM->gim.s.u.Kvm; 93 Assert(pKvm->h FastMtx == NIL_RTSEMFASTMUTEX);93 Assert(pKvm->hSpinlockR0 == NIL_RTSPINLOCK); 94 94 95 int rc = RTS emFastMutexCreate(&pKvm->hFastMtx);95 int rc = RTSpinlockCreate(&pKvm->hSpinlockR0, RTSPINLOCK_FLAGS_INTERRUPT_UNSAFE, "KVM"); 96 96 return rc; 97 97 } … … 110 110 111 111 PGIMKVM pKvm = &pVM->gim.s.u.Kvm; 112 RTS emFastMutexDestroy(pKvm->hFastMtx);113 pKvm->h FastMtx = NIL_RTSEMFASTMUTEX;112 RTSpinlockDestroy(pKvm->hSpinlockR0); 113 pKvm->hSpinlockR0 = NIL_RTSPINLOCK; 114 114 115 115 return VINF_SUCCESS; -
trunk/src/VBox/VMM/include/GIMKvmInternal.h
r56791 r56813 188 188 189 189 /** 190 * GIM KVM VVM instance data.190 * GIM KVM VM instance data. 191 191 * Changes to this must checked against the padding of the gim union in VM! 192 192 */ … … 203 203 /** The TSC frequency (in HZ) reported to the guest. */ 204 204 uint64_t cTscTicksPerSecond; 205 /** Ring-0 mutex. */ 206 RTSEMFASTMUTEX hFastMtx; 205 /** Spinlock used for protecting GIMKVMCPU::uTsc and 206 * GIMKVMCPU::uVirtNanoTS. */ 207 RTSPINLOCK hSpinlockR0; 207 208 } GIMKVM; 208 209 /** Pointer to per-VM GIM KVM instance data. */
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器