pmdomain: imx8m[p]-blk-ctrl: resume hangs when waking from suspended state

From: Advait Dhamorikar

Date: Thu Jul 16 2026 - 05:50:57 EST


Hello all,

I'm debugging a suspend/resume issue on an i.MX8MP board, where my board
suspends itself just fine but it gets stuck when I try to resume it using the
SNVS powerkey.

```
[ 127.955231] imx-pgc imx-pgc-domain.6: PM: calling
genpd_resume_noirq @ 963, parent: 303a0000.gpc
[ 127.966055] imx-pgc imx-pgc-domain.6: PM: genpd_resume_noirq
returned 0 after 3 usecs
[ 127.975922] etnaviv-gpu 38008000.gpu: PM: calling
genpd_resume_noirq @ 963, parent: soc@0
[ 127.986183] etnaviv-gpu 38008000.gpu: PM: genpd_resume_noirq
returned 0 after 44 usecs
[ 127.996201] imx-mipi-csis 32e40000.csi: PM: calling
genpd_resume_noirq @ 963, parent: 32c00000.bus
```

I added some logs inside `imx8m_blk_ctrl_power_on()` in `imx8m-blk-ctrl.c`
as well as in `imx_pgc_power_up` in `gpcv2.c` and have observed that the
problem appears to occur during the first MMIO access to the Media BLK CTRL
during resume.

```
[ 65.145718] MMIO: writel complete
[ 65.149030] MMIO: reg_write returned
[ 65.152617] PGC[gpu2d]: clear PCR -> 0
[ 65.156369] PGC[gpu2d]: deassert reset
[ 65.160124] PGC[gpu2d]: clk_bulk_disable_unprepare()
[ 65.165096] PGC[gpu2d]: ===== power_up success =====
[ 65.170067] etnaviv-gpu 38008000.gpu: PM: genpd_resume_noirq
returned 0 after 137496 usecs
[ 65.178348] imx-mipi-csis 32e40000.csi: PM: calling
genpd_resume_noirq @ 652, parent: 32c00000.bus
[ 65.187316] BLKCTRL[mediablk-mipi-csi2-1]: ===== power_on begin =====
[ 65.193762] BLKCTRL[mediablk-mipi-csi2-1]: pm_runtime_get_sync(bus)
[ 65.200034] BLKCTRL[mediablk-mipi-csi2-1]: pm_runtime_get_sync(bus) -> 1
[ 65.206740] BLKCTRL[mediablk-mipi-csi2-1]: asserting reset
rst_mask=0xc phy_rst=0x10000
[ 65.214760] clear BLK_SFT_RSTN begin
[ 65.218340] MMIO: readl begin reg=0x0
```

No further messages are printed. The CPU never returns from the
first readl() performed by regmap_clear_bits().

Has anyone observed this behaviour before?

Here are the full suspend/wake logs with PM debug enabled:
https://paste.debian.net/hidden/5b4133dd

Same logs with more verbose info:
https://paste.debian.net/hidden/9f544ae7

Any suggestions on what to investigate next would be greatly appreciated.

Best Regards,
Advait