All of lore.kernel.org
 help / color / mirror / Atom feed
From: nicolas.pitre@linaro.org (Nicolas Pitre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 00/15] multi-cluster power management
Date: Tue, 05 Feb 2013 00:21:57 -0500	[thread overview]
Message-ID: <1360041732-17936-1-git-send-email-nicolas.pitre@linaro.org> (raw)

This is version 4 of the patch series required to safely power up
and down CPUs in a cluster as can be found in b.L systems.  If nothing
major is reported, I'll send a pull request to Russell for this set
very soon.

Also included are the needed patches to allow CPU hotplug on RTSM
configured as a big.LITTLE system.  I'll hopefully send a separate pull
request for them later if the remaining issue with the CCI code can be
sorted out in time.

Please refer to http://article.gmane.org/gmane.linux.ports.arm.kernel/208625
for the initial series and particularly the cover page blurb for this work.

Thanks to those who provided review comments.

Changes from v3:

- DT binding documentation for the DCSCB.
- Patch to probe DT for DCSCB presence folded into the patch that
  introduced it.
- Patch to select SMP ops at boot time now split in two patches.
- Use all 8 bits from the MPIDR affinity fields in mcpm_head.S.
- Replaced gic_raise_softirq() with arch_send_wakeup_ipi_mask().
- Clear CTRL.C bit rather than calling cpu_proc_fin() to keep the I-cache
  enabled.
- Added definitions in the CCI code to clean up some magic values.

Changes from v2:

- The bL_ prefix has been changed into mcpm_ and surroundings adjusted
  accordingly.
- Documentation moved up one level in Documentation/arm/.
- Clarifications in commit log for patch #1 about future work.
- The debug macro in mcpm_head.S now displays CPU and cluster numbers.
- Patch improving mcpm_cpu_die() folded into the original patch that
  created it.
- Return -EADDRNOTAVAIL on ioremap failure.
- The auxcr patch moved down in the series to better identify dependencies.

Changes from v1:

- Pulled in Rob Herring's auxcr accessor patch and converted this series
  to it.
- VMajor rework of various barriers (some DSBs demoted to DMBs, etc.)
- The sync_mem() macro is now split and enhanced to properly process the
  cache for writers and readers in the cluster critical region helpers.
- BL_NR_CLUSTERS and BL_CPUS_PER_CLUSTER renamed to BL_MAX_CLUSTERS
  and BL_MAX_CPUS_PER_CLUSTER.
- Removed unused C definitions and prototypes for vlocks.
- Simplified the vlock memory allocation.
- The vlock code is GPL v2.
- Replaced MPIDR inline asm by read_cpuid_mpidr().
- Use of MPIDR_AFFINITY_LEVEL() to replace explicit shifts and masks.
- Dropped gic_cpu_if_down().
- Added a DSB before SEV and WFI.
- Fixed power_up_setup helper prototype.
- Nuked smp_wmb() in bL_set_entry_vector().
- Moved the CCI driver to drivers/bus/.
- Dependency on CONFIG_EXPERIMENTAL removed.
- Leftover garbage in Makefile removed.
- Added/clarified various comments in the assembly code.
- Some documentation typos fixed.
- Copyright notices updated to 2013

Still not addressed yet in this series:

- The CCI device tree binding descriptions.

