From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Kai-Heng Feng" <kai.heng.feng@canonical.com>,
"Éric Piel" <eric.piel@trempplin-utc.net>,
"Hans de Goede" <hdegoede@redhat.com>,
"Sasha Levin" <sashal@kernel.org>,
platform-driver-x86@vger.kernel.org
Subject: [PATCH AUTOSEL 5.4 01/52] platform/x86: hp_accel: Avoid invoking _INI to speed up resume
Date: Mon, 24 May 2021 10:48:11 -0400 [thread overview]
Message-ID: <20210524144903.2498518-1-sashal@kernel.org> (raw)
From: Kai-Heng Feng <kai.heng.feng@canonical.com>
[ Upstream commit 79d341e26ebcdbc622348aaaab6f8f89b6fdb25f ]
hp_accel can take almost two seconds to resume on some HP laptops.
The bottleneck is on evaluating _INI, which is only needed to run once.
Resolve the issue by only invoking _INI when it's necessary. Namely, on
probe and on hibernation restore.
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Acked-by: Éric Piel <eric.piel@trempplin-utc.net>
Link: https://lore.kernel.org/r/20210430060736.590321-1-kai.heng.feng@canonical.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/misc/lis3lv02d/lis3lv02d.h | 1 +
drivers/platform/x86/hp_accel.c | 22 +++++++++++++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/lis3lv02d/lis3lv02d.h b/drivers/misc/lis3lv02d/lis3lv02d.h
index 1b0c99883c57..c008eecfdfe8 100644
--- a/drivers/misc/lis3lv02d/lis3lv02d.h
+++ b/drivers/misc/lis3lv02d/lis3lv02d.h
@@ -271,6 +271,7 @@ struct lis3lv02d {
int regs_size;
u8 *reg_cache;
bool regs_stored;
+ bool init_required;
u8 odr_mask; /* ODR bit mask */
u8 whoami; /* indicates measurement precision */
s16 (*read_data) (struct lis3lv02d *lis3, int reg);
diff --git a/drivers/platform/x86/hp_accel.c b/drivers/platform/x86/hp_accel.c
index 799cbe2ffcf3..8c0867bda828 100644
--- a/drivers/platform/x86/hp_accel.c
+++ b/drivers/platform/x86/hp_accel.c
@@ -88,6 +88,9 @@ MODULE_DEVICE_TABLE(acpi, lis3lv02d_device_ids);
static int lis3lv02d_acpi_init(struct lis3lv02d *lis3)
{
struct acpi_device *dev = lis3->bus_priv;
+ if (!lis3->init_required)
+ return 0;
+
if (acpi_evaluate_object(dev->handle, METHOD_NAME__INI,
NULL, NULL) != AE_OK)
return -EINVAL;
@@ -356,6 +359,7 @@ static int lis3lv02d_add(struct acpi_device *device)
}
/* call the core layer do its init */
+ lis3_dev.init_required = true;
ret = lis3lv02d_init_device(&lis3_dev);
if (ret)
return ret;
@@ -403,11 +407,27 @@ static int lis3lv02d_suspend(struct device *dev)
static int lis3lv02d_resume(struct device *dev)
{
+ lis3_dev.init_required = false;
+ lis3lv02d_poweron(&lis3_dev);
+ return 0;
+}
+
+static int lis3lv02d_restore(struct device *dev)
+{
+ lis3_dev.init_required = true;
lis3lv02d_poweron(&lis3_dev);
return 0;
}
-static SIMPLE_DEV_PM_OPS(hp_accel_pm, lis3lv02d_suspend, lis3lv02d_resume);
+static const struct dev_pm_ops hp_accel_pm = {
+ .suspend = lis3lv02d_suspend,
+ .resume = lis3lv02d_resume,
+ .freeze = lis3lv02d_suspend,
+ .thaw = lis3lv02d_resume,
+ .poweroff = lis3lv02d_suspend,
+ .restore = lis3lv02d_restore,
+};
+
#define HP_ACCEL_PM (&hp_accel_pm)
#else
#define HP_ACCEL_PM NULL
--
2.30.2
next reply other threads:[~2021-05-24 14:56 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-24 14:48 Sasha Levin [this message]
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 02/52] gpio: cadence: Add missing MODULE_DEVICE_TABLE Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 03/52] Revert "media: usb: gspca: add a missed check for goto_low_power" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 04/52] Revert "ALSA: sb: fix a missing check of snd_ctl_add" Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 05/52] Revert "serial: max310x: pass return value of spi_register_driver" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 06/52] serial: max310x: unregister uart driver in case of failure and abort Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 07/52] Revert "net: fujitsu: fix a potential NULL pointer dereference" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 08/52] net: fujitsu: fix potential null-ptr-deref Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 09/52] Revert "net/smc: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 10/52] net: caif: remove BUG_ON(dev == NULL) in caif_xmit Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 11/52] Revert "char: hpet: fix a missing check of ioremap" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 12/52] char: hpet: add checks after calling ioremap Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 13/52] Revert "ALSA: gus: add a check of the status of snd_ctl_add" Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 14/52] ALSA: sb8: Add a comment note regarding an unused pointer Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 15/52] Revert "ALSA: usx2y: Fix potential NULL pointer dereference" Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 16/52] Revert "isdn: mISDNinfineon: fix " Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 17/52] isdn: mISDNinfineon: check/cleanup ioremap failure correctly in setup_io Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 18/52] Revert "ath6kl: return error code in ath6kl_wmi_set_roam_lrssi_cmd()" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 19/52] ath6kl: return error code in ath6kl_wmi_set_roam_lrssi_cmd() Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 20/52] Revert "isdn: mISDN: Fix potential NULL pointer dereference of kzalloc" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 21/52] isdn: mISDN: correctly handle ph_info allocation failure in hfcsusb_ph_info Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 22/52] Revert "dmaengine: qcom_hidma: Check for driver register failure" Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 23/52] dmaengine: qcom_hidma: comment platform_driver_register call Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 24/52] Revert "libertas: add checks for the return value of sysfs_create_group" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 25/52] libertas: register sysfs groups properly Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 26/52] Revert "ASoC: rt5645: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 27/52] ASoC: rt5645: add error checking to rt5645_probe function Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 28/52] Revert "ASoC: cs43130: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 29/52] ASoC: cs43130: handle errors in cs43130_probe() properly Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 30/52] Revert "media: dvb: Add check on sp8870_readreg" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 31/52] media: dvb: Add check on sp8870_readreg return Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 32/52] Revert "media: gspca: mt9m111: Check write_bridge for timeout" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 33/52] media: gspca: mt9m111: Check write_bridge for timeout Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 34/52] Revert "media: gspca: Check the return value of write_bridge for timeout" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 35/52] media: gspca: properly check for errors in po1030_probe() Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 36/52] Revert "net: liquidio: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 37/52] net: liquidio: Add missing null pointer checks Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 38/52] Revert "brcmfmac: add a check for the status of usb_register" Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 39/52] brcmfmac: properly check for bus register errors Sasha Levin
2021-05-25 6:38 ` Arend van Spriel
2021-05-25 6:43 ` Greg Kroah-Hartman
2021-05-25 7:04 ` Arend Van Spriel
2021-05-25 7:11 ` Greg Kroah-Hartman
2021-05-25 7:23 ` Arend van Spriel
2021-05-25 7:26 ` Greg Kroah-Hartman
2021-05-25 7:40 ` Arend van Spriel
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 40/52] cdrom: gdrom: initialize global variable at init time Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 41/52] btrfs: return whole extents in fiemap Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 42/52] scsi: BusLogic: Fix 64-bit system enumeration error for Buslogic Sasha Levin
2021-05-24 14:48 ` [OpenRISC] [PATCH AUTOSEL 5.4 43/52] openrisc: Define memory barrier mb Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 44/52] btrfs: do not BUG_ON in link_to_fixup_dir Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 45/52] platform/x86: hp-wireless: add AMD's hardware id to the supported list Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 46/52] platform/x86: intel_punit_ipc: Append MODULE_DEVICE_TABLE for ACPI Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 47/52] platform/x86: touchscreen_dmi: Add info for the Mediacom Winpad 7.0 W700 tablet Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 48/52] SMB3: incorrect file id in requests compounded with open Sasha Levin
2021-05-24 14:48 ` [PATCH AUTOSEL 5.4 49/52] drm/amd/display: Disconnect non-DP with no EDID Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:48 ` Sasha Levin
2021-05-24 14:49 ` [PATCH AUTOSEL 5.4 50/52] drm/amd/amdgpu: fix refcount leak Sasha Levin
2021-05-24 14:49 ` Sasha Levin
2021-05-24 14:49 ` Sasha Levin
2021-05-24 14:49 ` [PATCH AUTOSEL 5.4 51/52] drm/amdgpu: Fix a use-after-free Sasha Levin
2021-05-24 14:49 ` Sasha Levin
2021-05-24 14:49 ` Sasha Levin
2021-05-24 14:49 ` [PATCH AUTOSEL 5.4 52/52] drm/amd/amdgpu: fix a potential deadlock in gpu reset Sasha Levin
2021-05-24 14:49 ` Sasha Levin
2021-05-24 14:49 ` Sasha Levin
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=20210524144903.2498518-1-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=eric.piel@trempplin-utc.net \
--cc=hdegoede@redhat.com \
--cc=kai.heng.feng@canonical.com \
--cc=linux-kernel@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=stable@vger.kernel.org \
/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.