Skip to content

Commit fade1f7

Browse files
committed
575.64
1 parent 30e15d7 commit fade1f7

35 files changed

+50249
-49935
lines changed

README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# NVIDIA Linux Open GPU Kernel Module Source
22

33
This is the source release of the NVIDIA Linux open GPU kernel modules,
4-
version 575.57.08.
4+
version 575.64.
55

66

77
## How to Build
@@ -17,7 +17,7 @@ as root:
1717

1818
Note that the kernel modules built here must be used with GSP
1919
firmware and user-space NVIDIA GPU driver components from a corresponding
20-
575.57.08 driver release. This can be achieved by installing
20+
575.64 driver release. This can be achieved by installing
2121
the NVIDIA GPU driver from the .run file using the `--no-kernel-modules`
2222
option. E.g.,
2323

@@ -185,7 +185,7 @@ table below).
185185
For details on feature support and limitations, see the NVIDIA GPU driver
186186
end user README here:
187187

188-
https://us.download.nvidia.com/XFree86/Linux-x86_64/575.57.08/README/kernel_open.html
188+
https://us.download.nvidia.com/XFree86/Linux-x86_64/575.64/README/kernel_open.html
189189

190190
For vGPU support, please refer to the README.vgpu packaged in the vGPU Host
191191
Package for more details.
@@ -968,14 +968,28 @@ Subsystem Device ID.
968968
| NVIDIA GeForce RTX 5070 Ti | 2C05 |
969969
| NVIDIA GeForce RTX 5090 Laptop GPU | 2C18 |
970970
| NVIDIA GeForce RTX 5080 Laptop GPU | 2C19 |
971+
| NVIDIA RTX PRO 4500 Blackwell | 2C31 1028 2051 |
972+
| NVIDIA RTX PRO 4500 Blackwell | 2C31 103C 2051 |
973+
| NVIDIA RTX PRO 4500 Blackwell | 2C31 10DE 2051 |
974+
| NVIDIA RTX PRO 4500 Blackwell | 2C31 17AA 2051 |
975+
| NVIDIA RTX PRO 4000 Blackwell | 2C34 1028 2052 |
976+
| NVIDIA RTX PRO 4000 Blackwell | 2C34 103C 2052 |
977+
| NVIDIA RTX PRO 4000 Blackwell | 2C34 10DE 2052 |
978+
| NVIDIA RTX PRO 4000 Blackwell | 2C34 17AA 2052 |
979+
| NVIDIA RTX PRO 5000 Blackwell Generation Laptop GPU | 2C38 |
980+
| NVIDIA RTX PRO 4000 Blackwell Generation Laptop GPU | 2C39 |
971981
| NVIDIA GeForce RTX 5090 Laptop GPU | 2C58 |
972982
| NVIDIA GeForce RTX 5080 Laptop GPU | 2C59 |
973983
| NVIDIA GeForce RTX 5060 Ti | 2D04 |
974984
| NVIDIA GeForce RTX 5060 | 2D05 |
975985
| NVIDIA GeForce RTX 5070 Laptop GPU | 2D18 |
976986
| NVIDIA GeForce RTX 5060 Laptop GPU | 2D19 |
987+
| NVIDIA RTX PRO 2000 Blackwell Generation Laptop GPU | 2D39 |
977988
| NVIDIA GeForce RTX 5070 Laptop GPU | 2D58 |
978989
| NVIDIA GeForce RTX 5060 Laptop GPU | 2D59 |
990+
| NVIDIA RTX PRO 1000 Blackwell Generation Laptop GPU | 2DB8 |
991+
| NVIDIA RTX PRO 500 Blackwell Generation Laptop GPU | 2DB9 |
979992
| NVIDIA GeForce RTX 5070 | 2F04 |
980993
| NVIDIA GeForce RTX 5070 Ti Laptop GPU | 2F18 |
994+
| NVIDIA RTX PRO 3000 Blackwell Generation Laptop GPU | 2F38 |
981995
| NVIDIA GeForce RTX 5070 Ti Laptop GPU | 2F58 |

kernel-open/Kbuild

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ ccflags-y += -I$(src)/common/inc
7979
ccflags-y += -I$(src)
8080
ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
8181
ccflags-y += -D__KERNEL__ -DMODULE -DNVRM
82-
ccflags-y += -DNV_VERSION_STRING=\"575.57.08\"
82+
ccflags-y += -DNV_VERSION_STRING=\"575.64\"
8383

8484
ifneq ($(SYSSRCHOST1X),)
8585
ccflags-y += -I$(SYSSRCHOST1X)

kernel-open/common/inc/nv-mm.h

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2016-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2016-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: MIT
44
*
55
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -297,9 +297,21 @@ static inline struct rw_semaphore *nv_mmap_get_lock(struct mm_struct *mm)
297297
#endif
298298
}
299299

