diff options
author | Lenard Spencer <lenardrspencer@gmai.com> | 2024-08-27 11:48:24 +0700 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2024-08-27 11:56:53 +0700 |
commit | f016834dd89731f100bc404b00f707911149addf (patch) | |
tree | 94e99c0a04a4f433d095e2aa0a2a66c17b40f565 /system | |
parent | f52ffce8e06853d81a0ffdccce3401d457dfa7df (diff) |
system/nvidia-legacy390-kernel: Add patch for kernel 6.10.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system')
4 files changed, 94 insertions, 6 deletions
diff --git a/system/nvidia-legacy390-kernel/README b/system/nvidia-legacy390-kernel/README index d31e2f0953..61bebaeb13 100644 --- a/system/nvidia-legacy390-kernel/README +++ b/system/nvidia-legacy390-kernel/README @@ -14,7 +14,9 @@ You do not need this file at all if you have a proper and complete The xf86-video-nouveau-blacklist package from /extra is required. -To build against the new 6.6.x kernel, pass KERNEL66=yes to the script. +To build the package for the 6.10 kernel, pass KERNEL610 to the script. +This is ONLY if you have built a 6.10/6.11 kernel for Slack 15.0. +Also note that in this case the nvidia-drm module will NOT be built. BIG FAT NOTE: The Nvidia 390.xx series is EOL as of December 2022. Because of the ABI change from xorg-server 1.20 to 1.21, the Nvidia 390 diff --git a/system/nvidia-legacy390-kernel/nvidia-legacy390-kernel.SlackBuild b/system/nvidia-legacy390-kernel/nvidia-legacy390-kernel.SlackBuild index ff10dd4520..2bd5326b0f 100644 --- a/system/nvidia-legacy390-kernel/nvidia-legacy390-kernel.SlackBuild +++ b/system/nvidia-legacy390-kernel/nvidia-legacy390-kernel.SlackBuild @@ -29,7 +29,7 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=nvidia-legacy390-kernel VERSION=${VERSION:-390.157} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -87,8 +87,8 @@ find -L . \ unset ARCH cd kernel || exit 1 -# Patches for kernel 6.6.x - if [ "${KERNEL66:-no}" = "yes" ]; then +# Patches for -current: + if [ "${KERNEL610:-no}" = "yes" ]; then patch -p1 < $CWD/patches/kernel-6.2.patch patch -p1 < $CWD/patches/kernel-6.3.patch if [ "$TARGET" = "x86_64" ]; then @@ -97,18 +97,27 @@ find -L . \ patch -p1 < $CWD/patches/kernel-6.4.patch patch -p1 < $CWD/patches/kernel-6.5.patch patch -p1 < $CWD/patches/kernel-6.6.patch + patch -p1 < $CWD/patches/nvidia-390.157-gcc14.patch + patch -p1 < $CWD/patches/nvidia-legacy390-follow_pfn.patch fi # CC=${CC:-gcc} suppresses an otherwise harmless "compiler mismatch" # message. If you custom-build your kernel with clang, # then pass CC=clang to this script. - CC=${CC:-gcc} make SYSSRC=$KERNELPATH module || exit 1 +# Also, nvidia-drm.ko will no longer build in current + if [ "${KERNEL610:-no}" = "no" ]; then + CC=${CC:-gcc} make SYSSRC=$KERNELPATH module || exit 1 + else + CC=${CC:-gcc} NV_EXCLUDE_KERNEL_MODULES=nvidia-drm make SYSSRC=$KERNELPATH module || exit 1 + fi ) mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video install -m 0664 kernel/nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/ install -m 0664 kernel/nvidia-modeset.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/ -install -m 0664 kernel/nvidia-drm.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/ + if [ "${KERNEL610:-no}" = "no" ]; then + install -m 0664 kernel/nvidia-drm.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/ +fi # 32-bit doesn't have nvidia-uvm if [ "$TARGET" = "x86_64" ]; then install -m 0664 kernel/nvidia-uvm.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video/ diff --git a/system/nvidia-legacy390-kernel/patches/nvidia-390.157-gcc14.patch b/system/nvidia-legacy390-kernel/patches/nvidia-390.157-gcc14.patch new file mode 100644 index 0000000000..499322c9f4 --- /dev/null +++ b/system/nvidia-legacy390-kernel/patches/nvidia-390.157-gcc14.patch @@ -0,0 +1,28 @@ +diff -Nur kernel/conftest.sh kernel.new/conftest.sh +--- kernel/conftest.sh 2024-05-19 00:17:45.989834240 -0400 ++++ kernel.new/conftest.sh 2024-05-19 00:18:48.369635044 -0400 +@@ -153,7 +153,8 @@ + build_cflags() { + BASE_CFLAGS="-O2 -D__KERNEL__ \ + -DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \ +--nostdinc -isystem $ISYSTEM" ++-nostdinc -isystem $ISYSTEM -fshort-wchar \ ++ -Wno-implicit-function-declaration -Wno-strict-prototypes" + + if [ "$OUTPUT" != "$SOURCES" ]; then + OUTPUT_CFLAGS="-I$OUTPUT/include2 -I$OUTPUT/include" +@@ -4450,8 +4451,13 @@ + # + CODE=" + #include <drm/drm_gem.h> ++ #if defined(NV_LINUX_IOSYS_MAP_H_PRESENT) ++ typedef struct iosys_map nv_sysio_map_t; ++ #else ++ typedef struct dma_buf_map nv_sysio_map_t; ++ #endif + int conftest_drm_gem_object_vmap_has_map_arg( +- struct drm_gem_object *obj, struct dma_buf_map *map) { ++ struct drm_gem_object *obj, nv_sysio_map_t *map) { + return obj->funcs->vmap(obj, map); + }" + diff --git a/system/nvidia-legacy390-kernel/patches/nvidia-legacy390-follow_pfn.patch b/system/nvidia-legacy390-kernel/patches/nvidia-legacy390-follow_pfn.patch new file mode 100644 index 0000000000..93ef31c46f --- /dev/null +++ b/system/nvidia-legacy390-kernel/patches/nvidia-legacy390-follow_pfn.patch @@ -0,0 +1,49 @@ +diff -Naur kernel.org/conftest.sh kernel/conftest.sh +--- kernel.org/conftest.sh 2024-05-02 22:25:33.000000000 +0800 ++++ kernel/conftest.sh 2024-07-26 21:24:43.434506976 +0800 +@@ -4683,20 +4689,22 @@ + compile_check_conftest "$CODE" "NV_SG_PAGE_ITER_PAGE_PRESENT" "" "functions" + ;; + +- unsafe_follow_pfn) ++ follow_pfn) + # +- # Determine if unsafe_follow_pfn() is present. ++ # Determine if follow_pfn() is present. + # +- # unsafe_follow_pfn() was added by commit 69bacee7f9ad +- # ("mm: Add unsafe_follow_pfn") in v5.13-rc1. ++ # follow_pfn() was added by commit 3b6748e2dd69 ++ # ("mm: introduce follow_pfn()") in v2.6.31-rc1, and removed ++ # by commit 233eb0bf3b94 ("mm: remove follow_pfn") ++ # from linux-next 233eb0bf3b94. + # + CODE=" + #include <linux/mm.h> +- void conftest_unsafe_follow_pfn(void) { +- unsafe_follow_pfn(); ++ void conftest_follow_pfn(void) { ++ follow_pfn(); + }" + +- compile_check_conftest "$CODE" "NV_UNSAFE_FOLLOW_PFN_PRESENT" "" "functions" ++ compile_check_conftest "$CODE" "NV_FOLLOW_PFN_PRESENT" "" "functions" + ;; + + drm_plane_atomic_check_has_atomic_state_arg) +diff -Naur kernel.org/nvidia/os-mlock.c kernel/nvidia/os-mlock.c +--- kernel.org/nvidia/os-mlock.c 2024-05-02 23:16:35.000000000 +0800 ++++ kernel/nvidia/os-mlock.c 2024-07-26 21:24:43.511506979 +0800 +@@ -17,10 +17,10 @@ + unsigned long address, + unsigned long *pfn) + { +-#if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT) +- return unsafe_follow_pfn(vma, address, pfn); +-#else ++#if defined(NV_FOLLOW_PFN_PRESENT) + return follow_pfn(vma, address, pfn); ++#else ++ return -1; + #endif + } |