Re: [PATCH 2/2] clk: renesas: mstp: Make INTC-SYS a critical clock
Hi Stephen, On Sat, Jan 21, 2017 at 12:12 AM, Stephen Boydwrote: > On 01/17, Geert Uytterhoeven wrote: >> INTC-SYS is the module clock for the GIC. Accessing the GIC while it is >> disabled causes: >> >> Unhandled fault: asynchronous external abort (0x1211) at 0x >> >> Currently, the GIC-400 driver cannot enable its module clock for several >> reasons: >> - It does not use a platform device, so Runtime PM is not an option, >> - gic_of_init() runs before any clocks are registered, so it cannot >> enable the clock explicitly, >> - gic_of_init() cannot return -EPROBE_DEFER, as IRQCHIP_DECLARE() >> doesn't support deferred probing. >> >> Hence we have to keep on relying on the boot loader for enabling the >> module clock. >> >> To prevent the module clock from being disabled when the CCF core thinks >> it is unused, and thus causing a system lock-up, add a check to the MSTP >> clock driver and enable CLK_IS_CRITICAL. This will make sure the module >> clock is never disabled. >> >> This is a hard dependency for describing the INTC-SYS clock in DT on >> R-Mobile APE6 and R-Car Gen2. >> >> Signed-off-by: Geert Uytterhoeven >> --- > > Acked-by: Stephen Boyd Thanks! >> diff --git a/drivers/clk/renesas/clk-mstp.c b/drivers/clk/renesas/clk-mstp.c >> index 937576d99407..c0319b8acf3521a2 100644 >> --- a/drivers/clk/renesas/clk-mstp.c >> +++ b/drivers/clk/renesas/clk-mstp.c >> @@ -144,6 +144,11 @@ static int cpg_mstp_clock_is_enabled(struct clk_hw *hw) > > Sad that git gets confused about which function this is in. Indeed. Will send a patch to fix that... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH 2/2] clk: renesas: mstp: Make INTC-SYS a critical clock
On 01/17, Geert Uytterhoeven wrote: > INTC-SYS is the module clock for the GIC. Accessing the GIC while it is > disabled causes: > > Unhandled fault: asynchronous external abort (0x1211) at 0x > > Currently, the GIC-400 driver cannot enable its module clock for several > reasons: > - It does not use a platform device, so Runtime PM is not an option, > - gic_of_init() runs before any clocks are registered, so it cannot > enable the clock explicitly, > - gic_of_init() cannot return -EPROBE_DEFER, as IRQCHIP_DECLARE() > doesn't support deferred probing. > > Hence we have to keep on relying on the boot loader for enabling the > module clock. > > To prevent the module clock from being disabled when the CCF core thinks > it is unused, and thus causing a system lock-up, add a check to the MSTP > clock driver and enable CLK_IS_CRITICAL. This will make sure the module > clock is never disabled. > > This is a hard dependency for describing the INTC-SYS clock in DT on > R-Mobile APE6 and R-Car Gen2. > > Signed-off-by: Geert Uytterhoeven> --- Acked-by: Stephen Boyd > diff --git a/drivers/clk/renesas/clk-mstp.c b/drivers/clk/renesas/clk-mstp.c > index 937576d99407..c0319b8acf3521a2 100644 > --- a/drivers/clk/renesas/clk-mstp.c > +++ b/drivers/clk/renesas/clk-mstp.c > @@ -144,6 +144,11 @@ static int cpg_mstp_clock_is_enabled(struct clk_hw *hw) Sad that git gets confused about which function this is in. > init.name = name; > init.ops = _mstp_clock_ops; > init.flags = CLK_IS_BASIC | CLK_SET_RATE_PARENT; > + /* INTC-SYS is the module clock of the GIC, and must not be disabled */ > + if (!strcmp(name, "intc-sys")) { > + pr_debug("MSTP %s setting CLK_IS_CRITICAL\n", name); > + init.flags |= CLK_IS_CRITICAL; > + } > init.parent_names = _name; > init.num_parents = 1; > -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project