Insert a "cmpunlocker unlock (install)" step after unlock verification: y/N confirmation (default n) or --unlock runs install.sh from the harness clone (main branch, ff-only pull first) with live terminal output and full log to cards/<serial>/install_unlocker.log. On success the Vulkan stress is skipped until after the cold reboot. Score now enforces the post-unlock invariant: when verify reports unlocked-ok, any final link other than Gen2 x16 fails with a red [ERROR] and exit 1. README safety section and AGENTS.md harness cloning invariant updated to match.
3.2 KiB
3.2 KiB
Project instructions
Purpose
This repository checks one NVIDIA CMP 170HX at a time on a fresh Ubuntu 26.04 x86-64 host. The normal sequence is: prepare driver and tools, check PCIe lane width, install cmpunlocker for stock memory, cold boot, confirm unlocked memory, then check the final PCIe link. The capacitor width check passes at x16, even if the link is Gen1. A completed post-unlock card check passes only at Gen2 x16.
Source and outputs
check_cards.pyowns the CLI, per-card flow, report scoring, and terminal result.cxlib.pyowns host setup, the cmpunlocker harness clone/update and opt-in installer, card identity, subprocess logging, PCIe inspection, and optional VBIOS backup.README.mdis the operator guide. Keep its flags, output paths, reboot steps, and exit codes aligned with the code.harness/,cards/, andunidentified/contain generated source, logs, reports, or firmware backups. Do not commit their contents.- The bundled
nvflash_5.867_linux/contains the optional backup tool. Backups belong underextras/, not at repository root.
Invariants
- A card folder is named from an automatically read physical serial number. Never request manual serial entry or substitute a GPU UUID or PCI address for a serial. When serial lookup fails, continue the run under
unidentified/and report the missing serial. - Match every card-sensitive operation to the detected PCI address. A host may have another NVIDIA GPU even though only one CMP 170HX is being checked.
- Measure capacitor-related lane width before unlocking. The width result is independent of cmpunlocker: Gen1 x16 passes the width check, while x4 fails it. Do not claim the capacitor is physically verified; the width is an observed link result on the current host.
- Keep the final PCIe acceptance check after unlock. Preserve a red
[ERROR]message and failing exit for any final link other than Gen2 x16. Gen1 x16 passes the earlier width check but fails the final card check. - Preserve cold-boot state by card identity. GPU UUID may be used internally for this purpose, but not as a folder name.
- The cmpunlocker harness is cloned from upstream main into
harness/cmpunlocker/, andgit pull --ff-onlyruns before every install (a failed pull warns and continues with the existing checkout). Invokeinstall.shonly with flags the checked-out version actually accepts — currently no flags; never pass--no-passthroughto older checkouts without verifying them first. - VBIOS backup is optional and read-only. Select the detected PCI address for nvflash and sysfs ROM operations. Never add a flashing step to the normal workflow.
Working in this repository
- Git is local only. Do not run
git push,git remotecommands, or add a remote. Local status, diff, and commits are allowed. - Do not run host setup, unlock, VBIOS, or PCIe mutation commands on a development machine. Those actions belong on the intended Ubuntu host when the user requests them.
- Keep reports and long-running installation logs visible and useful to an operator. Save full output on disk; show installation progress in the terminal.
- If asked to verify without a card,
python3 check_cards.py --demois the synthetic path. It does not establish hardware correctness.