{ "name": "nvbandwidth-acs-ab", "description": "Progressive A/B for the MSI CG480-S6053 cross-socket GPU P2P hard-reboot. Each phase escalates GPU count instead of jumping straight to all GPUs: a pair on one socket, a pair on the other socket, one cross-socket pair, then every GPU — so a crash pinpoints which GPU count/topology it needs, not just whether the full run fails. GPU indices are discovered at runtime via `bee gpu-bandwidth-groups` (nvidia-smi topo -m), not hardcoded, since socket layout is host-specific. Phase 1 disables PCIe ACS redirect at runtime via setpci (P2P goes device-direct instead of up to the root complex) and is expected to SURVIVE all four stages. Phase 2 restores ACS to the BIOS default and repeats the same four stages — the run expected to REPRODUCE the reboot at some stage. Safe phase runs first so its full blackbox reaches the USB stick before the risky phase can reset the machine. A stage is skipped (not failed) if this host's topology doesn't have it, e.g. a single-socket host has no cross-socket stage.", "timeout_sec": 1800, "jobs": [ { "name": "acs-disable", "type": "command", "cmd": ["bash", "-c", ": > /run/bee-acs-orig; for bdf in $(lspci -D | awk '{print $1}'); do setpci -s $bdf ECAP_ACS.w >/dev/null 2>&1 || continue; v=$(setpci -s $bdf ECAP_ACS+0x6.w 2>/dev/null) || continue; echo $bdf $v >> /run/bee-acs-orig; setpci -s $bdf ECAP_ACS+0x6.w=0000 >/dev/null 2>&1 || true; done; echo ACS disabled on $(wc -l < /run/bee-acs-orig) bridges; echo -n 'bridges still ReqRedir+: '; lspci -vvv 2>/dev/null | grep -c 'ReqRedir+' || true"] }, { "name": "nvbandwidth-acs-off-same-socket-1", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage same-socket-1) || { echo 'skip: no same-socket-1 group on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "nvbandwidth-acs-off-same-socket-2", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage same-socket-2) || { echo 'skip: no same-socket-2 group on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "nvbandwidth-acs-off-cross-socket", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage cross-socket) || { echo 'skip: no cross-socket pair on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "nvbandwidth-acs-off-all", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage all) || { echo 'skip: no GPUs discovered on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "acs-restore", "type": "command", "cmd": ["bash", "-c", "test -s /run/bee-acs-orig || { echo no saved ACS state; exit 0; }; while read -r bdf v; do setpci -s $bdf ECAP_ACS+0x6.w=$v >/dev/null 2>&1 || true; done < /run/bee-acs-orig; echo ACS restored on $(wc -l < /run/bee-acs-orig) bridges; echo -n 'bridges ReqRedir+ now: '; lspci -vvv 2>/dev/null | grep -c 'ReqRedir+' || true"] }, { "name": "nvbandwidth-acs-on-same-socket-1", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage same-socket-1) || { echo 'skip: no same-socket-1 group on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "nvbandwidth-acs-on-same-socket-2", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage same-socket-2) || { echo 'skip: no same-socket-2 group on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "nvbandwidth-acs-on-cross-socket", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage cross-socket) || { echo 'skip: no cross-socket pair on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] }, { "name": "nvbandwidth-acs-on-all", "type": "command", "cmd": ["bash", "-c", "gpus=$(bee gpu-bandwidth-groups --stage all) || { echo 'skip: no GPUs discovered on this host'; exit 0; }; dcgmi diag -r nvbandwidth -i \"$gpus\""] } ] }