All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH AUTOSEL 5.12 01/63] platform/x86: hp_accel: Avoid invoking _INI to speed up resume
@ 2021-05-24 14:45 Sasha Levin
  2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 02/63] gpio: cadence: Add missing MODULE_DEVICE_TABLE Sasha Levin
                   ` (61 more replies)
  0 siblings, 62 replies; 97+ messages in thread
From: Sasha Levin @ 2021-05-24 14:45 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Kai-Heng Feng, Éric Piel, Hans de Goede, Sasha Levin,
	platform-driver-x86

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 c394c0b08519..7ac788fae1b8 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


^ permalink raw reply related	[flat|nested] 97+ messages in thread

end of thread, other threads:[~2021-05-25 22:18 UTC | newest]

Thread overview: 97+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-24 14:45 [PATCH AUTOSEL 5.12 01/63] platform/x86: hp_accel: Avoid invoking _INI to speed up resume Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 02/63] gpio: cadence: Add missing MODULE_DEVICE_TABLE Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 03/63] Revert "crypto: cavium/nitrox - add an error message to explain the failure of pci_request_mem_regions" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 04/63] Revert "media: usb: gspca: add a missed check for goto_low_power" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 05/63] Revert "ALSA: sb: fix a missing check of snd_ctl_add" Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 06/63] Revert "serial: max310x: pass return value of spi_register_driver" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 07/63] serial: max310x: unregister uart driver in case of failure and abort Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 08/63] Revert "net: fujitsu: fix a potential NULL pointer dereference" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 09/63] net: fujitsu: fix potential null-ptr-deref Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 10/63] Revert "net/smc: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 11/63] net/smc: properly handle workqueue allocation failure Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 12/63] Revert "net: caif: replace BUG_ON with recovery code" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 13/63] net: caif: remove BUG_ON(dev == NULL) in caif_xmit Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 14/63] Revert "char: hpet: fix a missing check of ioremap" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 15/63] char: hpet: add checks after calling ioremap Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 16/63] Revert "ALSA: gus: add a check of the status of snd_ctl_add" Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 17/63] ALSA: sb8: Add a comment note regarding an unused pointer Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 18/63] Revert "ALSA: usx2y: Fix potential NULL pointer dereference" Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 19/63] Revert "isdn: mISDNinfineon: fix " Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 20/63] isdn: mISDNinfineon: check/cleanup ioremap failure correctly in setup_io Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 21/63] Revert "ath6kl: return error code in ath6kl_wmi_set_roam_lrssi_cmd()" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 22/63] ath6kl: return error code in ath6kl_wmi_set_roam_lrssi_cmd() Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 23/63] Revert "isdn: mISDN: Fix potential NULL pointer dereference of kzalloc" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 24/63] isdn: mISDN: correctly handle ph_info allocation failure in hfcsusb_ph_info Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 25/63] Revert "dmaengine: qcom_hidma: Check for driver register failure" Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 26/63] dmaengine: qcom_hidma: comment platform_driver_register call Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 27/63] Revert "libertas: add checks for the return value of sysfs_create_group" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 28/63] libertas: register sysfs groups properly Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 29/63] Revert "ASoC: rt5645: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 30/63] ASoC: rt5645: add error checking to rt5645_probe function Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-25 14:01   ` Mark Brown
2021-05-25 14:01     ` Mark Brown
2021-05-25 14:44     ` Greg Kroah-Hartman
2021-05-25 14:44       ` Greg Kroah-Hartman
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 31/63] Revert "ASoC: cs43130: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 32/63] ASoC: cs43130: handle errors in cs43130_probe() properly Sasha Levin
2021-05-24 14:45   ` Sasha Levin
2021-05-25 14:00   ` Mark Brown
2021-05-25 14:00     ` Mark Brown
2021-05-25 14:43     ` Greg Kroah-Hartman
2021-05-25 14:43       ` Greg Kroah-Hartman
2021-05-25 22:17       ` Mark Brown
2021-05-25 22:17         ` Mark Brown
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 33/63] Revert "media: dvb: Add check on sp8870_readreg" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 34/63] media: dvb: Add check on sp8870_readreg return Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 35/63] Revert "media: gspca: mt9m111: Check write_bridge for timeout" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 36/63] media: gspca: mt9m111: Check write_bridge for timeout Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 37/63] Revert "media: gspca: Check the return value of write_bridge for timeout" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 38/63] media: gspca: properly check for errors in po1030_probe() Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 39/63] Revert "net: liquidio: fix a NULL pointer dereference" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 40/63] net: liquidio: Add missing null pointer checks Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 41/63] Revert "brcmfmac: add a check for the status of usb_register" Sasha Levin
2021-05-24 14:45 ` [PATCH AUTOSEL 5.12 42/63] brcmfmac: properly check for bus register errors Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 43/63] cdrom: gdrom: initialize global variable at init time Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 44/63] btrfs: return whole extents in fiemap Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 45/63] scsi: ufs: ufs-mediatek: Fix power down spec violation Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 46/63] scsi: BusLogic: Fix 64-bit system enumeration error for Buslogic Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 47/63] openrisc: Define memory barrier mb Sasha Levin
2021-05-24 14:46   ` [OpenRISC] " Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 48/63] scsi: pm80xx: Fix drives missing during rmmod/insmod loop Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 49/63] btrfs: release path before starting transaction when cloning inline extent Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 50/63] btrfs: do not BUG_ON in link_to_fixup_dir Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 51/63] ALSA: dice: disable double_pcm_frames mode for M-Audio Profire 610, 2626 and Avid M-Box 3 Pro Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 52/63] platform/x86: hp-wireless: add AMD's hardware id to the supported list Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 53/63] platform/x86: intel_punit_ipc: Append MODULE_DEVICE_TABLE for ACPI Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 54/63] platform/x86: touchscreen_dmi: Add info for the Mediacom Winpad 7.0 W700 tablet Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 55/63] SMB3: incorrect file id in requests compounded with open Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 56/63] drm/amd/display: Disconnect non-DP with no EDID Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 57/63] drm/amd/amdgpu: fix refcount leak Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 58/63] drm/amdgpu: Fix a use-after-free Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 59/63] drm/amd/amdgpu: fix a potential deadlock in gpu reset Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 60/63] drm/amdgpu: stop touching sched.ready in the backend Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46   ` Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 61/63] platform/x86: touchscreen_dmi: Add info for the Chuwi Hi10 Pro (CWI529) tablet Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 62/63] block: fix a race between del_gendisk and BLKRRPART Sasha Levin
2021-05-24 14:46 ` [PATCH AUTOSEL 5.12 63/63] linux/bits.h: fix compilation error with GENMASK Sasha Levin

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.