All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-20  6:48 ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-20  6:48 UTC (permalink / raw)
  To: Catalin Marinas, Will Deacon, Santosh Shilimkar, marc.zyngier,
	Tony Lindgren
  Cc: linux-arm-kernel, linux-kernel


Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.

The related error:
  ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
  ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
  ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
  ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!


Signed-off-by: Chen Gang <gang.chen@asianux.com>
---
 arch/arm64/kernel/time.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
index a551f88..7fcba80 100644
--- a/arch/arm64/kernel/time.c
+++ b/arch/arm64/kernel/time.c
@@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
 	*timer_value = arch_timer_read_counter();
 	return 0;
 }
+EXPORT_SYMBOL_GPL(read_current_timer);
 
 void __init time_init(void)
 {
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-20  6:48 ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-20  6:48 UTC (permalink / raw)
  To: linux-arm-kernel


Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.

The related error:
  ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
  ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
  ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
  ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!


Signed-off-by: Chen Gang <gang.chen@asianux.com>
---
 arch/arm64/kernel/time.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
index a551f88..7fcba80 100644
--- a/arch/arm64/kernel/time.c
+++ b/arch/arm64/kernel/time.c
@@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
 	*timer_value = arch_timer_read_counter();
 	return 0;
 }
+EXPORT_SYMBOL_GPL(read_current_timer);
 
 void __init time_init(void)
 {
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-20  6:48 ` Chen Gang
@ 2013-05-20  7:15   ` Marc Zyngier
  -1 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-05-20  7:15 UTC (permalink / raw)
  To: Chen Gang
  Cc: Catalin Marinas, Will Deacon, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel

On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
wrote:
> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.
> 
> The related error:
>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> 
> 
> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> ---
>  arch/arm64/kernel/time.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..7fcba80 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>  	*timer_value = arch_timer_read_counter();
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(read_current_timer);
>  
>  void __init time_init(void)
>  {

While this solves the problem, I'm not sure this is the best fix. The real
issue is with get_cycles, which is a macro around read_current_timer.

AArch32 exports it because of the number of timer implementations. On
arm64, we should be able to just return CNTVCT_EL0.

Catalin, Will, what do you think?

        M.
-- 
Fast, cheap, reliable. Pick two.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-20  7:15   ` Marc Zyngier
  0 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-05-20  7:15 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
wrote:
> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.
> 
> The related error:
>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> 
> 
> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> ---
>  arch/arm64/kernel/time.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..7fcba80 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>  	*timer_value = arch_timer_read_counter();
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(read_current_timer);
>  
>  void __init time_init(void)
>  {

While this solves the problem, I'm not sure this is the best fix. The real
issue is with get_cycles, which is a macro around read_current_timer.

AArch32 exports it because of the number of timer implementations. On
arm64, we should be able to just return CNTVCT_EL0.

Catalin, Will, what do you think?

        M.
-- 
Fast, cheap, reliable. Pick two.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-20  7:15   ` Marc Zyngier
@ 2013-05-20  9:56     ` Will Deacon
  -1 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-05-20  9:56 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Chen Gang, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel

On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
> wrote:
> > Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.
> > 
> > The related error:
> >   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
> >   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
> >   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
> >   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> > 
> > 
> > Signed-off-by: Chen Gang <gang.chen@asianux.com>
> > ---
> >  arch/arm64/kernel/time.c |    1 +
> >  1 files changed, 1 insertions(+), 0 deletions(-)
> > 
> > diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> > index a551f88..7fcba80 100644
> > --- a/arch/arm64/kernel/time.c
> > +++ b/arch/arm64/kernel/time.c
> > @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
> >  	*timer_value = arch_timer_read_counter();
> >  	return 0;
> >  }
> > +EXPORT_SYMBOL_GPL(read_current_timer);
> >  
> >  void __init time_init(void)
> >  {
> 
> While this solves the problem, I'm not sure this is the best fix. The real
> issue is with get_cycles, which is a macro around read_current_timer.
> 
> AArch32 exports it because of the number of timer implementations. On
> arm64, we should be able to just return CNTVCT_EL0.
> 
> Catalin, Will, what do you think?

Should be ok once the arch timer driver has moved exclusively to virtual
time. I'm also not sure we even need to implement read_current_timer() --
it's only used for delay-loop calibration, which we don't need for the
arch timer.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-20  9:56     ` Will Deacon
  0 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-05-20  9:56 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
> wrote:
> > Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.
> > 
> > The related error:
> >   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
> >   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
> >   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
> >   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> > 
> > 
> > Signed-off-by: Chen Gang <gang.chen@asianux.com>
> > ---
> >  arch/arm64/kernel/time.c |    1 +
> >  1 files changed, 1 insertions(+), 0 deletions(-)
> > 
> > diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> > index a551f88..7fcba80 100644
> > --- a/arch/arm64/kernel/time.c
> > +++ b/arch/arm64/kernel/time.c
> > @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
> >  	*timer_value = arch_timer_read_counter();
> >  	return 0;
> >  }
> > +EXPORT_SYMBOL_GPL(read_current_timer);
> >  
> >  void __init time_init(void)
> >  {
> 
> While this solves the problem, I'm not sure this is the best fix. The real
> issue is with get_cycles, which is a macro around read_current_timer.
> 
> AArch32 exports it because of the number of timer implementations. On
> arm64, we should be able to just return CNTVCT_EL0.
> 
> Catalin, Will, what do you think?

Should be ok once the arch timer driver has moved exclusively to virtual
time. I'm also not sure we even need to implement read_current_timer() --
it's only used for delay-loop calibration, which we don't need for the
arch timer.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-20  9:56     ` Will Deacon
@ 2013-05-21  4:06       ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  4:06 UTC (permalink / raw)
  To: Will Deacon
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel

On 05/20/2013 05:56 PM, Will Deacon wrote:
> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>> wrote:
>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.
>>>
>>> The related error:
>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>
>>>
>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>> ---
>>>  arch/arm64/kernel/time.c |    1 +
>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>> index a551f88..7fcba80 100644
>>> --- a/arch/arm64/kernel/time.c
>>> +++ b/arch/arm64/kernel/time.c
>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>  	*timer_value = arch_timer_read_counter();
>>>  	return 0;
>>>  }
>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>  
>>>  void __init time_init(void)
>>>  {
>>
>> While this solves the problem, I'm not sure this is the best fix. The real
>> issue is with get_cycles, which is a macro around read_current_timer.
>>
>> AArch32 exports it because of the number of timer implementations. On
>> arm64, we should be able to just return CNTVCT_EL0.
>>
>> Catalin, Will, what do you think?
> 
> Should be ok once the arch timer driver has moved exclusively to virtual
> time. I'm also not sure we even need to implement read_current_timer() --
> it's only used for delay-loop calibration, which we don't need for the
> arch timer.
> 

For whether we need implement read_current_timer():

  many platforms have implemented it (openrisc, arm, sparc, hexagon, avr32, x86).
  it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is defined.
  since arm64 can implement it, better to provide it as an architect features to let outside use.

For the implementation of read_current_timer():

  it has to face various configurations
    (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero, arch_counter_get_cntvct, arch_counter_get_cntpct)
  so better still use variable instead of.
    (excuse me, I do not know what is 'CNTVCT_EL0', is it like a constant number ?)

For the implementation of get_cycles()

  if read_current_timer() is provided,
  better to let get_cycles() to call it, instead of implement once again.



Thanks.
-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  4:06       ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  4:06 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/20/2013 05:56 PM, Will Deacon wrote:
> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>> wrote:
>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with allmodconfig.
>>>
>>> The related error:
>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>
>>>
>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>> ---
>>>  arch/arm64/kernel/time.c |    1 +
>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>> index a551f88..7fcba80 100644
>>> --- a/arch/arm64/kernel/time.c
>>> +++ b/arch/arm64/kernel/time.c
>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>  	*timer_value = arch_timer_read_counter();
>>>  	return 0;
>>>  }
>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>  
>>>  void __init time_init(void)
>>>  {
>>
>> While this solves the problem, I'm not sure this is the best fix. The real
>> issue is with get_cycles, which is a macro around read_current_timer.
>>
>> AArch32 exports it because of the number of timer implementations. On
>> arm64, we should be able to just return CNTVCT_EL0.
>>
>> Catalin, Will, what do you think?
> 
> Should be ok once the arch timer driver has moved exclusively to virtual
> time. I'm also not sure we even need to implement read_current_timer() --
> it's only used for delay-loop calibration, which we don't need for the
> arch timer.
> 

For whether we need implement read_current_timer():

  many platforms have implemented it (openrisc, arm, sparc, hexagon, avr32, x86).
  it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is defined.
  since arm64 can implement it, better to provide it as an architect features to let outside use.

For the implementation of read_current_timer():

  it has to face various configurations
    (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero, arch_counter_get_cntvct, arch_counter_get_cntpct)
  so better still use variable instead of.
    (excuse me, I do not know what is 'CNTVCT_EL0', is it like a constant number ?)

For the implementation of get_cycles()

  if read_current_timer() is provided,
  better to let get_cycles() to call it, instead of implement once again.



Thanks.
-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-21  4:06       ` Chen Gang
@ 2013-05-21  6:13         ` Marc Zyngier
  -1 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-05-21  6:13 UTC (permalink / raw)
  To: Chen Gang
  Cc: Will Deacon, Catalin Marinas, linux-kernel, Tony Lindgren,
	Santosh Shilimkar, linux-arm-kernel

On Tue, 21 May 2013 12:06:52 +0800, Chen Gang <gang.chen@asianux.com>
wrote:
> On 05/20/2013 05:56 PM, Will Deacon wrote:
>> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>>> wrote:
>>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with
>>>> allmodconfig.
>>>>
>>>> The related error:
>>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>>
>>>>
>>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>> ---
>>>>  arch/arm64/kernel/time.c |    1 +
>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>>> index a551f88..7fcba80 100644
>>>> --- a/arch/arm64/kernel/time.c
>>>> +++ b/arch/arm64/kernel/time.c
>>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>>  	*timer_value = arch_timer_read_counter();
>>>>  	return 0;
>>>>  }
>>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>>  
>>>>  void __init time_init(void)
>>>>  {
>>>
>>> While this solves the problem, I'm not sure this is the best fix. The
>>> real
>>> issue is with get_cycles, which is a macro around read_current_timer.
>>>
>>> AArch32 exports it because of the number of timer implementations. On
>>> arm64, we should be able to just return CNTVCT_EL0.
>>>
>>> Catalin, Will, what do you think?
>> 
>> Should be ok once the arch timer driver has moved exclusively to
virtual
>> time. I'm also not sure we even need to implement read_current_timer()
--
>> it's only used for delay-loop calibration, which we don't need for the
>> arch timer.
>> 
> 
> For whether we need implement read_current_timer():
> 
>   many platforms have implemented it (openrisc, arm, sparc, hexagon,
>   avr32, x86).
>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is
>   defined.
>   since arm64 can implement it, better to provide it as an architect
>   features to let outside use.

Nobody disputes the interest of read_current_timer.

> For the implementation of read_current_timer():
> 
>   it has to face various configurations
>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero,
>     arch_counter_get_cntvct, arch_counter_get_cntpct)
>   so better still use variable instead of.
>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a
constant
>     number ?)

Architected timer is mandatory on arm64, so we can always rely on it it be
present. CNTVCT_EL0 is the system register accessing the Virtual Counter,
which is basically what read_current_timer() returns.

> For the implementation of get_cycles()
> 
>   if read_current_timer() is provided,
>   better to let get_cycles() to call it, instead of implement once
again.

There is certainly some value in reusing existing code, but in this
particular case we can simply inline two instructions (isb + mrs
cntvct_el0), and I'm not even completely sure about the isb.

        M.
-- 
Fast, cheap, reliable. Pick two.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  6:13         ` Marc Zyngier
  0 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-05-21  6:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 21 May 2013 12:06:52 +0800, Chen Gang <gang.chen@asianux.com>
wrote:
> On 05/20/2013 05:56 PM, Will Deacon wrote:
>> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>>> wrote:
>>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with
>>>> allmodconfig.
>>>>
>>>> The related error:
>>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>>
>>>>
>>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>> ---
>>>>  arch/arm64/kernel/time.c |    1 +
>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>>> index a551f88..7fcba80 100644
>>>> --- a/arch/arm64/kernel/time.c
>>>> +++ b/arch/arm64/kernel/time.c
>>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>>  	*timer_value = arch_timer_read_counter();
>>>>  	return 0;
>>>>  }
>>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>>  
>>>>  void __init time_init(void)
>>>>  {
>>>
>>> While this solves the problem, I'm not sure this is the best fix. The
>>> real
>>> issue is with get_cycles, which is a macro around read_current_timer.
>>>
>>> AArch32 exports it because of the number of timer implementations. On
>>> arm64, we should be able to just return CNTVCT_EL0.
>>>
>>> Catalin, Will, what do you think?
>> 
>> Should be ok once the arch timer driver has moved exclusively to
virtual
>> time. I'm also not sure we even need to implement read_current_timer()
--
>> it's only used for delay-loop calibration, which we don't need for the
>> arch timer.
>> 
> 
> For whether we need implement read_current_timer():
> 
>   many platforms have implemented it (openrisc, arm, sparc, hexagon,
>   avr32, x86).
>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is
>   defined.
>   since arm64 can implement it, better to provide it as an architect
>   features to let outside use.

Nobody disputes the interest of read_current_timer.

> For the implementation of read_current_timer():
> 
>   it has to face various configurations
>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero,
>     arch_counter_get_cntvct, arch_counter_get_cntpct)
>   so better still use variable instead of.
>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a
constant
>     number ?)

