| Previous | Next |
| TPM_20_E_TESTING | TPM_20_E_LOCKOUT |
TPM_20_E_NV_RATE
TPM_20_E_NV_RATE is a temporary TPM 2.0 status: the command would update nonvolatile state, but the TPM is deliberately throttling that work to protect NV endurance. It is not an authorization error and does not mean the NV index definition is invalid.
Why it can appear unexpectedly
- The application may be writing an NV index repeatedly, updating a counter, extending a digest, or causing another command to update TPM-managed nonvolatile metadata.
- Some operations require an internal NV update even when the application is not sending an ordinary byte payload to an NV index.
- A tight retry loop can make diagnosis harder and may continue to hit the same TPM protection mechanism.
Appropriate handling
- Treat the status as retryable only after a bounded delay and with backoff; preserve idempotency so a delayed retry cannot duplicate a logical update.
- Reduce unnecessary state churn. Batch application updates where the security model permits, rather than using NV as a high-frequency journal.
- Log the command class, target index, request rate, and prior successful update time to distinguish wear protection from an availability problem.
Different from NV unavailable
TPM_20_E_NV_RATE specifically reports rate limiting for endurance protection. TPM_20_E_NV_UNAVAILABLE reports that a command requiring NV cannot currently use it; the two statuses should not share one undifferentiated retry policy.
References: TCG TPM 2.0 Library Part 3: Commands and tpm2_nvwrite documentation.
Looking for a different code? Search another status or error code.
