Hi, I've same issue here. Thanks Anthony for the VB link.
Package: virtualbox-dkms Version: 6.1.4-dfsg-2 Issue with kernel linux-image-5.6.0-1-amd64, version 5.6.7-1. According to https://www.virtualbox.org/ticket/19312 , there are 2 issues: - one into "memobj-r0drv-linux.c" - the other into "time.h" and "time-r0drv-linux.c", related with time64 kernel function. I attach log files for 2 issues, and 3 patchs from VB web site. Once files patched, dkms vb modules compilation does not fail anymore. Be carefull, according to https://www.virtualbox.org/attachment/ticket/19312/timet.patch , "The patch is working for 5.6-rc3+, but will break older versions :( " But on my computer, I was able to compile DKMS modules and run virtualbox guests on both 5.5 and 5.6 host linux kernels Thanks for your help ! Olivier
DKMS make.log for virtualbox-6.1.4 for kernel 5.6.0-1-amd64 (x86_64) dimanche 10 mai 2020, 16:12:51 (UTC+0200) make : on entre dans le répertoire « /usr/src/linux-headers-5.6.0-1-amd64 » CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/linux/SUPDrv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvGip.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvSem.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvTracer.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPLibAll.o /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvTracer.o: warning: objtool: .text+0x7: indirect jump found in RETPOLINE build /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvTracer.o: warning: objtool: supdrvTracerProbeFireStub() is missing an ELF size annotation CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/alloc-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/initterm-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/memobj-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/mpnotification-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/powernotification-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/assert-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/alloc-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/initterm-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/mp-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/mpnotification-r0drv-linux.o /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o: warning: objtool: rtR0MemKernelCopyLnxWorker.part.0()+0xe: redundant CLD CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/process-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semevent-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semeventmulti-r0drv-linux.o In file included from /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/waitqueue-r0drv-linux.h:38, from /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semevent-r0drv-linux.c:42: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h: In function ‘RTTimeSpecGetTimeval’: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:13: error: dereferencing pointer to incomplete type ‘struct timeval’ 379 | pTimeval->tv_sec = (time_t)i64; | ^~ /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:25: error: ‘time_t’ undeclared (first use in this function); did you mean ‘ktime_t’? 379 | pTimeval->tv_sec = (time_t)i64; | ^~~~~~ | ktime_t /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:25: note: each undeclared identifier is reported only once for each function it appears in /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:32: error: expected ‘;’ before ‘i64’ 379 | pTimeval->tv_sec = (time_t)i64; | ^~~ | ; /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h: In function ‘RTTimeSpecSetTimeval’: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:393:67: error: dereferencing pointer to incomplete type ‘const struct timeval’ 393 | return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); | ^~ CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semfastmutex-r0drv-linux.o make[3]: *** [/usr/src/linux-headers-5.6.0-1-common/scripts/Makefile.build:273: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semevent-r0drv-linux.o] Error 1 make[3]: *** Attente des tâches non terminées.... In file included from /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/waitqueue-r0drv-linux.h:38, from /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semeventmulti-r0drv-linux.c:42: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h: In function ‘RTTimeSpecGetTimeval’: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:13: error: dereferencing pointer to incomplete type ‘struct timeval’ 379 | pTimeval->tv_sec = (time_t)i64; | ^~ /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:25: error: ‘time_t’ undeclared (first use in this function); did you mean ‘ktime_t’? 379 | pTimeval->tv_sec = (time_t)i64; | ^~~~~~ | ktime_t /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:25: note: each undeclared identifier is reported only once for each function it appears in /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:379:32: error: expected ‘;’ before ‘i64’ 379 | pTimeval->tv_sec = (time_t)i64; | ^~~ | ; /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h: In function ‘RTTimeSpecSetTimeval’: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/include/iprt/time.h:393:67: error: dereferencing pointer to incomplete type ‘const struct timeval’ 393 | return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); | ^~ make[3]: *** [/usr/src/linux-headers-5.6.0-1-common/scripts/Makefile.build:273: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/semeventmulti-r0drv-linux.o] Error 1 make[2]: *** [/usr/src/linux-headers-5.6.0-1-common/scripts/Makefile.build:510: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv] Error 2 make[1]: *** [/usr/src/linux-headers-5.6.0-1-common/Makefile:1696: /var/lib/dkms/virtualbox/6.1.4/build] Error 2 make: *** [/usr/src/linux-headers-5.6.0-1-common/Makefile:180: sub-make] Error 2 make : on quitte le répertoire « /usr/src/linux-headers-5.6.0-1-amd64 »
DKMS make.log for virtualbox-6.1.4 for kernel 5.6.0-1-amd64 (x86_64) dimanche 10 mai 2020, 16:07:35 (UTC+0200) make : on entre dans le répertoire « /usr/src/linux-headers-5.6.0-1-amd64 » CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/linux/SUPDrv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvGip.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvSem.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvTracer.o /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvTracer.o: warning: objtool: .text+0x7: indirect jump found in RETPOLINE build /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPDrvTracer.o: warning: objtool: supdrvTracerProbeFireStub() is missing an ELF size annotation CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/SUPLibAll.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/alloc-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/initterm-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/memobj-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/mpnotification-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/powernotification-r0drv.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/assert-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/alloc-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/initterm-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c: In function ‘rtR0MemObjNativeMapKernel’: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c:1465:32: error: implicit declaration of function ‘ioremap_nocache’; did you mean ‘ioremap_cache’? [-Werror=implicit-function-declaration] 1465 | ? ioremap_nocache(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub) | ^~~~~~~~~~~~~~~ | ioremap_cache /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.c:1466:30: warning: pointer/integer type mismatch in conditional expression 1466 | : ioremap(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub); | ^ CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/mp-r0drv-linux.o CC [M] /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/mpnotification-r0drv-linux.o cc1: some warnings being treated as errors make[3]: *** [/usr/src/linux-headers-5.6.0-1-common/scripts/Makefile.build:273: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.o] Error 1 make[3]: *** Attente des tâches non terminées.... /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o: warning: objtool: rtR0MemKernelCopyLnxWorker.part.0()+0xe: redundant CLD make[2]: *** [/usr/src/linux-headers-5.6.0-1-common/scripts/Makefile.build:510: /var/lib/dkms/virtualbox/6.1.4/build/vboxdrv] Error 2 make[1]: *** [/usr/src/linux-headers-5.6.0-1-common/Makefile:1696: /var/lib/dkms/virtualbox/6.1.4/build] Error 2 make: *** [/usr/src/linux-headers-5.6.0-1-common/Makefile:180: sub-make] Error 2 make : on quitte le répertoire « /usr/src/linux-headers-5.6.0-1-amd64 »
*** /usr/src/virtualbox-6.1.4/r0drv/linux/time-r0drv-linux.c.2020-05-10 2020-05-10 16:30:53.360893292 +0200 --- /usr/src/virtualbox-6.1.4/r0drv/linux/time-r0drv-linux.c 2020-05-10 16:31:28.743744940 +0200 *************** DECLINLINE(uint64_t) rtTimeGetSystemNano *** 43,50 **** * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using. */ uint64_t u64; ! struct timespec Ts; ! ktime_get_ts(&Ts); u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec; return u64; --- 43,50 ---- * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using. */ uint64_t u64; ! struct timespec64 Ts; ! ktime_get_ts64(&Ts); u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec; return u64;
*** /usr/src/virtualbox-6.1.4/include/iprt/time.h.2020-05-10 2020-05-10 16:25:29.451382494 +0200 --- /usr/src/virtualbox-6.1.4/include/iprt/time.h 2020-05-10 16:30:25.957782382 +0200 *************** DECLINLINE(void) RTTimeSpecGetSecondsAnd *** 366,371 **** --- 366,372 ---- * @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); *************** DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim *** 392,403 **** --- 393,406 ---- { 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. * *************** DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim *** 431,445 **** { return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); } # 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 */ --- 434,450 ---- { 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
*** /usr/src/virtualbox-6.1.4/r0drv/linux/memobj-r0drv-linux.c.2020-05-08 2020-05-08 16:33:22.534231284 +0200 --- /usr/src/virtualbox-6.1.4/r0drv/linux/memobj-r0drv-linux.c 2020-05-10 16:12:13.645207042 +0200 *************** DECLHIDDEN(int) rtR0MemObjNativeMapKerne *** 1461,1469 **** --- 1461,1473 ---- * 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. */