300+
#define NV_CAN_CALL_VMA_START_WRITE 1
301+
302+
#if !NV_CAN_CALL_VMA_START_WRITE
303+
/*
304+
* Commit 45ad9f5290dc updated vma_start_write() to call __vma_start_write().
305+
*/
306+
void nv_vma_start_write(struct vm_area_struct *);
307+
#endif
308+
300309
static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
301310
{
302-
#if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
311+
#if !NV_CAN_CALL_VMA_START_WRITE
312+
nv_vma_start_write(vma);
313+
ACCESS_PRIVATE(vma, __vm_flags) |= flags;
314+
#elif defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
303315
vm_flags_set(vma, flags);
304316
#else
305317
vma->vm_flags |= flags;
@@ -308,7 +320,10 @@ static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
308320

309321
static inline void nv_vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
310322
{
311-
#if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
323+
#if !NV_CAN_CALL_VMA_START_WRITE
324+
nv_vma_start_write(vma);
325+
ACCESS_PRIVATE(vma, __vm_flags) &= ~flags;
326+
#elif defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
312327
vm_flags_clear(vma, flags);
313328
#else
314329
vma->vm_flags &= ~flags;

kernel-open/conftest.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7604,7 +7604,7 @@ compile_test() {
76047604
CODE="
76057605
#include <linux/mmzone.h>
76067606
int conftest_page_pgmap(void) {
7607-
return page_pgmap(NULL);
7607+
return page_pgmap();
76087608
}"
76097609

76107610
compile_check_conftest "$CODE" "NV_PAGE_PGMAP_PRESENT" "" "functions"

kernel-open/nvidia-drm/nvidia-drm-sources.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ NV_CONFTEST_GENERIC_COMPILE_TESTS += drm_alpha_blending_available
3838
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_drm_gem_prime_fd_to_handle
3939
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_drm_gem_prime_handle_to_fd
4040
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_timer_delete_sync
41+
NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_gpl___vma_start_write
4142

4243
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_dev_unref
4344
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_reinit_primary_mode_group

kernel-open/nvidia-uvm/uvm_ats_faults.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,20 @@ NV_STATUS uvm_ats_service_access_counters(uvm_gpu_va_space_t *gpu_va_space,
757757
&ats_context->access_counters.accessed_mask,
758758
&ats_context->prefetch_state.residency_mask);
759759

760+
// Pretend that pages that are already resident at the destination GPU were
761+
// migrated now. This makes sure that the access counter is cleared even if
762+
// the accessed pages, were already resident on the target.
763+
// TODO: Bug 5296998: [uvm][ats] Not clearing stale access counter
764+
// notifications can lead to missed migrations
765+
// The same problem of stale notification exists for migration to other
766+
// locations than local vidmem. However, stale notifications to data
767+
// migrated to another remote location are identical to those triggered
768+
// by accessing memory that cannot or should not be migrated.
769+
if (uvm_id_equal(ats_context->residency_id, gpu_va_space->gpu->id)) {
770+
uvm_page_mask_copy(&ats_context->access_counters.migrated_mask,
771+
&ats_context->prefetch_state.residency_mask);
772+
}
773+
760774
for_each_va_block_subregion_in_mask(subregion, &ats_context->access_counters.accessed_mask, region) {
761775
NV_STATUS status;
762776
NvU64 start = base + (subregion.first * PAGE_SIZE);
@@ -769,7 +783,7 @@ NV_STATUS uvm_ats_service_access_counters(uvm_gpu_va_space_t *gpu_va_space,
769783

770784
status = service_ats_requests(gpu_va_space, vma, start, length, access_type, service_type, ats_context);
771785

772-
// clear access counters if pages were migrated or migration needs to
786+
// Clear access counters if pages were migrated or migration needs to
773787
// be retried
774788
if (status == NV_OK || status == NV_ERR_BUSY_RETRY)
775789
uvm_page_mask_region_fill(migrated_mask, subregion);

kernel-open/nvidia/nv-mmap.c

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 1999-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 1999-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
33
* SPDX-License-Identifier: MIT
44
*
55
* Permission is hereby granted, free of charge, to any person obtaining a
@@ -847,3 +847,75 @@ void NV_API_CALL nv_set_safe_to_mmap_locked(
847847

848848
nvl->safe_to_mmap = safe_to_mmap;
849849
}
850+
851+
#if !NV_CAN_CALL_VMA_START_WRITE
852+
static NvBool nv_vma_enter_locked(struct vm_area_struct *vma, NvBool detaching)
853+
{
854+
NvU32 tgt_refcnt = VMA_LOCK_OFFSET;
855+
NvBool interrupted = NV_FALSE;
856+
if (!detaching)
857+
{
858+
tgt_refcnt++;
859+
}
860+
if (!refcount_add_not_zero(VMA_LOCK_OFFSET, &vma->vm_refcnt))
861+
{
862+
return NV_FALSE;
863+
}
864+
865+
rwsem_acquire(&vma->vmlock_dep_map, 0, 0, _RET_IP_);
866+
prepare_to_rcuwait(&vma->vm_mm->vma_writer_wait);
867+
868+
for (;;)
869+
{
870+
set_current_state(TASK_UNINTERRUPTIBLE);
871+
if (refcount_read(&vma->vm_refcnt) == tgt_refcnt)
872+
break;
873+
874+
if (signal_pending_state(TASK_UNINTERRUPTIBLE, current))
875+
{
876+
interrupted = NV_TRUE;
877+
break;
878+
}
879+
880+
schedule();
881+
}
882+
883+
// This is an open-coded version of finish_rcuwait().
884+
rcu_assign_pointer(vma->vm_mm->vma_writer_wait.task, NULL);
885+
__set_current_state(TASK_RUNNING);
886+
887+
if (interrupted)
888+
{
889+
// Clean up on error: release refcount and dep_map
890+
refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
891+
rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
892+
return NV_FALSE;
893+
}
894+
895+
lock_acquired(&vma->vmlock_dep_map, _RET_IP_);
896+
return NV_TRUE;
897+
}
898+
899+
/*
900+
* Helper function to handle VMA locking and refcount management.
901+
*/
902+
void nv_vma_start_write(struct vm_area_struct *vma)
903+
{
904+
NvU32 mm_lock_seq;
905+
NvBool locked;
906+
if (__is_vma_write_locked(vma, &mm_lock_seq))
907+
return;
908+
909+
locked = nv_vma_enter_locked(vma, NV_FALSE);
910+
911+
WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq);
912+
if (locked)
913+
{
914+
NvBool detached;
915+
detached = refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
916+
rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
917+
WARN_ON_ONCE(detached);
918+
}
919+
}
920+
EXPORT_SYMBOL(nv_vma_start_write);
921+
#endif // !NV_CAN_CALL_VMA_START_WRITE

kernel-open/nvidia/nvidia.Kbuild

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl___platform_driver_regis
240240
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present___platform_driver_register
241241
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_hrtimer_setup
242242
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_timer_delete_sync
243+
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl___vma_start_write
243244

244245
NV_CONFTEST_TYPE_COMPILE_TESTS += dma_ops
245246
NV_CONFTEST_TYPE_COMPILE_TESTS += swiotlb_dma_ops

src/common/inc/nvBldVer.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,25 @@
3636
// and then checked back in. You cannot make changes to these sections without
3737
// corresponding changes to the buildmeister script
3838
#ifndef NV_BUILD_BRANCH
39-
#define NV_BUILD_BRANCH r576_41
39+
#define NV_BUILD_BRANCH r575_00
4040
#endif
4141
#ifndef NV_PUBLIC_BRANCH
42-
#define NV_PUBLIC_BRANCH r576_41
42+
#define NV_PUBLIC_BRANCH r575_00
4343
#endif
4444

4545
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
46-
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r575/r576_41-183"
47-
#define NV_BUILD_CHANGELIST_NUM (36029171)
46+
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r575/r575_00-212"
47+
#define NV_BUILD_CHANGELIST_NUM (36105353)
4848
#define NV_BUILD_TYPE "Official"
49-
#define NV_BUILD_NAME "rel/gpu_drv/r575/r576_41-183"
50-
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36029171)
49+
#define NV_BUILD_NAME "rel/gpu_drv/r575/r575_00-212"
50+
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36105353)
5151

5252
#else /* Windows builds */
53-
#define NV_BUILD_BRANCH_VERSION "r576_41-8"
54-
#define NV_BUILD_CHANGELIST_NUM (36020778)
53+
#define NV_BUILD_BRANCH_VERSION "r575_00-160"
54+
#define NV_BUILD_CHANGELIST_NUM (36104828)
5555
#define NV_BUILD_TYPE "Official"
56-
#define NV_BUILD_NAME "576.60"
57-
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36020778)
56+
#define NV_BUILD_NAME "576.76"
57+
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36104828)
5858
#define NV_BUILD_BRANCH_BASE_VERSION R575
5959
#endif
6060
// End buildmeister python edited section

src/common/inc/nvUnixVersion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
55
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)
66

7-
#define NV_VERSION_STRING "575.57.08"
7+
#define NV_VERSION_STRING "575.64"
88

99
#else
1010

0 commit comments

Comments
 (0)