From 9b7d9b0c0d81626204800a6761e52130211c9e6e Mon Sep 17 00:00:00 2001 From: Tk-Glitch Date: Fri, 19 Mar 2021 17:49:10 +0100 Subject: [PATCH] Get rid of the initial 5.12 kernel patch. It reportedly doesn't work on 5.12rc2+. Add an explicit 5.11 or lower kernel compat for 455 and lower branches. 460.67 is currently the only driver working on 5.12rc2+ --- PKGBUILD | 29 ++--------------------------- patches/kernel-5.12.patch | 30 ------------------------------ 2 files changed, 2 insertions(+), 57 deletions(-) delete mode 100644 patches/kernel-5.12.patch diff --git a/PKGBUILD b/PKGBUILD index 237b676..4e7cbe7 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -48,7 +48,7 @@ if [ -z "$_driver_version" ] || [ "$_driver_version" = "latest" ] || [ -z "$_dri fi fi if [[ -z $CONDITION ]]; then - read -p " What driver version do you want?`echo $'\n > 1.Vulkan dev: 455.50.10\n 2.460 series: 460.67\n 3.455 series: 455.45.01\n 4.450 series: 450.102.04\n 5.440 series: 440.100 (kernel 5.8 or lower)\n 6.435 series: 435.21 (kernel 5.6 or lower)\n 7.430 series: 430.64 (kernel 5.5 or lower)\n 8.418 series: 418.113 (kernel 5.5 or lower)\n 9.415 series: 415.27 (kernel 5.4 or lower)\n 10.410 series: 410.104 (kernel 5.5 or lower)\n 11.396 series: 396.54 (kernel 5.3 or lower, 5.1 or lower recommended)\n 12.Custom version (396.xx series or higher)\n choice[1-12?]: '`" CONDITION; + read -p " What driver version do you want?`echo $'\n > 1.Vulkan dev: 455.50.10 (kernel 5.11 or lower)\n 2.460 series: 460.67\n 3.455 series: 455.45.01 (kernel 5.11 or lower)\n 4.450 series: 450.102.04 (kernel 5.11 or lower)\n 5.440 series: 440.100 (kernel 5.8 or lower)\n 6.435 series: 435.21 (kernel 5.6 or lower)\n 7.430 series: 430.64 (kernel 5.5 or lower)\n 8.418 series: 418.113 (kernel 5.5 or lower)\n 9.415 series: 415.27 (kernel 5.4 or lower)\n 10.410 series: 410.104 (kernel 5.5 or lower)\n 11.396 series: 396.54 (kernel 5.3 or lower, 5.1 or lower recommended)\n 12.Custom version (396.xx series or higher)\n choice[1-12?]: '`" CONDITION; fi # This will be treated as the latest regular driver. if [ "$CONDITION" = "2" ]; then @@ -268,7 +268,6 @@ source=($_source_name 'kernel-5.11.patch' # 5.11 workaround '5.11-legacy.diff' # 5.11 additional workaround (<460.32.03) '455-crashfix.diff' # 455 drivers fix - https://forums.developer.nvidia.com/t/455-23-04-page-allocation-failure-in-kernel-module-at-random-points/155250/79 - 'kernel-5.12.patch' # 5.12 workaround ) msg2 "Selected driver integrity check behavior (md5sum or SKIP): $_md5sum" # If the driver is "known", return md5sum. If it isn't, return SKIP @@ -301,8 +300,7 @@ md5sums=("$_md5sum" 'bcdd512edad1bad8331a8872259d2581' 'fd0d6e14e675a61f32279558678cfc36' '8764cc714e61363cc8f818315957ad17' - '08bec554de265ce5fdcfdbd55fb608fc' - '539fef68f4466c4d8cce40bb2fe0e7d9') + '08bec554de265ce5fdcfdbd55fb608fc') if [ "$_autoaddpatch" = "true" ]; then # Auto-add *.patch files from $startdir to source=() @@ -577,12 +575,6 @@ DEST_MODULE_LOCATION[3]="/kernel/drivers/video"' dkms.conf fi fi - # 5.12 - if (( $(vercmp "$_kernel" "5.12") >= 0 )); then - _kernel512="1" - _whitelist512=( 455.50* 460.* ) - fi - # Loop patches (linux-4.15.patch, lol.patch, ...) for _p in $(printf -- '%s\n' ${source[@]} | grep .patch); do # https://stackoverflow.com/a/21058239/1821548 # Patch version (4.15, "", ...) @@ -633,9 +625,6 @@ DEST_MODULE_LOCATION[3]="/kernel/drivers/video"' dkms.conf if [ "$_patch" = "5.11" ]; then _whitelist=(${_whitelist511[@]}) fi - if [ "$_patch" = "5.12" ]; then - _whitelist=(${_whitelist512[@]}) - fi patchy=0 if (( $(vercmp "$_kernel" "$_patch") >= 0 )); then @@ -908,20 +897,6 @@ DEST_MODULE_LOCATION[3]="/kernel/drivers/video"' dkms.conf fi fi - # 5.12 - if [ "$_kernel512" = "1" ]; then - patchy=0 - for yup in "${_whitelist512[@]}"; do - [[ $pkgver = $yup ]] && patchy=1 - done - if [ "$patchy" = "1" ]; then - msg2 "Applying kernel-5.12.patch for dkms..." - patch -Np1 -i "$srcdir"/kernel-5.12.patch - else - msg2 "Skipping kernel-5.12.patch as it doesn't apply to this driver version..." - fi - fi - # Legacy quirks if [ "$_oldstuff" = "1" ]; then msg2 "Applying 01-ipmi-vm.diff for dkms..." diff --git a/patches/kernel-5.12.patch b/patches/kernel-5.12.patch deleted file mode 100644 index 093c74f..0000000 --- a/patches/kernel-5.12.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/kernel-dkms/nvidia-drm/nvidia-drm-drv.c b/kernel-dkms/nvidia-drm/nvidia-drm-drv.c -index 9582531..c23a338 100644 ---- a/kernel-dkms/nvidia-drm/nvidia-drm-drv.c -+++ b/kernel-dkms/nvidia-drm/nvidia-drm-drv.c -@@ -796,6 +797,13 @@ static struct drm_driver nv_drm_driver = { - #endif - }; - -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)) -+// Reimport trivial forwarder function deleted in commit "drm: Don't export the drm_gem_dumb_destroy() function" (file drivers/gpu/drm/drm_gem.c) -+static int nv_drm_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev, u32 handle) -+{ -+ return drm_gem_handle_delete(file, handle); -+} -+#endif - - /* - * Update the global nv_drm_driver for the intended features. -@@ -819,7 +827,11 @@ static void nv_drm_update_drm_driver_features(void) - - nv_drm_driver.dumb_create = nv_drm_dumb_create; - nv_drm_driver.dumb_map_offset = nv_drm_dumb_map_offset; -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0)) - nv_drm_driver.dumb_destroy = drm_gem_dumb_destroy; -+#else -+ nv_drm_driver.dumb_destroy = nv_drm_gem_dumb_destroy; -+#endif - #endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ - } -