Skip to content

Commit

Permalink
555.52.04
Browse files Browse the repository at this point in the history
  • Loading branch information
niv committed Jun 5, 2024
1 parent 5a1c474 commit 78d807e
Show file tree
Hide file tree
Showing 36 changed files with 1,140 additions and 487 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Release 555 Entries

### [555.52.04] 2024-06-05

### [555.42.02] 2024-05-21

## Release 550 Entries
Expand Down
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# NVIDIA Linux Open GPU Kernel Module Source

This is the source release of the NVIDIA Linux open GPU kernel modules,
version 555.42.02.
version 555.52.04.


## How to Build
Expand All @@ -17,7 +17,7 @@ as root:

Note that the kernel modules built here must be used with GSP
firmware and user-space NVIDIA GPU driver components from a corresponding
555.42.02 driver release. This can be achieved by installing
555.52.04 driver release. This can be achieved by installing
the NVIDIA GPU driver from the .run file using the `--no-kernel-modules`
option. E.g.,

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

https://us.download.nvidia.com/XFree86/Linux-x86_64/555.42.02/README/kernel_open.html
https://us.download.nvidia.com/XFree86/Linux-x86_64/555.52.04/README/kernel_open.html

For vGPU support, please refer to the README.vgpu packaged in the vGPU Host
Package for more details.
Expand Down Expand Up @@ -757,6 +757,8 @@ Subsystem Device ID.
| NVIDIA H100 80GB HBM3 | 2330 10DE 16C0 |
| NVIDIA H100 80GB HBM3 | 2330 10DE 16C1 |
| NVIDIA H100 PCIe | 2331 10DE 1626 |
| NVIDIA H200 | 2335 10DE 18BE |
| NVIDIA H200 | 2335 10DE 18BF |
| NVIDIA H100 | 2339 10DE 17FC |
| NVIDIA H800 NVL | 233A 10DE 183A |
| NVIDIA GH200 120GB | 2342 10DE 16EB |
Expand Down Expand Up @@ -874,6 +876,7 @@ Subsystem Device ID.
| NVIDIA L40S | 26B9 10DE 1851 |
| NVIDIA L40S | 26B9 10DE 18CF |
| NVIDIA L20 | 26BA 10DE 1957 |
| NVIDIA L20 | 26BA 10DE 1990 |
| NVIDIA GeForce RTX 4080 SUPER | 2702 |
| NVIDIA GeForce RTX 4080 | 2704 |
| NVIDIA GeForce RTX 4070 Ti SUPER | 2705 |
Expand Down
2 changes: 1 addition & 1 deletion kernel-open/Kbuild
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ EXTRA_CFLAGS += -I$(src)/common/inc
EXTRA_CFLAGS += -I$(src)
EXTRA_CFLAGS += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args
EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"555.42.02\"
EXTRA_CFLAGS += -DNV_VERSION_STRING=\"555.52.04\"

