Re: [PATCH v5 00/18] Self-encapsulate the thermal zone device structure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Rafael,

Do we have enough ack to apply this series, is it for you ?

Thanks

  -- Daniel


On 01/03/2023 21:14, Daniel Lezcano wrote:
The exported thermal headers expose the thermal core structure while those
should be private to the framework. The initial idea was the thermal sensor
drivers use the thermal zone device structure pointer to pass it around from
the ops to the thermal framework API like a handler.

Unfortunately, different drivers are using and abusing the internals of this
structure to hook the associated struct device, read the internals values, take
the lock, etc ...

In order to fix this situation, let's encapsulate the structure leaking the
more in the different drivers: the thermal_zone_device structure.

This series revisit the existing drivers using the thermal zone private
structure internals to change the access to something else. For instance, the
get_temp() ops is using the tz->dev to write a debug trace. Despite the trace
is not helpful, we can check the return value for the get_temp() ops in the
call site and show the message in this place.

With this set of changes, the thermal_zone_device is almost self-encapsulated.
As usual, the acpi driver needs a more complex changes, so that will come in a
separate series along with the structure moved the private core headers.

Changelog:
	- V5:
	   - Dropped patch 19 : "thermal/tegra: Do not enable ... is already enabled"
	   - Changed the init sequence of the hw channels on tegra3 to close
	     the race window
	   - Collected more tags
	- V4:
	   - Collected more tags
	   - Fixed a typo therma_zone_device_priv() for db8500
	   - Remove traces patch [20/20] to be submitted separetely
	- V3:
	   - Split the first patch into three to reduce the number of
	     recipients per change
	   - Collected more tags
	   - Added missing changes for ->devdata in some drivers
	   - Added a 'type' accessor
	   - Replaced the 'type' to 'id' changes by the 'type' accessor
	   - Used the 'type' accessor in the drivers
	- V2:
	   - Collected tags
	   - Added missing changes for ->devdata for the tsens driver
	   - Renamed thermal_zone_device_get_data() to thermal_zone_priv()
	   - Added stubs when CONFIG_THERMAL is not set
	   - Dropped hwmon change where we remove the tz->lock usage

