aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorLenard Spencer <lenardrspencer@gmai.com>2024-08-27 11:48:24 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2024-08-27 11:56:53 +0700
commitf016834dd89731f100bc404b00f707911149addf (patch)
tree94e99c0a04a4f433d095e2aa0a2a66c17b40f565 /system
parentf52ffce8e06853d81a0ffdccce3401d457dfa7df (diff)
system/nvidia-legacy390-kernel: Add patch for kernel 6.10.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system')
-rw-r--r--system/nvidia-legacy390-kernel/README4
-rw-r--r--system/nvidia-legacy390-kernel/nvidia-legacy390-kernel.SlackBuild19
-rw-r--r--system/nvidia-legacy390-kernel/patches/nvidia-390.157-gcc14.patch28
-rw-r--r--system/nvidia-legacy390-kernel/patches/nvidia-legacy390-follow_pfn.patch49
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
+ }