Architected timer is mandatory on arm64, so we can always rely on it it be
present. CNTVCT_EL0 is the system register accessing the Virtual Counter,
which is basically what read_current_timer() returns.

> For the implementation of get_cycles()
> 
>   if read_current_timer() is provided,
>   better to let get_cycles() to call it, instead of implement once
again.

There is certainly some value in reusing existing code, but in this
particular case we can simply inline two instructions (isb + mrs
cntvct_el0), and I'm not even completely sure about the isb.

        M.
-- 
Fast, cheap, reliable. Pick two.

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-21  6:13         ` Marc Zyngier
@ 2013-05-21  8:41           ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  8:41 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Will Deacon, Catalin Marinas, linux-kernel, Tony Lindgren,
	Santosh Shilimkar, linux-arm-kernel

On 05/21/2013 02:13 PM, Marc Zyngier wrote:
> On Tue, 21 May 2013 12:06:52 +0800, Chen Gang <gang.chen@asianux.com>
> wrote:
>> On 05/20/2013 05:56 PM, Will Deacon wrote:
>>> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>>>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>>>> wrote:
>>>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with
>>>>> allmodconfig.
>>>>>
>>>>> The related error:
>>>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>>>
>>>>>
>>>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>>> ---
>>>>>  arch/arm64/kernel/time.c |    1 +
>>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>>>> index a551f88..7fcba80 100644
>>>>> --- a/arch/arm64/kernel/time.c
>>>>> +++ b/arch/arm64/kernel/time.c
>>>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>>>  	*timer_value = arch_timer_read_counter();
>>>>>  	return 0;
>>>>>  }
>>>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>>>  
>>>>>  void __init time_init(void)
>>>>>  {
>>>>
>>>> While this solves the problem, I'm not sure this is the best fix. The
>>>> real
>>>> issue is with get_cycles, which is a macro around read_current_timer.
>>>>
>>>> AArch32 exports it because of the number of timer implementations. On
>>>> arm64, we should be able to just return CNTVCT_EL0.
>>>>
>>>> Catalin, Will, what do you think?
>>>
>>> Should be ok once the arch timer driver has moved exclusively to
> virtual
>>> time. I'm also not sure we even need to implement read_current_timer()
> --
>>> it's only used for delay-loop calibration, which we don't need for the
>>> arch timer.
>>>
>>
>> For whether we need implement read_current_timer():
>>
>>   many platforms have implemented it (openrisc, arm, sparc, hexagon,
>>   avr32, x86).
>>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is
>>   defined.
>>   since arm64 can implement it, better to provide it as an architect
>>   features to let outside use.
> 
> Nobody disputes the interest of read_current_timer.
> 

It is for Will said "I'm also not sure we even need to implement
read_current_timer()".

I think we still need it.


>> For the implementation of read_current_timer():
>>
>>   it has to face various configurations
>>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero,
>>     arch_counter_get_cntvct, arch_counter_get_cntpct)
>>   so better still use variable instead of.
>>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a
> constant
>>     number ?)
> 
> Architected timer is mandatory on arm64, so we can always rely on it it be
> present. CNTVCT_EL0 is the system register accessing the Virtual Counter,
> which is basically what read_current_timer() returns.
> 

OK, thanks. for CNTVCT_EL0, can we use arch_counter_get_cntvct() which
is defined in "arch/arm64/include/asm/arch_timer.h" ?


>> For the implementation of get_cycles()
>>
>>   if read_current_timer() is provided,
>>   better to let get_cycles() to call it, instead of implement once
> again.
> 
> There is certainly some value in reusing existing code, but in this
> particular case we can simply inline two instructions (isb + mrs
> cntvct_el0), and I'm not even completely sure about the isb.
> 

OK, thanks.


So, how about the fix below :)

------------------------diff begin-------------------------------

diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
index b24a31a..768ba44 100644
--- a/arch/arm64/include/asm/timex.h
+++ b/arch/arm64/include/asm/timex.h
@@ -16,11 +16,13 @@
 #ifndef __ASM_TIMEX_H
 #define __ASM_TIMEX_H
 
+#include <asm/arch_timer.h>
+
 /*
  * Use the current timer as a cycle counter since this is what we use for
  * the delay loop.
  */
-#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
+#define get_cycles()	arch_counter_get_cntvct()
 
 #include <asm-generic/timex.h>
 
diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
index a551f88..6d7ce08 100644
--- a/arch/arm64/kernel/time.c
+++ b/arch/arm64/kernel/time.c
@@ -38,6 +38,7 @@
 
 #include <asm/thread_info.h>
 #include <asm/stacktrace.h>
+#include <asm/arch_timer.h>
 
 #ifdef CONFIG_SMP
 unsigned long profile_pc(struct pt_regs *regs)
@@ -70,7 +71,7 @@ unsigned long long notrace sched_clock(void)
 
 int read_current_timer(unsigned long *timer_value)
 {
-	*timer_value = arch_timer_read_counter();
+	*timer_value = arch_counter_get_cntvct();
 	return 0;
 }


------------------------diff end---------------------------------

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  8:41           ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  8:41 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/21/2013 02:13 PM, Marc Zyngier wrote:
> On Tue, 21 May 2013 12:06:52 +0800, Chen Gang <gang.chen@asianux.com>
> wrote:
>> On 05/20/2013 05:56 PM, Will Deacon wrote:
>>> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>>>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>>>> wrote:
>>>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with
>>>>> allmodconfig.
>>>>>
>>>>> The related error:
>>>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>>>
>>>>>
>>>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>>> ---
>>>>>  arch/arm64/kernel/time.c |    1 +
>>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>>>> index a551f88..7fcba80 100644
>>>>> --- a/arch/arm64/kernel/time.c
>>>>> +++ b/arch/arm64/kernel/time.c
>>>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>>>  	*timer_value = arch_timer_read_counter();
>>>>>  	return 0;
>>>>>  }
>>>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>>>  
>>>>>  void __init time_init(void)
>>>>>  {
>>>>
>>>> While this solves the problem, I'm not sure this is the best fix. The
>>>> real
>>>> issue is with get_cycles, which is a macro around read_current_timer.
>>>>
>>>> AArch32 exports it because of the number of timer implementations. On
>>>> arm64, we should be able to just return CNTVCT_EL0.
>>>>
>>>> Catalin, Will, what do you think?
>>>
>>> Should be ok once the arch timer driver has moved exclusively to
> virtual
>>> time. I'm also not sure we even need to implement read_current_timer()
> --
>>> it's only used for delay-loop calibration, which we don't need for the
>>> arch timer.
>>>
>>
>> For whether we need implement read_current_timer():
>>
>>   many platforms have implemented it (openrisc, arm, sparc, hexagon,
>>   avr32, x86).
>>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is
>>   defined.
>>   since arm64 can implement it, better to provide it as an architect
>>   features to let outside use.
> 
> Nobody disputes the interest of read_current_timer.
> 

It is for Will said "I'm also not sure we even need to implement
read_current_timer()".

I think we still need it.


>> For the implementation of read_current_timer():
>>
>>   it has to face various configurations
>>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero,
>>     arch_counter_get_cntvct, arch_counter_get_cntpct)
>>   so better still use variable instead of.
>>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a
> constant
>>     number ?)
> 
> Architected timer is mandatory on arm64, so we can always rely on it it be
> present. CNTVCT_EL0 is the system register accessing the Virtual Counter,
> which is basically what read_current_timer() returns.
> 

OK, thanks. for CNTVCT_EL0, can we use arch_counter_get_cntvct() which
is defined in "arch/arm64/include/asm/arch_timer.h" ?


>> For the implementation of get_cycles()
>>
>>   if read_current_timer() is provided,
>>   better to let get_cycles() to call it, instead of implement once
> again.
> 
> There is certainly some value in reusing existing code, but in this
> particular case we can simply inline two instructions (isb + mrs
> cntvct_el0), and I'm not even completely sure about the isb.
> 

OK, thanks.


So, how about the fix below :)

------------------------diff begin-------------------------------

diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
index b24a31a..768ba44 100644
--- a/arch/arm64/include/asm/timex.h
+++ b/arch/arm64/include/asm/timex.h
@@ -16,11 +16,13 @@
 #ifndef __ASM_TIMEX_H
 #define __ASM_TIMEX_H
 
+#include <asm/arch_timer.h>
+
 /*
  * Use the current timer as a cycle counter since this is what we use for
  * the delay loop.
  */
-#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
+#define get_cycles()	arch_counter_get_cntvct()
 
 #include <asm-generic/timex.h>
 
diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
index a551f88..6d7ce08 100644
--- a/arch/arm64/kernel/time.c
+++ b/arch/arm64/kernel/time.c
@@ -38,6 +38,7 @@
 
 #include <asm/thread_info.h>
 #include <asm/stacktrace.h>
+#include <asm/arch_timer.h>
 
 #ifdef CONFIG_SMP
 unsigned long profile_pc(struct pt_regs *regs)
@@ -70,7 +71,7 @@ unsigned long long notrace sched_clock(void)
 
 int read_current_timer(unsigned long *timer_value)
 {
-	*timer_value = arch_timer_read_counter();
+	*timer_value = arch_counter_get_cntvct();
 	return 0;
 }


------------------------diff end---------------------------------

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-21  4:06       ` Chen Gang
@ 2013-05-21  8:53         ` Will Deacon
  -1 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-05-21  8:53 UTC (permalink / raw)
  To: Chen Gang
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel

On Tue, May 21, 2013 at 05:06:52AM +0100, Chen Gang wrote:
> On 05/20/2013 05:56 PM, Will Deacon wrote:
> > Should be ok once the arch timer driver has moved exclusively to virtual
> > time. I'm also not sure we even need to implement read_current_timer() --
> > it's only used for delay-loop calibration, which we don't need for the
> > arch timer.
> > 
> 
> For whether we need implement read_current_timer():
> 
>   many platforms have implemented it (openrisc, arm, sparc, hexagon, avr32, x86).
>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is defined.
>   since arm64 can implement it, better to provide it as an architect features to let outside use.

No, that code is not needed on arm64 because we calibrate the delay loop
statically using a known timer frequency.

> For the implementation of read_current_timer():
> 
>   it has to face various configurations
>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero, arch_counter_get_cntvct, arch_counter_get_cntpct)
>   so better still use variable instead of.
>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a constant number ?)

cntvct_el0 is a system register, which provides the virtual counter value.

> For the implementation of get_cycles()
> 
>   if read_current_timer() is provided,
>   better to let get_cycles() to call it, instead of implement once again.

You can implement it as a macro if you like, I'm just suggesting that we
might not need read_current_timer after all.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  8:53         ` Will Deacon
  0 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-05-21  8:53 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, May 21, 2013 at 05:06:52AM +0100, Chen Gang wrote:
