Skip to content

Commit 94eaea9

Browse files
committed
515.57
1 parent 965db98 commit 94eaea9

37 files changed

+557
-354
lines changed

CHANGELOG.md

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## Release 515 Entries
44

5+
### [515.57] 2022-06-28
6+
7+
#### Fixed
8+
9+
- Backtick is deprecated, [#273](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/273) by @arch-user-france1
10+
511
### [515.48.07] 2022-05-31
612

713
#### Added
@@ -10,20 +16,20 @@
1016

1117
#### Fixed
1218

13-
- Fix various README capitalizations, [#8 by @lx-is](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/8)
14-
- Automatically tag bug report issues, [#15 by @thebeanogamer](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/15)
15-
- Improve conftest.sh Script, [#37 by @Nitepone](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/37)
16-
- Update HTTP link to HTTPS, [#101 by @alcaparra](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/101)
17-
- moved array sanity check to before the array access, [#117 by @RealAstolfo](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/117)
18-
- Fixed some typos, [#122 by @FEDOyt](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/122)
19-
- Fixed capitalization, [#123 by @keroeslux](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/123)
20-
- Fix typos in NVDEC Engine Descriptor, [#126 from @TrickyDmitriy](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/126)
21-
- Extranous apostrohpes in a makefile script [sic], [#14 by @kiroma](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/14)
22-
- HDMI no audio @4K above 60Hz, [#75 by @adolfotregosa](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/75)
23-
- dp_configcaps.cpp:405: array index sanity check in wrong place?, [#110 by @dcb314](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/110)
24-
- NVRM kgspInitRm_IMPL: missing NVDEC0 engine, cannot initialize GSP-RM, [#116 by @kfazz](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/116)
25-
- ERROR: modpost: "backlight_device_register" [...nvidia-modeset.ko] undefined, [#135 by @sndirsch](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/135)
26-
- aarch64 build fails, [#151 by @frezbo](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/151)
19+
- Fix various README capitalizations, [#8](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/8) by @27lx
20+
- Automatically tag bug report issues, [#15](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/15) by @thebeanogamer
21+
- Improve conftest.sh Script, [#37](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/37) by @Nitepone
22+
- Update HTTP link to HTTPS, [#101](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/101) by @alcaparra
23+
- moved array sanity check to before the array access, [#117](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/117) by @RealAstolfo
24+
- Fixed some typos, [#122](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/122) by @FEDOyt
25+
- Fixed capitalization, [#123](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/123) by @keroeslux
26+
- Fix typos in NVDEC Engine Descriptor, [#126](https://github.com/NVIDIA/open-gpu-kernel-modules/pull/126) from @TrickyDmitriy
27+
- Extranous apostrohpes in a makefile script [sic], [#14](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/14) by @kiroma
28+
- HDMI no audio @ 4K above 60Hz, [#75](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/75) by @adolfotregosa
29+
- dp_configcaps.cpp:405: array index sanity check in wrong place?, [#110](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/110) by @dcb314
30+
- NVRM kgspInitRm_IMPL: missing NVDEC0 engine, cannot initialize GSP-RM, [#116](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/116) by @kfazz
31+
- ERROR: modpost: "backlight_device_register" [...nvidia-modeset.ko] undefined, [#135](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/135) by @sndirsch
32+
- aarch64 build fails, [#151](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/151) by @frezbo
2733

2834
### [515.43.04] 2022-05-11
2935

README.md

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
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 515.48.07.
4+
version 515.57.
55

66

77
## How to Build
88

99
To build:
1010

11-
make modules -j`nproc`
11+
make modules -j$(nproc)
1212

1313
To install, first uninstall any existing NVIDIA kernel modules. Then,
1414
as root:
1515

16-
make modules_install -j`nproc`
16+
make modules_install -j$(nproc)
1717

1818
Note that the kernel modules built here must be used with gsp.bin
1919
firmware and user-space NVIDIA GPU driver components from a corresponding
20-
515.48.07 driver release. This can be achieved by installing
20+
515.57 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

@@ -39,7 +39,7 @@ If cross-compiling, set these variables on the make command line:
3939
E.g.,
4040

4141
# compile on x86_64 for aarch64
42-
make modules -j`nproc` \
42+
make modules -j$(nproc) \
4343
TARGET_ARCH=aarch64 \
4444
CC=aarch64-linux-gnu-gcc \
4545
LD=aarch64-linux-gnu-ld \
@@ -59,7 +59,7 @@ DEBUG - Set this to "1" to build the kernel modules as debug. By default, the
5959

6060
These variables can be set on the make command line. E.g.,
6161

62-
make modules -j`nproc` NV_VERBOSE=1
62+
make modules -j$(nproc) NV_VERBOSE=1
6363

6464

6565
## Supported Toolchains
@@ -167,17 +167,17 @@ 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 515.48.07 release,
170+
(see the table below). However, in the 515.57 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/515.48.07/README/kernel_open.html
178+
https://us.download.nvidia.com/XFree86/Linux-x86_64/515.57/README/kernel_open.html
179179

180-
In the below table, if three IDs are listed, the first is the PCI Device
180+
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
182182
Subsystem Device ID.
183183

@@ -501,6 +501,7 @@ Subsystem Device ID.
501501
| Matrox D-Series D2450 | 1F76 102B 2800 |
502502
| Matrox D-Series D2480 | 1F76 102B 2900 |
503503
| NVIDIA GeForce GTX 1650 | 1F82 |
504+
| NVIDIA GeForce GTX 1630 | 1F83 |
504505
| NVIDIA GeForce GTX 1650 | 1F91 |
505506
| NVIDIA GeForce GTX 1650 with Max-Q Design | 1F91 103C 863E |
506507
| NVIDIA GeForce GTX 1650 with Max-Q Design | 1F91 103C 86E7 |
@@ -703,8 +704,6 @@ Subsystem Device ID.
703704
| NVIDIA RTX A5500 | 2233 10DE 165A |
704705
| NVIDIA RTX A5500 | 2233 17AA 165A |
705706
| NVIDIA A40 | 2235 10DE 145A |
706-
| NVIDIA A10 | 2236 10DE 1482 |
707-
| NVIDIA A10G | 2237 10DE 152F |
708707
| NVIDIA A10M | 2238 10DE 1677 |
709708
| NVIDIA GeForce RTX 3060 Ti | 2414 |
710709
| NVIDIA GeForce RTX 3080 Ti Laptop GPU | 2420 |

kernel-open/Kbuild

Lines changed: 1 addition & 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 -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=\"515.48.07\"
75+
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"515.57\"
7676

7777
EXTRA_CFLAGS += -Wno-unused-function
7878

kernel-open/nvidia-uvm/uvm_gpu_replayable_faults.c

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1942,45 +1942,32 @@ static NV_STATUS cancel_faults_precise_va(uvm_gpu_t *gpu,
19421942

19431943
// Function called when the system has found a global error and needs to
19441944
// trigger RC in RM.
1945-
// We cancel one entry per uTLB
19461945
static void cancel_fault_batch_tlb(uvm_gpu_t *gpu,
19471946
uvm_fault_service_batch_context_t *batch_context,
19481947
UvmEventFatalReason reason)
19491948
{
19501949
NvU32 i;
19511950

1952-
// Fault filtering is not allowed in the TLB-based fault cancel path
1953-
UVM_ASSERT(batch_context->num_cached_faults == batch_context->num_coalesced_faults);
1954-
1955-
for (i = 0; i < batch_context->num_cached_faults; ++i) {
1956-
NV_STATUS status;
1951+
for (i = 0; i < batch_context->num_coalesced_faults; ++i) {
1952+
NV_STATUS status = NV_OK;
19571953
uvm_fault_buffer_entry_t *current_entry;
1958-
uvm_fault_utlb_info_t *utlb;
1954+
uvm_fault_buffer_entry_t *coalesced_entry;
19591955

1960-
current_entry = &batch_context->fault_cache[i];
1961-
utlb = &batch_context->utlbs[current_entry->fault_source.utlb_id];
1956+
current_entry = batch_context->ordered_fault_cache[i];
19621957

1963-
// If this uTLB has been already cancelled, skip it
1964-
if (utlb->cancelled)
1965-
continue;
1958+
// The list iteration below skips the entry used as 'head'.
1959+
// Report the 'head' entry explicitly.
1960+
uvm_va_space_down_read(current_entry->va_space);
1961+
uvm_tools_record_gpu_fatal_fault(gpu->parent->id, current_entry->va_space, current_entry, reason);
19661962

1967-
record_fatal_fault_helper(gpu, current_entry, reason);
1968-
1969-
// Although the global cancellation method can be used here instead of
1970-
// targeted, we still use the targeted method since this function is
1971-
// only invoked in GPUs without support for VA fault cancellation, for
1972-
// which the targeted version is already required in
1973-
// cancel_faults_precise_tlb(). To maintain consistency, we use the
1974-
// targeted variant in both cases.
1975-
status = push_cancel_on_gpu_targeted(gpu,
1976-
current_entry->instance_ptr,
1977-
current_entry->fault_source.gpc_id,
1978-
current_entry->fault_source.client_id,
1979-
&batch_context->tracker);
1963+
list_for_each_entry(coalesced_entry, &current_entry->merged_instances_list, merged_instances_list)
1964+
uvm_tools_record_gpu_fatal_fault(gpu->parent->id, current_entry->va_space, coalesced_entry, reason);
1965+
uvm_va_space_up_read(current_entry->va_space);
1966+
1967+
// We need to cancel each instance pointer to correctly handle faults from multiple contexts.
1968+
status = push_cancel_on_gpu_global(gpu, current_entry->instance_ptr, &batch_context->tracker);
19801969
if (status != NV_OK)
19811970
break;
1982-
1983-
utlb->cancelled = true;
19841971
}
19851972
}
19861973

kernel-open/nvidia-uvm/uvm_migrate_pageable.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -899,9 +899,14 @@ static NV_STATUS migrate_pageable(migrate_vma_state_t *state)
899899

900900
// VMAs are validated and migrated one at a time, since migrate_vma works
901901
// on one vma at a time
902-
for (; vma->vm_start <= prev_outer; vma = vma->vm_next) {
902+
for (; vma->vm_start <= prev_outer; vma = find_vma_intersection(mm, prev_outer, outer)) {
903903
unsigned long next_addr = 0;
904-
NV_STATUS status = migrate_pageable_vma(vma, start, outer, state, &next_addr);
904+
NV_STATUS status;
905+
906+
// Callers have already validated the range so the vma should be valid.
907+
UVM_ASSERT(vma);
908+
909+
status = migrate_pageable_vma(vma, start, outer, state, &next_addr);
905910
if (status == NV_WARN_NOTHING_TO_DO) {
906911
NV_STATUS populate_status = NV_OK;
907912
bool touch = uvm_migrate_args->touch;

kernel-open/nvidia-uvm/uvm_policy.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ bool uvm_is_valid_vma_range(struct mm_struct *mm, NvU64 start, NvU64 length)
4444
if (vma->vm_end >= end)
4545
return true;
4646
start = vma->vm_end;
47-
vma = vma->vm_next;
47+
vma = find_vma_intersection(mm, start, end);
4848
}
4949

5050
return false;

kernel-open/nvidia-uvm/uvm_populate_pageable.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ NV_STATUS uvm_populate_pageable(struct mm_struct *mm,
158158
// VMAs are validated and populated one at a time, since they may have
159159
// different protection flags
160160
// Validation of VM_SPECIAL flags is delegated to get_user_pages
161-
for (; vma->vm_start <= prev_end; vma = vma->vm_next) {
161+
for (; vma && vma->vm_start <= prev_end; vma = find_vma_intersection(mm, prev_end, end)) {
162162
NV_STATUS status = uvm_populate_pageable_vma(vma, start, end - start, min_prot, touch, populate_permissions);
163163

164164
if (status != NV_OK)

src/common/displayport/inc/dp_messages.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,9 @@ namespace DisplayPort
116116
bool isBeingDestroyed;
117117
bool isPaused;
118118

119+
// Properties from regkey
119120
bool bNoReplyTimerForBusyWaiting;
121+
bool bDpcdProbingForBusyWaiting;
120122

121123
List messageReceivers;
122124
List notYetSentDownRequest; // Down Messages yet to be processed
@@ -159,7 +161,8 @@ namespace DisplayPort
159161
{
160162
DP_ASSERT(dpRegkeyDatabase.bInitialized &&
161163
"All regkeys are invalid because dpRegkeyDatabase is not initialized!");
162-
bNoReplyTimerForBusyWaiting = dpRegkeyDatabase.bNoReplyTimerForBusyWaiting;
164+
bNoReplyTimerForBusyWaiting = dpRegkeyDatabase.bNoReplyTimerForBusyWaiting;
165+
bDpcdProbingForBusyWaiting = dpRegkeyDatabase.bDpcdProbingForBusyWaiting;
163166
}
164167

165168
MessageManager(DPCDHAL * hal, Timer * timer)

src/common/displayport/inc/dp_regkeydatabase.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@
7272
#define NV_DP_DSC_OPTIMIZE_LT_BUG_3534707 "DP_DSC_OPTIMIZE_LT_BUG_3534707"
7373

7474
#define NV_DP_REGKEY_NO_REPLY_TIMER_FOR_BUSY_WAITING "NO_REPLY_TIMER_FOR_BUSY_WAITING"
75+
76+
#define NV_DP_REGKEY_DPCD_PROBING_FOR_BUSY_WAITING "DP_DPCD_PROBING_FOR_BUSY_WAITING"
77+
7578
//
7679
// Data Base used to store all the regkey values.
7780
// The actual data base is declared statically in dp_evoadapter.cpp.
@@ -106,6 +109,7 @@ struct DP_REGKEY_DATABASE
106109
bool bDscMstEnablePassThrough;
107110
bool bDscOptimizeLTBug3534707;
108111
bool bNoReplyTimerForBusyWaiting;
112+
bool bDpcdProbingForBusyWaiting;
109113
};
110114

111115
#endif //INCLUDED_DP_REGKEYDATABASE_H

src/common/displayport/src/dp_evoadapter.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ const struct
9696
{NV_DP_DSC_MST_CAP_BUG_3143315, &dpRegkeyDatabase.bDscMstCapBug3143315, DP_REG_VAL_BOOL},
9797
{NV_DP_DSC_MST_ENABLE_PASS_THROUGH, &dpRegkeyDatabase.bDscMstEnablePassThrough, DP_REG_VAL_BOOL},
9898
{NV_DP_DSC_OPTIMIZE_LT_BUG_3534707, &dpRegkeyDatabase.bDscOptimizeLTBug3534707, DP_REG_VAL_BOOL},
99-
{NV_DP_REGKEY_NO_REPLY_TIMER_FOR_BUSY_WAITING, &dpRegkeyDatabase.bNoReplyTimerForBusyWaiting, DP_REG_VAL_BOOL}
99+
{NV_DP_REGKEY_NO_REPLY_TIMER_FOR_BUSY_WAITING, &dpRegkeyDatabase.bNoReplyTimerForBusyWaiting, DP_REG_VAL_BOOL},
100+
{NV_DP_REGKEY_DPCD_PROBING_FOR_BUSY_WAITING, &dpRegkeyDatabase.bDpcdProbingForBusyWaiting, DP_REG_VAL_BOOL}
100101
};
101102

102103
EvoMainLink::EvoMainLink(EvoInterface * provider, Timer * timer) :

0 commit comments

Comments
 (0)