Last active
April 13, 2020 14:53
-
-
Save thabiger/dd19e01c9031c785ba141bba43fb2150 to your computer and use it in GitHub Desktop.
VirtualBox 6.1.4 patch to work with 5.6 linux kernel
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -Naur a/vboxdrv/include/iprt/time.h b/vboxdrv/include/iprt/time.h | |
--- a/vboxdrv/include/iprt/time.h 2020-02-27 08:29:15.598443630 +0300 | |
+++ b/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). | |
diff -Naur a/vboxdrv/r0drv/linux/time-r0drv-linux.c b/vboxdrv/r0drv/linux/time-r0drv-linux.c | |
--- a/vboxdrv/r0drv/linux/time-r0drv-linux.c 2020-02-27 08:29:15.608443629 +0300 | |
+++ b/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; | |
diff -Naur a/vboxnetadp/include/iprt/time.h b/vboxnetadp/include/iprt/time.h | |
--- a/vboxnetadp/include/iprt/time.h 2020-02-27 08:29:15.598443630 +0300 | |
+++ b/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). | |
diff -Naur a/vboxnetflt/include/iprt/time.h b/vboxnetflt/include/iprt/time.h | |
--- a/vboxnetflt/include/iprt/time.h 2020-02-27 08:29:15.588443630 +0300 | |
+++ b/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). | |
diff -Naur a/vboxdrv/r0drv/linux/memobj-r0drv-linux.c b/vboxdrv/r0drv/linux/memobj-r0drv-linux.c | |
--- a/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 2020-03-22 10:14:10.095681802 +0100 | |
+++ b/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 2020-03-22 10:04:31.766483293 +0100 | |
@@ -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) | |
{ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks! It works like a charm!