> On 05/20/2013 05:56 PM, Will Deacon wrote:
> > Should be ok once the arch timer driver has moved exclusively to virtual
> > time. I'm also not sure we even need to implement read_current_timer() --
> > it's only used for delay-loop calibration, which we don't need for the
> > arch timer.
> > 
> 
> For whether we need implement read_current_timer():
> 
>   many platforms have implemented it (openrisc, arm, sparc, hexagon, avr32, x86).
>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is defined.
>   since arm64 can implement it, better to provide it as an architect features to let outside use.

No, that code is not needed on arm64 because we calibrate the delay loop
statically using a known timer frequency.

> For the implementation of read_current_timer():
> 
>   it has to face various configurations
>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero, arch_counter_get_cntvct, arch_counter_get_cntpct)
>   so better still use variable instead of.
>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a constant number ?)

cntvct_el0 is a system register, which provides the virtual counter value.

> For the implementation of get_cycles()
> 
>   if read_current_timer() is provided,
>   better to let get_cycles() to call it, instead of implement once again.

You can implement it as a macro if you like, I'm just suggesting that we
might not need read_current_timer after all.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-21  8:41           ` Chen Gang
@ 2013-05-21  8:58             ` Marc Zyngier
  -1 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-05-21  8:58 UTC (permalink / raw)
  To: Chen Gang
  Cc: Will Deacon, Catalin Marinas, linux-kernel, Tony Lindgren,
	Santosh Shilimkar, linux-arm-kernel

