From 1893c6c8fd17c79d17706d8382af09d360b5b703 Mon Sep 17 00:00:00 2001 From: Bernhard Stoeckner Date: Tue, 1 Jul 2025 19:29:04 +0200 Subject: [PATCH] 575.64.03 --- README.md | 9 +++-- kernel-open/Kbuild | 2 +- kernel-open/conftest.sh | 27 --------------- kernel-open/nvidia-uvm/uvm_ats_sva.c | 5 ++- kernel-open/nvidia/nv-dmabuf.c | 5 ++- kernel-open/nvidia/nvidia.Kbuild | 3 +- src/common/displayport/inc/dp_connectorimpl.h | 3 ++ src/common/displayport/inc/dp_edid.h | 1 + .../displayport/src/dp_connectorimpl.cpp | 34 ++++++++++++------- src/common/displayport/src/dp_wardatabase.cpp | 15 ++++++-- src/common/inc/nvBldVer.h | 20 +++++------ src/common/inc/nvUnixVersion.h | 2 +- src/nvidia/generated/g_chipset_nvoc.h | 5 ++- src/nvidia/generated/g_nv_name_released.h | 3 ++ .../gpu/mem_mgr/arch/maxwell/mem_mgr_gm107.c | 25 +++++++++++++- .../src/kernel/platform/chipset/chipset.c | 1 + .../kernel/platform/chipset/chipset_info.c | 3 ++ version.mk | 4 +-- 18 files changed, 101 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index e6b8dbcd5..4249852ae 100644 --- a/README.md +++ b/README.md @@ -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 575.64. +version 575.64.03. ## How to Build @@ -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 -575.64 driver release. This can be achieved by installing +575.64.03 driver release. This can be achieved by installing the NVIDIA GPU driver from the .run file using the `--no-kernel-modules` option. E.g., @@ -185,7 +185,7 @@ table below). 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/575.64/README/kernel_open.html +https://us.download.nvidia.com/XFree86/Linux-x86_64/575.64.03/README/kernel_open.html For vGPU support, please refer to the README.vgpu packaged in the vGPU Host Package for more details. @@ -987,8 +987,11 @@ Subsystem Device ID. | NVIDIA RTX PRO 2000 Blackwell Generation Laptop GPU | 2D39 | | NVIDIA GeForce RTX 5070 Laptop GPU | 2D58 | | NVIDIA GeForce RTX 5060 Laptop GPU | 2D59 | +| NVIDIA GeForce RTX 5050 | 2D83 | +| NVIDIA GeForce RTX 5050 Laptop GPU | 2D98 | | NVIDIA RTX PRO 1000 Blackwell Generation Laptop GPU | 2DB8 | | NVIDIA RTX PRO 500 Blackwell Generation Laptop GPU | 2DB9 | +| NVIDIA GeForce RTX 5050 Laptop GPU | 2DD8 | | NVIDIA GeForce RTX 5070 | 2F04 | | NVIDIA GeForce RTX 5070 Ti Laptop GPU | 2F18 | | NVIDIA RTX PRO 3000 Blackwell Generation Laptop GPU | 2F38 | diff --git a/kernel-open/Kbuild b/kernel-open/Kbuild index 3d1a1336f..3bcb8832f 100644 --- a/kernel-open/Kbuild +++ b/kernel-open/Kbuild @@ -79,7 +79,7 @@ ccflags-y += -I$(src)/common/inc ccflags-y += -I$(src) ccflags-y += -Wall $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-format-extra-args ccflags-y += -D__KERNEL__ -DMODULE -DNVRM -ccflags-y += -DNV_VERSION_STRING=\"575.64\" +ccflags-y += -DNV_VERSION_STRING=\"575.64.03\" ifneq ($(SYSSRCHOST1X),) ccflags-y += -I$(SYSSRCHOST1X) diff --git a/kernel-open/conftest.sh b/kernel-open/conftest.sh index ceecb5556..d4467807e 100755 --- a/kernel-open/conftest.sh +++ b/kernel-open/conftest.sh @@ -4006,33 +4006,6 @@ compile_test() { fi ;; - dma_buf_has_dynamic_attachment) - # - # Determine if the function dma_buf_attachment_is_dynamic() - # is present. - # - # Added by commit: 15fd552d186c - # ("dma-buf: change DMA-buf locking convention v3") in v5.5 (2018-07-03) - # - echo "$CONFTEST_PREAMBLE - #include - bool conftest_dma_buf_attachment_is_dynamic(void) { - return dma_buf_attachment_is_dynamic(NULL); - }" > conftest$$.c - - $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 - rm -f conftest$$.c - - if [ -f conftest$$.o ]; then - echo "#define NV_DMA_BUF_HAS_DYNAMIC_ATTACHMENT" | append_conftest "functions" - rm -f conftest$$.o - return - else - echo "#undef NV_DMA_BUF_HAS_DYNAMIC_ATTACHMENT" | append_conftest "functions" - return - fi - ;; - dma_buf_attachment_has_peer2peer) # # Determine if peer2peer is present in struct dma_buf_attachment. diff --git a/kernel-open/nvidia-uvm/uvm_ats_sva.c b/kernel-open/nvidia-uvm/uvm_ats_sva.c index f33fab037..3b03ec93b 100644 --- a/kernel-open/nvidia-uvm/uvm_ats_sva.c +++ b/kernel-open/nvidia-uvm/uvm_ats_sva.c @@ -308,12 +308,13 @@ void uvm_ats_smmu_invalidate_tlbs(uvm_gpu_va_space_t *gpu_va_space, NvU64 addr, NV_STATUS uvm_ats_sva_add_gpu(uvm_parent_gpu_t *parent_gpu) { +#if NV_IS_EXPORT_SYMBOL_GPL_iommu_dev_enable_feature int ret; ret = iommu_dev_enable_feature(&parent_gpu->pci_dev->dev, IOMMU_DEV_FEAT_SVA); if (ret) return errno_to_nv_status(ret); - +#endif if (UVM_ATS_SMMU_WAR_REQUIRED()) return uvm_ats_smmu_war_init(parent_gpu); else @@ -325,7 +326,9 @@ void uvm_ats_sva_remove_gpu(uvm_parent_gpu_t *parent_gpu) if (UVM_ATS_SMMU_WAR_REQUIRED()) uvm_ats_smmu_war_deinit(parent_gpu); +#if NV_IS_EXPORT_SYMBOL_GPL_iommu_dev_disable_feature iommu_dev_disable_feature(&parent_gpu->pci_dev->dev, IOMMU_DEV_FEAT_SVA); +#endif } NV_STATUS uvm_ats_sva_bind_gpu(uvm_gpu_va_space_t *gpu_va_space) diff --git a/kernel-open/nvidia/nv-dmabuf.c b/kernel-open/nvidia/nv-dmabuf.c index 8c1447b90..379217ab3 100644 --- a/kernel-open/nvidia/nv-dmabuf.c +++ b/kernel-open/nvidia/nv-dmabuf.c @@ -837,11 +837,10 @@ nv_dma_buf_map( // PCIe mapping, importers must be able to handle peer MMIO resources // not backed by struct page. // -#if defined(NV_DMA_BUF_HAS_DYNAMIC_ATTACHMENT) && \ - defined(NV_DMA_BUF_ATTACHMENT_HAS_PEER2PEER) +#if defined(NV_DMA_BUF_ATTACHMENT_HAS_PEER2PEER) if (((!priv->nv->coherent) || (priv->mapping_type == NV_DMABUF_EXPORT_MAPPING_TYPE_FORCE_PCIE)) && - dma_buf_attachment_is_dynamic(attachment) && + (attachment->importer_ops != NULL) && !attachment->peer2peer) { nv_printf(NV_DBG_ERRORS, diff --git a/kernel-open/nvidia/nvidia.Kbuild b/kernel-open/nvidia/nvidia.Kbuild index 6ac72a73d..d55ec978e 100644 --- a/kernel-open/nvidia/nvidia.Kbuild +++ b/kernel-open/nvidia/nvidia.Kbuild @@ -186,7 +186,6 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_ops_has_kmap NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_ops_has_kmap_atomic NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_ops_has_map NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_ops_has_map_atomic -NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_has_dynamic_attachment NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_buf_attachment_has_peer2peer NV_CONFTEST_FUNCTION_COMPILE_TESTS += dma_set_mask_and_coherent NV_CONFTEST_FUNCTION_COMPILE_TESTS += devm_clk_bulk_get_all @@ -241,6 +240,8 @@ NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present___platform_driver_r NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_hrtimer_setup NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_timer_delete_sync NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl___vma_start_write +NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl_iommu_dev_enable_feature +NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl_iommu_dev_disable_feature NV_CONFTEST_TYPE_COMPILE_TESTS += dma_ops NV_CONFTEST_TYPE_COMPILE_TESTS += swiotlb_dma_ops diff --git a/src/common/displayport/inc/dp_connectorimpl.h b/src/common/displayport/inc/dp_connectorimpl.h index af5567baf..88e096f65 100644 --- a/src/common/displayport/inc/dp_connectorimpl.h +++ b/src/common/displayport/inc/dp_connectorimpl.h @@ -327,6 +327,9 @@ namespace DisplayPort // bool bForceHeadShutdownOnModeTransition; + // Set to true when we want to skip reset MST_EN before LT + bool bSkipResetMSTMBeforeLt; + bool bReportDeviceLostBeforeNew; bool bDisableSSC; bool bEnableFastLT; diff --git a/src/common/displayport/inc/dp_edid.h b/src/common/displayport/inc/dp_edid.h index e0c97ebd6..8b411e45f 100644 --- a/src/common/displayport/inc/dp_edid.h +++ b/src/common/displayport/inc/dp_edid.h @@ -173,6 +173,7 @@ namespace DisplayPort bool bForceHeadShutdownOnModeTransition; bool bSkipCableIdCheck; bool bAllocateManualTimeslots; + bool bSkipResetMSTMBeforeLt; }_WARFlags; _WARFlags WARFlags; diff --git a/src/common/displayport/src/dp_connectorimpl.cpp b/src/common/displayport/src/dp_connectorimpl.cpp index 8cad2c9b3..62810a7c7 100644 --- a/src/common/displayport/src/dp_connectorimpl.cpp +++ b/src/common/displayport/src/dp_connectorimpl.cpp @@ -2787,13 +2787,13 @@ bool ConnectorImpl::isHeadShutDownNeeded(Group * target, // Group // In case of mode transition (DSC <-> non-DSC), if the link config is same as previous mode, we need to shut down the head // since VBID[6] needs to be updated accordingly // - if ((bForceHeadShutdownOnModeTransition && + if ((bForceHeadShutdownOnModeTransition && ((modesetInfo.bEnableDsc && targetImpl->lastModesetInfo.bEnableDsc) && (modesetInfo.bitsPerComponent != targetImpl->lastModesetInfo.bitsPerComponent))) || - ((lowestSelected.getTotalDataRate() == activeLinkConfig.getTotalDataRate()) && - (modesetInfo.bEnableDsc != targetImpl->lastModesetInfo.bEnableDsc))) + ((lowestSelected.getTotalDataRate() == activeLinkConfig.getTotalDataRate()) && + (modesetInfo.bEnableDsc != targetImpl->lastModesetInfo.bEnableDsc))) { - return true; + return true; } // For dual DP while changing link config, we need to shut @@ -5358,9 +5358,9 @@ bool ConnectorImpl::getValidLowestLinkConfig { // // If highest link rate is UHBR 128b132b and current selected config is 8b10b, - // FEC should not be enabled if DSC is not enabled since - // 1. This function will be called only for SST and that too when preferred - // link config is not set. + // FEC should not be enabled if DSC is not enabled since + // 1. This function will be called only for SST and that too when preferred + // link config is not set. // 2. for SST and in 8b10b mode, FEC is enabled only when DSC is enabled // selectedConfig.enableFEC(false); @@ -5655,8 +5655,9 @@ bool ConnectorImpl::validateLinkConfiguration(const LinkConfiguration & lConfig) bool ConnectorImpl::train(const LinkConfiguration & lConfig, bool force, LinkTrainingType trainType) { - LinkTrainingType preferredTrainingType = trainType; - bool result = true; + LinkTrainingType preferredTrainingType = trainType; + bool result = true; + NvBool bSkipSettingStreamMode = false; // Validate link config against caps if (!force && !validateLinkConfiguration(lConfig)) @@ -5693,10 +5694,16 @@ bool ConnectorImpl::train(const LinkConfiguration & lConfig, bool force, } // - // Don't set the stream if we're shutting off the link - // or forcing the config + // Don't set the stream if we're: + // - forcing the config + // - Skipping LT and the flag to skip stream mode setting is true + // - shutting off the link // - if (!force && lConfig.lanes != 0) + bSkipSettingStreamMode = force || + (bSkipLt && this->bSkipResetMSTMBeforeLt) || + (lConfig.lanes == 0); + + if (!bSkipSettingStreamMode) { if (isLinkActive()) { @@ -7009,6 +7016,8 @@ void ConnectorImpl::notifyLongPulseInternal(bool statusConnected) { bDelayAfterD3 = true; } + // Do not reset MST_EN before LT for Sony SDM27Q10S in SST mode + this->bSkipResetMSTMBeforeLt = tmpEdid.WARFlags.bSkipResetMSTMBeforeLt; // Panels use Legacy address range for interrupt reporting if (tmpEdid.WARFlags.useLegacyAddress) @@ -8294,6 +8303,7 @@ void ConnectorImpl::configInit() bDP2XPreferNonDSCForLowPClk = false; bDisableDscMaxBppLimit = false; bForceHeadShutdownOnModeTransition = false; + bSkipResetMSTMBeforeLt = false; } bool ConnectorImpl::dpUpdateDscStream(Group *target, NvU32 dscBpp) diff --git a/src/common/displayport/src/dp_wardatabase.cpp b/src/common/displayport/src/dp_wardatabase.cpp index 99b9f15c9..d579b18ff 100644 --- a/src/common/displayport/src/dp_wardatabase.cpp +++ b/src/common/displayport/src/dp_wardatabase.cpp @@ -1,4 +1,4 @@ -/* + /* * SPDX-FileCopyrightText: Copyright (c) 1993-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: MIT * @@ -615,12 +615,13 @@ void Edid::applyEdidWorkArounds(NvU32 warFlag, const DpMonitorDenylistData *pDen this->WARFlags.bSkipCableIdCheck = true; DP_PRINTF(DP_NOTICE, "DP-WAR> Panel does not expose cable capability. Ignoring it. Bug 4968411"); } - else if(ProductID == 0x24b5 || ProductID == 0x32f2) + else if(ProductID == 0x24b5 || ProductID == 0x32f2 || ProductID == 0x27BC) { // // Asus ROG PG248QP (0x24b5) Bug 5100062 // Asus ROG PG32UCDM (0x32f2) Bug 5088957 - // + // Asus ROG PG27AQN (0x27BC) Bug 5300665 + this->WARFlags.bForceHeadShutdown = true; DP_PRINTF(DP_NOTICE, "DP-WAR> Force head shutdown."); } @@ -650,6 +651,14 @@ void Edid::applyEdidWorkArounds(NvU32 warFlag, const DpMonitorDenylistData *pDen DP_PRINTF(DP_NOTICE, "DP-WAR> VRT monitor does not work with GB20x when downspread is enabled. Disabling downspread."); } break; + + case 0xD94D: // Sony + if (ProductID == 0x07EE) // Sony SDM27Q10S + { + this->WARFlags.bSkipResetMSTMBeforeLt = true; + DP_PRINTF(DP_NOTICE, "DP-WAR> Sony SDM27Q10S needs to skip reset MST_EN before LT"); + } + break; default: break; } diff --git a/src/common/inc/nvBldVer.h b/src/common/inc/nvBldVer.h index 034d83d14..492eb356e 100644 --- a/src/common/inc/nvBldVer.h +++ b/src/common/inc/nvBldVer.h @@ -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_00 + #define NV_BUILD_BRANCH r576_76 #endif #ifndef NV_PUBLIC_BRANCH - #define NV_PUBLIC_BRANCH r575_00 + #define NV_PUBLIC_BRANCH r576_76 #endif #if defined(NV_LINUX) || defined(NV_BSD) || defined(NV_SUNOS) -#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r575/r575_00-212" -#define NV_BUILD_CHANGELIST_NUM (36105353) +#define NV_BUILD_BRANCH_VERSION "rel/gpu_drv/r575/r576_76-213" +#define NV_BUILD_CHANGELIST_NUM (36163547) #define NV_BUILD_TYPE "Official" -#define NV_BUILD_NAME "rel/gpu_drv/r575/r575_00-212" -#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36105353) +#define NV_BUILD_NAME "rel/gpu_drv/r575/r576_76-213" +#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36163547) #else /* Windows builds */ -#define NV_BUILD_BRANCH_VERSION "r575_00-160" -#define NV_BUILD_CHANGELIST_NUM (36104828) +#define NV_BUILD_BRANCH_VERSION "r576_76-5" +#define NV_BUILD_CHANGELIST_NUM (36158686) #define NV_BUILD_TYPE "Official" -#define NV_BUILD_NAME "576.76" -#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36104828) +#define NV_BUILD_NAME "576.88" +#define NV_LAST_OFFICIAL_CHANGELIST_NUM (36158686) #define NV_BUILD_BRANCH_BASE_VERSION R575 #endif // End buildmeister python edited section diff --git a/src/common/inc/nvUnixVersion.h b/src/common/inc/nvUnixVersion.h index f35b9eaf3..12a7c8a7f 100644 --- a/src/common/inc/nvUnixVersion.h +++ b/src/common/inc/nvUnixVersion.h @@ -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.64" +#define NV_VERSION_STRING "575.64.03" #else diff --git a/src/nvidia/generated/g_chipset_nvoc.h b/src/nvidia/generated/g_chipset_nvoc.h index 14580327a..e5f821306 100644 --- a/src/nvidia/generated/g_chipset_nvoc.h +++ b/src/nvidia/generated/g_chipset_nvoc.h @@ -306,7 +306,7 @@ struct OBJCL { struct Object *__nvoc_pbase_Object; // obj super struct OBJCL *__nvoc_pbase_OBJCL; // cl - // 36 PDB properties + // 37 PDB properties NvBool PDB_PROP_CL_PCIE_CONFIG_ACCESSIBLE; NvBool PDB_PROP_CL_DISABLE_BR03_FLOW_CONTROL; NvBool PDB_PROP_CL_ASLM_SUPPORTS_NV_LINK_UPGRADE; @@ -340,6 +340,7 @@ struct OBJCL { NvBool PDB_PROP_CL_UNSUPPORTED_CHIPSET; NvBool PDB_PROP_CL_IS_CHIPSET_IO_COHERENT; NvBool PDB_PROP_CL_DISABLE_IOMAP_WC; + NvBool PDB_PROP_CL_WAR_AMD_5107271; NvBool PDB_PROP_CL_HAS_RESIZABLE_BAR_ISSUE; NvBool PDB_PROP_CL_BUG_3751839_GEN_SPEED_WAR; NvBool PDB_PROP_CL_BUG_3562968_WAR_ALLOW_PCIE_ATOMICS; @@ -390,6 +391,8 @@ extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJCL; #endif //__nvoc_chipset_h_disabled // Property macros +#define PDB_PROP_CL_WAR_AMD_5107271_BASE_CAST +#define PDB_PROP_CL_WAR_AMD_5107271_BASE_NAME PDB_PROP_CL_WAR_AMD_5107271 #define PDB_PROP_CL_PCIE_CONFIG_SKIP_MCFG_READ_BASE_CAST #define PDB_PROP_CL_PCIE_CONFIG_SKIP_MCFG_READ_BASE_NAME PDB_PROP_CL_PCIE_CONFIG_SKIP_MCFG_READ #define PDB_PROP_CL_EXTENDED_TAG_FIELD_NOT_CAPABLE_BASE_CAST diff --git a/src/nvidia/generated/g_nv_name_released.h b/src/nvidia/generated/g_nv_name_released.h index 8d39ae248..cdfc12b47 100644 --- a/src/nvidia/generated/g_nv_name_released.h +++ b/src/nvidia/generated/g_nv_name_released.h @@ -5452,8 +5452,11 @@ static const CHIPS_RELEASED sChipsReleased[] = { { 0x2D39, 0x0000, 0x0000, "NVIDIA RTX PRO 2000 Blackwell Generation Laptop GPU" }, { 0x2D58, 0x0000, 0x0000, "NVIDIA GeForce RTX 5070 Laptop GPU" }, { 0x2D59, 0x0000, 0x0000, "NVIDIA GeForce RTX 5060 Laptop GPU" }, + { 0x2D83, 0x0000, 0x0000, "NVIDIA GeForce RTX 5050" }, + { 0x2D98, 0x0000, 0x0000, "NVIDIA GeForce RTX 5050 Laptop GPU" }, { 0x2DB8, 0x0000, 0x0000, "NVIDIA RTX PRO 1000 Blackwell Generation Laptop GPU" }, { 0x2DB9, 0x0000, 0x0000, "NVIDIA RTX PRO 500 Blackwell Generation Laptop GPU" }, + { 0x2DD8, 0x0000, 0x0000, "NVIDIA GeForce RTX 5050 Laptop GPU" }, { 0x2F04, 0x0000, 0x0000, "NVIDIA GeForce RTX 5070" }, { 0x2F18, 0x0000, 0x0000, "NVIDIA GeForce RTX 5070 Ti Laptop GPU" }, { 0x2F38, 0x0000, 0x0000, "NVIDIA RTX PRO 3000 Blackwell Generation Laptop GPU" }, diff --git a/src/nvidia/src/kernel/gpu/mem_mgr/arch/maxwell/mem_mgr_gm107.c b/src/nvidia/src/kernel/gpu/mem_mgr/arch/maxwell/mem_mgr_gm107.c index 2f22d435d..e726b5926 100644 --- a/src/nvidia/src/kernel/gpu/mem_mgr/arch/maxwell/mem_mgr_gm107.c +++ b/src/nvidia/src/kernel/gpu/mem_mgr/arch/maxwell/mem_mgr_gm107.c @@ -49,6 +49,7 @@ #include "vgpu/rpc.h" #include "vgpu/vgpu_events.h" +#include "nvdevid.h" // // statics @@ -1428,15 +1429,37 @@ memmgrGetRsvdSizeForSr_GM107 MemoryManager *pMemoryManager ) { + // + // Temporary WAR to override WDDM S/R buffer for specific skus + // Bug 5327051 + // + static const NvU16 gb20x_devid[] = { 0x2B8C }; + NvU32 pciDeviceID = DRF_VAL(_PCI, _DEVID, _DEVICE, pGpu->idInfo.PCIDeviceID); + NvBool overrideFbsrRsvdBufferSize = NV_FALSE; + + for (NvU32 i = 0; i < NV_ARRAY_ELEMENTS(gb20x_devid); i++) + { + if (pciDeviceID == gb20x_devid[i]) + { + overrideFbsrRsvdBufferSize = NV_TRUE; + break; + } + } + if (((pMemoryManager->Ram.fbTotalMemSizeMb >> 10) >= 31) || IS_GSP_CLIENT(pGpu)) { // // We need to reserve more memory for S/R if - // 1. FB size is > 32GB Bug Id: 2468357 + // 1. FB size is >= 31GB Bug Id: 2468357 // 2. Or GSP is enabled Bug Id: 4312881 // return 512 * 1024 * 1024; } + else if (overrideFbsrRsvdBufferSize) + { + // Bug 5327051: WAR to override WDDM S/R buffer for specific skus + return 300 * 1024 * 1024; + } else { return 256 * 1024 * 1024; diff --git a/src/nvidia/src/kernel/platform/chipset/chipset.c b/src/nvidia/src/kernel/platform/chipset/chipset.c index 1940d325b..733839650 100644 --- a/src/nvidia/src/kernel/platform/chipset/chipset.c +++ b/src/nvidia/src/kernel/platform/chipset/chipset.c @@ -811,6 +811,7 @@ void clSyncWithGsp_IMPL(OBJCL *pCl, GspSystemInfo *pGSI) CL_SYNC_PDB(PDB_PROP_CL_HAS_RESIZABLE_BAR_ISSUE); CL_SYNC_PDB(PDB_PROP_CL_BUG_3751839_GEN_SPEED_WAR); CL_SYNC_PDB(PDB_PROP_CL_BUG_3562968_WAR_ALLOW_PCIE_ATOMICS); + CL_SYNC_PDB(PDB_PROP_CL_WAR_AMD_5107271); #undef CL_SYNC_PDB diff --git a/src/nvidia/src/kernel/platform/chipset/chipset_info.c b/src/nvidia/src/kernel/platform/chipset/chipset_info.c index 886656b27..185964fb4 100644 --- a/src/nvidia/src/kernel/platform/chipset/chipset_info.c +++ b/src/nvidia/src/kernel/platform/chipset/chipset_info.c @@ -1138,6 +1138,9 @@ AMD_X370_setupFunc ) { + // WAR for bug 5107271 handling + pCl->setProperty(pCl, PDB_PROP_CL_WAR_AMD_5107271, NV_TRUE); + // Set ASPM L0S\L1 properties _Set_ASPM_L0S_L1(pCl, NV_FALSE, NV_FALSE); diff --git a/version.mk b/version.mk index 0770faf0c..307fbbbe1 100644 --- a/version.mk +++ b/version.mk @@ -1,5 +1,5 @@ -NVIDIA_VERSION = 575.64 -NVIDIA_NVID_VERSION = 575.64 +NVIDIA_VERSION = 575.64.03 +NVIDIA_NVID_VERSION = 575.64.03 NVIDIA_NVID_EXTRA = # This file.