DPDK patches and discussions
 help / color / mirror / Atom feed
From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
To: "yskoh@mellanox.com" <yskoh@mellanox.com>,
	"jerinj@marvell.com" <jerinj@marvell.com>,
	"shahafs@mellanox.com" <shahafs@mellanox.com>,
	"thomas@monjalon.net" <thomas@monjalon.net>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"bruce.richardson@intel.com" <bruce.richardson@intel.com>,
	"pbhagavatula@marvell.com" <pbhagavatula@marvell.com>,
	"Gavin Hu (Arm Technology China)" <Gavin.Hu@arm.com>,
	Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>,
	nd <nd@arm.com>, nd <nd@arm.com>
Subject: Re: [dpdk-dev] [PATCH 1/2] build: add option for armv8 crypto extension
Date: Thu, 2 May 2019 04:13:11 +0000	[thread overview]
Message-ID: <VE1PR08MB51492FFD747E3B545B5DA8B098340@VE1PR08MB5149.eurprd08.prod.outlook.com> (raw)
Message-ID: <20190502041311.EZsCt172fnDnx_Ds0dMW-915FSL84nNYxnmrvEe9C6c@z> (raw)
In-Reply-To: <20190502015806.41497-1-yskoh@mellanox.com>

> Per armv8 crypto extension support, make build always enable it by default
> as long as compiler supports the feature while meson build only enables it for
> 'default' machine of generic armv8 architecture. For example, specifying '-
> mcpu=cortex-a72' doesn't enable it but '+crypto' is required in order to
> enable the feature.
> 
> It is also known that not all the armv8 platforms have the crypto extension.
> For example, Mellanox BlueField has a variant which doesn't have it. If crypto
> enabled binary runs on such a platform, rte_eal_init() fails.
> 
> Therefore, an option to control this feature is necessary. It is still enabled by
> default but can be selectively disabled by vendors.
The distro/binary portable image needs to be built without crypto. Only the crypto drivers need to be built with crypto and at run time we need to hook up the correct function pointers. So, IMO, by default crypto should be disabled and should be enabled in specific target machine configs. 

> 
> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
> ---
>  config/arm/meson.build        | 16 +++++++++-------
>  config/common_armv8a_linux    |  1 +
>  drivers/crypto/armv8/Makefile |  4 ++++
>  meson_options.txt             |  2 ++
>  mk/machine/armv8a/rte.vars.mk |  4 ++++
>  5 files changed, 20 insertions(+), 7 deletions(-)
> 
> diff --git a/config/arm/meson.build b/config/arm/meson.build index
> 7fa6ed3105..3b53842d08 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -8,6 +8,8 @@ march_opt = '-march=@0@'.format(machine)
> arm_force_native_march = false  arm_force_default_march = (machine ==
> 'default')
> 
> +crypto_flag = get_option('enable_armv8_crypto') ? '+crypto' : ''
> +
>  flags_common_default = [
>  	# Accelarate rte_memcpy. Be sure to run unit test
> (memcpy_perf_autotest)
>  	# to determine the best threshold in code. Refer to notes in source
> file @@ -74,14 +76,14 @@ flags_octeontx2_extra = [
>  	['RTE_USE_C11_MEM_MODEL', true]]
> 
>  machine_args_generic = [
> -	['default', ['-march=armv8-a+crc+crypto']],
> +	['default', ['-march=armv8-a+crc' + crypto_flag]],
>  	['native', ['-march=native']],
> -	['0xd03', ['-mcpu=cortex-a53']],
> -	['0xd04', ['-mcpu=cortex-a35']],
> -	['0xd07', ['-mcpu=cortex-a57']],
> -	['0xd08', ['-mcpu=cortex-a72']],
> -	['0xd09', ['-mcpu=cortex-a73']],
> -	['0xd0a', ['-mcpu=cortex-a75']]]
> +	['0xd03', ['-mcpu=cortex-a53' + crypto_flag]],
> +	['0xd04', ['-mcpu=cortex-a35' + crypto_flag]],
> +	['0xd07', ['-mcpu=cortex-a57' + crypto_flag]],
> +	['0xd08', ['-mcpu=cortex-a72' + crypto_flag]],
> +	['0xd09', ['-mcpu=cortex-a73' + crypto_flag]],
> +	['0xd0a', ['-mcpu=cortex-a75' + crypto_flag]]]
> 
>  machine_args_cavium = [
>  	['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
> diff --git a/config/common_armv8a_linux b/config/common_armv8a_linux
> index 72091de1c7..0efa3e2eb2 100644
> --- a/config/common_armv8a_linux
> +++ b/config/common_armv8a_linux
> @@ -5,6 +5,7 @@
>  #include "common_linux"
> 
>  CONFIG_RTE_MACHINE="armv8a"
> +CONFIG_RTE_ENABLE_ARMV8_CRYPTO=y
> 
>  CONFIG_RTE_ARCH="arm64"
>  CONFIG_RTE_ARCH_ARM64=y
> diff --git a/drivers/crypto/armv8/Makefile b/drivers/crypto/armv8/Makefile
> index f71f6b14a4..867a5206cf 100644
> --- a/drivers/crypto/armv8/Makefile
> +++ b/drivers/crypto/armv8/Makefile
> @@ -4,6 +4,10 @@
> 
>  include $(RTE_SDK)/mk/rte.vars.mk
> 
> +ifneq ($(CONFIG_RTE_ENABLE_ARMV8_CRYPTO),y)
> +$(error "Please enable CONFIG_RTE_ENABLE_ARMV8_CRYPTO") endif
> +
>  ifneq ($(MAKECMDGOALS),clean)
>  ifneq ($(MAKECMDGOALS),config)
>  ifeq ($(ARMV8_CRYPTO_LIB_PATH),)
> diff --git a/meson_options.txt b/meson_options.txt index
> 16d9f92c65..4ca09771de 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -4,6 +4,8 @@ option('allow_invalid_socket_id', type: 'boolean', value:
> false,
>  	description: 'allow out-of-range NUMA socket id\'s for platforms that
> don\'t report the value correctly')  option('drivers_install_subdir', type:
> 'string', value: 'dpdk/pmds-<VERSION>',
>  	description: 'Subdirectory of libdir where to install PMDs. Defaults to
> using a versioned subdirectory.')
> +option('enable_armv8_crypto', type: 'boolean', value: true,
> +	description: 'enable armv8 crypto extension')
>  option('enable_docs', type: 'boolean', value: false,
>  	description: 'build documentation')
>  option('enable_kmods', type: 'boolean', value: true, diff --git
> a/mk/machine/armv8a/rte.vars.mk b/mk/machine/armv8a/rte.vars.mk index
> 8252efbb7b..4893d01a2d 100644
> --- a/mk/machine/armv8a/rte.vars.mk
> +++ b/mk/machine/armv8a/rte.vars.mk
> @@ -28,4 +28,8 @@
>  # CPU_LDFLAGS =
>  # CPU_ASFLAGS =
> 
> +ifeq ($(CONFIG_RTE_ENABLE_ARMV8_CRYPTO),y)
>  MACHINE_CFLAGS += -march=armv8-a+crc+crypto
> +else
> +MACHINE_CFLAGS += -march=armv8-a+crc
> +endif
> --
> 2.11.0


  parent reply	other threads:[~2019-05-02  4:13 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-02  1:58 Yongseok Koh
2019-05-02  1:58 ` Yongseok Koh
2019-05-02  1:58 ` [dpdk-dev] [PATCH 2/2] mk: disable armv8 crypto extension for Mellanox BlueField Yongseok Koh
2019-05-02  1:58   ` Yongseok Koh
2019-05-02  4:12   ` Honnappa Nagarahalli
2019-05-02  4:12     ` Honnappa Nagarahalli
2019-05-02  5:40     ` Yongseok Koh
2019-05-02  5:40       ` Yongseok Koh
2019-05-03  4:01       ` Honnappa Nagarahalli
2019-05-03  4:01         ` Honnappa Nagarahalli
2019-05-02  4:13 ` Honnappa Nagarahalli [this message]
2019-05-02  4:13   ` [dpdk-dev] [PATCH 1/2] build: add option for armv8 crypto extension Honnappa Nagarahalli
2019-05-02  5:46   ` Yongseok Koh
2019-05-02  5:46     ` Yongseok Koh
2019-05-02 10:00     ` Jerin Jacob Kollanukkaran
2019-05-02 10:00       ` Jerin Jacob Kollanukkaran
2019-05-03  3:57     ` Honnappa Nagarahalli
2019-05-03  3:57       ` Honnappa Nagarahalli
2019-05-03  9:57       ` Yongseok Koh
2019-05-03  9:57         ` Yongseok Koh
2019-05-03 12:28 ` [dpdk-dev] [PATCH v2] build: disable " Yongseok Koh
2019-05-03 12:28   ` Yongseok Koh
2019-05-03 15:02   ` Honnappa Nagarahalli
2019-05-03 15:02     ` Honnappa Nagarahalli
2019-05-03 16:10     ` Honnappa Nagarahalli
2019-05-03 16:10       ` Honnappa Nagarahalli
2019-05-03 17:50       ` Yongseok Koh
2019-05-03 17:50         ` Yongseok Koh
2019-05-06 21:46         ` [dpdk-dev] [dpdk-stable] " Yongseok Koh
2019-05-06 21:46           ` Yongseok Koh
2019-05-07  7:59           ` Jerin Jacob Kollanukkaran
2019-05-07  7:59             ` Jerin Jacob Kollanukkaran
2019-05-07 11:03             ` Honnappa Nagarahalli
2019-05-07 11:03               ` Honnappa Nagarahalli
2019-05-07 12:02               ` Jerin Jacob Kollanukkaran
2019-05-07 12:02                 ` Jerin Jacob Kollanukkaran
2019-05-03 22:13   ` [dpdk-dev] " Dharmik Thakkar
2019-05-03 22:13     ` Dharmik Thakkar
2019-05-06 21:41     ` Yongseok Koh
2019-05-06 21:41       ` Yongseok Koh
2019-05-07 21:11 ` [dpdk-dev] [PATCH v3] " Yongseok Koh
2019-05-07 21:11   ` Yongseok Koh
2019-05-13 19:26   ` Honnappa Nagarahalli
2019-05-13 19:26     ` Honnappa Nagarahalli
2019-06-03 23:11     ` Thomas Monjalon

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=VE1PR08MB51492FFD747E3B545B5DA8B098340@VE1PR08MB5149.eurprd08.prod.outlook.com \
    --to=honnappa.nagarahalli@arm.com \
    --cc=Gavin.Hu@arm.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=nd@arm.com \
    --cc=pbhagavatula@marvell.com \
    --cc=shahafs@mellanox.com \
    --cc=thomas@monjalon.net \
    --cc=yskoh@mellanox.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).