linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC 0/7] cpuidle: Add poking mechanism to support non-IPI wakeup
@ 2019-03-27 13:21 Abel Vesa
  2019-03-27 13:21 ` [RFC 1/7] sched: idle: Add sched get idle state helper Abel Vesa
                   ` (7 more replies)
  0 siblings, 8 replies; 28+ messages in thread
From: Abel Vesa @ 2019-03-27 13:21 UTC (permalink / raw)
  To: Sudeep Holla, Marc Zyngier, Rob Herring, Mark Rutland, Shawn Guo,
	Sascha Hauer, catalin.marinas, Will Deacon, Rafael J. Wysocki,
	Lorenzo Pieralisi, Fabio Estevam, Lucas Stach, Aisheng Dong
  Cc: dl-linux-imx, linux-arm-kernel, Linux Kernel Mailing List,
	linux-pm, Abel Vesa

This work is a workaround I'm looking into (more as a background task)
in order to add support for cpuidle on i.MX8MQ based platforms.

The main idea here is getting around the missing GIC wake_request signal
(due to integration design issue) by waking up a each individual core through
some dedicated SW power-up bits inside the power controller (GPC) right before
every IPI is requested for that each individual core.

This work is basically composed of four parts (in kernel):

 - the cpuidle core poking mechanism along with the related sched/irq_work calls
 - the cpuidle-arm ops addition in order to support poking, along with the
   'local-wakeup-poke' DT idle state knob
 - the psci and cpu_ops cpu_poke addition
 - the i.MX8MQ specific idle states in dts

There is also a change needed in TF-A which is available here:

  https://lists.trustedfirmware.org/pipermail/tf-a/2019-March/000009.html

Abel Vesa (7):
  sched: idle: Add sched get idle state helper
  cpuidle: Add cpu poke support
  smp: Poke the cores before requesting IPI
  psci: Add cpu_poke ops to support core poking
  cpuidle-arm: Add ops to support poke alonside enter
  cpuidle-arm: Add arm64 wake helper for cpu_poke op
  arm64: dts: imx8mq: Add cpu-sleep state with poke wake-up enabled

 arch/arm64/boot/dts/freescale/imx8mq.dtsi | 20 ++++++++++++++++++
 arch/arm64/include/asm/cpu_ops.h          |  1 +
 arch/arm64/include/asm/cpuidle.h          |  6 ++++++
 arch/arm64/kernel/cpuidle.c               |  8 ++++++++
 arch/arm64/kernel/psci.c                  |  1 +
 drivers/cpuidle/cpuidle-arm.c             | 13 +++++++++++-
 drivers/cpuidle/cpuidle.c                 | 34 +++++++++++++++++++++++++++++++
 drivers/cpuidle/dt_idle_states.c          | 15 +++++++++-----
 drivers/cpuidle/dt_idle_states.h          | 10 +++++++++
 drivers/firmware/psci.c                   |  6 ++++++
 include/linux/cpuidle.h                   |  7 +++++++
 include/linux/psci.h                      |  1 +
 include/uapi/linux/psci.h                 |  2 ++
 kernel/irq_work.c                         | 19 ++++++++++++++---
 kernel/sched/core.c                       | 16 ++++++++++-----
 kernel/sched/idle.c                       | 11 ++++++++++
 kernel/smp.c                              | 10 ++++++++-
 kernel/time/tick-broadcast.c              |  4 ++++
 18 files changed, 169 insertions(+), 15 deletions(-)

-- 
2.7.4


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

end of thread, other threads:[~2019-11-06 22:47 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-27 13:21 [RFC 0/7] cpuidle: Add poking mechanism to support non-IPI wakeup Abel Vesa
2019-03-27 13:21 ` [RFC 1/7] sched: idle: Add sched get idle state helper Abel Vesa
2019-03-27 13:21 ` [RFC 2/7] cpuidle: Add cpu poke support Abel Vesa
2019-03-27 13:21 ` [RFC 3/7] smp: Poke the cores before requesting IPI Abel Vesa
2019-03-27 13:21 ` [RFC 4/7] psci: Add cpu_poke ops to support core poking Abel Vesa
2019-03-27 13:21 ` [RFC 5/7] cpuidle-arm: Add ops to support poke alonside enter Abel Vesa
2019-03-27 13:21 ` [RFC 6/7] cpuidle-arm: Add arm64 wake helper for cpu_poke op Abel Vesa
2019-03-27 13:21 ` [RFC 7/7] arm64: dts: imx8mq: Add cpu-sleep state with poke wake-up enabled Abel Vesa
2019-03-27 15:44 ` [RFC 0/7] cpuidle: Add poking mechanism to support non-IPI wakeup Lucas Stach
2019-03-27 15:57   ` Marc Zyngier
2019-03-27 16:06     ` Lucas Stach
2019-03-27 17:00       ` Leonard Crestez
2019-03-27 17:11         ` Lucas Stach
2019-03-27 18:13         ` Marc Zyngier
2019-03-28 11:21           ` Aisheng Dong
2019-03-29  9:11             ` Richard Zhu
2019-03-27 17:45       ` Marc Zyngier
2019-03-27 17:55         ` Lucas Stach
2019-03-28 11:27           ` Aisheng Dong
2019-03-27 18:40         ` Leonard Crestez
2019-03-28 10:35           ` Marc Zyngier
2019-03-28 10:36             ` Rafael J. Wysocki
2019-03-28 11:55             ` Aisheng Dong
2019-03-28 10:45           ` Lorenzo Pieralisi
2019-11-06 20:14             ` Florian Fainelli
2019-11-06 21:31               ` Leonard Crestez
2019-11-06 22:10                 ` Florian Fainelli
2019-11-06 22:47                   ` Leonard Crestez

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).