diff mbox

[v4,21/24] arm/v2m: initialize arch_timers even if v2m_timer is not present

Message ID 1347621207-11294-21-git-send-email-stefano.stabellini@eu.citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Stefano Stabellini Sept. 14, 2012, 11:13 a.m. UTC
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
CC: Russell King <linux@arm.linux.org.uk>
CC: Pawel Moll <pawel.moll@arm.com>
CC: Marc Zyngier <marc.zyngier@arm.com>
---
 arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

Comments

Pawel Moll Sept. 14, 2012, 12:27 p.m. UTC | #1
On Fri, 2012-09-14 at 12:13 +0100, Stefano Stabellini wrote:
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> CC: Russell King <linux@arm.linux.org.uk>
> CC: Pawel Moll <pawel.moll@arm.com>
> CC: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
>  1 files changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
> index 37608f2..4e567f7 100644
> --- a/arch/arm/mach-vexpress/v2m.c
> +++ b/arch/arm/mach-vexpress/v2m.c
> @@ -621,16 +621,17 @@ static void __init v2m_dt_timer_init(void)
>  
>  	v2m_clk_init();
>  
> -	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> -	if (WARN_ON(err))
> -		return;
> -	node = of_find_node_by_path(path);
> -	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
>  	if (arch_timer_of_register() != 0)
>  		twd_local_timer_of_register();
>  
>  	if (arch_timer_sched_clock_init() != 0)
>  		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
> +
> +	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> +	if (WARN_ON(err))
> +		return;
> +	node = of_find_node_by_path(path);
> +	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
>  }
>  
>  static struct sys_timer v2m_dt_timer = {

Fair point. The alias is going to disappear anyway (I'm working on a VE
platform rework right now), but in case I won't get it on time for 3.7,
I'll make sure this one is merged instead.

Cheers!

Pawe?
Stefano Stabellini Sept. 14, 2012, 12:48 p.m. UTC | #2
On Fri, 14 Sep 2012, Pawel Moll wrote:
> On Fri, 2012-09-14 at 12:13 +0100, Stefano Stabellini wrote:
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > CC: Russell King <linux@arm.linux.org.uk>
> > CC: Pawel Moll <pawel.moll@arm.com>
> > CC: Marc Zyngier <marc.zyngier@arm.com>
> > ---
> >  arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
> >  1 files changed, 6 insertions(+), 5 deletions(-)
> > 
> > diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
> > index 37608f2..4e567f7 100644
> > --- a/arch/arm/mach-vexpress/v2m.c
> > +++ b/arch/arm/mach-vexpress/v2m.c
> > @@ -621,16 +621,17 @@ static void __init v2m_dt_timer_init(void)
> >  
> >  	v2m_clk_init();
> >  
> > -	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> > -	if (WARN_ON(err))
> > -		return;
> > -	node = of_find_node_by_path(path);
> > -	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> >  	if (arch_timer_of_register() != 0)
> >  		twd_local_timer_of_register();
> >  
> >  	if (arch_timer_sched_clock_init() != 0)
> >  		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
> > +
> > +	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> > +	if (WARN_ON(err))
> > +		return;
> > +	node = of_find_node_by_path(path);
> > +	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> >  }
> >  
> >  static struct sys_timer v2m_dt_timer = {
> 
> Fair point. The alias is going to disappear anyway (I'm working on a VE
> platform rework right now), but in case I won't get it on time for 3.7,
> I'll make sure this one is merged instead.

Great, thanks!
Should I leave this patch out of the Xen on ARM series for 3.7 then?
Pawel Moll Sept. 14, 2012, 1:03 p.m. UTC | #3
On Fri, 2012-09-14 at 13:48 +0100, Stefano Stabellini wrote:
> On Fri, 14 Sep 2012, Pawel Moll wrote:
> > On Fri, 2012-09-14 at 12:13 +0100, Stefano Stabellini wrote:
> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > > CC: Russell King <linux@arm.linux.org.uk>
> > > CC: Pawel Moll <pawel.moll@arm.com>
> > > CC: Marc Zyngier <marc.zyngier@arm.com>
> > > ---
> > >  arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
> > >  1 files changed, 6 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
> > > index 37608f2..4e567f7 100644
> > > --- a/arch/arm/mach-vexpress/v2m.c
> > > +++ b/arch/arm/mach-vexpress/v2m.c
> > > @@ -621,16 +621,17 @@ static void __init v2m_dt_timer_init(void)
> > >  
> > >  	v2m_clk_init();
> > >  
> > > -	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> > > -	if (WARN_ON(err))
> > > -		return;
> > > -	node = of_find_node_by_path(path);
> > > -	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> > >  	if (arch_timer_of_register() != 0)
> > >  		twd_local_timer_of_register();
> > >  
> > >  	if (arch_timer_sched_clock_init() != 0)
> > >  		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
> > > +
> > > +	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> > > +	if (WARN_ON(err))
> > > +		return;
> > > +	node = of_find_node_by_path(path);
> > > +	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> > >  }
> > >  
> > >  static struct sys_timer v2m_dt_timer = {
> > 
> > Fair point. The alias is going to disappear anyway (I'm working on a VE
> > platform rework right now), but in case I won't get it on time for 3.7,
> > I'll make sure this one is merged instead.
> 
> Great, thanks!
> Should I leave this patch out of the Xen on ARM series for 3.7 then?

Em, I think so - it would conflict with my changes if they go in. Either
way you'll have the problem sorted in 3.7.

Pawe?
Stefano Stabellini Jan. 7, 2013, 5:21 p.m. UTC | #4
On Fri, 14 Sep 2012, Stefano Stabellini wrote:
> On Fri, 14 Sep 2012, Pawel Moll wrote:
> > On Fri, 2012-09-14 at 12:13 +0100, Stefano Stabellini wrote:
> > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > > CC: Russell King <linux@arm.linux.org.uk>
> > > CC: Pawel Moll <pawel.moll@arm.com>
> > > CC: Marc Zyngier <marc.zyngier@arm.com>
> > > ---
> > >  arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
> > >  1 files changed, 6 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
> > > index 37608f2..4e567f7 100644
> > > --- a/arch/arm/mach-vexpress/v2m.c
> > > +++ b/arch/arm/mach-vexpress/v2m.c
> > > @@ -621,16 +621,17 @@ static void __init v2m_dt_timer_init(void)
> > >  
> > >  	v2m_clk_init();
> > >  
> > > -	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> > > -	if (WARN_ON(err))
> > > -		return;
> > > -	node = of_find_node_by_path(path);
> > > -	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> > >  	if (arch_timer_of_register() != 0)
> > >  		twd_local_timer_of_register();
> > >  
> > >  	if (arch_timer_sched_clock_init() != 0)
> > >  		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
> > > +
> > > +	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> > > +	if (WARN_ON(err))
> > > +		return;
> > > +	node = of_find_node_by_path(path);
> > > +	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> > >  }
> > >  
> > >  static struct sys_timer v2m_dt_timer = {
> > 
> > Fair point. The alias is going to disappear anyway (I'm working on a VE
> > platform rework right now), but in case I won't get it on time for 3.7,
> > I'll make sure this one is merged instead.
> 
> Great, thanks!
> Should I leave this patch out of the Xen on ARM series for 3.7 then?
> 

I have just noticed that this patch hasn't been merged yet, but still we
need it to boot Linux on Xen.
Do you want me to rebase and resent?
Marc Zyngier Jan. 7, 2013, 5:32 p.m. UTC | #5
On 07/01/13 17:21, Stefano Stabellini wrote:
> On Fri, 14 Sep 2012, Stefano Stabellini wrote:
>> On Fri, 14 Sep 2012, Pawel Moll wrote:
>>> On Fri, 2012-09-14 at 12:13 +0100, Stefano Stabellini wrote:
>>>> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>>>> CC: Russell King <linux@arm.linux.org.uk>
>>>> CC: Pawel Moll <pawel.moll@arm.com>
>>>> CC: Marc Zyngier <marc.zyngier@arm.com>
>>>> ---
>>>>  arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
>>>>  1 files changed, 6 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
>>>> index 37608f2..4e567f7 100644
>>>> --- a/arch/arm/mach-vexpress/v2m.c
>>>> +++ b/arch/arm/mach-vexpress/v2m.c
>>>> @@ -621,16 +621,17 @@ static void __init v2m_dt_timer_init(void)
>>>>  
>>>>  	v2m_clk_init();
>>>>  
>>>> -	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
>>>> -	if (WARN_ON(err))
>>>> -		return;
>>>> -	node = of_find_node_by_path(path);
>>>> -	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
>>>>  	if (arch_timer_of_register() != 0)
>>>>  		twd_local_timer_of_register();
>>>>  
>>>>  	if (arch_timer_sched_clock_init() != 0)
>>>>  		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
>>>> +
>>>> +	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
>>>> +	if (WARN_ON(err))
>>>> +		return;
>>>> +	node = of_find_node_by_path(path);
>>>> +	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
>>>>  }
>>>>  
>>>>  static struct sys_timer v2m_dt_timer = {
>>>
>>> Fair point. The alias is going to disappear anyway (I'm working on a VE
>>> platform rework right now), but in case I won't get it on time for 3.7,
>>> I'll make sure this one is merged instead.
>>
>> Great, thanks!
>> Should I leave this patch out of the Xen on ARM series for 3.7 then?
>>
> 
> I have just noticed that this patch hasn't been merged yet, but still we
> need it to boot Linux on Xen.
> Do you want me to rebase and resent?

I'm looking at v3.8-rc2, and the code have changed significantly (see
433683a66401adb0150792e725cc4f631c94de46).