ifneq ($(SYSSRCHOST1X),)
EXTRA_CFLAGS += -I$(SYSSRCHOST1X)
Expand Down
20 changes: 9 additions & 11 deletions kernel-open/conftest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5252,25 +5252,23 @@ compile_test() {
compile_check_conftest "$CODE" "NV_PCI_CLASS_MULTIMEDIA_HD_AUDIO_PRESENT" "" "generic"
;;

unsafe_follow_pfn)
follow_pfn)
#
# Determine if unsafe_follow_pfn() is present.
# Determine if follow_pfn() is present.
#
# unsafe_follow_pfn() was added by commit 69bacee7f9ad
# ("mm: Add unsafe_follow_pfn") in v5.13-rc1.
#
# Note: this commit never made it to the linux kernel, so
# unsafe_follow_pfn() never existed.
# follow_pfn() was added by commit 3b6748e2dd69
# ("mm: introduce follow_pfn()") in v2.6.31-rc1, and removed
# by commit 233eb0bf3b94 ("mm: remove follow_pfn")
# from linux-next 233eb0bf3b94.
#
CODE="
#include <linux/mm.h>
void conftest_unsafe_follow_pfn(void) {
unsafe_follow_pfn();
void conftest_follow_pfn(void) {
follow_pfn();
}"

compile_check_conftest "$CODE" "NV_UNSAFE_FOLLOW_PFN_PRESENT" "" "functions"
compile_check_conftest "$CODE" "NV_FOLLOW_PFN_PRESENT" "" "functions"
;;

drm_plane_atomic_check_has_atomic_state_arg)
#
# Determine if drm_plane_helper_funcs::atomic_check takes 'state'
Expand Down
3 changes: 2 additions & 1 deletion kernel-open/nvidia/nvidia.Kbuild
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_enable_atomic_ops_to_root
NV_CONFTEST_FUNCTION_COMPILE_TESTS += vga_tryget
NV_CONFTEST_FUNCTION_COMPILE_TESTS += cc_platform_has
NV_CONFTEST_FUNCTION_COMPILE_TESTS += seq_read_iter
NV_CONFTEST_FUNCTION_COMPILE_TESTS += unsafe_follow_pfn
NV_CONFTEST_FUNCTION_COMPILE_TESTS += follow_pfn
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_get
NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_gem_object_put_unlocked
NV_CONFTEST_FUNCTION_COMPILE_TESTS += add_memory_driver_managed
Expand Down Expand Up @@ -231,6 +231,7 @@ NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_memory_block_size_b
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_tegra_platform_is_fpga
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_tegra_platform_is_sim
NV_CONFTEST_SYMBOL_COMPILE_TESTS += crypto
NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_follow_pte

NV_CONFTEST_TYPE_COMPILE_TESTS += dma_ops
NV_CONFTEST_TYPE_COMPILE_TESTS += swiotlb_dma_ops
Expand Down
24 changes: 21 additions & 3 deletions kernel-open/nvidia/os-mlock.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,28 @@ static inline int nv_follow_pfn(struct vm_area_struct *vma,
unsigned long address,
unsigned long *pfn)
{
#if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT)
return unsafe_follow_pfn(vma, address, pfn);
#else
#if defined(NV_FOLLOW_PFN_PRESENT)
return follow_pfn(vma, address, pfn);
#else
#if NV_IS_EXPORT_SYMBOL_PRESENT_follow_pte
int status = 0;
spinlock_t *ptl;
pte_t *ptep;

if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)))
return status;

status = follow_pte(vma, address, &ptep, &ptl);
if (status)
return status;
*pfn = pte_pfn(ptep_get(ptep));

// The lock is acquired inside follow_pte()
pte_unmap_unlock(ptep, ptl);
return 0;
#else // NV_IS_EXPORT_SYMBOL_PRESENT_follow_pte
return -1;
#endif // NV_IS_EXPORT_SYMBOL_PRESENT_follow_pte
#endif
}

Expand Down
4 changes: 2 additions & 2 deletions src/common/displayport/inc/dp_configcaps.h
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ namespace DisplayPort
virtual bool getOuiSupported() = 0;
virtual AuxRetry::status setOuiSource(unsigned ouiId, const char * model, size_t modelNameLength, NvU8 chipRevision) = 0;
virtual bool getOuiSource(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision) = 0;
virtual bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision) = 0;
virtual bool getOuiSink(unsigned &ouiId, unsigned char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision) = 0;
};

class HDCP
Expand Down Expand Up @@ -898,7 +898,7 @@ namespace DisplayPort
size_t modelNameLength, NvU8 chipRevision);
virtual bool getOuiSource(unsigned &ouiId, char * modelName,
size_t modelNameBufferSize, NvU8 & chipRevision);
virtual bool getOuiSink(unsigned &ouiId, char * modelName,
virtual bool getOuiSink(unsigned &ouiId, unsigned char * modelName,
size_t modelNameBufferSize, NvU8 & chipRevision);

// DPCD offset 21h
Expand Down
2 changes: 1 addition & 1 deletion src/common/displayport/inc/dp_connector.h
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,7 @@ namespace DisplayPort

virtual bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12) = 0;

