FAILED: patch "[PATCH] platform/x86: lenovo: Decouple lenovo-wmi-gamezone and" failed to apply to 7.0-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 7.0-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-7.0.y
git checkout FETCH_HEAD
git cherry-pick -x e8d5460ad3fd22409f2566ecbe2c82d94aabc246
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026052042-outbid-moving-dff1@gregkh' --subject-prefix 'PATCH 7.0.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e8d5460ad3fd22409f2566ecbe2c82d94aabc246 Mon Sep 17 00:00:00 2001
From: Rong Zhang <[email protected]>
Date: Sun, 10 May 2026 04:25:36 +0000
Subject: [PATCH] platform/x86: lenovo: Decouple lenovo-wmi-gamezone and
lenovo-wmi-other
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently, lenovo-wmi-gamezone depends on lenovo-wmi-other as the former imports symbols from the latter. The imported symbols are just used to register a notifier block. However, there is no runtime dependency between both drivers, and either of them can run without the other, which is the major purpose of using the notifier framework.
Such a link-time dependency is non-optimal. A previous attempt to "fix" it made LENOVO_WMI_GAMEZONE select LENOVO_WMI_TUNING, which was fundamentally broken and resulted in undefined Kconfig behavior, as `select' cannot be used on a symbol with potentially unmet dependencies.
Decouple both drivers by moving the thermal mode notifier chain to lenovo-wmi-helpers. Methods for notifier block (un)registration are exported for lenovo-wmi-gamezone, while a method for querying the current thermal mode are exported for lenovo-wmi-other.
This turns the dependency graph from
+------------ lenovo-wmi-gamezone
| |
v |
lenovo-wmi-helpers |
^ |
| V
+------------ lenovo-wmi-otherinto
+------------ lenovo-wmi-gamezone
|
v
lenovo-wmi-helpers
^
|
+------------ lenovo-wmi-otherTo make it clear, the name of the notifier chain is also renamed from om_chain_head' to tm_chain_head', indicating that it's used to query the current thermal mode.
No functional change intended.
drivers/platform/x86/lenovo/Kconfig +0 -1
@@ -252,7 +252,6 @@ config LENOVO_WMI_GAMEZONE select ACPI_PLATFORM_PROFILE select LENOVO_WMI_EVENTS select LENOVO_WMI_HELPERS - select LENOVO_WMI_TUNING help Say Y here if you have a WMI aware Lenovo Legion device and would like to use the platform-profile firmware interface to manage power usage.
drivers/platform/x86/lenovo/wmi-gamezone.c +1 -3
@@ -23,7 +23,6 @@#include "wmi-events.h" #include "wmi-gamezone.h" #include "wmi-helpers.h" -#include "wmi-other.h" #define LENOVO_GAMEZONE_GUID "887B54E3-DDDC-4B2C-8B88-68A26A8835D0"
@@ -383,7 +382,7 @@ static int lwmi_gz_probe(struct wmi_device *wdev, const void *context)return ret; priv->mode_nb.notifier_call = lwmi_gz_mode_call; -return devm_lwmi_om_register_notifier (&wdev->dev, &priv->mode_nb); +return devm_lwmi_tm_register_notifier (&wdev->dev, &priv->mode_nb); }static const struct wmi_device_id lwmi_gz_id_table[] = {
@@ -405,7 +404,6 @@ module_wmi_driver(lwmi_gz_driver);MODULE_IMPORT_NS ("LENOVO_WMI_EVENTS" );MODULE_IMPORT_NS ("LENOVO_WMI_HELPERS" ); -MODULE_IMPORT_NS ("LENOVO_WMI_OTHER" );MODULE_DEVICE_TABLE (wmi, lwmi_gz_id_table);MODULE_AUTHOR ("Derek J. Clark <[email protected]>" );MODULE_DESCRIPTION ("Lenovo GameZone WMI Driver" );
drivers/platform/x86/lenovo/wmi-helpers.c +101 -0
118 lines not on this page · raw message
drivers/platform/x86/lenovo/wmi-helpers.h +8 -0
@@ -7,6 +7,8 @@#include <linux/types.h> +struct device ; +struct notifier_block ;struct wmi_device ;struct wmi_method_args_32 {
@@ -17,4 +19,10 @@ struct wmi_method_args_32 {int lwmi_dev_evaluate_int (struct wmi_device *wdev,u8 instance,u32 method_id,unsigned char *buf,size_t size,u32 *retval); +int lwmi_tm_register_notifier (struct notifier_block *nb); +int lwmi_tm_unregister_notifier (struct notifier_block *nb); +int devm_lwmi_tm_register_notifier (struct device *dev, +struct notifier_block *nb); +int lwmi_tm_notifier_call (enum thermal_mode *mode); +#endif /* !_LENOVO_WMI_HELPERS_H_ */
drivers/platform/x86/lenovo/wmi-other.c +2 -102
146 lines not on this page · raw message
drivers/platform/x86/lenovo/wmi-other.h deleted +0 -16
@@ -1,16 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -/* Copyright (C) 2025 Derek J. Clark <[email protected]> */ - -#ifndef _LENOVO_WMI_OTHER_H_ -#define _LENOVO_WMI_OTHER_H_ - -struct device ; -struct notifier_block ; - -int lwmi_om_register_notifier (struct notifier_block *nb); -int lwmi_om_unregister_notifier (struct notifier_block *nb); -int devm_lwmi_om_register_notifier (struct device *dev, -struct notifier_block *nb); - -#endif /* !_LENOVO_WMI_OTHER_H_ */