From patchwork Tue Apr 26 21:31:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 12827978 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BFB42C433FE for ; Tue, 26 Apr 2022 21:32:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355526AbiDZVfi (ORCPT ); Tue, 26 Apr 2022 17:35:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355528AbiDZVfd (ORCPT ); Tue, 26 Apr 2022 17:35:33 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60D46473B7; Tue, 26 Apr 2022 14:32:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1651008718; bh=NKFKAKCLTOL1m3NDU/BmygYePpH8tCNAz8bh93sKgz0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=UnWmWUgloGYQyZ3ZSEkzNybE9hnC0VINAmK6KIMHhaBkdfpi742FR/3jIAoWOOuOt 2P0Cw/5BZwRjyUPHfVpgGtOJwxlU6+6E5XNN3KdDGegbB2Dn73bJGHLNaEz3G/XDtN hKMuBXv391gzf0jL96xz3gZ7hEUef4Jiyb6HPF/U= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from esprimo-mx.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mzyuc-1o7C8m1ZYM-00x2rC; Tue, 26 Apr 2022 23:31:58 +0200 From: Armin Wolf To: pali@kernel.org Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/3] hwmon: (dell-smm) Avoid unnecessary SMM calls during init Date: Tue, 26 Apr 2022 23:31:52 +0200 Message-Id: <20220426213154.724708-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220426213154.724708-1-W_Armin@gmx.de> References: <20220426213154.724708-1-W_Armin@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:XczC9ZRL7DOxRk1A1C9yu96lr6ybK1gJs+016LkFsWLDmQwRzSd G+xl+rxPJ9DcVS8XWqH+rsEjulourYGF56U5jekakquprj6mnUMhy67Kl/ztDIcnYW/79BK bK5wjRjGqYoewjbTWcQGq4v+hFI4dZ3fXDsqZ0V1DXC8hMnMymxuQGtP/WAoCAQg1Fam/JF 4uhQwgkeSKPXKsXa0GPWQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:YzSxZhxqQVo=:arID7AYbt4NarKTmdiL+pW OEyn4ni2d/Yvg06Frz0bp80AVqd9R4veMTTc3oIPp4thq5Q4cRlLqjcbdm6VCjoEkkuPID276 AtskAKrGZzaXJM6zpd8XX+32WLeIbDfBvALQheufeS48jnfh974zF+iJLnJj8RdwE9QjDSlo2 F4GkgEqJiWmAgtt9RGKeDFNi1E/PBrbQdhrSapey5uRfhwy/n/hba+7iygIb3sHK2fSy+kw1b sSEy+ZM1B7FZx5pmzlfFWyLwjl7ZSl5u2RRpmV+bAVGf6DE11l5dFRE+shkE9xWd2zUTS8B57 pgWnCeQhEsdwRDgKCHC78pc8vrdTyh1uzDoRiRc7v4TsZwAUPjBwiUDTtzyCF3PoTP+P8vZMH CdzrxmHxz+rMm+hmg9hElnvvOT01A8xWzDb1aGNZXeFc6iFhLDHL8gmo6jAefVr2jx+jYoFER JFlorAi//QaQGBx7EpKlWT/MWNM1eeI8/jbjA4rJ2Wme2NgdZnBFhLtYONd5zOFJTpuqhPisf wPPMpD/0dDtLsyK8aoa9QOja/QtWy2cX3FTBvU1YsueSoTfXGeo339pPmOB+WlptqOJloshJA L+SpePt8DQMdZr1pNNbsglxkatp29jzlmh3RWPumKlKcHLgsgqtyVzKcqThDLI6N6SqyYzO9v RPSvQ5iObd/OCz4hn+W62urk5iHphCGlCvMKq2eaZy6AxApcsylI8IijviHUKSCnFlcfcWByw CSFU43sHUjznmU+76lnH8msjrXArOQxCL0TF1yZ7QhSuH6B0CPzofafKFjr5Q47oExg1EiInG XCFqNt3Fu7DobqrnmfnwgTkVJv6uE6rDrBm4mKIQm102cOFlMSrl+lO3QjaKuRu5F7+XvB7AB sOkGQpcUMR//youI1MVDaMD77PPv3GYA6uNKYoWZ0dE4YynmglYFVCeoZYliuF3fZDP3kiX8M PS7KYvhfP7sHEXZyQPecOu/hLs88RfPtrchzojF5mTHNDbifpxBEpphyRutYBB8E0McOj/gRU EqtfgYkOsoyNU9XIWwF6xGlTDjUh8N3a4YBs5FoLIb5TRjPZI3tqTJahe1l5dpjXsXuLFevtH gEpzu2IRbdXBzI= Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org When the driver tries to detect the fan multiplier during module initialisation, it issues one SMM call for each fan. Those SMM calls are however redundant and also try to query fans which may not be present. Fix that by detecting the fan multiplier during hwmon initialisation when no extra SMM calls are needed. Also dont assume the last nominal speed entry to be the biggest and instead check all entries. Signed-off-by: Armin Wolf --- drivers/hwmon/dell-smm-hwmon.c | 37 +++++++++++++--------------------- 1 file changed, 14 insertions(+), 23 deletions(-) -- 2.30.2 diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index 30b6f0c28093..202ee884de9e 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c @@ -50,7 +50,7 @@ #define I8K_SMM_GET_DELL_SIG2 0xffa3 #define I8K_FAN_MULT 30 -#define I8K_FAN_MAX_RPM 30000 +#define I8K_FAN_RPM_THRESHOLD 1000 #define I8K_MAX_TEMP 127 #define I8K_FN_NONE 0x00 @@ -326,7 +326,7 @@ static int __init i8k_get_fan_nominal_speed(const struct dell_smm_data *data, u8 if (data->disallow_fan_support) return -EINVAL; - return i8k_smm(®s) ? : (regs.eax & 0xffff) * data->i8k_fan_mult; + return i8k_smm(®s) ? : (regs.eax & 0xffff); } /* @@ -776,6 +776,7 @@ static int dell_smm_read(struct device *dev, enum hwmon_sensor_types type, u32 a long *val) { struct dell_smm_data *data = dev_get_drvdata(dev); + int mult = data->i8k_fan_mult; int ret; switch (type) { @@ -804,11 +805,11 @@ static int dell_smm_read(struct device *dev, enum hwmon_sensor_types type, u32 a return 0; case hwmon_fan_min: - *val = data->fan_nominal_speed[channel][0]; + *val = data->fan_nominal_speed[channel][0] * mult; return 0; case hwmon_fan_max: - *val = data->fan_nominal_speed[channel][data->i8k_fan_max]; + *val = data->fan_nominal_speed[channel][data->i8k_fan_max] * mult; return 0; case hwmon_fan_target: @@ -819,7 +820,7 @@ static int dell_smm_read(struct device *dev, enum hwmon_sensor_types type, u32 a if (ret > data->i8k_fan_max) ret = data->i8k_fan_max; - *val = data->fan_nominal_speed[channel][ret]; + *val = data->fan_nominal_speed[channel][ret] * mult; return 0; default: @@ -1071,6 +1072,13 @@ static int __init dell_smm_init_hwmon(struct device *dev) break; } data->fan_nominal_speed[i][state] = err; + /* + * Autodetect fan multiplier based on nominal rpm if multiplier + * was not specified as module param or in DMI. If fan reports + * rpm value too high then set multiplier to 1. + */ + if (!fan_mult && err > I8K_FAN_RPM_THRESHOLD) + data->i8k_fan_mult = 1; } } @@ -1359,7 +1367,6 @@ static int __init dell_smm_probe(struct platform_device *pdev) struct dell_smm_data *data; const struct dmi_system_id *id, *fan_control; int ret; - u8 fan; data = devm_kzalloc(&pdev->dev, sizeof(struct dell_smm_data), GFP_KERNEL); if (!data) @@ -1414,24 +1421,8 @@ static int __init dell_smm_probe(struct platform_device *pdev) dev_info(&pdev->dev, "enabling support for setting automatic/manual fan control\n"); } - if (!fan_mult) { - /* - * Autodetect fan multiplier based on nominal rpm - * If fan reports rpm value too high then set multiplier to 1 - */ - for (fan = 0; fan < DELL_SMM_NO_FANS; ++fan) { - ret = i8k_get_fan_nominal_speed(data, fan, data->i8k_fan_max); - if (ret < 0) - continue; - - if (ret > I8K_FAN_MAX_RPM) - data->i8k_fan_mult = 1; - break; - } - } else { - /* Fan multiplier was specified in module param or in dmi */ + if (fan_mult) data->i8k_fan_mult = fan_mult; - } ret = dell_smm_init_hwmon(&pdev->dev); if (ret) From patchwork Tue Apr 26 21:31:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 12827979 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72DEEC433EF for ; Tue, 26 Apr 2022 21:32:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355516AbiDZVfi (ORCPT ); Tue, 26 Apr 2022 17:35:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355527AbiDZVfd (ORCPT ); Tue, 26 Apr 2022 17:35:33 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2E3547541; Tue, 26 Apr 2022 14:32:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1651008719; bh=4y7a+bBwn4/79Epm4BmNa0CGyOh0yDIBQXKqeowWuy0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=PfoUYFISApB2yTYv8FbqQEKSYpktQUDodGhZIfSK5HFLrVjfOP0wp3nZasFIdikxo HXzDfRSFVf+HdF4OeoewBdWcJFqyILUXao6wLm4/aJoGl5zEvhUQK4WQuOmgK8lrEK ppWURzPaEV9kUP895Lb8dxdYFFXOJE0+WhNvxfEk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from esprimo-mx.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MrQEx-1oGIye2IER-00oYam; Tue, 26 Apr 2022 23:31:59 +0200 From: Armin Wolf To: pali@kernel.org Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/3] hwmon: (dell-smm) Cleanup init code Date: Tue, 26 Apr 2022 23:31:53 +0200 Message-Id: <20220426213154.724708-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220426213154.724708-1-W_Armin@gmx.de> References: <20220426213154.724708-1-W_Armin@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:+JjRYaQ1wf4drNrV3gpAZdx6dXsyvQ7a53cqXy8CHhEYlXiceAX B//clXO+aANIYU5MJ6kArIoGHoMrbzNPxWzwXFDTx4qRtfQaT1/0HDmV7FIMncsJVOSej0y DO9KrY0ulEtKrjYEWgKyUoRnOwloZoqZv8ioL9W2ReTa2gIxxPDc9IVvfSyKGEFIqbwiEyh hMaoXGMZal6CFbz17ewQw== X-UI-Out-Filterresults: notjunk:1;V03:K0:CZRFBoBFI3E=:FDqNUMi+CQuDZFnvk0l8BA PIAO8d/4+ZHPhoWWe4ZiqAhlxCb1icaOwbPW8cQdQ1A2NJGOFPprAQufg+E6eXBmUTk7e04ze k5Pe1d6enn2w0UUNYy21R1SwwQJGpMp5IPa83plZVDBxyzeo2tkuhioqUAaa78jVA8xbX88h2 jUXvH64IBykZ0/91s+3qdw3ZX6nFGBmjq5rjoxgQqwlon27fZpUbiulE42QhE4vVjVXznCesc blAhVYQbxnaAk5FWpedpxdj7RwLT9NARQ6Ij2lrS8tE14qMx5R2oHP87YIhGx/aLzBRA9YwUV nb+entTcscoaK7PKCqE2Bx6XOX8CKoAyTFR7H8hP0x7xnrkXFYiWKHZVHe1qR5zl6hEEc64Ey oirtqnpEoVXZzl6y6JGh9c1F42gGA66B1+LG2ovWdjhGwSzuQ7F15C9+JxjOGfHGoT8GYNEPQ UnjWmJyh2A+dMPs0oHSs2QZ/ktW6rPjxWMTbV3oNx1WaWUb/ioA594l/bnsso3FqUxdK+aYww N2N18fqqSlcHufgKSWTMlULp8EHrAym1xrVSJvpvc7ChFmqt/HuJcjVToPZMLIJxZnmwo/2VE E8WN/BldB6zcmI2hMDELJ0EZotfrqH2FcqdHKjSARVwcKmaA2xrfme1yrLrL/qyE+QetbUzOF VDrUTHzY1FmX9cscnd33Ply6XkHamniHBJnSIK2VQWIaFBJmzJu2K7FXK6jEgIC2wsC4Fp2+D AgdFNcw3z+J9733FnU/bMYZeL0GcoXd++M1CL3f3VA1EzkHJo7lw8uYm/xr8r9GPgq2RPdEJp 9qINGXUWsz3lK2mTJPAfzvDxuj06zGQoEe++OJBLIrft/EZoGO5T68eIhJFiC2uqzqGlimSuE lcodqKeE49+uXgGPrVOb+qvYceS381PIrrkWLC8LbMISTgHrHDLDZToKY4kgK4n+UDbrPuUDg aWYRh4H+XlgZSukuk3JQDbXNIIaXS1KjjYfXuTTFaCHrQHnhwNfOWYrMmrCfo4smsLropPZFT bs7BXr7g9nSU5ybK/lEeWezcK6C/Po32RsTZiuSTMYTPecvW6JSmYp24l39OHMtw5P5+IVxdD KH0gnJl6qrurXE= Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org The default values for i8k_fan_mult and i8k_fan_max should be assigend only if the values specified as module params or in DMI are invalid/missing. Signed-off-by: Armin Wolf --- drivers/hwmon/dell-smm-hwmon.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) -- 2.30.2 diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index 202ee884de9e..f13902414615 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c @@ -1373,8 +1373,6 @@ static int __init dell_smm_probe(struct platform_device *pdev) return -ENOMEM; mutex_init(&data->i8k_mutex); - data->i8k_fan_mult = I8K_FAN_MULT; - data->i8k_fan_max = I8K_FAN_HIGH; platform_set_drvdata(pdev, data); if (dmi_check_system(i8k_blacklist_fan_support_dmi_table)) { @@ -1409,7 +1407,9 @@ static int __init dell_smm_probe(struct platform_device *pdev) fan_max = conf->fan_max; } - data->i8k_fan_max = fan_max ? : I8K_FAN_HIGH; /* Must not be 0 */ + /* All options must not be 0 */ + data->i8k_fan_mult = fan_mult ? : I8K_FAN_MULT; + data->i8k_fan_max = fan_max ? : I8K_FAN_HIGH; data->i8k_pwm_mult = DIV_ROUND_UP(255, data->i8k_fan_max); fan_control = dmi_first_match(i8k_whitelist_fan_control); @@ -1421,9 +1421,6 @@ static int __init dell_smm_probe(struct platform_device *pdev) dev_info(&pdev->dev, "enabling support for setting automatic/manual fan control\n"); } - if (fan_mult) - data->i8k_fan_mult = fan_mult; - ret = dell_smm_init_hwmon(&pdev->dev); if (ret) return ret; From patchwork Tue Apr 26 21:31:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 12827980 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF042C433F5 for ; Tue, 26 Apr 2022 21:32:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355523AbiDZVfj (ORCPT ); Tue, 26 Apr 2022 17:35:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355533AbiDZVfi (ORCPT ); Tue, 26 Apr 2022 17:35:38 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B845848889; Tue, 26 Apr 2022 14:32:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1651008721; bh=Mcqr/T0kmWqg4nAlzOns1D7VSNQP91XAT2oZ/smVtZg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=coZxAAm3p5l3OCIUnUP3qzKkt/u4crbDsUnOxI/vq9/YCes/7sCHhnXHv2vo4w5Dp tP/f1Fu9R81fCxssP6uSpnKuNsxWm3HL03YP/WE4X6c84qFmWXqFcT30FkzoiMjUPr 3hHAJ56xU3MOE78J+sCQPi3yekWPgN83cpKdzesQ= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from esprimo-mx.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MFsYx-1nemMg0KSd-00HQ3s; Tue, 26 Apr 2022 23:32:01 +0200 From: Armin Wolf To: pali@kernel.org Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/3] hwmon: (dell-smm) Warn if SMM call took a very long time to execute Date: Tue, 26 Apr 2022 23:31:54 +0200 Message-Id: <20220426213154.724708-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220426213154.724708-1-W_Armin@gmx.de> References: <20220426213154.724708-1-W_Armin@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:dVutyZY/BCiotHB/A+1poWq9QgmxatrUFyL3SR9Mal2aDAeVzw8 k/l3fTLlCyKGohW64XTyP4CqBoeQCNHB03/Vnz2iiRa3HwhS//VF0sNLJHEA7PFDn5MAk8H 4qtKE9EitMbQZvK2rkD5bb4Ic0AhFJunvhDydcoRoNvy4c8e6iJW/B9u8gDjiNYGuqNg8tT xw3UpiysP4REs+L8nVd+A== X-UI-Out-Filterresults: notjunk:1;V03:K0:9FCWAqq+1vc=:36INr/9RMhrgYme2ZgAqBY AvEHpE5W1PyPQuELki3mxfdlI1JKTl0U9XPh04xIAkEww5Ii4Tchw2nwSSZFXhK4MtIDkx8eQ WgQYRJBbqrwBuACSHItWSettvE6c1uOces9zJw8fpLeOt9Z6n1i2aNrtP5GhbqlRE2jD68VBd qHNg9kB0aj+3uXTgWCfe0QZtmeGOM/uwQz6cE/v3liMv8c7wek0nx886NOkZejX3hjq8dc9jO HPOdtcdRicANBjzNK7wjgkv5MtvlCuL0N89d6ZNZ981FRhV4mzrVSfeMV9m1dCHhvm6rBuThQ 46wDqKdp+yWutbfJ8K8D9cqfWl9yIQwTRD+9o55/ZmixL+JahBOubRMR+nSbzNP3mxVOkhqOS 7+ITIvfy4tzZpDDmFK/HOfZ/T6B9AdKxuL7aq8zlafrhga38HglQSi91Tg1MheYYxTvfFYkVB Ir1TBBdqmlEPNQ/jUYuVAoOSE2lt0nvEswefPkxH7BAeuye3A47T+7YOBDwHQBx6jXRGu9Z4o HjN4KxtO5IhCDK87t39xs479RvN3wTOK9Hw5mOY7R2lUgfxZqSVsF4+TS+3IpXZO6yshTpwxI czywqJ8LzU7D4JchRBcQQphVzoe1puixfr18LlQN4xu5jPiT1oCuq6uCciryJ3djrZkohoQr5 igThxe9hs7fDW1BzY4ltJeS+ExaE76yHG7N02oP6XYtJqdoT0JelNqJRAdnTDoM6N/9CPC+v9 getWSQRlI43H3B7XCZk0zNxVRo7ceAXV2rcTdyXCBjuddGuZZ7U8PCWCglORaujyGMDNaEEW2 9+pWl3lwrtD4m5httc0gR2+1WW8YS82VrEwRFMG6XAPp6e4Z2NSGxbSmGcEQtMjTj7szoSPJz peePJ399I6+WIl8Uejxqtm4usv3DbKD25iNdv++x8U+F3AHV7hCbbFg7FnpjaenL89hmSsiAx uwSd97WAZ+cbmv7jgc2qkd5rWw7UB5OTYJBUt6hEtHezIvC7zMZieVjNchMY07udusGqJ3+Hq FI3bzv87PkqaDOAaZwg0lrUlcPlQ05Y0bOa6mXsZ/iZBkeH0eMU5j7oFJMMGs4g3mn1Nv5pUv 3ygE4FSWhV4qCI= Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org If a particular SMM call takes a very long time to execute, the user might experience audio problems. Print a warning if a particular SMM call took over 0.250 seconds to execute, so the user can check whether or not possible audio problems are caused by this driver. Signed-off-by: Armin Wolf --- drivers/hwmon/dell-smm-hwmon.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.30.2 diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index f13902414615..071aa6f4e109 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c @@ -49,6 +49,9 @@ #define I8K_SMM_GET_DELL_SIG1 0xfea3 #define I8K_SMM_GET_DELL_SIG2 0xffa3 +/* in usecs */ +#define DELL_SMM_MAX_DURATION 250000 + #define I8K_FAN_MULT 30 #define I8K_FAN_RPM_THRESHOLD 1000 #define I8K_MAX_TEMP 127 @@ -239,6 +242,9 @@ static int i8k_smm_func(void *par) pr_debug("smm(0x%.4x 0x%.4x) = 0x%.4x (took %7lld usecs)\n", eax, ebx, (rc ? 0xffff : regs->eax & 0xffff), duration); + if (duration > DELL_SMM_MAX_DURATION) + pr_warn_once("SMM call took %lld usecs!\n", duration); + return rc; }