AUR AI Reviewer

Review Results

Version #2282 of nvidia-470xx-utils · commit af0b7617132e · status Reviewed

Risk 0/5 · Safe .SRCINFO
Result #3021

Comment

The change only bumps pkgrel in .SRCINFO from 8.02 to 8.03. No source URLs, build steps, dependencies, install scripts, or packaged artifacts are modified, and there is no new execution or integrity risk introduced by this metadata-only update. The remaining http:// URL is pre-existing and unchanged in this diff.

@@ -1,6 +1,6 @@
 pkgbase = nvidia-470xx-utils
 	pkgver = 470.256.02
-	pkgrel = 8.02
+	pkgrel = 8.03
 	url = http://www.nvidia.com/
 	arch = x86_64
 	license = custom
Risk 0/5 · Safe .SRCINFO
Result #3022

Comment

The change only updates .SRCINFO to add four new patch sources and their checksums, plus a pkgrel bump. I checked the surrounding PKGBUILD context: the new entries correspond to local patch files already referenced in prepare(), and the package still fetches the NVIDIA runfile over HTTPS from the official vendor URL. No new build-time network access, privilege escalation, install-script behavior, or suspicious external sources are introduced by this metadata-only change. Risk is low; the only caveat is that the actual patch contents are not part of this diff, so any substantive risk would live in those patch files rather than in .SRCINFO itself.

@@ -24,6 +24,10 @@ pkgbase = nvidia-470xx-utils
 	source = nvidia-470xx-fix-linux-6.19-part1.patch
 	source = nvidia-470xx-fix-linux-6.19-part2.patch
 	source = nvidia-470xx-fix-linux-7.0.patch
+	source = nvidia-470xx-fix-linux-7.2-part1.patch
+	source = nvidia-470xx-fix-linux-7.2-part2.patch
+	source = nvidia-470xx-fix-linux-7.2-part3.patch
+	source = nvidia-470xx-fix-linux-7.3.patch
 	source = disable-objtool-override.patch
 	source = enable-drm-modeset-by-default.patch
 	sha512sums = de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc5067748acf9afd66a3269a6e323461356592fdfc624c86523bf105ff8fe47d3770
Risk 0/5 · Safe .SRCINFO
Result #3023

Comment

The change only updates .SRCINFO to add four new patch sources and their checksums, plus a pkgrel bump. This is metadata-only and does not itself introduce executable code or packaging behavior. I did verify the corresponding PKGBUILD context: the new sources are local patch files referenced from the package tree, not remote downloads, and the diff provided does not show any suspicious install scripts, network fetches, privilege escalation, or binary blobs. Risk is low, though the actual patch contents are outside this hunk and would need separate review if they were part of the change set.

@@ -45,6 +49,10 @@ pkgbase = nvidia-470xx-utils
 	sha512sums = 9267dfcefbfd1e4e0f7a6661c151aa1626c15b6091766876a23e7e0dd20068a7279b0af2b38153f6ab219ccd5239ee7df0eeecaf754b5ab5dd8286508cb3be34
 	sha512sums = 9962feaf22b32b3fe7e3125eaafe7319a2bb45ab11482260701b06c6994104e64110466156b22ecc6cd9f493f18575ca56365ede90162b6f7d03877e7c679167
 	sha512sums = e66049ce8928359059d7c278b4d71b8706455ddf4397e12f43bd3781bc3451c9320268e46f99c6420743aa8accaae7fac89c7c85099971a69cb977f0fbcdee70
+	sha512sums = b4388084217055cd0b1100c44aaf9ec5671f6bccc69f0371404331c86402368e04c7e8fb2d9c4135f83d2d33ce219db21a9225eb8e6247c85ae11df10120ccba
+	sha512sums = 89049dd8482e4bea5d79b56301c6e47c86e9e3a766ffbac7a4800511bb1f3f48dff6c8f41270956258ffeccc29da2eb9fdf9abd6a46f681de8201dbdfe49e920
+	sha512sums = cd3cad8e7de596b16330a38679f927685dc97ff82349604093801268eb5fcb8d28c8fea6acf8c755c6fc0aaed9e96426137ae9c9003baab494b4b57451a24d14
+	sha512sums = ae0f86c6f0b30e4a0ff5a241e6f7ffe15af0ee7bec7cebb8ac18c7f41a0701e09730c8c3dd7cadb265c2a434e5fb48c86305d41837c816b49ecb0db911f9f261
 	sha512sums = 2ced920b879b9c64e3f57269bda5803f25109bd9d0bfeb53a780329beeccb974dac614e9915d798a9678136eee3415b27b7027a7da4b1889fe1286b64ccbeafc
 	sha512sums = b753ccf7ee39231e07aad908f907e1a8314f4c055af317b21add6a438dcc1c8b21da027debe5ddda5229f5c250a724a2bb46b739bd2e70633dd08dca19ea7d99
 
Risk 0/5 · Safe PKGBUILD
Result #3024

Comment

The PKGBUILD change only bumps pkgrel and adds new patch sources with matching checksums; there is no evidence of malicious build-time execution, network fetching, privilege escalation, or packaging changes. I reviewed the added patches and they are kernel-compatibility fixes with no obvious persistence or backdoor behavior. One minor concern is that the new patch set is large and touches driver internals, but within the provided diff there is no direct security red flag.

@@ -9,7 +9,7 @@
 pkgbase=nvidia-470xx-utils
 pkgname=('nvidia-470xx-utils' 'opencl-nvidia-470xx' 'nvidia-470xx-dkms')
 pkgver=470.256.02
-pkgrel=8.02
+pkgrel=8.03
 arch=('x86_64')
 url="http://www.nvidia.com/"
 license=('custom')
Risk 0/5 · Safe PKGBUILD
Result #3025

Comment

