From: Guenter Roeck <linux@roeck-us.net>
To: "Pali Rohár" <pali.rohar@gmail.com>,
"Jan C Peters" <jcpeters89@gmail.com>,
"Thorsten Leemhuis" <fedora@leemhuis.info>,
"David Santamaría Rogado" <howl.nsp@gmail.com>,
"Peter Saunderson" <peteasa@gmail.com>,
"Jean Delvare" <jdelvare@suse.com>,
"Tolga Cakir" <cevelnet@gmail.com>
Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] dell-smm-hwmon: Cache fan_type() calls and use fan_status() for fan detection
Date: Sat, 21 May 2016 17:19:48 -0700 [thread overview]
Message-ID: <5740FB24.80709@roeck-us.net> (raw)
In-Reply-To: <1463842001-17785-1-git-send-email-pali.rohar@gmail.com>
On 05/21/2016 07:46 AM, Pali Rohár wrote:
> On more Dell machines (e.g. Dell Precision M3800) I8K_SMM_GET_FAN_TYPE call
> is too expensive (CPU is too long in SMM mode) and cause kernel to hang.
> This patch cache type for each fan (as it should not change) and change the
> way how fan presense is detected. It revert and use function fan_status()
> as was before commit f989e55452c7 ("i8k: Add support for fan labels").
>
> Moreover, kernel hangs for 2 - 3 seconds only sometimes and only on some
> Dell machines. When kernel hangs fan speed is at max. So it was hard to
> debug and bisect where is root of this problem. It looks like this is bug
> in Dell BIOS which implement fan type SMM code... and there is no way how
> to fix it in kernel.
>
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> Reviewed-by: Jean Delvare <jdelvare@suse.de>
> Reported-and-tested-by: Tolga Cakir <cevelnet@gmail.com>
> Fixes: f989e55452c7 ("i8k: Add support for fan labels")
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=112021
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=100121
> Cc: stable@vger.kernel.org # v4.0+, will need backport
Should this patch be applied, or do you wait for more testing ?
Guenter
> ---
> drivers/hwmon/dell-smm-hwmon.c | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
> ---
>
> Hi!
>
> Jan C Peters, Thorsten Leemhuis, David Santamaría Rogado, Peter Saunderson
> and others, can you test this patch if it fixes your freeze problem at
> boottime and when using "sensors" program?
>
> I need to know if this patch fixes problem on Dell Studio XPS 8000 and
> Dell Studio XPS 8100 machines, so we can revert git commits:
>
> 6220f4ebd7b4 ("hwmon: (dell-smm) Blacklist Dell Studio XPS 8000")
> a4b45b25f18d ("hwmon: (dell-smm) Blacklist Dell Studio XPS 8100")
>
> diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
> index c43318d..577445f 100644
> --- a/drivers/hwmon/dell-smm-hwmon.c
> +++ b/drivers/hwmon/dell-smm-hwmon.c
> @@ -235,7 +235,7 @@ static int i8k_get_fan_speed(int fan)
> /*
> * Read the fan type.
> */
> -static int i8k_get_fan_type(int fan)
> +static int _i8k_get_fan_type(int fan)
> {
> struct smm_regs regs = { .eax = I8K_SMM_GET_FAN_TYPE, };
>
> @@ -243,6 +243,17 @@ static int i8k_get_fan_type(int fan)
> return i8k_smm(®s) ? : regs.eax & 0xff;
> }
>
> +static int i8k_get_fan_type(int fan)
> +{
> + /* I8K_SMM_GET_FAN_TYPE SMM call is expensive, so cache values */
> + static int types[2] = { INT_MIN, INT_MIN };
> +
> + if (types[fan] == INT_MIN)
> + types[fan] = _i8k_get_fan_type(fan);
> +
> + return types[fan];
> +}
> +
> /*
> * Read the fan nominal rpm for specific fan speed.
> */
> @@ -767,13 +778,13 @@ static int __init i8k_init_hwmon(void)
> if (err >= 0)
> i8k_hwmon_flags |= I8K_HWMON_HAVE_TEMP4;
>
> - /* First fan attributes, if fan type is OK */
> - err = i8k_get_fan_type(0);
> + /* First fan attributes, if fan status is OK */
> + err = i8k_get_fan_status(0);
> if (err >= 0)
> i8k_hwmon_flags |= I8K_HWMON_HAVE_FAN1;
>
> - /* Second fan attributes, if fan type is OK */
> - err = i8k_get_fan_type(1);
> + /* Second fan attributes, if fan status is OK */
> + err = i8k_get_fan_status(1);
> if (err >= 0)
> i8k_hwmon_flags |= I8K_HWMON_HAVE_FAN2;
>
>
next prev parent reply other threads:[~2016-05-22 0:20 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-21 14:46 [PATCH] dell-smm-hwmon: Cache fan_type() calls and use fan_status() for fan detection Pali Rohár
2016-05-22 0:19 ` Guenter Roeck [this message]
2016-05-22 0:28 ` Pali Rohár
2016-06-13 18:52 ` Pali Rohár
2016-06-14 2:02 ` Guenter Roeck
2016-06-15 8:03 ` Pali Rohár
2016-05-26 15:39 ` Thorsten Leemhuis
2016-05-26 15:51 ` Pali Rohár
2016-05-27 8:00 ` Thorsten Leemhuis
2016-05-27 9:47 ` Pali Rohár
2016-05-27 10:01 ` Thorsten Leemhuis
2016-05-27 10:45 ` Pali Rohár
2016-05-27 13:05 ` Thorsten Leemhuis
2016-05-27 13:21 ` Pali Rohár
2016-05-29 19:27 ` Peter Saunderson
2016-05-30 9:36 ` Pali Rohár
2016-05-30 16:25 ` Peter Saunderson
2016-06-02 13:06 ` Pali Rohár
2016-05-30 11:45 ` Thorsten Leemhuis
2016-06-13 18:30 ` Pali Rohár
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5740FB24.80709@roeck-us.net \
--to=linux@roeck-us.net \
--cc=cevelnet@gmail.com \
--cc=fedora@leemhuis.info \
--cc=howl.nsp@gmail.com \
--cc=jcpeters89@gmail.com \
--cc=jdelvare@suse.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pali.rohar@gmail.com \
--cc=peteasa@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.