Re: [PATCH v8 00/16] platform-x86: lenovo-wmi: Add fixes and enhancement

Mark Pearson
2026-04-07T23:58:03Z

On Mon, Apr 6, 2026, at 4:13 PM, Derek J. Clark wrote:
> This series adds many much needed fixes and features to the lenovo-wmi
> drivers. This version has been re-ordered to ensure the simplest
> application to the stable tree, with all fixes being pushed up front.
> This has caused some churn in the latter half of the series where I'm
> immediately changing things that were just added, but this should ensure
> a better result for all kernel versions so I'm happy with it.
>
> Patches 1-7 fix various bugs in the existing drivers and are Cc'd to
> stable.
>
> Patch 8 moves all gamezone enums from the gamezone header into the
> helpers header in preparation for the rest of the series.
>
> Patch 9 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 10 adds a function to make assigning attribute ID's for capdata
> cleaner and easier.
>
> Patch 11 adds the remaining CPU attributes that weren't previously
> exposed.
>
> Patch 12 adds GPU attributes.
>
> Patch 13 renames a name constant in preparation for patch 6.
>
> Patch 14 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 15 adds a debugfs directory.
>
> Patch 16 adds a debugfs file for dumping capdata.
>
> Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
> ---
> v8:
> - Clean up rebase mixup with re-assinment of wmi_method_args_32 in
> patches 6 and 14 from {} to { 0x00, 0x00 } and back.
> - Combine ret_obj declaration and assignment in patch 1.
> v7:
> https://lore.kernel.org/platform-driver-x86/20260402032424.678528-1-derekjohn.clark@gmail.com/
> - Add 3 additional bug fix patches from Rong Zhang reported by
> shashiko.dev
> - Reorder patches so the fixes are upfront in patches 1-7.
> - Fix various typos and rebase mixups from v6.
> v6:
> https://lore.kernel.org/platform-driver-x86/20260331181208.421552-1-derekjohn.clark@gmail.com/
> - 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: Zero initialize WMI arguments
> platform/x86: lenovo-wmi-other: Fix tunable_attr_01 struct members
> platform/x86: lenovo-wmi-other: Limit adding attributes to supported
> devices
> platform/x86: lenovo-wmi-helpers: Move gamezone enums to wmi-helpers
> platform/x86: lenovo-wmi-other: Move LWMI_FAN_DIV
> platform/x86: lenovo-wmi-other: Add lwmi_attr_id() function
> 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 (6):
> platform/x86: lenovo-wmi-helpers: Fix memory leak in
> lwmi_dev_evaluate_int()
> platform/x86: lenovo-wmi-other: Balance IDA id allocation and free
> platform/x86: lenovo-wmi-other: Balance component bind and unbind
> 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 | 7 +-
> drivers/platform/x86/lenovo/wmi-gamezone.h | 20 -
> drivers/platform/x86/lenovo/wmi-helpers.c | 138 +++-
> drivers/platform/x86/lenovo/wmi-helpers.h | 23 +
> drivers/platform/x86/lenovo/wmi-other.c | 745 ++++++++++++++----
> drivers/platform/x86/lenovo/wmi-other.h | 16 -
> 11 files changed, 934 insertions(+), 198 deletions(-)
> delete mode 100644 drivers/platform/x86/lenovo/wmi-gamezone.h
> delete mode 100644 drivers/platform/x86/lenovo/wmi-other.h
>
> --
> 2.53.0

Now I've been over it all, for the full series:
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>

Mark