Diffstat:

 Documentation/arm/cluster-pm-race-avoidance.txt | 498 ++++++++++++++++++
 Documentation/arm/vlocks.txt                    | 211 ++++++++
 .../devicetree/bindings/arm/rtsm-dcscb.txt      |  19 +
 arch/arm/Kconfig                                |   8 +
 arch/arm/common/Makefile                        |   1 +
 arch/arm/common/mcpm_entry.c                    | 314 +++++++++++
 arch/arm/common/mcpm_head.S                     | 219 ++++++++
 arch/arm/common/mcpm_platsmp.c                  |  86 +++
 arch/arm/common/vlock.S                         | 108 ++++
 arch/arm/common/vlock.h                         |  29 +
 arch/arm/include/asm/cp15.h                     |  14 +
 arch/arm/include/asm/mach/arch.h                |   3 +
 arch/arm/include/asm/mcpm_entry.h               | 190 +++++++
 arch/arm/kernel/setup.c                         |   5 +-
 arch/arm/mach-vexpress/Kconfig                  |   9 +
 arch/arm/mach-vexpress/Makefile                 |   1 +
 arch/arm/mach-vexpress/core.h                   |   2 +
 arch/arm/mach-vexpress/dcscb.c                  | 249 +++++++++
 arch/arm/mach-vexpress/dcscb_setup.S            |  80 +++
 arch/arm/mach-vexpress/platsmp.c                |  12 +
 arch/arm/mach-vexpress/v2m.c                    |   2 +-
 drivers/bus/Kconfig                             |   5 +
 drivers/bus/Makefile                            |   2 +
 drivers/bus/arm-cci.c                           | 125 +++++
 drivers/cpuidle/cpuidle-calxeda.c               |  14 -
 include/linux/arm-cci.h                         |  30 ++
 26 files changed, 2220 insertions(+), 16 deletions(-)

             reply	other threads:[~2013-02-05  5:21 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-05  5:21 Nicolas Pitre [this message]
2013-02-05  5:21 ` [PATCH v4 01/15] ARM: multi-cluster PM: secondary kernel entry code Nicolas Pitre
2013-04-23 19:19   ` Russell King - ARM Linux
2013-04-23 19:34     ` Nicolas Pitre
2013-04-23 20:09       ` Russell King - ARM Linux
2013-04-23 20:19         ` Nicolas Pitre
2013-02-05  5:21 ` [PATCH v4 02/15] ARM: mcpm: introduce the CPU/cluster power API Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 03/15] ARM: mcpm: introduce helpers for platform coherency exit/setup Nicolas Pitre
2013-04-05 23:00   ` Olof Johansson
2013-04-06 13:41     ` Nicolas Pitre
2013-04-24  9:10     ` Dave Martin
2013-02-05  5:22 ` [PATCH v4 04/15] ARM: mcpm: Add baremetal voting mutexes Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 05/15] ARM: mcpm_head.S: vlock-based first man election Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 06/15] ARM: mcpm: generic SMP secondary bringup and hotplug support Nicolas Pitre
2013-04-23 19:31   ` Russell King - ARM Linux
2013-04-23 19:36     ` Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 07/15] ARM: introduce common set_auxcr/get_auxcr functions Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 08/15] ARM: vexpress: introduce DCSCB support Nicolas Pitre
2013-02-07 18:14   ` Catalin Marinas
2013-02-07 18:56     ` Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 09/15] ARM: vexpress/dcscb: add CPU use counts to the power up/down API implementation Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 10/15] ARM: vexpress/dcscb: do not hardcode number of CPUs per cluster Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 11/15] drivers/bus: add ARM CCI support Nicolas Pitre
2013-04-23 19:38   ` Russell King - ARM Linux
2013-04-23 19:53     ` Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 12/15] ARM: CCI: ensure powerdown-time data is flushed from cache Nicolas Pitre
2013-04-23 19:40   ` Russell King - ARM Linux
2013-02-05  5:22 ` [PATCH v4 13/15] ARM: vexpress/dcscb: handle platform coherency exit/setup and CCI Nicolas Pitre
2013-02-05  5:22 ` [PATCH v4 14/15] ARM: Enable selection of SMP operations at boot time Nicolas Pitre
2013-04-05 22:43   ` Olof Johansson
2013-04-06 13:43     ` Nicolas Pitre
2013-04-09 16:30   ` Nicolas Pitre
2013-04-09 16:55     ` Jon Medhurst (Tixy)
2013-02-05  5:22 ` [PATCH v4 15/15] ARM: vexpress: Select multi-cluster SMP operation if required Nicolas Pitre
2013-02-06 16:38   ` Pawel Moll
2013-02-06 17:55     ` Nicolas Pitre
2013-04-05 22:48   ` Olof Johansson
2013-04-06 14:02     ` Nicolas Pitre
2013-04-08  9:10       ` Jon Medhurst (Tixy)
2013-04-09  5:41         ` Nicolas Pitre
2013-04-09  6:00           ` Jon Medhurst (Tixy)
2013-04-09 16:34             ` Nicolas Pitre
2013-04-09 17:28               ` Jon Medhurst (Tixy)
2013-04-23 19:42   ` Russell King - ARM Linux
2013-04-23 19:56     ` Nicolas Pitre
2013-04-23 20:04 ` [PATCH v4 00/15] multi-cluster power management Russell King - ARM Linux
2013-04-23 21:03   ` Nicolas Pitre
2013-04-23 21:46     ` Russell King - ARM Linux
2013-04-23 21:56       ` Nicolas Pitre
2013-04-23 22:44         ` Russell King - ARM Linux
2013-04-24  4:11           ` Nicolas Pitre
2013-04-24 20:25             ` Russell King - ARM Linux
2013-04-24 23:31               ` Nicolas Pitre
2013-04-24 14:25     ` Dave Martin
2013-04-23 21:11   ` Nicolas Pitre

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=1360041732-17936-1-git-send-email-nicolas.pitre@linaro.org \
    --to=nicolas.pitre@linaro.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.