+Cc Raag, who authored the fan support and reviewed v1. Thanks for your help, this v2 drops the code change and documents the DG2 shared-tach behaviour instead, per your feedback on v1.
Zhan Wei <[email protected]> 于2026年5月29日周五 21:50写道: > > The number of fanN_input attributes on DG2 is hardcoded to two because > FSC_READ_NUM_FANS returns an incorrect value on some boards. How the > physical fans map onto the tach channels is left to the board vendor: > some OEMs route multiple physical fans through a single shared tach > line, in which case the unwired channel's pulse counter never > accumulates and fanN_input reads a constant 0 RPM. > > This is expected behaviour for such boards rather than a driver fault, > and the driver has no reliable way to distinguish a shared-tach layout > from a genuinely silent fan. Document this so the flat DG2 fan count is > not mistaken for a bug and "fixed" by lowering it, which would hide a > working fan2 on boards that do wire two tach lines. > > Signed-off-by: Zhan Wei <[email protected]> > --- > v1 -> v2: Drop the code change. As pointed out in review, the same PCI > device ID ships with both shared-tach (multiple physical fans on one > channel) and 1:1 fan wiring, and FSC_READ_NUM_FANS is unreliable on > some boards, so the DG2 fan count cannot be lowered without hiding a > working fan2 on boards that do wire two tach lines. Document the > behaviour instead of changing the reported fan count. > > v1: > https://lore.kernel.org/intel-xe/[email protected]/ > > Documentation/gpu/xe/index.rst | 1 + > Documentation/gpu/xe/xe_hwmon.rst | 48 +++++++++++++++++++++++++++++++ > 2 files changed, 49 insertions(+) > create mode 100644 Documentation/gpu/xe/xe_hwmon.rst > > diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst > index 874ffcb6da3a..3c14cdcaa8a6 100644 > --- a/Documentation/gpu/xe/index.rst > +++ b/Documentation/gpu/xe/index.rst > @@ -30,3 +30,4 @@ DG2, etc is provided to prototype the driver. > xe-drm-usage-stats.rst > xe_configfs > xe_gt_stats > + xe_hwmon > diff --git a/Documentation/gpu/xe/xe_hwmon.rst > b/Documentation/gpu/xe/xe_hwmon.rst > new file mode 100644 > index 000000000000..8cd48df59386 > --- /dev/null > +++ b/Documentation/gpu/xe/xe_hwmon.rst > @@ -0,0 +1,48 @@ > +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT) > + > +================= > +Xe HWMON support > +================= > + > +The xe driver exposes hardware monitoring sensors (power, energy, > +temperature, voltage and fan speed) through the kernel hwmon subsystem, > +typically consumed via ``/sys/class/hwmon/hwmonX/`` or tools such as > +``sensors``. > + > +Fan speed reporting > +=================== > + > +Fan speed (``fanN_input``) is reported in RPM and computed from a tach > +pulse counter: the driver reads an accumulating pulse register, divides > +the delta between two subsequent readings by two pulses per rotation, > +and time-averages the result. > + > +Number of fan channels > +----------------------- > + > +The number of ``fanN_input`` attributes exposed in sysfs is the fan > +count returned by the ``FSC_READ_NUM_FANS`` pcode command. On DG2 this > +command has been found to return an incorrect value on some boards, so > +the driver hardcodes a fan count of two there. As a result up to > +``fan1_input`` and ``fan2_input`` are always exposed on DG2 regardless > +of how many tach lines are actually wired. > + > +Zero RPM on DG2 is not necessarily a bug > +---------------------------------------- > + > +How physical fans map onto the tach channels is left to the board > +vendor. Some OEMs route several physical fans through a single shared > +tach line, while others wire each fan to its own channel 1:1. The > +driver has no reliable way to tell these layouts apart, and the same PCI > +device ID can ship in either configuration. > + > +When a channel has no tach line driving it, its pulse counter never > +accumulates, so the corresponding ``fanN_input`` reads a constant 0 RPM. > +On DG2 this is most often seen on ``fan2_input`` for boards that drive > +both physical fans from a single tach line. This is expected behaviour > +for such boards, not a driver fault, and reflects the board wiring > +rather than a missing or stalled fan. > + > +For this reason the fan count on DG2 is intentionally left at a flat > +value rather than tracked per board: there is no driver-visible signal > +that distinguishes a shared-tach layout from a genuinely silent fan. > -- > 2.43.0 >
