mbox series

[v2,00/14] thermal OF rework

Message ID 20220507125443.2766939-1-daniel.lezcano@linexp.org
Headers show
Series thermal OF rework | expand

Message

Daniel Lezcano May 7, 2022, 12:54 p.m. UTC
The thermal framework initialization with the device tree appears to
be complicated and hard to make it to evolve.

It contains duplication of almost the same thermal generic structures
and has an assymetric initialization making hard any kind of serious
changes for more complex features. One of them is the multiple sensors
support per thermal zone.

In order to set the scene for the aforementioned feature with generic
code, we need to cleanup and rework the device tree initialization.

However this rework is not obvious because of the multiple components
entering in the composition of a thermal zone and being initialized at
different moments. For instance, a cooling device can be initialized
before a sensor, so the thermal zones must exist before the cooling
device as well as the sensor. This asynchonous initialization forces
the thermal zone to be created with fake ops because they are
mandotory and build a list of cooling devices which is used to lookup
afterwards when the cooling device driver is registering itself.

As there could be a large number of changes, this first series provide
some steps forward for a simpler device tree initialization.

Changelog:
 - V2:
   - Drop patch 1/15 which contains too many changes for a simple
     structure renaming. This could be addressed in a separate series as
     it is not necessary for the OF rework
     
   - Fixed of_node_put with gchild not initialized as reported by
     kbuild and Dan Carpenter

 - V1:
   - Initial post

Daniel Lezcano (14):
  thermal/core: Change thermal_zone_ops to thermal_sensor_ops
  thermal/core: Add a thermal sensor structure in the thermal zone
  thermal/core: Remove duplicate information when an error occurs
  thermal/of: Replace device node match with device node search
  thermal/of: Remove the device node pointer for thermal_trip
  thermal/of: Move thermal_trip structure to thermal.h
  thermal/core: Remove unneeded EXPORT_SYMBOLS
  thermal/core: Move thermal_set_delay_jiffies to static
  thermal/core: Rename trips to ntrips
  thermal/core: Add thermal_trip in thermal_zone
  thermal/core: Register with the trip points
  thermal/of: Store the trips in the thermal zone
  thermal/of: Use thermal trips stored in the thermal zone
  thermal/of: Initialize trip points separately

 .../driver-api/thermal/sysfs-api.rst          |   2 +-
 drivers/acpi/thermal.c                        |   6 +-
 .../ethernet/chelsio/cxgb4/cxgb4_thermal.c    |   2 +-
 .../ethernet/mellanox/mlxsw/core_thermal.c    |   6 +-
 drivers/net/wireless/intel/iwlwifi/mvm/tt.c   |   2 +-
 drivers/platform/x86/acerhdf.c                |   2 +-
 drivers/power/supply/power_supply_core.c      |   2 +-
 drivers/thermal/armada_thermal.c              |   2 +-
 drivers/thermal/broadcom/bcm2835_thermal.c    |   2 +-
 drivers/thermal/da9062-thermal.c              |   2 +-
 drivers/thermal/dove_thermal.c                |   2 +-
 drivers/thermal/gov_bang_bang.c               |   6 +-
 drivers/thermal/gov_fair_share.c              |  10 +-
 drivers/thermal/gov_power_allocator.c         |  22 +-
 drivers/thermal/gov_step_wise.c               |   4 +-
 drivers/thermal/imx_thermal.c                 |   2 +-
 .../intel/int340x_thermal/int3400_thermal.c   |   2 +-
 .../int340x_thermal/int340x_thermal_zone.c    |   6 +-
 .../int340x_thermal/int340x_thermal_zone.h    |   4 +-
 .../processor_thermal_device.c                |   4 +-
 .../processor_thermal_device_pci.c            |   2 +-
 drivers/thermal/intel/intel_pch_thermal.c     |   2 +-
 .../thermal/intel/intel_quark_dts_thermal.c   |   2 +-
 drivers/thermal/intel/intel_soc_dts_iosf.c    |   2 +-
 drivers/thermal/intel/x86_pkg_temp_thermal.c  |   2 +-
 drivers/thermal/kirkwood_thermal.c            |   2 +-
 drivers/thermal/rcar_gen3_thermal.c           |   6 +-
 drivers/thermal/rcar_thermal.c                |   4 +-
 drivers/thermal/samsung/exynos_tmu.c          |   6 +-
 drivers/thermal/spear_thermal.c               |   2 +-
 drivers/thermal/st/st_thermal.c               |   2 +-
 drivers/thermal/tegra/soctherm.c              |  10 +-
 drivers/thermal/tegra/tegra30-tsensor.c       |   6 +-
 drivers/thermal/thermal_core.c                | 102 ++++----
 drivers/thermal/thermal_core.h                |  25 +-
 drivers/thermal/thermal_helpers.c             |  35 ++-
 drivers/thermal/thermal_hwmon.c               |   4 +-
 drivers/thermal/thermal_netlink.c             |  10 +-
 drivers/thermal/thermal_of.c                  | 221 ++++++++++--------
 drivers/thermal/thermal_sysfs.c               |  62 ++---
 include/linux/thermal.h                       |  34 ++-
 41 files changed, 341 insertions(+), 290 deletions(-)

