Problem
At boot, PlatformRequestHandler fires two NV_ERR_INVALID_DATA assertions:
NVRM: GPU0 nvAssertOkFailedNoLog: Assertion failed: Invalid data passed [NV_ERR_INVALID_DATA] (0x00000025) returned from PlatformRequestHandler failed to get target temp from SBIOS @ platform_request_handler_ctrl.c:2174
NVRM: GPU0 nvAssertOkFailedNoLog: Assertion failed: Invalid data passed [NV_ERR_INVALID_DATA] (0x00000025) returned from PlatformRequestHandler failed to get platform power mode from SBIOS @ platform_request_handler_ctrl.c:2117
These are boot-only cosmetic (runtime works fine), but the root cause is a missing guard in the driver.
Root Cause
In _pfmreqhndlrCallPshareStatus (platform_request_handler_ctrl.c), the bSystemParamLimitUpdate block at line 2467 has no !bInit guard:
// line 2467 — MISSING guard
if (pPfmreqhndlrData->PFMREQHNDLRACPIData.bSystemParamLimitUpdate)
{
_pfmreqhndlrUpdateTgpuLimit(pPlatformRequestHandler, pGpu); // line 2473 → 2174 ASSERT
_pfmreqhndlrUpdatePpmdLimit(pPlatformRequestHandler, pGpu, NV_FALSE); // line 2482 → 2117 ASSERT
pPfmreqhndlrData->PFMREQHNDLRACPIData.bSystemParamLimitUpdate = NV_FALSE;
}
Every other block in the same function has a guard:
| Line |
Block |
Guard |
| 2387 |
EDPpeak |
&& !bInit |
| 2442 |
UserConfigTGP |
&& !bInit |
| 2457 |
PlatformCustomization |
(bInit) |
| 2467 |
bSystemParamLimitUpdate |
none |
During init, PSHARESTATUS (func 0x20) returns _UPDATE_LIMIT_PENDING. The driver immediately calls _pfmreqhndlrUpdateTgpuLimit and _pfmreqhndlrUpdatePpmdLimit before PSHAREPARAMS (func 0x2A) has initialized the TGPU/PPMD sensor counters. The counters are bSupported=false && !bVolatile, so pfmreqhndlrGetPerfSensorCounterById returns NV_ERR_INVALID_DATA.
The init-time PPMD update at line 1218 (after PSHAREPARAMS) already handles boot-time PPMD initialization correctly. The bSystemParamLimitUpdate block should be deferred to runtime, matching the pattern used by every other block.
Fix
One-line change at platform_request_handler_ctrl.c:2467:
// BEFORE:
if (pPfmreqhndlrData->PFMREQHNDLRACPIData.bSystemParamLimitUpdate)
// AFTER:
if (pPfmreqhndlrData->PFMREQHNDLRACPIData.bSystemParamLimitUpdate && !bInit)
Environment
- Driver: 610.57.04 (open)
- GPU: RTX 5050 Laptop (GB207M, 10DE:2D98)
- Kernel: 7.2.3-1-cachyos
- Platform: Lenovo LOQ 15IRX11
Impact
Boot-only cosmetic. No runtime side effects. The TGPU limit is applied on first runtime PSHARESTATUS with _UPDATE_LIMIT_PENDING. The init-time PPMD update at line 1218 already handles boot-time sensor initialization.
Problem
At boot,
PlatformRequestHandlerfires twoNV_ERR_INVALID_DATAassertions:These are boot-only cosmetic (runtime works fine), but the root cause is a missing guard in the driver.
Root Cause
In
_pfmreqhndlrCallPshareStatus(platform_request_handler_ctrl.c), thebSystemParamLimitUpdateblock at line 2467 has no!bInitguard:Every other block in the same function has a guard:
&& !bInit&& !bInit(bInit)During init,
PSHARESTATUS(func 0x20) returns_UPDATE_LIMIT_PENDING. The driver immediately calls_pfmreqhndlrUpdateTgpuLimitand_pfmreqhndlrUpdatePpmdLimitbeforePSHAREPARAMS(func 0x2A) has initialized the TGPU/PPMD sensor counters. The counters arebSupported=false && !bVolatile, sopfmreqhndlrGetPerfSensorCounterByIdreturnsNV_ERR_INVALID_DATA.The init-time PPMD update at line 1218 (after PSHAREPARAMS) already handles boot-time PPMD initialization correctly. The
bSystemParamLimitUpdateblock should be deferred to runtime, matching the pattern used by every other block.Fix
One-line change at
platform_request_handler_ctrl.c:2467:Environment
Impact
Boot-only cosmetic. No runtime side effects. The TGPU limit is applied on first runtime
PSHARESTATUSwith_UPDATE_LIMIT_PENDING. The init-time PPMD update at line 1218 already handles boot-time sensor initialization.