[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 4/4] xen/arm: mpu: Implement a dummy enable_secondary_cpu_mm


  • To: Julien Grall <julien@xxxxxxx>, Ayan Kumar Halder <ayankuma@xxxxxxx>, Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 8 Oct 2024 08:21:14 +0200
  • Autocrypt: addr=jbeulich@xxxxxxxx; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Tue, 08 Oct 2024 06:21:19 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 07.10.2024 23:25, Julien Grall wrote:
> Hi Jan,
> 
> On 24/09/2024 13:22, Jan Beulich wrote:
>> On 24.09.2024 13:54, Ayan Kumar Halder wrote:
>>> Hi Jan,
>>>
>>> On 23/09/2024 11:23, Jan Beulich wrote:
>>>> On 18.09.2024 19:51, Ayan Kumar Halder wrote:
>>>>> Secondary cpus initialization is not yet supported. Thus, we print an
>>>>> appropriate message and put the secondary cpus in WFE state.
>>>>>
>>>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>
>>>>> ---
>>>>> Changes from :-
>>>>>
>>>>> v1 - 1. NR_CPUS is defined as 1 for MPU
>>>> Not quite, what you do is ...
>>>>
>>>>> --- a/xen/arch/Kconfig
>>>>> +++ b/xen/arch/Kconfig
>>>>> @@ -11,6 +11,7 @@ config NR_CPUS
>>>>>           default "8" if ARM && RCAR3
>>>>>           default "4" if ARM && QEMU
>>>>>           default "4" if ARM && MPSOC
>>>>> + default "1" if ARM && MPU
>>>>>           default "128" if ARM
>>>>>           help
>>>>>             Controls the build-time size of various arrays and bitmaps
>>>> ... merely set the default. I wonder how useful that is, the more that
>>>> - as per the description - this is temporary only anyway.
>>>
>>> Yes, I can enforce a build time check like this.
>>>
>>> --- a/xen/arch/arm/setup.c
>>> +++ b/xen/arch/arm/setup.c
>>> @@ -295,6 +295,12 @@ void asmlinkage __init start_xen(unsigned long
>>> fdt_paddr)
>>>        struct domain *d;
>>>        int rc, i;
>>>
>>> +    /*
>>> +     * Currently MPU does not support SMP.
>>> +     */
>>> +#ifdef CONFIG_MPU
>>> +    BUILD_BUG_ON(NR_CPUS > 1);
>>> +#endif
>>>        dcache_line_bytes = read_dcache_line_bytes();
>>>
>>> Does this look ok ?
>>
>> Well, I'd still want to understand the purpose (if I was maintainer of
>> this code at least). You can't bring up secondary processors yet - fine.
>> But why does that mean you want to limit the build to NR_CPUS=1? Any
>> number is fine, but just not useful?
> 
> I have suggested to restrict NR_CPUS because it is not clear whether 
> cpu_up() would even work on MPU. In its current state, it may return an 
> error but could also corrupt the system.
> 
> At least for Xen on Arm, we have no other way to temporarly disable SMP 
> support (aside modify the provided DTB, but I would like to avoid it).

I see. Ayan: Could this be made a little more clear in the description
and / or code comment?

Furthermore I'm then puzzled by the use of BUILD_BUG_ON(). If you want
to prevent people building SMP configs, wouldn't you be better off doing
so right in Kconfig:

config NR_CPUS
        int "Maximum number of CPUs"
        range 1 16383 if !MPU
        range 1 1

or

config NR_CPUS
        int "Maximum number of CPUs"
        range 1 1 if MPU
        range 1 16383

? Since the 2nd form leaves the primary line untouched, I guess I like
this slightly better, despite the outlier then coming first. (The above
would presumably still require the default adjustment that you already
have.)

Finally, having observed interesting build issues with newer gcc when
trying to build UP configs, did you check that Arm actually builds fine
that way with recent-ish gcc?

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.