Skip to content

Commit de3d54a

Browse files
committed
580.119.02
1 parent 2af9f1f commit de3d54a

File tree

96 files changed

+77128
-74563
lines changed

Some content is hidden

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

96 files changed

+77128
-74563
lines changed

README.md

Lines changed: 8 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 580.105.08.
4+
version 580.119.02.
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-
580.105.08 driver release. This can be achieved by installing
20+
580.119.02 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/580.105.08/README/kernel_open.html
188+
https://us.download.nvidia.com/XFree86/Linux-x86_64/580.119.02/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.
@@ -959,9 +959,13 @@ Subsystem Device ID.
959959
| NVIDIA RTX PRO 6000 Blackwell Workstation Edition | 2BB1 10DE 204B |
960960
| NVIDIA RTX PRO 6000 Blackwell Workstation Edition | 2BB1 17AA 204B |
961961
| NVIDIA RTX PRO 5000 Blackwell | 2BB3 1028 204D |
962+
| NVIDIA RTX PRO 5000 72GB Blackwell | 2BB3 1028 227A |
962963
| NVIDIA RTX PRO 5000 Blackwell | 2BB3 103C 204D |
964+
| NVIDIA RTX PRO 5000 72GB Blackwell | 2BB3 103C 227A |
963965
| NVIDIA RTX PRO 5000 Blackwell | 2BB3 10DE 204D |
966+
| NVIDIA RTX PRO 5000 72GB Blackwell | 2BB3 10DE 227A |
964967
| NVIDIA RTX PRO 5000 Blackwell | 2BB3 17AA 204D |
968+
| NVIDIA RTX PRO 5000 72GB Blackwell | 2BB3 17AA 227A |
965969
| NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition | 2BB4 1028 204C |
966970
| NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition | 2BB4 103C 204C |
967971
| NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition | 2BB4 10DE 204C |
@@ -1008,6 +1012,7 @@ Subsystem Device ID.
10081012
| NVIDIA RTX PRO 500 Blackwell Generation Laptop GPU | 2DB9 |
10091013
| NVIDIA GeForce RTX 5050 Laptop GPU | 2DD8 |
10101014
| NVIDIA RTX PRO 500 Blackwell Embedded GPU | 2DF9 |
1015+
| NVIDIA GB10 | 2E12 10DE 21EC |
10111016
| NVIDIA GeForce RTX 5070 | 2F04 |
10121017
| NVIDIA GeForce RTX 5070 Ti Laptop GPU | 2F18 |
10131018
| NVIDIA RTX PRO 3000 Blackwell Generation Laptop GPU | 2F38 |

kernel-open/Kbuild

Lines changed: 2 additions & 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=\"580.105.08\"
82+
ccflags-y += -DNV_VERSION_STRING=\"580.119.02\"
8383

8484
# Include and link Tegra out-of-tree modules.
8585
ifneq ($(wildcard /usr/src/nvidia/nvidia-oot),)
@@ -187,6 +187,7 @@ NV_CONFTEST_CFLAGS += $(filter -std=%,$(KBUILD_CFLAGS))
187187
NV_CONFTEST_CFLAGS += $(call cc-disable-warning,pointer-sign)
188188
NV_CONFTEST_CFLAGS += $(call cc-option,-fshort-wchar,)
189189
NV_CONFTEST_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types,)
190+
NV_CONFTEST_CFLAGS += $(call cc-option,-fms-extensions,)
190191
NV_CONFTEST_CFLAGS += -Wno-error
191192

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

kernel-open/common/inc/nv-firmware-registry.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 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
@@ -59,8 +59,9 @@
5959
#define NV_REG_ENABLE_GPU_FIRMWARE_MODE_ENABLED 0x00000001
6060
#define NV_REG_ENABLE_GPU_FIRMWARE_MODE_DEFAULT 0x00000002
6161

62-
#define NV_REG_ENABLE_GPU_FIRMWARE_POLICY_MASK 0x000000F0
63-
#define NV_REG_ENABLE_GPU_FIRMWARE_POLICY_ALLOW_FALLBACK 0x00000010
62+
#define NV_REG_ENABLE_GPU_FIRMWARE_POLICY_MASK 0x000000F0
63+
#define NV_REG_ENABLE_GPU_FIRMWARE_POLICY_ALLOW_FALLBACK 0x00000010
64+
#define NV_REG_ENABLE_GPU_FIRMWARE_POLICY_DEFAULT_ON_WS_SERVER 0x00000020
6465

