[PATCH v8 5/8] arm64: Use of_cpu_node_to_id helper for CPU topology parsing

Will Deacon will.deacon at arm.com
Tue Oct 17 09:11:40 PDT 2017


On Tue, Oct 17, 2017 at 04:24:23PM +0100, Mark Rutland wrote:
> On Tue, Oct 10, 2017 at 11:33:00AM +0100, Suzuki K Poulose wrote:
> > Make use of the new generic helper to convert an of_node of a CPU
> > to the logical CPU id in parsing the topology.
> > 
> > Cc: Catalin Marinas <catalin.marinas at arm.com>
> > Cc: Leo Yan <leo.yan at linaro.org>
> > Cc: Will Deacon <will.deacon at arm.com>
> > Cc: Mark Rutland <mark.rutland at arm.com>
> > Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
> 
> This looks sane to me, but it will need an ack from Will or Catalin.
> 
> FWIW:
> 
> Acked-by: Mark Rutland <mark.rutland at arm.com>
> 
> Thanks,
> Mark.
> 
> > ---
> >  arch/arm64/kernel/topology.c | 16 ++++++----------
> >  1 file changed, 6 insertions(+), 10 deletions(-)
> > 
> > diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
> > index 8d48b233e6ce..21868530018e 100644
> > --- a/arch/arm64/kernel/topology.c
> > +++ b/arch/arm64/kernel/topology.c
> > @@ -37,18 +37,14 @@ static int __init get_cpu_for_node(struct device_node *node)
> >  	if (!cpu_node)
> >  		return -1;
> >  
> > -	for_each_possible_cpu(cpu) {
> > -		if (of_get_cpu_node(cpu, NULL) == cpu_node) {
> > -			topology_parse_cpu_capacity(cpu_node, cpu);
> > -			of_node_put(cpu_node);
> > -			return cpu;
> > -		}
> > -	}
> > -
> > -	pr_crit("Unable to find CPU node for %pOF\n", cpu_node);
> > +	cpu = of_cpu_node_to_id(cpu_node);
> > +	if (cpu >= 0)
> > +		topology_parse_cpu_capacity(cpu_node, cpu);
> > +	else
> > +		pr_crit("Unable to find CPU node for %pOF\n", cpu_node);
> >  
> >  	of_node_put(cpu_node);

This of_node_put is confusing me. Since of_cpu_node_to_id appears to be
balanced with its use of the node refcount, is this one intended to pair
with the earlier call to of_parse_phandle? If so, does that mainline is
currently broken here because it doesn't drop the refcount twice for the
matching node? Or do we need to return with that held?

Will



More information about the linux-arm-kernel mailing list