Turn a suspected GPU problem into a defensible decision — provisioning, the tiered diagnostic cascade, verdict bands, and the vendor-facing RMA package.
Version 1.2 · August 2026 · Primitive
The RMA toolkit turns a suspected GPU problem into a defensible decision. Given a machine on the Primitive platform, one dispatched job runs a tiered diagnostic cascade, computes a deterministic verdict (from "healthy" to "submit an RMA"), and produces an evidence package strong enough to hand to NVIDIA or a hardware vendor — with every claim carrying provenance for how it was obtained and how much it proves.
It exists because GPU fleet triage is usually ad-hoc: an engineer SSHes in, runs nvidia-smi and some dcgmi commands, forms an opinion, and the evidence evaporates. The toolkit makes that process repeatable, honest, and platform-native — the same fault produces the same verdict and the same package, every run.
| Lab Server — HGX 8× H200 SXM | Cloud Server — HGX 8× H200 SXM | |
|---|---|---|
| Symptom | GPU invisible to driver, on PCIe bus | One GPU idles +20–24 °C over siblings |
| Evidence | Xid 62 every boot, fielddiag no-attach, fault survives verified DC cycles | Sibling-delta at idle, 87 °C burn-in abort at normal power → heat made normally, not removed |
| Verdict | RMA_REQUIRED → SUBMIT_RMA | CHECK_MECHANICALS (cold-plate/TIM, module reseat) |
| Outcome | NVIDIA-ready package, sha256-verified; zero verdict drift across 3 weeks of runs | Support package delivered to provider; detection feature (C1) validated in the field |
A diagnostic run walks an escalating cascade — easy and passive first, invasive last:
| Tier | Name | What it does |
|---|---|---|
| 0 | Passive inventory | PCIe enumeration, kernel/journal Xid scan (root-privileged, current boot), ECC/row-remap counters, NVLink topology, IPMI SEL, nvidia-bug-report |
| 1 | Light telemetry | DCGM r1/r2, health watches, NVLink/ECC counters, idle thermal sibling-delta detection (catches cold-plate/TIM faults invisible to threshold checks) |
| 2 | Burn-in | DCGM r3 full stress (~20–30 min), pre/post delta analysis of ECC, NVLink, thermals, throttle reasons |
| 3 | Power cycle + nvFieldDiag | Evidence seal → verified power cycle (operator-selectable method) → NVIDIA field diagnostic → post-cycle persistence analysis (does the fault survive?) |
| 4 | Verdict | Deterministic flag engine aggregates all findings → verdict band + recommended action + package completeness label |
| Band | Meaning / action |
|---|---|
HEALTHY | No actionable findings |
MONITOR | Minor signals; keep in service, watch |
REMEDIATE | Software/config fix indicated (driver, FM, settings) |
CHECK_MECHANICALS | Physical service indicated — cold plate, TIM, seating, cooling |
RMA_LIKELY | Hardware fault probable; confirmatory step recommended |
RMA_REQUIRED | Fault confirmed → SUBMIT_RMA with the generated package |
Prerequisite: the machine is registered on Primitive as a Hardware node in your organization.
Then dispatch the RMA Toolkit Provisioning diagnostics job from the UI or Primitive MCP server.
The job is idempotent and reboot-durable: it installs/aligns the NVIDIA driver stack, fabricmanager, DCGM, deploys the toolkit workspace, deploys the correct nvFieldDiag bundle, and validates the box is diagnostic-ready.
Select a Hardware's action dropdown → Run Diagnosis (or manually via Start Job, select RMA Diagnostic in the dropdown). Inputs:
| Input | Values (default) | What it controls |
|---|---|---|
cycle_method | auto | oob-redfish | ipmi-inband | warm-reboot (auto) | How tier 3 power-cycles the box. auto walks the capability ladder; explicit choices are operator-selected. Every method is verified by boot-identity change. |
fielddiag_mode | level1 | level2 | gpufielddiag (level1) | nvFieldDiag depth. level1 = enumeration only → package is PROVISIONAL by design. Use level2/gpufielddiag for per-GPU evidence → COMPLETE. |
fielddiag_bundle | bundle directory name | On-disk nvFieldDiag bundle (provisioning stages it) |
fielddiag_timeout | seconds (3600) | Stall watchdog for fielddiag |
post_only | false | Resume after a manual power cycle (advanced) |
Install the primitive-mcp server (https://mcp.primitive.tech/mcp) and ask the agent to run diagnosis: "Run diagnosis on X server".
What to expect: a run progresses through the passive and stress tiers for the first ~30–45 minutes. Then a power cycle as the next diagnostic step. The run picks up where it left off automatically. With a deep field diagnostic selected, the full run can take several hours; progress streams live on the run's Logs page throughout, and it's safe to walk away.
auto — recommended default. Uses the box's proven method (cached on its power card) or discovers one.ipmi-inband — true DC cycle via the box's own BMC interface; the strongest in-band evidence.warm-reboot — OS reboot. For machines with no BMC/OOB path (typical cloud/CSP boxes). The findings will carry an explicit degraded-cycle caveat and recommend an AC-cycle re-run — the run still completes and the package is still produced.oob-redfish — out-of-band via BMC Redfish, when the platform has BMC credentials/host configured.Hardware page → Reports: the platform report generated from the run.
| Artifact | What it is |
|---|---|
findings.json | Machine-readable findings + flags + verdict + provenance meta — the source of truth, schema-validated |
ANALYSIS_REPORT.txt | Human-readable tier-4 analysis: verdict band, evidence chain, recommended action |
rma_package_<serial>_.tar.gz | The vendor-facing bundle: journals, nvidia-bug-report, SEL, fielddiag output, evidence manifest with sha256s |
journal_current_boot.log | Current-boot kernel journal at artifact root — the Xid/driver evidence, analyzer-readable |
tier*_ directories/tarballs | Per-tier raw section files and reports |
package_status: COMPLETE = real per-GPU fielddiag evidence exists, or an evidence-bearing impossibility (a GPU that cannot even attach — that IS the evidence).package_status: PROVISIONAL = a gap with a reason code: no_diag_results (enumeration-only mode), bundle_missing, operator_skip, power_cycle_unavailable. The label tells you the exact re-run that would upgrade it.power_cycle_source (method used), power_cycle_verified (was a reboot actually observed), power_cycle_power_class (ac / dc / warm). Warm and DC cycles cannot prove everything an AC drain can — the findings say so explicitly rather than overclaiming.kernel_log_source: which log source, at which privilege, produced the kernel evidence.Every completed diagnostic run generates a platform Report citing the toolkit's tier-4 verdict and package label. Reports can also be generated from telemetry alone (time-window mode, no run) and will themselves tell you what evidence they lack; a toolkit run is how you supply it. The toolkit's findings.json is authoritative.
RMA_REQUIRED → the tarball is the submission package: board serial, per-GPU identifiers (BDF/UUID), fielddiag results or no-attach evidence, journals across boots, OOB dumps, sha256 manifest.CHECK_MECHANICALS → service action (reseat / cold plate / TIM) with the thermal evidence chain; re-run after service to confirm.PROVISIONAL packages are submittable when the evidence is overwhelming — but the label and reason go with it. Prefer upgrading via the indicated re-run.level1 fielddiag is mainly investigative (~1–2 hours per run) — pick level2/gpufielddiag when a full run is needed (10–11 hours).On This Page
1. What it is and why it existsDesign principles2. Field-proven (both fault classes, real hardware)3. How it worksVerdict bands4. Getting a machine ready (provisioning)5. Running a diagnosticPrimary path: from the UISecondary path: from Claude Code or CodexChoosing a cycle method6. Reading the resultsWhere results landThe artifactsTrust labels — read these firstPlatform reports7. From verdict to RMA8. Current limitations (honest list)