Comments

Daniel Lezcano May 13, 2022, 5:23 p.m. UTC | #1
Hi Rafael,

if you are ok with this series, I'll pick it up.

Is that ok ?




On 07/05/2022 14:54, Daniel Lezcano wrote:
> The thermal framework initialization with the device tree appears to
> be complicated and hard to make it to evolve.
> 
> It contains duplication of almost the same thermal generic structures
> and has an assymetric initialization making hard any kind of serious
> changes for more complex features. One of them is the multiple sensors
> support per thermal zone.
> 
> In order to set the scene for the aforementioned feature with generic
> code, we need to cleanup and rework the device tree initialization.
> 
> However this rework is not obvious because of the multiple components
> entering in the composition of a thermal zone and being initialized at
> different moments. For instance, a cooling device can be initialized
> before a sensor, so the thermal zones must exist before the cooling
> device as well as the sensor. This asynchonous initialization forces
> the thermal zone to be created with fake ops because they are
> mandotory and build a list of cooling devices which is used to lookup
> afterwards when the cooling device driver is registering itself.
> 
> As there could be a large number of changes, this first series provide
> some steps forward for a simpler device tree initialization.
> 
> Changelog:
>   - V2:
>     - Drop patch 1/15 which contains too many changes for a simple
>       structure renaming. This could be addressed in a separate series as
>       it is not necessary for the OF rework
>       
>     - Fixed of_node_put with gchild not initialized as reported by
>       kbuild and Dan Carpenter
> 
>   - V1:
>     - Initial post
> 
> Daniel Lezcano (14):
>    thermal/core: Change thermal_zone_ops to thermal_sensor_ops
>    thermal/core: Add a thermal sensor structure in the thermal zone
>    thermal/core: Remove duplicate information when an error occurs
>    thermal/of: Replace device node match with device node search
>    thermal/of: Remove the device node pointer for thermal_trip
>    thermal/of: Move thermal_trip structure to thermal.h
>    thermal/core: Remove unneeded EXPORT_SYMBOLS
>    thermal/core: Move thermal_set_delay_jiffies to static
>    thermal/core: Rename trips to ntrips
>    thermal/core: Add thermal_trip in thermal_zone
>    thermal/core: Register with the trip points
>    thermal/of: Store the trips in the thermal zone
>    thermal/of: Use thermal trips stored in the thermal zone
>    thermal/of: Initialize trip points separately
> 
>   .../driver-api/thermal/sysfs-api.rst          |   2 +-
>   drivers/acpi/thermal.c                        |   6 +-
>   .../ethernet/chelsio/cxgb4/cxgb4_thermal.c    |   2 +-
>   .../ethernet/mellanox/mlxsw/core_thermal.c    |   6 +-
>   drivers/net/wireless/intel/iwlwifi/mvm/tt.c   |   2 +-
>   drivers/platform/x86/acerhdf.c                |   2 +-
>   drivers/power/supply/power_supply_core.c      |   2 +-
>   drivers/thermal/armada_thermal.c              |   2 +-
>   drivers/thermal/broadcom/bcm2835_thermal.c    |   2 +-
>   drivers/thermal/da9062-thermal.c              |   2 +-
>   drivers/thermal/dove_thermal.c                |   2 +-
>   drivers/thermal/gov_bang_bang.c               |   6 +-
>   drivers/thermal/gov_fair_share.c              |  10 +-
>   drivers/thermal/gov_power_allocator.c         |  22 +-
>   drivers/thermal/gov_step_wise.c               |   4 +-
>   drivers/thermal/imx_thermal.c                 |   2 +-
>   .../intel/int340x_thermal/int3400_thermal.c   |   2 +-
>   .../int340x_thermal/int340x_thermal_zone.c    |   6 +-
>   .../int340x_thermal/int340x_thermal_zone.h    |   4 +-
>   .../processor_thermal_device.c                |   4 +-
>   .../processor_thermal_device_pci.c            |   2 +-
>   drivers/thermal/intel/intel_pch_thermal.c     |   2 +-
>   .../thermal/intel/intel_quark_dts_thermal.c   |   2 +-
>   drivers/thermal/intel/intel_soc_dts_iosf.c    |   2 +-
>   drivers/thermal/intel/x86_pkg_temp_thermal.c  |   2 +-
>   drivers/thermal/kirkwood_thermal.c            |   2 +-
>   drivers/thermal/rcar_gen3_thermal.c           |   6 +-
>   drivers/thermal/rcar_thermal.c                |   4 +-
>   drivers/thermal/samsung/exynos_tmu.c          |   6 +-
>   drivers/thermal/spear_thermal.c               |   2 +-
>   drivers/thermal/st/st_thermal.c               |   2 +-
>   drivers/thermal/tegra/soctherm.c              |  10 +-
>   drivers/thermal/tegra/tegra30-tsensor.c       |   6 +-
>   drivers/thermal/thermal_core.c                | 102 ++++----
>   drivers/thermal/thermal_core.h                |  25 +-
>   drivers/thermal/thermal_helpers.c             |  35 ++-
>   drivers/thermal/thermal_hwmon.c               |   4 +-
>   drivers/thermal/thermal_netlink.c             |  10 +-
>   drivers/thermal/thermal_of.c                  | 221 ++++++++++--------
>   drivers/thermal/thermal_sysfs.c               |  62 ++---
>   include/linux/thermal.h                       |  34 ++-
>   41 files changed, 341 insertions(+), 290 deletions(-)
>
Rafael J. Wysocki May 13, 2022, 5:56 p.m. UTC | #2
On Fri, May 13, 2022 at 7:23 PM Daniel Lezcano
<daniel.lezcano@linaro.org> wrote:
>
>
> Hi Rafael,
>
> if you are ok with this series, I'll pick it up.
>
> Is that ok ?

