575.57.08

This commit is contained in:
Maneet Singh
2025-05-29 10:58:21 -07:00
parent e00332b05f
commit 30e15d79de
74 changed files with 798 additions and 417 deletions

View File

@@ -333,6 +333,9 @@ namespace DisplayPort
virtual bool getDeviceSpecificData(NvU8 *oui, NvU8 *deviceIdString,
NvU8 *hwRevision, NvU8 *swMajorRevision,
NvU8 *swMinorRevision) = 0;
virtual bool getParentSpecificData(NvU8 *oui, NvU8 *deviceIdString,
NvU8 *hwRevision, NvU8 *swMajorRevision,
NvU8 *swMinorRevision) = 0;
virtual bool setModeList(DisplayPort::DpModesetParams *pModeList, unsigned numModes) = 0;

View File

@@ -508,6 +508,9 @@ namespace DisplayPort
virtual bool getDeviceSpecificData(NvU8 *oui, NvU8 *deviceIdString,
NvU8 *hwRevision, NvU8 *swMajorRevision,
NvU8 *swMinorRevision);
virtual bool getParentSpecificData(NvU8 *oui, NvU8 *deviceIdString,
NvU8 *hwRevision, NvU8 *swMajorRevision,
NvU8 *swMinorRevision);
virtual bool setModeList(DisplayPort::DpModesetParams *pModeList, unsigned numModes);
};

View File