On 21/05/13 09:41, Chen Gang wrote:
> On 05/21/2013 02:13 PM, Marc Zyngier wrote:
>> On Tue, 21 May 2013 12:06:52 +0800, Chen Gang <gang.chen@asianux.com>
>> wrote:
>>> On 05/20/2013 05:56 PM, Will Deacon wrote:
>>>> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>>>>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>>>>> wrote:
>>>>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with
>>>>>> allmodconfig.
>>>>>>
>>>>>> The related error:
>>>>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>>>>
>>>>>>
>>>>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>>>> ---
>>>>>>  arch/arm64/kernel/time.c |    1 +
>>>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>>>>> index a551f88..7fcba80 100644
>>>>>> --- a/arch/arm64/kernel/time.c
>>>>>> +++ b/arch/arm64/kernel/time.c
>>>>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>>>>  	*timer_value = arch_timer_read_counter();
>>>>>>  	return 0;
>>>>>>  }
>>>>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>>>>  
>>>>>>  void __init time_init(void)
>>>>>>  {
>>>>>
>>>>> While this solves the problem, I'm not sure this is the best fix. The
>>>>> real
>>>>> issue is with get_cycles, which is a macro around read_current_timer.
>>>>>
>>>>> AArch32 exports it because of the number of timer implementations. On
>>>>> arm64, we should be able to just return CNTVCT_EL0.
>>>>>
>>>>> Catalin, Will, what do you think?
>>>>
>>>> Should be ok once the arch timer driver has moved exclusively to
>> virtual
>>>> time. I'm also not sure we even need to implement read_current_timer()
>> --
>>>> it's only used for delay-loop calibration, which we don't need for the
>>>> arch timer.
>>>>
>>>
>>> For whether we need implement read_current_timer():
>>>
>>>   many platforms have implemented it (openrisc, arm, sparc, hexagon,
>>>   avr32, x86).
>>>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is
>>>   defined.
>>>   since arm64 can implement it, better to provide it as an architect
>>>   features to let outside use.
>>
>> Nobody disputes the interest of read_current_timer.
>>
> 
> It is for Will said "I'm also not sure we even need to implement
> read_current_timer()".
> 
> I think we still need it.

Not really. The only use of read_current_timer is for calibrating the
delay loop, and we just do not need this, because we can actually rely
on the timer to give us an accurate timing information.

>>> For the implementation of read_current_timer():
>>>
>>>   it has to face various configurations
>>>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero,
>>>     arch_counter_get_cntvct, arch_counter_get_cntpct)
>>>   so better still use variable instead of.
>>>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a
>> constant
>>>     number ?)
>>
>> Architected timer is mandatory on arm64, so we can always rely on it it be
>> present. CNTVCT_EL0 is the system register accessing the Virtual Counter,
>> which is basically what read_current_timer() returns.
>>
> 
> OK, thanks. for CNTVCT_EL0, can we use arch_counter_get_cntvct() which
> is defined in "arch/arm64/include/asm/arch_timer.h" ?

Yes.

>>> For the implementation of get_cycles()
>>>
>>>   if read_current_timer() is provided,
>>>   better to let get_cycles() to call it, instead of implement once
>> again.
>>
>> There is certainly some value in reusing existing code, but in this
>> particular case we can simply inline two instructions (isb + mrs
>> cntvct_el0), and I'm not even completely sure about the isb.
>>
> 
> OK, thanks.
> 
> 
> So, how about the fix below :)
> 
> ------------------------diff begin-------------------------------
> 
> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
> index b24a31a..768ba44 100644
> --- a/arch/arm64/include/asm/timex.h
> +++ b/arch/arm64/include/asm/timex.h
> @@ -16,11 +16,13 @@
>  #ifndef __ASM_TIMEX_H
>  #define __ASM_TIMEX_H
>  
> +#include <asm/arch_timer.h>
> +
>  /*
>   * Use the current timer as a cycle counter since this is what we use for
>   * the delay loop.
>   */
> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
> +#define get_cycles()	arch_counter_get_cntvct()
>  
>  #include <asm-generic/timex.h>
>  
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..6d7ce08 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -38,6 +38,7 @@
>  
>  #include <asm/thread_info.h>
>  #include <asm/stacktrace.h>
> +#include <asm/arch_timer.h>
>  
>  #ifdef CONFIG_SMP
>  unsigned long profile_pc(struct pt_regs *regs)
> @@ -70,7 +71,7 @@ unsigned long long notrace sched_clock(void)
>  
>  int read_current_timer(unsigned long *timer_value)
>  {
> -	*timer_value = arch_timer_read_counter();
> +	*timer_value = arch_counter_get_cntvct();
>  	return 0;
>  }
> 
> 
> ------------------------diff end---------------------------------

I think you should try to implement Will's suggestion and drop
read_current_timer (and the ARCH_HAS_READ_CURRENT_TIMER macro) altogether.

It would be a much better fix.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...


^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  8:58             ` Marc Zyngier
  0 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-05-21  8:58 UTC (permalink / raw)
  To: linux-arm-kernel

On 21/05/13 09:41, Chen Gang wrote:
> On 05/21/2013 02:13 PM, Marc Zyngier wrote:
>> On Tue, 21 May 2013 12:06:52 +0800, Chen Gang <gang.chen@asianux.com>
>> wrote:
>>> On 05/20/2013 05:56 PM, Will Deacon wrote:
>>>> On Mon, May 20, 2013 at 08:15:04AM +0100, Marc Zyngier wrote:
>>>>> On Mon, 20 May 2013 14:48:05 +0800, Chen Gang <gang.chen@asianux.com>
>>>>> wrote:
>>>>>> Need 'EXPORT_SYMBOL_GPL(read_current_timer)' if build with
>>>>>> allmodconfig.
>>>>>>
>>>>>> The related error:
>>>>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>>>>
>>>>>>
>>>>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>>>> ---
>>>>>>  arch/arm64/kernel/time.c |    1 +
>>>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>>>>> index a551f88..7fcba80 100644
>>>>>> --- a/arch/arm64/kernel/time.c
>>>>>> +++ b/arch/arm64/kernel/time.c
>>>>>> @@ -73,6 +73,7 @@ int read_current_timer(unsigned long *timer_value)
>>>>>>  	*timer_value = arch_timer_read_counter();
>>>>>>  	return 0;
>>>>>>  }
>>>>>> +EXPORT_SYMBOL_GPL(read_current_timer);
>>>>>>  
>>>>>>  void __init time_init(void)
>>>>>>  {
>>>>>
>>>>> While this solves the problem, I'm not sure this is the best fix. The
>>>>> real
>>>>> issue is with get_cycles, which is a macro around read_current_timer.
>>>>>
>>>>> AArch32 exports it because of the number of timer implementations. On
>>>>> arm64, we should be able to just return CNTVCT_EL0.
>>>>>
>>>>> Catalin, Will, what do you think?
>>>>
>>>> Should be ok once the arch timer driver has moved exclusively to
>> virtual
>>>> time. I'm also not sure we even need to implement read_current_timer()
>> --
>>>> it's only used for delay-loop calibration, which we don't need for the
>>>> arch timer.
>>>>
>>>
>>> For whether we need implement read_current_timer():
>>>
>>>   many platforms have implemented it (openrisc, arm, sparc, hexagon,
>>>   avr32, x86).
>>>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is
>>>   defined.
>>>   since arm64 can implement it, better to provide it as an architect
>>>   features to let outside use.
>>
>> Nobody disputes the interest of read_current_timer.
>>
> 
> It is for Will said "I'm also not sure we even need to implement
> read_current_timer()".
> 
> I think we still need it.

Not really. The only use of read_current_timer is for calibrating the
delay loop, and we just do not need this, because we can actually rely
on the timer to give us an accurate timing information.

>>> For the implementation of read_current_timer():
>>>
>>>   it has to face various configurations
>>>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero,
>>>     arch_counter_get_cntvct, arch_counter_get_cntpct)
>>>   so better still use variable instead of.
>>>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a
>> constant
>>>     number ?)
>>
>> Architected timer is mandatory on arm64, so we can always rely on it it be
>> present. CNTVCT_EL0 is the system register accessing the Virtual Counter,
>> which is basically what read_current_timer() returns.
>>
> 
> OK, thanks. for CNTVCT_EL0, can we use arch_counter_get_cntvct() which
> is defined in "arch/arm64/include/asm/arch_timer.h" ?

Yes.

>>> For the implementation of get_cycles()
>>>
>>>   if read_current_timer() is provided,
>>>   better to let get_cycles() to call it, instead of implement once
>> again.
>>
>> There is certainly some value in reusing existing code, but in this
>> particular case we can simply inline two instructions (isb + mrs
>> cntvct_el0), and I'm not even completely sure about the isb.
>>
> 
> OK, thanks.
> 
> 
> So, how about the fix below :)
> 
> ------------------------diff begin-------------------------------
> 
> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
> index b24a31a..768ba44 100644
> --- a/arch/arm64/include/asm/timex.h
> +++ b/arch/arm64/include/asm/timex.h
> @@ -16,11 +16,13 @@
>  #ifndef __ASM_TIMEX_H
>  #define __ASM_TIMEX_H
>  
> +#include <asm/arch_timer.h>
> +
>  /*
>   * Use the current timer as a cycle counter since this is what we use for
>   * the delay loop.
>   */
> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
> +#define get_cycles()	arch_counter_get_cntvct()
>  
>  #include <asm-generic/timex.h>
>  
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..6d7ce08 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -38,6 +38,7 @@
>  
>  #include <asm/thread_info.h>
>  #include <asm/stacktrace.h>
> +#include <asm/arch_timer.h>
>  
>  #ifdef CONFIG_SMP
>  unsigned long profile_pc(struct pt_regs *regs)
> @@ -70,7 +71,7 @@ unsigned long long notrace sched_clock(void)
>  
>  int read_current_timer(unsigned long *timer_value)
>  {
> -	*timer_value = arch_timer_read_counter();
> +	*timer_value = arch_counter_get_cntvct();
>  	return 0;
>  }
> 
> 
> ------------------------diff end---------------------------------

I think you should try to implement Will's suggestion and drop
read_current_timer (and the ARCH_HAS_READ_CURRENT_TIMER macro) altogether.

It would be a much better fix.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-21  8:58             ` Marc Zyngier
@ 2013-05-21  9:26               ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  9:26 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Will Deacon, Catalin Marinas, linux-kernel, Tony Lindgren,
	Santosh Shilimkar, linux-arm-kernel