The change only adds additional local patch files to the source array and corresponding checksums, then applies them in prepare(). I reviewed the new patches: they are straightforward compatibility fixes for upcoming kernel API changes, with no network access, no privilege escalation, no install-script changes, and no suspicious binaries or obfuscation. The only minor concern is that one patch disables ACPI hotkey handling on Linux 7.3+, but that is a functional regression rather than a security issue. Overall this looks safe from a supply-chain/security perspective.

@@ -34,6 +34,10 @@ source=('nvidia-drm-outputclass.conf'
         "nvidia-470xx-fix-linux-6.19-part1.patch"
         "nvidia-470xx-fix-linux-6.19-part2.patch"
         "nvidia-470xx-fix-linux-7.0.patch"
+        "nvidia-470xx-fix-linux-7.2-part1.patch"
+        "nvidia-470xx-fix-linux-7.2-part2.patch"
+        "nvidia-470xx-fix-linux-7.2-part3.patch"
+        "nvidia-470xx-fix-linux-7.3.patch"
         "disable-objtool-override.patch"
         "enable-drm-modeset-by-default.patch"
         )
Risk 0/5 · Safe PKGBUILD
Result #3026

Comment

The change only adds four new SHA-512 checksums to the PKGBUILD source integrity list. There are no new sources, no build-script logic changes, no network/download behavior, and no packaging or privilege-related modifications. This appears to be a routine checksum update for additional upstream artifacts, with no obvious security red flags in the diff provided.

@@ -57,6 +61,10 @@ sha512sums=('de7116c09f282a27920a1382df84aa86f559e537664bb30689605177ce37dc50677
             '9267dfcefbfd1e4e0f7a6661c151aa1626c15b6091766876a23e7e0dd20068a7279b0af2b38153f6ab219ccd5239ee7df0eeecaf754b5ab5dd8286508cb3be34'
             '9962feaf22b32b3fe7e3125eaafe7319a2bb45ab11482260701b06c6994104e64110466156b22ecc6cd9f493f18575ca56365ede90162b6f7d03877e7c679167'
             'e66049ce8928359059d7c278b4d71b8706455ddf4397e12f43bd3781bc3451c9320268e46f99c6420743aa8accaae7fac89c7c85099971a69cb977f0fbcdee70'
+            'b4388084217055cd0b1100c44aaf9ec5671f6bccc69f0371404331c86402368e04c7e8fb2d9c4135f83d2d33ce219db21a9225eb8e6247c85ae11df10120ccba'
+            '89049dd8482e4bea5d79b56301c6e47c86e9e3a766ffbac7a4800511bb1f3f48dff6c8f41270956258ffeccc29da2eb9fdf9abd6a46f681de8201dbdfe49e920'
+            'cd3cad8e7de596b16330a38679f927685dc97ff82349604093801268eb5fcb8d28c8fea6acf8c755c6fc0aaed9e96426137ae9c9003baab494b4b57451a24d14'
+            'ae0f86c6f0b30e4a0ff5a241e6f7ffe15af0ee7bec7cebb8ac18c7f41a0701e09730c8c3dd7cadb265c2a434e5fb48c86305d41837c816b49ecb0db911f9f261'
             '2ced920b879b9c64e3f57269bda5803f25109bd9d0bfeb53a780329beeccb974dac614e9915d798a9678136eee3415b27b7027a7da4b1889fe1286b64ccbeafc'
             'b753ccf7ee39231e07aad908f907e1a8314f4c055af317b21add6a438dcc1c8b21da027debe5ddda5229f5c250a724a2bb46b739bd2e70633dd08dca19ea7d99')
 
Risk 0/5 · Safe PKGBUILD
Result #3027

Comment

The PKGBUILD change only adds four new patch files to the source list and applies them in prepare(). Those patches are straightforward kernel-compatibility updates for upcoming Linux 7.2/7.3 API changes, with no signs of network fetches, privilege escalation, persistence, or packaging outside $pkgdir. I did inspect the added patch contents: they are local source edits, not embedded binaries or install-script logic. The only notable issue is that the package already contains an HTTP upstream URL in metadata, but this diff does not introduce it. Overall this change is low risk.

@@ -87,16 +95,26 @@ prepare() {
 #    patch -p1 -i "${srcdir}/kernel-6.4.patch"
 #    patch -p1 -i "${srcdir}/kernel-6.5.patch"
 #    patch -p1 -i "${srcdir}/kernel-6.6.patch"
+
     patch -p1 -i "${srcdir}/kernel-6.10.patch"
     patch -p1 -i "${srcdir}/kernel-6.12.patch"
+    
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-gcc-15.patch"
+    
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-6.13.patch"
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-6.14.patch"
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-6.15.patch"
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-6.17.patch"
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-6.19-part1.patch"
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-6.19-part2.patch"
+    
     patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-7.0.patch"
+
+    patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-7.2-part1.patch"
+    patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-7.2-part2.patch"
+    patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-7.2-part3.patch"
+
+    patch -p1 -i "${srcdir}/nvidia-470xx-fix-linux-7.3.patch"
     
     patch -p1 -i "${srcdir}/disable-objtool-override.patch"
     patch -p1 -i "${srcdir}/enable-drm-modeset-by-default.patch"
Risk 0/5 · Safe nvidia-470xx-fix-linux-7.2-part1.patch
Result #3028

Comment

The patch is a mechanical rename in the NVIDIA DRM compatibility layer and its conftest probes. I do not see any added network access, privilege escalation, persistence, or packaging-time execution. The only notable issue is that the change renames kernel DRM types/functions from the established `drm_atomic_state` API to `drm_atomic_commit`, which looks suspicious from a correctness standpoint because it may not correspond to real upstream kernel interfaces; however, that is a build/compatibility risk rather than a security issue. No malicious payloads or hidden behavior are present in the diff.

@@ -0,0 +1,355 @@
+From f14564b1e54b29ecc3f835007449790169750811 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
+Date: Thu, 18 Jun 2026 05:51:38 +0000
+Subject: [PATCH 1/2] Tentative fix for NVIDIA 470.256.02 driver for Linux
+ 7.2-rc1 (part 1)
+
+Rename drm_atomic_state -> drm_atomic_commit rename; created using:
+
+rg -l atomic_state | xargs sed -i 's/atomic_state/atomic_commit/g; s/ATOMIC_STATE/ATOMIC_COMMIT/g; s/atomic_commit_alloc/atomic_state_alloc/g; s/atomic_commit_clear/atomic_state_clear/g; s/atomic_commit_free/atomic_state_free/g;'
+---
+ conftest.sh                     | 46 ++++++++++++++++-----------------
+ nvidia-drm/nvidia-drm-crtc.c    | 12 ++++-----
+ nvidia-drm/nvidia-drm-modeset.c | 38 +++++++++++++--------------
+ nvidia-drm/nvidia-drm-modeset.h | 12 ++++-----
+ nvidia-drm/nvidia-drm.Kbuild    |  6 ++---
+ 5 files changed, 57 insertions(+), 57 deletions(-)
+
+diff --git a/conftest.sh b/conftest.sh
+index 294d6e5..07e821e 100755
+--- a/conftest.sh
++++ b/conftest.sh
+@@ -1927,7 +1927,7 @@ compile_test() {
+             # Determine if the DRM atomic modesetting subsystem is usable
+             #
+             # Added by commit 036ef5733ba4
+-            # ("drm/atomic: Allow drivers to subclass drm_atomic_state, v3") in
++            # ("drm/atomic: Allow drivers to subclass drm_atomic_commit, v3") in
+             # v4.2 (2018-05-18).
+             #
+             # Make conftest more robust by adding test for
+@@ -3010,23 +3010,23 @@ compile_test() {
+             compile_check_conftest "$CODE" "NV_DRM_MASTER_DROP_HAS_FROM_RELEASE_ARG" "" "types"
+         ;;
+ 
+-        drm_atomic_state_ref_counting)
++        drm_atomic_commit_ref_counting)
+             #
+-            # Determine if functions drm_atomic_state_get/put() are
++            # Determine if functions drm_atomic_commit_get/put() are
+             # present.
+             #
+             # Added by commit 0853695c3ba4 ("drm: Add reference counting to
+-            # drm_atomic_state") in v4.10 (2016-10-14)
++            # drm_atomic_commit") in v4.10 (2016-10-14)
+             #
+             CODE="
+             #if defined(NV_DRM_DRM_ATOMIC_H_PRESENT)
+             #include <drm/drm_atomic.h>
+             #endif
+-            void conftest_drm_atomic_state_get(void) {
+-                drm_atomic_state_get();
++            void conftest_drm_atomic_commit_get(void) {
++                drm_atomic_commit_get();
+             }"
+ 
+-            compile_check_conftest "$CODE" "NV_DRM_ATOMIC_STATE_REF_COUNTING_PRESENT" "" "functions"
++            compile_check_conftest "$CODE" "NV_DRM_ATOMIC_COMMIT_REF_COUNTING_PRESENT" "" "functions"
+         ;;
+ 
+         vm_ops_fault_removed_vma_arg)
+@@ -3627,7 +3627,7 @@ compile_test() {
+             CODE="
+             #include <drm/drm_atomic_helper.h>
+             void conftest_drm_atomic_helper_swap_state_has_stall_arg(
+-                    struct drm_atomic_state *state,
++                    struct drm_atomic_commit *state,
+                     bool stall) {
+                 (void)drm_atomic_helper_swap_state(state, stall);
+             }"
+@@ -3646,7 +3646,7 @@ compile_test() {
+             CODE="
+             #include <drm/drm_atomic_helper.h>
+             int conftest_drm_atomic_helper_swap_state_return_int(
+-                    struct drm_atomic_state *state,
++                    struct drm_atomic_commit *state,
+                     bool stall) {
+                 return drm_atomic_helper_swap_state(state, stall);
+             }"
+@@ -4554,10 +4554,10 @@ compile_test() {
+             compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_GEM_PRIME_CALLBACKS" "" "types"
+         ;;
+ 
+-        drm_crtc_atomic_check_has_atomic_state_arg)
++        drm_crtc_atomic_check_has_atomic_commit_arg)
+             #
+             # Determine if drm_crtc_helper_funcs::atomic_check takes 'state'
+-            # argument of 'struct drm_atomic_state' type.
++            # argument of 'struct drm_atomic_commit' type.
+             #
+             # The commit 29b77ad7b9ca ("drm/atomic: Pass the full state to CRTC
+             # atomic_check") passed the full atomic state to
+@@ -4573,10 +4573,10 @@ compile_test() {
+             #include <drm/drm_modeset_helper_vtables.h>
+ 
+             static const struct drm_crtc_helper_funcs *funcs;
+-            typeof(*funcs->atomic_check) conftest_drm_crtc_atomic_check_has_atomic_state_arg;
++            typeof(*funcs->atomic_check) conftest_drm_crtc_atomic_check_has_atomic_commit_arg;
+ 
+-            int conftest_drm_crtc_atomic_check_has_atomic_state_arg(
+-                    struct drm_crtc *crtc, struct drm_atomic_state *state) {
++            int conftest_drm_crtc_atomic_check_has_atomic_commit_arg(
++                    struct drm_crtc *crtc, struct drm_atomic_commit *state) {
+                 return 0;
+             }" > conftest$$.c
+ 
+@@ -4585,9 +4585,9 @@ compile_test() {
+ 
+             if [ -f conftest$$.o ]; then
+                 rm -f conftest$$.o
+-                echo "#define NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
++                echo "#define NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG" | append_conftest "types"
+             else
+-                echo "#undef NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
++                echo "#undef NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG" | append_conftest "types"
+             fi
+         ;;
+ 
+@@ -4716,10 +4716,10 @@ compile_test() {
+             compile_check_conftest "$CODE" "NV_FOLLOW_PFN_PRESENT" "" "functions"
+         ;;
+ 
+-        drm_plane_atomic_check_has_atomic_state_arg)
++        drm_plane_atomic_check_has_atomic_commit_arg)
+             #
+             # Determine if drm_plane_helper_funcs::atomic_check takes 'state'
+-            # argument of 'struct drm_atomic_state' type.
++            # argument of 'struct drm_atomic_commit' type.
+             #
+             # The commit 7c11b99a8e58 ("drm/atomic: Pass the full state to
+             # planes atomic_check") passed the full atomic state to
+@@ -4735,10 +4735,10 @@ compile_test() {
+             #include <drm/drm_modeset_helper_vtables.h>
+ 
+             static const struct drm_plane_helper_funcs *funcs;
+-            typeof(*funcs->atomic_check) conftest_drm_plane_atomic_check_has_atomic_state_arg;
++            typeof(*funcs->atomic_check) conftest_drm_plane_atomic_check_has_atomic_commit_arg;
+ 
+-            int conftest_drm_plane_atomic_check_has_atomic_state_arg(
+-                    struct drm_plane *plane, struct drm_atomic_state *state) {
++            int conftest_drm_plane_atomic_check_has_atomic_commit_arg(
++                    struct drm_plane *plane, struct drm_atomic_commit *state) {
+                 return 0;
+             }" > conftest$$.c
+ 
+@@ -4747,9 +4747,9 @@ compile_test() {
+ 
+             if [ -f conftest$$.o ]; then
+                 rm -f conftest$$.o
+-                echo "#define NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
++                echo "#define NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG" | append_conftest "types"
+             else
+-                echo "#undef NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
++                echo "#undef NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG" | append_conftest "types"
+             fi
+         ;;
+ 
+diff --git a/nvidia-drm/nvidia-drm-crtc.c b/nvidia-drm/nvidia-drm-crtc.c
+index 69db1cb..c74f168 100644
+--- a/nvidia-drm/nvidia-drm-crtc.c
++++ b/nvidia-drm/nvidia-drm-crtc.c
+@@ -288,15 +288,15 @@ static bool __is_async_flip_requested(const struct drm_plane *plane,
+     return false;
+ }
+ 
+-#if defined(NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG)
++#if defined(NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG)
+ static int nv_drm_plane_atomic_check(struct drm_plane *plane,
+-                                     struct drm_atomic_state *state)
++                                     struct drm_atomic_commit *state)
+ #else
+ static int nv_drm_plane_atomic_check(struct drm_plane *plane,
+                                      struct drm_plane_state *plane_state)
+ #endif
+ {
+-#if defined(NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG)
++#if defined(NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG)
+     struct drm_plane_state *plane_state =
+         drm_atomic_get_new_plane_state(state, plane);
+ #endif
+@@ -599,15 +599,15 @@ static int head_modeset_config_attach_connector(
+  * the 'nv_drm_crtc_state::req_config', that is fine because 'nv_drm_crtc_state'
+  * will be discarded if ->atomic_check() fails.
+  */
+-#if defined(NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG)
++#if defined(NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG)
+ static int nv_drm_crtc_atomic_check(struct drm_crtc *crtc,
+-                                    struct drm_atomic_state *state)
++                                    struct drm_atomic_commit *state)
+ #else
+ static int nv_drm_crtc_atomic_check(struct drm_crtc *crtc,
+                                     struct drm_crtc_state *crtc_state)
+ #endif
+ {
+-#if defined(NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG)
++#if defined(NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_COMMIT_ARG)
+     struct drm_crtc_state *crtc_state =
+         drm_atomic_get_new_crtc_state(state, crtc);
+ #endif
+diff --git a/nvidia-drm/nvidia-drm-modeset.c b/nvidia-drm/nvidia-drm-modeset.c
+index 640b341..28e30ee 100644
+--- a/nvidia-drm/nvidia-drm-modeset.c
++++ b/nvidia-drm/nvidia-drm-modeset.c
+@@ -42,23 +42,23 @@
+ #include <drm/drm_atomic_helper.h>
+ #include <drm/drm_crtc.h>
+ 
+-struct nv_drm_atomic_state {
++struct nv_drm_atomic_commit {
+     struct NvKmsKapiRequestedModeSetConfig config;
+-    struct drm_atomic_state base;
++    struct drm_atomic_commit base;
+ };
+ 
+-static inline struct nv_drm_atomic_state *to_nv_atomic_state(
+-    struct drm_atomic_state *state)
++static inline struct nv_drm_atomic_commit *to_nv_atomic_commit(
++    struct drm_atomic_commit *state)
+ {
+-    return container_of(state, struct nv_drm_atomic_state, base);
++    return container_of(state, struct nv_drm_atomic_commit, base);
+ }
+ 
+-struct drm_atomic_state *nv_drm_atomic_state_alloc(struct drm_device *dev)
++struct drm_atomic_commit *nv_drm_atomic_state_alloc(struct drm_device *dev)
+ {
+-    struct nv_drm_atomic_state *nv_state =
++    struct nv_drm_atomic_commit *nv_state =
+             nv_drm_calloc(1, sizeof(*nv_state));
+ 
+-    if (nv_state == NULL || drm_atomic_state_init(dev, &nv_state->base) < 0) {
++    if (nv_state == NULL || drm_atomic_commit_init(dev, &nv_state->base) < 0) {
+         nv_drm_free(nv_state);
+         return NULL;
+     }
+@@ -66,16 +66,16 @@ struct drm_atomic_state *nv_drm_atomic_state_alloc(struct drm_device *dev)
+     return &nv_state->base;
+ }
+ 
+-void nv_drm_atomic_state_clear(struct drm_atomic_state *state)
++void nv_drm_atomic_state_clear(struct drm_atomic_commit *state)
+ {
+-    drm_atomic_state_default_clear(state);
++    drm_atomic_commit_default_clear(state);
+ }
+ 
+-void nv_drm_atomic_state_free(struct drm_atomic_state *state)
++void nv_drm_atomic_state_free(struct drm_atomic_commit *state)
+ {
+-    struct nv_drm_atomic_state *nv_state =
+-                    to_nv_atomic_state(state);
+-    drm_atomic_state_default_release(state);
++    struct nv_drm_atomic_commit *nv_state =
++                    to_nv_atomic_commit(state);
++    drm_atomic_commit_default_release(state);
+     nv_drm_free(nv_state);
+ }
+ 
+@@ -252,12 +252,12 @@ static int __nv_drm_get_syncpt_data(
+  */
+ static int
+ nv_drm_atomic_apply_modeset_config(struct drm_device *dev,
+-                                   struct drm_atomic_state *state,
++                                   struct drm_atomic_commit *state,
+                                    bool commit)
+ {
+     struct nv_drm_device *nv_dev = to_nv_device(dev);
+     struct NvKmsKapiRequestedModeSetConfig *requested_config =
+-        &(to_nv_atomic_state(state)->config);
++        &(to_nv_atomic_commit(state)->config);
+     struct NvKmsKapiModeSetReplyConfig reply_config = { };
+     struct drm_crtc *crtc;
+     struct drm_crtc_state *old_crtc_state, *new_crtc_state;
+@@ -328,7 +328,7 @@ nv_drm_atomic_apply_modeset_config(struct drm_device *dev,
+ }
+ 
+ int nv_drm_atomic_check(struct drm_device *dev,
+-                        struct drm_atomic_state *state)
++                        struct drm_atomic_commit *state)
+ {
+     int ret = 0;
+ 
+@@ -395,7 +395,7 @@ static void __nv_drm_handle_flip_event(struct nv_drm_crtc *nv_crtc)
+ }
+ 
+ int nv_drm_atomic_commit(struct drm_device *dev,
+-                         struct drm_atomic_state *state,
++                         struct drm_atomic_commit *state,
+                          bool nonblock)
+ {
+     int ret = -EBUSY;
+@@ -571,7 +571,7 @@ int nv_drm_atomic_commit(struct drm_device *dev,
+ 
+ done:
+ 
+-#if defined(NV_DRM_ATOMIC_STATE_REF_COUNTING_PRESENT)
++#if defined(NV_DRM_ATOMIC_COMMIT_REF_COUNTING_PRESENT)
+     /*
+      * If ref counting is present, state will be freed when the caller
+      * drops its reference after we return.
+diff --git a/nvidia-drm/nvidia-drm-modeset.h b/nvidia-drm/nvidia-drm-modeset.h
+index 8cf25ad..6b7e759 100644
+--- a/nvidia-drm/nvidia-drm-modeset.h
++++ b/nvidia-drm/nvidia-drm-modeset.h
+@@ -30,17 +30,17 @@
+ #include "nvkms-kapi.h"
+ 
+ struct drm_device;
+-struct drm_atomic_state;
++struct drm_atomic_commit;
+ 
+-struct drm_atomic_state *nv_drm_atomic_state_alloc(struct drm_device *dev);
+-void nv_drm_atomic_state_clear(struct drm_atomic_state *state);
+-void nv_drm_atomic_state_free(struct drm_atomic_state *state);
++struct drm_atomic_commit *nv_drm_atomic_state_alloc(struct drm_device *dev);
++void nv_drm_atomic_state_clear(struct drm_atomic_commit *state);
++void nv_drm_atomic_state_free(struct drm_atomic_commit *state);
+ 
+ int nv_drm_atomic_check(struct drm_device *dev,
+-                        struct drm_atomic_state *state);
++                        struct drm_atomic_commit *state);
+ 
+ int nv_drm_atomic_commit(struct drm_device *dev,
+-                         struct drm_atomic_state *state, bool nonblock);
++                         struct drm_atomic_commit *state, bool nonblock);
+ 
+ 
+ void nv_drm_handle_flip_occurred(struct nv_drm_device *nv_dev,
+diff --git a/nvidia-drm/nvidia-drm.Kbuild b/nvidia-drm/nvidia-drm.Kbuild
+index af3f4af..fd31a04 100644
+--- a/nvidia-drm/nvidia-drm.Kbuild
++++ b/nvidia-drm/nvidia-drm.Kbuild
+@@ -62,7 +62,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_reinit_primary_mode_group
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_user_pages_remote
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += get_user_pages
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_lookup
+-NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_atomic_state_ref_counting
++NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_atomic_commit_ref_counting
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_driver_has_gem_prime_res_obj
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_atomic_helper_connector_dpms
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_connector_funcs_have_mode_in_name
+@@ -110,9 +110,9 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_driver_master_set_has_int_return_type
+ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_driver_has_gem_free_object
+ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_prime_pages_to_sg_has_drm_device_arg
+ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_driver_has_gem_prime_callbacks
+-NV_CONFTEST_TYPE_COMPILE_TESTS += drm_crtc_atomic_check_has_atomic_state_arg
++NV_CONFTEST_TYPE_COMPILE_TESTS += drm_crtc_atomic_check_has_atomic_commit_arg
+ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_gem_object_vmap_has_map_arg
+-NV_CONFTEST_TYPE_COMPILE_TESTS += drm_plane_atomic_check_has_atomic_state_arg
++NV_CONFTEST_TYPE_COMPILE_TESTS += drm_plane_atomic_check_has_atomic_commit_arg
+ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_device_has_pdev
+ NV_CONFTEST_TYPE_COMPILE_TESTS += drm_mode_config_has_allow_fb_modifiers
+ NV_CONFTEST_TYPE_COMPILE_TESTS += dma_resv_add_fence
+-- 
+2.54.0
+
Risk 0/5 · Safe nvidia-470xx-fix-linux-7.2-part2.patch
Result #3029

Comment

The patch is a narrow compatibility shim for a kernel API rename in NVIDIA's DRM integration and conftest checks. It only adds preprocessor aliases gated on LINUX_VERSION_CODE and does not introduce network access, privilege changes, install-script behavior, or embedded binaries. The change is confined to build-time detection and header compatibility, with no obvious supply-chain or persistence risk in the reviewed hunk.

@@ -0,0 +1,125 @@
+From fb857dbc91809f68c1dff986e89e27db8346dbf2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
+Date: Thu, 18 Jun 2026 05:55:31 +0000
+Subject: [PATCH 2/2] Tentative fix for NVIDIA 470.256.02 driver for Linux
+ 7.2-rc1 (part 2)
+
+Add compatibility shim for the rename.
+---
+ conftest.sh                  | 37 ++++++++++++++++++++++++++++++++++--
+ nvidia-drm/nvidia-drm-priv.h | 11 +++++++++++
+ 2 files changed, 46 insertions(+), 2 deletions(-)
+
+diff --git a/conftest.sh b/conftest.sh
+index 07e821e..d41a22b 100755
+--- a/conftest.sh
++++ b/conftest.sh
+@@ -1927,7 +1927,7 @@ compile_test() {
+             # Determine if the DRM atomic modesetting subsystem is usable
+             #
+             # Added by commit 036ef5733ba4
+-            # ("drm/atomic: Allow drivers to subclass drm_atomic_commit, v3") in
++            # ("drm/atomic: Allow drivers to subclass drm_atomic_state, v3") in
+             # v4.2 (2018-05-18).
+             #
+             # Make conftest more robust by adding test for
+@@ -3016,12 +3016,19 @@ compile_test() {
+             # present.
+             #
+             # Added by commit 0853695c3ba4 ("drm: Add reference counting to
+-            # drm_atomic_commit") in v4.10 (2016-10-14)
++            # drm_atomic_state") in v4.10 (2016-10-14)
+             #
+             CODE="
+             #if defined(NV_DRM_DRM_ATOMIC_H_PRESENT)
+             #include <drm/drm_atomic.h>
+             #endif
++            #include <linux/version.h>
++
++            // Rel. commit \"drm: Rename struct drm_atomic_state to drm_atomic_commit\" (Maxime Ripard, 27 Apr 2026)
++            #if LINUX_VERSION_CODE < KERNEL_VERSION(7, 2, 0)
++            #define drm_atomic_commit_get drm_atomic_state_get
++            #endif
++
+             void conftest_drm_atomic_commit_get(void) {
+                 drm_atomic_commit_get();
+             }"
+@@ -3626,6 +3633,13 @@ compile_test() {
+             #
+             CODE="
+             #include <drm/drm_atomic_helper.h>
++            #include <linux/version.h>
++
++            // Rel. commit \"drm: Rename struct drm_atomic_state to drm_atomic_commit\" (Maxime Ripard, 27 Apr 2026)
++            #if LINUX_VERSION_CODE < KERNEL_VERSION(7, 2, 0)
++            #define drm_atomic_commit drm_atomic_state
++            #endif
++
+             void conftest_drm_atomic_helper_swap_state_has_stall_arg(
+                     struct drm_atomic_commit *state,
+                     bool stall) {
+@@ -3645,6 +3659,13 @@ compile_test() {
+             #
+             CODE="
+             #include <drm/drm_atomic_helper.h>
++            #include <linux/version.h>
++
++            // Rel. commit \"drm: Rename struct drm_atomic_state to drm_atomic_commit\" (Maxime Ripard, 27 Apr 2026)
++            #if LINUX_VERSION_CODE < KERNEL_VERSION(7, 2, 0)
++            #define drm_atomic_commit drm_atomic_state
++            #endif
++
+             int conftest_drm_atomic_helper_swap_state_return_int(
+                     struct drm_atomic_commit *state,
+                     bool stall) {
+@@ -4571,6 +4592,12 @@ compile_test() {
+             #
+             echo "$CONFTEST_PREAMBLE
+             #include <drm/drm_modeset_helper_vtables.h>
++            #include <linux/version.h>
++
++            // Rel. commit \"drm: Rename struct drm_atomic_state to drm_atomic_commit\" (Maxime Ripard, 27 Apr 2026)
++            #if LINUX_VERSION_CODE < KERNEL_VERSION(7, 2, 0)
++            #define drm_atomic_commit drm_atomic_state
++            #endif
+ 
+             static const struct drm_crtc_helper_funcs *funcs;
+             typeof(*funcs->atomic_check) conftest_drm_crtc_atomic_check_has_atomic_commit_arg;
+@@ -4733,6 +4760,12 @@ compile_test() {
+             #
+             echo "$CONFTEST_PREAMBLE
+             #include <drm/drm_modeset_helper_vtables.h>
++            #include <linux/version.h>
++
++            // Rel. commit \"drm: Rename struct drm_atomic_state to drm_atomic_commit\" (Maxime Ripard, 27 Apr 2026)
++            #if LINUX_VERSION_CODE < KERNEL_VERSION(7, 2, 0)
++            #define drm_atomic_commit drm_atomic_state
++            #endif
+ 
+             static const struct drm_plane_helper_funcs *funcs;
+             typeof(*funcs->atomic_check) conftest_drm_plane_atomic_check_has_atomic_commit_arg;
+diff --git a/nvidia-drm/nvidia-drm-priv.h b/nvidia-drm/nvidia-drm-priv.h
+index ac932f9..b52635b 100644
+--- a/nvidia-drm/nvidia-drm-priv.h
++++ b/nvidia-drm/nvidia-drm-priv.h
+@@ -25,6 +25,17 @@
+ 
+ #include "nvidia-drm-conftest.h" /* NV_DRM_AVAILABLE */
+ 
++#include <linux/version.h>
++
++// Rel. commit "drm: Rename struct drm_atomic_state to drm_atomic_commit" (Maxime Ripard, 27 Apr 2026)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(7, 2, 0)
++#define drm_atomic_commit                 drm_atomic_state
++#define drm_atomic_commit_init            drm_atomic_state_init
++#define drm_atomic_commit_free            drm_atomic_state_free
++#define drm_atomic_commit_default_clear   drm_atomic_state_default_clear
++#define drm_atomic_commit_default_release drm_atomic_state_default_release
++#endif
++
+ #if defined(NV_DRM_AVAILABLE)
+ 
+ #if defined(NV_DRM_DRMP_H_PRESENT)
+-- 
+2.54.0
+
Risk 0/5 · Safe nvidia-470xx-fix-linux-7.2-part3.patch
Result #3030

Comment

The patch is a straightforward kernel-compatibility update replacing deprecated strncpy() uses with equivalent bounded copies (or strscpy) under a Linux 7.2+ version guard. It does not introduce network access, privilege escalation, persistence, or packaging changes, and the new code only affects in-kernel string handling paths. One minor note is that the new memcpy(regkey_val, regkey_val_start, regkey_val_len) assumes the existing length check is correct, but the surrounding code already enforces the buffer bounds and NUL-terminates afterward. Overall this is low risk.

@@ -0,0 +1,111 @@
+From c9fca9ecbb685ae85a68aa879374011481b42e83 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
+Date: Sat, 20 Jun 2026 12:00:00 +0000
+Subject: [PATCH] Tentative fix for NVIDIA 470.256.02 driver for Linux 7.2-rc1
+ (part 3)
+
+---
+ nvidia-modeset/nvidia-modeset-linux.c | 11 +++++++++++
+ nvidia-uvm/uvm_pmm_gpu.c              |  5 +++++
+ nvidia/linux_nvswitch.c               | 17 +++++++++++++++++
+ nvidia/os-interface.c                 |  5 +++++
+ 4 files changed, 38 insertions(+)
+
+diff --git a/nvidia-modeset/nvidia-modeset-linux.c b/nvidia-modeset/nvidia-modeset-linux.c
+index f6810d2..b5b33d7 100644
+--- a/nvidia-modeset/nvidia-modeset-linux.c
++++ b/nvidia-modeset/nvidia-modeset-linux.c
+@@ -388,7 +388,18 @@ int nvkms_strcmp(const char *s1, const char *s2)
+ 
+ char* nvkms_strncpy(char *dest, const char *src, size_t n)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(7, 2, 0)
++    // Rel. commit "string: Remove strncpy() from the kernel" (Kees Cook, 18 Jun 2026)
++    // Open-coded strncpy().
++    size_t i;
++    for (i = 0; i < n && src[i] != '\0'; i++)
++        dest[i] = src[i];
++    for (; i < n; i++)
++        dest[i] = '\0';
++    return dest;
++#else
+     return strncpy(dest, src, n);
++#endif
+ }
+ 
+ void nvkms_usleep(NvU64 usec)
+diff --git a/nvidia-uvm/uvm_pmm_gpu.c b/nvidia-uvm/uvm_pmm_gpu.c
+index 003bde5..b0b0aa9 100644
+--- a/nvidia-uvm/uvm_pmm_gpu.c
++++ b/nvidia-uvm/uvm_pmm_gpu.c
+@@ -2925,7 +2925,12 @@ static NV_STATUS init_chunk_split_cache_level(uvm_pmm_gpu_t *pmm, size_t level)
+             size_t size;
+             size_t align;
+             if (level == 0) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(7, 2, 0)
++                // Rel. commit "string: Remove strncpy() from the kernel" (Kees Cook, 18 Jun 2026)
++                strscpy(chunk_split_cache[level].name, "uvm_gpu_chunk_t", sizeof(chunk_split_cache[level].name));
++#else
+                 strncpy(chunk_split_cache[level].name, "uvm_gpu_chunk_t", sizeof(chunk_split_cache[level].name) - 1);
++#endif
+                 size = sizeof(uvm_gpu_chunk_t);
+                 align = __alignof__(uvm_gpu_chunk_t);
+             } else {
+diff --git a/nvidia/linux_nvswitch.c b/nvidia/linux_nvswitch.c
+index 18e196e..5927f10 100644
+--- a/nvidia/linux_nvswitch.c
++++ b/nvidia/linux_nvswitch.c
+@@ -2011,7 +2011,13 @@ nvswitch_os_read_registry_dword
+         return -NVL_ERR_GENERIC;
+     }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(7, 2, 0)
++    // Rel. commit "string: Remove strncpy() from the kernel" (Kees Cook, 18 Jun 2026)
++    // The source range holds no NUL, so this is an exact-length copy.
++    memcpy(regkey_val, regkey_val_start, regkey_val_len);
++#else
+     strncpy(regkey_val, regkey_val_start, regkey_val_len);
++#endif
+     regkey_val[regkey_val_len] = '\0';
+ 
+     if (nvswitch_os_strtouint(regkey_val, data) != 0)
+@@ -2327,7 +2333,18 @@ nvswitch_os_strncpy
+     NvLength length
+ )
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(7, 2, 0)
++    // Rel. commit "string: Remove strncpy() from the kernel" (Kees Cook, 18 Jun 2026)
++    // Open-coded strncpy().
++    NvLength i;
++    for (i = 0; i < length && src[i] != '\0'; i++)
++        dest[i] = src[i];
++    for (; i < length; i++)
++        dest[i] = '\0';
++    return dest;
++#else
+     return strncpy(dest, src, length);
++#endif
+ }
+ 
+ int
+diff --git a/nvidia/os-interface.c b/nvidia/os-interface.c
+index 7379965..bd5904e 100644
+--- a/nvidia/os-interface.c
++++ b/nvidia/os-interface.c
+@@ -645,8 +645,13 @@ NvU32 NV_API_CALL os_get_current_process(void)
+ void NV_API_CALL os_get_current_process_name(char *buf, NvU32 len)
+ {
+     task_lock(current);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(7, 2, 0)
++    // Rel. commit "string: Remove strncpy() from the kernel" (Kees Cook, 18 Jun 2026)
++    strscpy(buf, current->comm, len);
++#else
+     strncpy(buf, current->comm, len - 1);
+     buf[len - 1] = '\0';
++#endif
+     task_unlock(current);
+ }
+ 
+-- 
+2.54.0
+
Risk 0/5 · Safe nvidia-470xx-fix-linux-7.3.patch
Result #3031

Comment

The patch only adds a kernel-version guard around NVIDIA's ACPI hotkey/powersource integration and stubs out nv_acpi_init()/nv_acpi_uninit() on Linux >= 7.3. There are no new downloads, scripts, privilege changes, or packaging-time execution paths. The added comments explain the upstream kernel API removal and the fallback is a no-op, which may reduce functionality but does not introduce a security issue in the package artifact itself.

@@ -0,0 +1,97 @@
+From 98f927ae8b5720a680fe26f1c845330ad175783f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Joan=20Bruguera=20Mic=C3=B3?= <joanbrugueram@gmail.com>
+Date: Sun, 12 Jul 2026 15:45:19 +0000
+Subject: [PATCH] Tentative fix for NVIDIA 470.256.02 driver for Linux 7.3-rc1
+
+---
+ nvidia/nv-acpi.c | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/nvidia/nv-acpi.c b/nvidia/nv-acpi.c
+index 0d11845..eb82b1d 100644
+--- a/nvidia/nv-acpi.c
++++ b/nvidia/nv-acpi.c
+@@ -22,6 +22,8 @@ static NV_STATUS   nv_acpi_extract_buffer  (const union acpi_object *, void *, N
+ static NV_STATUS   nv_acpi_extract_package (const union acpi_object *, void *, NvU32, NvU32 *);
+ static NV_STATUS   nv_acpi_extract_object  (const union acpi_object *, void *, NvU32, NvU32 *);
+ 
++// Rel. commit "ACPI: bus: Eliminate struct acpi_driver" (Rafael J. Wysocki, 1 Jul 2026)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(7, 3, 0)
+ static int         nv_acpi_add             (struct acpi_device *);
+ 
+ #if !defined(NV_ACPI_DEVICE_OPS_REMOVE_ARGUMENT_COUNT)
+@@ -33,12 +35,15 @@ static int         nv_acpi_remove(struct acpi_device *device);
+ #endif
+ 
+ static void        nv_acpi_event           (acpi_handle, u32, void *);
++#endif
+ static void        nv_acpi_powersource_hotplug_event(acpi_handle, u32, void *);
+ static acpi_status nv_acpi_find_methods    (acpi_handle, u32, void *, void **);
+ static NV_STATUS   nv_acpi_nvif_method     (NvU32, NvU32, void *, NvU16, NvU32 *, void *, NvU16 *);
+ 
+ static NV_STATUS   nv_acpi_wmmx_method     (NvU32, NvU8 *, NvU16 *);
+ 
++// Rel. commit "ACPI: bus: Eliminate struct acpi_driver" (Rafael J. Wysocki, 1 Jul 2026)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(7, 3, 0)
+ static const struct acpi_device_id nv_video_device_ids[] = {
+     {
+         .id          = ACPI_VIDEO_HID,
+@@ -51,6 +56,7 @@ static const struct acpi_device_id nv_video_device_ids[] = {
+ };
+ 
+ static struct acpi_driver *nv_acpi_driver;
++#endif
+ static acpi_handle nvif_handle = NULL;
+ static acpi_handle nvif_parent_gpu_handle  = NULL;
+ static acpi_handle wmmx_handle = NULL;
+@@ -76,6 +82,8 @@ static NvBool battery_present = NV_FALSE;
+ #define ACPI_VIDEO_CLASS    "video"
+ #endif
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(7, 3, 0)
++// Rel. commit "ACPI: bus: Eliminate struct acpi_driver" (Rafael J. Wysocki, 1 Jul 2026)
+ static const struct acpi_driver nv_acpi_driver_template = {
+     .name = "NVIDIA ACPI Video Driver",
+     .class = ACPI_VIDEO_CLASS,
+@@ -85,6 +93,7 @@ static const struct acpi_driver nv_acpi_driver_template = {
+         .remove = nv_acpi_remove,
+     },
+ };
++#endif
+ 
+ static int nv_acpi_get_device_handle(nv_state_t *nv, acpi_handle *dev_handle)
+ {
+@@ -146,6 +155,7 @@ void nv_acpi_unregister_notifier(nv_linux_state_t *nvl)
+     unregister_acpi_notifier(&nvl->acpi_nb);
+ }
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(7, 3, 0)
+ int nv_acpi_init(void)
+ {
+     /*
+@@ -497,6 +507,22 @@ static void nv_acpi_event(acpi_handle handle, u32 event_type, void *data)
+     // once we are subscribed to ACPI events, we don't have to re-subscribe unless
+     // unsubscribe.
+ }
++#else
++// Rel. commit "ACPI: bus: Eliminate struct acpi_driver" (Rafael J. Wysocki, 1 Jul 2026)
++// The old API (struct acpi_driver, acpi_bus_register_driver, etc.) is removed
++// and the replacement (struct platform_driver, platform_driver_register) is
++// GPL-only, so remove this; It only impacts laptop hotkey handling rather than
++// any critical function of the driver.
++int nv_acpi_init(void)
++{
++    return 0;
++}
++
++int nv_acpi_uninit(void)
++{
++    return 0;
++}
++#endif
+ 
+ NV_STATUS NV_API_CALL nv_acpi_get_powersource(NvU32 *ac_plugged)
+ {
+-- 
+2.55.0
+