[PATCH 2/2] Documentation: DT: arm: define CPU topology bindings

Lorenzo Pieralisi lorenzo.pieralisi at arm.com
Mon Sep 16 05:10:06 EDT 2013


On Fri, Sep 13, 2013 at 10:07:11PM +0100, Rob Herring wrote:
> On 08/15/2013 04:42 AM, Lorenzo Pieralisi wrote:
> > The advent of multi-cluster ARM systems requires a mechanism to describe
> > how in hierarchical terms CPUs are connected in ARM SoCs so that the kernel
> > can initialize and map resources like IRQs and memory space to specific
> > group(s) of CPUs.
> > 
> > The CPU topology is made up of multiple hierarchy levels whose bottom
> > layers (aka leaf nodes in device tree syntax) contain links to the HW
> > CPUs in the system.
> > 
> > The topology bindings are generic for both 32-bit and 64-bit systems and
> > lay the groundwork on top of which affinity schemes can be built.
> 
> By affinity schemes, you mean further bindings? Do we need this binding
> until that point?

Well, further bindings (for HW like perf counters) will rely on these
topology bindings to build IRQ affinity masks for instance.

I think we should go on and publish these bindings asap so that we can
rely on them to properly describe topologies for ARM from the beginning.

Current reliance on MPIDR is a leap of faith.

> As is, I don't have much comment.

I take this as positive feedback, or put it another way, that you think
bindings are sound.

> 
> [snip]
> 
> > +Example 3 (ARM 32-bit, cortex-a8 single core):
> > +
> > +cpus {
> > +	#size-cells = <0>;
> > +	#address-cells = <1>;
> > +
> > +	cpu-map {
> > +		cluster0 {
> > +			core0 {
> > +				cpu = <&CPU0>;
> > +			};
> > +		};
> > +	};
> 
> This example seems utterly pointless. I think we should be specific that
> single core does not contain a cpu-map. I suppose we could have a
> threaded, single core case, but let's address that if we ever do.

Ok right. We can have a multi cluster system where one cluster is made
up of a single CPU, then a binding like the one above makes sense.
I will rule cpu-map out for uniprocessor systems.

Lorenzo

> 
> Rob
> 
> > +
> > +	CPU0: cpu at 0 {
> > +		device_type = "cpu";
> > +		compatible = "arm,cortex-a8";
> > +		reg = <0x0>;
> > +	};
> > +};
> > +
> > +===============================================================================
> > +[1] ARM Linux kernel documentation
> > +    Documentation/devicetree/bindings/arm/cpus.txt
> > 
> 
> 




More information about the linux-arm-kernel mailing list