Re: [PATCH v1 07/10] ACPI: thermal: Use cooling device parent for thermal zone binding
From: Rafael J. Wysocki (Intel)
Date: Fri Sep 11 2026 - 13:04:10 EST
On Fri, Sep 11, 2026 at 6:36 PM Andy Shevchenko
<andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
>
> On Fri, Sep 11, 2026 at 03:05:07PM +0200, Rafael J. Wysocki wrote:
>
> > The ACPI thermal zone .should_bind() callback function,
> > acpi_thermal_should_bind_cdev(), expects the given cooling device's
> > devdata to point to an ACPI device object whose ACPI handle should be
> > compared with ACPI handles in a list associated with the given trip
> > point. That is not particularly straightforward and it effectively
> > requires the drivers of ACPI cooling devices to populate the devdata
> > with addresses of the ACPI companions of the devices they bind to.
> > Consequently, the devdata cannot be used by the driver for its own
> > needs which is its intended purpose.
> >
> > That can be overcome with the help of the observation that the
> > ACPI device objects to be matched against the lists of ACPI handles
> > associated with trip points are in fact the ACPI companions of the
> > parents of cooling devices. Thus instead of using the given cooling
> > device's devdata, it is sufficient to obtain the ACPI handle of its
> > parent and compare that ACPI handle with the ones in the list
> > associated with the given trip point.
>
> ...
>
> > + parent_handle = ACPI_HANDLE(parent);
> >
> > - if (acpi_fetch_acpi_dev(handle) == cdev_adev)
> > + for (i = 0; i < acpi_trip->devices.count; i++) {
> > + if (acpi_trip->devices.handles[i] == parent_handle)
>
> device_match_acpi_handle() ?
That would cause ACPI_HANDLE() to be evaluated
acpi_trip->devices.count times for the parent whereas only one
evaluation is necessary, so not really.
> if (device_match_acpi_handle(parent, acpi_trip->devices.handles[i]))
>
> > return true;
> > }