linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: linux-pm@vger.kernel.org
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	LKML <linux-kernel@vger.kernel.org>,
	LAKML <linux-arm-kernel@lists.infradead.org>
Subject: [PATCH 3/6] drivers: firmware: psci: Decouple checker from generic ARM CPUidle
Date: Mon, 22 Jul 2019 16:37:42 +0100	[thread overview]
Message-ID: <20190722153745.32446-4-lorenzo.pieralisi@arm.com> (raw)
In-Reply-To: <20190722153745.32446-1-lorenzo.pieralisi@arm.com>

The PSCI checker currently relies on the generic ARM CPUidle
infrastructure to enter an idle state, which in turn creates
a dependency that is not really needed.

The PSCI checker code to test PSCI CPU suspend is built on
top of the CPUidle framework and can easily reuse the
struct cpuidle_state.enter() function (previously initialized
by an idle driver, with a PSCI back-end) to trigger an entry
into an idle state, decoupling the PSCI checker from the
generic ARM CPUidle infrastructure and simplyfing the code
in the process.

Convert the PSCI checker suspend entry function to use
the struct cpuidle_state.enter() function callback.

Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
---
 drivers/firmware/psci/psci_checker.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c
index f3659443f8c2..6a445397771c 100644
--- a/drivers/firmware/psci/psci_checker.c
+++ b/drivers/firmware/psci/psci_checker.c
@@ -228,8 +228,11 @@ static int hotplug_tests(void)
 
 static void dummy_callback(struct timer_list *unused) {}
 
-static int suspend_cpu(int index, bool broadcast)
+static int suspend_cpu(struct cpuidle_device *dev,
+		       struct cpuidle_driver *drv, int index)
 {
+	struct cpuidle_state *state = &drv->states[index];
+	bool broadcast = state->flags & CPUIDLE_FLAG_TIMER_STOP;
 	int ret;
 
 	arch_cpu_idle_enter();
@@ -254,11 +257,7 @@ static int suspend_cpu(int index, bool broadcast)
 		}
 	}
 
-	/*
-	 * Replicate the common ARM cpuidle enter function
-	 * (arm_enter_idle_state).
-	 */
-	ret = CPU_PM_CPU_IDLE_ENTER(arm_cpuidle_suspend, index);
+	ret = state->enter(dev, drv, index);
 
 	if (broadcast)
 		tick_broadcast_exit();
@@ -301,9 +300,8 @@ static int suspend_test_thread(void *arg)
 		 * doesn't use PSCI).
 		 */
 		for (index = 1; index < drv->state_count; ++index) {
-			struct cpuidle_state *state = &drv->states[index];
-			bool broadcast = state->flags & CPUIDLE_FLAG_TIMER_STOP;
 			int ret;
+			struct cpuidle_state *state = &drv->states[index];
 
 			/*
 			 * Set the timer to wake this CPU up in some time (which
@@ -318,7 +316,7 @@ static int suspend_test_thread(void *arg)
 			/* IRQs must be disabled during suspend operations. */
 			local_irq_disable();
 
-			ret = suspend_cpu(index, broadcast);
+			ret = suspend_cpu(dev, drv, index);
 
 			/*
 			 * We have woken up. Re-enable IRQs to handle any
-- 
2.21.0


  parent reply	other threads:[~2019-07-22 15:38 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-22 15:37 [PATCH 0/6] ARM: psci: cpuidle: PSCI CPUidle rework Lorenzo Pieralisi
2019-07-22 15:37 ` [PATCH 1/6] ARM: cpuidle: Remove useless header include Lorenzo Pieralisi
2019-08-06 15:51   ` Sudeep Holla
2019-08-07  8:19   ` Daniel Lezcano
2019-07-22 15:37 ` [PATCH 2/6] ARM: cpuidle: Remove overzealous error logging Lorenzo Pieralisi
2019-08-06 15:51   ` Sudeep Holla
2019-08-07  8:20   ` Daniel Lezcano
2019-07-22 15:37 ` Lorenzo Pieralisi [this message]
2019-08-06 15:54   ` [PATCH 3/6] drivers: firmware: psci: Decouple checker from generic ARM CPUidle Sudeep Holla
2019-08-07 14:09   ` Daniel Lezcano
2019-07-22 15:37 ` [PATCH 4/6] ARM: psci: cpuidle: Introduce PSCI CPUidle driver Lorenzo Pieralisi
2019-07-23 11:46   ` Ulf Hansson
2019-07-23 14:15     ` Lorenzo Pieralisi
2019-08-06 16:10   ` Sudeep Holla
2019-08-06 16:34     ` Lorenzo Pieralisi
2019-08-07 16:30   ` Daniel Lezcano
2019-07-22 15:37 ` [PATCH 5/6] ARM: psci: cpuidle: Enable " Lorenzo Pieralisi
2019-08-06 16:16   ` Sudeep Holla
2019-08-06 16:40     ` Lorenzo Pieralisi
2019-07-22 15:37 ` [PATCH 6/6] PSCI: cpuidle: Refactor CPU suspend power_state parameter handling Lorenzo Pieralisi
2019-07-23 11:47   ` Ulf Hansson
2019-08-07 18:09   ` Daniel Lezcano
2019-08-08 12:55   ` Sudeep Holla
2019-08-08 15:29     ` Ulf Hansson
2019-08-08 16:04       ` Sudeep Holla
2019-07-23 11:49 ` [PATCH 0/6] ARM: psci: cpuidle: PSCI CPUidle rework Ulf Hansson
2019-07-23 14:19   ` Lorenzo Pieralisi
2019-08-09 11:03 ` [PATCH v2 0/8] " Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 1/8] ARM: cpuidle: Remove useless header include Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 2/8] ARM: cpuidle: Remove overzealous error logging Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 3/8] drivers: firmware: psci: Decouple checker from generic ARM CPUidle Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 4/8] ARM: psci: cpuidle: Introduce PSCI CPUidle driver Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 5/8] ARM: psci: cpuidle: Enable " Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 6/8] PSCI: cpuidle: Refactor CPU suspend power_state parameter handling Lorenzo Pieralisi
2019-08-09 11:03   ` [PATCH v2 7/8] arm64: defconfig: Enable the PSCI CPUidle driver Lorenzo Pieralisi
2019-08-09 16:53     ` Will Deacon
2019-08-09 11:03   ` [PATCH v2 8/8] ARM: imx_v6_v7_defconfig: " Lorenzo Pieralisi

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=20190722153745.32446-4-lorenzo.pieralisi@arm.com \
    --to=lorenzo.pieralisi@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=sudeep.holla@arm.com \
    --cc=ulf.hansson@linaro.org \
    --cc=will@kernel.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;
as well as URLs for NNTP newsgroup(s).