|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 08/12] xen/physinfo: encode Arm SVE vector length in arch_capabilities
On 30.03.2023 12:41, Luca Fancellu wrote:
>
>
>> On 28 Mar 2023, at 11:14, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>
>> On 27.03.2023 12:59, Luca Fancellu wrote:
>>> --- a/xen/arch/arm/arm64/sve.c
>>> +++ b/xen/arch/arm/arm64/sve.c
>>> @@ -124,3 +124,15 @@ int __init sve_parse_dom0_param(const char *str_begin,
>>> const char *str_end)
>>> {
>>> return parse_integer("sve", str_begin, str_end, (int*)&opt_dom0_sve);
>>> }
>>> +
>>> +void sve_arch_cap_physinfo(uint32_t *arch_capabilities)
>>> +{
>>> + if ( cpu_has_sve )
>>> + {
>>> + /* Vector length is divided by 128 to save some space */
>>> + uint32_t sve_vl = MASK_INSR(sve_encode_vl(get_sys_vl_len()),
>>> + XEN_SYSCTL_PHYSCAP_ARM_SVE_MASK);
>>> +
>>> + *arch_capabilities |= sve_vl;
>>> + }
>>> +}
>>
>> I'm again wondering why a separate function is needed, when everything
>> that's needed is ...
>>
>>> --- a/xen/arch/arm/sysctl.c
>>> +++ b/xen/arch/arm/sysctl.c
>>> @@ -11,11 +11,14 @@
>>> #include <xen/lib.h>
>>> #include <xen/errno.h>
>>> #include <xen/hypercall.h>
>>> +#include <asm/arm64/sve.h>
>>
>> ... becoming available here for use ...
>>
>>> #include <public/sysctl.h>
>>>
>>> void arch_do_physinfo(struct xen_sysctl_physinfo *pi)
>>> {
>>> pi->capabilities |= XEN_SYSCTL_PHYSCAP_hvm | XEN_SYSCTL_PHYSCAP_hap;
>>> +
>>> + sve_arch_cap_physinfo(&pi->arch_capabilities);
>>
>> ... here. That would be even more so if, like suggested before,
>> get_sys_vl_len() returned 0 when !cpu_has_sve.
>
> I’ve had a look on this, I can do everything In arch_do_physinfo if in
> xen/include/public/sysctl.h
> the XEN_SYSCTL_PHYSCAP_ARM_SVE_MASK is protected by __aarch64__ or __arm__ .
>
> Do you agree on that?
I don't see the connection, but guarding the #define in the public header
looks not only okay, but even desirable to me.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |