Skip to content

Commit a973de2

Browse files
committed
570.207
1 parent b8c77a9 commit a973de2

Some content is hidden

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

44 files changed

+1918
-1719
lines changed

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 570.195.03.
4+
version 570.207.
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-
570.195.03 driver release. This can be achieved by installing
20+
570.207 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/570.195.03/README/kernel_open.html
188+
https://us.download.nvidia.com/XFree86/Linux-x86_64/570.207/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.
@@ -981,6 +981,7 @@ Subsystem Device ID.
981981
| NVIDIA RTX PRO 4000 Blackwell Generation Laptop GPU | 2C39 |
982982
| NVIDIA GeForce RTX 5090 Laptop GPU | 2C58 |
983983
| NVIDIA GeForce RTX 5080 Laptop GPU | 2C59 |
984+
| NVIDIA RTX PRO 4000 Blackwell Embedded GPU | 2C79 |
984985
| NVIDIA GeForce RTX 5060 Ti | 2D04 |
985986
| NVIDIA GeForce RTX 5060 | 2D05 |
986987
| NVIDIA GeForce RTX 5070 Laptop GPU | 2D18 |
@@ -991,10 +992,12 @@ Subsystem Device ID.
991992
| NVIDIA RTX PRO 2000 Blackwell Generation Laptop GPU | 2D39 |
992993
| NVIDIA GeForce RTX 5070 Laptop GPU | 2D58 |
993994
| NVIDIA GeForce RTX 5060 Laptop GPU | 2D59 |
995+
| NVIDIA RTX PRO 2000 Blackwell Embedded GPU | 2D79 |
994996
| NVIDIA GeForce RTX 5050 Laptop GPU | 2D98 |
995997
| NVIDIA RTX PRO 1000 Blackwell Generation Laptop GPU | 2DB8 |
996998
| NVIDIA RTX PRO 500 Blackwell Generation Laptop GPU | 2DB9 |
997999
| NVIDIA GeForce RTX 5050 Laptop GPU | 2DD8 |
1000+
| NVIDIA RTX PRO 500 Blackwell Embedded GPU | 2DF9 |
9981001
| NVIDIA GeForce RTX 5070 | 2F04 |
9991002
| NVIDIA GeForce RTX 5070 Ti Laptop GPU | 2F18 |
10001003
| NVIDIA RTX PRO 3000 Blackwell Generation Laptop GPU | 2F38 |

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=\"570.195.03\"
82+
ccflags-y += -DNV_VERSION_STRING=\"570.207\"
8383

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

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1486,7 +1486,8 @@ typedef struct
14861486
typedef struct nv_linux_state_s {
14871487
nv_state_t nv_state;
14881488

1489-
atomic_t usage_count;
1489+
atomic_t usage_count;
1490+
14901491
NvU32 suspend_count;
14911492

14921493
struct device *dev;

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,6 @@
3535
#include <linux/sched/signal.h> /* signal_pending for kernels >= 4.11 */
3636
#endif
3737

38-
#if defined(CONFIG_PREEMPT_RT) || defined(CONFIG_PREEMPT_RT_FULL)
39-
typedef raw_spinlock_t nv_spinlock_t;
40-
#define NV_DEFINE_SPINLOCK(lock) DEFINE_RAW_SPINLOCK(lock)
41-
#define NV_SPIN_LOCK_INIT(lock) raw_spin_lock_init(lock)
42-
#define NV_SPIN_LOCK_IRQ(lock) raw_spin_lock_irq(lock)
43-
#define NV_SPIN_UNLOCK_IRQ(lock) raw_spin_unlock_irq(lock)
44-
#define NV_SPIN_LOCK_IRQSAVE(lock,flags) raw_spin_lock_irqsave(lock,flags)
45-
#define NV_SPIN_UNLOCK_IRQRESTORE(lock,flags) raw_spin_unlock_irqrestore(lock,flags)
46-
#define NV_SPIN_LOCK(lock) raw_spin_lock(lock)
47-
#define NV_SPIN_UNLOCK(lock) raw_spin_unlock(lock)
48-
#define NV_SPIN_UNLOCK_WAIT(lock) raw_spin_unlock_wait(lock)
49-
#else
5038
typedef spinlock_t nv_spinlock_t;
5139
#define NV_DEFINE_SPINLOCK(lock) DEFINE_SPINLOCK(lock)
5240
#define NV_SPIN_LOCK_INIT(lock) spin_lock_init(lock)
@@ -57,7 +45,6 @@ typedef spinlock_t nv_spinlock_t;
5745
#define NV_SPIN_LOCK(lock) spin_lock(lock)
5846
#define NV_SPIN_UNLOCK(lock) spin_unlock(lock)
5947
#define NV_SPIN_UNLOCK_WAIT(lock) spin_unlock_wait(lock)
60-
#endif
6148

6249
#define NV_INIT_MUTEX(mutex) sema_init(mutex, 1)
6350

kernel-open/common/inc/nvkms-kapi.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,6 +1559,26 @@ struct NvKmsKapiFunctionsTable {
15591559
NvS32 index
15601560
);
15611561

1562+
/*!
1563+
* Check or wait on a head's LUT notifier.
1564+
*
1565+
* \param [in] device A device allocated using allocateDevice().
1566+
*
1567+
* \param [in] head The head to check for LUT completion.
1568+
*
1569+
* \param [in] waitForCompletion If true, wait for the notifier in NvKms
1570+
* before returning.
1571+
*
1572+
* \param [out] complete Returns whether the notifier has completed.
1573+
*/
1574+
NvBool
1575+
(*checkLutNotifier)
1576+
(
1577+
struct NvKmsKapiDevice *device,
1578+
NvU32 head,
1579+
NvBool waitForCompletion
1580+
);
1581+
15621582
/*
15631583
* Notify NVKMS that the system's framebuffer console has been disabled and
15641584
* the reserved allocation for the old framebuffer console can be unmapped.

kernel-open/common/inc/os-interface.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ struct os_work_queue;
6262
/* Each OS defines its own version of this opaque type */
6363
typedef struct os_wait_queue os_wait_queue;
6464

65+
/* Flags needed by os_get_current_proccess_flags */
66+
#define OS_CURRENT_PROCESS_FLAG_NONE 0x0
67+
#define OS_CURRENT_PROCESS_FLAG_KERNEL_THREAD 0x1
68+
#define OS_CURRENT_PROCESS_FLAG_EXITING 0x2
69+
6570
/*
6671
* ---------------------------------------------------------------------------
6772
*
@@ -194,6 +199,7 @@ NV_STATUS NV_API_CALL os_open_readonly_file (const char *, void **);
194199
NV_STATUS NV_API_CALL os_open_and_read_file (const char *, NvU8 *, NvU64);
195200
NvBool NV_API_CALL os_is_nvswitch_present (void);
196201
NV_STATUS NV_API_CALL os_get_random_bytes (NvU8 *, NvU16);
202+
NvU32 NV_API_CALL os_get_current_process_flags(void);
197203
NV_STATUS NV_API_CALL os_alloc_wait_queue (os_wait_queue **);
198204
void NV_API_CALL os_free_wait_queue (os_wait_queue *);
199205
void NV_API_CALL os_wait_uninterruptible (os_wait_queue *);

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,33 @@ int nv_drm_atomic_commit(struct drm_device *dev,
677677
"Flip event timeout on head %u", nv_crtc->head);
678678
}
679679
}
680+
681+
#if defined(NV_DRM_COLOR_MGMT_AVAILABLE)
682+
/*
683+
* If the legacy LUT needs to be updated, ensure that the previous LUT
684+
* update is complete first.
685+
*/
686+
if (crtc_state->color_mgmt_changed) {
687+
NvBool complete = nvKms->checkLutNotifier(nv_dev->pDevice,
688+
nv_crtc->head,
689+
!nonblock /* waitForCompletion */);
690+
691+
/* If checking the LUT notifier failed, assume no LUT notifier is set. */
692+
if (!complete) {
693+
if (nonblock) {
694+
return -EBUSY;
695+
} else {
696+
/*
697+
* checkLutNotifier should wait on the notifier in this
698+
* case, so we should only get here if the wait timed out.
699+
*/
700+
NV_DRM_DEV_LOG_ERR(
701+
nv_dev,
702+
"LUT notifier timeout on head %u", nv_crtc->head);
703+
}
704+
}
705+
}
706+
#endif
680707
}
681708

682709
#if defined(NV_DRM_ATOMIC_HELPER_SWAP_STATE_HAS_STALL_ARG)
@@ -810,6 +837,19 @@ int nv_drm_atomic_commit(struct drm_device *dev,
810837
__nv_drm_handle_flip_event(nv_crtc);
811838
}
812839
}
840+
841+
#if defined(NV_DRM_COLOR_MGMT_AVAILABLE)
842+
if (crtc_state->color_mgmt_changed) {
843+
NvBool complete = nvKms->checkLutNotifier(nv_dev->pDevice,
844+
nv_crtc->head,
845+
true /* waitForCompletion */);
846+
if (!complete) {
847+
NV_DRM_DEV_LOG_ERR(
848+
nv_dev,
849+
"LUT notifier timeout on head %u", nv_crtc->head);
850+
}
851+
}
852+
#endif
813853
}
814854
}
815855

kernel-open/nvidia/nv.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,6 +1627,7 @@ static int nv_open_device(nv_state_t *nv, nvidia_stack_t *sp)
16271627
nv_assert_not_in_gpu_exclusion_list(sp, nv);
16281628

16291629
NV_ATOMIC_INC(nvl->usage_count);
1630+
16301631
return 0;
16311632
}
16321633

kernel-open/nvidia/os-interface.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2073,6 +2073,22 @@ NV_STATUS NV_API_CALL os_get_random_bytes
20732073
return NV_OK;
20742074
}
20752075

2076+
NvU32 NV_API_CALL os_get_current_process_flags
2077+
(
2078+
void
2079+
)
2080+
{
2081+
NvU32 flags = OS_CURRENT_PROCESS_FLAG_NONE;
2082+
2083+
if (current->flags & PF_EXITING)
2084+
flags |= OS_CURRENT_PROCESS_FLAG_EXITING;
2085+
2086+
if (current->flags & PF_KTHREAD)
2087+
flags |= OS_CURRENT_PROCESS_FLAG_KERNEL_THREAD;
2088+
2089+
return flags;
2090+
}
2091+
20762092
NV_STATUS NV_API_CALL os_alloc_wait_queue
20772093
(
20782094
os_wait_queue **wq

src/common/displayport/inc/dp_connectorimpl.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@ namespace DisplayPort
266266
//
267267
bool bHDMIOnDPPlusPlus;
268268

269+
//
270+
// Flag to enable accounting available DP tunnelling BW while generating PPS
271+
// for the mode
272+
//
273+
bool bOptimizeDscBppForTunnellingBw;
274+
269275
bool bSkipResetLinkStateDuringPlug;
270276

271277
// Flag to check if LT should be skipped.

0 commit comments

Comments
 (0)