On Fri, May 29, 2026 at 10:05:58PM +0800, 占wei wrote: > +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.
IMO it's a bit verbose to have a dedicated doc for this. Just add a small comment in the existing ABI doc[1] under fan channel description. [1] Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon Raag > 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 > >
