mbox series

[v4,0/6] Thermal zone device structure encapsulation

Message ID 20230419083343.505780-1-daniel.lezcano@linaro.org (mailing list archive)
Headers show
Series Thermal zone device structure encapsulation | expand

Message

Daniel Lezcano April 19, 2023, 8:33 a.m. UTC
The thermal zone device structure is defined in the exported thermal
header include/linux/thermal.h

Given the definition being public, the structure is exposed to the
external components other than the thermal framework core code. It
results the drivers are tampering the structure internals like taking
the lock or changing the field values.

Obviously that is bad for several reasons as the drivers can hook the
thermal framework behavior and makes very difficult the changes in the
core code as external components depend on it directly.

Moreover, the thermal trip points being reworked, we don't want the
drivers to access the trips array directly in the thermal zone
structure and doing assumptions on how they are organized.

This series provides a second set of changes moving to the thermal
zone device structure self-encapsulation.

The ACPI and the Menlon drivers are using the thermal zone's device
fields to create symlinks and new attributes in the sysfs thermal zone
directory. These changes provide a hopefully temporary wrapper to
access it in order to allow moving forward in the thermal zone device
self-encapsulation and a Kconfig option to disable by default such a
extra sysfs information.

Changelog:
	v4:
	- Encapsulate extra sysfs information inside a function for
          ACPI but remove the Kconfig option
	- Encapsulate extra sysfs information inside a function,
          create the stubs and put that conditionnal to a Kconfig
          option for Menlow
	v3:
	- Split the Kconfig option to be driver related when disabling
          the specific attributes
	- Use the thermal zone's device wrapper to write a trace in
          the pch intel driver
	v2:
	- Add the Kconfig option to remove specific attributes
	- Add a thermal_zone_device() wrapper to access tz->device

Daniel Lezcano (6):
  thermal/core: Encapsulate tz->device field
  thermal/drivers/intel_pch_thermal: Use thermal driver device to write
    a trace
  thermal/drivers/acpi: Use thermal_zone_device()
  thermal/drivers/menlow: Use thermal_zone_device()
  thermal/drivers/acpi: Move to dedicated function sysfs extra attr
    creation
  thermal/drivers/intel_menlow: Make additionnal sysfs information
    optional

 drivers/acpi/thermal.c                    | 47 +++++++++++++++--------
 drivers/thermal/intel/Kconfig             | 11 ++++++
 drivers/thermal/intel/intel_menlow.c      | 18 +++++++--
 drivers/thermal/intel/intel_pch_thermal.c |  3 +-
 drivers/thermal/thermal_core.c            |  6 +++
 include/linux/thermal.h                   |  1 +
 6 files changed, 67 insertions(+), 19 deletions(-)

Comments

Rafael J. Wysocki April 27, 2023, 5:23 p.m. UTC | #1
On Wed, Apr 19, 2023 at 10:33 AM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>
> The thermal zone device structure is defined in the exported thermal
> header include/linux/thermal.h
>
> Given the definition being public, the structure is exposed to the
> external components other than the thermal framework core code. It
> results the drivers are tampering the structure internals like taking
> the lock or changing the field values.
>
> Obviously that is bad for several reasons as the drivers can hook the
> thermal framework behavior and makes very difficult the changes in the
> core code as external components depend on it directly.
>
> Moreover, the thermal trip points being reworked, we don't want the
> drivers to access the trips array directly in the thermal zone
> structure and doing assumptions on how they are organized.
>
> This series provides a second set of changes moving to the thermal
> zone device structure self-encapsulation.
>
> The ACPI and the Menlon drivers are using the thermal zone's device
> fields to create symlinks and new attributes in the sysfs thermal zone
> directory. These changes provide a hopefully temporary wrapper to
> access it in order to allow moving forward in the thermal zone device
> self-encapsulation and a Kconfig option to disable by default such a
> extra sysfs information.
>
> Changelog:
>         v4:
>         - Encapsulate extra sysfs information inside a function for
>           ACPI but remove the Kconfig option
>         - Encapsulate extra sysfs information inside a function,
>           create the stubs and put that conditionnal to a Kconfig
>           option for Menlow
>         v3:
>         - Split the Kconfig option to be driver related when disabling
>           the specific attributes
>         - Use the thermal zone's device wrapper to write a trace in
>           the pch intel driver
>         v2:
>         - Add the Kconfig option to remove specific attributes
>         - Add a thermal_zone_device() wrapper to access tz->device
>
> Daniel Lezcano (6):
>   thermal/core: Encapsulate tz->device field
>   thermal/drivers/intel_pch_thermal: Use thermal driver device to write
>     a trace
>   thermal/drivers/acpi: Use thermal_zone_device()
>   thermal/drivers/menlow: Use thermal_zone_device()
>   thermal/drivers/acpi: Move to dedicated function sysfs extra attr
>     creation
>   thermal/drivers/intel_menlow: Make additionnal sysfs information
>     optional
>
>  drivers/acpi/thermal.c                    | 47 +++++++++++++++--------
>  drivers/thermal/intel/Kconfig             | 11 ++++++
>  drivers/thermal/intel/intel_menlow.c      | 18 +++++++--
>  drivers/thermal/intel/intel_pch_thermal.c |  3 +-
>  drivers/thermal/thermal_core.c            |  6 +++
>  include/linux/thermal.h                   |  1 +
>  6 files changed, 67 insertions(+), 19 deletions(-)
>
> --

Patches [4/6] and [6/6] were superseded by the Menlow driver removal.

I've applied the rest as 6.4-rc material, with some subject
adjustments and after removing some trailing white space in a few
places.

Thanks!
Daniel Lezcano April 27, 2023, 8:53 p.m. UTC | #2
On 27/04/2023 19:23, Rafael J. Wysocki wrote:
> On Wed, Apr 19, 2023 at 10:33 AM Daniel Lezcano
> <daniel.lezcano@linaro.org> wrote:
>>
>> The thermal zone device structure is defined in the exported thermal
>> header include/linux/thermal.h
>>
>> Given the definition being public, the structure is exposed to the
>> external components other than the thermal framework core code. It
>> results the drivers are tampering the structure internals like taking
>> the lock or changing the field values.
>>
>> Obviously that is bad for several reasons as the drivers can hook the
>> thermal framework behavior and makes very difficult the changes in the
>> core code as external components depend on it directly.
>>
>> Moreover, the thermal trip points being reworked, we don't want the
>> drivers to access the trips array directly in the thermal zone
>> structure and doing assumptions on how they are organized.
>>
>> This series provides a second set of changes moving to the thermal
>> zone device structure self-encapsulation.
>>
>> The ACPI and the Menlon drivers are using the thermal zone's device
>> fields to create symlinks and new attributes in the sysfs thermal zone
>> directory. These changes provide a hopefully temporary wrapper to
>> access it in order to allow moving forward in the thermal zone device
>> self-encapsulation and a Kconfig option to disable by default such a
>> extra sysfs information.
>>

[ ... ]

> Patches [4/6] and [6/6] were superseded by the Menlow driver removal.
> 
> I've applied the rest as 6.4-rc material, with some subject
> adjustments and after removing some trailing white space in a few
> places.


Thanks!