--- a/vboxdrv/include/iprt/time.h 2020-02-27 08:29:15.598443630 +0300 +++ a/vboxdrv/include/iprt/time.h 2020-02-27 09:11:28.528393987 +0300 @@ -366,6 +366,7 @@ * @param pTime The time spec to interpret. * @param pTimeval Where to store the time as POSIX timeval. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 99) DECLINLINE(struct timeval *) RTTimeSpecGetTimeval(PCRTTIMESPEC pTime, struct timeval *pTimeval) { int64_t i64 = RTTimeSpecGetMicro(pTime); @@ -392,12 +393,14 @@ { return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); } +#endif #endif /* various ways of detecting struct timeval */ /* PORTME: Add struct timespec guard macro here. */ #if defined(RTTIME_INCL_TIMESPEC) || defined(_STRUCT_TIMESPEC) || defined(_SYS__TIMESPEC_H_) || defined(TIMEVAL_TO_TIMESPEC) || defined(_TIMESPEC) \ || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_)) +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 99) /** * Gets the time as POSIX timespec. * @@ -431,16 +434,17 @@ { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); } +#endif +#endif /* various ways of detecting struct timespec */ + # ifdef _LINUX_TIME64_H DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval) { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec); } -# endif -#endif /* various ways of detecting struct timespec */ - +#endif /** The offset of the unix epoch and the base for NT time (in 100ns units). --- a/vboxdrv/r0drv/linux/time-r0drv-linux.c 2020-02-27 08:29:15.608443629 +0300 +++ a/vboxdrv/r0drv/linux/time-r0drv-linux.c 2020-02-27 09:00:17.518407138 +0300 @@ -43,8 +43,8 @@ * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using. */ uint64_t u64; - struct timespec Ts; - ktime_get_ts(&Ts); + struct timespec64 Ts; + ktime_get_ts64(&Ts); u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec; return u64; --- a/vboxnetadp/include/iprt/time.h 2020-02-27 08:29:15.598443630 +0300 +++ a/vboxnetadp/include/iprt/time.h 2020-02-27 09:11:28.528393987 +0300 @@ -366,6 +366,7 @@ * @param pTime The time spec to interpret. * @param pTimeval Where to store the time as POSIX timeval. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 99) DECLINLINE(struct timeval *) RTTimeSpecGetTimeval(PCRTTIMESPEC pTime, struct timeval *pTimeval) { int64_t i64 = RTTimeSpecGetMicro(pTime); @@ -392,12 +393,14 @@ { return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); } +#endif #endif /* various ways of detecting struct timeval */ /* PORTME: Add struct timespec guard macro here. */ #if defined(RTTIME_INCL_TIMESPEC) || defined(_STRUCT_TIMESPEC) || defined(_SYS__TIMESPEC_H_) || defined(TIMEVAL_TO_TIMESPEC) || defined(_TIMESPEC) \ || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_)) +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 99) /** * Gets the time as POSIX timespec. * @@ -431,16 +434,17 @@ { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); } +#endif +#endif /* various ways of detecting struct timespec */ + # ifdef _LINUX_TIME64_H DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval) { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec); } -# endif -#endif /* various ways of detecting struct timespec */ - +#endif /** The offset of the unix epoch and the base for NT time (in 100ns units). --- a/vboxnetflt/include/iprt/time.h 2020-02-27 08:29:15.588443630 +0300 +++ a/vboxnetflt/include/iprt/time.h 2020-02-27 09:11:28.528393987 +0300 @@ -366,6 +366,7 @@ * @param pTime The time spec to interpret. * @param pTimeval Where to store the time as POSIX timeval. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 99) DECLINLINE(struct timeval *) RTTimeSpecGetTimeval(PCRTTIMESPEC pTime, struct timeval *pTimeval) { int64_t i64 = RTTimeSpecGetMicro(pTime); @@ -392,12 +393,14 @@ { return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); } +#endif #endif /* various ways of detecting struct timeval */ /* PORTME: Add struct timespec guard macro here. */ #if defined(RTTIME_INCL_TIMESPEC) || defined(_STRUCT_TIMESPEC) || defined(_SYS__TIMESPEC_H_) || defined(TIMEVAL_TO_TIMESPEC) || defined(_TIMESPEC) \ || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_)) +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 99) /** * Gets the time as POSIX timespec. * @@ -431,16 +434,17 @@ { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); } +#endif +#endif /* various ways of detecting struct timespec */ + # ifdef _LINUX_TIME64_H DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval) { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec); } -# endif -#endif /* various ways of detecting struct timespec */ - +#endif /** The offset of the unix epoch and the base for NT time (in 100ns units). --- a/vboxdrv/r0drv/linux/memobj-r0drv-linux.c +++ a/vboxdrv/r0drv/linux/memobj-r0drv-linux.c @@ -1462,7 +1462,7 @@ */ Assert(pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS && !pMemLnxToMap->Core.u.Phys.fAllocated); pMemLnx->Core.pv = pMemLnxToMap->Core.u.Phys.uCachePolicy == RTMEM_CACHE_POLICY_MMIO - ? ioremap_nocache(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub) + ? ioremap_cache(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub) : ioremap(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub); if (pMemLnx->Core.pv) {