Changeset 8789 in vbox
- Timestamp:
- May 13, 2008 3:43:59 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 30788
- Location:
- trunk/src/VBox/HostDrivers/Support
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPDRV.h
r8155 r8789 709 709 /** GIP timer interval (ms). */ 710 710 ULONG ulGipTimerInterval; 711 /** Flag to force async GIP timer mode. */ 712 BOOLEAN fForceAsyncTsc; 711 713 #endif 712 714 #ifdef RT_OS_LINUX … … 759 761 void VBOXCALL supdrvOSGipSuspend(PSUPDRVDEVEXT pDevExt); 760 762 unsigned VBOXCALL supdrvOSGetCPUCount(void); 761 bool VBOXCALL supdrvOSGetForcedAsyncTscMode( void);763 bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDEVEXT pDevExt); 762 764 #endif 763 765 -
trunk/src/VBox/HostDrivers/Support/SUPDRVShared.c
r8155 r8789 45 45 #include <iprt/cpuset.h> 46 46 #include <iprt/log.h> 47 #include <VBox/x86.h> 47 48 48 49 /* … … 236 237 static void supdrvLdrFree(PSUPDRVDEVEXT pDevExt, PSUPDRVLDRIMAGE pImage); 237 238 static SUPPAGINGMODE supdrvIOCtl_GetPagingMode(void); 238 static SUPGIPMODE supdrvGipDeterminTscMode( void);239 static SUPGIPMODE supdrvGipDeterminTscMode(PSUPDRVDEVEXT pDevExt); 239 240 #ifdef RT_OS_WINDOWS 240 241 static int supdrvPageGetPhys(PSUPDRVSESSION pSession, RTR3PTR pvR3, uint32_t cPages, PRTHCPHYS paPages); … … 3850 3851 pGip->u32Magic = SUPGLOBALINFOPAGE_MAGIC; 3851 3852 pGip->u32Version = SUPGLOBALINFOPAGE_VERSION; 3852 pGip->u32Mode = supdrvGipDeterminTscMode( );3853 pGip->u32Mode = supdrvGipDeterminTscMode(pDevExt); 3853 3854 pGip->u32UpdateHz = uUpdateHz; 3854 3855 pGip->u32UpdateIntervalNS = 1000000000 / uUpdateHz; … … 3892 3893 * 3893 3894 * @returns The most suitable TSC mode. 3894 */ 3895 static SUPGIPMODE supdrvGipDeterminTscMode(void) 3895 * @param pDevExt Pointer to the device instance data. 3896 */ 3897 static SUPGIPMODE supdrvGipDeterminTscMode(PSUPDRVDEVEXT pDevExt) 3896 3898 { 3897 3899 #ifndef USE_NEW_OS_INTERFACE_FOR_GIP … … 3912 3914 3913 3915 /* Permit user users override. */ 3914 if (supdrvOSGetForcedAsyncTscMode( ))3916 if (supdrvOSGetForcedAsyncTscMode(pDevExt)) 3915 3917 return SUPGIPMODE_ASYNC_TSC; 3916 3918 3917 3919 /* Check for "AuthenticAMD" */ 3918 3920 ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); 3919 if (uEAX >= 1 && uEBX == 0x68747541 && uECX == 0x444d4163 && uEDX == 0x69746e65) 3921 if ( uEAX >= 1 3922 && uEBX == X86_CPUID_VENDOR_AMD_EBX 3923 && uECX == X86_CPUID_VENDOR_AMD_ECX 3924 && uEDX == X86_CPUID_VENDOR_AMD_EDX) 3920 3925 { 3921 3926 /* Check for APM support and that TscInvariant is cleared. */ -
trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
r8347 r8789 1405 1405 * @todo add a module argument for this. 1406 1406 */ 1407 bool VBOXCALL supdrvOSGetForcedAsyncTscMode( void)1407 bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDEVEXT pDevExt) 1408 1408 { 1409 1409 return force_async_tsc != 0; -
trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
r8155 r8789 120 120 if (NT_SUCCESS(rc)) 121 121 { 122 uint64_t u64DiffCores; 123 122 124 /* 123 125 * Initialize the device extension. … … 125 127 PSUPDRVDEVEXT pDevExt = (PSUPDRVDEVEXT)pDevObj->DeviceExtension; 126 128 memset(pDevExt, 0, sizeof(*pDevExt)); 129 130 /* Make sure the tsc is consistent across cpus/cores. */ 131 pDevExt->fForceAsyncTsc = supdrvDetermineAsyncTsc(&u64DiffCores); 132 dprintf(("supdrvDetermineAsyncTsc: fAsync=%d u64DiffCores=%u.\n", pDevExt->fForceAsyncTsc, (uint32_t)u64DiffCores)); 133 127 134 int vrc = supdrvInitDevExt(pDevExt); 128 135 if (!vrc) … … 767 774 * Force async tsc mode (stub). 768 775 */ 769 bool VBOXCALL supdrvOSGetForcedAsyncTscMode( void)770 { 771 return false;776 bool VBOXCALL supdrvOSGetForcedAsyncTscMode(PSUPDRVDEVEXT pDevExt) 777 { 778 return pDevExt->fForceAsyncTsc != 0; 772 779 } 773 780
Note:
See TracChangeset
for help on using the changeset viewer.