summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Wawrzyniak2020-10-18 10:53:18 -0400
committerMichael Wawrzyniak2020-10-18 10:53:18 -0400
commit501b3578faf81a1cc61744bb92866ab108e84211 (patch)
tree5002d9862991c677cfbbb6bc52b3bef7e369b152
parent572352d7359f1f944587606838b9053e7e2ec1bd (diff)
downloadaur-501b3578faf81a1cc61744bb92866ab108e84211.tar.gz
Revert to v1.7.0 and add abucodonosor's kernel 5.9 patch
-rw-r--r--.SRCINFO10
-rw-r--r--PKGBUILD10
-rw-r--r--kernel-5.9.patch156
3 files changed, 168 insertions, 8 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 5d301e08c95..7cc68ad93b5 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = evdi
pkgdesc = A Linux® kernel module that enables management of multiple screens.
- pkgver = 1.8.0
- pkgrel = 1
+ pkgver = 1.7.0
+ pkgrel = 2
url = https://github.com/DisplayLink/evdi
install = evdi.install
changelog = evdi.Changelog
@@ -11,8 +11,10 @@ pkgbase = evdi
depends = glibc
depends = dkms
depends = libdrm
- source = evdi-1.8.0-1.tar.gz::https://github.com/DisplayLink/evdi/archive/v1.8.0.tar.gz
- md5sums = dd48011aa9118a611b7a1bb9cd2fe04b
+ source = evdi-1.7.0-2.tar.gz::https://github.com/DisplayLink/evdi/archive/v1.7.0.tar.gz
+ source = kernel-5.9.patch
+ md5sums = 2924de4e1350e1b2b2717f94c6dd6922
+ md5sums = 7d5de7acfce184ae0c1aaabbb74fbce5
pkgname = evdi
diff --git a/PKGBUILD b/PKGBUILD
index 50effde915b..57b1c35a87a 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,8 +2,8 @@
# Contributor: PlusMinus
pkgname=evdi
-pkgver=1.8.0
-pkgrel=1
+pkgver=1.7.0
+pkgrel=2
pkgdesc="A Linux® kernel module that enables management of multiple screens."
arch=('i686' 'x86_64')
url="https://github.com/DisplayLink/evdi"
@@ -19,9 +19,11 @@ backup=()
options=()
install=$pkgname.install
changelog=$pkgname.Changelog
-source=($pkgname-$pkgver-$pkgrel.tar.gz::https://github.com/DisplayLink/evdi/archive/v$pkgver.tar.gz)
+source=($pkgname-$pkgver-$pkgrel.tar.gz::https://github.com/DisplayLink/evdi/archive/v$pkgver.tar.gz
+ kernel-5.9.patch)
noextract=()
-md5sums=('dd48011aa9118a611b7a1bb9cd2fe04b')
+md5sums=('2924de4e1350e1b2b2717f94c6dd6922'
+ '7d5de7acfce184ae0c1aaabbb74fbce5')
prepare() {
cd "$pkgname-$pkgver"
diff --git a/kernel-5.9.patch b/kernel-5.9.patch
new file mode 100644
index 00000000000..5ee5db8bc03
--- /dev/null
+++ b/kernel-5.9.patch
@@ -0,0 +1,156 @@
+From 83046d3e6e55de2069bada70894c633c090f7ddc Mon Sep 17 00:00:00 2001
+From: Gabriel Craciunescu <nix.or.die@gmail.com>
+Date: Wed, 14 Oct 2020 15:39:07 +0200
+Subject: [PATCH] Adjust to kernel 5.9
+
+---
+ module/evdi_cursor.c | 4 ++++
+ module/evdi_drv.c | 21 +++++++++++++++++++--
+ module/evdi_fb.c | 13 ++++++++++++-
+ module/evdi_gem.c | 5 ++++-
+ module/evdi_modeset.c | 5 ++++-
+ 5 files changed, 43 insertions(+), 5 deletions(-)
+
+diff --git a/module/evdi_cursor.c b/module/evdi_cursor.c
+index 10cbf29..cb4282a 100644
+--- a/module/evdi_cursor.c
++++ b/module/evdi_cursor.c
+@@ -55,7 +55,11 @@ static void evdi_cursor_set_gem(struct evdi_cursor *cursor,
+ if (obj)
+ drm_gem_object_get(&obj->base);
+ if (cursor->obj)
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ drm_gem_object_put(&cursor->obj->base);
++#else
+ drm_gem_object_put_unlocked(&cursor->obj->base);
++#endif
+
+ cursor->obj = obj;
+ }
+diff --git a/module/evdi_drv.c b/module/evdi_drv.c
+index 7740ccc..f9d8a45 100644
+--- a/module/evdi_drv.c
++++ b/module/evdi_drv.c
+@@ -16,6 +16,9 @@
+ #include <drm/drm_crtc_helper.h>
+ #include <linux/module.h>
+ #include <linux/platform_device.h>
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++#include <linux/iommu.h>
++#endif
+
+ #include "evdi_drv.h"
+ #include "evdi_drm.h"
+@@ -91,7 +94,11 @@ static struct drm_driver driver = {
+ .postclose = evdi_driver_postclose,
+
+ /* gem hooks */
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ .gem_free_object_unlocked = evdi_gem_free_object,
++#else
+ .gem_free_object = evdi_gem_free_object,
++#endif
+ .gem_vm_ops = &evdi_gem_vm_ops,
+
+ .dumb_create = evdi_dumb_create,
+@@ -166,13 +173,23 @@ static int evdi_platform_probe(struct platform_device *pdev)
+ {
+ struct drm_device *dev;
+ int ret;
+-
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++#if IS_ENABLED(CONFIG_IOMMU_API) && defined(CONFIG_INTEL_IOMMU)
++ struct dev_iommu iommu;
++#endif
++#endif
+ EVDI_CHECKPT();
+
+- /* Intel-IOMMU workaround: platform-bus unsupported, force ID-mapping */
++/* Intel-IOMMU workaround: platform-bus unsupported, force ID-mapping */
+ #if IS_ENABLED(CONFIG_IOMMU_API) && defined(CONFIG_INTEL_IOMMU)
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ memset(&iommu, 0, sizeof(iommu));
++ iommu.priv = (void *)-1;
++ pdev->dev.iommu = &iommu;
++#else
+ #define INTEL_IOMMU_DUMMY_DOMAIN ((void *)-1)
+ pdev->dev.archdata.iommu = INTEL_IOMMU_DUMMY_DOMAIN;
++#endif
+ #endif
+
+ dev = drm_dev_alloc(&driver, &pdev->dev);
+diff --git a/module/evdi_fb.c b/module/evdi_fb.c
+index 10d1990..3639bf8 100644
+--- a/module/evdi_fb.c
++++ b/module/evdi_fb.c
+@@ -319,8 +319,11 @@ static void evdi_user_framebuffer_destroy(struct drm_framebuffer *fb)
+
+ EVDI_CHECKPT();
+ if (efb->obj)
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ drm_gem_object_put(&efb->obj->base);
++#else
+ drm_gem_object_put_unlocked(&efb->obj->base);
+-
++#endif
+ drm_framebuffer_cleanup(fb);
+ kfree(efb);
+ }
+@@ -438,7 +441,11 @@ static int evdifb_create(struct drm_fb_helper *helper,
+
+ return ret;
+ out_gfree:
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ drm_gem_object_put(&efbdev->efb.obj->base);
++#else
+ drm_gem_object_put_unlocked(&efbdev->efb.obj->base);
++#endif
+ out:
+ return ret;
+ }
+@@ -464,7 +471,11 @@ static void evdi_fbdev_destroy(__always_unused struct drm_device *dev,
+ if (efbdev->efb.obj) {
+ drm_framebuffer_unregister_private(&efbdev->efb.base);
+ drm_framebuffer_cleanup(&efbdev->efb.base);
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ drm_gem_object_put(&efbdev->efb.obj->base);
++#else
+ drm_gem_object_put_unlocked(&efbdev->efb.obj->base);
++#endif
+ }
+ }
+
+diff --git a/module/evdi_gem.c b/module/evdi_gem.c
+index 9bb54d7..cc411b9 100644
+--- a/module/evdi_gem.c
++++ b/module/evdi_gem.c
+@@ -81,8 +81,11 @@ evdi_gem_create(struct drm_file *file,
+ kfree(obj);
+ return ret;
+ }
+-
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ drm_gem_object_put(&obj->base);
++#else
+ drm_gem_object_put_unlocked(&obj->base);
++#endif
+ *handle_p = handle;
+ return 0;
+ }
+diff --git a/module/evdi_modeset.c b/module/evdi_modeset.c
+index fb9bfac..c0f904c 100644
+--- a/module/evdi_modeset.c
++++ b/module/evdi_modeset.c
+@@ -129,8 +129,11 @@ static int evdi_crtc_cursor_set(struct drm_crtc *crtc,
+ evdi_cursor_set(evdi->cursor,
+ eobj, width, height, hot_x, hot_y,
+ format, stride);
+-
++#if KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE
++ drm_gem_object_put(obj);
++#else
+ drm_gem_object_put_unlocked(obj);
++#endif
+
+ /*
+ * For now we don't care whether the application wanted the mouse set,