Hi Stefano,
On 19/11/2021 18:55, Stefano Stabellini wrote:
On Fri, 19 Nov 2021, Julien Grall wrote:
I like better Juergen's version. But before agreeing on the command line , I
would like to understand how Linux is dealing with big.LITTLE today (see my
question above).
I also like Juergen's version better :-)
The device tree binding that covers big.LITTLE is the same that covers
cpus: Documentation/devicetree/bindings/arm/cpus.yaml
Are you sure? I found
Documentation/devicetree/bindings/arm/cpu-capacity.txt.
So basically, you can tell it is a big.LITTLE system because the
compatible strings differ between certain cpus, e.g.:
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <0x0>;
};
cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a15";
reg = <0x1>;
};
cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0x100>;
};
cpu@101 {
device_type = "cpu";
compatible = "arm,cortex-a7";
reg = <0x101>;
};
I have not found any code in Linux using the compatible. Instead, they
all seem to use the cpu-map (see drivers/base/arch_topology.c).
Anyway, to me it would be better to parse the Device-Tree over using the
MIDR. The advantage is we can cover a wide range of cases (you may have
processor with the same MIDR but different frequency). For now, we could
create a cpupool per cluster.
Cheers,
--
Julien Grall