> On 28 Mar 2023, at 11:14, Jan Beulich <jbeul...@suse.com> 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?

> 
> Jan

Reply via email to