All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/15] Make SMP timers standalone
@ 2011-12-22 17:27 Marc Zyngier
  2011-12-22 17:27 ` [PATCH v2 01/15] ARM: local timers: allow smp_twd to be used standalone Marc Zyngier
                   ` (15 more replies)
  0 siblings, 16 replies; 40+ messages in thread
From: Marc Zyngier @ 2011-12-22 17:27 UTC (permalink / raw)
  To: linux-arm-kernel

The LOCAL_TIMERS infrastructure has a few limitations:
- It only allows one implementation to be compiled in, hence
  preventing a single kernel image to be booted on hardware with
  different requirements (Tegra and MSM, for example).
- It is only supported on SMP, which is a problem on platforms where
  the local timer can be used on UP platforms (Cortex A15 being one).

The proposal is to convert local timer drivers to be "standalone" (not
relying on the local timer infrastructure) and to use a CPU notifier
to have the timer brought up or down on non-boot CPUs.

The SMP support code can then be simplified to only manage the
boadcast timer, which is always installed, and leave the generic
kernel code to pick the highest priority timer. CONFIG_LOCAL_TIMERS
disappears in the process.

Tested on EB11MP, OMAP4 and Tegra. Based on next-20111222.

>From v1:
- Various bug fixes
- DT support for smp_twd
- Added support for highbank and imx6q

Marc Zyngier (15):
  ARM: local timers: allow smp_twd to be used standalone
  ARM: smp_twd: add device tree support
  ARM: local timers: switch realview to standalone smp_twd
  ARM: local timers: switch vexpress to standalone smp_twd
  ARM: local timers: remove localtimer.c from plat-versatile
  ARM: local timers: switch tegra to standalone smp_twd
  ARM: local timers: switch omap4 to standalone smp_twd
  ARM: local timers: switch shmobile to standalone smp_twd
  ARM: local timers: switch ux500 to standalone smp_twd
  ARM: local timers: switch highbank to standalone smp_twd
  ARM: local timers: switch imx6q to standalone smp_twd
  ARM: smp_twd: remove support for non-standalone version
  ARM: local timers: make MCT timer standalone
  ARM: local timers: make MSM timers standalone
  ARM: local timers: Remove CONFIG_LOCAL_TIMERS support

 Documentation/devicetree/bindings/arm/twd.txt |   29 +++++
 arch/arm/Kconfig                              |   15 +--
 arch/arm/include/asm/localtimer.h             |   57 ---------
 arch/arm/include/asm/smp_twd.h                |   19 +++-
 arch/arm/kernel/smp.c                         |   54 ++-------
 arch/arm/kernel/smp_twd.c                     |  155 +++++++++++++++++++------
 arch/arm/mach-exynos/mct.c                    |   85 ++++++++++----
 arch/arm/mach-highbank/Makefile               |    1 -
 arch/arm/mach-highbank/highbank.c             |   13 ++
 arch/arm/mach-highbank/localtimer.c           |   40 -------
 arch/arm/mach-imx/Makefile                    |    1 -
 arch/arm/mach-imx/localtimer.c                |   35 ------
 arch/arm/mach-imx/mach-imx6q.c                |   12 ++
 arch/arm/mach-msm/timer.c                     |   92 +++++++++++----
 arch/arm/mach-omap2/Kconfig                   |    2 +-
 arch/arm/mach-omap2/Makefile                  |    1 -
 arch/arm/mach-omap2/timer-mpu.c               |   39 ------
 arch/arm/mach-omap2/timer.c                   |   38 +++++-
 arch/arm/mach-realview/Kconfig                |    3 +
 arch/arm/mach-realview/realview_eb.c          |   33 +++++-
 arch/arm/mach-realview/realview_pb11mp.c      |   31 +++++-
 arch/arm/mach-realview/realview_pbx.c         |   30 +++++-
 arch/arm/mach-shmobile/Kconfig                |    1 +
 arch/arm/mach-shmobile/Makefile               |    1 -
 arch/arm/mach-shmobile/include/mach/common.h  |    3 +
 arch/arm/mach-shmobile/localtimer.c           |   26 ----
 arch/arm/mach-shmobile/smp-sh73a0.c           |   32 +++++-
 arch/arm/mach-shmobile/timer.c                |   10 ++
 arch/arm/mach-tegra/Kconfig                   |    1 +
 arch/arm/mach-tegra/Makefile                  |    2 +-
 arch/arm/mach-tegra/localtimer.c              |   26 ----
 arch/arm/mach-tegra/timer.c                   |   34 +++++-
 arch/arm/mach-ux500/Kconfig                   |    1 +
 arch/arm/mach-ux500/Makefile                  |    1 -
 arch/arm/mach-ux500/localtimer.c              |   29 -----
 arch/arm/mach-ux500/timer.c                   |   41 ++++++-
 arch/arm/mach-vexpress/Kconfig                |    1 +
 arch/arm/mach-vexpress/ct-ca9x4.c             |   29 ++++-
 arch/arm/plat-versatile/Makefile              |    1 -
 arch/arm/plat-versatile/localtimer.c          |   27 -----
 40 files changed, 591 insertions(+), 460 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/twd.txt
 delete mode 100644 arch/arm/include/asm/localtimer.h
 delete mode 100644 arch/arm/mach-highbank/localtimer.c
 delete mode 100644 arch/arm/mach-imx/localtimer.c
 delete mode 100644 arch/arm/mach-omap2/timer-mpu.c
 delete mode 100644 arch/arm/mach-shmobile/localtimer.c
 delete mode 100644 arch/arm/mach-tegra/localtimer.c
 delete mode 100644 arch/arm/mach-ux500/localtimer.c
 delete mode 100644 arch/arm/plat-versatile/localtimer.c

