You are not logged in.
Hey Community,
in order to use Vagrant, I tried to install Virtualbox under 4.15.0.rc2 Kernel. I typically need this kernel because of the NPT Patch. But when I try to install the DKMS modules, it errors with a bad return status. This is the complete make.log:
DKMS make.log for vboxhost-5.2.2_OSE for kernel 4.15.0-rc2-mainline (x86_64)
So 3. Dez 18:27:10 CET 2017
make: Entering directory '/usr/lib/modules/4.15.0-rc2-mainline/build'
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetflt/linux/VBoxNetFlt-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxpci/linux/VBoxPci-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/linux/SUPDrv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetadp/linux/VBoxNetAdp-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetflt/VBoxNetFlt.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/SUPDrv.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxpci/VBoxPci.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetadp/VBoxNetAdp.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/SUPDrvGip.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetflt/SUPR0IdcClient.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxpci/SUPR0IdcClient.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/SUPDrvSem.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxpci/SUPR0IdcClientComponent.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetflt/SUPR0IdcClientComponent.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/SUPDrvTracer.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetflt/linux/SUPR0IdcClient-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxpci/linux/SUPR0IdcClient-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/SUPLibAll.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/alloc-r0drv.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/initterm-r0drv.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/memobj-r0drv.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/mpnotification-r0drv.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/powernotification-r0drv.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/assert-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/alloc-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/initterm-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/memobj-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o
/var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/SUPDrvTracer.o: warning: objtool: .text+0x0: unreachable instruction
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/mp-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/mpnotification-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/process-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/semevent-r0drv-linux.o
LD [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetadp/vboxnetadp.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/semeventmulti-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/semfastmutex-r0drv-linux.o
LD [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxpci/vboxpci.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/semmutex-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/spinlock-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/thread-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/thread2-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/threadctxhooks-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/time-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/timer-r0drv-linux.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/generic/semspinmutex-r0drv-generic.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/common/alloc/alloc.o
LD [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxnetflt/vboxnetflt.o
/var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/memuserkernel-r0drv-linux.o: warning: objtool: .fixup: unexpected end of section
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/common/checksum/crc32.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/common/checksum/ipv4.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/common/checksum/ipv6.o
CC [M] /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/common/err/RTErrConvertFromErrno.o
/var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/timer-r0drv-linux.c: In function ‘VBoxHost_RTTimerCreateEx’:
/var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/timer-r0drv-linux.c:1588:13: error: implicit declaration of function ‘init_timer_pinned’; did you mean ‘init_timer_key’? [-Werror=implicit-function-declaration]
init_timer_pinned(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
^~~~~~~~~~~~~~~~~
init_timer_key
/var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/timer-r0drv-linux.c:1592:52: error: ‘struct timer_list’ has no member named ‘data’
pTimer->aSubTimers[iCpu].u.Std.LnxTimer.data = (unsigned long)&pTimer->aSubTimers[iCpu];
^
/var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/timer-r0drv-linux.c:1593:65: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
pTimer->aSubTimers[iCpu].u.Std.LnxTimer.function = rtTimerLinuxStdCallback;
^
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:310: /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv/r0drv/linux/timer-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [scripts/Makefile.build:569: /var/lib/dkms/vboxhost/5.2.2_OSE/build/vboxdrv] Error 2
make: *** [Makefile:1502: _module_/var/lib/dkms/vboxhost/5.2.2_OSE/build] Error 2
make: Leaving directory '/usr/lib/modules/4.15.0-rc2-mainline/build'I hope you can help me. ![]()
Thanks in advance,
avocadoom
Last edited by avocadoom (2017-12-03 18:13:41)
Offline
Are yous sure you want 4.15.0.rc2 that was released only a few hours ago if you do see https://patchwork.kernel.org/patch/9985967/
The NPT patch is in 4.14.3 by the way.
Offline
The NPT patch is in 4.14.3 by the way.
Ok, didn't noticed that. That solves my problem! ![]()
Thanks ![]()
EDIT Even if this does not solve the problem for the specific kernel, it solves my problem
so I makred this as solved.
Last edited by avocadoom (2017-12-03 18:14:58)
Offline
In case someone needs a patch for 4.15 this is only compile tested but as I had already generated it thought I may as well post it
diff --git a/vboxdrv/r0drv/linux/timer-r0drv-linux.c b/vboxdrv/r0drv/linux/timer-r0drv-linux.c
index 810779a..c0b5245 100644
--- a/vboxdrv/r0drv/linux/timer-r0drv-linux.c
+++ b/vboxdrv/r0drv/linux/timer-r0drv-linux.c
@@ -720,9 +720,17 @@ static enum hrtimer_restart rtTimerLinuxHrCallback(struct hrtimer *pHrTimer)
*
* @param ulUser Address of the sub-timer structure.
*/
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+static void rtTimerLinuxStdCallback(struct timer_list *t)
+#else
static void rtTimerLinuxStdCallback(unsigned long ulUser)
+#endif
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
+ PRTTIMERLNXSUBTIMER pSubTimer = from_timer(pSubTimer, t, u.Std.LnxTimer);
+#else
PRTTIMERLNXSUBTIMER pSubTimer = (PRTTIMERLNXSUBTIMER)ulUser;
+#endif
PRTTIMER pTimer = pSubTimer->pParent;
RTTIMERLNX_LOG(("stdcallback %p\n", pTimer));
@@ -1585,12 +1593,15 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
- init_timer_pinned(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
+ timer_setup(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer,
+ rtTimerLinuxStdCallback, TIMER_PINNED);
#else
init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0)
pTimer->aSubTimers[iCpu].u.Std.LnxTimer.data = (unsigned long)&pTimer->aSubTimers[iCpu];
pTimer->aSubTimers[iCpu].u.Std.LnxTimer.function = rtTimerLinuxStdCallback;
+#endif
pTimer->aSubTimers[iCpu].u.Std.LnxTimer.expires = jiffies;
pTimer->aSubTimers[iCpu].u.Std.u64NextTS = 0;
}Last edited by loqs (2017-12-04 08:49:12)
Offline
Hi,
test.
Last edited by jepjep (2018-02-04 16:08:09)
Offline
Hello,
Came here by Just googling.
Are you sure it is for 4.15 kernels? From the patch I can read a 4.8.0 kernel version
Regards,
Josep
In case someone needs a patch for 4.15 this is only compile tested but as I had already generated it thought I may as well post it
diff --git a/vboxdrv/r0drv/linux/timer-r0drv-linux.c b/vboxdrv/r0drv/linux/timer-r0drv-linux.c index 810779a..c0b5245 100644 --- a/vboxdrv/r0drv/linux/timer-r0drv-linux.c +++ b/vboxdrv/r0drv/linux/timer-r0drv-linux.c @@ -720,9 +720,17 @@ static enum hrtimer_restart rtTimerLinuxHrCallback(struct hrtimer *pHrTimer) * * @param ulUser Address of the sub-timer structure. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) +static void rtTimerLinuxStdCallback(struct timer_list *t) +#else static void rtTimerLinuxStdCallback(unsigned long ulUser) +#endif { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) + PRTTIMERLNXSUBTIMER pSubTimer = from_timer(pSubTimer, t, u.Std.LnxTimer); +#else PRTTIMERLNXSUBTIMER pSubTimer = (PRTTIMERLNXSUBTIMER)ulUser; +#endif PRTTIMER pTimer = pSubTimer->pParent; RTTIMERLNX_LOG(("stdcallback %p\n", pTimer)); @@ -1585,12 +1593,15 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_ #endif { #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) - init_timer_pinned(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); + timer_setup(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer, + rtTimerLinuxStdCallback, TIMER_PINNED); #else init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0) pTimer->aSubTimers[iCpu].u.Std.LnxTimer.data = (unsigned long)&pTimer->aSubTimers[iCpu]; pTimer->aSubTimers[iCpu].u.Std.LnxTimer.function = rtTimerLinuxStdCallback; +#endif pTimer->aSubTimers[iCpu].u.Std.LnxTimer.expires = jiffies; pTimer->aSubTimers[iCpu].u.Std.u64NextTS = 0; }
Offline
@jedjep yes I used greater than or equal to 4.8.0 to avoid doing the following:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
init_timer_pinned(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
timer_setup(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer,
rtTimerLinuxStdCallback, TIMER_PINNED);
#else
init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
#endifI found the following simpler and timer_setup was available in 4.8.0 to keep from a code mismatch the earlier test uses 4.8.0 as well
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
timer_setup(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer,
rtTimerLinuxStdCallback, TIMER_PINNED);
#else
init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
#endifHowever no patch should be needed with the current arch packages.
Offline