Skip to content

Commit 3bf16b8

Browse files
committed
550.67
1 parent 12933b2 commit 3bf16b8

File tree

78 files changed

+1395
-585
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1395
-585
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Release 550 Entries
44

5+
### [550.67] 2024-03-19
6+
57
### [550.54.15] 2024-03-18
68

79
### [550.54.14] 2024-02-23

README.md

Lines changed: 6 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 550.54.15.
4+
version 550.67.
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-
550.54.15 driver release. This can be achieved by installing
20+
550.67 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

@@ -188,7 +188,7 @@ encountered specific to them.
188188
For details on feature support and limitations, see the NVIDIA GPU driver
189189
end user README here:
190190

191-
https://us.download.nvidia.com/XFree86/Linux-x86_64/550.54.15/README/kernel_open.html
191+
https://us.download.nvidia.com/XFree86/Linux-x86_64/550.67/README/kernel_open.html
192192

193193
For vGPU support, please refer to the README.vgpu packaged in the vGPU Host
194194
Package for more details.
@@ -867,13 +867,15 @@ Subsystem Device ID.
867867
| NVIDIA GeForce RTX 4080 SUPER | 2702 |
868868
| NVIDIA GeForce RTX 4080 | 2704 |
869869
| NVIDIA GeForce RTX 4070 Ti SUPER | 2705 |
870+
| NVIDIA GeForce RTX 4070 | 2709 |
870871
| NVIDIA GeForce RTX 4090 Laptop GPU | 2717 |
871872
| NVIDIA RTX 5000 Ada Generation Laptop GPU | 2730 |
872873
| NVIDIA GeForce RTX 4090 Laptop GPU | 2757 |
873874
| NVIDIA RTX 5000 Ada Generation Embedded GPU | 2770 |
874875
| NVIDIA GeForce RTX 4070 Ti | 2782 |
875876
| NVIDIA GeForce RTX 4070 SUPER | 2783 |
876877
| NVIDIA GeForce RTX 4070 | 2786 |
878+
| NVIDIA GeForce RTX 4060 Ti | 2788 |
877879
| NVIDIA GeForce RTX 4080 Laptop GPU | 27A0 |
878880
| NVIDIA RTX 4000 SFF Ada Generation | 27B0 1028 16FA |
879881
| NVIDIA RTX 4000 SFF Ada Generation | 27B0 103C 16FA |
@@ -896,6 +898,7 @@ Subsystem Device ID.
896898
| NVIDIA RTX 3500 Ada Generation Embedded GPU | 27FB |
897899
| NVIDIA GeForce RTX 4060 Ti | 2803 |
898900
| NVIDIA GeForce RTX 4060 Ti | 2805 |
901+
| NVIDIA GeForce RTX 4060 | 2808 |
899902
| NVIDIA GeForce RTX 4070 Laptop GPU | 2820 |
900903
| NVIDIA RTX 3000 Ada Generation Laptop GPU | 2838 |
901904
| NVIDIA GeForce RTX 4070 Laptop GPU | 2860 |

kernel-open/Kbuild

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ EXTRA_CFLAGS += -I$(src)/common/inc
7272
EXTRA_CFLAGS += -I$(src)
7373
EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
7474
EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM
75-
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"550.54.15\"
75+
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"550.67\"
7676

7777
ifneq ($(SYSSRCHOST1X),)
7878
EXTRA_CFLAGS += -I$(SYSSRCHOST1X)
@@ -170,6 +170,8 @@ NV_CONFTEST_CMD := /bin/sh $(NV_CONFTEST_SCRIPT) \
170170
NV_CFLAGS_FROM_CONFTEST := $(shell $(NV_CONFTEST_CMD) build_cflags)
171171

172172
NV_CONFTEST_CFLAGS = $(NV_CFLAGS_FROM_CONFTEST) $(EXTRA_CFLAGS) -fno-pie
173+
NV_CONFTEST_CFLAGS += $(call cc-disable-warning,pointer-sign)
174+
NV_CONFTEST_CFLAGS += $(call cc-option,-fshort-wchar,)
173175
NV_CONFTEST_CFLAGS += -Wno-error
174176

175177
NV_CONFTEST_COMPILE_TEST_HEADERS := $(obj)/conftest/macros.h

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

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2001-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2001-2024 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
@@ -1989,31 +1989,6 @@ static inline NvBool nv_platform_use_auto_online(nv_linux_state_t *nvl)
19891989
return nvl->numa_info.use_auto_online;
19901990
}
19911991