On 05/21/2013 04:58 PM, Marc Zyngier wrote:
> I think you should try to implement Will's suggestion and drop
> read_current_timer (and the ARCH_HAS_READ_CURRENT_TIMER macro) altogether.
> 
> It would be a much better fix.

OK, thanks. I will send patch v2.

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  9:26               ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  9:26 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/21/2013 04:58 PM, Marc Zyngier wrote:
> I think you should try to implement Will's suggestion and drop
> read_current_timer (and the ARCH_HAS_READ_CURRENT_TIMER macro) altogether.
> 
> It would be a much better fix.

OK, thanks. I will send patch v2.

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
  2013-05-21  8:53         ` Will Deacon
@ 2013-05-21  9:27           ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  9:27 UTC (permalink / raw)
  To: Will Deacon
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel

On 05/21/2013 04:53 PM, Will Deacon wrote:
> On Tue, May 21, 2013 at 05:06:52AM +0100, Chen Gang wrote:
>> On 05/20/2013 05:56 PM, Will Deacon wrote:
>>> Should be ok once the arch timer driver has moved exclusively to virtual
>>> time. I'm also not sure we even need to implement read_current_timer() --
>>> it's only used for delay-loop calibration, which we don't need for the
>>> arch timer.
>>>
>>
>> For whether we need implement read_current_timer():
>>
>>   many platforms have implemented it (openrisc, arm, sparc, hexagon, avr32, x86).
>>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is defined.
>>   since arm64 can implement it, better to provide it as an architect features to let outside use.
> 
> No, that code is not needed on arm64 because we calibrate the delay loop
> statically using a known timer frequency.
> 
>> For the implementation of read_current_timer():
>>
>>   it has to face various configurations
>>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero, arch_counter_get_cntvct, arch_counter_get_cntpct)
>>   so better still use variable instead of.
>>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a constant number ?)
> 
> cntvct_el0 is a system register, which provides the virtual counter value.
> 
>> For the implementation of get_cycles()
>>
>>   if read_current_timer() is provided,
>>   better to let get_cycles() to call it, instead of implement once again.
> 
> You can implement it as a macro if you like, I'm just suggesting that we
> might not need read_current_timer after all.
> 
> Will
> 
> 

Thanks, I should try patch v2.  :-)

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)'
@ 2013-05-21  9:27           ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  9:27 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/21/2013 04:53 PM, Will Deacon wrote:
> On Tue, May 21, 2013 at 05:06:52AM +0100, Chen Gang wrote:
>> On 05/20/2013 05:56 PM, Will Deacon wrote:
>>> Should be ok once the arch timer driver has moved exclusively to virtual
>>> time. I'm also not sure we even need to implement read_current_timer() --
>>> it's only used for delay-loop calibration, which we don't need for the
>>> arch timer.
>>>
>>
>> For whether we need implement read_current_timer():
>>
>>   many platforms have implemented it (openrisc, arm, sparc, hexagon, avr32, x86).
>>   it is called by init/calibrate.c when 'ARCH_HAS_READ_CURRENT_TIMER' is defined.
>>   since arm64 can implement it, better to provide it as an architect features to let outside use.
> 
> No, that code is not needed on arm64 because we calibrate the delay loop
> statically using a known timer frequency.
> 
>> For the implementation of read_current_timer():
>>
>>   it has to face various configurations
>>     (e.g. CONFIG_ARM_ARCH_TIMER, arch_timer_read_zero, arch_counter_get_cntvct, arch_counter_get_cntpct)
>>   so better still use variable instead of.
>>     (excuse me, I do not know what is 'CNTVCT_EL0', is it like a constant number ?)
> 
> cntvct_el0 is a system register, which provides the virtual counter value.
> 
>> For the implementation of get_cycles()
>>
>>   if read_current_timer() is provided,
>>   better to let get_cycles() to call it, instead of implement once again.
> 
> You can implement it as a macro if you like, I'm just suggesting that we
> might not need read_current_timer after all.
> 
> Will
> 
> 

Thanks, I should try patch v2.  :-)

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-05-21  8:53         ` Will Deacon
@ 2013-05-21  9:46           ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  9:46 UTC (permalink / raw)
  To: Will Deacon, Marc Zyngier
  Cc: Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel


Under arm64, we will calibrate the delay loop statically using a known
timer frequency, so delete read_current_timer(), or it will cause
compiling issue with allmodconfig.

The related error:
  ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
  ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
  ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
  ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!


Signed-off-by: Chen Gang <gang.chen@asianux.com>
---
 arch/arm64/include/asm/timex.h |    6 +++---
 arch/arm64/kernel/time.c       |    6 ------
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
index b24a31a..81a076e 100644
--- a/arch/arm64/include/asm/timex.h
+++ b/arch/arm64/include/asm/timex.h
@@ -16,14 +16,14 @@
 #ifndef __ASM_TIMEX_H
 #define __ASM_TIMEX_H
 
+#include <asm/arch_timer.h>
+
 /*
  * Use the current timer as a cycle counter since this is what we use for
  * the delay loop.
  */
-#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
+#define get_cycles()	arch_counter_get_cntvct()
 
 #include <asm-generic/timex.h>
 
-#define ARCH_HAS_READ_CURRENT_TIMER
-
 #endif
diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
index a551f88..03dc371 100644
--- a/arch/arm64/kernel/time.c
+++ b/arch/arm64/kernel/time.c
@@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
 	return arch_timer_read_counter() * sched_clock_mult;
 }
 
-int read_current_timer(unsigned long *timer_value)
-{
-	*timer_value = arch_timer_read_counter();
-	return 0;
-}
-
 void __init time_init(void)
 {
 	u32 arch_timer_rate;
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-05-21  9:46           ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-21  9:46 UTC (permalink / raw)
  To: linux-arm-kernel


Under arm64, we will calibrate the delay loop statically using a known
timer frequency, so delete read_current_timer(), or it will cause
compiling issue with allmodconfig.

The related error:
  ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
  ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
  ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
  ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!


Signed-off-by: Chen Gang <gang.chen@asianux.com>
---
 arch/arm64/include/asm/timex.h |    6 +++---
 arch/arm64/kernel/time.c       |    6 ------
 2 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
index b24a31a..81a076e 100644
--- a/arch/arm64/include/asm/timex.h
+++ b/arch/arm64/include/asm/timex.h
@@ -16,14 +16,14 @@
 #ifndef __ASM_TIMEX_H
 #define __ASM_TIMEX_H
 
+#include <asm/arch_timer.h>
+
 /*
  * Use the current timer as a cycle counter since this is what we use for
  * the delay loop.
  */
-#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
+#define get_cycles()	arch_counter_get_cntvct()
 
 #include <asm-generic/timex.h>
 
-#define ARCH_HAS_READ_CURRENT_TIMER
-
 #endif
diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
index a551f88..03dc371 100644
--- a/arch/arm64/kernel/time.c
+++ b/arch/arm64/kernel/time.c
@@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
 	return arch_timer_read_counter() * sched_clock_mult;
 }
 