virtual bool getOuiSink(unsigned &ouiId, char * modelName,
virtual bool getOuiSink(unsigned &ouiId, unsigned char * modelName,
size_t modelNameBufferSize, NvU8 & chipRevision) = 0;

virtual bool getIgnoreSourceOuiHandshake() = 0;
Expand Down
9 changes: 5 additions & 4 deletions src/common/displayport/inc/dp_connectorimpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,9 @@ namespace DisplayPort
NvU8 cachedSourceChipRevision;
bool bOuiCached;

unsigned ouiId; // Sink ouiId
char modelName[NV_DPCD_SOURCE_DEV_ID_STRING__SIZE + 1]; // Device Model-name
bool bIgnoreSrcOuiHandshake; // Skip writing source OUI
unsigned ouiId; // Sink ouiId
unsigned char modelName[NV_DPCD_SOURCE_DEV_ID_STRING__SIZE + 1]; // Device Model-name
bool bIgnoreSrcOuiHandshake; // Skip writing source OUI

LinkPolicy linkPolicy;

Expand Down Expand Up @@ -316,6 +316,7 @@ namespace DisplayPort
bool bDisableSSC;
bool bEnableFastLT;
NvU32 maxLinkRateFromRegkey;
bool bFlushTimeslotWhenDirty;

//
// Latency(ms) to apply between link-train and FEC enable for bug
Expand Down Expand Up @@ -644,7 +645,7 @@ namespace DisplayPort
void freeTimeslice(GroupImpl * targetGroup);
void flushTimeslotsToHardware();
bool getHDCPAbortCodesDP12(NvU32 &hdcpAbortCodesDP12);
bool getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision);
bool getOuiSink(unsigned &ouiId, unsigned char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision);
bool hdcpValidateKsv(const NvU8 *ksv, NvU32 Size);
void cancelHdcpCallbacks();
bool handleCPIRQ();
Expand Down
9 changes: 5 additions & 4 deletions src/common/displayport/inc/dp_regkeydatabase.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@
//
#define NV_DP_DSC_MST_CAP_BUG_3143315 "DP_DSC_MST_CAP_BUG_3143315"

//

// Bug 4388987 : This regkey will disable reading PCON caps for MST.
//
#define NV_DP_REGKEY_MST_PCON_CAPS_READ_DISABLED "DP_BUG_4388987_WAR"

//
// Bug 4426624: Flush timeslot change to HW when dirty bit is set.
#define NV_DP_REGKEY_FLUSH_TIMESLOT_INFO_WHEN_DIRTY "DP_BUG_4426624_WAR"

// Bug 4459839 : This regkey will enable DSC irrespective of LT status.
//
#define NV_DP_REGKEY_FORCE_DSC_ON_SINK "DP_FORCE_DSC_ON_SINK"
#define NV_DP_REGKEY_ENABLE_SKIP_DPCD_READS_WAR "DP_BUG_4478047_WAR"
#define NV_DP_REGKEY_DISABLE_TUNNEL_BW_ALLOCATION "DP_DISABLE_TUNNEL_BW_ALLOCATION"
Expand Down Expand Up @@ -120,6 +120,7 @@ struct DP_REGKEY_DATABASE
bool bMSTPCONCapsReadDisabled;
bool bForceDscOnSink;
bool bSkipFakeDeviceDpcdAccess;
bool bFlushTimeslotWhenDirty;
bool bForceDisableTunnelBwAllocation;
};

