summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--021-kernel-5.9.patch189
-rw-r--r--PKGBUILD4
3 files changed, 195 insertions, 2 deletions
diff --git a/.SRCINFO b/.SRCINFO
index eacd784ac1c..b4ff19407a5 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = virtualbox-headless
pkgdesc = Powerful x86 virtualization for enterprise as well as home use. Headless build (no GUI, no Java).
pkgver = 6.1.14
- pkgrel = 1
+ pkgrel = 2
url = https://virtualbox.org
install = virtualbox.install
arch = i686
@@ -50,6 +50,7 @@ pkgbase = virtualbox-headless
source = 017-fix-narrowing-conversion.patch
source = 018-xclient.patch
source = 020-gsoap.patch
+ source = 021-kernel-5.9.patch
sha256sums = 16f3cb83ab3c4dacf2a9d3cc638cbd18db23767828bba6b8ba1c1b57abeb6aef
sha256sums = 2101ebb58233bbfadf3aa74381f22f7e7e508559d2b46387114bc2d8e308554c
sha256sums = 9c5238183019f9ebc7d92a8582cad232f471eab9d3278786225abc1a1c7bf66e
@@ -66,6 +67,7 @@ pkgbase = virtualbox-headless
sha256sums = 5aac692909a0a0ec56b08bdece9e42cf7463abdca9da2f990d441ff463be6a99
sha256sums = cac5a573e9ed5aafb2f469c2e6fffb8cd4f389bbadba5a968c9f65be7a72fee3
sha256sums = c6892a3561a72a9b308cb33fa6647cc53e54a3bd40cb41780cad7f8e9d7df9f6
+ sha256sums = 05bfc8306bbd856087c393dcb47d16de4213a4cc69124857f705f3784d88581a
pkgname = virtualbox-headless
diff --git a/021-kernel-5.9.patch b/021-kernel-5.9.patch
new file mode 100644
index 00000000000..351f90db796
--- /dev/null
+++ b/021-kernel-5.9.patch
@@ -0,0 +1,189 @@
+This patch file contains the changes needed to compile the VirtualBox
+modules for kernel 5.9.0+.
+
+The changes are as follows:
+1. The kernel headers no longer define HAVE_UNLOCKED_IOCTL; however,
+ this symbol is needed for compilation of VB.
+2. The calling sequence for get_user_pages_remote() is changed.
+3. Routine sched_setscheduler() is replaced by sched_set_fifo_low().
+4. The type of vbox_master_set() is changed from int to void.
+5. Routine drm_gem_object_put_unlocked() is replaced by drm_gem_object_put().
+6. Member offset is removed from struct ttm_buffer_object.
+
+Index: VirtualBox-6.1.14/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
++++ VirtualBox-6.1.14/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+@@ -137,7 +137,10 @@
+ #include <linux/interrupt.h>
+ #include <linux/completion.h>
+ #include <linux/compiler.h>
+-#ifndef HAVE_UNLOCKED_IOCTL /* linux/fs.h defines this */
++#if RTLNX_VER_MIN(5, 9, 0)
++#define HAVE_UNLOCKED_IOCTL 1 /* defined in linux/fs.h for kernels before 5.9 */
++#endif
++#ifndef HAVE_UNLOCKED_IOCTL
+ # include <linux/smp_lock.h>
+ #endif
+ /* For the shared folders module */
+Index: VirtualBox-6.1.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
++++ VirtualBox-6.1.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+@@ -1181,7 +1181,9 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ */
+ else
+ rc = get_user_pages_remote(
++#if RTLNX_VER_MAX(5, 9, 0)
+ pTask, /* Task for fault accounting. */
++#endif
+ pTask->mm, /* Whose pages. */
+ R3Ptr, /* Where from. */
+ cPages, /* How many pages. */
+Index: VirtualBox-6.1.14/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c
++++ VirtualBox-6.1.14/src/VBox/Runtime/r0drv/linux/thread2-r0drv-linux.c
+@@ -92,8 +92,12 @@ DECLHIDDEN(int) rtThreadNativeSetPriorit
+ return VERR_INVALID_PARAMETER;
+ }
+
++#if RTLNX_VER_MAX(5, 9, 0)
+ sched_setscheduler(current, iSchedClass, &Param);
+ #else
++ sched_set_fifo_low(current);
++#endif
++#else
+ RT_NOREF_PV(enmType);
+ #endif
+ RT_NOREF_PV(pThread);
+Index: VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_drv.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Additions/linux/drm/vbox_drv.c
++++ VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_drv.c
+@@ -262,8 +262,13 @@ static const struct file_operations vbox
+ .read = drm_read,
+ };
+
++#if RTLNX_VER_MAX(5, 9, 0)
+ static int vbox_master_set(struct drm_device *dev,
+ struct drm_file *file_priv, bool from_open)
++#else
++static void vbox_master_set(struct drm_device *dev,
++ struct drm_file *file_priv, bool from_open)
++#endif
+ {
+ struct vbox_private *vbox = dev->dev_private;
+
+Index: VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_fb.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Additions/linux/drm/vbox_fb.c
++++ VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_fb.c
+@@ -405,7 +405,11 @@ void vbox_fbdev_fini(struct drm_device *
+ vbox_bo_unpin(bo);
+ vbox_bo_unreserve(bo);
+ }
++#if RTLNX_VER_MIN(5, 9, 0)
++ drm_gem_object_put(afb->obj);
++#else
+ drm_gem_object_put_unlocked(afb->obj);
++#endif
+ afb->obj = NULL;
+ }
+ drm_fb_helper_fini(&fbdev->helper);
+Index: VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_main.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Additions/linux/drm/vbox_main.c
++++ VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_main.c
+@@ -40,14 +40,19 @@
+ #include <VBoxVideoVBE.h>
+
+ #include "hgsmi_channels.h"
++#include <linux/version.h>
++
+
+ static void vbox_user_framebuffer_destroy(struct drm_framebuffer *fb)
+ {
+ struct vbox_framebuffer *vbox_fb = to_vbox_framebuffer(fb);
+
+ if (vbox_fb->obj)
++#if RTLNX_VER_MAX(5, 9, 0)
+ drm_gem_object_put_unlocked(vbox_fb->obj);
+-
++#else
++ drm_gem_object_put(vbox_fb->obj);
++#endif
+ drm_framebuffer_cleanup(fb);
+ kfree(fb);
+ }
+@@ -221,7 +226,11 @@ static struct drm_framebuffer *vbox_user
+ err_free_vbox_fb:
+ kfree(vbox_fb);
+ err_unref_obj:
++#if RTLNX_VER_MAX(5, 9, 0)
+ drm_gem_object_put_unlocked(obj);
++#else
++ drm_gem_object_put(obj);
++#endif
+ return ERR_PTR(ret);
+ }
+
+@@ -588,7 +597,11 @@ int vbox_dumb_create(struct drm_file *fi
+ return ret;
+
+ ret = drm_gem_handle_create(file, gobj, &handle);
++#if RTLNX_VER_MAX(5, 9, 0)
+ drm_gem_object_put_unlocked(gobj);
++#else
++ drm_gem_object_put(gobj);
++#endif
+ if (ret)
+ return ret;
+
+Index: VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_drv.h
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Additions/linux/drm/vbox_drv.h
++++ VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_drv.h
+@@ -417,6 +417,9 @@ struct vbox_bo {
+ #else
+ struct ttm_place placements[3];
+ #endif
++#if RTLNX_VER_MIN(5, 9, 0)
++ uint64_t offset;
++#endif
+ int pin_count;
+ };
+
+Index: VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_mode.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Additions/linux/drm/vbox_mode.c
++++ VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_mode.c
+@@ -885,8 +885,11 @@ out_unmap_bo:
+ out_unreserve_bo:
+ vbox_bo_unreserve(bo);
+ out_unref_obj:
++#if RTLNX_VER_MAX(5, 9, 0)
+ drm_gem_object_put_unlocked(obj);
+-
++#else
++ drm_gem_object_put(obj);
++#endif
+ return ret;
+ }
+
+Index: VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_ttm.c
+===================================================================
+--- VirtualBox-6.1.14.orig/src/VBox/Additions/linux/drm/vbox_ttm.c
++++ VirtualBox-6.1.14/src/VBox/Additions/linux/drm/vbox_ttm.c
+@@ -445,7 +445,11 @@ err_free_vboxbo:
+
+ static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo)
+ {
++#if RTLNX_VER_MAX(5, 9, 0)
+ return bo->bo.offset;
++#else
++ return bo->offset;
++#endif
+ }
+
+ int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 *gpu_addr)
diff --git a/PKGBUILD b/PKGBUILD
index f9de54e820f..fa7f8cbfcf6 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
pkgname=virtualbox-headless
pkgver=6.1.14
_tarver=${pkgver}a
-pkgrel=1
+pkgrel=2
pkgdesc='Powerful x86 virtualization for enterprise as well as home use. Headless build (no GUI, no Java).'
arch=('i686' 'x86_64')
url='https://virtualbox.org'
@@ -39,6 +39,7 @@ source=("https://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${_tarv
'017-fix-narrowing-conversion.patch'
'018-xclient.patch'
'020-gsoap.patch'
+ '021-kernel-5.9.patch'
)
sha256sums=(
'16f3cb83ab3c4dacf2a9d3cc638cbd18db23767828bba6b8ba1c1b57abeb6aef'
@@ -57,6 +58,7 @@ sha256sums=(
'5aac692909a0a0ec56b08bdece9e42cf7463abdca9da2f990d441ff463be6a99'
'cac5a573e9ed5aafb2f469c2e6fffb8cd4f389bbadba5a968c9f65be7a72fee3'
'c6892a3561a72a9b308cb33fa6647cc53e54a3bd40cb41780cad7f8e9d7df9f6'
+ '05bfc8306bbd856087c393dcb47d16de4213a4cc69124857f705f3784d88581a'
)
prepare() {