Skip to content

Commit 758b4ee

Browse files
committed
525.53
1 parent 7c345b8 commit 758b4ee

File tree

1,323 files changed

+262027
-60646
lines changed

Some content is hidden

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

1,323 files changed

+262027
-60646
lines changed

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
# Changelog
22

3+
## Release 525 Entries
4+
5+
### [525.53] 2022-11-10
6+
7+
#### Changed
8+
9+
- GSP firmware is now distributed as multiple firmware files: this release has `gsp_tu10x.bin` and `gsp_ad10x.bin` replacing `gsp.bin` from previous releases.
10+
- Each file is named after a GPU architecture and supports GPUs from one or more architectures. This allows GSP firmware to better leverage each architecture's capabilities.
11+
- The .run installer will continue to install firmware to `/lib/firmware/nvidia/<version>` and the `nvidia.ko` kernel module will load the appropriate firmware for each GPU at runtime.
12+
13+
#### Fixed
14+
15+
- Add support for IBT (indirect branch tracking) on supported platforms, [#256](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/256) by @rnd-ash
16+
- Return EINVAL when [failing to] allocating memory, [#280](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/280) by @YusufKhan-gamedev
17+
- Fix various typos in nvidia/src/kernel, [#16](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/16) by @alexisgeoffrey
18+
- Added support for rotation in X11, Quadro Sync, Stereo, and YUV 4:2:0 on Turing.
19+
320
## Release 520 Entries
421

522
### [520.56.06] 2022-10-12
@@ -29,6 +46,8 @@
2946
- Improved compatibility with new Linux kernel releases
3047
- Fixed possible excessive GPU power draw on an idle X11 or Wayland desktop when driving high resolutions or refresh rates
3148

49+
### [515.65.07] 2022-10-19
50+
3251
### [515.65.01] 2022-08-02
3352

3453
#### Fixed

README.md

Lines changed: 16 additions & 5 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 520.56.06.
4+
version 525.53.
55

66

77
## How to Build
@@ -15,9 +15,9 @@ as root:
1515

1616
make modules_install -j$(nproc)
1717

18-
Note that the kernel modules built here must be used with gsp.bin
18+
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-
520.56.06 driver release. This can be achieved by installing
20+
525.53 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

@@ -167,15 +167,15 @@ for the target kernel.
167167
## Compatible GPUs
168168

169169
The open-gpu-kernel-modules can be used on any Turing or later GPU
170-
(see the table below). However, in the 520.56.06 release,
170+
(see the table below). However, in the 525.53 release,
171171
GeForce and Workstation support is still considered alpha-quality.
172172

173173
To enable use of the open kernel modules on GeForce and Workstation GPUs,
174174
set the "NVreg_OpenRmEnableUnsupportedGpus" nvidia.ko kernel module
175175
parameter to 1. For more details, see the NVIDIA GPU driver end user
176176
README here:
177177

178-
https://us.download.nvidia.com/XFree86/Linux-x86_64/520.56.06/README/kernel_open.html
178+
https://us.download.nvidia.com/XFree86/Linux-x86_64/525.53/README/kernel_open.html
179179

180180
In the below table, if three IDs are listed, the first is the PCI Device
181181
ID, the second is the PCI Subsystem Vendor ID, and the third is the PCI
@@ -652,6 +652,17 @@ Subsystem Device ID.
652652
| NVIDIA PG506-232 | 20B6 10DE 1492 |
653653
| NVIDIA A30 | 20B7 10DE 1532 |
654654
| NVIDIA A100-PCIE-40GB | 20F1 10DE 145F |
655+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179B |
656+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179C |
657+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179D |
658+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179E |
659+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 179F |
660+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 17A0 |
661+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 17A1 |
662+
| NVIDIA A800-SXM4-80GB | 20F3 10DE 17A2 |
663+
| NVIDIA A800 80GB PCIe | 20F5 10DE 1799 |
664+
| NVIDIA A800 80GB PCIe LC | 20F5 10DE 179A |
665+
| NVIDIA A800 40GB PCIe | 20F6 10DE 17A3 |
655666
| NVIDIA GeForce GTX 1660 Ti | 2182 |
656667
| NVIDIA GeForce GTX 1660 | 2184 |
657668
| NVIDIA GeForce GTX 1650 SUPER | 2187 |

kernel-open/Kbuild

Lines changed: 8 additions & 2 deletions
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 -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error -Wno-format-extra-args
7474
EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM
75-
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"520.56.06\"
75+
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"525.53\"
7676

7777
EXTRA_CFLAGS += -Wno-unused-function
7878

@@ -229,6 +229,7 @@ NV_HEADER_PRESENCE_TESTS = \
229229
drm/drm_ioctl.h \
230230
drm/drm_device.h \
231231
drm/drm_mode_config.h \
232+
drm/drm_modeset_lock.h \
232233
dt-bindings/interconnect/tegra_icc_id.h \
233234
generated/autoconf.h \
234235
generated/compile.h \
@@ -243,6 +244,8 @@ NV_HEADER_PRESENCE_TESTS = \
243244
linux/log2.h \
244245
linux/of.h \
245246
linux/bug.h \
247+
linux/sched.h \
248+
linux/sched/mm.h \
246249
linux/sched/signal.h \
247250
linux/sched/task.h \
248251
linux/sched/task_stack.h \
@@ -286,7 +289,10 @@ NV_HEADER_PRESENCE_TESTS = \
286289
linux/ioasid.h \
287290
linux/stdarg.h \
288291
linux/iosys-map.h \
289-
asm/coco.h
292+
asm/coco.h \
293+
linux/vfio_pci_core.h \
294+
soc/tegra/bpmp-abi.h \
295+
soc/tegra/bpmp.h
290296

291297
# Filename to store the define for the header in $(1); this is only consumed by
292298
# the rule below that concatenates all of these together.

kernel-open/common/inc/cpuopsys.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@
242242
#endif
243243

244244
/* For verification-only features not intended to be included in normal drivers */
245-
#if (defined(NV_MODS) || defined(NV_GSP_MODS)) && defined(DEBUG) && !defined(DISABLE_VERIF_FEATURES)
245+
#if defined(ENABLE_VERIF_FEATURES)
246246
#define NV_VERIF_FEATURES
247247
#endif
248248

@@ -276,12 +276,6 @@
276276
#define NV_IS_MODS 0
277277
#endif
278278

279-
#if defined(NV_GSP_MODS)
280-
#define NV_IS_GSP_MODS 1
281-
#else
282-
#define NV_IS_GSP_MODS 0
283-
#endif
284-
285279
#if defined(NV_WINDOWS)
286280
#define NVOS_IS_WINDOWS 1
287281
#else

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

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/*
2+
* SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3+
* SPDX-License-Identifier: MIT
4+
*
5+
* Permission is hereby granted, free of charge, to any person obtaining a
6+
* copy of this software and associated documentation files (the "Software"),
7+
* to deal in the Software without restriction, including without limitation
8+
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
9+
* and/or sell copies of the Software, and to permit persons to whom the
10+
* Software is furnished to do so, subject to the following conditions:
11+
*
12+
* The above copyright notice and this permission notice shall be included in
13+
* all copies or substantial portions of the Software.
14+
*
15+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18+
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21+
* DEALINGS IN THE SOFTWARE.
22+
*/
23+
24+
#ifndef NV_FIRMWARE_H
25+
#define NV_FIRMWARE_H
26+
27+
28+
29+
#include <nvtypes.h>
30+
#include <nvmisc.h>
31+
32+
typedef enum
33+
{
34+
NV_FIRMWARE_TYPE_GSP,
35+
NV_FIRMWARE_TYPE_GSP_LOG
36+
} nv_firmware_type_t;
37+
38+
typedef enum
39+
{
40+
NV_FIRMWARE_CHIP_FAMILY_NULL = 0,
41+
NV_FIRMWARE_CHIP_FAMILY_TU10X = 1,
42+
NV_FIRMWARE_CHIP_FAMILY_TU11X = 2,
43+
NV_FIRMWARE_CHIP_FAMILY_GA100 = 3,
44+
NV_FIRMWARE_CHIP_FAMILY_GA10X = 4,
45+
NV_FIRMWARE_CHIP_FAMILY_AD10X = 5,
46+
NV_FIRMWARE_CHIP_FAMILY_GH100 = 6,
47+
NV_FIRMWARE_CHIP_FAMILY_END,
48+
} nv_firmware_chip_family_t;
49+
50+
static inline const char *nv_firmware_chip_family_to_string(
51+
nv_firmware_chip_family_t fw_chip_family
52+
)
53+
{
54+
switch (fw_chip_family) {
55+
case NV_FIRMWARE_CHIP_FAMILY_GH100: return "gh100";
56+
case NV_FIRMWARE_CHIP_FAMILY_AD10X: return "ad10x";
57+
case NV_FIRMWARE_CHIP_FAMILY_GA10X: return "ga10x";
58+
case NV_FIRMWARE_CHIP_FAMILY_GA100: return "ga100";
59+
case NV_FIRMWARE_CHIP_FAMILY_TU11X: return "tu11x";
60+
case NV_FIRMWARE_CHIP_FAMILY_TU10X: return "tu10x";
61+
62+
case NV_FIRMWARE_CHIP_FAMILY_END: // fall through
63+
case NV_FIRMWARE_CHIP_FAMILY_NULL:
64+
return NULL;
65+
}
66+
return NULL;
67+
}
68+
69+
// The includer (presumably nv.c) may optionally define
70+
// NV_FIRMWARE_PATH_FOR_FILENAME(filename)
71+
// to return a string "path" given a gsp_*.bin or gsp_log_*.bin filename.
72+
//
73+
// The function nv_firmware_path will then be available.
74+
#if defined(NV_FIRMWARE_PATH_FOR_FILENAME)
75+
static inline const char *nv_firmware_path(
76+
nv_firmware_type_t fw_type,
77+
nv_firmware_chip_family_t fw_chip_family
78+
)
79+
{
80+
if (fw_type == NV_FIRMWARE_TYPE_GSP)
81+
{
82+
switch (fw_chip_family)
83+
{
84+
case NV_FIRMWARE_CHIP_FAMILY_AD10X:
85+
return NV_FIRMWARE_PATH_FOR_FILENAME("gsp_ad10x.bin");
86+
87+
case NV_FIRMWARE_CHIP_FAMILY_GH100: // fall through
88+
case NV_FIRMWARE_CHIP_FAMILY_GA100: // fall through
89+
case NV_FIRMWARE_CHIP_FAMILY_GA10X: // fall through
90+
case NV_FIRMWARE_CHIP_FAMILY_TU11X: // fall through
91+
case NV_FIRMWARE_CHIP_FAMILY_TU10X:
92+
return NV_FIRMWARE_PATH_FOR_FILENAME("gsp_tu10x.bin");
93+
94+
case NV_FIRMWARE_CHIP_FAMILY_END: // fall through
95+
case NV_FIRMWARE_CHIP_FAMILY_NULL:
96+
return "";
97+
}
98+
}
99+
else if (fw_type == NV_FIRMWARE_TYPE_GSP_LOG)
100+
{
101+
switch (fw_chip_family)
102+
{
103+
case NV_FIRMWARE_CHIP_FAMILY_AD10X:
104+
return NV_FIRMWARE_PATH_FOR_FILENAME("gsp_log_ad10x.bin");
105+
106+
case NV_FIRMWARE_CHIP_FAMILY_GH100: // fall through
107+
case NV_FIRMWARE_CHIP_FAMILY_GA100: // fall through
108+
case NV_FIRMWARE_CHIP_FAMILY_GA10X: // fall through
109+
case NV_FIRMWARE_CHIP_FAMILY_TU11X: // fall through
110+
case NV_FIRMWARE_CHIP_FAMILY_TU10X:
111+
return NV_FIRMWARE_PATH_FOR_FILENAME("gsp_log_tu10x.bin");
112+
113+
case NV_FIRMWARE_CHIP_FAMILY_END: // fall through
114+
case NV_FIRMWARE_CHIP_FAMILY_NULL:
115+
return "";
116+
}
117+
}
118+
119+
return "";
120+
}
121+
#endif // defined(NV_FIRMWARE_PATH_FOR_FILENAME)
122+
123+
// The includer (presumably nv.c) may optionally define
124+
// NV_FIRMWARE_DECLARE_GSP_FILENAME(filename)
125+
// which will then be invoked (at the top-level) for each
126+
// gsp_*.bin (but not gsp_log_*.bin)
127+
#if defined(NV_FIRMWARE_DECLARE_GSP_FILENAME)
128+
NV_FIRMWARE_DECLARE_GSP_FILENAME("gsp_ad10x.bin")
129+
NV_FIRMWARE_DECLARE_GSP_FILENAME("gsp_tu10x.bin")
130+
#endif // defined(NV_FIRMWARE_DECLARE_GSP_FILENAME)
131+
132+
#endif // NV_FIRMWARE_DECLARE_GSP_FILENAME

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
* SPDX-FileCopyrightText: Copyright (c) 2020-22 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
@@ -91,6 +91,6 @@ static inline void _nv_hash_init(struct hlist_head *ht, unsigned int sz)
9191
* @key: the key of the objects to iterate over
9292
*/
9393
#define nv_hash_for_each_possible(name, obj, member, key) \
94-
nv_hlist_for_each_entry(obj, &name[NV_HASH_MIN(key, NV_HASH_BITS(name))], member)
94+
hlist_for_each_entry(obj, &name[NV_HASH_MIN(key, NV_HASH_BITS(name))], member)
9595

9696
#endif // __NV_HASH_H__

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,13 @@
2727
#include <nv-kernel-interface-api.h>
2828

2929
// Enums for supported hypervisor types.
30-
// New hypervisor type should be added before OS_HYPERVISOR_CUSTOM_FORCED
30+
// New hypervisor type should be added before OS_HYPERVISOR_UNKNOWN
3131
typedef enum _HYPERVISOR_TYPE
3232
{
3333
OS_HYPERVISOR_XEN = 0,
3434
OS_HYPERVISOR_VMWARE,
3535
OS_HYPERVISOR_HYPERV,
3636
OS_HYPERVISOR_KVM,
37-
OS_HYPERVISOR_PARALLELS,
38-
OS_HYPERVISOR_CUSTOM_FORCED,
3937
OS_HYPERVISOR_UNKNOWN
4038
} HYPERVISOR_TYPE;
4139

kernel-open/common/inc/nv-kthread-q.h

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,6 @@ struct nv_kthread_q_item
115115
void *function_args;
116116
};
117117

118-
#if defined(NV_KTHREAD_CREATE_ON_NODE_PRESENT)
119-
#define NV_KTHREAD_Q_SUPPORTS_AFFINITY() 1
120-
#else
121-
#define NV_KTHREAD_Q_SUPPORTS_AFFINITY() 0
122-
#endif
123118

124119
#ifndef NUMA_NO_NODE
125120
#define NUMA_NO_NODE (-1)
@@ -142,18 +137,12 @@ struct nv_kthread_q_item
142137
//
143138
// A short prefix of the qname arg will show up in []'s, via the ps(1) utility.
144139
//
145-
// The kernel thread stack is preferably allocated on the specified NUMA node if
146-
// NUMA-affinity (NV_KTHREAD_Q_SUPPORTS_AFFINITY() == 1) is supported, but
147-
// fallback to another node is possible because kernel allocators do not
140+
// The kernel thread stack is preferably allocated on the specified NUMA node,
141+
// but fallback to another node is possible because kernel allocators do not
148142
// guarantee affinity. Note that NUMA-affinity applies only to
149143
// the kthread stack. This API does not do anything about limiting the CPU
150144
// affinity of the kthread. That is left to the caller.
151145
//
152-
// On kernels, which do not support NUMA-aware kthread stack allocations
153-
// (NV_KTHTREAD_Q_SUPPORTS_AFFINITY() == 0), the API will return -ENOTSUPP
154-
// if the value supplied for 'preferred_node' is anything other than
155-
// NV_KTHREAD_NO_NODE.
156-
//
157146
// Reusing a queue: once a queue is initialized, it must be safely shut down
158147
// (see "Stopping the queue(s)", below), before it can be reused. So, for
159148
// a simple queue use case, the following will work:

0 commit comments

Comments
 (0)