From: Rong Zhang <i@rong.moe>
To: "Derek J. Clark" <derekjohn.clark@gmail.com>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Hans de Goede" <hansg@kernel.org>
Cc: Mark Pearson <mpearson-lenovo@squebb.ca>,
Armin Wolf <W_Armin@gmx.de>, Jonathan Corbet <corbet@lwn.net>,
Kurt Borja <kuurtb@gmail.com>,
platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 00/13] platform-x86: lenovo-wmi: Add fixes and enhancement
Date: Thu, 02 Apr 2026 02:44:51 +0800 [thread overview]
Message-ID: <499fa3efd5be054ffdda77dd00ad4d8d3391e073.camel@rong.moe> (raw)
In-Reply-To: <20260331181208.421552-1-derekjohn.clark@gmail.com>
Hi Derek,
On Tue, 2026-03-31 at 18:11 +0000, Derek J. Clark wrote:
> This series adds many much needed features and fixes to the lenovo-wmi
> drivers.
>
> Patch 1 moves LWMI_FAN_DIV to be next to the rest of the fan attribute
> defines in preparation for adding additional attrbiute macros. This is
> so the attribute macros can all be in the same place in the file.
>
> Patch 2 cleans up tunable_attr_01 by removing an unused pointer and
> correctly assigning the members as u8 isntead of u32.
>
> Patch 3 fixes a bug when sending 32 bit arguments via WMI where the
> second value in the args struct was uninitialized.
>
> Patch 4 moves all gamezone enums from the gamezone header into the
> helpers header in preparation for the rest of the series.
>
> Patch 5 adds a function to make assigning attribute ID's for capdata
> cleaner and easier.
>
> Patch 6 addresses bugs where devices that don't support exposed
> attributes would still create the attribute, and also attempts to
> identify the correct capdata and set/get methods since some legacy
> interfaces don't use the custom mode in the method or capdata ID.
>
> Patch 7 adds the remaining CPU attributes that weren't previously
> exposed.
>
> Patch 8 adds GPU attributes.
>
> Patch 9 renames a name constant in preparation for patch 6.
>
> Patch 10 adds battery charge-type limiting when supported only by WMI, or
> when a module parameter to skip compatibility checks is set. The
> MODULE_PARM_DESC macro creates one check and two warnings in checkpatch.
> I reviewed other examples from the kernel and I am following the same
> convention, so I left it as is.
>
> Patch 11 fixes a bug where the 'gamezone' and the 'other' drivers were
> incorrectly coupled in the Kconfig, leading to side effects under
> certain kernel configurations.
>
> Patch 12 adds a debugfs directory.
>
> Patch 13 adds a debugfs file for dumping capdata.
>
> Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
The series LGTM except for some tiny issues. See my replies to the
corresponding patches.
Sashiko.dev reports some potential issues in the series as well as some
existing bugs.
https://sashiko.dev/#/patchset/20260331181208.421552-1-derekjohn.clark%40gmail.com
I've mentioned some in my reply to the corresponding patches. Besides, I
am going to talk about existing bugs here:
- tunable_attr_01 is a statically shared structure, but .dev is
overwritten each time when the master is bound, which violates
`.no_singleton = true'
AFAIK no device in wild has multiple wmi-other instances so it should be
safe for the time being.
Fixing it will need numerous fundamental refactorings to the attributes
and conflict with patch 6 where .cd_mode_id and .cv_mode_id is added to
tunable_attr_01.
I don't really want to make this series too large and miss this cycle.
Hence, I am going to fix it in the next cycle with some extra
refactorings to get rid of attribute-specific show/store callbacks.
For this series, I'd consider violating `.no_singleton = true' a very
minor concern. It should be fine to keep it as is. If we really care
about it, we could set it to false temporarily.
- Rebinding wmi-other leaks IDA
- Failure in lwmi_om_fw_attr_add() followed by lwmi_other_remove()
double frees the same IDA
- Calling lwmi_dev_evaluate_int() with `retval == NULL' leaks memory
- Unbalanced component bind and unbind in the error path of
lwmi_om_master_bind()
Legit concerns. I will reply with a series fixing them. Could you
incorporate it into your series?
Fix patches should be the very first patches in the series so that
backporting is less painful. I'd suggest rearranging the series like:
patches in my fix series
patch 3
patch 4
patch 11
the rest patches
Thanks,
Rong
> ---
> v6:
> - Incorporate Rong Zhang's debugfs and decoupling patches into the
> series.
> - Add a patch to clean up too many cross-references to wmi-gamezone.h
> - Make lwmi_attr_id a static inline in wmi-capdata.h
> - Added a patch to fix a bug where ares.arg1 is uninitialized when it
> is sent to the firmware.
> - Add supported checks before adding battery extenstion, and ensure
> both the new checks and the is_writable checks are not casting u32
> to i32.
> - Misc formating changes.
> v5: https://lore.kernel.org/platform-driver-x86/20260324221032.1333636-1-derekjohn.clark@gmail.com/
> - Remove cv/cd_mode_id references that occured before patch 4.
> - Move lwmi_attr_id to capdata.c with a namespace export.
> - Fix mixing include.
> - Make lwmi_attr_is_supported return bool.
> - Use switch instead of if for setting/getting charge type state.
> - Various formatting fixes.
> v4: https://lore.kernel.org/platform-driver-x86/20260312031032.3467565-1-derekjohn.clark@gmail.com/
> - Use loop instead of back gotos for identifying the working attribute
> ID.
> - Use function instead of macro to assign attribute_id, preserving
> types.
> - Removed unused defines and enum values.
> - Rename charging defines to clarify thier purpose.
> - Fixed various formatting issues from v3.
> - Added module param to skip ACPI check when loading the driver for
> the power supply extension.
> - Don't abort adding power supply extension if the ACPI handle from
> ideapad is not present.
> - Don't worry about symmetric cleanup when cleaning up attributes in
> an error state.
> - Reword Patch 8 commit message to be more concise.
> - Fix wording in Patch 7 to match the changes.
> v3: https://lore.kernel.org/platform-driver-x86/20260224043200.2680384-1-derekjohn.clark@gmail.com/
> - Re-add HWMON name const and just rename LWMI_OM_FW_ATTR_BASE_PATH
> - Fix linker warnings by moving acpi/battery include to the end of the
> list.
> - Remove CPU/GPU OC features. These attributes are BOOL type and will
> need a new constructor that I'll add later.
> v2: https://lore.kernel.org/platform-driver-x86/20260215061339.2842486-1-derekjohn.clark@gmail.com/
> - Fix gpu_mode misisng from attributes list.
> - Fix prototypes for power suppy patch.
> - Reorganize CPU and GPU attributes alphabetically.
> - Break out the patch consolidating the driver name cost.
> - Move some of the refactoring of attribute_id back to into patch 1
> where it belongs.
> - Fix some additional typos in function prototypes.
> v1: https://lore.kernel.org/platform-driver-x86/20260213081243.794288-1-derekjohn.clark@gmail.com/
>
>
> Derek J. Clark (10):
> platform/x86: lenovo-wmi-other: Move LWMI_FAN_DIV
> platform/x86: lenovo-wmi-other: Fix tunable_attr_01 struct members
> platform/x86: lenovo-wmi-other: Zero initialize WMI arguments
> platform/x86: lenovo-wmi-helpers: Move gamezone enums to wmi-helpers
> platform/x86: lenovo-wmi-other: Add lwmi_attr_id() function
> platform/x86: lenovo-wmi-other: Limit adding attributes to supported
> devices
> platform/x86: lenovo-wmi-other: Add missing CPU tunable attributes
> platform/x86: lenovo-wmi-other: Add GPU tunable attributes
> platform/x86: lenovo-wmi-other: Rename LWMI_OM_FW_ATTR_BASE_PATH
> platform/x86: lenovo-wmi-other: Add WMI battery charge limiting
>
> Rong Zhang (3):
> platform/x86: lenovo: Decouple lenovo-wmi-gamezone and
> lenovo-wmi-other
> platform/x86: lenovo-wmi-helpers: Add helper for creating per-device
> debugfs dir
> platform/x86: lenovo-wmi-capdata: Add debugfs file for dumping capdata
>
> .../wmi/devices/lenovo-wmi-other.rst | 19 +
> drivers/platform/x86/lenovo/Kconfig | 3 +-
> drivers/platform/x86/lenovo/wmi-capdata.c | 128 +++-
> drivers/platform/x86/lenovo/wmi-capdata.h | 31 +-
> drivers/platform/x86/lenovo/wmi-events.c | 2 +-
> drivers/platform/x86/lenovo/wmi-gamezone.c | 5 +-
> drivers/platform/x86/lenovo/wmi-gamezone.h | 20 -
> drivers/platform/x86/lenovo/wmi-helpers.c | 136 ++++
> drivers/platform/x86/lenovo/wmi-helpers.h | 23 +
> drivers/platform/x86/lenovo/wmi-other.c | 689 ++++++++++++++----
> drivers/platform/x86/lenovo/wmi-other.h | 16 -
> 11 files changed, 891 insertions(+), 181 deletions(-)
> delete mode 100644 drivers/platform/x86/lenovo/wmi-gamezone.h
> delete mode 100644 drivers/platform/x86/lenovo/wmi-other.h
next prev parent reply other threads:[~2026-04-01 18:50 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 18:11 Derek J. Clark
2026-03-31 18:11 ` [PATCH v6 01/13] platform/x86: lenovo-wmi-other: Move LWMI_FAN_DIV Derek J. Clark
2026-03-31 18:11 ` [PATCH v6 02/13] platform/x86: lenovo-wmi-other: Fix tunable_attr_01 struct members Derek J. Clark
2026-03-31 18:11 ` [PATCH v6 03/13] platform/x86: lenovo-wmi-other: Zero initialize WMI arguments Derek J. Clark
2026-04-01 18:26 ` Rong Zhang
2026-03-31 18:11 ` [PATCH v6 04/13] platform/x86: lenovo-wmi-helpers: Move gamezone enums to wmi-helpers Derek J. Clark
2026-04-01 18:26 ` Rong Zhang
2026-03-31 18:12 ` [PATCH v6 05/13] platform/x86: lenovo-wmi-other: Add lwmi_attr_id() function Derek J. Clark
2026-04-01 18:29 ` Rong Zhang
2026-04-01 19:24 ` Derek J. Clark
2026-03-31 18:12 ` [PATCH v6 06/13] platform/x86: lenovo-wmi-other: Limit adding attributes to supported devices Derek J. Clark
2026-03-31 22:28 ` Kurt Borja
2026-03-31 18:12 ` [PATCH v6 07/13] platform/x86: lenovo-wmi-other: Add missing CPU tunable attributes Derek J. Clark
2026-03-31 22:29 ` Kurt Borja
2026-04-01 18:30 ` Rong Zhang
2026-03-31 18:12 ` [PATCH v6 08/13] platform/x86: lenovo-wmi-other: Add GPU " Derek J. Clark
2026-03-31 22:29 ` Kurt Borja
2026-04-01 18:30 ` Rong Zhang
2026-03-31 18:12 ` [PATCH v6 09/13] platform/x86: lenovo-wmi-other: Rename LWMI_OM_FW_ATTR_BASE_PATH Derek J. Clark
2026-03-31 18:12 ` [PATCH v6 10/13] platform/x86: lenovo-wmi-other: Add WMI battery charge limiting Derek J. Clark
2026-04-01 18:32 ` Rong Zhang
2026-03-31 18:12 ` [PATCH v6 11/13] platform/x86: lenovo: Decouple lenovo-wmi-gamezone and lenovo-wmi-other Derek J. Clark
2026-04-01 18:34 ` Rong Zhang
2026-03-31 18:12 ` [PATCH v6 12/13] platform/x86: lenovo-wmi-helpers: Add helper for creating per-device debugfs dir Derek J. Clark
2026-04-01 18:35 ` Rong Zhang
2026-03-31 18:12 ` [PATCH v6 13/13] platform/x86: lenovo-wmi-capdata: Add debugfs file for dumping capdata Derek J. Clark
2026-04-01 18:44 ` Rong Zhang [this message]
2026-04-01 19:00 ` [PATCH 1/3] platform/x86: lenovo-wmi-helpers: Fix memory leak in lwmi_dev_evaluate_int() Rong Zhang
2026-04-02 10:06 ` Ilpo Järvinen
2026-04-01 19:00 ` [PATCH 2/3] platform/x86: lenovo-wmi-other: Balance IDA id allocation and free Rong Zhang
2026-04-09 12:29 ` Ilpo Järvinen
2026-04-11 15:54 ` Derek John Clark
2026-04-01 19:00 ` [PATCH 3/3] platform/x86: lenovo-wmi-other: Balance component bind and unbind Rong Zhang
2026-04-09 12:32 ` Ilpo Järvinen
2026-04-01 19:37 ` [PATCH v6 00/13] platform-x86: lenovo-wmi: Add fixes and enhancement Derek J. Clark
2026-04-01 20:12 ` Rong Zhang
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=499fa3efd5be054ffdda77dd00ad4d8d3391e073.camel@rong.moe \
--to=i@rong.moe \
--cc=W_Armin@gmx.de \
--cc=corbet@lwn.net \
--cc=derekjohn.clark@gmail.com \
--cc=hansg@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=kuurtb@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpearson-lenovo@squebb.ca \
--cc=platform-driver-x86@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®