-int read_current_timer(unsigned long *timer_value)
-{
-	*timer_value = arch_timer_read_counter();
-	return 0;
-}
-
 void __init time_init(void)
 {
 	u32 arch_timer_rate;
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-05-21  9:46           ` Chen Gang
  (?)
@ 2013-05-27 10:02             ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-27 10:02 UTC (permalink / raw)
  To: Will Deacon, Marc Zyngier
  Cc: Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

Hello Maintainers:

Please help check this patch whether OK, when you have time.

Thanks.

On 05/21/2013 05:46 PM, Chen Gang wrote:
> 
> Under arm64, we will calibrate the delay loop statically using a known
> timer frequency, so delete read_current_timer(), or it will cause
> compiling issue with allmodconfig.
> 
> The related error:
>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> 
> 
> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> ---
>  arch/arm64/include/asm/timex.h |    6 +++---
>  arch/arm64/kernel/time.c       |    6 ------
>  2 files changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
> index b24a31a..81a076e 100644
> --- a/arch/arm64/include/asm/timex.h
> +++ b/arch/arm64/include/asm/timex.h
> @@ -16,14 +16,14 @@
>  #ifndef __ASM_TIMEX_H
>  #define __ASM_TIMEX_H
>  
> +#include <asm/arch_timer.h>
> +
>  /*
>   * Use the current timer as a cycle counter since this is what we use for
>   * the delay loop.
>   */
> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
> +#define get_cycles()	arch_counter_get_cntvct()
>  
>  #include <asm-generic/timex.h>
>  
> -#define ARCH_HAS_READ_CURRENT_TIMER
> -
>  #endif
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..03dc371 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>  	return arch_timer_read_counter() * sched_clock_mult;
>  }
>  
> -int read_current_timer(unsigned long *timer_value)
> -{
> -	*timer_value = arch_timer_read_counter();
> -	return 0;
> -}
> -
>  void __init time_init(void)
>  {
>  	u32 arch_timer_rate;
> 


-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-05-27 10:02             ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-27 10:02 UTC (permalink / raw)
  To: Will Deacon, Marc Zyngier
  Cc: Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

Hello Maintainers:

Please help check this patch whether OK, when you have time.

Thanks.

On 05/21/2013 05:46 PM, Chen Gang wrote:
> 
> Under arm64, we will calibrate the delay loop statically using a known
> timer frequency, so delete read_current_timer(), or it will cause
> compiling issue with allmodconfig.
> 
> The related error:
>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> 
> 
> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> ---
>  arch/arm64/include/asm/timex.h |    6 +++---
>  arch/arm64/kernel/time.c       |    6 ------
>  2 files changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
> index b24a31a..81a076e 100644
> --- a/arch/arm64/include/asm/timex.h
> +++ b/arch/arm64/include/asm/timex.h
> @@ -16,14 +16,14 @@
>  #ifndef __ASM_TIMEX_H
>  #define __ASM_TIMEX_H
>  
> +#include <asm/arch_timer.h>
> +
>  /*
>   * Use the current timer as a cycle counter since this is what we use for
>   * the delay loop.
>   */
> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
> +#define get_cycles()	arch_counter_get_cntvct()
>  
>  #include <asm-generic/timex.h>
>  
> -#define ARCH_HAS_READ_CURRENT_TIMER
> -
>  #endif
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..03dc371 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>  	return arch_timer_read_counter() * sched_clock_mult;
>  }
>  
> -int read_current_timer(unsigned long *timer_value)
> -{
> -	*timer_value = arch_timer_read_counter();
> -	return 0;
> -}
> -
>  void __init time_init(void)
>  {
>  	u32 arch_timer_rate;
> 


-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-05-27 10:02             ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-05-27 10:02 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Maintainers:

Please help check this patch whether OK, when you have time.

Thanks.

On 05/21/2013 05:46 PM, Chen Gang wrote:
> 
> Under arm64, we will calibrate the delay loop statically using a known
> timer frequency, so delete read_current_timer(), or it will cause
> compiling issue with allmodconfig.
> 
> The related error:
>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> 
> 
> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> ---
>  arch/arm64/include/asm/timex.h |    6 +++---
>  arch/arm64/kernel/time.c       |    6 ------
>  2 files changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
> index b24a31a..81a076e 100644
> --- a/arch/arm64/include/asm/timex.h
> +++ b/arch/arm64/include/asm/timex.h
> @@ -16,14 +16,14 @@
>  #ifndef __ASM_TIMEX_H
>  #define __ASM_TIMEX_H
>  
> +#include <asm/arch_timer.h>
> +
>  /*
>   * Use the current timer as a cycle counter since this is what we use for
>   * the delay loop.
>   */
> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
> +#define get_cycles()	arch_counter_get_cntvct()
>  
>  #include <asm-generic/timex.h>
>  
> -#define ARCH_HAS_READ_CURRENT_TIMER
> -
>  #endif
> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
> index a551f88..03dc371 100644
> --- a/arch/arm64/kernel/time.c
> +++ b/arch/arm64/kernel/time.c
> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>  	return arch_timer_read_counter() * sched_clock_mult;
>  }
>  
> -int read_current_timer(unsigned long *timer_value)
> -{
> -	*timer_value = arch_timer_read_counter();
> -	return 0;
> -}
> -
>  void __init time_init(void)
>  {
>  	u32 arch_timer_rate;
> 


-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-05-27 10:02             ` Chen Gang
  (?)
@ 2013-06-08  4:37               ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-08  4:37 UTC (permalink / raw)
  To: Will Deacon, Marc Zyngier
  Cc: Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

Hello Maintainers:

Please help check it, when you have time.

Thanks.

On 05/27/2013 06:02 PM, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check this patch whether OK, when you have time.
> 
> Thanks.
> 
> On 05/21/2013 05:46 PM, Chen Gang wrote:
>>
>> Under arm64, we will calibrate the delay loop statically using a known
>> timer frequency, so delete read_current_timer(), or it will cause
>> compiling issue with allmodconfig.
>>
>> The related error:
>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>
>>
>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>> ---
>>  arch/arm64/include/asm/timex.h |    6 +++---
>>  arch/arm64/kernel/time.c       |    6 ------
>>  2 files changed, 3 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
>> index b24a31a..81a076e 100644
>> --- a/arch/arm64/include/asm/timex.h
>> +++ b/arch/arm64/include/asm/timex.h
>> @@ -16,14 +16,14 @@
>>  #ifndef __ASM_TIMEX_H
>>  #define __ASM_TIMEX_H
>>  
>> +#include <asm/arch_timer.h>
>> +
>>  /*
>>   * Use the current timer as a cycle counter since this is what we use for
>>   * the delay loop.
>>   */
>> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
>> +#define get_cycles()	arch_counter_get_cntvct()
>>  
>>  #include <asm-generic/timex.h>
>>  
>> -#define ARCH_HAS_READ_CURRENT_TIMER
>> -
>>  #endif
>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>> index a551f88..03dc371 100644
>> --- a/arch/arm64/kernel/time.c
>> +++ b/arch/arm64/kernel/time.c
>> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>>  	return arch_timer_read_counter() * sched_clock_mult;
>>  }
>>  
>> -int read_current_timer(unsigned long *timer_value)
>> -{
>> -	*timer_value = arch_timer_read_counter();
>> -	return 0;
>> -}
>> -
>>  void __init time_init(void)
>>  {
>>  	u32 arch_timer_rate;
>>
> 
> 


-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-08  4:37               ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-08  4:37 UTC (permalink / raw)
  To: Will Deacon, Marc Zyngier
  Cc: Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

Hello Maintainers:

Please help check it, when you have time.

Thanks.

On 05/27/2013 06:02 PM, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check this patch whether OK, when you have time.
> 
> Thanks.
> 
> On 05/21/2013 05:46 PM, Chen Gang wrote:
>>
>> Under arm64, we will calibrate the delay loop statically using a known
>> timer frequency, so delete read_current_timer(), or it will cause
>> compiling issue with allmodconfig.
>>
>> The related error:
>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>
>>
>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>> ---
>>  arch/arm64/include/asm/timex.h |    6 +++---
>>  arch/arm64/kernel/time.c       |    6 ------
>>  2 files changed, 3 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
>> index b24a31a..81a076e 100644
>> --- a/arch/arm64/include/asm/timex.h
>> +++ b/arch/arm64/include/asm/timex.h
>> @@ -16,14 +16,14 @@
>>  #ifndef __ASM_TIMEX_H
>>  #define __ASM_TIMEX_H
>>  
>> +#include <asm/arch_timer.h>
>> +
>>  /*
>>   * Use the current timer as a cycle counter since this is what we use for
>>   * the delay loop.
>>   */
>> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
>> +#define get_cycles()	arch_counter_get_cntvct()
>>  
>>  #include <asm-generic/timex.h>
>>  
>> -#define ARCH_HAS_READ_CURRENT_TIMER
>> -
>>  #endif
>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>> index a551f88..03dc371 100644
>> --- a/arch/arm64/kernel/time.c
>> +++ b/arch/arm64/kernel/time.c
>> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>>  	return arch_timer_read_counter() * sched_clock_mult;
>>  }
>>  
>> -int read_current_timer(unsigned long *timer_value)
>> -{
>> -	*timer_value = arch_timer_read_counter();
>> -	return 0;
>> -}
>> -
>>  void __init time_init(void)
>>  {
>>  	u32 arch_timer_rate;
>>
> 
> 


-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-08  4:37               ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-08  4:37 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Maintainers:

Please help check it, when you have time.

Thanks.

On 05/27/2013 06:02 PM, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check this patch whether OK, when you have time.
> 
> Thanks.
> 
> On 05/21/2013 05:46 PM, Chen Gang wrote:
>>
>> Under arm64, we will calibrate the delay loop statically using a known
>> timer frequency, so delete read_current_timer(), or it will cause
>> compiling issue with allmodconfig.
>>
>> The related error:
>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>
>>
>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>> ---
>>  arch/arm64/include/asm/timex.h |    6 +++---
>>  arch/arm64/kernel/time.c       |    6 ------
>>  2 files changed, 3 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
>> index b24a31a..81a076e 100644
>> --- a/arch/arm64/include/asm/timex.h
>> +++ b/arch/arm64/include/asm/timex.h
>> @@ -16,14 +16,14 @@
>>  #ifndef __ASM_TIMEX_H
>>  #define __ASM_TIMEX_H
>>  
>> +#include <asm/arch_timer.h>
>> +
>>  /*
>>   * Use the current timer as a cycle counter since this is what we use for
>>   * the delay loop.
>>   */
>> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
>> +#define get_cycles()	arch_counter_get_cntvct()
>>  
>>  #include <asm-generic/timex.h>
>>  
>> -#define ARCH_HAS_READ_CURRENT_TIMER
>> -
>>  #endif
>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>> index a551f88..03dc371 100644
>> --- a/arch/arm64/kernel/time.c
>> +++ b/arch/arm64/kernel/time.c
>> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>>  	return arch_timer_read_counter() * sched_clock_mult;
>>  }
>>  
>> -int read_current_timer(unsigned long *timer_value)
>> -{
>> -	*timer_value = arch_timer_read_counter();
>> -	return 0;
>> -}
>> -
>>  void __init time_init(void)
>>  {
>>  	u32 arch_timer_rate;
>>
> 
> 


-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-06-08  4:37               ` Chen Gang
  (?)
@ 2013-06-10  8:57                 ` Will Deacon
  -1 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-06-10  8:57 UTC (permalink / raw)
  To: Chen Gang
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On Sat, Jun 08, 2013 at 05:37:30AM +0100, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check it, when you have time.

[...]

> >> Under arm64, we will calibrate the delay loop statically using a known
> >> timer frequency, so delete read_current_timer(), or it will cause
> >> compiling issue with allmodconfig.
> >>
> >> The related error:
> >>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
> >>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
> >>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
> >>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> >>
> >>
> >> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> >> ---
> >>  arch/arm64/include/asm/timex.h |    6 +++---
> >>  arch/arm64/kernel/time.c       |    6 ------
> >>  2 files changed, 3 insertions(+), 9 deletions(-)

Looks ok to me. We'll take it for a spin and apply it if it doesn't catch
fire.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-10  8:57                 ` Will Deacon
  0 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-06-10  8:57 UTC (permalink / raw)
  To: Chen Gang
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On Sat, Jun 08, 2013 at 05:37:30AM +0100, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check it, when you have time.

[...]

> >> Under arm64, we will calibrate the delay loop statically using a known
> >> timer frequency, so delete read_current_timer(), or it will cause
> >> compiling issue with allmodconfig.
> >>
> >> The related error:
> >>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
> >>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
> >>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
> >>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> >>
> >>
> >> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> >> ---
> >>  arch/arm64/include/asm/timex.h |    6 +++---
> >>  arch/arm64/kernel/time.c       |    6 ------
> >>  2 files changed, 3 insertions(+), 9 deletions(-)

Looks ok to me. We'll take it for a spin and apply it if it doesn't catch
fire.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-10  8:57                 ` Will Deacon
  0 siblings, 0 replies; 40+ messages in thread
From: Will Deacon @ 2013-06-10  8:57 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Jun 08, 2013 at 05:37:30AM +0100, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check it, when you have time.

[...]

> >> Under arm64, we will calibrate the delay loop statically using a known
> >> timer frequency, so delete read_current_timer(), or it will cause
> >> compiling issue with allmodconfig.
> >>
> >> The related error:
> >>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
> >>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
> >>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
> >>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
> >>
> >>
> >> Signed-off-by: Chen Gang <gang.chen@asianux.com>
> >> ---
> >>  arch/arm64/include/asm/timex.h |    6 +++---
> >>  arch/arm64/kernel/time.c       |    6 ------
> >>  2 files changed, 3 insertions(+), 9 deletions(-)

Looks ok to me. We'll take it for a spin and apply it if it doesn't catch
fire.

Will

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-06-08  4:37               ` Chen Gang
  (?)
@ 2013-06-10  8:57                 ` Marc Zyngier
  -1 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-06-10  8:57 UTC (permalink / raw)
  To: Chen Gang
  Cc: Will Deacon, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On 08/06/13 05:37, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check it, when you have time.
> 
> Thanks.
> 
> On 05/27/2013 06:02 PM, Chen Gang wrote:
>> Hello Maintainers:
>>
>> Please help check this patch whether OK, when you have time.
>>
>> Thanks.
>>
>> On 05/21/2013 05:46 PM, Chen Gang wrote:
>>>
>>> Under arm64, we will calibrate the delay loop statically using a known
>>> timer frequency, so delete read_current_timer(), or it will cause
>>> compiling issue with allmodconfig.
>>>
>>> The related error:
>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>
>>>
>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>> ---
>>>  arch/arm64/include/asm/timex.h |    6 +++---
>>>  arch/arm64/kernel/time.c       |    6 ------
>>>  2 files changed, 3 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
>>> index b24a31a..81a076e 100644
>>> --- a/arch/arm64/include/asm/timex.h
>>> +++ b/arch/arm64/include/asm/timex.h
>>> @@ -16,14 +16,14 @@
>>>  #ifndef __ASM_TIMEX_H
>>>  #define __ASM_TIMEX_H
>>>  
>>> +#include <asm/arch_timer.h>
>>> +
>>>  /*
>>>   * Use the current timer as a cycle counter since this is what we use for
>>>   * the delay loop.
>>>   */
>>> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
>>> +#define get_cycles()	arch_counter_get_cntvct()
>>>  
>>>  #include <asm-generic/timex.h>
>>>  
>>> -#define ARCH_HAS_READ_CURRENT_TIMER
>>> -
>>>  #endif
>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>> index a551f88..03dc371 100644
>>> --- a/arch/arm64/kernel/time.c
>>> +++ b/arch/arm64/kernel/time.c
>>> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>>>  	return arch_timer_read_counter() * sched_clock_mult;
>>>  }
>>>  
>>> -int read_current_timer(unsigned long *timer_value)
>>> -{
>>> -	*timer_value = arch_timer_read_counter();
>>> -	return 0;
>>> -}
>>> -
>>>  void __init time_init(void)
>>>  {
>>>  	u32 arch_timer_rate;

Sorry for the delay replying. This looks good to me.

FWIW:
Acked-by: Marc Zyngier <marc.zyngier@arm.com>

	M.
-- 
Jazz is not dead. It just smells funny...


^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-10  8:57                 ` Marc Zyngier
  0 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-06-10  8:57 UTC (permalink / raw)
  To: Chen Gang
  Cc: Will Deacon, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On 08/06/13 05:37, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check it, when you have time.
> 
> Thanks.
> 
> On 05/27/2013 06:02 PM, Chen Gang wrote:
>> Hello Maintainers:
>>
>> Please help check this patch whether OK, when you have time.
>>
>> Thanks.
>>
>> On 05/21/2013 05:46 PM, Chen Gang wrote:
>>>
>>> Under arm64, we will calibrate the delay loop statically using a known
>>> timer frequency, so delete read_current_timer(), or it will cause
>>> compiling issue with allmodconfig.
>>>
>>> The related error:
>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>
>>>
>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>> ---
>>>  arch/arm64/include/asm/timex.h |    6 +++---
>>>  arch/arm64/kernel/time.c       |    6 ------
>>>  2 files changed, 3 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
>>> index b24a31a..81a076e 100644
>>> --- a/arch/arm64/include/asm/timex.h
>>> +++ b/arch/arm64/include/asm/timex.h
>>> @@ -16,14 +16,14 @@
>>>  #ifndef __ASM_TIMEX_H
>>>  #define __ASM_TIMEX_H
>>>  
>>> +#include <asm/arch_timer.h>
>>> +
>>>  /*
>>>   * Use the current timer as a cycle counter since this is what we use for
>>>   * the delay loop.
>>>   */
>>> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
>>> +#define get_cycles()	arch_counter_get_cntvct()
>>>  
>>>  #include <asm-generic/timex.h>
>>>  
>>> -#define ARCH_HAS_READ_CURRENT_TIMER
>>> -
>>>  #endif
>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>> index a551f88..03dc371 100644
>>> --- a/arch/arm64/kernel/time.c
>>> +++ b/arch/arm64/kernel/time.c
>>> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>>>  	return arch_timer_read_counter() * sched_clock_mult;
>>>  }
>>>  
>>> -int read_current_timer(unsigned long *timer_value)
>>> -{
>>> -	*timer_value = arch_timer_read_counter();
>>> -	return 0;
>>> -}
>>> -
>>>  void __init time_init(void)
>>>  {
>>>  	u32 arch_timer_rate;

Sorry for the delay replying. This looks good to me.

FWIW:
Acked-by: Marc Zyngier <marc.zyngier@arm.com>

	M.
-- 
Jazz is not dead. It just smells funny...

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-10  8:57                 ` Marc Zyngier
  0 siblings, 0 replies; 40+ messages in thread
From: Marc Zyngier @ 2013-06-10  8:57 UTC (permalink / raw)
  To: linux-arm-kernel

On 08/06/13 05:37, Chen Gang wrote:
> Hello Maintainers:
> 
> Please help check it, when you have time.
> 
> Thanks.
> 
> On 05/27/2013 06:02 PM, Chen Gang wrote:
>> Hello Maintainers:
>>
>> Please help check this patch whether OK, when you have time.
>>
>> Thanks.
>>
>> On 05/21/2013 05:46 PM, Chen Gang wrote:
>>>
>>> Under arm64, we will calibrate the delay loop statically using a known
>>> timer frequency, so delete read_current_timer(), or it will cause
>>> compiling issue with allmodconfig.
>>>
>>> The related error:
>>>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>
>>>
>>> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>> ---
>>>  arch/arm64/include/asm/timex.h |    6 +++---
>>>  arch/arm64/kernel/time.c       |    6 ------
>>>  2 files changed, 3 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/arch/arm64/include/asm/timex.h b/arch/arm64/include/asm/timex.h
>>> index b24a31a..81a076e 100644
>>> --- a/arch/arm64/include/asm/timex.h
>>> +++ b/arch/arm64/include/asm/timex.h
>>> @@ -16,14 +16,14 @@
>>>  #ifndef __ASM_TIMEX_H
>>>  #define __ASM_TIMEX_H
>>>  
>>> +#include <asm/arch_timer.h>
>>> +
>>>  /*
>>>   * Use the current timer as a cycle counter since this is what we use for
>>>   * the delay loop.
>>>   */
>>> -#define get_cycles()	({ cycles_t c; read_current_timer(&c); c; })
>>> +#define get_cycles()	arch_counter_get_cntvct()
>>>  
>>>  #include <asm-generic/timex.h>
>>>  
>>> -#define ARCH_HAS_READ_CURRENT_TIMER
>>> -
>>>  #endif
>>> diff --git a/arch/arm64/kernel/time.c b/arch/arm64/kernel/time.c
>>> index a551f88..03dc371 100644
>>> --- a/arch/arm64/kernel/time.c
>>> +++ b/arch/arm64/kernel/time.c
>>> @@ -68,12 +68,6 @@ unsigned long long notrace sched_clock(void)
>>>  	return arch_timer_read_counter() * sched_clock_mult;
>>>  }
>>>  
>>> -int read_current_timer(unsigned long *timer_value)
>>> -{
>>> -	*timer_value = arch_timer_read_counter();
>>> -	return 0;
>>> -}
>>> -
>>>  void __init time_init(void)
>>>  {
>>>  	u32 arch_timer_rate;

Sorry for the delay replying. This looks good to me.

FWIW:
Acked-by: Marc Zyngier <marc.zyngier@arm.com>

	M.
-- 
Jazz is not dead. It just smells funny...

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-06-10  8:57                 ` Will Deacon
  (?)
@ 2013-06-13  1:12                   ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-13  1:12 UTC (permalink / raw)
  To: Will Deacon
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On 06/10/2013 04:57 PM, Will Deacon wrote:
> On Sat, Jun 08, 2013 at 05:37:30AM +0100, Chen Gang wrote:
>> > Hello Maintainers:
>> > 
>> > Please help check it, when you have time.
> [...]
> 

OK, thanks.

>>>> > >> Under arm64, we will calibrate the delay loop statically using a known
>>>> > >> timer frequency, so delete read_current_timer(), or it will cause
>>>> > >> compiling issue with allmodconfig.
>>>> > >>
>>>> > >> The related error:
>>>> > >>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>> > >>
>>>> > >>
>>>> > >> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>> > >> ---
>>>> > >>  arch/arm64/include/asm/timex.h |    6 +++---
>>>> > >>  arch/arm64/kernel/time.c       |    6 ------
>>>> > >>  2 files changed, 3 insertions(+), 9 deletions(-)
> Looks ok to me. We'll take it for a spin and apply it if it doesn't catch
> fire.

Really need a carefully checking.

Thanks.
-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-13  1:12                   ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-13  1:12 UTC (permalink / raw)
  To: Will Deacon
  Cc: Marc Zyngier, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On 06/10/2013 04:57 PM, Will Deacon wrote:
> On Sat, Jun 08, 2013 at 05:37:30AM +0100, Chen Gang wrote:
>> > Hello Maintainers:
>> > 
>> > Please help check it, when you have time.
> [...]
> 

OK, thanks.

>>>> > >> Under arm64, we will calibrate the delay loop statically using a known
>>>> > >> timer frequency, so delete read_current_timer(), or it will cause
>>>> > >> compiling issue with allmodconfig.
>>>> > >>
>>>> > >> The related error:
>>>> > >>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>> > >>
>>>> > >>
>>>> > >> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>> > >> ---
>>>> > >>  arch/arm64/include/asm/timex.h |    6 +++---
>>>> > >>  arch/arm64/kernel/time.c       |    6 ------
>>>> > >>  2 files changed, 3 insertions(+), 9 deletions(-)
> Looks ok to me. We'll take it for a spin and apply it if it doesn't catch
> fire.

Really need a carefully checking.

Thanks.
-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-13  1:12                   ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-13  1:12 UTC (permalink / raw)
  To: linux-arm-kernel

On 06/10/2013 04:57 PM, Will Deacon wrote:
> On Sat, Jun 08, 2013 at 05:37:30AM +0100, Chen Gang wrote:
>> > Hello Maintainers:
>> > 
>> > Please help check it, when you have time.
> [...]
> 

OK, thanks.

>>>> > >> Under arm64, we will calibrate the delay loop statically using a known
>>>> > >> timer frequency, so delete read_current_timer(), or it will cause
>>>> > >> compiling issue with allmodconfig.
>>>> > >>
>>>> > >> The related error:
>>>> > >>   ERROR: "read_current_timer" [lib/rbtree_test.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [lib/interval_tree_test.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [fs/ext4/ext4.ko] undefined!
>>>> > >>   ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined!
>>>> > >>
>>>> > >>
>>>> > >> Signed-off-by: Chen Gang <gang.chen@asianux.com>
>>>> > >> ---
>>>> > >>  arch/arm64/include/asm/timex.h |    6 +++---
>>>> > >>  arch/arm64/kernel/time.c       |    6 ------
>>>> > >>  2 files changed, 3 insertions(+), 9 deletions(-)
> Looks ok to me. We'll take it for a spin and apply it if it doesn't catch
> fire.

Really need a carefully checking.

Thanks.
-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
  2013-06-10  8:57                 ` Marc Zyngier
  (?)
@ 2013-06-13  1:13                   ` Chen Gang
  -1 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-13  1:13 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Will Deacon, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On 06/10/2013 04:57 PM, Marc Zyngier wrote:
> Sorry for the delay replying. This looks good to me.
> 
> FWIW:
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>

Thanks, also sorry for my delay replying.

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-13  1:13                   ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-13  1:13 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Will Deacon, Catalin Marinas, Santosh Shilimkar, Tony Lindgren,
	linux-arm-kernel, linux-kernel, Linux-Arch

On 06/10/2013 04:57 PM, Marc Zyngier wrote:
> Sorry for the delay replying. This looks good to me.
> 
> FWIW:
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>

Thanks, also sorry for my delay replying.

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer().
@ 2013-06-13  1:13                   ` Chen Gang
  0 siblings, 0 replies; 40+ messages in thread
From: Chen Gang @ 2013-06-13  1:13 UTC (permalink / raw)
  To: linux-arm-kernel

On 06/10/2013 04:57 PM, Marc Zyngier wrote:
> Sorry for the delay replying. This looks good to me.
> 
> FWIW:
> Acked-by: Marc Zyngier <marc.zyngier@arm.com>

Thanks, also sorry for my delay replying.

-- 
Chen Gang

Asianux Corporation

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2013-06-13  1:14 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-20  6:48 [PATCH] arm64: kernel: compiling issue, need 'EXPORT_SYMBOL_GPL(read_current_timer)' Chen Gang
2013-05-20  6:48 ` Chen Gang
2013-05-20  7:15 ` Marc Zyngier
2013-05-20  7:15   ` Marc Zyngier
2013-05-20  9:56   ` Will Deacon
2013-05-20  9:56     ` Will Deacon
2013-05-21  4:06     ` Chen Gang
2013-05-21  4:06       ` Chen Gang
2013-05-21  6:13       ` Marc Zyngier
2013-05-21  6:13         ` Marc Zyngier
2013-05-21  8:41         ` Chen Gang
2013-05-21  8:41           ` Chen Gang
2013-05-21  8:58           ` Marc Zyngier
2013-05-21  8:58             ` Marc Zyngier
2013-05-21  9:26             ` Chen Gang
2013-05-21  9:26               ` Chen Gang
2013-05-21  8:53       ` Will Deacon
2013-05-21  8:53         ` Will Deacon
2013-05-21  9:27         ` Chen Gang
2013-05-21  9:27           ` Chen Gang
2013-05-21  9:46         ` [PATCH v2] arm64: kernel: compiling issue, need delete read_current_timer() Chen Gang
2013-05-21  9:46           ` Chen Gang
2013-05-27 10:02           ` Chen Gang
2013-05-27 10:02             ` Chen Gang
2013-05-27 10:02             ` Chen Gang
2013-06-08  4:37             ` Chen Gang
2013-06-08  4:37               ` Chen Gang
2013-06-08  4:37               ` Chen Gang
2013-06-10  8:57               ` Will Deacon
2013-06-10  8:57                 ` Will Deacon
2013-06-10  8:57                 ` Will Deacon
2013-06-13  1:12                 ` Chen Gang
2013-06-13  1:12                   ` Chen Gang
2013-06-13  1:12                   ` Chen Gang
2013-06-10  8:57               ` Marc Zyngier
2013-06-10  8:57                 ` Marc Zyngier
2013-06-10  8:57                 ` Marc Zyngier
2013-06-13  1:13                 ` Chen Gang
2013-06-13  1:13                   ` Chen Gang
2013-06-13  1:13                   ` Chen Gang

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.