1992-
typedef struct {
1993-
NvU64 base;
1994-
NvU64 size;
1995-
NvU32 nodeId;
1996-
int ret;
1997-
} remove_numa_memory_info_t;
1998-
1999-
static void offline_numa_memory_callback
2000-
(
2001-
void *args
2002-
)
2003-
{
2004-
#ifdef NV_OFFLINE_AND_REMOVE_MEMORY_PRESENT
2005-
remove_numa_memory_info_t *pNumaInfo = (remove_numa_memory_info_t *)args;
2006-
#ifdef NV_REMOVE_MEMORY_HAS_NID_ARG
2007-
pNumaInfo->ret = offline_and_remove_memory(pNumaInfo->nodeId,
2008-
pNumaInfo->base,
2009-
pNumaInfo->size);
2010-
#else
2011-
pNumaInfo->ret = offline_and_remove_memory(pNumaInfo->base,
2012-
pNumaInfo->size);
2013-
#endif
2014-
#endif
2015-
}
2016-
20171992
typedef enum
20181993
{
20191994
NV_NUMA_STATUS_DISABLED = 0,

kernel-open/conftest.sh

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3096,6 +3096,22 @@ compile_test() {
30963096

30973097
;;
30983098

3099+
foll_longterm_present)
3100+
#
3101+
# Determine if FOLL_LONGTERM enum is present or not
3102+
#
3103+
# Added by commit 932f4a630a69 ("mm/gup: replace
3104+
# get_user_pages_longterm() with FOLL_LONGTERM") in
3105+
# v5.2
3106+
#
3107+
CODE="
3108+
#include <linux/mm.h>
3109+
int foll_longterm = FOLL_LONGTERM;
3110+
"
3111+
3112+
compile_check_conftest "$CODE" "NV_FOLL_LONGTERM_PRESENT" "" "types"
3113+
;;
3114+
30993115
vfio_pin_pages_has_vfio_device_arg)
31003116
#
31013117
# Determine if vfio_pin_pages() kABI accepts "struct vfio_device *"
@@ -5152,11 +5168,15 @@ compile_test() {
51525168
# commit 49a3f51dfeee ("drm/gem: Use struct dma_buf_map in GEM
51535169
# vmap ops and convert GEM backends") in v5.11.
51545170
#
5171+
# Note that the 'map' argument type is changed from 'struct dma_buf_map'
5172+
# to 'struct iosys_map' by commit 7938f4218168 ("dma-buf-map: Rename
5173+
# to iosys-map) in v5.18.
5174+
#
51555175
CODE="
51565176
#include <drm/drm_gem.h>
51575177
int conftest_drm_gem_object_vmap_has_map_arg(
5158-
struct drm_gem_object *obj, struct dma_buf_map *map) {
5159-
return obj->funcs->vmap(obj, map);
5178+
struct drm_gem_object *obj) {
5179+
return obj->funcs->vmap(obj, NULL);
51605180
}"
51615181

51625182
compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_VMAP_HAS_MAP_ARG" "" "types"

kernel-open/nvidia-drm/nvidia-drm-drv.c

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1903,8 +1903,33 @@ void nv_drm_remove_devices(void)
19031903
*/
19041904
void nv_drm_suspend_resume(NvBool suspend)
19051905
{
1906+
static DEFINE_MUTEX(nv_drm_suspend_mutex);
1907+
static NvU32 nv_drm_suspend_count = 0;
1908+
struct nv_drm_device *nv_dev;
1909+
1910+
mutex_lock(&nv_drm_suspend_mutex);
1911+
1912+
/*
1913+
* Count the number of times the driver is asked to suspend. Suspend all DRM
1914+
* devices on the first suspend call and resume them on the last resume
1915+
* call. This is necessary because the kernel may call nvkms_suspend()
1916+
* simultaneously for each GPU, but NVKMS itself also suspends all GPUs on
1917+
* the first call.
1918+
*/
1919+
if (suspend) {
1920+
if (nv_drm_suspend_count++ > 0) {
1921+
goto done;
1922+
}
1923+
} else {
1924+
BUG_ON(nv_drm_suspend_count == 0);
1925+
1926+
if (--nv_drm_suspend_count > 0) {
1927+
goto done;
1928+
}
1929+
}
1930+
19061931
#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE)
1907-
struct nv_drm_device *nv_dev = dev_list;
1932+
nv_dev = dev_list;
19081933

19091934
/*
19101935
* NVKMS shuts down all heads on suspend. Update DRM state accordingly.
@@ -1930,6 +1955,9 @@ void nv_drm_suspend_resume(NvBool suspend)
19301955
}
19311956
}
19321957
#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */
1958+
1959+
done:
1960+
mutex_unlock(&nv_drm_suspend_mutex);
19331961
}
19341962

19351963
#endif /* NV_DRM_AVAILABLE */

kernel-open/nvidia-modeset/nvidia-modeset-linux.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,11 @@
5656
#include "nv-lock.h"
5757
#include "nv-chardev-numbers.h"
5858

59-
#if !defined(CONFIG_RETPOLINE)
59+
/*
60+
* Commit aefb2f2e619b ("x86/bugs: Rename CONFIG_RETPOLINE =>
61+
* CONFIG_MITIGATION_RETPOLINE) in v6.8 renamed CONFIG_RETPOLINE.
62+
*/
63+
#if !defined(CONFIG_RETPOLINE) && !defined(CONFIG_MITIGATION_RETPOLINE)
6064
#include "nv-retpoline.h"
6165
#endif
6266

@@ -499,8 +503,9 @@ nvkms_event_queue_changed(nvkms_per_open_handle_t *pOpenKernel,
499503

500504
static void nvkms_suspend(NvU32 gpuId)
501505
{
506+
nvKmsKapiSuspendResume(NV_TRUE /* suspend */);
507+
502508
if (gpuId == 0) {
503-
nvKmsKapiSuspendResume(NV_TRUE /* suspend */);
504509
nvkms_write_lock_pm_lock();
505510
}
506511

@@ -517,8 +522,9 @@ static void nvkms_resume(NvU32 gpuId)
517522

518523
if (gpuId == 0) {
519524
nvkms_write_unlock_pm_lock();
520-
nvKmsKapiSuspendResume(NV_FALSE /* suspend */);
521525
}
526+
527+
nvKmsKapiSuspendResume(NV_FALSE /* suspend */);
522528
}
523529

524530

kernel-open/nvidia-uvm/uvm_channel_test.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -691,12 +691,16 @@ static NV_STATUS stress_test_all_gpus_in_va(uvm_va_space_t *va_space,
691691
if (uvm_test_rng_range_32(&rng, 0, 1) == 0) {
692692
NvU32 random_stream_index = uvm_test_rng_range_32(&rng, 0, num_streams - 1);
693693
uvm_test_stream_t *random_stream = &streams[random_stream_index];
694-
uvm_push_acquire_tracker(&stream->push, &random_stream->tracker);
695-
snapshot_counter(&stream->push,
696-
random_stream->counter_mem,
697-
stream->other_stream_counter_snapshots_mem,
698-
i,
699-
random_stream->queued_counter_repeat);
694+
695+
if ((random_stream->push.gpu == gpu) || uvm_push_allow_dependencies_across_gpus()) {
696+
uvm_push_acquire_tracker(&stream->push, &random_stream->tracker);
697+
698+
snapshot_counter(&stream->push,
699+
random_stream->counter_mem,
700+
stream->other_stream_counter_snapshots_mem,
701+
i,
702+
random_stream->queued_counter_repeat);
703+
}
700704
}
701705

702706
uvm_push_end(&stream->push);

kernel-open/nvidia-uvm/uvm_fault_buffer_flush_test.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ NV_STATUS uvm_test_fault_buffer_flush(UVM_TEST_FAULT_BUFFER_FLUSH_PARAMS *params
5151

5252
uvm_va_space_up_read(va_space);
5353

54-
if (uvm_processor_mask_empty(retained_gpus))
55-
return NV_ERR_INVALID_DEVICE;
54+
if (uvm_processor_mask_empty(retained_gpus)) {
55+
status = NV_ERR_INVALID_DEVICE;
56+
goto out;
57+
}
5658

5759
for (i = 0; i < params->iterations; i++) {
5860
if (fatal_signal_pending(current)) {

kernel-open/nvidia-uvm/uvm_global.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,4 +409,10 @@ NV_STATUS uvm_service_block_context_init(void);
409409
// Release fault service contexts if any exist.
410410
void uvm_service_block_context_exit(void);
411411

412+
// Allocate a service block context
413+
uvm_service_block_context_t *uvm_service_block_context_alloc(struct mm_struct *mm);
414+
415+
// Free a servic block context
416+
void uvm_service_block_context_free(uvm_service_block_context_t *service_context);
417+
412418
#endif // __UVM_GLOBAL_H__

0 commit comments

Comments
 (0)