Give me some more time to look at it, please.

I'll respond in the first half of next week.

> On 07/05/2022 14:54, Daniel Lezcano wrote:
> > The thermal framework initialization with the device tree appears to
> > be complicated and hard to make it to evolve.
> >
> > It contains duplication of almost the same thermal generic structures
> > and has an assymetric initialization making hard any kind of serious
> > changes for more complex features. One of them is the multiple sensors
> > support per thermal zone.
> >
> > In order to set the scene for the aforementioned feature with generic
> > code, we need to cleanup and rework the device tree initialization.
> >
> > However this rework is not obvious because of the multiple components
> > entering in the composition of a thermal zone and being initialized at
> > different moments. For instance, a cooling device can be initialized
> > before a sensor, so the thermal zones must exist before the cooling
> > device as well as the sensor. This asynchonous initialization forces
> > the thermal zone to be created with fake ops because they are
> > mandotory and build a list of cooling devices which is used to lookup
> > afterwards when the cooling device driver is registering itself.
> >
> > As there could be a large number of changes, this first series provide
> > some steps forward for a simpler device tree initialization.
> >
> > Changelog:
> >   - V2:
> >     - Drop patch 1/15 which contains too many changes for a simple
> >       structure renaming. This could be addressed in a separate series as
> >       it is not necessary for the OF rework
> >
> >     - Fixed of_node_put with gchild not initialized as reported by
> >       kbuild and Dan Carpenter
> >
> >   - V1:
> >     - Initial post
> >
> > Daniel Lezcano (14):
> >    thermal/core: Change thermal_zone_ops to thermal_sensor_ops
> >    thermal/core: Add a thermal sensor structure in the thermal zone
> >    thermal/core: Remove duplicate information when an error occurs
> >    thermal/of: Replace device node match with device node search
> >    thermal/of: Remove the device node pointer for thermal_trip
> >    thermal/of: Move thermal_trip structure to thermal.h
> >    thermal/core: Remove unneeded EXPORT_SYMBOLS
> >    thermal/core: Move thermal_set_delay_jiffies to static
> >    thermal/core: Rename trips to ntrips
> >    thermal/core: Add thermal_trip in thermal_zone
> >    thermal/core: Register with the trip points
> >    thermal/of: Store the trips in the thermal zone
> >    thermal/of: Use thermal trips stored in the thermal zone
> >    thermal/of: Initialize trip points separately
> >
> >   .../driver-api/thermal/sysfs-api.rst          |   2 +-
> >   drivers/acpi/thermal.c                        |   6 +-
> >   .../ethernet/chelsio/cxgb4/cxgb4_thermal.c    |   2 +-
> >   .../ethernet/mellanox/mlxsw/core_thermal.c    |   6 +-
> >   drivers/net/wireless/intel/iwlwifi/mvm/tt.c   |   2 +-
> >   drivers/platform/x86/acerhdf.c                |   2 +-
> >   drivers/power/supply/power_supply_core.c      |   2 +-
> >   drivers/thermal/armada_thermal.c              |   2 +-
> >   drivers/thermal/broadcom/bcm2835_thermal.c    |   2 +-
> >   drivers/thermal/da9062-thermal.c              |   2 +-
> >   drivers/thermal/dove_thermal.c                |   2 +-
> >   drivers/thermal/gov_bang_bang.c               |   6 +-
> >   drivers/thermal/gov_fair_share.c              |  10 +-
> >   drivers/thermal/gov_power_allocator.c         |  22 +-
> >   drivers/thermal/gov_step_wise.c               |   4 +-
> >   drivers/thermal/imx_thermal.c                 |   2 +-
> >   .../intel/int340x_thermal/int3400_thermal.c   |   2 +-
> >   .../int340x_thermal/int340x_thermal_zone.c    |   6 +-
> >   .../int340x_thermal/int340x_thermal_zone.h    |   4 +-
> >   .../processor_thermal_device.c                |   4 +-
> >   .../processor_thermal_device_pci.c            |   2 +-
> >   drivers/thermal/intel/intel_pch_thermal.c     |   2 +-
> >   .../thermal/intel/intel_quark_dts_thermal.c   |   2 +-
> >   drivers/thermal/intel/intel_soc_dts_iosf.c    |   2 +-
> >   drivers/thermal/intel/x86_pkg_temp_thermal.c  |   2 +-
> >   drivers/thermal/kirkwood_thermal.c            |   2 +-
> >   drivers/thermal/rcar_gen3_thermal.c           |   6 +-
> >   drivers/thermal/rcar_thermal.c                |   4 +-
> >   drivers/thermal/samsung/exynos_tmu.c          |   6 +-
> >   drivers/thermal/spear_thermal.c               |   2 +-
> >   drivers/thermal/st/st_thermal.c               |   2 +-
> >   drivers/thermal/tegra/soctherm.c              |  10 +-
> >   drivers/thermal/tegra/tegra30-tsensor.c       |   6 +-
> >   drivers/thermal/thermal_core.c                | 102 ++++----
> >   drivers/thermal/thermal_core.h                |  25 +-
> >   drivers/thermal/thermal_helpers.c             |  35 ++-
> >   drivers/thermal/thermal_hwmon.c               |   4 +-
> >   drivers/thermal/thermal_netlink.c             |  10 +-
> >   drivers/thermal/thermal_of.c                  | 221 ++++++++++--------
> >   drivers/thermal/thermal_sysfs.c               |  62 ++---
> >   include/linux/thermal.h                       |  34 ++-
> >   41 files changed, 341 insertions(+), 290 deletions(-)
> >
>
>
> --
> <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
>
> Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
> <http://twitter.com/#!/linaroorg> Twitter |
> <http://www.linaro.org/linaro-blog/> Blog
Daniel Lezcano May 13, 2022, 7:18 p.m. UTC | #3
On 13/05/2022 19:56, Rafael J. Wysocki wrote:
> On Fri, May 13, 2022 at 7:23 PM Daniel Lezcano
> <daniel.lezcano@linaro.org> wrote:
>>
>>
>> Hi Rafael,
>>
>> if you are ok with this series, I'll pick it up.
>>
>> Is that ok ?
> 
> Give me some more time to look at it, please.
> 
> I'll respond in the first half of next week.
> 

Sure, no problem