diff --git a/kernel/drivers/module-virtualbox/files/fixes_for_5.6.patch b/kernel/drivers/module-virtualbox/files/fixes_for_5.6.patch
new file mode 100644
index 00000000..ae275343
--- /dev/null
+++ b/kernel/drivers/module-virtualbox/files/fixes_for_5.6.patch
@@ -0,0 +1,18 @@
+Index: VirtualBox-6.1.2/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+===================================================================
+--- 6.1.4_OSE/source/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
++++ 6.1.4_OSE/source/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
+@@ -1461,9 +1461,13 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKerne
+ * MMIO / physical memory.
+ */
+ Assert(pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS && !pMemLnxToMap->Core.u.Phys.fAllocated);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++ pMemLnx->Core.pv = ioremap(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub);
++#else
+ pMemLnx->Core.pv = pMemLnxToMap->Core.u.Phys.uCachePolicy == RTMEM_CACHE_POLICY_MMIO
+ ? ioremap_nocache(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub)
+ : ioremap(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub);
++#endif
+ if (pMemLnx->Core.pv)
+ {
+ /** @todo fix protection. */
diff --git a/kernel/drivers/module-virtualbox/files/timet.patch b/kernel/drivers/module-virtualbox/files/timet.patch
new file mode 100644
index 00000000..573955ad
--- /dev/null
+++ b/kernel/drivers/module-virtualbox/files/timet.patch
@@ -0,0 +1,155 @@
+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 --git a/kernel/drivers/module-virtualbox/pspec.xml b/kernel/drivers/module-virtualbox/pspec.xml
index 1fc7c2c1..cce51724 100644
--- a/kernel/drivers/module-virtualbox/pspec.xml
+++ b/kernel/drivers/module-virtualbox/pspec.xml
@@ -14,17 +14,18 @@
This package provides the kernel support for VirtualBox.
https://sourceforge.net/projects/pisilinux/files/source/module-virtualbox-6.1.4.tar.xz
- kernel-module-headers
+ kernel-module-headers
-
+
+ fixes_for_5.6.patch
+ timet.patch
+
module-virtualbox
- kernel
+ kernel
module-virtualbox-userspace
@@ -50,6 +51,13 @@
+
+ 2020-04-13
+ 6.1.4
+ Rebuild.
+ İdris Kalp
+ idriskalp@gmail.com
+
2020-04-03
6.1.4