Re: [PATCH v2 2/3] thermal: hwmon: Register a hwmon device for each thermal zone
"Rafael J. Wysocki" <[email protected]> Tue, 5 May 2026 17:14:22 +0200
| Newsgroups | dev.linux.lists.sashiko,org.kernel.vger.linux-hwmon |
|---|---|
| Message-ID | <CAJZ5v0gcatfUYocWViAZjs=BkqSz-JK+bECm2cpanv9NrWgfnw@mail.gmail.com> |
On Tue, May 5, 2026 at 4:59 PM Guenter Roeck <[email protected]> wrote: > > On 5/5/26 07:40, Rafael J. Wysocki wrote: > > On Tue, May 5, 2026 at 2:41 PM <[email protected]> wrote: > >> > >> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > >> - [Critical] Changing the hwmon device name and splitting aggregate devices breaks userspace hwmon tools and configurations. > >> -- > >> > >> commit ef04f4845b76df7ab7442699654ee8214cc3a4ea > >> Author: Rafael J. Wysocki <[email protected]> > >> > >> thermal: hwmon: Register a hwmon device for each thermal zone > >> > >> The current code creates one hwmon device per thermal zone type and registers > >> it under the first thermal zone of that type. This commit addresses removal > >> issues by registering one hwmon device for each thermal zone individually, > >> appending the zone ID to the hwmon name, and giving each its own temp1_input. > >> > >> Link: https://lore.kernel.org/linux-pm/[email protected]/ > >> > >>> diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c > >>> index 597c33c8a5550..223ae1571655b 100644 > >>> --- a/drivers/thermal/thermal_hwmon.c > >>> +++ b/drivers/thermal/thermal_hwmon.c > >> > >> [ ... ] > >> > >>> @@ -137,54 +101,39 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) > >>> { > >>> struct thermal_hwmon_device *hwmon; > >>> struct thermal_hwmon_temp *temp; > >>> - int new_hwmon_device = 1; > >>> int result; > >>> > >>> - hwmon = thermal_hwmon_lookup_by_type(tz); > >>> - if (hwmon) { > >>> - new_hwmon_device = 0; > >>> - goto register_sys_interface; > >>> - } > >>> - > >>> hwmon = kzalloc_obj(*hwmon); > >>> if (!hwmon) > >>> return -ENOMEM; > >>> > >>> - INIT_LIST_HEAD(&hwmon->tz_list); > >>> - strscpy(hwmon->type, tz->type, THERMAL_NAME_LENGTH); > >>> - strreplace(hwmon->type, '-', '_'); > >>> + /* > >>> + * Append the thermal zone ID preceded by an underline character to the > >>> + * type to disambiguate the sensors command output. > >>> + */ > >>> + scnprintf(hwmon->name, THERMAL_HWMON_NAME_LENGTH, "%s_%d", tz->type, tz->id); > >>> + strreplace(hwmon->name, '-', '_'); > >> > >> Could this change to the hwmon name attribute cause a regression for userspace > >> tools? > >> > >> Tools and configuration files, such as sensors.conf, typically use the name > >> attribute for matching devices (for example, matching acpitz-*). Appending an > >> instance-specific ID to the name might prevent these configurations from > >> applying correctly. > > > > Or not. > > > >>> hwmon->device = hwmon_device_register_for_thermal(&tz->device, > >>> - hwmon->type, hwmon); > >>> + hwmon->name, hwmon); > >>> if (IS_ERR(hwmon->device)) { > >>> result = PTR_ERR(hwmon->device); > >>> goto free_mem; > >>> } > >>> > >>> - register_sys_interface: > >>> - temp = kzalloc_obj(*temp); > >>> - if (!temp) { > >>> - result = -ENOMEM; > >>> - goto unregister_name; > >>> - } > >>> + temp = &hwmon->tz_temp; > >>> > >>> temp->tz = tz; > >>> - hwmon->count++; > >>> > >>> - snprintf(temp->temp_input.name, sizeof(temp->temp_input.name), > >>> - "temp%d_input", hwmon->count); > >>> - temp->temp_input.attr.attr.name = temp->temp_input.name; > >>> + temp->temp_input.attr.attr.name = "temp1_input"; > >> > >> Does splitting aggregate devices break existing sysfs access patterns? > >> > >> Previously, a single hwmon device might have contained multiple temperature > >> inputs, like temp1_input and temp2_input. Since each zone now gets its own > >> hwmon device with only a temp1_input, scripts or tools that explicitly read > >> temp2_input from the old aggregate device path will likely fail with a missing > >> file error. > > > > Does this happen in practice though? > > > I guess we'll see. Right.