-- 
1.7.7.1

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2012-01-05 19:34 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-22 17:27 [PATCH v2 00/15] Make SMP timers standalone Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 01/15] ARM: local timers: allow smp_twd to be used standalone Marc Zyngier
2011-12-22 20:38   ` Russell King - ARM Linux
2011-12-22 17:27 ` [PATCH v2 02/15] ARM: smp_twd: add device tree support Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 03/15] ARM: local timers: switch realview to standalone smp_twd Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 04/15] ARM: local timers: switch vexpress " Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 05/15] ARM: local timers: remove localtimer.c from plat-versatile Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 06/15] ARM: local timers: switch tegra to standalone smp_twd Marc Zyngier
2011-12-22 19:22   ` Colin Cross
2011-12-22 17:27 ` [PATCH v2 07/15] ARM: local timers: switch omap4 " Marc Zyngier
2011-12-23  6:37   ` Shilimkar, Santosh
2011-12-22 17:27 ` [PATCH v2 08/15] ARM: local timers: switch shmobile " Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 09/15] ARM: local timers: switch ux500 " Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 10/15] ARM: local timers: switch highbank " Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 11/15] ARM: local timers: switch imx6q " Marc Zyngier
2011-12-25 13:40   ` Shawn Guo
2011-12-22 17:27 ` [PATCH v2 12/15] ARM: smp_twd: remove support for non-standalone version Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 13/15] ARM: local timers: make MCT timer standalone Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 14/15] ARM: local timers: make MSM timers standalone Marc Zyngier
2011-12-22 17:27 ` [PATCH v2 15/15] ARM: local timers: Remove CONFIG_LOCAL_TIMERS support Marc Zyngier
2011-12-22 19:32 ` [PATCH v2 00/15] Make SMP timers standalone Russell King - ARM Linux
2012-01-04 17:39   ` Marc Zyngier
2012-01-04 21:47     ` Russell King - ARM Linux
2012-01-05  0:00       ` Linus Walleij
2012-01-05 11:08         ` Marc Zyngier
2012-01-05 11:13           ` Shilimkar, Santosh
2012-01-05 11:19             ` Marc Zyngier
2012-01-05 11:26               ` Russell King - ARM Linux
2012-01-05 11:35                 ` Marc Zyngier
2012-01-05 12:10                   ` Russell King - ARM Linux
2012-01-05 16:13                     ` Marc Zyngier
2012-01-05 16:26                       ` Russell King - ARM Linux
2012-01-05 16:55                         ` Russell King - ARM Linux
2012-01-05 11:31               ` Shilimkar, Santosh
2012-01-05 10:33       ` Marc Zyngier
2012-01-05 10:45         ` Shilimkar, Santosh
2012-01-05  1:17     ` David Brown
2012-01-05 10:26       ` Linus Walleij
2012-01-05 11:01         ` Russell King - ARM Linux
2012-01-05 19:34         ` johlstei

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.