commit ed787186ec6a31652f31bcfe96d5982ceeb9d197
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Mon Aug 19 18:11:25 2024 +0100
Enable nvidia fbdev
kernel-611-framebuffer.patch | 111 +++++++++++++++++++++++++++++++++++++++++++
make_modeset_default.patch | 26 ++++++----
nvidia-open-kmod.spec | 8 +++-
3 files changed, 135 insertions(+), 10 deletions(-)
---
diff --git a/kernel-611-framebuffer.patch b/kernel-611-framebuffer.patch
new file mode 100644
index 0000000..281e1cf
--- /dev/null
+++ b/kernel-611-framebuffer.patch
@@ -0,0 +1,111 @@
+From 08ff2fc141df99bb279ce872bb390dff22633a8f Mon Sep 17 00:00:00 2001
+From: Leigh Scott <leigh123linux(a)gmail.com>
+Date: Sat, 17 Aug 2024 17:59:50 +0100
+Subject: [PATCH] Fix 6.11 drm_fbdev_generic.h rename to drm_fbdev_ttm.h
+
+---
+ kernel-open/conftest.sh | 19 +++++++++++++++++++
+ kernel-open/header-presence-tests.mk | 1 +
+ kernel-open/nvidia-drm/nvidia-drm-drv.c | 8 ++++++++
+ .../nvidia-drm/nvidia-drm-os-interface.h | 5 ++++-
+ kernel-open/nvidia-drm/nvidia-drm-sources.mk | 1 +
+ 5 files changed, 33 insertions(+), 1 deletion(-)
+
+diff --git a/kernel-open/conftest.sh b/kernel-open/conftest.sh
+index 1226cea2b..4398e435f 100755
+--- a/kernel-open/conftest.sh
++++ b/kernel-open/conftest.sh
+@@ -6610,6 +6610,25 @@ compile_test() {
+ compile_check_conftest "$CODE"
"NV_DRM_FBDEV_GENERIC_SETUP_PRESENT" "" "functions"
+ ;;
+
++ drm_fbdev_ttm_setup)
++ #
++ # Determine whether drm_fbdev_ttm_setup is present.
++ #
++ # Added by commit 9060d7f49376 ("drm/fb-helper: Finish the
++ # generic fbdev emulation") in v4.19.
++ #
++ CODE="
++ #include <drm/drm_fb_helper.h>
++ #if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT)
++ #include <drm/drm_fbdev_ttm.h>
++ #endif
++ void conftest_drm_fbdev_ttm_setup(void) {
++ drm_fbdev_ttm_setup();
++ }"
++
++ compile_check_conftest "$CODE"
"NV_DRM_FBDEV_TTM_SETUP_PRESENT" "" "functions"
++ ;;
++
+ drm_aperture_remove_conflicting_pci_framebuffers)
+ #
+ # Determine whether drm_aperture_remove_conflicting_pci_framebuffers is
present.
+diff --git a/kernel-open/header-presence-tests.mk b/kernel-open/header-presence-tests.mk
+index e8d2e02b3..40204ae48 100644
+--- a/kernel-open/header-presence-tests.mk
++++ b/kernel-open/header-presence-tests.mk
+@@ -15,6 +15,7 @@ NV_HEADER_PRESENCE_TESTS = \
+ drm/drm_atomic_uapi.h \
+ drm/drm_drv.h \
+ drm/drm_fbdev_generic.h \
++ drm/drm_fbdev_ttm.h \
+ drm/drm_framebuffer.h \
+ drm/drm_connector.h \
+ drm/drm_probe_helper.h \
+diff --git a/kernel-open/nvidia-drm/nvidia-drm-drv.c
b/kernel-open/nvidia-drm/nvidia-drm-drv.c
+index 359ff0c47..c80d2d76c 100644
+--- a/kernel-open/nvidia-drm/nvidia-drm-drv.c
++++ b/kernel-open/nvidia-drm/nvidia-drm-drv.c
+@@ -73,6 +73,10 @@
+ #include <drm/drm_fbdev_generic.h>
+ #endif
+
++#if defined(NV_DRM_DRM_FBDEV_TTM_H_PRESENT)
++#include <drm/drm_fbdev_ttm.h>
++#endif
++
+ #include <linux/pci.h>
+ #include <linux/workqueue.h>
+
+@@ -1851,7 +1855,11 @@ void nv_drm_register_drm_device(const nv_gpu_info_t *gpu_info)
+ drm_aperture_remove_conflicting_pci_framebuffers(pdev, nv_drm_driver.name);
+ #endif
+ }
++#if defined(NV_DRM_FBDEV_TTM_AVAILABLE)
++ drm_fbdev_ttm_setup(dev, 32);
++#else
+ drm_fbdev_generic_setup(dev, 32);
++#endif
+ }
+ #endif /* defined(NV_DRM_FBDEV_GENERIC_AVAILABLE) */
+
+diff --git a/kernel-open/nvidia-drm/nvidia-drm-os-interface.h
b/kernel-open/nvidia-drm/nvidia-drm-os-interface.h
+index 6f8cfea91..55ea8a2f9 100644
+--- a/kernel-open/nvidia-drm/nvidia-drm-os-interface.h
++++ b/kernel-open/nvidia-drm/nvidia-drm-os-interface.h
+@@ -58,8 +58,11 @@ typedef struct nv_timer nv_drm_timer;
+ #error "Need to define kernel timer callback primitives for this OS"
+ #endif
+
+-#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) &&
defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT)
++#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) ||
defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) &&
defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT)
+ #define NV_DRM_FBDEV_GENERIC_AVAILABLE
++#if defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT)
++#define NV_DRM_FBDEV_TTM_AVAILABLE
++#endif
+ #endif
+
+ struct page;
+diff --git a/kernel-open/nvidia-drm/nvidia-drm-sources.mk
b/kernel-open/nvidia-drm/nvidia-drm-sources.mk
+index 7ef0c5b8f..247096b70 100644
+--- a/kernel-open/nvidia-drm/nvidia-drm-sources.mk
++++ b/kernel-open/nvidia-drm/nvidia-drm-sources.mk
+@@ -67,6 +67,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += fence_set_error
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += sync_file_get_fence
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_aperture_remove_conflicting_pci_framebuffers
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_generic_setup
++NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fbdev_ttm_setup
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_connector_attach_hdr_output_metadata_property
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_helper_crtc_enable_color_mgmt
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_crtc_enable_color_mgmt
diff --git a/make_modeset_default.patch b/make_modeset_default.patch
index 08904d8..bdf8a6b 100644
--- a/make_modeset_default.patch
+++ b/make_modeset_default.patch
@@ -1,7 +1,6 @@
-diff -uNrp a/kernel-open/nvidia-drm/nvidia-drm-linux.c
b/kernel-open/nvidia-drm/nvidia-drm-linux.c
---- a/kernel-open/nvidia-drm/nvidia-drm-linux.c 2024-04-25 15:24:58.000000000 +0100
-+++ b/kernel-open/nvidia-drm/nvidia-drm-linux.c 2024-05-11 13:57:02.979853843 +0100
-@@ -31,7 +31,7 @@
+--- a/kernel-open/nvidia-drm/nvidia-drm-linux.c
++++ b/kernel-open/nvidia-drm/nvidia-drm-linux.c
+@@ -31,13 +31,13 @@
MODULE_PARM_DESC(
modeset,
@@ -10,15 +9,24 @@ diff -uNrp a/kernel-open/nvidia-drm/nvidia-drm-linux.c
b/kernel-open/nvidia-drm/
module_param_named(modeset, nv_drm_modeset_module_param, bool, 0400);
#if defined(NV_DRM_FBDEV_GENERIC_AVAILABLE)
-diff -uNrp a/kernel-open/nvidia-drm/nvidia-drm-os-interface.c
b/kernel-open/nvidia-drm/nvidia-drm-os-interface.c
---- a/kernel-open/nvidia-drm/nvidia-drm-os-interface.c 2024-04-25 15:24:58.000000000
+0100
-+++ b/kernel-open/nvidia-drm/nvidia-drm-os-interface.c 2024-05-11 13:58:02.537871953
+0100
-@@ -41,7 +41,7 @@
+ MODULE_PARM_DESC(
+ fbdev,
+- "Create a framebuffer device (1 = enable, 0 = disable (default))
(EXPERIMENTAL)");
++ "Create a framebuffer device (1 = enable (default), 0 = disable)
(EXPERIMENTAL)");
+ module_param_named(fbdev, nv_drm_fbdev_module_param, bool, 0400);
+ #endif
+
+--- a/kernel-open/nvidia-drm/nvidia-drm-os-interface.c
++++ b/kernel-open/nvidia-drm/nvidia-drm-os-interface.c
+@@ -41,8 +41,8 @@
#include <drm/drmP.h>
#endif
-bool nv_drm_modeset_module_param = false;
+-bool nv_drm_fbdev_module_param = false;
+bool nv_drm_modeset_module_param = true;
- bool nv_drm_fbdev_module_param = false;
++bool nv_drm_fbdev_module_param = true;
void *nv_drm_calloc(size_t nmemb, size_t size)
+ {
+
diff --git a/nvidia-open-kmod.spec b/nvidia-open-kmod.spec
index c8a5c94..37863ee 100644
--- a/nvidia-open-kmod.spec
+++ b/nvidia-open-kmod.spec
@@ -12,7 +12,7 @@ Name: nvidia-open-kmod
Epoch: 3
Version: 560.31.02
# Taken over by kmodtool
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: NVIDIA open display driver kernel module
License: GPLv2 and MIT
URL:
https://github.com/NVIDIA/open-gpu-kernel-modules
@@ -20,6 +20,7 @@ URL:
https://github.com/NVIDIA/open-gpu-kernel-modules
Source0: %{url}/archive/%{version}/open-gpu-kernel-modules-%{version}.tar.gz
Source11: nvidia-open-kmodtool-excludekernel-filterfile
Patch0: make_modeset_default.patch
+Patch1: %{url}/pull/692.patch#/kernel-611-framebuffer.patch
ExclusiveArch: x86_64 aarch64
@@ -47,6 +48,7 @@ echo "Using original nvidia defaults"
echo "Set nvidia to fbdev=1 modeset=1"
%patch 0 -p1 -d open-gpu-kernel-modules-%{version}
%endif
+%patch 1 -p1 -d open-gpu-kernel-modules-%{version}
for kernel_version in %{?kernel_versions} ; do
cp -a open-gpu-kernel-modules-%{version} _kmod_build_${kernel_version%%___*}
@@ -81,6 +83,10 @@ done
%changelog
+* Mon Aug 19 2024 Leigh Scott <leigh123linux(a)gmail.com> - 3:560.31.02-2
+- Enable nvidia fbdev
+- Fix nvidia framebuffer with 6.11rc
+
* Tue Aug 06 2024 Leigh Scott <leigh123linux(a)gmail.com> - 3:560.31.02-1
- Update to 560.31.02 beta