* [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
@ 2017-09-15 19:10 ` Nicolin Chen
0 siblings, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-09-15 19:10 UTC (permalink / raw)
To: thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
pdeschrijver-DDmLM1+adcrQT0dZR+AlfA
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-tegra-u79uwXL29TY76Z2rM5mHXA,
linux-clk-u79uwXL29TY76Z2rM5mHXA,
jonathanh-DDmLM1+adcrQT0dZR+AlfA,
mturquette-rdvid1DuHRBWk0Htik3J/w,
pgaikwad-DDmLM1+adcrQT0dZR+AlfA
Below is the call trace of tegra210_init_pllu() function:
start_kernel()
-> time_init()
--> of_clk_init()
---> tegra210_clock_init()
----> tegra210_pll_init()
-----> tegra210_init_pllu()
Because the preemption is disabled in the start_kernel before calling
time_init, tegra210_init_pllu is actually in an atomic context while
it includes a readl_relaxed_poll_timeout that might sleep.
So this patch just changes this readl_relaxed_poll_timeout() to its
atomic version.
Signed-off-by: Nicolin Chen <nicoleotsuka-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Acked-By: Peter De Schrijver <pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
---
Changelog
v2:
* Corrected a typo in the commit log
* Added Peter's Acked-by.
drivers/clk/tegra/clk-tegra210.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/tegra/clk-tegra210.c b/drivers/clk/tegra/clk-tegra210.c
index 0b9789a..ea695c4 100644
--- a/drivers/clk/tegra/clk-tegra210.c
+++ b/drivers/clk/tegra/clk-tegra210.c
@@ -2587,8 +2587,8 @@ static int tegra210_enable_pllu(void)
reg |= PLL_ENABLE;
writel(reg, clk_base + PLLU_BASE);
- readl_relaxed_poll_timeout(clk_base + PLLU_BASE, reg,
- reg & PLL_BASE_LOCK, 2, 1000);
+ readl_relaxed_poll_timeout_atomic(clk_base + PLLU_BASE, reg,
+ reg & PLL_BASE_LOCK, 2, 1000);
if (!(reg & PLL_BASE_LOCK)) {
pr_err("Timed out waiting for PLL_U to lock\n");
return -ETIMEDOUT;
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
@ 2017-09-15 19:10 ` Nicolin Chen
0 siblings, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-09-15 19:10 UTC (permalink / raw)
To: thierry.reding, sboyd, pdeschrijver
Cc: linux-kernel, linux-tegra, linux-clk, jonathanh, mturquette, pgaikwad
Below is the call trace of tegra210_init_pllu() function:
start_kernel()
-> time_init()
--> of_clk_init()
---> tegra210_clock_init()
----> tegra210_pll_init()
-----> tegra210_init_pllu()
Because the preemption is disabled in the start_kernel before calling
time_init, tegra210_init_pllu is actually in an atomic context while
it includes a readl_relaxed_poll_timeout that might sleep.
So this patch just changes this readl_relaxed_poll_timeout() to its
atomic version.
Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
---
Changelog
v2:
* Corrected a typo in the commit log
* Added Peter's Acked-by.
drivers/clk/tegra/clk-tegra210.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/tegra/clk-tegra210.c b/drivers/clk/tegra/clk-tegra210.c
index 0b9789a..ea695c4 100644
--- a/drivers/clk/tegra/clk-tegra210.c
+++ b/drivers/clk/tegra/clk-tegra210.c
@@ -2587,8 +2587,8 @@ static int tegra210_enable_pllu(void)
reg |= PLL_ENABLE;
writel(reg, clk_base + PLLU_BASE);
- readl_relaxed_poll_timeout(clk_base + PLLU_BASE, reg,
- reg & PLL_BASE_LOCK, 2, 1000);
+ readl_relaxed_poll_timeout_atomic(clk_base + PLLU_BASE, reg,
+ reg & PLL_BASE_LOCK, 2, 1000);
if (!(reg & PLL_BASE_LOCK)) {
pr_err("Timed out waiting for PLL_U to lock\n");
return -ETIMEDOUT;
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-09-15 19:10 ` Nicolin Chen
@ 2017-10-19 9:29 ` Nicolin Chen
-1 siblings, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-10-19 9:29 UTC (permalink / raw)
To: thierry.reding-Re5JQEeQqe8AvxtiuMwx3w,
sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
pdeschrijver-DDmLM1+adcrQT0dZR+AlfA
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-tegra-u79uwXL29TY76Z2rM5mHXA,
linux-clk-u79uwXL29TY76Z2rM5mHXA,
jonathanh-DDmLM1+adcrQT0dZR+AlfA,
mturquette-rdvid1DuHRBWk0Htik3J/w,
pgaikwad-DDmLM1+adcrQT0dZR+AlfA
On Fri, Sep 15, 2017 at 12:10:13PM -0700, Nicolin Chen wrote:
> Below is the call trace of tegra210_init_pllu() function:
> start_kernel()
> -> time_init()
> --> of_clk_init()
> ---> tegra210_clock_init()
> ----> tegra210_pll_init()
> -----> tegra210_init_pllu()
>
> Because the preemption is disabled in the start_kernel before calling
> time_init, tegra210_init_pllu is actually in an atomic context while
> it includes a readl_relaxed_poll_timeout that might sleep.
>
> So this patch just changes this readl_relaxed_poll_timeout() to its
> atomic version.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Acked-By: Peter De Schrijver <pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Thierry, can you also take a look at this one? I sent a month ago. Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
@ 2017-10-19 9:29 ` Nicolin Chen
0 siblings, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-10-19 9:29 UTC (permalink / raw)
To: thierry.reding, sboyd, pdeschrijver
Cc: linux-kernel, linux-tegra, linux-clk, jonathanh, mturquette, pgaikwad
On Fri, Sep 15, 2017 at 12:10:13PM -0700, Nicolin Chen wrote:
> Below is the call trace of tegra210_init_pllu() function:
> start_kernel()
> -> time_init()
> --> of_clk_init()
> ---> tegra210_clock_init()
> ----> tegra210_pll_init()
> -----> tegra210_init_pllu()
>
> Because the preemption is disabled in the start_kernel before calling
> time_init, tegra210_init_pllu is actually in an atomic context while
> it includes a readl_relaxed_poll_timeout that might sleep.
>
> So this patch just changes this readl_relaxed_poll_timeout() to its
> atomic version.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
> Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
Thierry, can you also take a look at this one? I sent a month ago. Thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-10-19 9:29 ` Nicolin Chen
(?)
@ 2017-10-19 9:44 ` Thierry Reding
2017-10-19 18:42 ` Nicolin Chen
-1 siblings, 1 reply; 13+ messages in thread
From: Thierry Reding @ 2017-10-19 9:44 UTC (permalink / raw)
To: Nicolin Chen
Cc: sboyd, pdeschrijver, linux-kernel, linux-tegra, linux-clk,
jonathanh, mturquette, pgaikwad
[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]
On Thu, Oct 19, 2017 at 02:29:20AM -0700, Nicolin Chen wrote:
> On Fri, Sep 15, 2017 at 12:10:13PM -0700, Nicolin Chen wrote:
> > Below is the call trace of tegra210_init_pllu() function:
> > start_kernel()
> > -> time_init()
> > --> of_clk_init()
> > ---> tegra210_clock_init()
> > ----> tegra210_pll_init()
> > -----> tegra210_init_pllu()
> >
> > Because the preemption is disabled in the start_kernel before calling
> > time_init, tegra210_init_pllu is actually in an atomic context while
> > it includes a readl_relaxed_poll_timeout that might sleep.
> >
> > So this patch just changes this readl_relaxed_poll_timeout() to its
> > atomic version.
> >
> > Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
> > Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
>
> Thierry, can you also take a look at this one? I sent a month ago. Thanks.
I'm wondering why we're not seeing a splat for this. Usually the kernel
will warn if you sleep during atomic context. Does this mean we're just
not hitting that case? readx_poll_timeout() has a might_sleep_if(), and
therefore it should always cause the splat.
Any ideas why this has gone unnoticed for all this time?
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-10-19 9:44 ` Thierry Reding
@ 2017-10-19 18:42 ` Nicolin Chen
2017-10-20 0:19 ` Nicolin Chen
2017-10-20 10:20 ` Jon Hunter
0 siblings, 2 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-10-19 18:42 UTC (permalink / raw)
To: Thierry Reding
Cc: sboyd, pdeschrijver, linux-kernel, linux-tegra, linux-clk,
jonathanh, mturquette, pgaikwad
On Thu, Oct 19, 2017 at 11:44:22AM +0200, Thierry Reding wrote:
> > > Below is the call trace of tegra210_init_pllu() function:
> > > start_kernel()
> > > -> time_init()
> > > --> of_clk_init()
> > > ---> tegra210_clock_init()
> > > ----> tegra210_pll_init()
> > > -----> tegra210_init_pllu()
> I'm wondering why we're not seeing a splat for this. Usually the kernel
> will warn if you sleep during atomic context. Does this mean we're just
> not hitting that case?
Yes.
> readx_poll_timeout() has a might_sleep_if(), and
> therefore it should always cause the splat.
That's true as long as CONFIG_DEBUG_ATOMIC_SLEEP is enabled locally.
> Any ideas why this has gone unnoticed for all this time?
We can see in the tegra210_init_pllu() function that it'll not call
tegra210_enable_pllu() if pllu is already enabled (by bootloader).
You can verify it by adding an irqs_disabled() in this routine. The
function is called during system-boot and suspend-n-resume. And both
cases should be irqs_disabled().
Thanks
Nicolin
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-10-19 18:42 ` Nicolin Chen
@ 2017-10-20 0:19 ` Nicolin Chen
2017-10-20 10:20 ` Jon Hunter
1 sibling, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-10-20 0:19 UTC (permalink / raw)
To: Thierry Reding
Cc: sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
pdeschrijver-DDmLM1+adcrQT0dZR+AlfA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-tegra-u79uwXL29TY76Z2rM5mHXA,
linux-clk-u79uwXL29TY76Z2rM5mHXA,
jonathanh-DDmLM1+adcrQT0dZR+AlfA,
mturquette-rdvid1DuHRBWk0Htik3J/w,
pgaikwad-DDmLM1+adcrQT0dZR+AlfA
On Thu, Oct 19, 2017 at 11:42:24AM -0700, Nicolin Chen wrote:
> On Thu, Oct 19, 2017 at 11:44:22AM +0200, Thierry Reding wrote:
> > > > Below is the call trace of tegra210_init_pllu() function:
> > > > start_kernel()
> > > > -> time_init()
> > > > --> of_clk_init()
> > > > ---> tegra210_clock_init()
> > > > ----> tegra210_pll_init()
> > > > -----> tegra210_init_pllu()
>
> > I'm wondering why we're not seeing a splat for this. Usually the kernel
> > will warn if you sleep during atomic context. Does this mean we're just
> > not hitting that case?
>
> Yes.
>
> > readx_poll_timeout() has a might_sleep_if(), and
> > therefore it should always cause the splat.
>
> That's true as long as CONFIG_DEBUG_ATOMIC_SLEEP is enabled locally.
>
> > Any ideas why this has gone unnoticed for all this time?
>
> We can see in the tegra210_init_pllu() function that it'll not call
> tegra210_enable_pllu() if pllu is already enabled (by bootloader).
>
> You can verify it by adding an irqs_disabled() in this routine. The
> function is called during system-boot and suspend-n-resume. And both
A correction: using mainline kernel, only system-boot as the commit log
describes.
> cases should be irqs_disabled().
>
> Thanks
> Nicolin
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
@ 2017-10-20 0:19 ` Nicolin Chen
0 siblings, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-10-20 0:19 UTC (permalink / raw)
To: Thierry Reding
Cc: sboyd, pdeschrijver, linux-kernel, linux-tegra, linux-clk,
jonathanh, mturquette, pgaikwad
On Thu, Oct 19, 2017 at 11:42:24AM -0700, Nicolin Chen wrote:
> On Thu, Oct 19, 2017 at 11:44:22AM +0200, Thierry Reding wrote:
> > > > Below is the call trace of tegra210_init_pllu() function:
> > > > start_kernel()
> > > > -> time_init()
> > > > --> of_clk_init()
> > > > ---> tegra210_clock_init()
> > > > ----> tegra210_pll_init()
> > > > -----> tegra210_init_pllu()
>
> > I'm wondering why we're not seeing a splat for this. Usually the kernel
> > will warn if you sleep during atomic context. Does this mean we're just
> > not hitting that case?
>
> Yes.
>
> > readx_poll_timeout() has a might_sleep_if(), and
> > therefore it should always cause the splat.
>
> That's true as long as CONFIG_DEBUG_ATOMIC_SLEEP is enabled locally.
>
> > Any ideas why this has gone unnoticed for all this time?
>
> We can see in the tegra210_init_pllu() function that it'll not call
> tegra210_enable_pllu() if pllu is already enabled (by bootloader).
>
> You can verify it by adding an irqs_disabled() in this routine. The
> function is called during system-boot and suspend-n-resume. And both
A correction: using mainline kernel, only system-boot as the commit log
describes.
> cases should be irqs_disabled().
>
> Thanks
> Nicolin
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-10-19 18:42 ` Nicolin Chen
@ 2017-10-20 10:20 ` Jon Hunter
2017-10-20 10:20 ` Jon Hunter
1 sibling, 0 replies; 13+ messages in thread
From: Jon Hunter @ 2017-10-20 10:20 UTC (permalink / raw)
To: Nicolin Chen, Thierry Reding
Cc: sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
pdeschrijver-DDmLM1+adcrQT0dZR+AlfA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-tegra-u79uwXL29TY76Z2rM5mHXA,
linux-clk-u79uwXL29TY76Z2rM5mHXA,
mturquette-rdvid1DuHRBWk0Htik3J/w,
pgaikwad-DDmLM1+adcrQT0dZR+AlfA
On 19/10/17 19:42, Nicolin Chen wrote:
> On Thu, Oct 19, 2017 at 11:44:22AM +0200, Thierry Reding wrote:
>>>> Below is the call trace of tegra210_init_pllu() function:
>>>> start_kernel()
>>>> -> time_init()
>>>> --> of_clk_init()
>>>> ---> tegra210_clock_init()
>>>> ----> tegra210_pll_init()
>>>> -----> tegra210_init_pllu()
>
>> I'm wondering why we're not seeing a splat for this. Usually the kernel
>> will warn if you sleep during atomic context. Does this mean we're just
>> not hitting that case?
>
> Yes.
>
>> readx_poll_timeout() has a might_sleep_if(), and
>> therefore it should always cause the splat.
>
> That's true as long as CONFIG_DEBUG_ATOMIC_SLEEP is enabled locally.
>
>> Any ideas why this has gone unnoticed for all this time?
>
> We can see in the tegra210_init_pllu() function that it'll not call
> tegra210_enable_pllu() if pllu is already enabled (by bootloader).
I was thinking that same and so I clobbered the PLLU enable bit with
u-boot, however, then the kernel appears to hang on boot when enabling
the PLL. So although this is probably a separate issue, I am curious if
you have booted the mainline with the PLLU disabled?
Cheers
Jon
--
nvpublic
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
@ 2017-10-20 10:20 ` Jon Hunter
0 siblings, 0 replies; 13+ messages in thread
From: Jon Hunter @ 2017-10-20 10:20 UTC (permalink / raw)
To: Nicolin Chen, Thierry Reding
Cc: sboyd, pdeschrijver, linux-kernel, linux-tegra, linux-clk,
mturquette, pgaikwad
On 19/10/17 19:42, Nicolin Chen wrote:
> On Thu, Oct 19, 2017 at 11:44:22AM +0200, Thierry Reding wrote:
>>>> Below is the call trace of tegra210_init_pllu() function:
>>>> start_kernel()
>>>> -> time_init()
>>>> --> of_clk_init()
>>>> ---> tegra210_clock_init()
>>>> ----> tegra210_pll_init()
>>>> -----> tegra210_init_pllu()
>
>> I'm wondering why we're not seeing a splat for this. Usually the kernel
>> will warn if you sleep during atomic context. Does this mean we're just
>> not hitting that case?
>
> Yes.
>
>> readx_poll_timeout() has a might_sleep_if(), and
>> therefore it should always cause the splat.
>
> That's true as long as CONFIG_DEBUG_ATOMIC_SLEEP is enabled locally.
>
>> Any ideas why this has gone unnoticed for all this time?
>
> We can see in the tegra210_init_pllu() function that it'll not call
> tegra210_enable_pllu() if pllu is already enabled (by bootloader).
I was thinking that same and so I clobbered the PLLU enable bit with
u-boot, however, then the kernel appears to hang on boot when enabling
the PLL. So although this is probably a separate issue, I am curious if
you have booted the mainline with the PLLU disabled?
Cheers
Jon
--
nvpublic
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-09-15 19:10 ` Nicolin Chen
@ 2017-10-20 11:38 ` Thierry Reding
-1 siblings, 0 replies; 13+ messages in thread
From: Thierry Reding @ 2017-10-20 11:38 UTC (permalink / raw)
To: Nicolin Chen
Cc: sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
pdeschrijver-DDmLM1+adcrQT0dZR+AlfA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-tegra-u79uwXL29TY76Z2rM5mHXA,
linux-clk-u79uwXL29TY76Z2rM5mHXA,
jonathanh-DDmLM1+adcrQT0dZR+AlfA,
mturquette-rdvid1DuHRBWk0Htik3J/w,
pgaikwad-DDmLM1+adcrQT0dZR+AlfA
[-- Attachment #1: Type: text/plain, Size: 996 bytes --]
On Fri, Sep 15, 2017 at 12:10:13PM -0700, Nicolin Chen wrote:
> Below is the call trace of tegra210_init_pllu() function:
> start_kernel()
> -> time_init()
> --> of_clk_init()
> ---> tegra210_clock_init()
> ----> tegra210_pll_init()
> -----> tegra210_init_pllu()
>
> Because the preemption is disabled in the start_kernel before calling
> time_init, tegra210_init_pllu is actually in an atomic context while
> it includes a readl_relaxed_poll_timeout that might sleep.
>
> So this patch just changes this readl_relaxed_poll_timeout() to its
> atomic version.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Acked-By: Peter De Schrijver <pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---
> Changelog
> v2:
> * Corrected a typo in the commit log
> * Added Peter's Acked-by.
>
> drivers/clk/tegra/clk-tegra210.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Applied, thanks.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
@ 2017-10-20 11:38 ` Thierry Reding
0 siblings, 0 replies; 13+ messages in thread
From: Thierry Reding @ 2017-10-20 11:38 UTC (permalink / raw)
To: Nicolin Chen
Cc: sboyd, pdeschrijver, linux-kernel, linux-tegra, linux-clk,
jonathanh, mturquette, pgaikwad
[-- Attachment #1: Type: text/plain, Size: 937 bytes --]
On Fri, Sep 15, 2017 at 12:10:13PM -0700, Nicolin Chen wrote:
> Below is the call trace of tegra210_init_pllu() function:
> start_kernel()
> -> time_init()
> --> of_clk_init()
> ---> tegra210_clock_init()
> ----> tegra210_pll_init()
> -----> tegra210_init_pllu()
>
> Because the preemption is disabled in the start_kernel before calling
> time_init, tegra210_init_pllu is actually in an atomic context while
> it includes a readl_relaxed_poll_timeout that might sleep.
>
> So this patch just changes this readl_relaxed_poll_timeout() to its
> atomic version.
>
> Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com>
> Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
> ---
> Changelog
> v2:
> * Corrected a typo in the commit log
> * Added Peter's Acked-by.
>
> drivers/clk/tegra/clk-tegra210.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Applied, thanks.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init
2017-10-20 10:20 ` Jon Hunter
(?)
@ 2017-10-20 18:24 ` Nicolin Chen
-1 siblings, 0 replies; 13+ messages in thread
From: Nicolin Chen @ 2017-10-20 18:24 UTC (permalink / raw)
To: Jon Hunter
Cc: Thierry Reding, sboyd, pdeschrijver, linux-kernel, linux-tegra,
linux-clk, mturquette, pgaikwad
On Fri, Oct 20, 2017 at 11:20:24AM +0100, Jon Hunter wrote:
>
> On 19/10/17 19:42, Nicolin Chen wrote:
> > On Thu, Oct 19, 2017 at 11:44:22AM +0200, Thierry Reding wrote:
> >>>> Below is the call trace of tegra210_init_pllu() function:
> >>>> start_kernel()
> >>>> -> time_init()
> >>>> --> of_clk_init()
> >>>> ---> tegra210_clock_init()
> >>>> ----> tegra210_pll_init()
> >>>> -----> tegra210_init_pllu()
> >
> >> I'm wondering why we're not seeing a splat for this. Usually the kernel
> >> will warn if you sleep during atomic context. Does this mean we're just
> >> not hitting that case?
> >
> > Yes.
> >
> >> readx_poll_timeout() has a might_sleep_if(), and
> >> therefore it should always cause the splat.
> >
> > That's true as long as CONFIG_DEBUG_ATOMIC_SLEEP is enabled locally.
> >
> >> Any ideas why this has gone unnoticed for all this time?
> >
> > We can see in the tegra210_init_pllu() function that it'll not call
> > tegra210_enable_pllu() if pllu is already enabled (by bootloader).
>
> I was thinking that same and so I clobbered the PLLU enable bit with
> u-boot, however, then the kernel appears to hang on boot when enabling
> the PLL. So although this is probably a separate issue, I am curious if
> you have booted the mainline with the PLLU disabled?
I am not sure if clearing the enable bit only would work. But the test
below should be able to verify the situation -- setting the PLLU_BASE
register to its reset value.
diff --git a/drivers/clk/tegra/clk-tegra210.c b/drivers/clk/tegra/clk-tegra210.c
index ea695c4..2279373 100644
--- a/drivers/clk/tegra/clk-tegra210.c
+++ b/drivers/clk/tegra/clk-tegra210.c
@@ -2602,6 +2602,7 @@ static int tegra210_init_pllu(void)
u32 reg;
int err;
+ writel_relaxed(0x1011902, clk_base + PLLU_BASE);
tegra210_pllu_set_defaults(&pll_u_vco_params);
/* skip initialization when pllu is in hw controlled mode */
reg = readl_relaxed(clk_base + PLLU_BASE);
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2017-10-20 18:24 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-15 19:10 [PATCH v2] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init Nicolin Chen
2017-09-15 19:10 ` Nicolin Chen
[not found] ` <1505502613-11801-1-git-send-email-nicoleotsuka-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-10-19 9:29 ` Nicolin Chen
2017-10-19 9:29 ` Nicolin Chen
2017-10-19 9:44 ` Thierry Reding
2017-10-19 18:42 ` Nicolin Chen
2017-10-20 0:19 ` Nicolin Chen
2017-10-20 0:19 ` Nicolin Chen
2017-10-20 10:20 ` Jon Hunter
2017-10-20 10:20 ` Jon Hunter
2017-10-20 18:24 ` Nicolin Chen
2017-10-20 11:38 ` Thierry Reding
2017-10-20 11:38 ` Thierry Reding
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.