linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2] cpuidle: dt: bail out if the idle-state DT node is not compatible
@ 2019-02-01  2:16 Joseph Lo
  2019-02-01 11:48 ` Sudeep Holla
  0 siblings, 1 reply; 3+ messages in thread
From: Joseph Lo @ 2019-02-01  2:16 UTC (permalink / raw)
  To: Rafael J . Wysocki, Daniel Lezcano
  Cc: linux-tegra, Sudeep Holla, Joseph Lo, linux-arm-kernel, linux-pm

Currently, the DT of the idle states will be parsed first whether it's
compatible or not. This could cause a warning message that comes from if
the CPU doesn't support identical idle states. E.g. Tegra186 can run
with 2 Cortex-A57 and 2 Denver cores with different idle states on
different types of these cores.

So fix it by checking the match node earlier, then it can make sure it
only goes through the idle states that the CPU supported.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
---
v2:
 * fix it by moving of_match_node earlier, so we don't need to match the
   node twice like the v1 did.
---
 drivers/cpuidle/dt_idle_states.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/cpuidle/dt_idle_states.c b/drivers/cpuidle/dt_idle_states.c
index 53342b7f1010..add9569636b5 100644
--- a/drivers/cpuidle/dt_idle_states.c
+++ b/drivers/cpuidle/dt_idle_states.c
@@ -22,16 +22,12 @@
 #include "dt_idle_states.h"
 
 static int init_state_node(struct cpuidle_state *idle_state,
-			   const struct of_device_id *matches,
+			   const struct of_device_id *match_id,
 			   struct device_node *state_node)
 {
 	int err;
-	const struct of_device_id *match_id;
 	const char *desc;
 
-	match_id = of_match_node(matches, state_node);
-	if (!match_id)
-		return -ENODEV;
 	/*
 	 * CPUidle drivers are expected to initialize the const void *data
 	 * pointer of the passed in struct of_device_id array to the idle
@@ -160,6 +156,7 @@ int dt_init_idle_driver(struct cpuidle_driver *drv,
 {
 	struct cpuidle_state *idle_state;
 	struct device_node *state_node, *cpu_node;
+	const struct of_device_id *match_id;
 	int i, err = 0;
 	const cpumask_t *cpumask;
 	unsigned int state_idx = start_idx;
@@ -180,6 +177,12 @@ int dt_init_idle_driver(struct cpuidle_driver *drv,
 		if (!state_node)
 			break;
 
+		match_id = of_match_node(matches, state_node);
+		if (!match_id) {
+			err = -ENODEV;
+			break;
+		}
+
 		if (!of_device_is_available(state_node)) {
 			of_node_put(state_node);
 			continue;
@@ -198,7 +201,7 @@ int dt_init_idle_driver(struct cpuidle_driver *drv,
 		}
 
 		idle_state = &drv->states[state_idx++];
-		err = init_state_node(idle_state, matches, state_node);
+		err = init_state_node(idle_state, match_id, state_node);
 		if (err) {
 			pr_err("Parsing idle state node %pOF failed with err %d\n",
 			       state_node, err);
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V2] cpuidle: dt: bail out if the idle-state DT node is not compatible
  2019-02-01  2:16 [PATCH V2] cpuidle: dt: bail out if the idle-state DT node is not compatible Joseph Lo
@ 2019-02-01 11:48 ` Sudeep Holla
  2019-02-06 10:25   ` Rafael J. Wysocki
  0 siblings, 1 reply; 3+ messages in thread
From: Sudeep Holla @ 2019-02-01 11:48 UTC (permalink / raw)
  To: Joseph Lo
  Cc: linux-pm, Daniel Lezcano, Rafael J . Wysocki, Sudeep Holla,
	linux-tegra, linux-arm-kernel

On Fri, Feb 01, 2019 at 10:16:39AM +0800, Joseph Lo wrote:
> Currently, the DT of the idle states will be parsed first whether it's
> compatible or not. This could cause a warning message that comes from if
> the CPU doesn't support identical idle states. E.g. Tegra186 can run
> with 2 Cortex-A57 and 2 Denver cores with different idle states on
> different types of these cores.
> 
> So fix it by checking the match node earlier, then it can make sure it
> only goes through the idle states that the CPU supported.
> 
> Signed-off-by: Joseph Lo <josephl@nvidia.com>
> ---
> v2:
>  * fix it by moving of_match_node earlier, so we don't need to match the
>    node twice like the v1 did.

Neat, thanks for the quick patch. FWIW,

Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>

--
Regards,
Sudeep

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V2] cpuidle: dt: bail out if the idle-state DT node is not compatible
  2019-02-01 11:48 ` Sudeep Holla
@ 2019-02-06 10:25   ` Rafael J. Wysocki
  0 siblings, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2019-02-06 10:25 UTC (permalink / raw)
  To: Sudeep Holla, Joseph Lo
  Cc: linux-tegra, Daniel Lezcano, linux-arm-kernel, linux-pm

On Friday, February 1, 2019 12:48:38 PM CET Sudeep Holla wrote:
> On Fri, Feb 01, 2019 at 10:16:39AM +0800, Joseph Lo wrote:
> > Currently, the DT of the idle states will be parsed first whether it's
> > compatible or not. This could cause a warning message that comes from if
> > the CPU doesn't support identical idle states. E.g. Tegra186 can run
> > with 2 Cortex-A57 and 2 Denver cores with different idle states on
> > different types of these cores.
> > 
> > So fix it by checking the match node earlier, then it can make sure it
> > only goes through the idle states that the CPU supported.
> > 
> > Signed-off-by: Joseph Lo <josephl@nvidia.com>
> > ---
> > v2:
> >  * fix it by moving of_match_node earlier, so we don't need to match the
> >    node twice like the v1 did.
> 
> Neat, thanks for the quick patch. FWIW,
> 
> Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>

Patch applied, thanks!


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2019-02-06 10:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-01  2:16 [PATCH V2] cpuidle: dt: bail out if the idle-state DT node is not compatible Joseph Lo
2019-02-01 11:48 ` Sudeep Holla
2019-02-06 10:25   ` Rafael J. Wysocki

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