Re: [PATCH v6 2/2] dell-smm-hwmon: Add documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 22, 2019 at 11:15:19AM +0100, Giovanni Mascellani wrote:
> Part of the documentation is taken from the README of the userspace
> utils (https://github.com/vitorafsr/i8kutils). The license is GPL-2+
> and the author Massimo Dal Zotto is already credited as author of
> the module. Therefore there should be no copyright problem.
> 
> I also added a paragraph with specific information on the experimental
> support for automatic BIOS fan control.
> 
> Signed-off-by: Giovanni Mascellani <gio@xxxxxxxxxx>

Applied. I fixed one of the documentation build warnings, but there is
one more which I don't understand and thus left alone.

> ---
>  Documentation/hwmon/dell-smm-hwmon.rst | 164 +++++++++++++++++++++++++
>  Documentation/hwmon/index.rst          |   1 +
>  2 files changed, 165 insertions(+)
>  create mode 100644 Documentation/hwmon/dell-smm-hwmon.rst
> 
> diff --git a/Documentation/hwmon/dell-smm-hwmon.rst b/Documentation/hwmon/dell-smm-hwmon.rst
> new file mode 100644
> index 000000000000..6e51de2c7dc3
> --- /dev/null
> +++ b/Documentation/hwmon/dell-smm-hwmon.rst
> @@ -0,0 +1,164 @@
> +.. SPDX-License-Identifier: GPL-2.0-or-later
> +
> +.. include:: <isonum.txt>
> +
> +Kernel driver dell-smm-hwmon
> +============================
> +
> +:Copyright: |copy| 2002-2005 Massimo Dal Zotto <dz@xxxxxxxxxx>
> +:Copyright: |copy| 2019 Giovanni Mascellani <gio@xxxxxxxxxx>
> +
> +Description
> +-----------
> +
> +On many Dell laptops the System Management Mode (SMM) BIOS can be
> +queried for the status of fans and temperature sensors.  Userspace
> +utilities like ``sensors`` can be used to return the readings. The
> +userspace suite `i8kutils`__ can also be used to read the sensors and
> +automatically adjust fan speed (please notice that it currently uses
> +the deprecated ``/proc/i8k`` interface).
> +
> + __ https://github.com/vitorafsr/i8kutils
> +
> +``sysfs`` interface
> +-------------------
> +
> +Temperature sensors and fans can be queried and set via the standard
> +``hwmon`` interface on ``sysfs``, under the directory
> +``/sys/class/hwmon/hwmonX`` for some value of ``X`` (search for the
> +``X`` such that ``/sys/class/hwmon/hwmonX/name`` has content
> +``dell_smm``). A number of other attributes can be read or written:
> +
> +=============================== ======= =======================================
> +Name				Perm	Description
> +=============================== ======= =======================================
> +fan[1-3]_input                  RO      Fan speed in RPM.
> +fan[1-3]_label                  RO      Fan label.
> +pwm[1-3]                        RW      Control the fan PWM duty-cycle.
> +pwm1_enable                     WO      Enable or disable automatic BIOS fan
> +                                        control (not supported on all laptops,
> +                                        see below for details).
> +temp[1-10]_input                RO      Temperature reading in milli-degrees
> +                                        Celsius.
> +temp[1-10]_label                RO      Temperature sensor label.
> +=============================== ======= =======================================
> +
> +Disabling automatic BIOS fan control
> +------------------------------------
> +
> +On some laptops the BIOS automatically sets fan speed every few
> +seconds. Therefore the fan speed set by mean of this driver is quickly
> +overwritten.
> +
> +There is experimental support for disabling automatic BIOS fan
> +control, at least on laptops where the corresponding SMM command is
> +known, by writing the value ``1`` in the attribute ``pwm1_enable``
> +(writing ``2`` enables automatic BIOS control again). Even if you have
> +more than one fan, all of them are set to either enabled or disabled
> +automatic fan control at the same time and, notwithstanding the name,
> +``pwm1_enable`` sets automatic control for all fans.
> +
> +If ``pwm1_enable`` is not available, then it means that SMM codes for
> +enabling and disabling automatic BIOS fan control are not whitelisted
> +for your hardware. It is possible that codes that work for other
> +laptops actually work for yours as well, or that you have to discover
> +new codes.
> +
> +Check the list ``i8k_whitelist_fan_control`` in file
> +``drivers/hwmon/dell-smm-hwmon.c`` in the kernel tree: as a first
> +attempt you can try to add your machine and use an already-known code
> +pair. If, after recompiling the kernel, you see that ``pwm1_enable``
> +is present and works (i.e., you can manually control the fan speed),
> +then please submit your finding as a kernel patch, so that other users
> +can benefit from it. Please see
> +:ref:`Documentation/process/submitting-patches <submittingpatches>`
> +for information on submitting patches.
> +
> +If no known code works on your machine, you need to resort to do some
> +probing, because unfortunately Dell does not publish datasheets for
> +its SMM. You can experiment with the code in `this repository`__ to
> +probe the BIOS on your machine and discover the appropriate codes.
> +
> + __ https://github.com/clopez/dellfan/
> +
> +Again, when you find new codes, we'd be happy to have your patches!
> +
> +Module parameters
> +-----------------
> +
> +* force:bool
> +                   Force loading without checking for supported
> +                   models. (default: 0)
> +
> +* ignore_dmi:bool
> +                   Continue probing hardware even if DMI data does not
> +                   match. (default: 0)
> +
> +* restricted:bool
> +                   Allow fan control only to processes with the
> +                   ``CAP_SYS_ADMIN`` capability set or processes run
> +                   as root when using the legacy ``/proc/i8k``
> +                   interface. In this case normal users will be able
> +                   to read temperature and fan status but not to
> +                   control the fan.  If your notebook is shared with
> +                   other users and you don't trust them you may want
> +                   to use this option. (default: 1, only available
> +                   with ``CONFIG_I8K``)
> +
> +* power_status:bool
> +                   Report AC status in ``/proc/i8k``. (default: 0,
> +                   only available with ``CONFIG_I8K``)
> +
> +* fan_mult:uint
> +                   Factor to multiply fan speed with. (default:
> +                   autodetect)
> +
> +* fan_max:uint
> +                   Maximum configurable fan speed. (default:
> +                   autodetect)
> +
> +Legacy ``/proc`` interface
> +--------------------------
> +
> +.. warning:: This interface is obsolete and deprecated and should not
> +             used in new applications. This interface is only
> +             available when kernel is compiled with option
> +             ``CONFIG_I8K``.
> +
> +The information provided by the kernel driver can be accessed by
> +simply reading the ``/proc/i8k`` file. For example::
> +
> +    $ cat /proc/i8k
> +    1.0 A17 2J59L02 52 2 1 8040 6420 1 2
> +
> +The fields read from ``/proc/i8k`` are::
> +
> +    1.0 A17 2J59L02 52 2 1 8040 6420 1 2
> +    |   |   |       |  | | |    |    | |
> +    |   |   |       |  | | |    |    | +------- 10. buttons status
> +    |   |   |       |  | | |    |    +--------- 9.  AC status
> +    |   |   |       |  | | |    +-------------- 8.  fan0 RPM
> +    |   |   |       |  | | +------------------- 7.  fan1 RPM
> +    |   |   |       |  | +--------------------- 6.  fan0 status
> +    |   |   |       |  +----------------------- 5.  fan1 status
> +    |   |   |       +-------------------------- 4.  temp0 reading (Celsius)
> +    |   |   +---------------------------------- 3.  Dell service tag (later known as 'serial number')
> +    |   +-------------------------------------- 2.  BIOS version
> +    +------------------------------------------ 1.  /proc/i8k format version
> +
> +A negative value, for example -22, indicates that the BIOS doesn't
> +return the corresponding information. This is normal on some
> +models/BIOSes.
> +
> +For performance reasons the ``/proc/i8k`` doesn't report by default
> +the AC status since this SMM call takes a long time to execute and is
> +not really needed.  If you want to see the ac status in ``/proc/i8k``
> +you must explictitly enable this option by passing the
> +``power_status=1`` parameter to insmod. If AC status is not
> +available -1 is printed instead.
> +
> +The driver provides also an ioctl interface which can be used to
> +obtain the same information and to control the fan status. The ioctl
> +interface can be accessed from C programs or from shell using the
> +i8kctl utility. See the source file of ``i8kutils`` for more
> +information on how to use the ioctl interface.
> diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
> index 230ad59b462b..092435ad6bb8 100644
> --- a/Documentation/hwmon/index.rst
> +++ b/Documentation/hwmon/index.rst
> @@ -44,6 +44,7 @@ Hardware Monitoring Kernel Drivers
>     coretemp
>     da9052
>     da9055
> +   dell-smm-hwmon
>     dme1737
>     ds1621
>     ds620



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux