Record: Multi-GPU enumeration and reporting โ 2026-08-23
Outcome
Extended the service to enumerate all AMD GPUs and control every MI25 found.
Changes:
- gpu_interface now enumerates every AMD card under /sys/class/drm/card*/device/ and reports which are controllable (MI25 + amdgpu + usable hwmon).
- run_check() prints one line per AMD card: controllable or not, PCI address, vendor, device, driver, hwmon path.
- run_service() controls every controllable MI25, not just the first.
- The control loop carries per-card state (pwm_last, pwm_want, temps, report cadence) and labels every report line with the PCI address.
Decisions
- A card is controllable when device is 0x6860 (MI25), driver is amdgpu, and the hwmon has pwm1_enable, pwm1, and the three temp inputs.
- Non-MI25 AMD cards are reported but not controlled.
- The feature requirement now states the service controls every MI25 found.
Verification
- Two-MI25 fixture: both enumerated, both reported controllable, both ramped in the loop (verified 2026-08-23).
- Non-MI25 AMD fixture card reported not-controllable.
- Removing pwm1_enable flips the report to not-controllable.
- make build, make test, ctest, clang-format all pass.
Commits
- (recorded in git history for this task)