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

Re: [PATCH v6 07/12] xen: enable Dom0 to use SVE feature


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • Date: Mon, 24 Apr 2023 15:34:29 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UuJS8RkoXZADJ4VbzV+EtG7uMm7ioWIq2ddvgdwdYNM=; b=ZE8gKbl6lrAFqabZzwOq+SDQRNFnwFKD5gTGyjzChCRo2PGddkqvnxcaqqLzqkvAeDsHnKoXQMDcFxorZuxPHg1wGQnxUpWMpIDRXy1+SQN8ou4uTu8Q8X/TMGP/RU85ht+nvNgtZWvNTlkU4DwMJI9yZ3FN+AafDd5cURB8dS7DC7qR6KFkLZFxKhtAUMYitar/sQH3g77P2mRE91Z4FurHf2yxbKErxJiwKE3pwOl8+5dt48/w9GFYOYj8geJw4QdI6XbGeuOztYkuZPHuvf1R8wfaz47oepDrkEgDyP8Ah+ApdnqS8upnllfjzsCj8GJgzdAGmZi4Dca7oKmoLw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XVsUITlw7UAUIUDam5vwac3ZOJHKcTZXmN3+W2AzQI7+D3xKT5j0xYlA6qauDnXhCa3Xcl6plI+Z/H1S2MqWcMZ+W+Pq86QdtnACxPgpVyKUi4V1ktzwkeJ12kcq7FknzOaHqYImC32JTO78Fk3Z/x2BHNH4HFkwJLDjieHJfMr5724S7ek8FI4Gm71tuVRu/GTAOMfb7quMtUD/WZqGDqR9KMzGNZcf3VVw0/RCSvsnH0Ji506w7FAgLwWfl7zOHSf7df4SRVsfsq0K1Yh9WcI9EhXKS29pI0v9imC6dBw4bKr5LsNvNdKMVdBrVTWnjLL+4E2s1jTzaqKnZGHOnQ==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Wei Chen <Wei.Chen@xxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 24 Apr 2023 15:34:56 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHZdnKG11PjGcmQuE2MpJrElBiS3686VJGAgAAo1ICAAAFsAIAADk4AgAACvwCAAANFAIAAAd0AgAACk4A=
  • Thread-topic: [PATCH v6 07/12] xen: enable Dom0 to use SVE feature


> On 24 Apr 2023, at 16:25, Jan Beulich <jbeulich@xxxxxxxx> wrote:
> 
> On 24.04.2023 17:18, Luca Fancellu wrote:
>>> On 24 Apr 2023, at 16:06, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>> On 24.04.2023 16:57, Luca Fancellu wrote:
>>>>> On 24 Apr 2023, at 15:05, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>>>> On 24.04.2023 16:00, Luca Fancellu wrote:
>>>>>>> On 24 Apr 2023, at 12:34, Jan Beulich <jbeulich@xxxxxxxx> wrote:
>>>>>>> On 24.04.2023 08:02, Luca Fancellu wrote:
>>>>>>>> @@ -30,9 +37,11 @@ int sve_context_init(struct vcpu *v);
>>>>>>>> void sve_context_free(struct vcpu *v);
>>>>>>>> void sve_save_state(struct vcpu *v);
>>>>>>>> void sve_restore_state(struct vcpu *v);
>>>>>>>> +bool sve_domctl_vl_param(int val, unsigned int *out);
>>>>>>>> 
>>>>>>>> #else /* !CONFIG_ARM64_SVE */
>>>>>>>> 
>>>>>>>> +#define opt_dom0_sve     (0)
>>>>>>>> #define is_sve_domain(d) (0)
>>>>>>>> 
>>>>>>>> static inline register_t compute_max_zcr(void)
>>>>>>>> @@ -59,6 +68,11 @@ static inline void sve_context_free(struct vcpu *v) 
>>>>>>>> {}
>>>>>>>> static inline void sve_save_state(struct vcpu *v) {}
>>>>>>>> static inline void sve_restore_state(struct vcpu *v) {}
>>>>>>>> 
>>>>>>>> +static inline bool sve_domctl_vl_param(int val, unsigned int *out)
>>>>>>>> +{
>>>>>>>> +    return false;
>>>>>>>> +}
>>>>>>> 
>>>>>>> Once again I don't see the need for this stub: opt_dom0_sve is #define-d
>>>>>>> to plain zero when !ARM64_SVE, so the only call site merely requires a
>>>>>>> visible declaration, and DCE will take care of eliminating the actual 
>>>>>>> call.
>>>>>> 
>>>>>> I’ve tried to do that, I’ve put the declaration outside the ifdef so 
>>>>>> that it was always included
>>>>>> and I removed the stub, but I got errors on compilation because of 
>>>>>> undefined function.
>>>>>> For that reason  I left that change out.
>>>>> 
>>>>> Interesting. I don't see where the reference would be coming from.
>>>> 
>>>> Could it be because the declaration is visible, outside the ifdef, but the 
>>>> definition is not compiled in? 
>>> 
>>> Well, yes, likely. But the question isn't that but "Why did the reference
>>> not get removed, when it's inside an if(0) block?"
>> 
>> Oh ok, I don’t know, here what I get if for example I build arm32:
>> 
>> arm-linux-gnueabihf-ld -EL -T arch/arm/xen.lds -N prelink.o \
>> ./common/symbols-dummy.o -o ./.xen-syms.0
>> arm-linux-gnueabihf-ld: prelink.o: in function `create_domUs':
>> (.init.text+0x13464): undefined reference to `sve_domctl_vl_param'
> 
> In particular with seeing this: What you copied here is a build with the
> series applied only up to this patch? I ask because the patch here adds a
> call only out of create_dom0().

No I’ve do the changes on top of the serie, I’ve tried it now, only to this 
patch and it builds correctly,
It was my mistake to don’t read carefully the error output.

Anyway I guess this change is not applicable because we don’t have a symbol 
that is plain 0 for domUs
to be placed inside create_domUs.

> 
> Jan
> 
>> arm-linux-gnueabihf-ld: (.init.text+0x136b4): undefined reference to 
>> `sve_domctl_vl_param'
>> arm-linux-gnueabihf-ld: ./.xen-syms.0: hidden symbol `sve_domctl_vl_param' 
>> isn't defined
>> arm-linux-gnueabihf-ld: final link failed: bad value
>> make[3]: *** [/data_sdc/lucfan01/kirkstone_xen/xen/xen/arch/arm/Makefile:95: 
>> xen-syms] Error 1
>> make[2]: *** [/data_sdc/lucfan01/kirkstone_xen/xen/xen/./build.mk:90: xen] 
>> Error 2
>> make[1]: *** [/data_sdc/lucfan01/kirkstone_xen/xen/xen/Makefile:590: xen] 
>> Error 2
>> make[1]: Leaving directory 
>> '/data_sdc/lucfan01/kirkstone_xen/build/xen-qemu-arm32'
>> make: *** [Makefile:181: __sub-make] Error 2
>> make: Leaving directory '/data_sdc/lucfan01/kirkstone_xen/xen/xen’
>> 
>> These are the modification I’ve done:
>> 
>> diff --git a/xen/arch/arm/include/asm/arm64/sve.h 
>> b/xen/arch/arm/include/asm/arm64/sve.h
>> index 71bddb41f19c..330c47ea8864 100644
>> --- a/xen/arch/arm/include/asm/arm64/sve.h
>> +++ b/xen/arch/arm/include/asm/arm64/sve.h
>> @@ -24,6 +24,8 @@ static inline unsigned int sve_encode_vl(unsigned int 
>> sve_vl_bits)
>>     return sve_vl_bits / SVE_VL_MULTIPLE_VAL;
>> }
>> 
>> +bool sve_domctl_vl_param(int val, unsigned int *out);
>> +
>> #ifdef CONFIG_ARM64_SVE
>> 
>> extern int opt_dom0_sve;
>> @@ -37,7 +39,6 @@ int sve_context_init(struct vcpu *v);
>> void sve_context_free(struct vcpu *v);
>> void sve_save_state(struct vcpu *v);
>> void sve_restore_state(struct vcpu *v);
>> -bool sve_domctl_vl_param(int val, unsigned int *out);
>> 
>> #else /* !CONFIG_ARM64_SVE */
>> 
>> @@ -68,11 +69,6 @@ static inline void sve_context_free(struct vcpu *v) {}
>> static inline void sve_save_state(struct vcpu *v) {}
>> static inline void sve_restore_state(struct vcpu *v) {}
>> 
>> -static inline bool sve_domctl_vl_param(int val, unsigned int *out)
>> -{
>> -    return false;
>> -}
>> -
>> #endif /* CONFIG_ARM64_SVE */
>> 
>> #endif /* _ARM_ARM64_SVE_H */



 


Rackspace

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