From: pramod.gurav@smartplayin.com (Pramod Gurav)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 0/7] QCOM 8074 cpuidle driver
Date: Thu, 11 Sep 2014 12:29:22 +0530 [thread overview]
Message-ID: <5411484A.2000102@smartplayin.com> (raw)
In-Reply-To: <1409870132-16929-1-git-send-email-lina.iyer@linaro.org>
Hi Lina,
With your patchset on top of 3.17-rc4 with v9 of ARM generic idle states
patches from Lorenzo I have tested cpuidle on dragonboard8974 with
Linaro test suites. All testcases report pass. Also verified manually
through sysfs to see changes in usage count and other details about each
state on all cpus.
So,
Tested-by: Pramod Gurav <pramod.gurav@smartplayin.com>
I have a comment/observation only on name entry for each state which
reflects only "cpu-idle-state-" as Lorenzo dt-idle driver limits
CPUIDLE_NAME_LEN to 16.
Thanks
Pramod.
On Friday 05 September 2014 04:05 AM, Lina Iyer wrote:
> Changes since v4:
> [ https://www.mail-archive.com/linux-arm-msm at vger.kernel.org/msg10327.html ]
> - Update to the v8 of ARM generic idle states patches
> - Use platform device model for cpuidle-qcom
> - Clean up msm-pm.c to remove unnecessary include files and functions
> - Update commit text and documentation for all idle states
> - Remove scm-boot relocate patch from this series, submitted earlier
> [ https://www.mail-archive.com/linux-arm-msm at vger.kernel.org/msg10518.html ]
>
> Changes since v3:
> [ https://www.mail-archive.com/linux-arm-msm at vger.kernel.org/msg10288.html ]
> - Fix CONFIG_QCOM_PM Kconfig as bool
> - More clean ups in spm.c and spm-devices.c
> - Removed and re-organized data structures to make initialization simple
> - Remove export of sequence flush functions
> - Updated commit text
> - Comments for use of barriers.
> - Rebase on top of 3.17-rc1
>
> Changes since v2:
> [ https://www.mail-archive.com/linux-arm-msm at vger.kernel.org/msg10148.html ]
> - Prune all the drivers to support basic WFI and power down cpuidle
> functionality. Remove debug code.
> - Integrate KConfig changes into the drivers' patches.
> - Use Lorenzo's ARM idle-states patches as the basis for reading cpuidle
> c-states from DT.
> [ http://marc.info/?l=linux-pm&m=140794514812383&w=2 ]
> - Incorporate review comments
> - Rebase on top of 3.16
>
> Changes since v1/RFC:
> [ https://www.mail-archive.com/linux-arm-msm at vger.kernel.org/msg10065.html ]
> - Remove hotplug from the patch series. Will submit it separately.
> - Fix SPM drivers per the review comments
> - Modify patch sequence to compile SPM drivers independent of msm-pm, so as to
> allow wfi() calls to use SPM even without SoC interface driver.
>
> 8074 like any ARM SoC can do architectural clock gating, that helps save on
> power, but not enough of leakage power. Leakage power of the SoC can be
> further reduced by turning off power to the core. To aid this, every core (cpu
> and L2) is accompanied by a Sub-system Power Manager (SPM), that can be
> configured to indicate the low power mode, the core would be put into and the
> SPM programs the peripheral h/w accordingly to enter low power and turn off the
> power rail to the core.
>
> The idle invocation hierarchy -
>
> CPUIDLE
> |
> cpuidle-qcom.c [CPUIdle driver]
> |
> ------> msm-pm.c [SoC Interface layer for QCOM chipsets]
> |
> ------> spm-devices.c [SPM devices manager]
> | |
> | ------> spm.c [SPM h/w driver]
> |
> ------> scm-boot.c [SCM interface layer]
> |
> ------------------------|--------------------------
> (EL) Secure Monitor Code
> |
> |
> wfi();
> ------------------------|--------------------------
> (HW) [CPU] {clock gate}
> |
> -----> [SPM] {statemachine}
>
>
> The patchset does the following -
>
> - Add new Secure Monitor flags to support warmboot of a quad core system.
>
> - Introduce the SPM driver to control power to the core. The SPM h/w IP works
> in conjunction with the Krait CPU/L2. When the core executes WFI instruction,
> the core is clockgated and the SPM state machine takes over and powers the core
> down. An interrupt from GIC, resumes the SPM state machine which brings the cpu
> out of the low power mode.
>
> - Add a SPM device manager to configure multiple SPM devices.
>
> - Add the device tree configuration for each of the SPM nodes. There is one for
> each cpu. There is one for each cpu.
>
> - Introduce the SoC driver interface layer to configure SPM per the core's idle
> state. To power down the cpu core, the SPM h/w needs to be set up correctly
> to power down the core, when the core executes WFI. Linux is expected to call
> into Secure Monitor to power down the core. At reset, the core will start in
> seure mode and will be returned back to Linux.
>
> - Add CPUIDLE driver for QCOM cpus. The cpuidle driver uses the SoC interface
> layer to configure the SPM to allow Krait to be powered down. The cpuidle driver
> is based on ARM idle-state framework for cpuidle drivers.
>
> - Provide device configuration for 8074 SoC. Current support is for WFI and
> standalone power collapse, which powers only the core independent of the
> other cores and caches.
>
> Thanks,
> Lina
>
>
>
> Lina Iyer (7):
> msm: scm: Add SCM warmboot flags for quad core targets.
> qcom: spm: Add Subsystem Power Manager driver (SAW2)
> qcom: spm-devices: Add SPM device manager for the SoC
> arm: dts: qcom: Add SPM device bindings for 8974
> qcom: msm-pm: Add cpu low power mode functions
> qcom: cpuidle: Add cpuidle driver for QCOM cpus
> arm: dts: qcom: Add idle states device nodes for 8974
>
> .../bindings/arm/msm/qcom,idle-state.txt | 72 ++++++++
> Documentation/devicetree/bindings/arm/msm/spm.txt | 47 +++++
> arch/arm/boot/dts/qcom-msm8974-pm.dtsi | 69 +++++++
> arch/arm/boot/dts/qcom-msm8974.dtsi | 30 +++-
> drivers/cpuidle/Kconfig.arm | 7 +
> drivers/cpuidle/Makefile | 1 +
> drivers/cpuidle/cpuidle-qcom.c | 87 +++++++++
> drivers/soc/qcom/Kconfig | 8 +
> drivers/soc/qcom/Makefile | 1 +
> drivers/soc/qcom/msm-pm.c | 106 +++++++++++
> drivers/soc/qcom/spm-devices.c | 198 +++++++++++++++++++++
> drivers/soc/qcom/spm-drv.h | 69 +++++++
> drivers/soc/qcom/spm.c | 192 ++++++++++++++++++++
> include/soc/qcom/pm.h | 31 ++++
> include/soc/qcom/scm-boot.h | 2 +
> include/soc/qcom/spm.h | 38 ++++
> 16 files changed, 954 insertions(+), 4 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt
> create mode 100644 Documentation/devicetree/bindings/arm/msm/spm.txt
> create mode 100644 arch/arm/boot/dts/qcom-msm8974-pm.dtsi
> create mode 100644 drivers/cpuidle/cpuidle-qcom.c
> create mode 100644 drivers/soc/qcom/msm-pm.c
> create mode 100644 drivers/soc/qcom/spm-devices.c
> create mode 100644 drivers/soc/qcom/spm-drv.h
> create mode 100644 drivers/soc/qcom/spm.c
> create mode 100644 include/soc/qcom/pm.h
> create mode 100644 include/soc/qcom/spm.h
>
next prev parent reply other threads:[~2014-09-11 6:59 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-04 22:35 [PATCH v5 0/7] QCOM 8074 cpuidle driver Lina Iyer
2014-09-04 22:35 ` [PATCH v5 1/7] msm: scm: Add SCM warmboot flags for quad core targets Lina Iyer
2014-09-04 22:35 ` [PATCH v5 2/7] qcom: spm: Add Subsystem Power Manager driver (SAW2) Lina Iyer
2014-09-08 9:48 ` Pramod Gurav
2014-09-04 22:35 ` [PATCH v5 3/7] qcom: spm-devices: Add SPM device manager for the SoC Lina Iyer
2014-09-04 22:35 ` [PATCH v5 4/7] arm: dts: qcom: Add SPM device bindings for 8974 Lina Iyer
2014-09-04 22:35 ` [PATCH v5 5/7] qcom: msm-pm: Add cpu low power mode functions Lina Iyer
2014-09-04 22:35 ` [PATCH v5 6/7] qcom: cpuidle: Add cpuidle driver for QCOM cpus Lina Iyer
2014-09-04 22:35 ` [PATCH v5 7/7] arm: dts: qcom: Add idle states device nodes for 8974 Lina Iyer
2014-09-05 19:58 ` Kevin Hilman
2014-09-05 19:59 ` Lina Iyer
2014-09-11 6:59 ` Pramod Gurav [this message]
2014-09-11 14:48 ` [PATCH v5 0/7] QCOM 8074 cpuidle driver Lina Iyer
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=5411484A.2000102@smartplayin.com \
--to=pramod.gurav@smartplayin.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox