From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 041D4A0547; Wed, 19 May 2021 16:05:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 84ABC40041; Wed, 19 May 2021 16:05:25 +0200 (CEST) Received: from mail-io1-f48.google.com (mail-io1-f48.google.com [209.85.166.48]) by mails.dpdk.org (Postfix) with ESMTP id F19154003F for ; Wed, 19 May 2021 16:05:24 +0200 (CEST) Received: by mail-io1-f48.google.com with SMTP id d25so1326287ioe.1 for ; Wed, 19 May 2021 07:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=cUqsvVQFGlqmIMioXlYSJ/UaVhiTGKHl295IURERB7Y=; b=iTg1Ppy1ogRIzQrb/ddOjRFxNYEftrCu74xrI8oUrzS8mjM0x5iARBXFYBLULOJwkI 1bo3nes3HSgiPdRgFmfs6Y0N/FxAmPD9f28CSkD49ImjjjmG8jJ27Z/tAfvVbhhhjpsO PiUghlqOEtMw8qBdk9yqAlnlAIyu/U2WxmXp2hsTQVSfbGpP/7vU6t3m9emAY8LJGpy6 5rFem2BmQYO69Xl0rhBjkEG0/R+Ix73Bk5NoZVH0+6MCUqtQ7K/ZrGia+R5OnitvZ6+k 50KxSCg7YBOF6gs0HVEe9Eny+eJAKrpsG/oALuUeZlOZXwKyHDRg81yP5kYoIP+eFNp+ cO9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cUqsvVQFGlqmIMioXlYSJ/UaVhiTGKHl295IURERB7Y=; b=JHIh0GmSMCruAJPO/ayxuqVuPBEb8dJRnF7Jz/1yzkFziwmZhKFgc10x8o4aSW0rqh HTH0IF9FwJevG2AnVqie0O8LIM6k04eYgO56hEkzP0yrKvqRxS91Wervu1dFsFwL8U2d RU/Fc8brBR2xy+Bu9Qp0aY1tl90MeH/h21oTu3j89HG1A76PBmSiXAVIRB3oqEXRpty/ CVVcEaRqh1RgJAavq8L5Mvp7InLo5k9ES1zTuB47gkPa3TvnNW+G6/+rOObd+WY24SIx HQ2ic2MXsaNUBT8JGfOQcM119xlmd1Vtk90DoU3DbQO/VLbLDyHlEyOhWdgIfvEe20fD 2AJQ== X-Gm-Message-State: AOAM532p/JsE5jOV+Oo2W+/V/LBjxuZ98piVHfHSNemKBMODTggIhd04 iGSwyC3lEOuCSj5fRHYf4PUxEUM44UwkRFNvEAY= X-Google-Smtp-Source: ABdhPJxhKqhGO5bKDjngSIg9XvYGfclVAarYngLmTlEe+yQdlKQzSobA7wUgRE9LUD/+h0VaAPmbNTJGxj0eNAlpBKA= X-Received: by 2002:a02:9443:: with SMTP id a61mr12950988jai.60.1621433124158; Wed, 19 May 2021 07:05:24 -0700 (PDT) MIME-Version: 1.0 References: <1620808126-18876-1-git-send-email-fengchengwen@huawei.com> <1621430731-27753-1-git-send-email-fengchengwen@huawei.com> <1621430731-27753-2-git-send-email-fengchengwen@huawei.com> In-Reply-To: <1621430731-27753-2-git-send-email-fengchengwen@huawei.com> From: Jerin Jacob Date: Wed, 19 May 2021 19:35:08 +0530 Message-ID: To: Chengwen Feng Cc: Thomas Monjalon , Ferruh Yigit , dpdk-dev , Jerin Jacob , "Ruifeng Wang (Arm Technology China)" , Jan Viktorin , "Richardson, Bruce" , Honnappa Nagarahalli , =?UTF-8?Q?Juraj_Linke=C5=A1?= , nd Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v6 1/2] config/arm: select most suitable -march for kunpeng soc X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Wed, May 19, 2021 at 6:58 PM Chengwen Feng wrote: > > Currently, the soc_kunpeng930 declares '-march=armv8.2-a+crypto+sve', > but some compiler doesn't recognize the march because it doesn't > support sve. > > To solve this bug we use the following scheme: > 1. Define 'march_base' tuple which defines support march, it should > arrange from lower to higher. > e.g. 'march_base': ['-march=armv8.1-a', '-march=armv8.2-a'] > 2. Define 'march_feature' tuple which defines support feature. > e.g. 'march_feature': ['crypto', 'sve'] > Note: If user defined 'march_feature', it also needs to define a valid > 'march_base' because 'march_feature' depends on 'march_base' when > checking validity. > 3. Select the most suitable march+feature combination based on > 'march_base' and 'march_feature' tuples. > 4. Use the selected march+feature combination as the default > machine_args. > > Fixes: 7cf32a22b240 ("config/arm: add Hisilicon kunpeng") > > Signed-off-by: Chengwen Feng > --- > config/arm/meson.build | 31 +++++++++++++++++++++++++++++-- > 1 file changed, 29 insertions(+), 2 deletions(-) > > diff --git a/config/arm/meson.build b/config/arm/meson.build > index 3f34ec9..044812f 100644 > --- a/config/arm/meson.build > +++ b/config/arm/meson.build > @@ -158,7 +158,9 @@ implementer_hisilicon = { > ] > }, > '0xd02': { > - 'machine_args': ['-march=armv8.2-a+crypto+sve'], > + 'march_base': ['-march=armv8.2-a'], > + 'march_feature': ['crypto', 'sve'], > + 'machine_args': [], IMO, This patch must split into two as this problem is not specific to kunpeng patch 1: config/arm: infrastructure to add most suitable -march or so(This will have only infra) patch 2: config/arm: update the targets to support most suitable -march or so(This one will one will have changes for all targets including kunpeng) > 'flags': [ > ['RTE_MACHINE', '"Kunpeng 930"'], > ['RTE_ARM_FEATURE_ATOMICS', true], > @@ -449,8 +451,33 @@ else > # add/overwrite flags in the proper order > dpdk_flags = flags_common + implementer_config['flags'] + part_number_config.get('flags', []) + soc_flags > > + # select the most suitable march+feature combination > + machine_march = [] > + if part_number_config.has_key('march_base') > + tmp_machine_march = '' > + march_valid = false > + foreach march: part_number_config['march_base'] > + if cc.has_argument(march) > + tmp_machine_march = march # Set the higher supported march as possible > + march_valid = true > + endif > + endforeach > + # select feature only when march valid > + if march_valid and part_number_config.has_key('march_feature') I think, in order to make more generic, IMO, it should be 1) List all the march and features options(crypto, sve) 2) Probe the compiler to find the supported march, features 3) In each target, - define the minimum march and features - define the the best need march and features 4) If the compiler support the best config, pick that else 5) If the compiler supports the minimum config, pick that else 6) Don't build and throw the error. > + foreach feature: part_number_config['march_feature'] > + tmp_feature = tmp_machine_march + '+' + feature > + if cc.has_argument(tmp_feature) > + tmp_machine_march = tmp_feature # Set the more supported feature as possible > + endif > + endforeach > + endif > + if march_valid > + machine_march = [tmp_machine_march] > + endif > + endif > + > # apply supported machine args > - machine_args = [] # Clear previous machine args > + machine_args = machine_march # Init with machine march which set above > foreach flag: part_number_config['machine_args'] > if cc.has_argument(flag) > machine_args += flag > -- > 2.8.1 >