Re: [PATCH v14 6/8] arm64: dts: Add AMD Pensando Elba SoC support

From: Brad Larson
Date: Mon Jun 05 2023 - 19:52:21 EST


Hi Geert,

On Wed, May 31, 2023 at 15:09 Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
> On Wed, May 31, 2023 at 12:04 AM Brad Larson <blarson@xxxxxxx> wrote:
>> On Wed, May 24, 2023 at 13:52 Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
>> > On Tue, May 23, 2023 at 9:30 PM Brad Larson <blarson@xxxxxxx> wrote:
>> >> On 5/16/23 09:54, Michal Simek wrote:
>> >> > On 5/15/23 20:16, Brad Larson wrote:
...
>> >> >> + /* CLUSTER 0 */
>> >> >> + cpu0: cpu@0 {
>> >> >> + device_type = "cpu";
>> >> >> + compatible = "arm,cortex-a72";
>> >> >> + reg = <0 0x0>;
>> >> >
>> >> > Do you really need 2/0 split here. The first cell is 0 anyway.
>> >>
>> >> Yes following 64-bit system definition
>> >
>> > You mean for the 64-bit main address space?
>> > The CPU address space under /cpus is unrelated.
>>
>> Yes, the reg prop for this node is CPU/threads per dt spec. Checked the history and
>> the Elba dt was derived from socionext for these nodes and this is how those device
>> trees are configured along with over a dozen other devices. I changed to
>> address-cells = <1> and dropped the leading zero from all cpu* reg<> and booting
>> the system I'm observing no change. Looking in drivers/of I'm not seeing where
>> cpu*/reg is read and used, any recommendation?
>
> drivers/of/cpu.c
>
> Looks like there are lots of DTS files that use #address-cells = <2> for
> CPU nodes :-(
>
> git grep -w -A1 cpus -- "*dts*" | grep address-cells | grep "<2>"
>
> I would use <1> is the first cell is always zero...

I'll do that. Tha variation across DTS is likely coming from ~5.10 devicetree/bindings/arm/cpus.txt

- #address-cells
...
# On ARM v8 64-bit systems value should be set to 2,
that corresponds to the MPIDR_EL1 register size.
If MPIDR_EL1[63:32] value is equal to 0 on all CPUs
in the system, #address-cells can be set to 1, since
MPIDR_EL1[63:32] bits are not used for CPUs
identification.

where the size of MPIDR_EL1 register is 2 for Elba cores. However the shorthand is
allowed if MPIDR_EL1[63:32] bita are not used.

Latest version:

On ARM v8 64-bit systems this property is required
and matches the MPIDR_EL1 register affinity bits.

* If cpus node's #address-cells property is set to 2

The first reg cell bits [7:0] must be set to
bits [39:32] of MPIDR_EL1.

The second reg cell bits [23:0] must be set to
bits [23:0] of MPIDR_EL1.

* If cpus node's #address-cells property is set to 1

The reg cell bits [23:0] must be set to bits [23:0]
of MPIDR_EL1.

All other bits in the reg cells must be set to 0.

Regards,
Brad