linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/2] ARM: cache-l2x0: remove __init annotation from initialization functions
Date: Wed, 14 Sep 2011 09:42:38 +0100	[thread overview]
Message-ID: <20110914084237.GC6267@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <1315288107-14689-2-git-send-email-shawn.guo@linaro.org>

On Tue, Sep 06, 2011 at 01:48:26PM +0800, Shawn Guo wrote:
> If ARM core gets powered off during suspend, L2 cache controller
> has to be reinitialized by resume procedure.
> 
> The patch removes __init annotation from a few initialization
> functions to make the reinitialization possible.  For example,
> platform resume function can call l2x0_of_init() to get L2 cache
> back to work.
> 
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> ---
>  arch/arm/include/asm/hardware/cache-l2x0.h |    2 +-
>  arch/arm/mm/cache-l2x0.c                   |   10 +++++-----
>  2 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/include/asm/hardware/cache-l2x0.h b/arch/arm/include/asm/hardware/cache-l2x0.h
> index d22765c..d270310 100644
> --- a/arch/arm/include/asm/hardware/cache-l2x0.h
> +++ b/arch/arm/include/asm/hardware/cache-l2x0.h
> @@ -89,7 +89,7 @@
>  #define L2X0_ADDR_FILTER_EN		1
>  
>  #ifndef __ASSEMBLY__
> -extern void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask);
> +extern void l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask);
>  #if defined(CONFIG_CACHE_L2X0) && defined(CONFIG_OF)
>  extern int l2x0_of_init(__u32 aux_val, __u32 aux_mask);
>  #else
> diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
> index c035b9a..7835cb6 100644
> --- a/arch/arm/mm/cache-l2x0.c
> +++ b/arch/arm/mm/cache-l2x0.c
> @@ -280,7 +280,7 @@ static void l2x0_disable(void)
>  	spin_unlock_irqrestore(&l2x0_lock, flags);
>  }
>  
> -void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
> +void l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask)
>  {
>  	__u32 aux;
>  	__u32 cache_id;

I'm unconvinced about the wise-ness of this.  We read-modify-write the
auxillary control register, which means some bits are preserved from
the initial boot.  If the boot loader sets the L2 cache up for normal
boot and not for resume, we'll end up with different L2 cache settings.

We've historically seen this kind of thing with boot loaders over the
years, to the point where systems boot at one CPU clock rate but resume
at some other CPU clock rate.

So, it may be wiser to implement a 'save' and 'restore' interface
instead so that we can be sure that things are setup in the same way
after resume.

  parent reply	other threads:[~2011-09-14  8:42 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-06  5:48 [PATCH v2 0/2] make reinitialization of ARM core components possible Shawn Guo
2011-09-06  5:48 ` [PATCH v2 1/2] ARM: cache-l2x0: remove __init annotation from initialization functions Shawn Guo
2011-09-06  7:19   ` Linus Walleij
2011-09-12  5:27     ` Shawn Guo
2011-09-14  8:42   ` Russell King - ARM Linux [this message]
2011-09-14  8:53     ` Santosh
2011-09-14 19:05       ` Russell King - ARM Linux
2011-09-14  9:59     ` Barry Song
2011-09-15  1:39     ` Shawn Guo
2011-09-15  8:32       ` Russell King - ARM Linux
2011-09-16  3:24         ` Barry Song
2011-09-17 10:45           ` Russell King - ARM Linux
2011-09-17 14:41             ` Barry Song
2011-09-17 14:56               ` Russell King - ARM Linux
2011-09-19  3:36                 ` Barry Song
2011-09-19  5:33                 ` Barry Song
2011-09-23 20:55                   ` Russell King - ARM Linux
2011-09-26  2:43                     ` Barry Song
2011-09-17 15:14             ` Shawn Guo
2011-09-06  5:48 ` [PATCH v2 2/2] ARM: smp_scu: remove __init annotation from scu_enable() Shawn Guo
2011-09-17  8:32   ` Shawn Guo
2011-09-22 15:04     ` Shawn Guo
2011-09-23 20:49       ` Russell King - ARM Linux
2011-09-24 10:39         ` Shawn Guo
2011-09-24 10:38           ` Russell King - ARM Linux
2011-09-06  6:01 ` [PATCH v2 0/2] make reinitialization of ARM core components possible Santosh
2011-09-06  7:02   ` Santosh
2011-09-12  5:41   ` Shawn Guo
2011-09-14 19:07     ` Russell King - ARM Linux
2011-09-15  1:53       ` Shawn Guo
2011-09-15  8:43         ` Russell King - ARM Linux

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=20110914084237.GC6267@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).