[PATCH v1] pmdomain: ti_sci: re-sync TIFS with genpd on resume

Vignesh Raghavendra vigneshr at ti.com
Tue Apr 28 21:33:55 PDT 2026


Hi Vitor

On 27/04/26 13:18, Vitor Soares wrote:
> From: Vitor Soares <vitor.soares at toradex.com>
> 
> When a device in a TI SCI power domain is on the wakeup path of a
> wakeup-capable child, the suspend path skips genpd_sync_power_off().
> No put_device is sent to TIFS and the domain's genpd status remains
> ON.

Correction of terminologies: TIFS is Root of trust component and is not
usually involved in power management, that would be DM (Device Manager)

But to be really sure who is doing what, Could you provide an example
and the platform on which you see the issue / external abort?


> 
> TIFS powers off the hardware during deep sleep regardless, since it
> was never informed to keep the domain active. On resume, because the
> domain's genpd status is ON, no get_device is issued. The driver
> then accesses registers of a powered-off domain, causing a
> synchronous external abort (AXI bus error, ESR 0x96000010).

Hmm, if something is wakeup source, I would expect even TIFS/DM not to
turn if off, else module wakeup wouldn't work.

> 
> Commit 0b5fe1c4ab3c ("pmdomain: ti-sci: Set PD on/off state according
> to the HW state") exposed this. Before, domain status was initialized
> to OFF, so get_device was always issued on resume.
> 
> Add a .resume hook that queries the domain's state from TIFS and
> re-syncs TIFS with get_device when genpd has it ON but TIFS has it
> OFF. The hook is only registered when the is_on op is available,
> since detection depends on it.
> 
> Move ti_sci_pm_pd_is_on() earlier in the file so it is available to
> the resume hook.
> 
> Fixes: 0b5fe1c4ab3c ("pmdomain: ti-sci: Set PD on/off state according to the HW state")
> Cc: stable at vger.kernel.org # 6.18+
> Signed-off-by: Vitor Soares <vitor.soares at toradex.com>
> ---

[...]

-- 
Regards
Vignesh
https://ti.com/opensource




More information about the linux-arm-kernel mailing list