Expand Down
4 changes: 2 additions & 2 deletions src/common/displayport/src/dp_configcaps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ bool DPCDHALImpl::getOuiSource(unsigned &ouiId, char * modelName,
bool DPCDHALImpl::getOuiSink
(
unsigned &ouiId,
char * modelName,
unsigned char * modelName,
size_t modelNameBufferSize,
NvU8 & chipRevision
)
Expand Down Expand Up @@ -712,7 +712,7 @@ bool DPCDHALImpl::getOuiSink
// Next 6 bytes are Device Identification String, copy as much as we can (limited buffer case).
unsigned int i;
for (i = 0; i < modelNameBufferSize; i++)
modelName[i] = ouiBuffer[3+i];
modelName[i] = (unsigned char)ouiBuffer[3+i];

chipRevision = ouiBuffer[9];

Expand Down
6 changes: 4 additions & 2 deletions src/common/displayport/src/dp_connectorimpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ void ConnectorImpl::applyRegkeyOverrides(const DP_REGKEY_DATABASE& dpRegkeyDatab
this->bReassessMaxLink = dpRegkeyDatabase.bReassessMaxLink;
this->bForceDisableTunnelBwAllocation = dpRegkeyDatabase.bForceDisableTunnelBwAllocation;
this->bSkipFakeDeviceDpcdAccess = dpRegkeyDatabase.bSkipFakeDeviceDpcdAccess;
this->bFlushTimeslotWhenDirty = dpRegkeyDatabase.bFlushTimeslotWhenDirty;
}

void ConnectorImpl::setPolicyModesetOrderMitigation(bool enabled)
Expand Down Expand Up @@ -3689,7 +3690,7 @@ bool ConnectorImpl::assessPCONLinkCapability(PCONLinkControl *pConControl)
return true;
}

bool ConnectorImpl::getOuiSink(unsigned &ouiId, char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision)
bool ConnectorImpl::getOuiSink(unsigned &ouiId, unsigned char * modelName, size_t modelNameBufferSize, NvU8 & chipRevision)
{
if (!previousPlugged || !hal->getOuiSupported())
return false;
Expand Down Expand Up @@ -5838,7 +5839,8 @@ void ConnectorImpl::beforeDeleteStream(GroupImpl * group, bool forFlushMode)
}
}

if (linkUseMultistream() && group && group->isHeadAttached() && group->timeslot.count)
if (linkUseMultistream() && group && group->isHeadAttached() &&
(group->timeslot.count || (this->bFlushTimeslotWhenDirty && group->timeslot.hardwareDirty)))
{
// Detach all the panels from payload
for (Device * d = group->enumDevices(0); d; d = group->enumDevices(d))
Expand Down
1 change: 1 addition & 0 deletions src/common/displayport/src/dp_evoadapter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ const struct
{NV_DP_REGKEY_MST_PCON_CAPS_READ_DISABLED, &dpRegkeyDatabase.bMSTPCONCapsReadDisabled, DP_REG_VAL_BOOL},
{NV_DP_REGKEY_FORCE_DSC_ON_SINK, &dpRegkeyDatabase.bForceDscOnSink, DP_REG_VAL_BOOL},
{NV_DP_REGKEY_ENABLE_SKIP_DPCD_READS_WAR, &dpRegkeyDatabase.bSkipFakeDeviceDpcdAccess, DP_REG_VAL_BOOL},
{NV_DP_REGKEY_FLUSH_TIMESLOT_INFO_WHEN_DIRTY, &dpRegkeyDatabase.bFlushTimeslotWhenDirty, DP_REG_VAL_BOOL},
{NV_DP_REGKEY_DISABLE_TUNNEL_BW_ALLOCATION, &dpRegkeyDatabase.bForceDisableTunnelBwAllocation, DP_REG_VAL_BOOL}
};

Expand Down
10 changes: 10 additions & 0 deletions src/common/displayport/src/dp_groupimpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,16 @@ void GroupImpl::remove(Device * dev)