Thank you all for your comments

Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>
Cc: Zhang Rui <rui.zhang@xxxxxxxxx>
Cc: Len Brown <lenb@xxxxxxxxxx>
Cc: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx>
Cc: Shawn Guo <shawnguo@xxxxxxxxxx>
Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>
Cc: Fabio Estevam <festevam@xxxxxxxxx>
Cc: NXP Linux Team <linux-imx@xxxxxxx>
Cc: Jean Delvare <jdelvare@xxxxxxxx>
Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
Cc: Jonathan Cameron <jic23@xxxxxxxxxx>
Cc: Lars-Peter Clausen <lars@xxxxxxxxxx>
Cc: Chen-Yu Tsai <wens@xxxxxxxx>
Cc: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
Cc: Samuel Holland <samuel@xxxxxxxxxxxx>
Cc: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>
Cc: Eric Dumazet <edumazet@xxxxxxxxxx>
Cc: Jakub Kicinski <kuba@xxxxxxxxxx>
Cc: Paolo Abeni <pabeni@xxxxxxxxxx>
Cc: Ido Schimmel <idosch@xxxxxxxxxx>
Cc: Petr Machata <petrm@xxxxxxxxxx>
Cc: Gregory Greenman <gregory.greenman@xxxxxxxxx>
Cc: Kalle Valo <kvalo@xxxxxxxxxx>
Cc: Sebastian Reichel <sre@xxxxxxxxxx>
Cc: Liam Girdwood <lgirdwood@xxxxxxxxx>
Cc: Mark Brown <broonie@xxxxxxxxxx>
Cc: Miquel Raynal <miquel.raynal@xxxxxxxxxxx>
Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
Cc: Amit Kucheria <amitk@xxxxxxxxxx>
Cc: Florian Fainelli <f.fainelli@xxxxxxxxx>
Cc: Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>
Cc: Ray Jui <rjui@xxxxxxxxxxxx>
Cc: Scott Branden <sbranden@xxxxxxxxxxxx>
Cc: Markus Mayer <mmayer@xxxxxxxxxxxx>
Cc: Support Opensource <support.opensource@xxxxxxxxxxx>
Cc: Andy Gross <agross@xxxxxxxxxx>
Cc: Bjorn Andersson <andersson@xxxxxxxxxx>
Cc: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>
Cc: Thara Gopinath <thara.gopinath@xxxxxxxxx>
Cc: "Niklas Söderlund" <niklas.soderlund@xxxxxxxxxxxx>
Cc: Heiko Stuebner <heiko@xxxxxxxxx>
Cc: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
Cc: Alim Akhtar <alim.akhtar@xxxxxxxxxxx>
Cc: Orson Zhai <orsonzhai@xxxxxxxxx>
Cc: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
Cc: Chunyan Zhang <zhang.lyra@xxxxxxxxx>
Cc: Vasily Khoruzhick <anarsoul@xxxxxxxxx>
Cc: Yangtao Li <tiny.windzz@xxxxxxxxx>
Cc: Thierry Reding <thierry.reding@xxxxxxxxx>
Cc: Jonathan Hunter <jonathanh@xxxxxxxxxx>
Cc: Talel Shenhar <talel@xxxxxxxxxx>
Cc: Eduardo Valentin <edubezval@xxxxxxxxx>
Cc: Keerthy <j-keerthy@xxxxxx>
Cc: Kunihiko Hayashi <hayashi.kunihiko@xxxxxxxxxxxxx>
Cc: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
Cc: Matthias Brugger <matthias.bgg@xxxxxxxxx>
Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>
Cc: Stefan Wahren <stefan.wahren@xxxxxxxx>
Cc: Zheng Yongjun <zhengyongjun3@xxxxxxxxxx>
Cc: Yang Li <yang.lee@xxxxxxxxxxxxxxxxx>
Cc: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
Cc: Daniel Golle <daniel@xxxxxxxxxxxxxx>
Cc: Balsam CHIHI <bchihi@xxxxxxxxxxxx>
Cc: Mikko Perttunen <mperttunen@xxxxxxxxxx>
Cc: linux-acpi@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-ide@xxxxxxxxxxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: linux-hwmon@xxxxxxxxxxxxxxx
Cc: linux-iio@xxxxxxxxxxxxxxx
Cc: linux-sunxi@xxxxxxxxxxxxxxx
Cc: linux-input@xxxxxxxxxxxxxxx
Cc: netdev@xxxxxxxxxxxxxxx
Cc: linux-wireless@xxxxxxxxxxxxxxx
Cc: linux-pm@xxxxxxxxxxxxxxx
Cc: linux-rpi-kernel@xxxxxxxxxxxxxxxxxxx
Cc: linux-arm-msm@xxxxxxxxxxxxxxx
Cc: linux-renesas-soc@xxxxxxxxxxxxxxx
Cc: linux-rockchip@xxxxxxxxxxxxxxxxxxx
Cc: linux-samsung-soc@xxxxxxxxxxxxxxx
Cc: linux-tegra@xxxxxxxxxxxxxxx
Cc: linux-omap@xxxxxxxxxxxxxxx
Cc: linux-mediatek@xxxxxxxxxxxxxxxxxxx