6566
#define NV_REG_ENABLE_GPU_FIRMWARE_DEFAULT_VALUE 0x00000012
6667

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1294,7 +1294,8 @@ struct nv_pci_tegra_devfreq_dev;
12941294
typedef struct nv_linux_state_s {
12951295
nv_state_t nv_state;
12961296

1297-
atomic_t usage_count;
1297+
atomic_t usage_count;
1298+
12981299
NvU32 suspend_count;
12991300

13001301
struct device *dev;

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,6 @@
3232
#include <linux/semaphore.h>
3333
#include <linux/sched/signal.h> /* signal_pending */
3434

35-
#if defined(CONFIG_PREEMPT_RT) || defined(CONFIG_PREEMPT_RT_FULL)
36-
typedef raw_spinlock_t nv_spinlock_t;
37-
#define NV_DEFINE_SPINLOCK(lock) DEFINE_RAW_SPINLOCK(lock)
38-
#define NV_SPIN_LOCK_INIT(lock) raw_spin_lock_init(lock)
39-
#define NV_SPIN_LOCK_IRQ(lock) raw_spin_lock_irq(lock)
40-
#define NV_SPIN_UNLOCK_IRQ(lock) raw_spin_unlock_irq(lock)
41-
#define NV_SPIN_LOCK_IRQSAVE(lock,flags) raw_spin_lock_irqsave(lock,flags)
42-
#define NV_SPIN_UNLOCK_IRQRESTORE(lock,flags) raw_spin_unlock_irqrestore(lock,flags)
43-
#define NV_SPIN_LOCK(lock) raw_spin_lock(lock)
44-
#define NV_SPIN_UNLOCK(lock) raw_spin_unlock(lock)
45-
#define NV_SPIN_UNLOCK_WAIT(lock) raw_spin_unlock_wait(lock)
46-
#else
4735
typedef spinlock_t nv_spinlock_t;
4836
#define NV_DEFINE_SPINLOCK(lock) DEFINE_SPINLOCK(lock)
4937
#define NV_SPIN_LOCK_INIT(lock) spin_lock_init(lock)
@@ -54,7 +42,6 @@ typedef spinlock_t nv_spinlock_t;
5442
#define NV_SPIN_LOCK(lock) spin_lock(lock)
5543
#define NV_SPIN_UNLOCK(lock) spin_unlock(lock)
5644
#define NV_SPIN_UNLOCK_WAIT(lock) spin_unlock_wait(lock)
57-
#endif
5845

5946
#define NV_INIT_MUTEX(mutex) sema_init(mutex, 1)
6047

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,19 @@
3636
#define NV_MAX_ISR_DELAY_MS (NV_MAX_ISR_DELAY_US / 1000)
3737
#define NV_NSECS_TO_JIFFIES(nsec) ((nsec) * HZ / 1000000000)
3838

39+
/*
40+
* in_hardirq() was added in v5.11-rc1 (2020-12-15) to replace in_irq().
41+
* Fall back to in_irq() for older kernels that don't have in_hardirq().
42+
*/
43+
static inline NvBool nv_in_hardirq(void)
44+
{
45+
#if defined(in_hardirq)
46+
return in_hardirq();
47+
#else
48+
return in_irq();
49+
#endif
50+
}
51+
3952
#if !defined(NV_KTIME_GET_RAW_TS64_PRESENT)
4053
static inline void ktime_get_raw_ts64(struct timespec64 *ts64)
4154
{
@@ -82,7 +95,7 @@ static inline NV_STATUS nv_sleep_us(unsigned int us)
8295
ktime_get_raw_ts64(&tm1);
8396
#endif
8497

85-
if (in_irq() && (us > NV_MAX_ISR_DELAY_US))
98+
if (nv_in_hardirq() && (us > NV_MAX_ISR_DELAY_US))
8699
return NV_ERR_GENERIC;
87100

88101
mdelay_safe_msec = us / 1000;
@@ -127,7 +140,7 @@ static inline NV_STATUS nv_sleep_ms(unsigned int ms)
127140
tm_start = tm_aux;
128141
#endif
129142

130-
if (in_irq() && (ms > NV_MAX_ISR_DELAY_MS))
143+
if (nv_in_hardirq() && (ms > NV_MAX_ISR_DELAY_MS))
131144
{
132145
return NV_ERR_GENERIC;
133146
}

kernel-open/conftest.sh

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,6 +1330,27 @@ compile_test() {
13301330
compile_check_conftest "$CODE" "NV_EVENTFD_SIGNAL_HAS_COUNTER_ARG" "" "types"
13311331
;;
13321332

1333+
get_dev_pagemap_has_pgmap_arg)
1334+
#
1335+
# Determine if the get_dev_pagemap() function has an additional
1336+
# 'pgmap' argument.
1337+
#
1338+
# This argument was removed by commit dd57f5feb19a
1339+
# (mm/memremap: remove unused get_dev_pagemap() parameter)
1340+
# in linux-next, expected in v6.18.
1341+
#
1342+
CODE="
1343+
#include <linux/memremap.h>
1344+
1345+
struct dev_pagemap *get_dev_pagemap_has_pgmap_arg(void) {
1346+
struct dev_pagemap *pgmap;
1347+
1348+
get_dev_pagemap(0, pgmap);
1349+
}"
1350+
1351+
compile_check_conftest "$CODE" "NV_GET_DEV_PAGEMAP_HAS_PGMAP_ARG" "" "types"
1352+
;;
1353+
13331354
drm_available)
13341355
# Determine if the DRM subsystem is usable
13351356
CODE="

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,7 +1559,7 @@ static int __nv_drm_cursor_atomic_check(struct drm_plane *plane,
15591559

15601560
WARN_ON(nv_plane->layer_idx != NVKMS_KAPI_LAYER_INVALID_IDX);
15611561

1562-
nv_drm_for_each_crtc_in_state(plane_state->state, crtc, crtc_state, i) {
1562+
for_each_new_crtc_in_state(plane_state->state, crtc, crtc_state, i) {
15631563
struct nv_drm_crtc_state *nv_crtc_state = to_nv_crtc_state(crtc_state);
15641564
struct NvKmsKapiHeadRequestedConfig *head_req_config =
15651565
&nv_crtc_state->req_config;
@@ -1605,7 +1605,7 @@ static int nv_drm_plane_atomic_check(struct drm_plane *plane,
16051605

16061606
WARN_ON(nv_plane->layer_idx == NVKMS_KAPI_LAYER_INVALID_IDX);
16071607

1608-
nv_drm_for_each_crtc_in_state(plane_state->state, crtc, crtc_state, i) {
1608+
for_each_new_crtc_in_state(plane_state->state, crtc, crtc_state, i) {
16091609
struct nv_drm_crtc_state *nv_crtc_state = to_nv_crtc_state(crtc_state);
16101610
struct NvKmsKapiHeadRequestedConfig *head_req_config =
16111611
&nv_crtc_state->req_config;
@@ -2435,7 +2435,7 @@ static int nv_drm_crtc_atomic_check(struct drm_crtc *crtc,
24352435

24362436
req_config->flags.displaysChanged = NV_TRUE;
24372437

2438-
nv_drm_for_each_connector_in_state(crtc_state->state,
2438+
for_each_new_connector_in_state(crtc_state->state,
24392439
connector, connector_state, j) {
24402440
if (connector_state->crtc != crtc) {
24412441
continue;

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1717,6 +1717,11 @@ static long nv_drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
17171717
return retcode;
17181718
}
17191719

1720+
static int nv_drm_load_noop(struct drm_device *dev, unsigned long flags)
1721+
{
1722+
return 0;
1723+
}
1724+
17201725
static const struct file_operations nv_drm_fops = {
17211726
.owner = THIS_MODULE,
17221727

@@ -1899,6 +1904,8 @@ static struct drm_driver nv_drm_driver = {
18991904
.gem_prime_res_obj = nv_drm_gem_prime_res_obj,
19001905
#endif
19011906

1907+
.load = nv_drm_load_noop,
1908+
19021909
.postclose = nv_drm_postclose,
19031910
.open = nv_drm_open,
19041911

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
* drm_atomic_helper_disable_all() is copied from
5555
* linux/drivers/gpu/drm/drm_atomic_helper.c and modified to use
5656
* nv_drm_for_each_crtc instead of drm_for_each_crtc to loop over all crtcs,
57-
* use nv_drm_for_each_*_in_state instead of for_each_connector_in_state to loop
57+
* use for_each_new_*_in_state instead of for_each_connector_in_state to loop
5858
* over all modeset object states, and use drm_atomic_state_free() if
5959
* drm_atomic_state_put() is not available.
6060
*
@@ -139,13 +139,13 @@ int nv_drm_atomic_helper_disable_all(struct drm_device *dev,
139139
plane_state->rotation = DRM_MODE_ROTATE_0;
140140
}
141141

142-
nv_drm_for_each_connector_in_state(state, conn, conn_state, i) {
142+
for_each_new_connector_in_state(state, conn, conn_state, i) {
143143
ret = drm_atomic_set_crtc_for_connector(conn_state, NULL);
144144
if (ret < 0)
145145
goto free;
146146
}
147147

148-
nv_drm_for_each_plane_in_state(state, plane, plane_state, i) {
148+
for_each_new_plane_in_state(state, plane, plane_state, i) {
149149
ret = drm_atomic_set_crtc_for_plane(plane_state, NULL);
150150
if (ret < 0)
151151
goto free;

0 commit comments

Comments
 (0)