cmp50hx-unlock

CMP 50HX 20 GB

Main README · Русский

Status

The 20 GB path is supported by the updated patches/cmp50hx/01-cmp50-stockflow.patch. It keeps the original 10 GB path and adds dynamic WPR2 handling for the larger board.

Validated on 26–27 August 2026 with four cards:

PCI device: 10de:1e09
subsystem:  10de:1554
VRAM:       20480 MiB per card
driver:     NVIDIA Open 610.43.03
kernels:    6.8.0-137-generic and 6.8.0-138-generic
BDFs:       01/02:00.0, 03:00.0, 81:00.0, 82:00.0

Why the old patch failed

The old stockflow path used fixed WPR2 bounds from the 10 GB card. On the validated 20 GB board, stock FWSEC creates:

WPR high:low = 04ffee00:04ffe000
span         = 00000e00

The mismatch caused NVIDIA Booter error 0x8d; GSP-RM then exhausted its boot attempts and nvidia-smi found no devices.

The new patch reads the successful stock FWSEC result for each PCI BDF. It accepts only span 0xe00, stores the low/high values in per-BDF state, and uses those values for retry, handoff, and GSP-ready checks. An unexpected span or a missing saved range fails closed. The temporary WPR-down sentinel is never saved as stock state.

Mixed 10 GB and 20 GB hosts

The same module can serve 10 GB and 20 GB CMP 50HX cards in one system. The saved WPR2 range is indexed by PCI bus/device address, not shared globally, so each card keeps the range returned by its own FWSEC run. The linked report validated four 20 GB cards; a mixed-size host still needs a separate check for every visible GPU after a cold boot.

Build and install

Use the normal CMP 50HX path from this directory:

bash ./build.sh --card cmp50hx
sudo ./install.sh --card cmp50hx

The installer does not need a 20 GB flag. It detects PCI device 10de:1e09 and uses the dynamic WPR logic in patch 01. After the new module passes the live check, make it persistent and reboot:

sudo /opt/cmp50hx-unlock/install-initramfs.sh
sudo reboot

After boot, check the driver and VRAM:

nvidia-smi -L
nvidia-smi --query-gpu=pci.device_id,memory.total --format=csv
sudo python3 /opt/cmp50hx-unlock/verify/verify.py \
  /opt/cmp50hx-unlock/logs/rm-probe-TIMESTAMP-dev0.json

Replace the probe name with the exact file printed by the installer. On a multi-GPU host, run the verifier for every visible CMP card.

Validated result

Check Result
Dynamic WPR / GSP REFWSEC_STOCK_WPR_PASS, INPLACE_STOCK_BOOTER_AFTER_UNLOCK_PASS, CMP50_GSP_READY
VRAM Four visible cards, 20480 MiB each
Compute PASS_CMP50HX_ISSUE_RATE_AND_COUNTS
CUDA / Tensor 3584 / 448
ReBAR PCI Region 1 and NVIDIA BAR1 16384 MiB on all cards
Kernel 138 RT-count and ReBAR stages validated
Kernel 137 Gen2 Validated on the reference X99 host only

Limits

If WPR validation fails, keep the log lines containing CMP50_WPR_DYNAMIC_V1, the PCI BDF, and the reported WPR values. Do not replace the dynamic capture with a fixed address.