@@ -561,12 +561,22 @@ bool ConnectorImpl2x::compoundQueryAttachMSTGeneric(Group * target,
tail->bandwidth.compound_query_state.totalTimeSlots)
{
compoundQueryResult = false;
if(this->bEnableLowerBppCheckForDsc)
{
tail->bandwidth.compound_query_state.timeslots_used_by_query -= linkConfig->slotsForPBN(base_pbn);
tail->bandwidth.compound_query_state.bandwidthAllocatedForIndex &= ~(1 << compoundQueryCount);
}
SET_DP_IMP_ERROR(pErrorCode, DP_IMP_ERROR_INSUFFICIENT_BANDWIDTH)
}
}
tail = (DeviceImpl*)tail->getParent();
}
}
// If the compoundQueryResult is false, we need to reset the compoundQueryLocalLinkPBN
if (!compoundQueryResult && this->bEnableLowerBppCheckForDsc)
{
compoundQueryLocalLinkPBN -= slots_pbn;
}
}
else
{
@@ -1261,8 +1271,8 @@ void ConnectorImpl2x::notifyDetachBegin(Group *target)
Device *newDev = target->enumDevices(0);
DeviceImpl *dev = (DeviceImpl *)newDev;
GroupImpl *group = (GroupImpl*)target;
GroupImpl *group = (GroupImpl*)target;
if (dev != NULL && dev->bApplyPclkWarBug4949066 == true)
{
EvoInterface *provider = ((EvoMainLink *)main)->getProvider();
@@ -1840,11 +1850,14 @@ void ConnectorImpl2x::handleEdidWARs(Edid & edid, DiscoveryManager::Device & dev
if (edid.WARFlags.bDisableDscMaxBppLimit)
{
bDisableDscMaxBppLimit = true;
}
}
if (edid.WARFlags.bForceHeadShutdownOnModeTransition)
{
bForceHeadShutdownOnModeTransition = true;
}
if (edid.WARFlags.bDisableDownspread)
{
setDisableDownspread(true);
}
}

View File

@@ -3232,6 +3232,19 @@ bool DeviceImpl::getDeviceSpecificData(NvU8 *oui, NvU8 *devIdString,
return true;
}
bool DeviceImpl::getParentSpecificData(NvU8 *oui, NvU8 *devIdString,
NvU8 *hwRevision, NvU8 *swMajorRevision,
NvU8 *swMinorRevision)
{
if (this->parent == NULL)
{
return false;
}
return this->parent->getDeviceSpecificData(oui, devIdString, hwRevision,
swMajorRevision, swMinorRevision);
}
bool DeviceImpl::setModeList(DisplayPort::DpModesetParams *modeList, unsigned numModes)
{
// Create a dummy group for compoundQuery

View File

@@ -600,18 +600,18 @@ void Edid::applyEdidWorkArounds(NvU32 warFlag, const DpMonitorDenylistData *pDen
{
this->WARFlags.bDisableDscMaxBppLimit = true;
DP_PRINTF(DP_NOTICE, "DP-WAR> Disable DSC max BPP limit of 16 for DSC.");
}
else if (ProductID == 0x5CA7)
}
else if (ProductID == 0x5CA7 || ProductID == 0x9E9D || ProductID == 0x9EA0 || ProductID == 0x9EA5 || ProductID == 0x5CB7 ||
ProductID == 0x9EA8 || ProductID == 0x9EAF || ProductID == 0x7846 || ProductID == 0x7849 || ProductID == 0x5CB5)
{
this->WARFlags.bForceHeadShutdownOnModeTransition = true;
DP_PRINTF(DP_NOTICE, "DP-WAR> Force head shutdown on Mode transition.");
}
break;
// Gigabyte
case 0x541C:
if (ProductID == 0x3215)
case 0xB306:
if (ProductID == 0x3228)
{
// Gigabyte AORUS FO32U2P does not set DPCD 0x2217 to reflect correct CableID.
// ASUS PG32UQXR does not set DPCD 0x2217 to reflect correct CableID.
this->WARFlags.bSkipCableIdCheck = true;
DP_PRINTF(DP_NOTICE, "DP-WAR> Panel does not expose cable capability. Ignoring it. Bug 4968411");
}
@@ -643,7 +643,13 @@ void Edid::applyEdidWorkArounds(NvU32 warFlag, const DpMonitorDenylistData *pDen
this->WARFlags.bDisableDownspread = true;
}
break;
case 0x545A: // VRT Varjo XR3
if (ProductID == 0x5841 || ProductID == 0x5842 || ProductID == 0x5843)
{
this->WARFlags.bDisableDownspread = true;
DP_PRINTF(DP_NOTICE, "DP-WAR> VRT monitor does not work with GB20x when downspread is enabled. Disabling downspread.");
}
break;
default:
break;
}

View File

@@ -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 r575_92
#define NV_BUILD_BRANCH r576_41
#endif
#ifndef NV_PUBLIC_BRANCH
#define NV_PUBLIC_BRANCH r575_92
#define NV_PUBLIC_BRANCH r576_41
#endif
#if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS)
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r575/r575_92-148"
#define NV_BUILD_CHANGELIST_NUM (35843743)
#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r575/r576_41-183"
#define NV_BUILD_CHANGELIST_NUM (36029171)
#define NV_BUILD_TYPE "Official"
#define NV_BUILD_NAME "rel/gpu_drv/r575/r575_92-148"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (35843743)
#define NV_BUILD_NAME "rel/gpu_drv/r575/r576_41-183"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36029171)
#else /* Windows builds */
#define NV_BUILD_BRANCH_VERSION "r575_92-7"
#define NV_BUILD_CHANGELIST_NUM (35824637)
#define NV_BUILD_BRANCH_VERSION "r576_41-8"
#define NV_BUILD_CHANGELIST_NUM (36020778)
#define NV_BUILD_TYPE "Official"
#define NV_BUILD_NAME "576.02"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (35824637)
#define NV_BUILD_NAME "576.60"
#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36020778)
#define NV_BUILD_BRANCH_BASE_VERSION R575
#endif
// End buildmeister python edited section

View File

@@ -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 "575.51.03"
#define NV_VERSION_STRING "575.57.08"
#else

View File

@@ -941,7 +941,6 @@ cleanup:
if (tempStatus != NVL_SUCCESS)
{
NVSWITCH_PRINT(device, ERROR, "Link %d Inband Buffer transfer for RX_BUFFER_CLEAR\n", linkId);
return;
}
if (device->link[linkId].inbandData.message != NULL)
{

View File

@@ -2139,6 +2139,16 @@ typedef struct NV0000_CTRL_CMD_SYSTEM_GET_SYSTEM_POWER_LIMIT {
NvU32 shortTimescaleBatteryCurrentLimitmA;
} NV0000_CTRL_CMD_SYSTEM_GET_SYSTEM_POWER_LIMIT;
/*!
* States for the Battery CPU TDP Control ability.
* _CPU_TDP_CONTROL_TYPE_DC_ONLY :==> Legacy setting for DC only CPU TDP Control
* _CPU_TDP_CONTROL_TYPE_DC_AC :==> AC and DC both support CPU TDP Control
*/
typedef enum QBOOST_CPU_TDP_CONTROL_TYPE {
QBOOST_CPU_TDP_CONTROL_TYPE_DC_ONLY = 0,
QBOOST_CPU_TDP_CONTROL_TYPE_DC_AC = 1,
} QBOOST_CPU_TDP_CONTROL_TYPE;
#define NV0000_CTRL_SYSTEM_NVPCF_GET_POWER_MODE_INFO_PARAMS_MESSAGE_ID (0x3BU)
typedef struct NV0000_CTRL_SYSTEM_NVPCF_GET_POWER_MODE_INFO_PARAMS {
@@ -2277,6 +2287,9 @@ typedef struct NV0000_CTRL_SYSTEM_NVPCF_GET_POWER_MODE_INFO_PARAMS {
/* CPU TDP Limit to be set (milliwatts) */
NvU32 cpuTdpmw;
/* CPU TDP Control Support */
QBOOST_CPU_TDP_CONTROL_TYPE cpuTdpControlType;
} NV0000_CTRL_SYSTEM_NVPCF_GET_POWER_MODE_INFO_PARAMS;
/* Define the filter types */

View File

@@ -1694,3 +1694,5 @@ typedef struct NV2080_CTRL_CMD_BUS_SET_C2C_LPWR_STATE_VOTE_PARAMS {
NvU32 c2cLpwrStateId;
NvBool bAllowed;
} NV2080_CTRL_CMD_BUS_SET_C2C_LPWR_STATE_VOTE_PARAMS;

View File

@@ -79,6 +79,7 @@ extern "C" {
#define NVOS_STATUS_ERROR_ILLEGAL_ACTION NV_ERR_ILLEGAL_ACTION
#define NVOS_STATUS_ERROR_IN_USE NV_ERR_STATE_IN_USE
#define NVOS_STATUS_ERROR_INSUFFICIENT_RESOURCES NV_ERR_INSUFFICIENT_RESOURCES
#define NVOS_STATUS_ERROR_INSUFFICIENT_ZBC_ENTRY NV_ERR_INSUFFICIENT_ZBC_ENTRY
#define NVOS_STATUS_ERROR_INVALID_ACCESS_TYPE NV_ERR_INVALID_ACCESS_TYPE
#define NVOS_STATUS_ERROR_INVALID_ARGUMENT NV_ERR_INVALID_ARGUMENT
#define NVOS_STATUS_ERROR_INVALID_BASE NV_ERR_INVALID_BASE

View File

@@ -569,7 +569,7 @@ static int libos_printf_a(
// Prefix every line with T:nnnn GPUn Ucode-task: filename(lineNumber):
len = snprintf(
logDecode->curLineBufPtr, remain,
"T:%llu ", pRec->timeStamp);
"T:%llu ", pRec->timeStamp + pRec->log->localToGlobalTimerDelta);
if (len < 0)
{
return -1;
@@ -590,7 +590,7 @@ static int libos_printf_a(
{
struct tm tmStruct;
// Libos timestamp is a PTIMER value, which is UNIX time in ns
time_t timeSec = pRec->timeStamp / 1000000000;
time_t timeSec = (pRec->timeStamp + pRec->log->localToGlobalTimerDelta) / 1000000000;
#if NVOS_IS_WINDOWS
// "The implementation of localtime_s in Microsoft CRT is incompatible with the
// C standard since it has reversed parameter order and returns errno_t."
@@ -1324,7 +1324,6 @@ static void libosExtractLogs_decode(LIBOS_LOG_DECODE *logDecode)
recSize * sizeof(NvU64));
pPrevRec = (LIBOS_LOG_DECODE_RECORD *)&logDecode->scratchBuffer[dst];
pPrevRec->timeStamp += pLog->localToGlobalTimerDelta;
}
// Read in the next record from the log we just copied.