forked from pool/virtualbox
Accepting request 547420 from Virtualization
- Update "fixes_for_4.15.patch" for further API changes in kernel 4.15. OBS-URL: https://build.opensuse.org/request/show/547420 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virtualbox?expand=0&rev=149
This commit is contained in:
commit
b8ea589603
@ -1,15 +1,180 @@
|
||||
This patch file makes the necessary changes to the VirtualBox 5.1.30 sources
|
||||
to allow the kernel modules to build with kernel 4.15.
|
||||
|
||||
The API changes are of several types:
|
||||
|
||||
1. The timer initialization routine init_timer_pinned() no longer exists, and
|
||||
is replaced by timer_setup().
|
||||
2. The timer callback routine calling sequence is changed as is the technique
|
||||
for getting the timer information from the callback parameters.
|
||||
3. The calling sequence for drm_encoder_find() is changed.
|
||||
4. The calling sequence for the .get and .set members of the module_param_call()
|
||||
calls have changed.
|
||||
|
||||
This patch is released under the MIT license when appropriate, GPLv2 otherwise.
|
||||
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
|
||||
Index: VirtualBox-5.1.30/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c
|
||||
===================================================================
|
||||
--- VirtualBox-5.1.30.orig/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c
|
||||
+++ VirtualBox-5.1.30/src/VBox/Runtime/r0drv/linux/timer-r0drv-linux.c
|
||||
@@ -1584,7 +1584,9 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *pp
|
||||
@@ -715,6 +715,14 @@ static enum hrtimer_restart rtTimerLinux
|
||||
#endif /* RTTIMER_LINUX_WITH_HRTIMER */
|
||||
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+/**
|
||||
+ * Timer callback for kernels 4.15 and later
|
||||
+ */
|
||||
+static void rtTimerLinuxStdCallback(struct timer_list *t)
|
||||
+{
|
||||
+ PRTTIMERLNXSUBTIMER pSubTimer = from_timer(pSubTimer, t, u.Std.LnxTimer);
|
||||
+#else
|
||||
/**
|
||||
* Timer callback function for standard timers.
|
||||
*
|
||||
@@ -723,6 +731,7 @@ static enum hrtimer_restart rtTimerLinux
|
||||
static void rtTimerLinuxStdCallback(unsigned long ulUser)
|
||||
{
|
||||
PRTTIMERLNXSUBTIMER pSubTimer = (PRTTIMERLNXSUBTIMER)ulUser;
|
||||
+#endif
|
||||
PRTTIMER pTimer = pSubTimer->pParent;
|
||||
|
||||
RTTIMERLNX_LOG(("stdcallback %p\n", pTimer));
|
||||
@@ -1584,13 +1593,17 @@ RTDECL(int) RTTimerCreateEx(PRTTIMER *pp
|
||||
else
|
||||
#endif
|
||||
{
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+ __init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer, TIMER_PINNED);
|
||||
+ timer_setup(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer,rtTimerLinuxStdCallback, TIMER_PINNED);
|
||||
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
|
||||
init_timer_pinned(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
|
||||
#else
|
||||
init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
|
||||
#endif
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 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;
|
||||
}
|
||||
Index: VirtualBox-5.1.30/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
|
||||
===================================================================
|
||||
--- VirtualBox-5.1.30.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
|
||||
+++ VirtualBox-5.1.30/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
|
||||
@@ -958,7 +958,11 @@ EXPORT_SYMBOL(VBoxGuestIDCCall);
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
|
||||
|
||||
/** log and dbg_log parameter setter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamLogGrpSet(const char *pszValue, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamLogGrpSet(const char *pszValue, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
if (g_fLoggerCreated)
|
||||
{
|
||||
@@ -973,7 +973,11 @@ static int vgdrvLinuxParamLogGrpSet(cons
|
||||
}
|
||||
|
||||
/** log and dbg_log parameter getter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamLogGrpGet(char *pszBuf, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamLogGrpGet(char *pszBuf, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
|
||||
*pszBuf = '\0';
|
||||
@@ -984,7 +984,11 @@ static int vgdrvLinuxParamLogGrpGet(char
|
||||
|
||||
|
||||
/** log and dbg_log_flags parameter setter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamLogFlagsSet(const char *pszValue, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamLogFlagsSet(const char *pszValue, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
if (g_fLoggerCreated)
|
||||
{
|
||||
@@ -998,7 +998,11 @@ static int vgdrvLinuxParamLogFlagsSet(co
|
||||
}
|
||||
|
||||
/** log and dbg_log_flags parameter getter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamLogFlagsGet(char *pszBuf, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamLogFlagsGet(char *pszBuf, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
|
||||
*pszBuf = '\0';
|
||||
@@ -1009,7 +1009,11 @@ static int vgdrvLinuxParamLogFlagsGet(ch
|
||||
|
||||
|
||||
/** log and dbg_log_dest parameter setter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamLogDstSet(const char *pszValue, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamLogDstSet(const char *pszValue, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
if (g_fLoggerCreated)
|
||||
{
|
||||
@@ -1023,7 +1023,11 @@ static int vgdrvLinuxParamLogDstSet(cons
|
||||
}
|
||||
|
||||
/** log and dbg_log_dest parameter getter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamLogDstGet(char *pszBuf, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamLogDstGet(char *pszBuf, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
|
||||
*pszBuf = '\0';
|
||||
@@ -1034,7 +1034,11 @@ static int vgdrvLinuxParamLogDstGet(char
|
||||
|
||||
|
||||
/** r3_log_to_host parameter setter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamR3LogToHostSet(const char *pszValue, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamR3LogToHostSet(const char *pszValue, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
if ( pszValue == NULL
|
||||
|| *pszValue == '\0'
|
||||
@@ -1052,7 +1052,11 @@ static int vgdrvLinuxParamR3LogToHostSet
|
||||
}
|
||||
|
||||
/** r3_log_to_host parameter getter. */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+static int vgdrvLinuxParamR3LogToHostGet(char *pszBuf, const struct kernel_param *pParam)
|
||||
+#else
|
||||
static int vgdrvLinuxParamR3LogToHostGet(char *pszBuf, struct kernel_param *pParam)
|
||||
+#endif
|
||||
{
|
||||
strcpy(pszBuf, g_DevExt.fLoggingEnabled ? "enabled" : "disabled");
|
||||
return strlen(pszBuf);
|
||||
Index: VirtualBox-5.1.30/src/VBox/Additions/linux/drm/vbox_mode.c
|
||||
===================================================================
|
||||
--- VirtualBox-5.1.30.orig/src/VBox/Additions/linux/drm/vbox_mode.c
|
||||
+++ VirtualBox-5.1.30/src/VBox/Additions/linux/drm/vbox_mode.c
|
||||
@@ -369,7 +369,12 @@ static struct drm_encoder *vbox_best_sin
|
||||
LogFunc(("vboxvideo: %d: connector=%p\n", __LINE__, connector));
|
||||
/* pick the encoder ids */
|
||||
if (enc_id)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+ return drm_encoder_find(connector->dev, NULL, enc_id);
|
||||
+#else
|
||||
return drm_encoder_find(connector->dev, enc_id);
|
||||
+#endif
|
||||
+
|
||||
LogFunc(("vboxvideo: %d\n", __LINE__));
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Dec 2 03:57:55 UTC 2017 - Larry.Finger@lwfinger.net
|
||||
|
||||
- Update "fixes_for_4.15.patch" for further API changes in kernel 4.15.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 23 13:47:36 UTC 2017 - rbrown@suse.com
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user