If you don't have an "arm,sp804" device in your DT, it shouldn't get
registered and carry on registering the per-cpu timers. Can you check
that it fixes your issue?

Thanks,

	M.
Stefano Stabellini Jan. 7, 2013, 7:21 p.m. UTC | #6
On Mon, 7 Jan 2013, Marc Zyngier wrote:
> On 07/01/13 17:21, Stefano Stabellini wrote:
> > On Fri, 14 Sep 2012, Stefano Stabellini wrote:
> >> On Fri, 14 Sep 2012, Pawel Moll wrote:
> >>> On Fri, 2012-09-14 at 12:13 +0100, Stefano Stabellini wrote:
> >>>> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> >>>> CC: Russell King <linux@arm.linux.org.uk>
> >>>> CC: Pawel Moll <pawel.moll@arm.com>
> >>>> CC: Marc Zyngier <marc.zyngier@arm.com>
> >>>> ---
> >>>>  arch/arm/mach-vexpress/v2m.c |   11 ++++++-----
> >>>>  1 files changed, 6 insertions(+), 5 deletions(-)
> >>>>
> >>>> diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
> >>>> index 37608f2..4e567f7 100644
> >>>> --- a/arch/arm/mach-vexpress/v2m.c
> >>>> +++ b/arch/arm/mach-vexpress/v2m.c
> >>>> @@ -621,16 +621,17 @@ static void __init v2m_dt_timer_init(void)
> >>>>  
> >>>>  	v2m_clk_init();
> >>>>  
> >>>> -	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> >>>> -	if (WARN_ON(err))
> >>>> -		return;
> >>>> -	node = of_find_node_by_path(path);
> >>>> -	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> >>>>  	if (arch_timer_of_register() != 0)
> >>>>  		twd_local_timer_of_register();
> >>>>  
> >>>>  	if (arch_timer_sched_clock_init() != 0)
> >>>>  		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
> >>>> +
> >>>> +	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
> >>>> +	if (WARN_ON(err))
> >>>> +		return;
> >>>> +	node = of_find_node_by_path(path);
> >>>> +	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
> >>>>  }
> >>>>  
> >>>>  static struct sys_timer v2m_dt_timer = {
> >>>
> >>> Fair point. The alias is going to disappear anyway (I'm working on a VE
> >>> platform rework right now), but in case I won't get it on time for 3.7,
> >>> I'll make sure this one is merged instead.
> >>
> >> Great, thanks!
> >> Should I leave this patch out of the Xen on ARM series for 3.7 then?
> >>
> > 
> > I have just noticed that this patch hasn't been merged yet, but still we
> > need it to boot Linux on Xen.
> > Do you want me to rebase and resent?
> 
> I'm looking at v3.8-rc2, and the code have changed significantly (see
> 433683a66401adb0150792e725cc4f631c94de46).
> 
> If you don't have an "arm,sp804" device in your DT, it shouldn't get
> registered and carry on registering the per-cpu timers. Can you check
> that it fixes your issue?

Yes, sorry, my Linux tree wasn't up to date enough, thanks!
diff mbox

Patch

diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c
index 37608f2..4e567f7 100644
--- a/arch/arm/mach-vexpress/v2m.c
+++ b/arch/arm/mach-vexpress/v2m.c
@@ -621,16 +621,17 @@  static void __init v2m_dt_timer_init(void)
 
 	v2m_clk_init();
 
-	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
-	if (WARN_ON(err))
-		return;
-	node = of_find_node_by_path(path);
-	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
 	if (arch_timer_of_register() != 0)
 		twd_local_timer_of_register();
 
 	if (arch_timer_sched_clock_init() != 0)
 		versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000);
+
+	err = of_property_read_string(of_aliases, "arm,v2m_timer", &path);
+	if (WARN_ON(err))
+		return;
+	node = of_find_node_by_path(path);
+	v2m_sp804_init(of_iomap(node, 0), irq_of_parse_and_map(node, 0));
 }
 
 static struct sys_timer v2m_dt_timer = {