linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Adam Ford <aford173@gmail.com>
To: Frieder Schrempf <frieder.schrempf@kontron.de>
Cc: Marek Vasut <marex@denx.de>,
	patchwork-lst@pengutronix.de, NXP Linux Team <linux-imx@nxp.com>,
	Sascha Hauer <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	arm-soc <linux-arm-kernel@lists.infradead.org>,
	Lucas Stach <l.stach@pengutronix.de>
Subject: Re: [PATCH v2 12/13] arm64: dts: imx8mm: add GPC node and power domains
Date: Thu, 18 Feb 2021 06:54:58 -0600	[thread overview]
Message-ID: <CAHCN7xJwpK7AUB3uj4mvn__x4b3FJHX7gAeeARyn9HiHKj2zAA@mail.gmail.com> (raw)
In-Reply-To: <4a5d653a-237c-cab4-905b-af8205fc348f@kontron.de>

On Thu, Jan 14, 2021 at 4:39 AM Frieder Schrempf
<frieder.schrempf@kontron.de> wrote:
>
> On 09.12.20 16:26, Frieder Schrempf wrote:
> > Hi Lucas,
> >
> > On 05.11.20 18:44, Lucas Stach wrote:
> >> This adds the DT nodes to describe the power domains available on the
> >> i.MX8MM. Things are a bit more complex compared to other GPCv2 power
> >> domain setups, as there is now a hierarchy of domains where complete
> >> subsystems (HSIO, GPU, DISPLAY) can be gated as a whole, but also
> >> fine granular gating within those subsystems is possible.
> >>
> >> Note that this is still incomplete, as both VPU and DISP domains are
> >> missing their reset clocks. Those aren't directly sourced from the CCM,
> >> but have another level of clock gating in the BLKCTL of those domains,
> >> which needs a separate driver.
> >>
> >> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> >> ---
> >>   arch/arm64/boot/dts/freescale/imx8mm.dtsi | 58 +++++++++++++++++++++++
> >>   1 file changed, 58 insertions(+)
> >>
> >> diff --git a/arch/arm64/boot/dts/freescale/imx8mm.dtsi
> >> b/arch/arm64/boot/dts/freescale/imx8mm.dtsi
> >> index b83f400def8b..c21901a8aea9 100644
> >> --- a/arch/arm64/boot/dts/freescale/imx8mm.dtsi
> >> +++ b/arch/arm64/boot/dts/freescale/imx8mm.dtsi
> >> @@ -4,6 +4,8 @@
> >>    */
> >>   #include <dt-bindings/clock/imx8mm-clock.h>
> >> +#include <dt-bindings/power/imx8mm-power.h>
> >> +#include <dt-bindings/reset/imx8mq-reset.h>
> >>   #include <dt-bindings/gpio/gpio.h>
> >>   #include <dt-bindings/input/input.h>
> >>   #include <dt-bindings/interrupt-controller/arm-gic.h>
> >> @@ -547,6 +549,62 @@
> >>                   interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
> >>                   #reset-cells = <1>;
> >>               };
> >> +
> >> +            gpc: gpc@303a0000 {
> >> +                compatible = "fsl,imx8mm-gpc";
> >> +                reg = <0x303a0000 0x10000>;
> >> +                interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
> >> +                interrupt-parent = <&gic>;
> >> +                interrupt-controller;
> >> +                #interrupt-cells = <3>;
> >> +
> >> +                pgc {
> >> +                    #address-cells = <1>;
> >> +                    #size-cells = <0>;
> >> +
> >> +                    pgc_hsiomix: power-domain@0 {
> >> +                        #power-domain-cells = <0>;
> >> +                        reg = <IMX8MM_POWER_DOMAIN_HSIOMIX>;
> >> +                        clocks = <&clk IMX8MM_CLK_USB_BUS>;
> >> +                    };
> >> +
> >> +                    pgc_pcie: power-domain@1 {
> >> +                        #power-domain-cells = <0>;
> >> +                        reg = <IMX8MM_POWER_DOMAIN_PCIE>;
> >> +                        power-domains = <&pgc_hsiomix>;
> >> +                    };
> >> +
> >> +                    pgc_otg1: power-domain@2 {
> >> +                        #power-domain-cells = <0>;
> >> +                        reg = <IMX8MM_POWER_DOMAIN_OTG1>;
> >> +                        power-domains = <&pgc_hsiomix>;
> >> +                    };
> >> +
> >> +                    pgc_otg2: power-domain@3 {
> >> +                        #power-domain-cells = <0>;
> >> +                        reg = <IMX8MM_POWER_DOMAIN_OTG2>;
> >> +                        power-domains = <&pgc_hsiomix>;
> >> +                    };
> >
> > I'm currently doing some testing on top of v5.10-rc with GPC, BLK-CTL,
> > DSIM, etc. I noticed that as soon as I add the nodes above for HSIO/OTG
> > (even without referencing them elsewhere) my system freezes on
> > suspend/resume.
> >
> > The same problem exists when I remove the power domains for HSIO/USB and
> > add the ones for DISPMIX and DSI to test Marek's work on BLK-CTL.
> >
> > I'm not really sure at what point exactly the system freezes but this is
> > what I see (no_console_suspend is set) and the system does not wake up
> > anymore:
> >
> > echo mem > /sys/power/state
> > [   13.888711] PM: suspend entry (deep)
> > [   13.892429] Filesystems sync: 0.000 seconds
> > [   13.907231] Freezing user space processes ... (elapsed 0.031 seconds)
> > done.
> > [   13.945407] OOM killer disabled.
> > [   13.948642] Freezing remaining freezable tasks ... (elapsed 0.001
> > seconds) done.
> > [   13.957216] printk: Suspending console(s) (use no_console_suspend to
> > debug)
>
> It seems like I failed to set no_console_suspend correctly. Here is a
> proper log with kernel 5.10.6. The system wakes up, but stalls.
>
> Can you reproduce this on your system?
>
[snip]

Frieder / Lucas,

I was able to get similar behavior on the Nano.  I rebased Lucas'
patch on the 5.11 kernel, and applied the corresponding patches to my
Nano board.  It works fine until the system sleeps,  but after it
wakes, even the heartbeat LED stops beating.  I don't know if there is
a conflict between TF-A and the gpc driver in there, or if the gpcv2
driver needs to do something differently to wake the system from
sleep.

# echo mem > /sys/power/state
[ 3754.346162] PM: suspend entry (deep)
[ 3754.349872] Filesystems sync: 0.000 seconds
[ 3754.387641] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 3754.395890] OOM killer disabled.
[ 3754.399141] Freezing remaining freezable tasks ... (elapsed 0.001
seconds) done.
[ 3754.407674] printk: Suspending console(s) (use no_console_suspend to debug)
[ 3754.992015] Disabling non-boot CPUs ...
[ 3755.027902] i.mx8mm_thermal 30260000.tmu: failed to register
thermal zone sensor[0]: -517
[ 3755.036317] OOM killer enabled.
[ 3755.039467] Restarting tasks ... done.
[ 3755.050669] PM: suspend exit
root@imx8mmevk:~#

Then it hangs.

adam

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-02-18 12:57 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-05 17:44 [PATCH v2 00/13] i.MX8MM power domain support Lucas Stach
2020-11-05 17:44 ` [PATCH v2 01/13] soc: imx: gpcv2: move to more ideomatic error handling in probe Lucas Stach
2020-11-16 14:10   ` Adam Ford
2020-11-05 17:44 ` [PATCH v2 02/13] soc: imx: gpcv2: move domain mapping to domain driver probe Lucas Stach
2020-11-05 17:44 ` [PATCH v2 03/13] soc: imx: gpcv2: switch to clk_bulk_* API Lucas Stach
2020-11-05 17:44 ` [PATCH v2 04/13] soc: imx: gpcv2: split power up and power down sequence control Lucas Stach
2020-11-05 17:44 ` [PATCH v2 05/13] soc: imx: gpcv2: wait for ADB400 handshake Lucas Stach
2020-11-05 17:44 ` [PATCH v2 06/13] soc: imx: gpcv2: add runtime PM support for power-domains Lucas Stach
2020-11-05 17:44 ` [PATCH v2 07/13] soc: imx: gpcv2: allow domains without power-sequence control Lucas Stach
2020-11-05 17:44 ` [PATCH v2 08/13] dt-bindings: imx: gpcv2: add support for optional resets Lucas Stach
2020-11-09 20:15   ` Rob Herring
2020-11-17 14:11     ` Lucas Stach
2020-11-30  9:57       ` Lucas Stach
2021-02-10 14:35         ` Lucas Stach
2021-02-10 14:42           ` Marek Vasut
2021-04-26  9:24           ` Frieder Schrempf
2021-04-29 14:38             ` Frieder Schrempf
2021-03-22 18:19       ` Adam Ford
2020-11-05 17:44 ` [PATCH v2 09/13] soc: " Lucas Stach
2020-11-05 17:44 ` [PATCH v2 10/13] dt-bindings: add defines for i.MX8MM power domains Lucas Stach
2020-11-09 20:34   ` Rob Herring
2020-11-05 17:44 ` [PATCH v2 11/13] soc: imx: gpcv2: add support " Lucas Stach
2020-11-05 17:44 ` [PATCH v2 12/13] arm64: dts: imx8mm: add GPC node and " Lucas Stach
2020-12-09 15:26   ` Frieder Schrempf
2021-01-14 10:39     ` Frieder Schrempf
2021-02-18 12:54       ` Adam Ford [this message]
2021-02-18 15:19         ` Adam Ford
2021-03-02 15:01           ` Frieder Schrempf
2021-03-02 16:46             ` Adam Ford
2020-11-05 17:44 ` [PATCH v2 13/13] arm64: dts: imx8mm: put USB controllers into power-domains Lucas Stach

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHCN7xJwpK7AUB3uj4mvn__x4b3FJHX7gAeeARyn9HiHKj2zAA@mail.gmail.com \
    --to=aford173@gmail.com \
    --cc=festevam@gmail.com \
    --cc=frieder.schrempf@kontron.de \
    --cc=kernel@pengutronix.de \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=marex@denx.de \
    --cc=patchwork-lst@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).