From: santosh.shilimkar@ti•com (Santosh Shilimkar)
To: linux-arm-kernel@lists•infradead.org
Subject: [RFC PATCH 06/17] ARM: kernel: save/restore generic infrastructure
Date: Thu, 07 Jul 2011 18:58:19 -0700 [thread overview]
Message-ID: <4E16643B.5020305@ti.com> (raw)
In-Reply-To: <1310053830-23779-7-git-send-email-lorenzo.pieralisi@arm.com>
On 7/7/2011 8:50 AM, Lorenzo Pieralisi wrote:
> This patch provides the code infrastructure needed to maintain
> a generic per-cpu architecture implementation of idle code.
>
> sr_platform.c :
> - code manages patchset initialization and memory management
>
> sr_context.c:
> - code initializes run-time context save/restore generic
> support
>
> sr_power.c:
> - provides the generic infrastructure to enter exit low
> power modes and communicate with Power Control Unit (PCU)
>
> v7 support hinges on the basic infrastructure to provide per-cpu
> arch implementation basically through standard function pointers
> signatures.
>
> Preprocessor defines include size of data needed to save/restore
> L2 state. This define value should be moved to the respective
> subsystem (PL310) once the patchset IF to that subsystem is settled.
>
> Signed-off-by: Lorenzo Pieralisi<lorenzo.pieralisi@arm•com>
> ---
[...]
> diff --git a/arch/arm/kernel/sr_helpers.h b/arch/arm/kernel/sr_helpers.h
> new file mode 100644
> index 0000000..1ae3a9a
> --- /dev/null
> +++ b/arch/arm/kernel/sr_helpers.h
> @@ -0,0 +1,56 @@
> +/*
> + * Copyright (C) 2008-2011 ARM Limited
> + * Author(s): Jon Callan, Lorenzo Pieralisi
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +static inline int sr_platform_get_cpu_index(void)
> +{
> + unsigned int cpu;
> + __asm__ __volatile__(
> + "mrc p15, 0, %0, c0, c0, 5\n\t"
> + : "=r" (cpu));
> + return cpu& 0xf;
> +}
> +
> +/*
> + * Placeholder for further extensions
> + */
> +static inline int sr_platform_get_cluster_index(void)
> +{
> + return 0;
> +}
> +
> +static inline void __iomem *sr_platform_cbar(void)
> +{
> + void __iomem *base;
> + __asm__ __volatile__(
> + "mrc p15, 4, %0, c15, c0, 0\n\t"
> + : "=r" (base));
> + return base;
> +}
> +
> +#ifdef CONFIG_SMP
> +static inline void exit_coherency(void)
> +{
> + unsigned int v;
> + asm volatile (
> + "mrc p15, 0, %0, c1, c0, 1\n"
> + "bic %0, %0, %1\n"
> + "mcr p15, 0, %0, c1, c0, 1\n"
You should have a isb here.
> + : "=&r" (v)
> + : "Ir" (0x40)
> + : );
> +}
To avoid aborts on platform which doesn't provide
access to SMP bit, NSACR bit 18 should be read.
Something like....
mrc p15, 0, r0, c1, c1, 2
tst r0, #(1 << 18)
mrcne p15, 0, r0, c1, c0, 1
bicne r0, r0, #(1 << 6)
mcrne p15, 0, r0, c1, c0, 1
Regards
Santosh
next prev parent reply other threads:[~2011-07-08 1:58 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-07 15:50 [RFC PATCH 00/17] ARM: common idle infrastructure Lorenzo Pieralisi
2011-07-07 15:50 ` [PATCH 01/17] ARM: proc: add definition of cpu_reset for ARMv6 and ARMv7 cores Lorenzo Pieralisi
2011-07-08 1:12 ` Santosh Shilimkar
2011-07-08 8:22 ` Will Deacon
2011-07-09 10:14 ` Russell King - ARM Linux
2011-07-10 11:00 ` Will Deacon
2011-07-10 11:52 ` Russell King - ARM Linux
2011-07-10 13:21 ` Will Deacon
2011-07-07 15:50 ` [PATCH 02/17] ARM: Add cpu power management notifiers Lorenzo Pieralisi
2011-07-08 1:14 ` Santosh Shilimkar
2011-07-09 10:15 ` Russell King - ARM Linux
2011-07-09 21:32 ` Colin Cross
2011-07-07 15:50 ` [PATCH 03/17] ARM: gic: Use cpu pm notifiers to save gic state Lorenzo Pieralisi
2011-07-08 1:35 ` Santosh Shilimkar
2011-07-08 1:41 ` Colin Cross
2011-07-08 2:07 ` Santosh Shilimkar
2011-07-08 7:08 ` Kukjin Kim
2011-07-09 10:21 ` Russell King - ARM Linux
2011-07-09 22:10 ` Colin Cross
2011-07-09 22:33 ` Russell King - ARM Linux
2011-07-09 23:01 ` Colin Cross
2011-07-09 23:05 ` Russell King - ARM Linux
2011-07-09 23:24 ` Colin Cross
2011-07-10 0:10 ` Santosh Shilimkar
2011-07-21 8:32 ` Santosh Shilimkar
2011-07-21 10:27 ` Lorenzo Pieralisi
2011-07-21 10:46 ` Santosh Shilimkar
2011-07-21 19:06 ` Colin Cross
2011-07-22 5:10 ` Santosh Shilimkar
2011-07-22 5:21 ` Colin Cross
2011-08-17 16:15 ` Santosh
2011-07-07 15:50 ` [PATCH 04/17] ARM: vfp: Use cpu pm notifiers to save vfp state Lorenzo Pieralisi
2011-07-09 10:44 ` Russell King - ARM Linux
2011-07-09 14:32 ` Russell King - ARM Linux
2011-07-07 15:50 ` [RFC PATCH 05/17] ARM: kernel: save/restore kernel IF Lorenzo Pieralisi
2011-07-08 1:45 ` Santosh Shilimkar
2011-07-08 8:39 ` Lorenzo Pieralisi
2011-07-08 16:12 ` Frank Hofmann
2011-07-11 14:00 ` Lorenzo Pieralisi
2011-07-11 14:31 ` Frank Hofmann
2011-07-11 16:02 ` Lorenzo Pieralisi
2011-07-11 16:57 ` Frank Hofmann
2011-07-11 18:05 ` Lorenzo Pieralisi
2011-07-11 18:40 ` Russell King - ARM Linux
2011-07-11 18:51 ` Colin Cross
2011-07-11 19:19 ` Russell King - ARM Linux
2011-07-11 19:38 ` Colin Cross
2011-07-11 20:09 ` Santosh Shilimkar
2011-07-11 20:05 ` Santosh Shilimkar
2011-07-11 20:14 ` Russell King - ARM Linux
2011-07-11 21:31 ` Santosh Shilimkar
2011-07-12 10:12 ` Lorenzo Pieralisi
2011-07-12 10:19 ` Russell King - ARM Linux
2011-07-09 8:38 ` Russell King - ARM Linux
2011-07-09 8:45 ` Russell King - ARM Linux
2011-07-11 15:36 ` Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 06/17] ARM: kernel: save/restore generic infrastructure Lorenzo Pieralisi
2011-07-08 1:58 ` Santosh Shilimkar [this message]
2011-07-08 10:33 ` Lorenzo Pieralisi
2011-07-09 10:01 ` Russell King - ARM Linux
2011-07-11 11:33 ` Lorenzo Pieralisi
2011-07-28 16:22 ` Amit Kachhap
2011-07-28 18:17 ` Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 07/17] ARM: kernel: save/restore v7 assembly helpers Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 08/17] ARM: kernel: save/restore arch runtime support Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 09/17] ARM: kernel: v7 resets support Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 10/17] ARM: kernel: save/restore v7 infrastructure support Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 11/17] ARM: kernel: add support for Lamport's bakery locks Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 12/17] ARM: kernel: add SCU reset hook Lorenzo Pieralisi
2011-07-08 2:14 ` Santosh Shilimkar
2011-07-08 9:47 ` Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 13/17] ARM: mm: L2x0 save/restore support Lorenzo Pieralisi
2011-07-07 22:06 ` Colin Cross
2011-07-08 8:25 ` Lorenzo Pieralisi
2011-07-08 2:19 ` Santosh Shilimkar
2011-07-08 10:54 ` Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 14/17] ARM: kernel: save/restore 1:1 page tables Lorenzo Pieralisi
2011-07-08 2:24 ` Santosh Shilimkar
2011-07-08 10:48 ` Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 15/17] ARM: perf: use cpu pm notifiers to save pmu state Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 16/17] ARM: PM: enhance idle pm notifiers Lorenzo Pieralisi
2011-07-07 21:20 ` Colin Cross
2011-07-08 9:04 ` Lorenzo Pieralisi
2011-07-07 15:50 ` [RFC PATCH 17/17] ARM: kernel: save/restore build infrastructure Lorenzo Pieralisi
2011-07-08 2:29 ` Santosh Shilimkar
2011-07-08 15:14 ` Lorenzo Pieralisi
2011-07-26 12:14 ` Amit Kachhap
2011-07-27 8:48 ` Lorenzo Pieralisi
2011-07-07 17:15 ` [RFC PATCH 00/17] ARM: common idle infrastructure Russell King - ARM Linux
2011-07-08 7:56 ` Lorenzo Pieralisi
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=4E16643B.5020305@ti.com \
--to=santosh.shilimkar@ti$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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