[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [kvm-unit-tests PATCH v4 03/11] arm/arm64: smp: support m
From: |
Andre Przywara |
Subject: |
Re: [Qemu-arm] [kvm-unit-tests PATCH v4 03/11] arm/arm64: smp: support more than 8 cpus |
Date: |
Wed, 9 Nov 2016 12:01:42 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
Hi,
On 09/11/16 11:57, Andrew Jones wrote:
> On Wed, Nov 09, 2016 at 11:12:03AM +0000, Andre Przywara wrote:
> [...]
>>> diff --git a/lib/arm/setup.c b/lib/arm/setup.c
>>> index 7e7b39f11dde..b6e2d5815e72 100644
>>> --- a/lib/arm/setup.c
>>> +++ b/lib/arm/setup.c
>>> @@ -24,12 +24,22 @@ extern unsigned long stacktop;
>>> extern void io_init(void);
>>> extern void setup_args_progname(const char *args);
>>>
>>> -u32 cpus[NR_CPUS] = { [0 ... NR_CPUS-1] = (~0U) };
>>> +u64 cpus[NR_CPUS] = { [0 ... NR_CPUS-1] = (~0U) };
>>
>> This should be ~0UL.
>
> Indeed. Thanks.
>
>> Also I think the type should be unsigned long to match the types used
>> everywhere else.
>
> I'll change mpidr_to_cpu to return u64 instead of unsigned long.
I am not sure this is the right direction. unsigned long is really the
natural type for MPIDR, since this is a system register with exactly the
native register size.
I think we use it this way in the kernel.
Cheers,
Andre
> Actually I think Alex suggested that. I'm not sure why I haven't
> done it...
>
>>
>>> int nr_cpus;
>>>
>>> struct mem_region mem_regions[NR_MEM_REGIONS];
>>> phys_addr_t __phys_offset, __phys_end;
>>>
>>> +int mpidr_to_cpu(unsigned long mpidr)
>>> +{
>>> + int i;
>>> +
>>> + for (i = 0; i < nr_cpus; ++i)
>>> + if (cpus[i] == (mpidr & MPIDR_HWID_BITMASK))
>>> + return i;
>>> + return -1;
>>> +}
>>> +
>>> static void cpu_set(int fdtnode __unused, u32 regval, void *info __unused)
>>
>> I guess this needs to be extended as well, including
>> dt_for_each_cpu_node() to cope with 64-bit reg properties in the CPU
>> node (where the upper word is not 0).
>> But this is not really crucial atm, so can be fixed in a follow-up patch.
>
> Yeah, I'll do it as a followup series, because it'll affect powerpc too.
>
> drew
>
[Qemu-arm] [kvm-unit-tests PATCH v4 05/11] arm/arm64: irq enable/disable, Andrew Jones, 2016/11/08
[Qemu-arm] [kvm-unit-tests PATCH v4 04/11] arm/arm64: add some delay routines, Andrew Jones, 2016/11/08
[Qemu-arm] [kvm-unit-tests PATCH v4 06/11] arm/arm64: add initial gicv2 support, Andrew Jones, 2016/11/08
[Qemu-arm] [kvm-unit-tests PATCH v4 07/11] arm/arm64: gicv2: add an IPI test, Andrew Jones, 2016/11/08
[Qemu-arm] [kvm-unit-tests PATCH v4 08/11] libcflat: add IS_ALIGNED() macro, and page sizes, Andrew Jones, 2016/11/08