From: Tony Lindgren <tony@atomide.com>
To: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>, Paul Walmsley <paul@pwsan.com>,
linux-omap@vger.kernel.org, Felipe Balbi <balbi@ti.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/2] ARM: OMAP2+: Initialize timers later with late_time_init
Date: Tue, 1 Dec 2015 07:47:05 -0800 [thread overview]
Message-ID: <20151201154705.GP23396@atomide.com> (raw)
In-Reply-To: <565DA609.2020204@ti.com>
* Grygorii Strashko <grygorii.strashko@ti.com> [151201 05:53]:
> On 11/30/2015 06:26 PM, Tony Lindgren wrote:
> > We don't need timers right away and initializing them later gives us few
> > nice things like interrupts and kmalloc. As the timers have a dependency
> > to the clock framework, we're better off initializing things later rather
> > than early if things go wrong. And this allows us to make the mux clock
> > driver needed for system timers into early_platform drivers.
> >
> > Note that smp_prepare_cpus() will get called later on during the init so
> > we just need to local_irq_enable/disable for clocksource_probe().
> >
> > Cc: Felipe Balbi <balbi@ti.com>
> > Cc: Grygorii Strashko <grygorii.strashko@ti.com>
> > Cc: Paul Walmsley <paul@pwsan.com>
> > Cc: Tero Kristo <t-kristo@ti.com>
> > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > ---
> > arch/arm/mach-omap2/timer.c | 46 +++++++++++++++++++++++++++++++++++++++------
> > 1 file changed, 40 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
> > index b18ebbe..68bf482 100644
> > --- a/arch/arm/mach-omap2/timer.c
> > +++ b/arch/arm/mach-omap2/timer.c
> > @@ -478,36 +478,56 @@ static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src
> > omap2_gp_clockevent_init(clkev_nr, clkev_src, clkev_prop);
> >
> > /* Enable the use of clocksource="gp_timer" kernel parameter */
> > + local_irq_disable();
> > if (use_gptimer_clksrc || gptimer)
> > omap2_gptimer_clocksource_init(clksrc_nr, clksrc_src,
> > clksrc_prop);
> > else
> > omap2_sync32k_clocksource_init();
> > + local_irq_enable();
>
> So, this will be called now after sched_clock_postinit() and to W/A warnings
> you've added local_irq_disable()/local_irq_enable(). Am I right?
>
> Are you sure this is safe?
Hmm good point, update_sched_clock() is never called again and so it's
running on jiffies. We could separate out the sched_clock when the 32k
source or a local timer is used. But that does allow initializing the
gptimer later on. Anyways, clearly this needs more work.
Regards,
Tony
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] ARM: OMAP2+: Initialize timers later with late_time_init
Date: Tue, 1 Dec 2015 07:47:05 -0800 [thread overview]
Message-ID: <20151201154705.GP23396@atomide.com> (raw)
In-Reply-To: <565DA609.2020204@ti.com>
* Grygorii Strashko <grygorii.strashko@ti.com> [151201 05:53]:
> On 11/30/2015 06:26 PM, Tony Lindgren wrote:
> > We don't need timers right away and initializing them later gives us few
> > nice things like interrupts and kmalloc. As the timers have a dependency
> > to the clock framework, we're better off initializing things later rather
> > than early if things go wrong. And this allows us to make the mux clock
> > driver needed for system timers into early_platform drivers.
> >
> > Note that smp_prepare_cpus() will get called later on during the init so
> > we just need to local_irq_enable/disable for clocksource_probe().
> >
> > Cc: Felipe Balbi <balbi@ti.com>
> > Cc: Grygorii Strashko <grygorii.strashko@ti.com>
> > Cc: Paul Walmsley <paul@pwsan.com>
> > Cc: Tero Kristo <t-kristo@ti.com>
> > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > ---
> > arch/arm/mach-omap2/timer.c | 46 +++++++++++++++++++++++++++++++++++++++------
> > 1 file changed, 40 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
> > index b18ebbe..68bf482 100644
> > --- a/arch/arm/mach-omap2/timer.c
> > +++ b/arch/arm/mach-omap2/timer.c
> > @@ -478,36 +478,56 @@ static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src
> > omap2_gp_clockevent_init(clkev_nr, clkev_src, clkev_prop);
> >
> > /* Enable the use of clocksource="gp_timer" kernel parameter */
> > + local_irq_disable();
> > if (use_gptimer_clksrc || gptimer)
> > omap2_gptimer_clocksource_init(clksrc_nr, clksrc_src,
> > clksrc_prop);
> > else
> > omap2_sync32k_clocksource_init();
> > + local_irq_enable();
>
> So, this will be called now after sched_clock_postinit() and to W/A warnings
> you've added local_irq_disable()/local_irq_enable(). Am I right?
>
> Are you sure this is safe?
Hmm good point, update_sched_clock() is never called again and so it's
running on jiffies. We could separate out the sched_clock when the 32k
source or a local timer is used. But that does allow initializing the
gptimer later on. Anyways, clearly this needs more work.
Regards,
Tony
next prev parent reply other threads:[~2015-12-01 15:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-30 16:26 [PATCH 0/2] Initcall changes for omaps Tony Lindgren
2015-11-30 16:26 ` Tony Lindgren
2015-11-30 16:26 ` [PATCH 1/2] ARM: OMAP2+: Initialize timers later with late_time_init Tony Lindgren
2015-11-30 16:26 ` Tony Lindgren
2015-12-01 13:52 ` Grygorii Strashko
2015-12-01 13:52 ` Grygorii Strashko
2015-12-01 15:47 ` Tony Lindgren [this message]
2015-12-01 15:47 ` Tony Lindgren
2015-11-30 16:26 ` [PATCH 2/2] ARM: OMAP2+: Change core_initcall levels to postcore_initcall Tony Lindgren
2015-11-30 16:26 ` Tony Lindgren
2015-12-03 16:00 ` Tony Lindgren
2015-12-03 16:00 ` Tony Lindgren
2015-12-03 16:34 ` Grygorii Strashko
2015-12-03 16:34 ` Grygorii Strashko
2015-12-03 16:41 ` Tony Lindgren
2015-12-03 16:41 ` Tony Lindgren
2015-12-03 18:08 ` Grygorii Strashko
2015-12-03 18:08 ` Grygorii Strashko
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=20151201154705.GP23396@atomide.com \
--to=tony@atomide.com \
--cc=balbi@ti.com \
--cc=grygorii.strashko@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=t-kristo@ti.com \
/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 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.