Daniel Lezcano (18):
   thermal/core: Add a thermal zone 'devdata' accessor
   thermal/core: Use the thermal zone 'devdata' accessor in thermal
     located drivers
   thermal/core: Use the thermal zone 'devdata' accessor in hwmon located
     drivers
   thermal/core: Use the thermal zone 'devdata' accessor in remaining
     drivers
   thermal/core: Show a debug message when get_temp() fails
   thermal: Remove debug or error messages in get_temp() ops
   thermal/hwmon: Do not set no_hwmon before calling
     thermal_add_hwmon_sysfs()
   thermal/hwmon: Use the right device for devm_thermal_add_hwmon_sysfs()
   thermal: Don't use 'device' internal thermal zone structure field
   thermal/core: Add thermal_zone_device structure 'type' accessor
   thermal/drivers/spear: Don't use tz->device but pdev->dev
   thermal: Add a thermal zone id accessor
   thermal: Use thermal_zone_device_type() accessor
   thermal/drivers/da9062: Don't access the thermal zone device fields
   thermal/hwmon: Use the thermal_core.h header
   thermal/drivers/tegra: Remove unneeded lock when setting a trip point
   thermal/drivers/acerhdf: Make interval setting only at module load
     time
   thermal/drivers/acerhdf: Remove pointless governor test

  drivers/acpi/thermal.c                        | 18 +++----
  drivers/ata/ahci_imx.c                        |  2 +-
  drivers/hwmon/hwmon.c                         |  4 +-
  drivers/hwmon/pmbus/pmbus_core.c              |  2 +-
  drivers/hwmon/scmi-hwmon.c                    |  4 +-
  drivers/hwmon/scpi-hwmon.c                    |  2 +-
  drivers/iio/adc/sun4i-gpadc-iio.c             |  2 +-
  drivers/input/touchscreen/sun4i-ts.c          |  2 +-
  .../ethernet/chelsio/cxgb4/cxgb4_thermal.c    |  2 +-
  .../ethernet/mellanox/mlxsw/core_thermal.c    | 16 +++----
  drivers/net/wireless/intel/iwlwifi/mvm/tt.c   |  4 +-
  drivers/platform/x86/acerhdf.c                | 19 ++------
  drivers/power/supply/power_supply_core.c      |  2 +-
  drivers/regulator/max8973-regulator.c         |  2 +-
  drivers/thermal/amlogic_thermal.c             |  4 +-
  drivers/thermal/armada_thermal.c              | 14 ++----
  drivers/thermal/broadcom/bcm2711_thermal.c    |  3 +-
  drivers/thermal/broadcom/bcm2835_thermal.c    |  3 +-
  drivers/thermal/broadcom/brcmstb_thermal.c    |  8 ++--
  drivers/thermal/broadcom/ns-thermal.c         |  2 +-
  drivers/thermal/broadcom/sr-thermal.c         |  2 +-
  drivers/thermal/da9062-thermal.c              | 13 +++--
  drivers/thermal/db8500_thermal.c              |  2 +-
  drivers/thermal/dove_thermal.c                |  7 +--
  drivers/thermal/hisi_thermal.c                |  5 +-
  drivers/thermal/imx8mm_thermal.c              |  4 +-
  drivers/thermal/imx_sc_thermal.c              |  9 ++--
  drivers/thermal/imx_thermal.c                 | 47 +++++--------------
  .../intel/int340x_thermal/int3400_thermal.c   |  2 +-
  .../int340x_thermal/int340x_thermal_zone.c    |  4 +-
  .../processor_thermal_device_pci.c            |  4 +-
  drivers/thermal/intel/intel_pch_thermal.c     |  2 +-
  .../thermal/intel/intel_quark_dts_thermal.c   |  6 +--
  drivers/thermal/intel/intel_soc_dts_iosf.c    | 13 ++---
  drivers/thermal/intel/x86_pkg_temp_thermal.c  |  4 +-
  drivers/thermal/k3_bandgap.c                  |  4 +-
  drivers/thermal/k3_j72xx_bandgap.c            |  2 +-
  drivers/thermal/kirkwood_thermal.c            |  7 +--
  drivers/thermal/max77620_thermal.c            |  6 +--
  drivers/thermal/mediatek/auxadc_thermal.c     |  4 +-
  drivers/thermal/mediatek/lvts_thermal.c       | 10 ++--
  drivers/thermal/qcom/qcom-spmi-adc-tm5.c      |  6 +--
  drivers/thermal/qcom/qcom-spmi-temp-alarm.c   |  6 +--
  drivers/thermal/qcom/tsens.c                  |  6 +--
  drivers/thermal/qoriq_thermal.c               |  4 +-
  drivers/thermal/rcar_gen3_thermal.c           |  5 +-
  drivers/thermal/rcar_thermal.c                |  8 +---
  drivers/thermal/rockchip_thermal.c            |  8 +---
  drivers/thermal/rzg2l_thermal.c               |  3 +-
  drivers/thermal/samsung/exynos_tmu.c          |  4 +-
  drivers/thermal/spear_thermal.c               | 10 ++--
  drivers/thermal/sprd_thermal.c                |  2 +-
  drivers/thermal/st/st_thermal.c               |  5 +-
  drivers/thermal/st/stm_thermal.c              |  4 +-
  drivers/thermal/sun8i_thermal.c               |  4 +-
  drivers/thermal/tegra/soctherm.c              |  6 +--
  drivers/thermal/tegra/tegra-bpmp-thermal.c    |  6 ++-
  drivers/thermal/tegra/tegra30-tsensor.c       | 31 ++++++------
  drivers/thermal/thermal-generic-adc.c         |  7 ++-
  drivers/thermal/thermal_core.c                | 18 +++++++
  drivers/thermal/thermal_helpers.c             |  3 ++
  drivers/thermal/thermal_hwmon.c               |  9 ++--
  drivers/thermal/thermal_hwmon.h               |  4 +-
  drivers/thermal/thermal_mmio.c                |  2 +-
  .../ti-soc-thermal/ti-thermal-common.c        | 10 ++--
  drivers/thermal/uniphier_thermal.c            |  2 +-
  include/linux/thermal.h                       | 19 ++++++++
  67 files changed, 218 insertions(+), 246 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




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux