Re: iMX8M Mini suspend/resume hanging on imx8m_blk_ctrl_power_on()

From: Adam Ford
Date: Wed May 08 2024 - 13:31:05 EST


On Fri, Apr 5, 2024 at 10:09 AM vitor <ivitro@xxxxxxxxx> wrote:
>
> Hi,
>
> On Thu, 2024-04-04 at 16:53 +0100, vitor wrote:
> > Greetings,
> >
> > I'm trying to suspend/resume our Verdin iMX8M Mini with VPU IP using
> > the latest 6.9.0-rc2 Kernel. While the system can suspend without
> > issues, it hangs on the resume routine. After some investigation, I
> > can
> > see the Kernel hanging on imx8m_blk_ctrl_power_on()[1] while resuming
> > the hantro-vpu power domain.
> >
> > Any hint about that?
> >
> > [1]
> > https://elixir.bootlin.com/linux/v6.9-rc2/source/drivers/pmdomain/imx
> > /imx8m-blk-ctrl.c#L101
> >
>
+ Lucas

> Looking at other child nodes of the pgc node, pgc_vpu_[g1|g2|h1] seems
> to be nested into pgc_vpumix.
>

On the surface, that's how it appears and it would be consistent with
how the GPU's work with the GPC's for each GPU calling the gpumix.
However, the VPU's all reference the vpu_blk_ctrl which itself
references the vpumix.

Lucas,

You seem to know this driver pretty well. Do you expect the G1, G2,
and H1 PGC's to all reference the vpumix, or do you expect the
vpu_blk_ctrl to enable/disable the vpumix?



> After applying the following changes to imx8mm.dtsi, the suspend/resume
> is working.
>
>
> @@ -739,16 +739,19 @@ pgc_vpumix: power-domain@6 {
> pgc_vpu_g1: power-domain@7 {
> #power-domain-cells = <0>;
> reg = <IMX8MM_POWER_DOMAIN_VPUG1>;
> + power-domains = <&pgc_vpumix>;
> };
>
> pgc_vpu_g2: power-domain@8 {
> #power-domain-cells = <0>;
> reg = <IMX8MM_POWER_DOMAIN_VPUG2>;
> + power-domains = <&pgc_vpumix>;
> };
>
> pgc_vpu_h1: power-domain@9 {
> #power-domain-cells = <0>;
> reg = <IMX8MM_POWER_DOMAIN_VPUH1>;
> + power-domains = <&pgc_vpumix>;
> };
>
>
> I will prepare the patch to send in the next couple of days.

Please CC me when post the patch, and I can run some tests on my hardware.

thanks

adam

>
> Regards,
> Vitor Soares
>