[PATCH v8 0/5] thermal: samsung: Add support for Google GS101 TMU

Daniel Lezcano daniel.lezcano at oss.qualcomm.com
Tue Oct 13 06:33:35 PDT 2026


Hi Tudor,

I noticed I picked up your series without notifying you

However, I did not pay attention but picked also the dts files.

Shall I drop them ? (AFAICS there is one comment) and let you handle 
them separately ?

Le 03/06/2026 à 15:00, Tudor Ambarus a écrit :
> Add support for the Thermal Management Unit (TMU) on the Google GS101
> SoC.
> 
> The GS101 TMU implementation utilizes a hybrid architecture where
> management is shared between the kernel and the Alive Clock and
> Power Manager (ACPM) firmware. This hybrid ACPM TMU architecture is
> also present on other Samsung Exynos SoCs (e.g., AutoV920, Exynos850).
> 
> Dependencies
> ============
> The set depends on the ACPM TMU firmware helper driver that was queued
> via the Samsung SoC tree:
> https://lore.kernel.org/r/20260531115713.19388-2-krzk@kernel.org/T/#u
> 
> The bindings, driver and MAINTAINERS are expected to go via the thermal
> tree. The dts and defconfig patches are expected to go via the Samsung
> SoC tree, after the bindings and driver are queued.
> 
> Architecture Overview
> =====================
> 
> The hardware supports two parallel control paths. For this
> implementation, responsibilities are split as follows:
> 
> 1. Kernel Responsibility:
> - maintain direct memory-mapped access to the interrupt pending
>    (INTPEND) registers to identify thermal events.
> - map physical hardware interrupts to logical thermal zones.
> - coordinate functional operations through the ACPM IPC protocol.
> 
> 2. Firmware Responsibility (ACPM):
> - handle sensor initialization.
> - manage thermal thresholds configuration.
> - perform temperature acquisition and expose data via IPC.
> 
> Sensor Mapping (One-to-Many)
> ============================
> 
> The SoC contains multiple physical temperature sensors, but the ACPM
> firmware abstracts these into logical groups (Clusters) for reporting:
> 
> - ACPM Sensor 0 (Big Cluster): Aggregates physical sensors 0, 6, 7, 8, 9.
> - ACPM Sensor 1 (Mid Cluster): Aggregates physical sensors 4, 5.
> - ACPM Sensor 2 (Little Cluster): Aggregates physical sensors 1, 2.
> 
> The driver maps physical interrupt bits back to these logical parents.
> When an interrupt fires, the driver checks the bitmask in the INTPEND
> registers and updates the corresponding logical thermal zone.
> 
> Signed-off-by: Tudor Ambarus <tudor.ambarus at linaro.org>
> ---
> Changes in v8:
> - reword commit message and Kconfig description (Alexey)
> - adjust Kconfig dependency to require EXYNOS_ACPM_PROTOCOL unconditionally.
> - fix probe error path autosuspend clock leak (Sashiko).
> - fix system sleep clock leak via `pm_runtime_force_suspend` (Sashiko).
> - Link to v7: https://lore.kernel.org/r/20260602-acpm-tmu-v7-0-8047dd54b0e9@linaro.org
> 
> Changes in v7, addressed Sashiko's driver review:
> - add a rollback mechanism in `acpm_tmu_control` to prevent leaving hardware in
>    a dirty state when we fail to enable a sensor midway during probe or
>    resume.
> - prevent calling `ops->read_temp` on a disabled sensor if a concurrent disable
>    occurs (e.g. suspend).
> - don't mix mutex guards with goto as per cleanup guidelines
> - fix irq clear order in `acpm_tmu_thread_fn`. Avoid clearing a new interrupt
>    that occurs during `thermal_zone_device_update` (which can cause missed
>    over-temperature events).
> - initialize hardware thresholds at boot and prevent boot-time spurious
>    interrupts (which previously triggered because sensors were enabled before
>    thresholds were set).
> - ensure clocks are disabled when removing the driver, even if an autosuspend
>    is pending (which would otherwise get cancelled by `pm_runtime_disable()`,
>    leaking the clock).
> - add rollback in `acpm_tmu_suspend` on failure. If system suspend fails at
>    `ops->suspend`, re-enable the TMU sensors so they don't remain disabled.
> - Link to v6: https://lore.kernel.org/r/20260528-acpm-tmu-v6-0-b4d7ce57594b@linaro.org
> 
> Changes in v6:
> - defconfig: reword commit message (Krzysztof).
> - bindings: make samsung,acpm-ipc a required property (Krzysztof,
>    sashiko)
> - address sashiko's review feedback on the driver:
>    - ensure that the loop continues to disable the rest of the sensors
>      on the teardown path in `acpm_tmu_control`.
>    - avoid leaving the hardware in an active state during remove by
>      s/pm_runtime_put_autosuspend(dev)/pm_runtime_put_sync(dev) in
>      `acpm_tmu_control`.
>    - initialize `acpm_temp` in `acpm_tmu_get_temp` to mitigate the risk
>      of exposing stack memory.
>    - fix race condition in `acpm_tmu_update_thresholds`. Guard
>      `was_enabled = sensor->enabled;` with the mutex held.
>    - prevent keeping the sensor disabled on a threshold setting error
>      scenario.
>    - allow the IRQ subsystem to correctly detect an interrupt storm by
>      returning IRQ_NONE.
>    - devres ordering in probe, eliminate a UAF by moving the IRQ request
>      after registering the zones.
> - self review on Kconfig:
>    - add `depends on HAS_IOMEM`, due to `devm_platform_ioremap_resource`
>    - add `default ARCH_EXYNOS`, based on Krzysztof's patch from:
>      Link: https://lore.kernel.org/linux-samsung-soc/b20c560f-4bc3-4686-9c91-36d93f1535b2@oss.qualcomm.com/T/#t
> - Link to v5: https://lore.kernel.org/r/20260525-acpm-tmu-v5-0-85fde739752e@linaro.org
> 
> Changes in v5:
> - no changes, rebase on top of krzk/for-next branch.
> - Link to v4: https://lore.kernel.org/r/20260423-acpm-tmu-v4-0-8b59f8548634@linaro.org
> 
> Changes in v4: address sashiko review:
> - thermal driver: avoid mixing mutex cleanup helpers with goto statements
> - firmware, tmu:
>    - remove __packed from union acpm_tmu_msg.
>    - return ERR_PTR(-ENODEV) for devm_acpm_get_by_phandle when
>      CONFIG_EXYNOS_ACPM_PROTOCOL is disabled.
> - Link to v3: https://lore.kernel.org/r/20260420-acpm-tmu-v3-0-3dc8e93f0b26@linaro.org
> 
> Changes in v3:
> - thermal driver: use .set_trips() instead of .set_trip_point()
> - new cleaning/prerequisite patches for firmware/acpm:
>    - firmware: samsung: acpm: Make acpm_ops const and access via pointer
>    - firmware: samsung: acpm: Drop redundant _ops suffix in acpm_ops members
>    - firmware: samsung: acpm: Consolidate transfer initialization helper
> - firmware: acpm: TMU helpers - check return value from the firmware
> - overall change: emphasize that the ACPM TMU hibrid approach applies to
>    other Samsung SoCs as well (Exynos850, AutoV920).
> - dts: drop active trip points, update trip point values
> - collect R-b tags
> - Link to v2: https://lore.kernel.org/r/20260119-acpm-tmu-v2-0-e02a834f04c6@linaro.org
> 
> Changes in v2:
> - architecture: switch from a syscon/MFD approach to a thermal-sensor
>    node with a phandle to the ACPM interface
> - bindings: address Krzysztof's feedback, drop redundencies,
>    interrupts description.
> - firmware: introduce devm_acpm_get_by_phandle() to standardize IPC
>    handle acquisition.
> - thermal driver: drop compatible's data and use the static data from
>    the driver directly.
> - defconfig, make EXYNOS_ACPM_THERMAL a module
> - Link to v1: https://lore.kernel.org/r/20260114-acpm-tmu-v1-0-cfe56d93e90f@linaro.org
> 
> ---
> Tudor Ambarus (5):
>        dt-bindings: thermal: Add Google GS101 TMU
>        thermal: samsung: Add Exynos ACPM TMU driver GS101
>        MAINTAINERS: Add entry for Samsung Exynos ACPM thermal driver
>        arm64: dts: exynos: gs101: Add thermal management unit
>        arm64: defconfig: enable Exynos ACPM thermal support
> 
>   .../bindings/thermal/google,gs101-tmu-top.yaml     |  69 +++
>   MAINTAINERS                                        |   8 +
>   arch/arm64/boot/dts/exynos/google/gs101-tmu.dtsi   | 136 +++++
>   arch/arm64/boot/dts/exynos/google/gs101.dtsi       |  18 +
>   arch/arm64/configs/defconfig                       |   1 +
>   drivers/thermal/samsung/Kconfig                    |  19 +
>   drivers/thermal/samsung/Makefile                   |   2 +
>   drivers/thermal/samsung/acpm-tmu.c                 | 651 +++++++++++++++++++++
>   8 files changed, 904 insertions(+)
> ---
> base-commit: a1c3227fc1a1cd83cd7fceb93406da4e37fe06eb
> change-id: 20260113-acpm-tmu-27e21f0e2c3b
> 
> Best regards,




More information about the linux-arm-kernel mailing list