DPDK patches and discussions
 help / color / mirror / Atom feed
From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
To: Jerin Jacob <jerinjacobk@gmail.com>,
	Chengwen Feng <fengchengwen@huawei.com>
Cc: "thomas@monjalon.net" <thomas@monjalon.net>,
	"Ferruh Yigit" <ferruh.yigit@intel.com>, dpdk-dev <dev@dpdk.org>,
	"jerinj@marvell.com" <jerinj@marvell.com>,
	"Ruifeng Wang" <Ruifeng.Wang@arm.com>,
	"Jan Viktorin" <viktorin@rehivetech.com>,
	"Richardson, Bruce" <bruce.richardson@intel.com>,
	"Juraj Linkeš" <juraj.linkes@pantheon.tech>, nd <nd@arm.com>,
	"Honnappa Nagarahalli" <Honnappa.Nagarahalli@arm.com>,
	nd <nd@arm.com>
Subject: Re: [dpdk-dev] [PATCH v6 1/2] config/arm: select most suitable -march for kunpeng soc
Date: Thu, 20 May 2021 22:38:20 +0000	[thread overview]
Message-ID: <DBAPR08MB5814CD44836FDD49B7715EBA982A9@DBAPR08MB5814.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <CALBAE1PeH7_xk7EkPc+NY1Xbfs795dZ5rGxhj+jyXM8NyHxiNw@mail.gmail.com>

<snip>
> 
> On Wed, May 19, 2021 at 6:58 PM Chengwen Feng
> <fengchengwen@huawei.com> 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 <fengchengwen@huawei.com>
> > ---
> >  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
I think we should list the max march supported by the target. We can use that to go back in decreasing order to identify the march the compiler supports.
We would need a list of features between those marchs + any additional features the target supports. We can probe those features in compiler to add the support for those features.
I am thinking this will not require us to throw an error.


> - 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
> >

  reply	other threads:[~2021-05-20 22:38 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-12  8:28 [dpdk-dev] [PATCH 0/2] bugfix for Kunpeng930 SVE compile Chengwen Feng
2021-05-12  8:28 ` [dpdk-dev] [PATCH 1/2] config/arm: add non-SVE march for soc kunpeng930 Chengwen Feng
2021-05-12  8:44   ` Jerin Jacob
2021-05-12 23:00     ` Honnappa Nagarahalli
2021-05-13  4:49       ` fengchengwen
2021-05-12  8:28 ` [dpdk-dev] [PATCH 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-12 23:12   ` Honnappa Nagarahalli
2021-05-12 23:21     ` Honnappa Nagarahalli
2021-05-13  0:51       ` fengchengwen
2021-05-13 20:42         ` Honnappa Nagarahalli
2021-05-13 10:04     ` Bruce Richardson
2021-05-13  4:41 ` [dpdk-dev] [PATCH v2 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-13  4:41   ` [dpdk-dev] [PATCH v2 1/2] config/arm: select best -march parameter for kunpeng soc Chengwen Feng
2021-05-13  4:41   ` [dpdk-dev] [PATCH v2 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-13  6:16 ` [dpdk-dev] [PATCH v3 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-13  6:16   ` [dpdk-dev] [PATCH v3 1/2] config/arm: select most suitable -march for kunpeng soc Chengwen Feng
2021-05-13  6:16   ` [dpdk-dev] [PATCH v3 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-13 13:08 ` [dpdk-dev] [PATCH v4 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-13 13:08   ` [dpdk-dev] [PATCH v4 1/2] config/arm: select most suitable -march for kunpeng soc Chengwen Feng
2021-05-13 15:24     ` Jerin Jacob
2021-05-13 23:12       ` Honnappa Nagarahalli
2021-05-14 10:23         ` fengchengwen
2021-05-18 13:25           ` Honnappa Nagarahalli
2021-05-18 13:45             ` Jerin Jacob
2021-05-13 13:08   ` [dpdk-dev] [PATCH v4 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-13 22:19     ` Honnappa Nagarahalli
2021-05-14  2:53       ` fengchengwen
2021-05-14  9:53 ` [dpdk-dev] [PATCH v5 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-14  9:53   ` [dpdk-dev] [PATCH v5 1/2] config/arm: select most suitable -march for kunpeng soc Chengwen Feng
2021-05-14  9:53   ` [dpdk-dev] [PATCH v5 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-14 14:12     ` Honnappa Nagarahalli
2021-05-18 12:41       ` fengchengwen
2021-05-18 13:11         ` Honnappa Nagarahalli
2021-05-18 13:12           ` Honnappa Nagarahalli
2021-05-18 13:24         ` Ferruh Yigit
2021-05-18 16:27       ` Ferruh Yigit
2021-05-19  0:23         ` fengchengwen
2021-05-19  8:08         ` David Marchand
2021-05-19  9:27           ` Ferruh Yigit
2021-05-19 12:16             ` fengchengwen
2021-05-19 12:37               ` David Marchand
2021-05-19 13:35                 ` fengchengwen
2021-05-18 14:40     ` Ferruh Yigit
2021-05-18 15:15       ` Bruce Richardson
2021-05-18 16:12         ` Ferruh Yigit
2021-05-18 15:48       ` Honnappa Nagarahalli
2021-05-18 16:00         ` Ferruh Yigit
2021-05-18 16:12           ` Honnappa Nagarahalli
2021-05-18 16:37             ` Ferruh Yigit
2021-05-19  0:18               ` fengchengwen
2021-05-19 13:25 ` [dpdk-dev] [PATCH v6 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-19 13:25   ` [dpdk-dev] [PATCH v6 1/2] config/arm: select most suitable -march for kunpeng soc Chengwen Feng
2021-05-19 14:05     ` Jerin Jacob
2021-05-20 22:38       ` Honnappa Nagarahalli [this message]
2021-05-19 13:25   ` [dpdk-dev] [PATCH v6 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-19 15:02     ` Ferruh Yigit
2021-05-20  1:11       ` fengchengwen
2021-05-20  7:57         ` Ferruh Yigit
2021-05-20  8:24     ` Ruifeng Wang
2021-05-20 10:55       ` fengchengwen
2021-05-21  5:21         ` Ruifeng Wang
2021-05-21  6:53           ` fengchengwen
2021-05-24  5:38             ` Ruifeng Wang
2021-05-24  8:43               ` fengchengwen
2021-05-24 10:03                 ` Ruifeng Wang
2021-05-24 13:15                   ` fengchengwen
2021-05-24 13:12 ` [dpdk-dev] [PATCH v7 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-24 13:12   ` [dpdk-dev] [PATCH v7 1/2] config/arm: select most suitable -march for kunpeng soc Chengwen Feng
2021-05-24 13:12   ` [dpdk-dev] [PATCH v7 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-24 13:23 ` [dpdk-dev] [PATCH v8 0/2] bugfix for Kunpeng SVE compile Chengwen Feng
2021-05-24 13:23   ` [dpdk-dev] [PATCH v8 1/2] config/arm: select most suitable -march for kunpeng soc Chengwen Feng
2021-06-17  7:03     ` Thomas Monjalon
2021-06-17 23:33       ` Honnappa Nagarahalli
2021-06-21  0:52         ` fengchengwen
2021-06-23  8:08           ` Thomas Monjalon
2021-06-23  8:24             ` fengchengwen
2021-05-24 13:23   ` [dpdk-dev] [PATCH v8 2/2] net/hns3: refactor SVE code compile method Chengwen Feng
2021-05-25  6:04     ` Ruifeng Wang
2021-05-27  7:07       ` Fengchengwen
2021-06-12  7:09       ` fengchengwen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DBAPR08MB5814CD44836FDD49B7715EBA982A9@DBAPR08MB5814.eurprd08.prod.outlook.com \
    --to=honnappa.nagarahalli@arm.com \
    --cc=Ruifeng.Wang@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=fengchengwen@huawei.com \
    --cc=ferruh.yigit@intel.com \
    --cc=jerinj@marvell.com \
    --cc=jerinjacobk@gmail.com \
    --cc=juraj.linkes@pantheon.tech \
    --cc=nd@arm.com \
    --cc=thomas@monjalon.net \
    --cc=viktorin@rehivetech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).