Record: Fan control interface plan โ 2026-08-23
Outcome
Planned the use of the MI25 driver interfaces for the fan-control service.
The plan classifies every documented interface as control, monitoring, fingerprinting, optional diagnostics, or unused. It specifies the card discovery by PCI identity, the startup sequence, the control algorithm with concrete constants, the reporting format, and the systemd unit design.
Key decisions:
- Card discovery matches vendor 0x1002 and device 0x6860; never assumes card1.
- The service writes pwm1_enable=1 and power_dpm_force_performance_level=manual.
- The service writes pp_power_profile_mode=5 (COMPUTE), so the SMU boosts eagerly under compute load and idles low; this matches the LLM-in-desktop use case.
- The service never uses pwm1_enable=2 (AUTO); MI25 firmware fan control does not work.
- The service never writes power_dpm_force_performance_level=high; verified live that forced-high rejects pp_power_profile_mode writes.
- fan1_* is never used; the tachometer is garbage on this card.
- The unit is renamed to amd-mi25-fanctl.service.
- The runtime failure policy is defined by the research spike (documents/07-failure-behavior.md).
Verification
- Interface facts verified on beast.lan and dated in
documents/05-mi25-driver-interfaces.md: verified 2026-08-23. - Mainline 6.19 contains the same amdgpu interfaces as the running DKMS 6.19.14 driver (verified against the v6.19 tag in the local source tree).
- make test passes.
Commits
- (recorded in git history for this episode)