From: "Derek J. Clark" <derekjohn.clark@gmail.com>
To: Rong Zhang <i@rong.moe>, kernel test robot <lkp@intel.com>
Cc: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Hans de Goede" <hansg@kernel.org>,
oe-kbuild-all@lists.linux.dev,
"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 v5 8/8] platform/x86: lenovo-wmi-other: Add WMI battery charge limiting
Date: Thu, 26 Mar 2026 09:20:56 -0700 [thread overview]
Message-ID: <70895A3D-4A84-403E-A3BF-8730AEE03F6E@gmail.com> (raw)
In-Reply-To: <861d0276a759461be446df8e996d196037c9b581.camel@rong.moe>
On March 26, 2026 9:12:41 AM PDT, Rong Zhang <i@rong.moe> wrote:
>Hi Derek,
>
>On Wed, 2026-03-25 at 19:12 -0700, Derek John Clark wrote:
>> On Wed, Mar 25, 2026 at 12:43 PM kernel test robot <lkp@intel.com> wrote:
>> >
>> > Hi Derek,
>> >
>> > kernel test robot noticed the following build errors:
>> >
>> > [auto build test ERROR on linus/master]
>> > [also build test ERROR on v7.0-rc5 next-20260324]
>> > [If your patch is applied to the wrong git tree, kindly drop us a note.
>> > And when submitting patch, we suggest to use '--base' as documented in
>> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
>> >
>> > url: https://github.com/intel-lab-lkp/linux/commits/Derek-J-Clark/platform-x86-lenovo-wmi-other-Move-LWMI_FAN_DIV/20260325-070851
>> > base: linus/master
>> > patch link: https://lore.kernel.org/r/20260324221032.1333636-9-derekjohn.clark%40gmail.com
>> > patch subject: [PATCH v5 8/8] platform/x86: lenovo-wmi-other: Add WMI battery charge limiting
>> > config: x86_64-randconfig-005-20260325 (https://download.01.org/0day-ci/archive/20260326/202603260302.X0NjQOda-lkp@intel.com/config)
>
> CONFIG_DMI=y
>
> CONFIG_HWMON=y
>
> CONFIG_FW_ATTR_CLASS=m
>
> CONFIG_ACPI_BATTERY=m
>
> CONFIG_ACPI_PLATFORM_PROFILE=y
>
> CONFIG_ACPI_WMI=y
>
> CONFIG_LENOVO_WMI_CAPDATA=m
> CONFIG_LENOVO_WMI_EVENTS=y
> CONFIG_LENOVO_WMI_HELPERS=y
> CONFIG_LENOVO_WMI_GAMEZONE=y
> CONFIG_LENOVO_WMI_TUNING=y
>
>This isn't a legit config, as CONFIG_LENOVO_WMI_TUNING=y should have
>ensured CONFIG_LENOVO_WMI_CAPDATA=y, CONFIG_ACPI_BATTERY=y, and
>CONFIG_FW_ATTR_CLASS=y.
>
>> > compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
>> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260326/202603260302.X0NjQOda-lkp@intel.com/reproduce)
>> >
>> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
>> > the same patch/commit), kindly add following tags
>> > > Reported-by: kernel test robot <lkp@intel.com>
>> > > Closes: https://lore.kernel.org/oe-kbuild-all/202603260302.X0NjQOda-lkp@intel.com/
>> >
>> > All errors (new ones prefixed by >>):
>> >
>> > ld: vmlinux.o: in function `lwmi_om_fan_get_set':
>> > > > drivers/platform/x86/lenovo/wmi-other.c:206:(.text+0x1b74542): undefined reference to `lwmi_attr_id'
>> > ld: vmlinux.o: in function `lwmi_attr_01_is_supported':
>> > drivers/platform/x86/lenovo/wmi-other.c:1267:(.text+0x1b74fdf): undefined reference to `lwmi_attr_id'
>> > > > ld: drivers/platform/x86/lenovo/wmi-other.c:1270:(.text+0x1b75013): undefined reference to `lwmi_cd01_get_data'
>> > > > ld: drivers/platform/x86/lenovo/wmi-other.c:1283:(.text+0x1b7515b): undefined reference to `lwmi_attr_id'
>> > ld: drivers/platform/x86/lenovo/wmi-other.c:1299:(.text+0x1b752f4): undefined reference to `lwmi_attr_id'
>> > ld: vmlinux.o: in function `lwmi_om_fan_info_collect_cd_fan':
>> > > > drivers/platform/x86/lenovo/wmi-other.c:565:(.text+0x1b75ca3): undefined reference to `lwmi_cd_fan_get_data'
>> > ld: vmlinux.o: in function `lwmi_psy_prop_is_writeable':
>> > drivers/platform/x86/lenovo/wmi-other.c:687:(.text+0x1b75e2f): undefined reference to `lwmi_attr_id'
>> > > > ld: drivers/platform/x86/lenovo/wmi-other.c:690:(.text+0x1b75e5a): undefined reference to `lwmi_cd00_get_data'
>> > ld: vmlinux.o: in function `lwmi_psy_ext_set_prop':
>> > drivers/platform/x86/lenovo/wmi-other.c:649:(.text+0x1b75f9b): undefined reference to `lwmi_attr_id'
>> > ld: vmlinux.o: in function `lwmi_psy_ext_get_prop':
>> > drivers/platform/x86/lenovo/wmi-other.c:603:(.text+0x1b761aa): undefined reference to `lwmi_attr_id'
>> > ld: vmlinux.o: in function `lwmi_other_probe':
>> > > > drivers/platform/x86/lenovo/wmi-other.c:1612:(.text+0x1b764eb): undefined reference to `lwmi_cd_match_add_all'
>> > ld: vmlinux.o: in function `lwmi_om_fan_info_collect_cd00':
>> > drivers/platform/x86/lenovo/wmi-other.c:540:(.text+0x1b7680f): undefined reference to `lwmi_attr_id'
>> > ld: drivers/platform/x86/lenovo/wmi-other.c:540:(.text+0x1b76838): undefined reference to `lwmi_cd00_get_data'
>> > ld: vmlinux.o: in function `lwmi_om_ps_ext_init':
>> > > > drivers/platform/x86/lenovo/wmi-other.c:806:(.text+0x1b76a57): undefined reference to `devm_battery_hook_register'
>> > ld: vmlinux.o: in function `lwmi_om_fw_attr_add':
>> > > > drivers/platform/x86/lenovo/wmi-other.c:1474:(.text+0x1b76afa): undefined reference to `firmware_attributes_class'
>> > ld: vmlinux.o: in function `attr_current_value_show':
>> > drivers/platform/x86/lenovo/wmi-other.c:1225:(.text+0x1b77015): undefined reference to `lwmi_attr_id'
>> > ld: vmlinux.o: in function `attr_current_value_store':
>> > drivers/platform/x86/lenovo/wmi-other.c:1165:(.text+0x1b776e2): undefined reference to `lwmi_attr_id'
>> > ld: drivers/platform/x86/lenovo/wmi-other.c:1168:(.text+0x1b7771c): undefined reference to `lwmi_cd01_get_data'
>> > ld: drivers/platform/x86/lenovo/wmi-other.c:1179:(.text+0x1b7781e): undefined reference to `lwmi_attr_id'
>> > ld: vmlinux.o: in function `attr_capdata01_show':
>> > drivers/platform/x86/lenovo/wmi-other.c:1099:(.text+0x1b77e38): undefined reference to `lwmi_attr_id'
>> > ld: drivers/platform/x86/lenovo/wmi-other.c:1102:(.text+0x1b77e67): undefined reference to `lwmi_cd01_get_data'
>> >
>> > Kconfig warnings: (for reference only)
>> > WARNING: unmet direct dependencies detected for LENOVO_WMI_TUNING
>
>When randconfig selects symbols, some are selected by the randomizer,
>while some are selected by Kconfig `select SYMBOL'. In this lkp test,
>CONFIG_LENOVO_WMI_GAMEZONE=y was selected by the randomizer, while
>CONFIG_LENOVO_WMI_TUNING=y was selected by `select LENOVO_WMI_TUNING' in
>`config LENOVO_WMI_GAMEZONE'.
>
>Documentation/kbuild/kconfig-language.rst says "select will force a
>symbol to a value without visiting the dependencies", resulting in unmet
>dependencies in this test and
>https://lore.kernel.org/r/202603252259.gHvJDyh3-lkp@intel.com
>
>> > Depends on [m]: X86_PLATFORM_DEVICES [=y] && ACPI_WMI [=y] && ACPI_BATTERY [=m]
>> > Selected by [y]:
>> > - LENOVO_WMI_GAMEZONE [=y] && X86_PLATFORM_DEVICES [=y] && ACPI_WMI [=y] && DMI [=y]
>> >
>> >
>> > vim +206 drivers/platform/x86/lenovo/wmi-other.c
>> >
>> > 51ed34282f63fa Rong Zhang 2026-01-21 186
>> > 51ed34282f63fa Rong Zhang 2026-01-21 187 /**
>> > 51ed34282f63fa Rong Zhang 2026-01-21 188 * lwmi_om_fan_get_set() - Get or set fan RPM value of specified fan
>> > 51ed34282f63fa Rong Zhang 2026-01-21 189 * @priv: Driver private data structure
>> > 51ed34282f63fa Rong Zhang 2026-01-21 190 * @channel: Fan channel index (0-based)
>> > 51ed34282f63fa Rong Zhang 2026-01-21 191 * @val: Pointer to value (input for set, output for get)
>> > 51ed34282f63fa Rong Zhang 2026-01-21 192 * @set: True to set value, false to get value
>> > 51ed34282f63fa Rong Zhang 2026-01-21 193 *
>> > 51ed34282f63fa Rong Zhang 2026-01-21 194 * Communicates with WMI interface to either retrieve current fan RPM
>> > 51ed34282f63fa Rong Zhang 2026-01-21 195 * or set target fan RPM.
>> > 51ed34282f63fa Rong Zhang 2026-01-21 196 *
>> > 51ed34282f63fa Rong Zhang 2026-01-21 197 * Return: 0 on success, or an error code.
>> > 51ed34282f63fa Rong Zhang 2026-01-21 198 */
>> > 51ed34282f63fa Rong Zhang 2026-01-21 199 static int lwmi_om_fan_get_set(struct lwmi_om_priv *priv, int channel, u32 *val, bool set)
>> > 51ed34282f63fa Rong Zhang 2026-01-21 200 {
>> > 51ed34282f63fa Rong Zhang 2026-01-21 201 struct wmi_method_args_32 args;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 202 u32 method_id, retval;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 203 int err;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 204
>> > 51ed34282f63fa Rong Zhang 2026-01-21 205 method_id = set ? LWMI_FEATURE_VALUE_SET : LWMI_FEATURE_VALUE_GET;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 @206 args.arg0 = LWMI_ATTR_ID_FAN_RPM(channel);
>> > 51ed34282f63fa Rong Zhang 2026-01-21 207 args.arg1 = set ? *val : 0;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 208
>> > 51ed34282f63fa Rong Zhang 2026-01-21 209 err = lwmi_dev_evaluate_int(priv->wdev, 0x0, method_id,
>> > 51ed34282f63fa Rong Zhang 2026-01-21 210 (unsigned char *)&args, sizeof(args), &retval);
>> > 51ed34282f63fa Rong Zhang 2026-01-21 211 if (err)
>> > 51ed34282f63fa Rong Zhang 2026-01-21 212 return err;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 213
>> > 51ed34282f63fa Rong Zhang 2026-01-21 214 if (!set) {
>> > 51ed34282f63fa Rong Zhang 2026-01-21 215 *val = retval;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 216 return 0;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 217 }
>> > 51ed34282f63fa Rong Zhang 2026-01-21 218
>> > 51ed34282f63fa Rong Zhang 2026-01-21 219 /*
>> > 51ed34282f63fa Rong Zhang 2026-01-21 220 * It seems that 0 means "no error" and 1 means "done". Apparently
>> > 51ed34282f63fa Rong Zhang 2026-01-21 221 * different firmware teams have different thoughts on indicating
>> > 51ed34282f63fa Rong Zhang 2026-01-21 222 * success, so we accepts both.
>> > 51ed34282f63fa Rong Zhang 2026-01-21 223 */
>> > 51ed34282f63fa Rong Zhang 2026-01-21 224 return (retval == 0 || retval == 1) ? 0 : -EIO;
>> > 51ed34282f63fa Rong Zhang 2026-01-21 225 }
>> > 51ed34282f63fa Rong Zhang 2026-01-21 226
>> >
>> > --
>> > 0-DAY CI Kernel Test Service
>> > https://github.com/intel/lkp-tests/wiki
>>
>> Can someone explain to me why this is happening? I cannot reproduce
>> these locally with W=1 and/or C=1. I'd prefer to resolve this before
>> submitting a v6.
>
>The issue exists since commit 6e38b9fcbfa3 ('platform/x86: lenovo:
>gamezone needs "other mode"'). It might be a coincidence that lkp didn't
>running into a similar issue before. IMO `select LENOVO_WMI_TUNING'
>shouldn't be used in the first place since LENOVO_WMI_TUNING has
>numerous dependencies.
>
>To fix this, we need to decouple lenovo-wmi-gamezone and lenovo-wmi-
>other by moving the notifier chain into lenovo-wmi-helpers. I will reply
>with a patch soon. Fell free to integrate it into your series.
>
>Note that I couldn't completely test my patch since the lack of gamezone
>support on my device.
>
>BTW, the fix patch has conflicts with my debugfs series since both touch
>lenovo-wmi-helpers. If you decide to integrate the fix patch into your
>series, could you integrate the debugfs series into yours too? The
>conflicts are trivial and contextual. You can resolve them yourself if
>you don't mind it ;-)
>
>Thanks,
>Rong
>
Absolutely, that's a good plan. If you want, send the new patch to me directly. Also, please leave a note on that other series in case Ilpo doesn't see this first.
And thanks for the clear explanation. Hopefully it all works like we expect.
Cheers,
Derek
>>
>> Thanks,
>> Derek
next prev parent reply other threads:[~2026-03-26 16:20 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-24 22:10 [PATCH v5 0/8] platform-x86: lenovo-wmi: Add fixes and enhancement Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 1/8] platform-x86: lenovo-wmi-other: Move LWMI_FAN_DIV Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 2/8] platform-x86: lenovo-wmi-other: Fix tunable_attr_01 struct members Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 3/8] platform/x86: lenovo-wmi-other: Add lwmi_attr_id() function Derek J. Clark
2026-03-25 17:54 ` Rong Zhang
2026-03-25 18:15 ` Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 4/8] platform/x86: lenovo-wmi-other: Limit adding attributes to supported devices Derek J. Clark
2026-03-25 17:59 ` Rong Zhang
2026-03-24 22:10 ` [PATCH v5 5/8] platform/x86: lenovo-wmi-other: Add missing CPU tunable attributes Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 6/8] platform/x86: lenovo-wmi-other: Add GPU " Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 7/8] platform-x86: lenovo-wmi-other: Rename LWMI_OM_FW_ATTR_BASE_PATH Derek J. Clark
2026-03-24 22:10 ` [PATCH v5 8/8] platform/x86: lenovo-wmi-other: Add WMI battery charge limiting Derek J. Clark
2026-03-25 14:28 ` kernel test robot
2026-03-25 18:03 ` Rong Zhang
2026-03-25 19:42 ` kernel test robot
2026-03-26 2:12 ` Derek John Clark
2026-03-26 16:12 ` Rong Zhang
2026-03-26 16:17 ` [PATCH] platform/x86: lenovo: Decouple lenovo-wmi-gamezone and lenovo-wmi-other Rong Zhang
2026-03-27 11:25 ` Ilpo Järvinen
2026-03-27 15:16 ` Rong Zhang
2026-03-30 20:04 ` Derek John Clark
2026-03-31 16:07 ` Rong Zhang
2026-03-26 16:20 ` Derek J. Clark [this message]
2026-03-25 18:08 ` [PATCH v5 0/8] platform-x86: lenovo-wmi: Add fixes and enhancement 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=70895A3D-4A84-403E-A3BF-8730AEE03F6E@gmail.com \
--to=derekjohn.clark@gmail.com \
--cc=W_Armin@gmx.de \
--cc=corbet@lwn.net \
--cc=hansg@kernel.org \
--cc=i@rong.moe \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=kuurtb@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=mpearson-lenovo@squebb.ca \
--cc=oe-kbuild-all@lists.linux.dev \
--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®