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

Re: [PATCH v5 02/12] xen/arm: add SVE vector length field to the domain


  • To: Julien Grall <julien@xxxxxxx>
  • From: Luca Fancellu <Luca.Fancellu@xxxxxxx>
  • Date: Thu, 13 Apr 2023 14:05:30 +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=4ntKU0qB25tzCe84Gkqv7uUIcg8aNldac8nLZ9xZICc=; b=RgT/ACmN4aEFk0yCX/ydcatyZoyjjiJ/+EEx07dX/8/BCwyVFYjF3Xc59bgohYgjKZ69XTItp/oX1XvuaY+nkDT8xj2Ar7EZAKn/JD1ujBdjxMUTG6neg3euohZJP9sS4JGQNYRkgkEcoKz5r+vNGIO2IJeb0C8hq0d+PVBs3vDUwBLHBsTX3V22YLdlDr1/FDrnE2VNVDQaua4hHvspvyoPCAv5+Bx6mBfrs+FowghDIL+nGO/wxlN9IftiKdJcZBQJ60vFAzMZijncYHJtkIDoTbTneFAFP8kRlV2f6Z7IGAziLbor0Dk9fCb7k1P3ZOCeyqOtkI5pDmpSvNvbJg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gaf5h/m0A+LxqIE9Q5PBFYjuEuacUNRQUXg2p0HjoBptYKD9sAvIKNEZM1h3l9HLtvdlrka4hhIv0/P3hWG2PEygQWR/WVvKV/7mm95Od78JxCd5IbQe73tO7Xe3xjdcMbefYAjk5KAmQUNFmjRxn263iEvebsm16QENA8f+0V9N/XxagsHzS6jE8OBW9IDxAXyuOoTmpKKQAdiqrgksqVae7rPEqkwaYNpMK43SszCjgqTAaGkTEZOXvfyogpJq27D55yzx/NppI/mIhLFpZ2qrI4ljRQrzPu/6TMHc6n5uXVRVb9NrI3Cop9Lo7HH7IZdZ0OyOYmLRN4pPzoBQ7w==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Wei Chen <Wei.Chen@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Thu, 13 Apr 2023 14:06:03 +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: AQHZbSQ9GJqCFHqaX0uCiT+EC9U7s68pNK+AgAAHnICAAAGIAIAACdqA
  • Thread-topic: [PATCH v5 02/12] xen/arm: add SVE vector length field to the domain


> On 13 Apr 2023, at 14:30, Julien Grall <julien@xxxxxxx> wrote:
> 
> 
> 
> On 13/04/2023 14:24, Luca Fancellu wrote:
>> Hi Julien,
> 
> Hi Luca,
> 
>>>>  @@ -594,6 +597,7 @@ int arch_sanitise_domain_config(struct 
>>>> xen_domctl_createdomain *config)
>>>>      unsigned int max_vcpus;
>>>>      unsigned int flags_required = (XEN_DOMCTL_CDF_hvm | 
>>>> XEN_DOMCTL_CDF_hap);
>>>>      unsigned int flags_optional = (XEN_DOMCTL_CDF_iommu | 
>>>> XEN_DOMCTL_CDF_vpmu);
>>>> +    unsigned int sve_vl_bits = sve_decode_vl(config->arch.sve_vl);
>>>>        if ( (config->flags & ~flags_optional) != flags_required )
>>>>      {
>>>> @@ -602,6 +606,26 @@ int arch_sanitise_domain_config(struct 
>>>> xen_domctl_createdomain *config)
>>>>          return -EINVAL;
>>>>      }
>>>>  +    /* Check feature flags */
>>>> +    if ( sve_vl_bits > 0 )
>>>> +    {
>>>> +        unsigned int zcr_max_bits = get_sys_vl_len();
>>>> +
>>>> +        if ( !zcr_max_bits )
>>>> +        {
>>>> +            dprintk(XENLOG_INFO, "SVE is unsupported on this machine.\n");
>>>> +            return -EINVAL;
>>>> +        }
>>>> +
>>>> +        if ( sve_vl_bits > zcr_max_bits )
>>>> +        {
>>>> +            dprintk(XENLOG_INFO,
>>>> +                    "Requested SVE vector length (%u) > supported length 
>>>> (%u)\n",
>>>> +                    sve_vl_bits, zcr_max_bits);
>>>> +            return -EINVAL;
>>>> +        }
>>> 
>>> Is SVE supported for 32-bit guest? If not, then you should had a check here 
>>> to prevent the creation of the domain if sve_vl_bits is set.
>> No SVE is not supported for 32 bit guests, here I think we will get “SVE is 
>> unsupported on this machine” because get_sys_vl_len() will return 0.
> 
> From my understanding, get_sys_vl_len() will return the len supported by the 
> hosts. So if you run a 32-bit guest on top of a 64-bit hosts, then I believe 
> get_sys_vl_len() will be non-zero.

Yes you are right, I realise that I need the domain type information and I 
can’t have it in arch_sanitise_domain_config, however they might have sense 
there, and I can do a check
like this afterwards:

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index c1f0d1d78431..ce1235c25769 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -3694,6 +3694,12 @@ static int __init construct_domain(struct domain *d, 
struct kernel_info *kinfo)
         return -EINVAL;
     }
 
+    if ( d->arch.sve_vl && (kinfo->type == DOMAIN_32BIT) )
+    {
+        printk("SVE is not available for 32-bit domain\n");
+        return -EINVAL;
+    }
+
     if ( is_64bit_domain(d) )
         vcpu_switch_to_aarch64_mode(v);

Would it be ok for you?


> 
>>> Can we move this somewhere else to avoid adding extra padding? Also 
>>> shouldn't this be protected with #ifdef CONFIG_ARM_64 to make clear this is 
>>> not supported on Xen 32-bit?
>> Yes, I’ll move it and protect with CONFIG_ARM_64, is it ok for you if I move 
>> it after:
>> /* Monitor options */
>> struct {
>>     uint8_t privileged_call_enabled : 1;
>> } monitor;
> 
> Please check the padding with "pahole". If possible, it would be better to 
> re-use an existing one.

Ok I’ll try to use the tool

> 
> Cheers,
> 
> -- 
> Julien Grall



 


Rackspace

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