[PATCH 00/39] CPS cpuidle & hotplug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series implements a cpuidle driver for systems built around the
MIPS Coherent Processing System (CPS) architecture - that is, systems
with a Coherence Manager, Global Interrupt Controller & for CM>=2 a
Cluster Power Controller.

The first 5 patches provide some infrastructure used to save context
across states where CPUs lose power. In this series that is the cpuidle
power gated idle state, but in future may also include suspend to RAM.

Patches 6 to 11 ensure that clockevent devices are used appropriately
allowing CPUs to switch to using tick broadcasts when necessary.

Patches 12 to 16 provide various small things for use by later patches
in the series.

Patches 17 to 25 provide access to a few new instructions via uasm for
use by later patches in the series.

Patches 26 to 29 make changes to smp-cps in preparation for supporting
hotplug & the power gated idle state.

Patch 30 introduces code to generate entry points for the various idle
states available in the system. Patch 31 makes use of that to implement
support for hotplug, powering down cores where possible.

Patches 32 to 34 make things a little more foolproof by ensuring that
multi-core SMP is not attempted with an unsuitable (non-coherent) CCA,
and by setting a suitable CCA by default.

Patches 35 & 36 are general infrastructure for supporting cpuidle
drivers for the MIPS architecture.

Patch 37 allows access to the struct cpuidle_device per-CPU variable
defined in generic cpuidle code.

Patch 38 adds a cpuidle driver for MIPS CPS systems, making use of the
infrastructure added earlier in the series.

Finally patch 39 enables the CONFIG_MIPS_CPS SMP implementation by
default on Malta, in place of the older & deprecated CONFIG_MIPS_CMP.

James Hogan (5):
  MIPS: PM: Add CPU PM callbacks for general CPU context
  MIPS: traps: Add CPU PM callback for trap configuration
  MIPS: c-r4k: Add CPU PM callback for coherency
  MIPS: tlb-r4k: Add CPU PM callback to reconfigure TLB
  MIPS: PM: Implement PM helper macros

Paul Burton (34):
  MIPS: mark GIC clockevent device with CLOCK_EVT_FEAT_C3STOP
  MIPS: allow GIC clockevent device config from other CPUs
  MIPS: mark R4K clockevent device with CLOCK_EVT_FEAT_C3STOP
  MIPS: mark R4K clockevent device with CLOCK_EVT_FEAT_PERCPU
  MIPS: allow R4K clockevent device to function regardless of GIC
  MIPS: support for generic clockevents broadcast
  MIPS: introduce cpu_coherent_mask
  MIPS: CPC: provide functions to retrieve register addresses
  MIPS: CPC: provide locking functions
  MIPS: add kmap_noncoherent to wire a cached non-coherent TLB entry
  MIPS: MT: define write_c0_tchalt macro
  MIPS: inst.h: define COP0 wait op
  MIPS: inst.h: define MT yield op
  MIPS: inst.h: define microMIPS sync op
  MIPS: inst.h: define microMIPS wait op
  MIPS: uasm: add a label variant of beq
  MIPS: uasm: add jalr instruction
  MIPS: uasm: add sync instruction
  MIPS: uasm: add wait instruction
  MIPS: uasm: add MT ASE yield instruction
  MIPS: smp-cps: rework core/VPE initialisation
  MIPS: smp-cps: function to determine whether CPS SMP is in use
  MIPS: smp-cps: flush cache after patching mips_cps_core_entry
  MIPS: smp-cps: use CPC core-other locking
  MIPS: pm-cps: add PM state entry code for CPS systems
  MIPS: smp-cps: hotplug support
  MIPS: smp-cps: prevent multi-core SMP with unsuitable CCA
  MIPS: smp-cps: set a coherent default CCA
  MIPS: smp-cps: duplicate core0 CCA on secondary cores
  MIPS: cpuidle wait instruction state
  MIPS: include cpuidle Kconfig menu
  cpuidle: declare cpuidle_dev in cpuidle.h
  cpuidle: cpuidle-cps: add MIPS CPS cpuidle driver
  MIPS: Malta: CPS SMP by default

 arch/mips/Kconfig                         |  15 +-
 arch/mips/configs/maltasmvp_defconfig     |   3 +-
 arch/mips/configs/maltasmvp_eva_defconfig |   3 +-
 arch/mips/include/asm/cacheflush.h        |   6 +
 arch/mips/include/asm/gic.h               |   1 +
 arch/mips/include/asm/idle.h              |  14 +
 arch/mips/include/asm/mips-cpc.h          |  34 +-
 arch/mips/include/asm/mipsmtregs.h        |   2 +
 arch/mips/include/asm/mmu_context.h       |  10 +-
 arch/mips/include/asm/pgtable.h           |   2 +
 arch/mips/include/asm/pm-cps.h            |  51 +++
 arch/mips/include/asm/pm.h                | 167 +++++++
 arch/mips/include/asm/smp-cps.h           |  19 +-
 arch/mips/include/asm/smp.h               |   3 +
 arch/mips/include/asm/uasm.h              |   9 +
 arch/mips/include/uapi/asm/inst.h         |  26 +-
 arch/mips/kernel/Makefile                 |   3 +
 arch/mips/kernel/asm-offsets.c            |  29 +-
 arch/mips/kernel/cevt-gic.c               |   5 +-
 arch/mips/kernel/cevt-r4k.c               |  10 +-
 arch/mips/kernel/cps-vec.S                | 328 +++++++++++++-
 arch/mips/kernel/idle.c                   |  11 +
 arch/mips/kernel/irq-gic.c                |  15 +
 arch/mips/kernel/mips-cpc.c               |  28 ++
 arch/mips/kernel/pm-cps.c                 | 705 ++++++++++++++++++++++++++++++
 arch/mips/kernel/pm.c                     |  99 +++++
 arch/mips/kernel/smp-cps.c                | 426 +++++++++++-------
 arch/mips/kernel/smp-gic.c                |  11 +
 arch/mips/kernel/smp.c                    |  47 ++
 arch/mips/kernel/traps.c                  |  93 +++-
 arch/mips/mm/c-r4k.c                      |  24 +
 arch/mips/mm/init.c                       |  14 +-
 arch/mips/mm/tlb-r4k.c                    |  34 +-
 arch/mips/mm/uasm-micromips.c             |   2 +
 arch/mips/mm/uasm-mips.c                  |   4 +
 arch/mips/mm/uasm.c                       |  31 +-
 drivers/cpuidle/Kconfig                   |   5 +
 drivers/cpuidle/Kconfig.mips              |  17 +
 drivers/cpuidle/Makefile                  |   4 +
 drivers/cpuidle/cpuidle-cps.c             | 186 ++++++++
 include/linux/cpuidle.h                   |   1 +
 41 files changed, 2261 insertions(+), 236 deletions(-)
 create mode 100644 arch/mips/include/asm/pm-cps.h
 create mode 100644 arch/mips/include/asm/pm.h
 create mode 100644 arch/mips/kernel/pm-cps.c
 create mode 100644 arch/mips/kernel/pm.c
 create mode 100644 drivers/cpuidle/Kconfig.mips
 create mode 100644 drivers/cpuidle/cpuidle-cps.c

-- 
1.8.5.3



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux