mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
nvidia-legacy: drop support and xf86-video-nvidia-legacy package
This commit is contained in:
@@ -34,7 +34,7 @@ get_graphicdrivers() {
|
||||
V4L2_SUPPORT="no"
|
||||
|
||||
if [ "${GRAPHIC_DRIVERS}" = "all" ]; then
|
||||
GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio vc4"
|
||||
GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-ng vmware virtio vc4"
|
||||
fi
|
||||
|
||||
if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then
|
||||
@@ -84,11 +84,6 @@ get_graphicdrivers() {
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if listcontains "${GRAPHIC_DRIVERS}" "nvidia-legacy"; then
|
||||
XORG_DRIVERS+=" nvidia-legacy"
|
||||
VDPAU_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then
|
||||
VULKAN_DRIVERS_CONFIG+=" nvidia-ng"
|
||||
VAAPI_SUPPORT="yes"
|
||||
|
||||
@@ -367,8 +367,8 @@ post_makeinstall_target() {
|
||||
fi
|
||||
|
||||
# nvidia: Enable USLEEP to reduce CPU load while rendering
|
||||
if listcontains "${GRAPHIC_DRIVERS}" "nvidia" || listcontains "${GRAPHIC_DRIVERS}" "nvidia-legacy"; then
|
||||
echo "__GL_YIELD=USLEEP" >>${INSTALL}/usr/lib/kodi/kodi.conf
|
||||
if listcontains "${GRAPHIC_DRIVERS}" "nvidia"; then
|
||||
echo "__GL_YIELD=USLEEP" >> ${INSTALL}/usr/lib/kodi/kodi.conf
|
||||
fi
|
||||
|
||||
mkdir -p ${INSTALL}/usr/sbin
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
Section "Device"
|
||||
Identifier "nvidia"
|
||||
Driver "nvidia"
|
||||
Option "DynamicTwinView" "False"
|
||||
Option "NoFlip" "false"
|
||||
Option "NoLogo" "true"
|
||||
Option "ConnectToAcpid" "0"
|
||||
Option "ModeValidation" "NoVesaModes, NoXServerModes"
|
||||
Option "HWCursor" "false"
|
||||
# To put Xorg in debug mode change "false" to "true" in the line below:
|
||||
Option "ModeDebug" "false"
|
||||
# To use a local edid.bin file uncomment the 4 lines below (change DFP-0 to match your card)
|
||||
# Option "ConnectedMonitor" "DFP-0"
|
||||
# Option "CustomEDID" "DFP-0:/storage/.config/edid.bin"
|
||||
# Option "IgnoreEDID" "false"
|
||||
# Option "UseEDID" "true"
|
||||
EndSection
|
||||
|
||||
Section "Screen"
|
||||
Identifier "screen"
|
||||
Device "nvidia"
|
||||
DefaultDepth 24
|
||||
Option "ColorRange" "Full"
|
||||
# Option "ColorRange" "Limited"
|
||||
# Option "ColorSpace" "RGB"
|
||||
SubSection "Display"
|
||||
Depth 24
|
||||
EndSubSection
|
||||
EndSection
|
||||
|
||||
Section "Extensions"
|
||||
Option "Composite" "false"
|
||||
EndSection
|
||||
@@ -1,71 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="xf86-video-nvidia-legacy"
|
||||
PKG_VERSION="340.108"
|
||||
PKG_SHA256="995d44fef587ff5284497a47a95d71adbee0c13020d615e940ac928f180f5b77"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="https://www.nvidia.com/en-us/drivers/unix/"
|
||||
PKG_URL="http://us.download.nvidia.com/XFree86/Linux-x86_64/${PKG_VERSION}/NVIDIA-Linux-x86_64-${PKG_VERSION}-no-compat32.run"
|
||||
PKG_DEPENDS_TARGET="util-macros xorg-server libvdpau"
|
||||
PKG_NEED_UNPACK="${LINUX_DEPENDS}"
|
||||
PKG_LONGDESC="The Xorg driver for NVIDIA GPUs supporting the GeForce 500 Series & older devices."
|
||||
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
PKG_IS_KERNEL_PKG="yes"
|
||||
|
||||
unpack() {
|
||||
[ -d ${PKG_BUILD} ] && rm -rf ${PKG_BUILD}
|
||||
|
||||
sh ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} --extract-only --target ${PKG_BUILD}
|
||||
}
|
||||
|
||||
make_target() {
|
||||
unset LDFLAGS
|
||||
|
||||
cd kernel
|
||||
make module CC=${CC} LD=${LD} SYSSRC=$(kernel_path) SYSOUT=$(kernel_path)
|
||||
${STRIP} --strip-debug nvidia.ko
|
||||
cd ..
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/${XORG_PATH_MODULES}/drivers
|
||||
cp -P nvidia_drv.so ${INSTALL}/${XORG_PATH_MODULES}/drivers/nvidia-legacy_drv.so
|
||||
ln -sf /var/lib/nvidia_drv.so ${INSTALL}/${XORG_PATH_MODULES}/drivers/nvidia_drv.so
|
||||
|
||||
mkdir -p ${INSTALL}/${XORG_PATH_MODULES}/extensions
|
||||
# rename to not conflicting with Mesa libGL.so
|
||||
cp -P libglx.so* ${INSTALL}/${XORG_PATH_MODULES}/extensions/libglx_nvidia-legacy.so
|
||||
|
||||
mkdir -p ${INSTALL}/etc/X11
|
||||
cp ${PKG_DIR}/config/*.conf ${INSTALL}/etc/X11
|
||||
|
||||
mkdir -p ${INSTALL}/usr/lib
|
||||
cp -P libnvidia-glcore.so.${PKG_VERSION} ${INSTALL}/usr/lib
|
||||
cp -P libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib
|
||||
ln -sf /var/lib/libnvidia-ml.so.1 ${INSTALL}/usr/lib/libnvidia-ml.so.1
|
||||
cp -P tls/libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib
|
||||
# rename to not conflicting with Mesa libGL.so
|
||||
cp -P libGL.so* ${INSTALL}/usr/lib/libGL_nvidia-legacy.so.1
|
||||
|
||||
mkdir -p ${INSTALL}/$(get_full_module_dir)/nvidia
|
||||
ln -sf /var/lib/nvidia.ko ${INSTALL}/$(get_full_module_dir)/nvidia/nvidia.ko
|
||||
|
||||
mkdir -p ${INSTALL}/usr/lib/nvidia-legacy
|
||||
cp kernel/nvidia.ko ${INSTALL}/usr/lib/nvidia-legacy
|
||||
|
||||
mkdir -p ${INSTALL}/usr/bin
|
||||
ln -s /var/lib/nvidia-smi ${INSTALL}/usr/bin/nvidia-smi
|
||||
cp nvidia-smi ${INSTALL}/usr/bin/nvidia-legacy-smi
|
||||
ln -s /var/lib/nvidia-xconfig ${INSTALL}/usr/bin/nvidia-xconfig
|
||||
cp nvidia-xconfig ${INSTALL}/usr/bin/nvidia-legacy-xconfig
|
||||
|
||||
mkdir -p ${INSTALL}/usr/lib/vdpau
|
||||
cp libvdpau_nvidia.so* ${INSTALL}/usr/lib/vdpau/libvdpau_nvidia-legacy.so.1
|
||||
ln -sf /var/lib/libvdpau_nvidia.so ${INSTALL}/usr/lib/vdpau/libvdpau_nvidia.so
|
||||
ln -sf /var/lib/libvdpau_nvidia.so.1 ${INSTALL}/usr/lib/vdpau/libvdpau_nvidia.so.1
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,92 +0,0 @@
|
||||
From 2cc3342b4b3c96bcc4062513011d35c079b009a2 Mon Sep 17 00:00:00 2001
|
||||
From: graysky <graysky@archlinux.us>
|
||||
Date: Thu, 22 Oct 2020 06:59:59 -0400
|
||||
Subject: [PATCH 2/3] kernel-5.8
|
||||
|
||||
credit: https://launchpad.net/~kelebek333/+archive/ubuntu/nvidia-legacy/+packages
|
||||
extracted from: https://launchpadlibrarian.net/492468557/nvidia-graphics-drivers-340_340.108-1lmtrfocal3_340.108-2lmtrfocal.diff.gz
|
||||
---
|
||||
kernel/nv-linux.h | 8 ++++++++
|
||||
kernel/nvidia-modules-common.mk | 1 +
|
||||
kernel/os-mlock.c | 8 ++++++++
|
||||
kernel/uvm/nvidia_uvm_lite_api.c | 4 ++++
|
||||
4 files changed, 21 insertions(+)
|
||||
|
||||
diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h
|
||||
index 83e6433..d055552 100644
|
||||
--- a/kernel/nv-linux.h
|
||||
+++ b/kernel/nv-linux.h
|
||||
@@ -669,11 +669,19 @@ extern nv_spinlock_t km_lock;
|
||||
# define KM_FREE_RECORD(a,b,c)
|
||||
#endif
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
|
||||
+#define NV_VMALLOC(ptr, size) \
|
||||
+ { \
|
||||
+ (ptr) = __vmalloc(size, GFP_KERNEL); \
|
||||
+ VM_ALLOC_RECORD(ptr, size, "vm_vmalloc"); \
|
||||
+ }
|
||||
+#else
|
||||
#define NV_VMALLOC(ptr, size) \
|
||||
{ \
|
||||
(ptr) = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL); \
|
||||
VM_ALLOC_RECORD(ptr, size, "vm_vmalloc"); \
|
||||
}
|
||||
+#endif
|
||||
|
||||
#define NV_VFREE(ptr, size) \
|
||||
{ \
|
||||
diff --git a/kernel/nvidia-modules-common.mk b/kernel/nvidia-modules-common.mk
|
||||
index b94591b..0e4c228 100644
|
||||
--- a/kernel/nvidia-modules-common.mk
|
||||
+++ b/kernel/nvidia-modules-common.mk
|
||||
@@ -222,6 +222,7 @@ build-sanity-checks:
|
||||
define BUILD_MODULE_RULE
|
||||
$(1): build-sanity-checks $(3)
|
||||
@echo "NVIDIA: calling KBUILD..."; \
|
||||
+ touch .nv-kernel.o.cmd; \
|
||||
$$(MAKE) "CC=$$(CC)" NV_MODULE_SUFFIX=$$(strip $(2)) $$(KBUILD_PARAMS) modules; \
|
||||
echo "NVIDIA: left KBUILD."; \
|
||||
if ! [ -f $(1) ]; then \
|
||||
diff --git a/kernel/os-mlock.c b/kernel/os-mlock.c
|
||||
index 8a1fa2f..fc50543 100644
|
||||
--- a/kernel/os-mlock.c
|
||||
+++ b/kernel/os-mlock.c
|
||||
@@ -44,11 +44,19 @@ RM_STATUS NV_API_CALL os_lock_user_pages(
|
||||
return rmStatus;
|
||||
}
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
|
||||
+ down_read(&mm->mmap_lock);
|
||||
+ ret = NV_GET_USER_PAGES((unsigned long)address,
|
||||
+ page_count, write, force, user_pages, NULL);
|
||||
+ up_read(&mm->mmap_lock);
|
||||
+ pinned = ret;
|
||||
+#else
|
||||
down_read(&mm->mmap_sem);
|
||||
ret = NV_GET_USER_PAGES((unsigned long)address,
|
||||
page_count, write, force, user_pages, NULL);
|
||||
up_read(&mm->mmap_sem);
|
||||
pinned = ret;
|
||||
+#endif
|
||||
|
||||
if (ret < 0)
|
||||
{
|
||||
diff --git a/kernel/uvm/nvidia_uvm_lite_api.c b/kernel/uvm/nvidia_uvm_lite_api.c
|
||||
index 8448eb6..97a4818 100644
|
||||
--- a/kernel/uvm/nvidia_uvm_lite_api.c
|
||||
+++ b/kernel/uvm/nvidia_uvm_lite_api.c
|
||||
@@ -30,6 +30,10 @@
|
||||
#include "uvm_gpu_ops_tests.h"
|
||||
#endif
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
|
||||
+#define mmap_sem mmap_lock
|
||||
+#endif
|
||||
+
|
||||
//
|
||||
// nvidia_uvm_lite_api.c
|
||||
//
|
||||
--
|
||||
2.29.0
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
From fea401df7500bfbead5a42b1e74560dbddf2f5a3 Mon Sep 17 00:00:00 2001
|
||||
From: graysky <graysky@archlinux.us>
|
||||
Date: Thu, 22 Oct 2020 07:00:35 -0400
|
||||
Subject: [PATCH 3/3] kernel-5.9
|
||||
|
||||
credit: https://github.com/warpme/minimyth2/blob/master/script/nvidia/nvidia-340.108/files/nvidia-340.108-fix-5.9-kernel-compile.patch
|
||||
---
|
||||
kernel/nv-drm.c | 8 ++++++++
|
||||
kernel/nv-linux.h | 9 +++++++--
|
||||
kernel/nv.c | 4 ++++
|
||||
kernel/uvm/nvidia_uvm_linux.h | 2 ++
|
||||
4 files changed, 21 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/nv-drm.c b/kernel/nv-drm.c
|
||||
index 85db07e..f0c1299 100644
|
||||
--- a/kernel/nv-drm.c
|
||||
+++ b/kernel/nv-drm.c
|
||||
@@ -415,7 +415,11 @@ static struct drm_driver nv_drm_driver = {
|
||||
.set_busid = drm_pci_set_busid,
|
||||
#endif
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
+ .gem_free_object_unlocked = nv_gem_free,
|
||||
+#else
|
||||
.gem_free_object = nv_gem_free,
|
||||
+#endif
|
||||
|
||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||
.gem_prime_export = drm_gem_prime_export,
|
||||
@@ -511,8 +515,12 @@ RM_STATUS NV_API_CALL nv_alloc_os_descriptor_handle(
|
||||
|
||||
#if defined(NV_DRM_GEM_OBJECT_PUT_UNLOCKED_PRESENT)
|
||||
drm_gem_object_put_unlocked(&nv_obj->base);
|
||||
+#else
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
+ drm_gem_object_put_locked(&nv_obj->base);
|
||||
#else
|
||||
drm_gem_object_unreference_unlocked(&nv_obj->base);
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
status = RM_OK;
|
||||
diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h
|
||||
index d055552..524a8fe 100644
|
||||
--- a/kernel/nv-linux.h
|
||||
+++ b/kernel/nv-linux.h
|
||||
@@ -136,8 +136,10 @@
|
||||
|
||||
#if defined(NVCPU_X86_64) && !defined(HAVE_COMPAT_IOCTL)
|
||||
#include <linux/syscalls.h> /* sys_ioctl() */
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
|
||||
#include <linux/ioctl32.h> /* register_ioctl32_conversion() */
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#if !defined(NV_FILE_OPERATIONS_HAS_IOCTL) && \
|
||||
!defined(NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL)
|
||||
@@ -2249,10 +2251,13 @@ static inline NvU64 nv_node_end_pfn(int nid)
|
||||
pages, vmas, NULL);
|
||||
|
||||
#else
|
||||
-
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
+ return get_user_pages_remote(mm, start, nr_pages, flags,
|
||||
+ pages, vmas, NULL);
|
||||
+#else
|
||||
return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
|
||||
pages, vmas);
|
||||
-
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
}
|
||||
diff --git a/kernel/nv.c b/kernel/nv.c
|
||||
index a218f83..be4e0f8 100644
|
||||
--- a/kernel/nv.c
|
||||
+++ b/kernel/nv.c
|
||||
@@ -2785,7 +2785,11 @@ nvidia_probe
|
||||
|
||||
#if defined(CONFIG_VGA_ARB)
|
||||
#if defined(VGA_DEFAULT_DEVICE)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
+ vga_get(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK, 0);
|
||||
+#else
|
||||
vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
|
||||
+#endif
|
||||
#endif
|
||||
vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
|
||||
#endif
|
||||
diff --git a/kernel/uvm/nvidia_uvm_linux.h b/kernel/uvm/nvidia_uvm_linux.h
|
||||
index 1625209..efc181f 100644
|
||||
--- a/kernel/uvm/nvidia_uvm_linux.h
|
||||
+++ b/kernel/uvm/nvidia_uvm_linux.h
|
||||
@@ -158,8 +158,10 @@
|
||||
|
||||
#if defined(NVCPU_X86_64) && !defined(HAVE_COMPAT_IOCTL)
|
||||
#include <linux/syscalls.h> /* sys_ioctl() */
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
|
||||
#include <linux/ioctl32.h> /* register_ioctl32_conversion() */
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#if !defined(NV_FILE_OPERATIONS_HAS_IOCTL) && \
|
||||
!defined(NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL)
|
||||
--
|
||||
2.29.0
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
https://github.com/warpme/minimyth2/tree/master/script/nvidia/nvidia-340.108/files
|
||||
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c
|
||||
--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c 2020-12-13 19:10:56.759999937 +0100
|
||||
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c 2020-12-13 19:09:02.039999925 +0100
|
||||
@@ -322,8 +322,11 @@
|
||||
{
|
||||
struct nv_gem_object *nv_obj = container_of(obj, struct nv_gem_object, base);
|
||||
int page_count = obj->size >> PAGE_SHIFT;
|
||||
-
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)
|
||||
+ return drm_prime_pages_to_sg(obj->dev, nv_obj->pages, page_count);
|
||||
+#else
|
||||
return drm_prime_pages_to_sg(nv_obj->pages, page_count);
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void* nv_gem_prime_vmap(
|
||||
@@ -1,174 +0,0 @@
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/conftest.sh NVIDIA-Linux-x86_64-340.108-new/kernel/conftest.sh
|
||||
--- NVIDIA-Linux-x86_64-340.108-old/kernel/conftest.sh 2021-05-24 20:08:18.743742335 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/conftest.sh 2021-05-24 20:13:18.019314390 +0200
|
||||
@@ -1578,21 +1578,21 @@
|
||||
#include <drm/drm_drv.h>
|
||||
#endif
|
||||
|
||||
- #if defined(NV_DRM_DRM_PRIME_H_PRESENT)
|
||||
- #include <drm/drm_prime.h>
|
||||
- #endif
|
||||
-
|
||||
#if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE)
|
||||
#error DRM not enabled
|
||||
#endif
|
||||
+
|
||||
void conftest_drm_available(void) {
|
||||
struct drm_driver drv;
|
||||
- drv.gem_prime_pin = 0;
|
||||
- drv.gem_prime_get_sg_table = 0;
|
||||
- drv.gem_prime_vmap = 0;
|
||||
- drv.gem_prime_vunmap = 0;
|
||||
- (void)drm_gem_prime_import;
|
||||
- (void)drm_gem_prime_export;
|
||||
+
|
||||
+ /* 2013-10-02 1bb72532ac260a2d3982b40bdd4c936d779d0d16 */
|
||||
+ (void)drm_dev_alloc;
|
||||
+
|
||||
+ /* 2013-10-02 c22f0ace1926da399d9a16dfaf09174c1b03594c */
|
||||
+ (void)drm_dev_register;
|
||||
+
|
||||
+ /* 2013-10-02 c3a49737ef7db0bdd4fcf6cf0b7140a883e32b2a */
|
||||
+ (void)drm_dev_unregister;
|
||||
}"
|
||||
|
||||
compile_check_conftest "$CODE" "NV_DRM_AVAILABLE" "" "generic"
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c
|
||||
--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c 2021-05-24 20:08:18.779739237 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c 2021-05-24 20:42:13.443288819 +0200
|
||||
@@ -60,6 +60,8 @@
|
||||
#else
|
||||
#include <drm/drm_agpsupport.h>
|
||||
|
||||
+#include "linux/dma-buf.h"
|
||||
+
|
||||
struct nv_drm_agp_head {
|
||||
struct agp_kern_info agp_info;
|
||||
struct list_head memory;
|
||||
@@ -210,8 +212,10 @@
|
||||
|
||||
/* No locking needed since shadow-attach is single-threaded since it may
|
||||
* only be called from the per-driver module init hook. */
|
||||
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
|
||||
if (drm_core_check_feature(dev, DRIVER_LEGACY))
|
||||
list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list);
|
||||
+#endif
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -239,8 +243,10 @@
|
||||
if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY)))
|
||||
return -EINVAL;
|
||||
|
||||
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
|
||||
/* If not using KMS, fall back to stealth mode manual scanning. */
|
||||
INIT_LIST_HEAD(&driver->legacy_dev_list);
|
||||
+#endif
|
||||
for (i = 0; pdriver->id_table[i].vendor != 0; i++) {
|
||||
pid = &pdriver->id_table[i];
|
||||
|
||||
@@ -273,11 +279,13 @@
|
||||
if (!(driver->driver_features & DRIVER_LEGACY)) {
|
||||
WARN_ON(1);
|
||||
} else {
|
||||
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
|
||||
list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
|
||||
legacy_dev_list) {
|
||||
list_del(&dev->legacy_dev_list);
|
||||
drm_put_dev(dev);
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
DRM_INFO("Module unloaded\n");
|
||||
}
|
||||
@@ -402,6 +410,39 @@
|
||||
.llseek = noop_llseek,
|
||||
};
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
|
||||
+struct sg_table *nv_drm_gem_prime_get_sg_table(struct drm_gem_object *gem)
|
||||
+{
|
||||
+ return nv_gem_prime_get_sg_table(gem);
|
||||
+}
|
||||
+
|
||||
+static int nv_drm_gem_vmap(struct drm_gem_object *gem,
|
||||
+ struct dma_buf_map *map)
|
||||
+{
|
||||
+ map->vaddr = nv_gem_prime_vmap(gem);
|
||||
+ if (map->vaddr == NULL) {
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+ map->is_iomem = true;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void nv_drm_gem_vunmap(struct drm_gem_object *gem,
|
||||
+ struct dma_buf_map *map)
|
||||
+{
|
||||
+ nv_gem_prime_vunmap(gem, map->vaddr);
|
||||
+ map->vaddr = NULL;
|
||||
+}
|
||||
+
|
||||
+static struct drm_gem_object_funcs nv_drm_gem_object_funcs = {
|
||||
+ .free = nv_gem_free,
|
||||
+ .export = drm_gem_prime_export,
|
||||
+ .get_sg_table = nv_drm_gem_prime_get_sg_table,
|
||||
+ .vmap = nv_drm_gem_vmap,
|
||||
+ .vunmap = nv_drm_gem_vunmap,
|
||||
+};
|
||||
+#endif
|
||||
+
|
||||
static struct drm_driver nv_drm_driver = {
|
||||
|
||||
.driver_features = DRIVER_GEM
|
||||
@@ -420,17 +461,19 @@
|
||||
.set_busid = drm_pci_set_busid,
|
||||
#endif
|
||||
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
- .gem_free_object_unlocked = nv_gem_free,
|
||||
-#else
|
||||
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 8, 0)
|
||||
.gem_free_object = nv_gem_free,
|
||||
+#elif LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
|
||||
+ .gem_free_object_unlocked = nv_gem_free,
|
||||
#endif
|
||||
|
||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
|
||||
.gem_prime_export = drm_gem_prime_export,
|
||||
.gem_prime_get_sg_table = nv_gem_prime_get_sg_table,
|
||||
.gem_prime_vmap = nv_gem_prime_vmap,
|
||||
.gem_prime_vunmap = nv_gem_prime_vunmap,
|
||||
+#endif
|
||||
|
||||
.name = "nvidia-drm",
|
||||
.desc = "NVIDIA DRM driver",
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/nv-linux.h NVIDIA-Linux-x86_64-340.108-new/kernel/nv-linux.h
|
||||
--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-linux.h 2021-05-24 20:08:18.775739581 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-linux.h 2021-05-24 20:09:18.748287771 +0200
|
||||
@@ -119,7 +119,9 @@
|
||||
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
|
||||
#include <linux/cpu.h> /* CPU hotplug support */
|
||||
#endif
|
||||
-#include <asm/kmap_types.h> /* page table entry lookup */
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)
|
||||
+ #include <asm/kmap_types.h> /* page table entry lookup */
|
||||
+#endif
|
||||
|
||||
#include <linux/pci.h> /* pci_find_class, etc */
|
||||
#include <linux/interrupt.h> /* tasklets, interrupt helpers */
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/uvm/nvidia_uvm_linux.h NVIDIA-Linux-x86_64-340.108-new/kernel/uvm/nvidia_uvm_linux.h
|
||||
--- NVIDIA-Linux-x86_64-340.108-old/kernel/uvm/nvidia_uvm_linux.h 2021-05-24 20:08:18.775739581 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/uvm/nvidia_uvm_linux.h 2021-05-24 20:09:18.749287739 +0200
|
||||
@@ -141,7 +141,9 @@
|
||||
#if !defined(NV_VMWARE)
|
||||
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
|
||||
#endif
|
||||
-#include <asm/kmap_types.h> /* page table entry lookup */
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)
|
||||
+ #include <asm/kmap_types.h> /* page table entry lookup */
|
||||
+#endif
|
||||
|
||||
#include <linux/interrupt.h> /* tasklets, interrupt helpers */
|
||||
#include <linux/timer.h>
|
||||
@@ -1,213 +0,0 @@
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-no-compat32.5.13/kernel/nv-drm.c NVIDIA-Linux-x86_64-340.108-no-compat32.5.14/kernel/nv-drm.c
|
||||
--- NVIDIA-Linux-x86_64-340.108-no-compat32.5.13/kernel/nv-drm.c 2021-07-25 10:29:29.336505688 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-no-compat32.5.14/kernel/nv-drm.c 2021-09-16 16:49:10.929858547 +0200
|
||||
@@ -57,8 +57,11 @@
|
||||
#if defined(NV_DRM_GET_PCI_DEV_PRESENT)
|
||||
#define nv_drm_get_pci_dev drm_get_pci_dev
|
||||
#else
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
|
||||
#include <drm/drm_agpsupport.h>
|
||||
-
|
||||
+#else
|
||||
+#include <drm/drm_legacy.h>
|
||||
+#endif
|
||||
#include "linux/dma-buf.h"
|
||||
|
||||
struct nv_drm_agp_head {
|
||||
@@ -82,6 +85,11 @@
|
||||
struct list_head head;
|
||||
};
|
||||
|
||||
+struct nv_drm_extra_priv_data {
|
||||
+ struct pci_dev *pdev;
|
||||
+ struct drm_agp_head *agp;
|
||||
+};
|
||||
+
|
||||
/*
|
||||
* Code from drm_agp_init/nv_drm_{free,unbind}_agp
|
||||
* Extracted from commit: 5b8b9d0c6d0e0f1993c6c56deaf9646942c49d94, file: drivers/gpu/drm/drm_agpsupport.c
|
||||
@@ -89,13 +97,14 @@
|
||||
struct drm_agp_head *nv_drm_agp_init(struct drm_device *dev)
|
||||
{
|
||||
struct nv_drm_agp_head *head = NULL;
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
|
||||
head = kzalloc(sizeof(*head), GFP_KERNEL);
|
||||
if (!head)
|
||||
return NULL;
|
||||
- head->bridge = agp_find_bridge(dev->pdev);
|
||||
+ head->bridge = agp_find_bridge(extra->pdev);
|
||||
if (!head->bridge) {
|
||||
- head->bridge = agp_backend_acquire(dev->pdev);
|
||||
+ head->bridge = agp_backend_acquire(extra->pdev);
|
||||
if (!head->bridge) {
|
||||
kfree(head);
|
||||
return NULL;
|
||||
@@ -133,48 +142,71 @@
|
||||
static void nv_drm_pci_agp_init(struct drm_device *dev)
|
||||
{
|
||||
if (drm_core_check_feature(dev, DRIVER_USE_AGP)) {
|
||||
- if (pci_find_capability(dev->pdev, PCI_CAP_ID_AGP))
|
||||
- dev->agp = nv_drm_agp_init(dev);
|
||||
- if (dev->agp) {
|
||||
- dev->agp->agp_mtrr = arch_phys_wc_add(
|
||||
- dev->agp->agp_info.aper_base,
|
||||
- dev->agp->agp_info.aper_size *
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
+
|
||||
+ if (pci_find_capability(extra->pdev, PCI_CAP_ID_AGP))
|
||||
+ extra->agp = nv_drm_agp_init(dev);
|
||||
+ if (extra->agp) {
|
||||
+ extra->agp->agp_mtrr = arch_phys_wc_add(
|
||||
+ extra->agp->agp_info.aper_base,
|
||||
+ extra->agp->agp_info.aper_size *
|
||||
1024 * 1024);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
|
||||
+
|
||||
+#else
|
||||
+/* copied from v5.14.5 */
|
||||
+int nv_drm_legacy_agp_release(struct drm_device *dev)
|
||||
+{
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
+
|
||||
+ if (!extra->agp || !extra->agp->acquired)
|
||||
+ return -EINVAL;
|
||||
+ agp_backend_release(extra->agp->bridge);
|
||||
+ extra->agp->acquired = 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
void nv_drm_legacy_agp_clear(struct drm_device *dev)
|
||||
{
|
||||
struct nv_drm_agp_mem *entry, *tempe;
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
|
||||
- if (!dev->agp)
|
||||
+ if (!extra->agp)
|
||||
return;
|
||||
if (!drm_core_check_feature(dev, DRIVER_LEGACY))
|
||||
return;
|
||||
|
||||
- list_for_each_entry_safe(entry, tempe, &dev->agp->memory, head) {
|
||||
+ list_for_each_entry_safe(entry, tempe, &extra->agp->memory, head) {
|
||||
if (entry->bound)
|
||||
nv_drm_unbind_agp(entry->memory);
|
||||
nv_drm_free_agp(entry->memory, entry->pages);
|
||||
kfree(entry);
|
||||
}
|
||||
- INIT_LIST_HEAD(&dev->agp->memory);
|
||||
+ INIT_LIST_HEAD(&extra->agp->memory);
|
||||
|
||||
- if (dev->agp->acquired)
|
||||
+ if (extra->agp->acquired)
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
|
||||
drm_agp_release(dev);
|
||||
-
|
||||
- dev->agp->acquired = 0;
|
||||
- dev->agp->enabled = 0;
|
||||
+#else
|
||||
+ nv_drm_legacy_agp_release(dev);
|
||||
+#endif
|
||||
+ extra->agp->acquired = 0;
|
||||
+ extra->agp->enabled = 0;
|
||||
}
|
||||
|
||||
void nv_drm_pci_agp_destroy(struct drm_device *dev)
|
||||
{
|
||||
- if (dev->agp) {
|
||||
- arch_phys_wc_del(dev->agp->agp_mtrr);
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
+ if (extra->agp) {
|
||||
+ arch_phys_wc_del(extra->agp->agp_mtrr);
|
||||
nv_drm_legacy_agp_clear(dev);
|
||||
- kfree(dev->agp);
|
||||
- dev->agp = NULL;
|
||||
+ kfree(extra->agp);
|
||||
+ extra->agp = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,6 +215,7 @@
|
||||
struct drm_driver *driver)
|
||||
{
|
||||
struct drm_device *dev;
|
||||
+ struct nv_drm_extra_priv_data *extra;
|
||||
int ret;
|
||||
|
||||
DRM_DEBUG("\n");
|
||||
@@ -191,11 +224,18 @@
|
||||
if (IS_ERR(dev))
|
||||
return PTR_ERR(dev);
|
||||
|
||||
+ extra = kzalloc(sizeof(*extra), GFP_KERNEL);
|
||||
+ if (IS_ERR(extra))
|
||||
+ goto err_free;
|
||||
+
|
||||
+ extra->pdev = pdev;
|
||||
+
|
||||
ret = pci_enable_device(pdev);
|
||||
if (ret)
|
||||
- goto err_free;
|
||||
+ goto err_free2;
|
||||
|
||||
- dev->pdev = pdev;
|
||||
+ /* use the not used (i hope) dev_private to store deprecated/legacy pointers */
|
||||
+ dev->dev_private = extra;
|
||||
#ifdef __alpha__
|
||||
dev->hose = pdev->sysdata;
|
||||
#endif
|
||||
@@ -221,6 +261,8 @@
|
||||
err_agp:
|
||||
nv_drm_pci_agp_destroy(dev);
|
||||
pci_disable_device(pdev);
|
||||
+err_free2:
|
||||
+ kfree(extra);
|
||||
err_free:
|
||||
drm_dev_put(dev);
|
||||
return ret;
|
||||
@@ -303,10 +345,11 @@
|
||||
)
|
||||
{
|
||||
nv_linux_state_t *nvl;
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
|
||||
for (nvl = nv_linux_devices; nvl != NULL; nvl = nvl->next)
|
||||
{
|
||||
- if (nvl->dev == dev->pdev)
|
||||
+ if (nvl->dev == extra->pdev)
|
||||
{
|
||||
nvl->drm = dev;
|
||||
return 0;
|
||||
@@ -327,10 +370,11 @@
|
||||
)
|
||||
{
|
||||
nv_linux_state_t *nvl;
|
||||
+ struct nv_drm_extra_priv_data *extra = dev->dev_private;
|
||||
|
||||
for (nvl = nv_linux_devices; nvl != NULL; nvl = nvl->next)
|
||||
{
|
||||
- if (nvl->dev == dev->pdev)
|
||||
+ if (nvl->dev == extra->pdev)
|
||||
{
|
||||
BUG_ON(nvl->drm != dev);
|
||||
nvl->drm = NULL;
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-no-compat32.5.13/kernel/os-interface.c NVIDIA-Linux-x86_64-340.108-no-compat32.5.14/kernel/os-interface.c
|
||||
--- NVIDIA-Linux-x86_64-340.108-no-compat32.5.13/kernel/os-interface.c 2021-07-25 10:29:29.083168593 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-no-compat32.5.14/kernel/os-interface.c 2021-09-16 13:17:43.345906445 +0200
|
||||
@@ -549,7 +549,11 @@
|
||||
// the requested timeout has expired, loop until less
|
||||
// than a jiffie of the desired delay remains.
|
||||
//
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0)
|
||||
+ current->__state = TASK_INTERRUPTIBLE;
|
||||
+#else
|
||||
current->state = TASK_INTERRUPTIBLE;
|
||||
+#endif
|
||||
do
|
||||
{
|
||||
schedule_timeout(jiffies);
|
||||
@@ -1,14 +0,0 @@
|
||||
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c
|
||||
--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c 2021-11-06 20:08:18.779739237 +0200
|
||||
+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c 2021-11-06 20:42:13.443288819 +0200
|
||||
@@ -529,7 +529,9 @@ RM_STATUS NV_API_CALL nv_alloc_os_descri
|
||||
#if defined(NV_DRM_GEM_OBJECT_PUT_UNLOCKED_PRESENT)
|
||||
drm_gem_object_put_unlocked(&nv_obj->base);
|
||||
#else
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0)
|
||||
+ drm_gem_object_put(&nv_obj->base);
|
||||
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||||
drm_gem_object_put_locked(&nv_obj->base);
|
||||
#else
|
||||
drm_gem_object_unreference_unlocked(&nv_obj->base);
|
||||
@@ -1,30 +0,0 @@
|
||||
--- a/kernel/os-interface.h 2019-12-11 22:04:24.000000000 +0000
|
||||
+++ b/kernel/os-interface.h 2022-01-10 02:04:26.740899810 +0000
|
||||
@@ -24,7 +24,12 @@
|
||||
* *
|
||||
\***************************************************************************/
|
||||
|
||||
+#include <linux/version.h>
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)
|
||||
+#include <linux/stdarg.h>
|
||||
+#else
|
||||
#include <stdarg.h>
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Define away Microsoft compiler extensions when possible
|
||||
--- a/kernel/nv.h 2019-12-11 22:04:24.000000000 +0000
|
||||
+++ b/kernel/nv.h 2022-01-10 02:29:07.828733372 +0000
|
||||
@@ -13,7 +13,12 @@
|
||||
#define _NV_H_
|
||||
|
||||
#include <nvtypes.h>
|
||||
+#include <linux/version.h>
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0)
|
||||
+#include <linux/stdarg.h>
|
||||
+#else
|
||||
#include <stdarg.h>
|
||||
+#endif
|
||||
|
||||
#if !defined(NV_MIN)
|
||||
#define NV_MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))
|
||||
@@ -1,18 +0,0 @@
|
||||
--- a/kernel/nv-linux.h 2022-02-20 00:41:53.585928825 +0000
|
||||
+++ b/kernel/nv-linux.h 2022-02-20 00:43:04.285797471 +0000
|
||||
@@ -2051,11 +2051,15 @@
|
||||
__entry; \
|
||||
})
|
||||
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0)
|
||||
#if defined(NV_PDE_DATA_PRESENT)
|
||||
# define NV_PDE_DATA(inode) PDE_DATA(inode)
|
||||
#else
|
||||
# define NV_PDE_DATA(inode) PDE(inode)->data
|
||||
#endif
|
||||
+#else
|
||||
+# define NV_PDE_DATA(inode) inode->i_private
|
||||
+#endif
|
||||
|
||||
#if defined(NV_PROC_REMOVE_PRESENT)
|
||||
# define NV_REMOVE_PROC_ENTRY(entry) \
|
||||
@@ -1,64 +0,0 @@
|
||||
diff -Nur a/kernel/nv-vm.c b/kernel/nv-vm.c
|
||||
--- a/kernel/nv-vm.c 2019-12-11 22:04:24.000000000 +0000
|
||||
+++ b/kernel/nv-vm.c 2022-04-25 01:28:55.889120175 +0000
|
||||
@@ -169,12 +169,12 @@
|
||||
|
||||
static inline int nv_map_sg(struct pci_dev *dev, struct scatterlist *sg)
|
||||
{
|
||||
- return pci_map_sg(dev, sg, 1, PCI_DMA_BIDIRECTIONAL);
|
||||
+ return dma_map_sg(&dev->dev, sg, 1, DMA_BIDIRECTIONAL);
|
||||
}
|
||||
|
||||
static inline void nv_unmap_sg(struct pci_dev *dev, struct scatterlist *sg)
|
||||
{
|
||||
- pci_unmap_sg(dev, sg, 1, PCI_DMA_BIDIRECTIONAL);
|
||||
+ dma_unmap_sg(&dev->dev, sg, 1, DMA_BIDIRECTIONAL);
|
||||
}
|
||||
|
||||
#define NV_MAP_SG_MAX_RETRIES 16
|
||||
--- a/kernel/nv-dma.c 2019-12-11 22:04:24.000000000 +0000
|
||||
+++ b/kernel/nv-dma.c 2022-04-25 01:52:11.243235749 +0000
|
||||
@@ -136,10 +136,10 @@
|
||||
return status;
|
||||
}
|
||||
|
||||
- dma_map->sg_map_count = pci_map_sg(dma_map->dev,
|
||||
+ dma_map->sg_map_count = dma_map_sg(&dma_map->dev->dev,
|
||||
NV_DMA_MAP_SCATTERLIST(dma_map),
|
||||
NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map),
|
||||
- PCI_DMA_BIDIRECTIONAL);
|
||||
+ DMA_BIDIRECTIONAL);
|
||||
if (dma_map->sg_map_count == 0)
|
||||
{
|
||||
nv_printf(NV_DBG_ERRORS,
|
||||
@@ -211,8 +211,8 @@
|
||||
|
||||
if (dma_map->sg_map_count != 0)
|
||||
{
|
||||
- pci_unmap_sg(dma_map->dev, NV_DMA_MAP_SCATTERLIST(dma_map),
|
||||
- NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map), PCI_DMA_BIDIRECTIONAL);
|
||||
+ dma_unmap_sg(&dma_map->dev->dev, NV_DMA_MAP_SCATTERLIST(dma_map),
|
||||
+ NV_DMA_MAP_SCATTERLIST_LENGTH(dma_map), DMA_BIDIRECTIONAL);
|
||||
}
|
||||
|
||||
*priv = dma_map->user_pages;
|
||||
--- a/kernel/nv-drm.c 2022-04-25 01:59:40.255544206 +0000
|
||||
+++ b/kernel/nv-drm.c 2022-04-25 02:08:28.231217905 +0000
|
||||
@@ -459,7 +459,7 @@
|
||||
}
|
||||
|
||||
static int nv_drm_gem_vmap(struct drm_gem_object *gem,
|
||||
- struct dma_buf_map *map)
|
||||
+ struct iosys_map *map)
|
||||
{
|
||||
map->vaddr = nv_gem_prime_vmap(gem);
|
||||
if (map->vaddr == NULL) {
|
||||
@@ -470,7 +470,7 @@
|
||||
}
|
||||
|
||||
static void nv_drm_gem_vunmap(struct drm_gem_object *gem,
|
||||
- struct dma_buf_map *map)
|
||||
+ struct iosys_map *map)
|
||||
{
|
||||
nv_gem_prime_vunmap(gem, map->vaddr);
|
||||
map->vaddr = NULL;
|
||||
@@ -1,13 +0,0 @@
|
||||
--- a/kernel/nv-acpi.c 2019-12-11 22:04:24.000000000 +0000
|
||||
+++ b/kernel/nv-acpi.c 2022-08-29 08:50:01.383913160 +0000
|
||||
@@ -16,6 +16,9 @@
|
||||
#include "nv-reg.h"
|
||||
|
||||
-#if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED)
|
||||
+#include <linux/version.h>
|
||||
+// Rel.commit "ACPI: bus: Drop unused list heads from struct acpi_device" (Rafael J. Wysocki, 4 Jun 2022)
|
||||
+// Disable ACPI support due to more GPL stuff (acpi_dev_for_each_child is only GPL-exported)
|
||||
+#if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0))
|
||||
static RM_STATUS nv_acpi_extract_integer (const union acpi_object *, void *, NvU32, NvU32 *);
|
||||
static RM_STATUS nv_acpi_extract_buffer (const union acpi_object *, void *, NvU32, NvU32 *);
|
||||
static RM_STATUS nv_acpi_extract_package (const union acpi_object *, void *, NvU32, NvU32 *);
|
||||
@@ -1,33 +0,0 @@
|
||||
--- a/kernel/nv-mmap.c 2019-12-11 22:04:24.000000000 +0000
|
||||
+++ b/kernel/nv-mmap.c 2023-04-24 11:43:59.912426877 +0000
|
||||
@@ -312,7 +312,7 @@
|
||||
goto done;
|
||||
}
|
||||
|
||||
- vma->vm_flags |= VM_IO;
|
||||
+ vm_flags_set(vma, VM_IO);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -363,8 +363,8 @@
|
||||
|
||||
NV_PRINT_AT(NV_DBG_MEMINFO, at);
|
||||
|
||||
- vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
|
||||
- vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
|
||||
+ vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
|
||||
+ vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
|
||||
}
|
||||
|
||||
if (status == 0)
|
||||
@@ -374,8 +374,8 @@
|
||||
if ((prot & NV_PROTECT_WRITEABLE) == 0)
|
||||
{
|
||||
vma->vm_page_prot = NV_PGPROT_READ_ONLY(vma->vm_page_prot);
|
||||
- vma->vm_flags &= ~VM_WRITE;
|
||||
- vma->vm_flags &= ~VM_MAYWRITE;
|
||||
+ vm_flags_clear(vma, VM_WRITE);
|
||||
+ vm_flags_clear(vma, VM_MAYWRITE);
|
||||
}
|
||||
|
||||
vma->vm_ops = &nv_vm_ops;
|
||||
@@ -1,82 +0,0 @@
|
||||
From 0ca9614e5b074d3dd01e95f47b3555f48e74f622 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
|
||||
Date: Wed, 17 May 2023 21:54:08 +0000
|
||||
Subject: [PATCH] Tentative fix for NVIDIA 470.182.03 driver for Linux 6.5-rc1
|
||||
|
||||
---
|
||||
kernel/nv-linux.h | 45 +++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 43 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h
|
||||
index 54f6f60..25333e8 100644
|
||||
--- a/kernel/nv-linux.h
|
||||
+++ b/kernel/nv-linux.h
|
||||
@@ -11,6 +11,7 @@
|
||||
#ifndef _NV_LINUX_H_
|
||||
#define _NV_LINUX_H_
|
||||
|
||||
+#include <linux/version.h>
|
||||
#include "nv.h"
|
||||
#include "conftest.h"
|
||||
|
||||
@@ -2158,7 +2159,27 @@ typedef int vm_fault_t;
|
||||
*
|
||||
*/
|
||||
|
||||
-#if defined(NV_GET_USER_PAGES_HAS_TASK_STRUCT)
|
||||
+// Rel. commit. "mm/gup: remove unused vmas parameter from get_user_pages()" (Lorenzo Stoakes, 14 May 2023)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0)
|
||||
+#include <linux/mm.h>
|
||||
+
|
||||
+static inline long NV_GET_USER_PAGES(unsigned long start,
|
||||
+ unsigned long nr_pages,
|
||||
+ int write,
|
||||
+ int force,
|
||||
+ struct page **pages,
|
||||
+ struct vm_area_struct **vmas)
|
||||
+{
|
||||
+ unsigned int flags = 0;
|
||||
+
|
||||
+ if (write)
|
||||
+ flags |= FOLL_WRITE;
|
||||
+ if (force)
|
||||
+ flags |= FOLL_FORCE;
|
||||
+
|
||||
+ return get_user_pages(start, nr_pages, flags, pages);
|
||||
+}
|
||||
+#elif defined(NV_GET_USER_PAGES_HAS_TASK_STRUCT)
|
||||
#if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
|
||||
#define NV_GET_USER_PAGES(start, nr_pages, write, force, pages, vmas) \
|
||||
get_user_pages(current, current->mm, start, nr_pages, write, force, pages, vmas)
|
||||
@@ -2231,7 +2252,27 @@ typedef int vm_fault_t;
|
||||
* 2016 Dec 14:5b56d49fc31dbb0487e14ead790fc81ca9fb2c99
|
||||
*/
|
||||
|
||||
-#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
|
||||
+// Rel. commit. "mm/gup: remove unused vmas parameter from get_user_pages_remote()" (Lorenzo Stoakes, 14 May 2023)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 5, 0)
|
||||
+static inline long NV_GET_USER_PAGES_REMOTE(struct task_struct *tsk,
|
||||
+ struct mm_struct *mm,
|
||||
+ unsigned long start,
|
||||
+ unsigned long nr_pages,
|
||||
+ int write,
|
||||
+ int force,
|
||||
+ struct page **pages,
|
||||
+ struct vm_area_struct **vmas)
|
||||
+{
|
||||
+ unsigned int flags = 0;
|
||||
+
|
||||
+ if (write)
|
||||
+ flags |= FOLL_WRITE;
|
||||
+ if (force)
|
||||
+ flags |= FOLL_FORCE;
|
||||
+
|
||||
+ return get_user_pages_remote(mm, start, nr_pages, flags, pages, NULL);
|
||||
+}
|
||||
+#elif defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
|
||||
#if defined (NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS)
|
||||
#define NV_GET_USER_PAGES_REMOTE get_user_pages_remote
|
||||
#else
|
||||
--
|
||||
2.41.0
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
--- a/kernel/nv-drm.c 2023-10-22 05:50:14.478811549 +0000
|
||||
+++ b/kernel/nv-drm.c 2023-10-22 06:00:35.172438953 +0000
|
||||
@@ -509,7 +509,9 @@
|
||||
.gem_free_object_unlocked = nv_gem_free,
|
||||
#endif
|
||||
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0)
|
||||
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||||
+#endif
|
||||
#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
|
||||
.gem_prime_export = drm_gem_prime_export,
|
||||
.gem_prime_get_sg_table = nv_gem_prime_get_sg_table,
|
||||
@@ -1 +0,0 @@
|
||||
../xf86-video-nvidia/udev.d/
|
||||
@@ -57,11 +57,8 @@ with open(__rules__, 'w') as f:
|
||||
f.write('LABEL="subsystem_pci"\n')
|
||||
for id in unique_ids:
|
||||
f.write('ATTR{device}=="0x' + str(id) + '", GOTO="configure_nvidia"\n')
|
||||
f.write('GOTO="configure_nvidia-legacy"\n\n')
|
||||
f.write('GOTO="end_video"\n\n')
|
||||
f.write('LABEL="configure_nvidia"\n')
|
||||
f.write('ENV{xorg_driver}="nvidia", TAG+="systemd", ENV{SYSTEMD_WANTS}+="xorg-configure@nvidia.service"\n')
|
||||
f.write('GOTO="end_video"\n\n')
|
||||
f.write('LABEL="configure_nvidia-legacy"\n')
|
||||
f.write('ENV{xorg_driver}="nvidia", TAG+="systemd", ENV{SYSTEMD_WANTS}+="xorg-configure@nvidia-legacy.service"\n')
|
||||
f.write('GOTO="end_video"\n\n')
|
||||
f.write('LABEL="end_video"\n')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user