All of lore.kernel.org
 help / color / mirror / Atom feed
From: skannan@codeaurora.org (Saravana Kannan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] [ARM] Add ARCH_PROVIDES_UDELAY config option
Date: Thu, 29 Apr 2010 19:51:02 -0700	[thread overview]
Message-ID: <4BDA4596.9060905@codeaurora.org> (raw)
In-Reply-To: <1272532104-20074-1-git-send-email-ccross@android.com>

You beat me to it :-) I was thinking of doing this for now before trying 
to find the *perfect* fix with the cpufreq maintainers.

If you want, you can also add in details about how using a constant freq 
counter would also avoid the issue of CPU freq switching while we are 
delay looping.

The current ARM implementation doesn't handle this either.

If my opinion matters, I think this is a good patch.

-Saravana

Colin Cross wrote:
> On SMP kernels, the loops_per_jiffy value is not scaled, leading to
> udelays that are too long if the CPU frequency is scaled down from
> the frequency at loops_per_jiffy calibration, or too short if the
> frequency is scaled up.  Some SOCs have a timer with a constant tick
> rate that can be used to time udelays, similar to the TSC on x86.
> Provide a config flag to allow these SOCs to override the default
> ARM udelay implementation.
> 
> Signed-off-by: Colin Cross <ccross@android.com>
> ---
>  arch/arm/Kconfig             |    3 +++
>  arch/arm/include/asm/delay.h |    4 ++++
>  arch/arm/lib/Makefile        |    6 +++++-
>  3 files changed, 12 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 33d2825..d9923b0 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -175,6 +175,9 @@ config ARM_L1_CACHE_SHIFT_6
>  	help
>  	  Setting ARM L1 cache line size to 64 Bytes.
>  
> +config ARCH_PROVIDES_UDELAY
> +  bool
> +
>  if OPROFILE
>  
>  config OPROFILE_ARMV6
> diff --git a/arch/arm/include/asm/delay.h b/arch/arm/include/asm/delay.h
> index b2deda1..57f1fa0 100644
> --- a/arch/arm/include/asm/delay.h
> +++ b/arch/arm/include/asm/delay.h
> @@ -8,6 +8,9 @@
>  
>  #include <asm/param.h>	/* HZ */
>  
> +#ifdef CONFIG_ARCH_PROVIDES_UDELAY
> +#include <mach/delay.h>
> +#else
>  extern void __delay(int loops);
>  
>  /*
> @@ -40,5 +43,6 @@ extern void __const_udelay(unsigned long);
>  			__const_udelay((n) * ((2199023U*HZ)>>11))) :	\
>  	  __udelay(n))
>  
> +#endif /* defined(ARCH_PROVIDES_UDELAY) */
>  #endif /* defined(_ARM_DELAY_H) */
>  
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index 030ba72..aa449e3 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -6,7 +6,7 @@
>  
>  lib-y		:= backtrace.o changebit.o csumipv6.o csumpartial.o   \
>  		   csumpartialcopy.o csumpartialcopyuser.o clearbit.o \
> -		   delay.o findbit.o memchr.o memcpy.o		      \
> +		   findbit.o memchr.o memcpy.o                        \
>  		   memmove.o memset.o memzero.o setbit.o              \
>  		   strncpy_from_user.o strnlen_user.o                 \
>  		   strchr.o strrchr.o                                 \
> @@ -17,6 +17,10 @@ lib-y		:= backtrace.o changebit.o csumipv6.o csumpartial.o   \
>  
>  mmu-y	:= clear_user.o copy_page.o getuser.o putuser.o
>  
> +ifneq ($(CONFIG_ARCH_PROVIDES_UDELAY),y)
> +  lib-y += delay.o
> +endif
> +
>  # the code in uaccess.S is not preemption safe and
>  # probably faster on ARMv3 only
>  ifeq ($(CONFIG_PREEMPT),y)

  reply	other threads:[~2010-04-30  2:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-29  9:08 [PATCH] [ARM] Add ARCH_PROVIDES_UDELAY config option Colin Cross
2010-04-30  2:51 ` Saravana Kannan [this message]
2010-04-30 10:12   ` Russell King - ARM Linux
2010-04-30 19:14     ` Colin Cross

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BDA4596.9060905@codeaurora.org \
    --to=skannan@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.