From: sashiko-bot@kernel.org
To: "Birk Skyum" <birk.skyum@pm.me>
Cc: linux-hwmon@vger.kernel.org
Subject: Re: [RFC PATCH v2 1/2] platform: arm64: qcom-hamoa-ec: monitor Slim 7x legacy sensors
Date: Tue, 08 Sep 2026 14:08:33 +0000 [thread overview]
Message-ID: <20260908140849.229ED1F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260908135801.81436-2-birk.skyum@pm.me>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
New issues:
- [Low] Hardware monitoring device is registered directly from a platform driver, violating HWMON subsystem layering rules.
- [Low] The modified struct i2c_device_id array does not use named initializers.
Pre-existing issues:
- [High] Missing unwind for qcom_ec_sci_evt_control on probe error paths.
--
commit f56d14065bf54cf3279988ab062adb53bc90787e
Author: Birk Skyum <birk.skyum@pm.me>
platform: arm64: qcom-hamoa-ec: monitor Slim 7x legacy sensors
This commit adds monitoring for legacy sensors on the Yoga Slim 7x EC.
It exposes a read-only path for the Lenovo compatible device to expose fan
RPM and thermistor via hwmon. The strict capability validation on reference
boards is kept unchanged.
Link: https://github.com/aarch64-laptops/build/blob/2e58842f5fa2f87771c2df017ae4d8c65225ef10/misc/lenovo-yoga-slim-7x/acpi/dsdt.dsl
Link: https://lkml.iu.edu/hypermail/linux/kernel/2607.3/08806.html
> diff --git a/drivers/platform/arm64/qcom-hamoa-ec.c b/drivers/platform/arm64/qcom-hamoa-ec.c
> index 4d2ad042a7f84..3a4ca8a0de5c8 100644
> --- a/drivers/platform/arm64/qcom-hamoa-ec.c
> +++ b/drivers/platform/arm64/qcom-hamoa-ec.c
[ ... ]
> +static int qcom_ec_hwmon_probe(struct qcom_ec *ec)
> +{
> + struct device *dev = &ec->client->dev;
> + struct device *hwmon;
> + long rpm;
> + int ret;
> +
> + if (!i2c_check_functionality(ec->client->adapter,
> + I2C_FUNC_I2C | I2C_FUNC_SMBUS_READ_BYTE_DATA))
> + return -EOPNOTSUPP;
> +
> + ret = qcom_ec_read_fan_rpm(ec, &rpm);
> + if (ret)
> + return dev_err_probe(dev, ret, "Failed to read fan RPM\n");
> +
> + hwmon = devm_hwmon_device_register_with_info(dev, "qcom_ec", ec,
> + &qcom_ec_hwmon_chip_info, NULL);
[Severity: Low]
Does this code register a hardware monitoring device directly from a platform
driver? The subsystem guidelines explicitly require hwmon functionality of
multi-function chips to be implemented as an auxiliary device driver in
drivers/hwmon/ rather than directly in drivers/platform/arm64/.
> + return PTR_ERR_OR_ZERO(hwmon);
> +}
[ ... ]
> @@ -356,14 +481,24 @@ static int qcom_ec_probe(struct i2c_client *client)
[ ... ]
> ret = qcom_ec_sci_evt_control(dev, true);
> if (ret < 0)
> return dev_err_probe(dev, ret, "Failed to enable SCI events\n");
>
> ret = qcom_ec_thermal_capabilities(dev);
> if (ret < 0)
> return dev_err_probe(dev, ret, "Failed to read thermal capabilities\n");
>
> if (ec->thermal_cap.fan_cnt == 0) {
> dev_warn(dev, FW_BUG "Failed to get fan count, firmware update required\n");
> return 0;
> }
>
> ec->ec_cdev = devm_kcalloc(dev, ec->thermal_cap.fan_cnt, sizeof(*ec->ec_cdev), GFP_KERNEL);
> if (!ec->ec_cdev)
> return -ENOMEM;
[Severity: High]
This is a pre-existing issue, but does this code leave SCI events enabled on
error paths during probe? If qcom_ec_thermal_capabilities() or devm_kcalloc()
fail in qcom_ec_probe() after qcom_ec_sci_evt_control(dev, true) is called,
it returns an error without unwinding the EC SCI events configuration.
Could this leave the hardware generating unhandled SCI interrupts for a driver
that was not successfully loaded?
[ ... ]
> @@ -421,14 +559,21 @@ static void qcom_ec_remove(struct i2c_client *client)
[ ... ]
> static const struct i2c_device_id qcom_ec_i2c_id_table[] = {
> - { "qcom-hamoa-ec", },
> + { "qcom-hamoa-ec", (kernel_ulong_t)&qcom_ec_reference },
[Severity: Low]
Does this array element fail to use named initializers for struct
i2c_device_id? The I2C subsystem guidelines mandate that initialized arrays of
this type must use named initializers (e.g., .name = ..., .driver_data = ...).
> {}
> };
> MODULE_DEVICE_TABLE(i2c, qcom_ec_i2c_id_table);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260908135801.81436-1-birk.skyum@pm.me?part=1
next prev parent reply other threads:[~2026-09-08 14:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 13:58 [RFC PATCH v2 0/2] Monitor Yoga Slim 7x EC sensors without taking over cooling Birk Skyum
2026-09-08 13:58 ` [RFC PATCH v2 1/2] platform: arm64: qcom-hamoa-ec: monitor Slim 7x legacy sensors Birk Skyum
2026-09-08 14:08 ` sashiko-bot [this message]
2026-09-08 14:36 ` Birk Skyum
2026-09-09 4:58 ` Anvesh Jain P
2026-09-08 13:58 ` [RFC PATCH v2 2/2] platform: arm64: qcom-hamoa-ec: test sensor and variant handling Birk Skyum
2026-09-08 14:20 ` sashiko-bot
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=20260908140849.229ED1F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=birk.skyum@pm.me \
--cc=linux-hwmon@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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.