-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
507 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
From 74962a62abfc350c26d1cf7cc066ef7113a30108 Mon Sep 17 00:00:00 2001 | ||
From: xtex <[email protected]> | ||
Date: Sat, 14 Dec 2024 12:39:40 +0800 | ||
Subject: [PATCH] Fix symbolic links for Linux kernel 6.13-rc1 | ||
|
||
Cherry-pick of abc88d52ee5e86decd5e98b3223d3feec0dd66bc from nvidia-driver tracking repo. | ||
|
||
Link: https://gist.github.com/joanbm/d1f89391a4b20f4b56ba931ef6ca62da | ||
Link: https://github.com/NVIDIA/open-gpu-kernel-modules/issues/747 | ||
Author: Joan Bruguera <[email protected]> | ||
--- | ||
kernel/nvidia-modeset/nvidia-modeset.Kbuild | 8 +++++--- | ||
kernel/nvidia/nvidia.Kbuild | 8 +++++--- | ||
2 files changed, 10 insertions(+), 6 deletions(-) | ||
|
||
diff --git a/kernel/nvidia-modeset/nvidia-modeset.Kbuild b/kernel/nvidia-modeset/nvidia-modeset.Kbuild | ||
index 9698b59e2..d0c244f62 100644 | ||
--- a/kernel/nvidia-modeset/nvidia-modeset.Kbuild | ||
+++ b/kernel/nvidia-modeset/nvidia-modeset.Kbuild | ||
@@ -40,13 +40,15 @@ NV_KERNEL_MODULE_TARGETS += $(NVIDIA_MODESET_KO) | ||
NVIDIA_MODESET_BINARY_OBJECT := $(src)/nvidia-modeset/nv-modeset-kernel.o_binary | ||
NVIDIA_MODESET_BINARY_OBJECT_O := nvidia-modeset/nv-modeset-kernel.o | ||
|
||
-quiet_cmd_symlink = SYMLINK $@ | ||
-cmd_symlink = ln -sf $< $@ | ||
+# Rel. commit 80f289101690 "kbuild: change working directory to external module directory with M=" (Masahiro Yamada, 10 Nov 2024) | ||
+# Ensure `$<` is absolute, since the link target is resolved relative to its path, not from where `ln` is run from. | ||
+quiet_cmd_symlinkabs = SYMLINK $@ | ||
+cmd_symlinkabs = ln -sf $(abspath $<) $@ | ||
|
||
targets += $(NVIDIA_MODESET_BINARY_OBJECT_O) | ||
|
||
$(obj)/$(NVIDIA_MODESET_BINARY_OBJECT_O): $(NVIDIA_MODESET_BINARY_OBJECT) FORCE | ||
- $(call if_changed,symlink) | ||
+ $(call if_changed,symlinkabs) | ||
|
||
nvidia-modeset-y += $(NVIDIA_MODESET_BINARY_OBJECT_O) | ||
|
||
diff --git a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild | ||
index ea4ef5bad..4262c6f35 100644 | ||
--- a/kernel/nvidia/nvidia.Kbuild | ||
+++ b/kernel/nvidia/nvidia.Kbuild | ||
@@ -40,13 +40,15 @@ NVIDIA_KO = nvidia/nvidia.ko | ||
NVIDIA_BINARY_OBJECT := $(src)/nvidia/nv-kernel.o_binary | ||
NVIDIA_BINARY_OBJECT_O := nvidia/nv-kernel.o | ||
|
||
-quiet_cmd_symlink = SYMLINK $@ | ||
- cmd_symlink = ln -sf $< $@ | ||
+# Rel. commit 80f289101690 "kbuild: change working directory to external module directory with M=" (Masahiro Yamada, 10 Nov 2024) | ||
+# Ensure `$<` is absolute, since the link target is resolved relative to its path, not from where `ln` is run from. | ||
+quiet_cmd_symlinkabs = SYMLINK $@ | ||
+ cmd_symlinkabs = ln -sf $(abspath $<) $@ | ||
|
||
targets += $(NVIDIA_BINARY_OBJECT_O) | ||
|
||
$(obj)/$(NVIDIA_BINARY_OBJECT_O): $(NVIDIA_BINARY_OBJECT) FORCE | ||
- $(call if_changed,symlink) | ||
+ $(call if_changed,symlinkabs) | ||
|
||
nvidia-y += $(NVIDIA_BINARY_OBJECT_O) | ||
|
153 changes: 153 additions & 0 deletions
153
patches/nvidia/6.13/0002-FROM-AOSC-Use-linux-aperture.c-for-removing-conflict.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
From 8113cd50461f05da52b66934237415dd303ec55c Mon Sep 17 00:00:00 2001 | ||
From: Bingwu Zhang <[email protected]> | ||
Date: Sat, 7 Dec 2024 23:01:26 +0800 | ||
Subject: [PATCH 2/3] FROM AOSC: Use linux/aperture.c for removing conflicting | ||
PCI devices on Linux 6.13.0-rc1+ | ||
X-Developer-Signature: v=1; a=openpgp-sha256; l=6111; [email protected]; | ||
h=from:subject; bh=hS408kVBp8zz0JO5do1a5Ut1vawCN67uYWAOfNTDy/w=; | ||
b=owGbwMvMwCW2U4Ij7wZL9ETG02pJDOkhRf8j7mS/f32ZLdl9b2TWxCs3m5lyr+aoKs8zKJFn7 | ||
/OcNSmho5SFQYyLQVZMkaXIsMGbVSedX3RZuSzMHFYmkCEMXJwCMBHD1YwMhyfeyKryPeXAv2pm | ||
q5nasVPaO/YZnf4Q8X6PiPPvW3+PcDIy3HF1/3BpUxDXm5sWDPxPGJp/l2X9OHr21zPZv7ZrCmd | ||
M5AEA | ||
X-Developer-Key: [email protected]; a=openpgp; | ||
fpr=7231804B052C670F15A6771DB918086ED8045B91 | ||
|
||
Link: https://github.com/torvalds/linux/commit/689274a56c0c088796d359f6c6267323931a2429 | ||
Link: https://github.com/torvalds/linux/commit/7283f862bd991c8657e9bf1c02db772fcf018f13 | ||
Link: https://github.com/NVIDIA/open-gpu-kernel-modules/issues/749 | ||
--- | ||
conftest.sh | 19 +++++++++++++++++++ | ||
header-presence-tests.mk | 1 + | ||
nvidia-drm/nvidia-drm-drv.c | 15 +++++++++++++++ | ||
nvidia-drm/nvidia-drm-os-interface.h | 10 ++++++++++ | ||
nvidia-drm/nvidia-drm-sources.mk | 1 + | ||
5 files changed, 46 insertions(+) | ||
|
||
diff --git a/kernel/conftest.sh b/kernel/conftest.sh | ||
index fdceda72da33..5a0f39e0b2a7 100755 | ||
--- a/kernel/conftest.sh | ||
+++ b/kernel/conftest.sh | ||
@@ -6615,6 +6615,8 @@ compile_test() { | ||
# Added by commit 2916059147ea ("drm/aperture: Add infrastructure | ||
# for aperture ownership") in v5.14. | ||
# | ||
+ # Removed by commit 689274a56c0c ("drm: Remove DRM aperture helpers") in v6.13. | ||
+ # | ||
CODE=" | ||
#if defined(NV_DRM_DRM_APERTURE_H_PRESENT) | ||
#include <drm/drm_aperture.h> | ||
@@ -6626,6 +6628,23 @@ compile_test() { | ||
compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT" "" "functions" | ||
;; | ||
|
||
+ aperture_remove_conflicting_pci_devices) | ||
+ # | ||
+ # Determine whether aperture_remove_conflicting_pci_devices is present. | ||
+ # | ||
+ # Added by commit 7283f862bd99 ("drm: Implement DRM aperture helpers under video/") in v6.0. | ||
+ # | ||
+ CODE=" | ||
+ #if defined(NV_LINUX_APERTURE_H_PRESENT) | ||
+ #include <linux/aperture.h> | ||
+ #endif | ||
+ void conftest_aperture_remove_conflicting_pci_devices(void) { | ||
+ aperture_remove_conflicting_pci_devices(); | ||
+ }" | ||
+ | ||
+ compile_check_conftest "$CODE" "NV_APERTURE_REMOVE_CONFLICTING_PCI_DEVICES_PRESENT" "" "functions" | ||
+ ;; | ||
+ | ||
drm_aperture_remove_conflicting_pci_framebuffers_has_driver_arg) | ||
# | ||
# Determine whether drm_aperture_remove_conflicting_pci_framebuffers | ||
diff --git a/kernel/header-presence-tests.mk b/kernel/header-presence-tests.mk | ||
index 9d5217a9f8b9..b02685418629 100644 | ||
--- a/kernel/header-presence-tests.mk | ||
+++ b/kernel/header-presence-tests.mk | ||
@@ -34,6 +34,7 @@ NV_HEADER_PRESENCE_TESTS = \ | ||
generated/autoconf.h \ | ||
generated/compile.h \ | ||
generated/utsrelease.h \ | ||
+ linux/aperture.h \ | ||
linux/efi.h \ | ||
linux/kconfig.h \ | ||
linux/platform/tegra/mc_utils.h \ | ||
diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c | ||
index 8f905f821444..57a4ab82b3fc 100644 | ||
--- a/kernel/nvidia-drm/nvidia-drm-drv.c | ||
+++ b/kernel/nvidia-drm/nvidia-drm-drv.c | ||
@@ -65,7 +65,16 @@ | ||
#endif | ||
|
||
#if defined(NV_DRM_FBDEV_AVAILABLE) | ||
+// Commit 7283f862bd99 ("drm: Implement DRM aperture helpers under video/") | ||
+// moved implementation of drm_aperture_... to linux/aperture.c. | ||
+// Commit 689274a56c0c ("drm: Remove DRM aperture helpers") | ||
+// removed drm/drm_aperture.h. | ||
+#if defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) | ||
#include <drm/drm_aperture.h> | ||
+#endif | ||
+#if defined(NV_APERTURE_REMOVE_CONFLICTING_PCI_DEVICES_PRESENT) | ||
+#include <linux/aperture.h> | ||
+#endif | ||
#include <drm/drm_fb_helper.h> | ||
#endif | ||
|
||
@@ -2013,10 +2022,16 @@ void nv_drm_register_drm_device(const nv_gpu_info_t *gpu_info) | ||
if (bus_is_pci) { | ||
struct pci_dev *pdev = to_pci_dev(device); | ||
|
||
+#if defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) | ||
+ printk(KERN_INFO "AOSC OS: %s: using drm_aperture for old kernels\n", nv_drm_driver.name); | ||
#if defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_HAS_DRIVER_ARG) | ||
drm_aperture_remove_conflicting_pci_framebuffers(pdev, &nv_drm_driver); | ||
#else | ||
drm_aperture_remove_conflicting_pci_framebuffers(pdev, nv_drm_driver.name); | ||
+#endif | ||
+#elif defined(NV_APERTURE_REMOVE_CONFLICTING_PCI_DEVICES_PRESENT) | ||
+ printk(KERN_INFO "AOSC OS: %s: using linux/aperture workaround for Linux 6.13+\n", nv_drm_driver.name); | ||
+ aperture_remove_conflicting_pci_devices(pdev, nv_drm_driver.name); | ||
#endif | ||
nvKms->framebufferConsoleDisabled(nv_dev->pDevice); | ||
} | ||
diff --git a/kernel/nvidia-drm/nvidia-drm-os-interface.h b/kernel/nvidia-drm/nvidia-drm-os-interface.h | ||
index a6b0f947e0ab..71ca5f226ad7 100644 | ||
--- a/kernel/nvidia-drm/nvidia-drm-os-interface.h | ||
+++ b/kernel/nvidia-drm/nvidia-drm-os-interface.h | ||
@@ -63,11 +63,21 @@ typedef struct nv_timer nv_drm_timer; | ||
#define NV_DRM_FBDEV_GENERIC_AVAILABLE | ||
#endif | ||
|
||
+#if defined(NV_DRM_FBDEV_GENERIC_SETUP_PRESENT) && defined(NV_APERTURE_REMOVE_CONFLICTING_PCI_DEVICES_PRESENT) | ||
+#define NV_DRM_FBDEV_AVAILABLE | ||
+#define NV_DRM_FBDEV_GENERIC_AVAILABLE | ||
+#endif | ||
+ | ||
#if defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) && defined(NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT) | ||
#define NV_DRM_FBDEV_AVAILABLE | ||
#define NV_DRM_FBDEV_TTM_AVAILABLE | ||
#endif | ||
|
||
+#if defined(NV_DRM_FBDEV_TTM_SETUP_PRESENT) && defined(NV_APERTURE_REMOVE_CONFLICTING_PCI_DEVICES_PRESENT) | ||
+#define NV_DRM_FBDEV_AVAILABLE | ||
+#define NV_DRM_FBDEV_TTM_AVAILABLE | ||
+#endif | ||
+ | ||
struct page; | ||
|
||
/* Set to true when the atomic modeset feature is enabled. */ | ||
diff --git a/kernel/nvidia-drm/nvidia-drm-sources.mk b/kernel/nvidia-drm/nvidia-drm-sources.mk | ||
index 9aaebd04ace2..a4dcad6de609 100644 | ||
--- a/kernel/nvidia-drm/nvidia-drm-sources.mk | ||
+++ b/kernel/nvidia-drm/nvidia-drm-sources.mk | ||
@@ -66,6 +66,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_fence_set_error | ||
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 += aperture_remove_conflicting_pci_devices | ||
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 | ||
-- | ||
2.47.1 | ||
|
Oops, something went wrong.