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);
#endif
I 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);
#endif
However no patch should be needed with the current arch packages.
Offline