if (isHeadAttached())
{
/*
* The device may become lost and free after removal from the active
* group. Therefore, also remove the device from the
* 'dscEnabledDevices' list and ensure that its dangling pointer is not
* left behind.
*/
if (parent->dscEnabledDevices.contains(dev)) {
parent->dscEnabledDevices.remove(dev);
}

di->activeGroup = 0;
}
members.remove(di);
Expand Down
7 changes: 4 additions & 3 deletions src/common/displayport/src/dp_wardatabase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,16 @@ void ConnectorImpl::applyOuiWARs()
// Synaptics
case 0x24CC90:
if ((modelName[0] == 'S') && (modelName[1] == 'Y') && (modelName[2] == 'N') &&
(modelName[3] == 'A') && (modelName[4] == 'S') &&
(modelName[3] == 'A') && (((modelName[4] == 'S') &&
((modelName[5] == '1') || (modelName[5] == '2') ||
(modelName[5] == '3') || (modelName[5] == '#') ||
(modelName[5] == '\"')))
(modelName[5] == '\"')))||((modelName[4] == 0x84) &&
(modelName[5] == '0'))))
{
//
// Extended latency from link-train end to FEC enable pattern
// to avoid link lost or blank screen with Synaptics branch.
// (Bug 2561206)
// (Bug 2561206, 4613021)
//
// Dock SKU ID:
// Dell Salomon-WD19TB SYNAS1
Expand Down
20 changes: 10 additions & 10 deletions src/common/inc/nvBldVer.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,25 @@
// and then checked back in. You cannot make changes to these sections without
// corresponding changes to the buildmeister script
#ifndef NV_BUILD_BRANCH
#define NV_BUILD_BRANCH r555_79
#define NV_BUILD_BRANCH r555_97
#endif
#ifndef NV_PUBLIC_BRANCH
#define NV_PUBLIC_BRANCH r555_79
#define NV_PUBLIC_BRANCH r555_97
#endif

#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r555/r555_79-111"
#define NV_BUILD_CHANGELIST_NUM (34260717)
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r555/r555_97-144"
#define NV_BUILD_CHANGELIST_NUM (34376233)
#define NV_BUILD_TYPE "Official"
#define NV_BUILD_NAME "rel/gpu_drv/r555/r555_79-111"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (34260717)
#define NV_BUILD_NAME "rel/gpu_drv/r555/r555_97-144"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (34376233)

#else /* Windows builds */
#define NV_BUILD_BRANCH_VERSION "r555_79-1"
#define NV_BUILD_CHANGELIST_NUM (34253977)
#define NV_BUILD_BRANCH_VERSION "r555_97-2"
#define NV_BUILD_CHANGELIST_NUM (34367477)
#define NV_BUILD_TYPE "Official"
#define NV_BUILD_NAME "555.81"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (34253977)
#define NV_BUILD_NAME "555.99"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (34367477)
#define NV_BUILD_BRANCH_BASE_VERSION R555
#endif
// End buildmeister python edited section
Expand Down
1 change: 1 addition & 0 deletions src/common/inc/nvPNPVendorIds.h
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,7 @@ static const PNPVendorId PNPVendorIds[] =
{ "SMC", _VENDOR_NAME_ENTRY("Standard Microsystems") },
{ "SMI", _VENDOR_NAME_ENTRY("Smile") },
{ "SML", _VENDOR_NAME_ENTRY("Smile") },
{ "SMN", _VENDOR_NAME_ENTRY("Somnium Space Ltd") },
{ "SMS", _VENDOR_NAME_ENTRY("Silicon Multimedia Systems") },
{ "SNI", _VENDOR_NAME_ENTRY("Siemens Nixdorf") },
{ "SNY", _VENDOR_NAME_ENTRY("Sony") },
Expand Down
2 changes: 1 addition & 1 deletion src/common/inc/nvUnixVersion.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) || defined(NV_VMWARE) || defined(NV_QNX) || defined(NV_INTEGRITY) || \
(defined(RMCFG_FEATURE_PLATFORM_GSP) && RMCFG_FEATURE_PLATFORM_GSP == 1)

#define NV_VERSION_STRING "555.42.02"
#define NV_VERSION_STRING "555.52.04"

#else

Expand Down
Loading

0 comments on commit 78d807e

Please sign in to comment.