All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Arnav Rawat <arnavr3@illinois.edu>, Meng Dong <whenov@gmail.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Sasha Levin <sashal@kernel.org>,
	ike.pan@canonical.com, markgross@kernel.org,
	platform-driver-x86@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 21/31] platform/x86: ideapad-laptop: Fix interrupt storm on fn-lock toggle on some Yoga laptops
Date: Wed, 23 Nov 2022 07:42:22 -0500	[thread overview]
Message-ID: <20221123124234.265396-21-sashal@kernel.org> (raw)
In-Reply-To: <20221123124234.265396-1-sashal@kernel.org>

From: Arnav Rawat <arnavr3@illinois.edu>

[ Upstream commit 81a5603a0f50fd7cf17ff21d106052215eaf2028 ]

Commit 3ae86d2d4704 ("platform/x86: ideapad-laptop: Fix Legion 5 Fn lock
LED") uses the WMI event-id for the fn-lock event on some Legion 5 laptops
to manually toggle the fn-lock LED because the EC does not do it itself.
However, the same WMI ID is also sent on some Yoga laptops. Here, setting
the fn-lock state is not valid behavior, and causes the EC to spam
interrupts until the laptop is rebooted.

Add a set_fn_lock_led_list[] DMI-id list and only enable the workaround to
manually set the LED on models on this list.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=212671
Cc: Meng Dong <whenov@gmail.com>
Signed-off-by: Arnav Rawat <arnavr3@illinois.edu>
Link: https://lore.kernel.org/r/12093851.O9o76ZdvQC@fedora
[hdegoede@redhat.com: Check DMI-id list only once and store the result]
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/platform/x86/ideapad-laptop.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
index e7a1299e3776..609ce8f0e0bf 100644
--- a/drivers/platform/x86/ideapad-laptop.c
+++ b/drivers/platform/x86/ideapad-laptop.c
@@ -136,6 +136,7 @@ struct ideapad_private {
 		bool dytc                 : 1;
 		bool fan_mode             : 1;
 		bool fn_lock              : 1;
+		bool set_fn_lock_led      : 1;
 		bool hw_rfkill_switch     : 1;
 		bool kbd_bl               : 1;
 		bool touchpad_ctrl_via_ec : 1;
@@ -1467,6 +1468,9 @@ static void ideapad_wmi_notify(u32 value, void *context)
 		ideapad_input_report(priv, value);
 		break;
 	case 208:
+		if (!priv->features.set_fn_lock_led)
+			break;
+
 		if (!eval_hals(priv->adev->handle, &result)) {
 			bool state = test_bit(HALS_FNLOCK_STATE_BIT, &result);
 
@@ -1480,6 +1484,18 @@ static void ideapad_wmi_notify(u32 value, void *context)
 }
 #endif
 
+/* On some models we need to call exec_sals(SALS_FNLOCK_ON/OFF) to set the LED */
+static const struct dmi_system_id set_fn_lock_led_list[] = {
+	{
+		/* https://bugzilla.kernel.org/show_bug.cgi?id=212671 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Legion R7000P2020H"),
+		}
+	},
+	{}
+};
+
 /*
  * Some ideapads have a hardware rfkill switch, but most do not have one.
  * Reading VPCCMD_R_RF always results in 0 on models without a hardware rfkill,
@@ -1504,6 +1520,7 @@ static void ideapad_check_features(struct ideapad_private *priv)
 	acpi_handle handle = priv->adev->handle;
 	unsigned long val;
 
+	priv->features.set_fn_lock_led = dmi_check_system(set_fn_lock_led_list);
 	priv->features.hw_rfkill_switch = dmi_check_system(hw_rfkill_list);
 
 	/* Most ideapads with ELAN0634 touchpad don't use EC touchpad switch */
-- 
2.35.1


  parent reply	other threads:[~2022-11-23 12:48 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-23 12:42 [PATCH AUTOSEL 5.15 01/31] Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 02/31] dt-bindings: input: touchscreen: Add compatible for Goodix GT7986U chip Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 03/31] ASoC: Intel: bytcht_es8316: Add quirk for the Nanote UMPC-01 Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 04/31] ASoC: Intel: soc-acpi: add ES83x6 support to IceLake Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 05/31] tools: iio: iio_generic_buffer: Fix read size Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 06/31] ASoC: hda: intel-dsp-config: add ES83x6 quirk for IceLake Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 07/31] serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios() Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 08/31] Input: goodix - try resetting the controller when no config is set Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 09/31] Input: soc_button_array - add use_low_level_irq module parameter Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 10/31] Input: soc_button_array - add Acer Switch V 10 to dmi_use_low_level_irq[] Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 11/31] Input: i8042 - apply probe defer to more ASUS ZenBook models Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 12/31] ASoC: stm32: dfsdm: manage cb buffers cleanup Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 13/31] xen-pciback: Allow setting PCI_MSIX_FLAGS_MASKALL too Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 14/31] xen/platform-pci: add missing free_irq() in error path Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 15/31] platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr() Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 16/31] platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017) Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 17/31] drm/amdgpu: disable BACO support on more cards Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 18/31] zonefs: fix zone report size in __zonefs_io_error() Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 19/31] platform/surface: aggregator_registry: Add support for Surface Laptop 5 Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 20/31] platform/x86: hp-wmi: Ignore Smart Experience App event Sasha Levin
2022-11-23 12:42 ` Sasha Levin [this message]
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 22/31] tcp: configurable source port perturb table size Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 23/31] block: make blk_set_default_limits() private Sasha Levin
2022-11-23 13:44   ` Jens Axboe
2022-11-30 11:05     ` Sasha Levin
2022-11-23 12:42 ` [dm-devel] [PATCH AUTOSEL 5.15 24/31] dm-integrity: set dma_alignment limit in io_hints Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [dm-devel] [PATCH AUTOSEL 5.15 25/31] dm-log-writes: " Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 15:04   ` [dm-devel] " Keith Busch
2022-11-23 15:04     ` Keith Busch
2022-11-30 11:06     ` [dm-devel] " Sasha Levin
2022-11-30 11:06       ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 26/31] net: usb: qmi_wwan: add Telit 0x103a composition Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 27/31] scsi: mpi3mr: Suppress command reply debug prints Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 28/31] scsi: iscsi: Fix possible memory leak when device_register() failed Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 29/31] gpu: host1x: Avoid trying to use GART on Tegra20 Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [dm-devel] [PATCH AUTOSEL 5.15 30/31] dm integrity: flush the journal on suspend Sasha Levin
2022-11-23 12:42   ` Sasha Levin
2022-11-23 12:42 ` [dm-devel] [PATCH AUTOSEL 5.15 31/31] dm integrity: clear " Sasha Levin
2022-11-23 12:42   ` 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=20221123124234.265396-21-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=arnavr3@illinois.edu \
    --cc=hdegoede@redhat.com \
    --cc=ike.pan@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markgross@kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=whenov@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.