[dpdk-dev] [PATCH] drivers/crypto: fix gcc 10 no-common errors

Ray Kinsella mdr at ashroe.eu
Thu May 14 09:42:32 CEST 2020


Tidy solution.

On 13/05/2020 17:40, Kevin Traynor wrote:
> On 13/05/2020 14:50, akhil.goyal at nxp.com wrote:
>> From: Akhil Goyal <akhil.goyal at nxp.com>
>>
>> gcc 10 defaults to -fno-common and as a result when linking
>> with crypto drivers:
>>
>> drivers/librte_pmd_dpaa_sec.a(crypto_dpaa_sec_dpaa_sec.c.o):
>> (.bss+0x4): multiple definition of `rta_sec_era';
>> drivers/librte_pmd_caam_jr.a(crypto_caam_jr_caam_jr.c.o):
>> (.bss+0x0): first defined here
>>
>> drivers/librte_pmd_dpaa2_sec.a(crypto_dpaa2_sec_dpaa2_sec_dpseci.c.o):
>> (.data+0x0): multiple definition of `rta_sec_era';
>> drivers/librte_pmd_caam_jr.a(crypto_caam_jr_caam_jr.c.o):
>> (.bss+0x0): first defined here
>>
>> This patch fixes the blunt workaround in the following commit.
>>
>> Fixes: 50b03f3b8eaf ("drivers/crypto: disable gcc 10 no-common errors")
>>
>> Bugzilla ID: 469
>> Cc: stable at dpdk.org
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal at nxp.com>
>> ---
>> This patch is not tested on GCC 10.
>> @kevin Please verify on your setup if it is fixing the GCC 10
>> compilation.
>>
> 
> Passing with gcc 10 on my setup. Internal symbol part looks ok to me,
> but might be best to get review from Ray.
> 
> Tested-by: Kevin Traynor <ktraynor at redhat.com>
> 
>>
>>  drivers/common/dpaax/Makefile                    |  3 ++-
>>  drivers/common/dpaax/caamflib.c                  | 16 ++++++++++++++++
>>  drivers/common/dpaax/meson.build                 |  4 +++-
>>  .../common/dpaax/rte_common_dpaax_version.map    |  4 ++++
>>  drivers/crypto/caam_jr/Makefile                  |  7 -------
>>  drivers/crypto/caam_jr/caam_jr.c                 |  2 --
>>  drivers/crypto/caam_jr/meson.build               |  5 -----
>>  drivers/crypto/dpaa2_sec/Makefile                |  7 -------
>>  drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c      |  4 ++--
>>  drivers/crypto/dpaa2_sec/meson.build             |  5 -----
>>  drivers/crypto/dpaa_sec/Makefile                 |  7 -------
>>  drivers/crypto/dpaa_sec/dpaa_sec.c               |  2 --
>>  drivers/crypto/dpaa_sec/meson.build              |  5 -----
>>  13 files changed, 27 insertions(+), 44 deletions(-)
>>  create mode 100644 drivers/common/dpaax/caamflib.c
>>
>> diff --git a/drivers/common/dpaax/Makefile b/drivers/common/dpaax/Makefile
>> index 15b0b38d0..2f4b924fd 100644
>> --- a/drivers/common/dpaax/Makefile
>> +++ b/drivers/common/dpaax/Makefile
>> @@ -15,6 +15,7 @@ CFLAGS += -Wno-pointer-arith
>>  CFLAGS += -Wno-cast-qual
>>  
>>  CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
>> +CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib
>>  
>>  # versioning export map
>>  EXPORT_MAP := rte_common_dpaax_version.map
>> @@ -22,7 +23,7 @@ EXPORT_MAP := rte_common_dpaax_version.map
>>  #
>>  # all source are stored in SRCS-y
>>  #
>> -SRCS-y += dpaax_iova_table.c dpaa_of.c
>> +SRCS-y += dpaax_iova_table.c dpaa_of.c caamflib.c
>>  
>>  LDLIBS += -lrte_eal
>>  
>> diff --git a/drivers/common/dpaax/caamflib.c b/drivers/common/dpaax/caamflib.c
>> new file mode 100644
>> index 000000000..55e20281c
>> --- /dev/null
>> +++ b/drivers/common/dpaax/caamflib.c
>> @@ -0,0 +1,16 @@
>> +/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
>> + *
>> + * Copyright 2020 NXP
>> + *
>> + */
>> +
>> +#include <rta.h>
>> +
>> +/*
>> + * SEC HW block revision.
>> + *
>> + * This *must not be confused with SEC version*:
>> + * - SEC HW block revision format is "v"
>> + * - SEC revision format is "x.y"
>> + */
>> +enum rta_sec_era rta_sec_era;
>> diff --git a/drivers/common/dpaax/meson.build b/drivers/common/dpaax/meson.build
>> index ff2d1a507..0b8bf7bd5 100644
>> --- a/drivers/common/dpaax/meson.build
>> +++ b/drivers/common/dpaax/meson.build
>> @@ -6,7 +6,9 @@ if not is_linux
>>  	reason = 'only supported on linux'
>>  endif
>>  
>> -sources = files('dpaax_iova_table.c', 'dpaa_of.c')
>> +sources = files('dpaax_iova_table.c', 'dpaa_of.c', 'caamflib.c')
>> +
>> +includes += include_directories('caamflib')
>>  
>>  cflags += ['-D_GNU_SOURCE']
>>  if cc.has_argument('-Wno-cast-qual')
>> diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
>> index f72eba761..837ce01af 100644
>> --- a/drivers/common/dpaax/rte_common_dpaax_version.map
>> +++ b/drivers/common/dpaax/rte_common_dpaax_version.map
>> @@ -21,3 +21,7 @@ DPDK_20.0 {
>>  
>>  	local: *;
>>  };
>> +
>> +INTERNAL {
>> +	rta_sec_era;
>> +};
>> diff --git a/drivers/crypto/caam_jr/Makefile b/drivers/crypto/caam_jr/Makefile
>> index 10848884c..89d323817 100644
>> --- a/drivers/crypto/caam_jr/Makefile
>> +++ b/drivers/crypto/caam_jr/Makefile
>> @@ -14,13 +14,6 @@ CFLAGS += -D _GNU_SOURCE
>>  CFLAGS += -O3
>>  CFLAGS += $(WERROR_FLAGS)
>>  
>> -# FIXME: temporary solution for Bugzilla 469
>> -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
>> -ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1)
>> -CFLAGS += -fcommon
>> -endif
>> -endif
>> -
>>  CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/include
>>  CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
>>  CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib/
>> diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c
>> index 5a29dd169..45003ba25 100644
>> --- a/drivers/crypto/caam_jr/caam_jr.c
>> +++ b/drivers/crypto/caam_jr/caam_jr.c
>> @@ -37,8 +37,6 @@
>>  static uint8_t cryptodev_driver_id;
>>  int caam_jr_logtype;
>>  
>> -enum rta_sec_era rta_sec_era;
>> -
>>  /* Lists the states possible for the SEC user space driver. */
>>  enum sec_driver_state_e {
>>  	SEC_DRIVER_STATE_IDLE,		/* Driver not initialized */
>> diff --git a/drivers/crypto/caam_jr/meson.build b/drivers/crypto/caam_jr/meson.build
>> index 551b13632..f8b5250a9 100644
>> --- a/drivers/crypto/caam_jr/meson.build
>> +++ b/drivers/crypto/caam_jr/meson.build
>> @@ -12,11 +12,6 @@ sources = files('caam_jr_capabilities.c',
>>  		'caam_jr_uio.c',
>>  		'caam_jr.c')
>>  
>> -# FIXME: temporary solution for Bugzilla 469
>> -if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0'))
>> -	cflags += '-fcommon'
>> -endif
>> -
>>  includes += include_directories('../../bus/dpaa/include/')
>>  includes += include_directories('../../common/dpaax/')
>>  includes += include_directories('../../common/dpaax/caamflib/')
>> diff --git a/drivers/crypto/dpaa2_sec/Makefile b/drivers/crypto/dpaa2_sec/Makefile
>> index 8ce637db6..a0a279557 100644
>> --- a/drivers/crypto/dpaa2_sec/Makefile
>> +++ b/drivers/crypto/dpaa2_sec/Makefile
>> @@ -19,13 +19,6 @@ CFLAGS += -Wno-implicit-fallthrough
>>  endif
>>  endif
>>  
>> -# FIXME: temporary solution for Bugzilla 469
>> -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
>> -ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1)
>> -CFLAGS += -fcommon
>> -endif
>> -endif
>> -
>>  CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
>>  CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib
>>  CFLAGS += -I$(RTE_SDK)/drivers/crypto/dpaa2_sec/
>> diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
>> index fe34e644c..6459a025b 100644
>> --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
>> +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
>> @@ -56,8 +56,6 @@
>>  #define SEC_FLC_DHR_OUTBOUND	-114
>>  #define SEC_FLC_DHR_INBOUND	0
>>  
>> -enum rta_sec_era rta_sec_era = RTA_SEC_ERA_8;
>> -
>>  static uint8_t cryptodev_driver_id;
>>  
>>  int dpaa2_logtype_sec;
>> @@ -3870,6 +3868,8 @@ cryptodev_dpaa2_sec_probe(struct rte_dpaa2_driver *dpaa2_drv __rte_unused,
>>  
>>  	if (dpaa2_svr_family == SVR_LX2160A)
>>  		rta_set_sec_era(RTA_SEC_ERA_10);
>> +	else
>> +		rta_set_sec_era(RTA_SEC_ERA_8);
>>  
>>  	DPAA2_SEC_INFO("2-SEC ERA is %d", rta_get_sec_era());
>>  
>> diff --git a/drivers/crypto/dpaa2_sec/meson.build b/drivers/crypto/dpaa2_sec/meson.build
>> index 505ad9414..cb1c2d049 100644
>> --- a/drivers/crypto/dpaa2_sec/meson.build
>> +++ b/drivers/crypto/dpaa2_sec/meson.build
>> @@ -10,9 +10,4 @@ deps += ['security', 'mempool_dpaa2']
>>  sources = files('dpaa2_sec_dpseci.c',
>>  		'mc/dpseci.c')
>>  
>> -# FIXME: temporary solution for Bugzilla 469
>> -if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0'))
>> -	cflags += '-fcommon'
>> -endif
>> -
>>  includes += include_directories('mc', '../../common/dpaax', '../../common/dpaax/caamflib')
>> diff --git a/drivers/crypto/dpaa_sec/Makefile b/drivers/crypto/dpaa_sec/Makefile
>> index 6cf392cb3..ea266962a 100644
>> --- a/drivers/crypto/dpaa_sec/Makefile
>> +++ b/drivers/crypto/dpaa_sec/Makefile
>> @@ -13,13 +13,6 @@ LIB = librte_pmd_dpaa_sec.a
>>  CFLAGS += -O3
>>  CFLAGS += $(WERROR_FLAGS)
>>  
>> -# FIXME: temporary solution for Bugzilla 469
>> -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
>> -ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1)
>> -CFLAGS += -fcommon
>> -endif
>> -endif
>> -
>>  CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa
>>  CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/include
>>  CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/base/qbman
>> diff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c
>> index 25dcbd259..a9bfb8685 100644
>> --- a/drivers/crypto/dpaa_sec/dpaa_sec.c
>> +++ b/drivers/crypto/dpaa_sec/dpaa_sec.c
>> @@ -43,8 +43,6 @@
>>  #include <dpaa_sec_log.h>
>>  #include <dpaax_iova_table.h>
>>  
>> -enum rta_sec_era rta_sec_era;
>> -
>>  int dpaa_logtype_sec;
>>  
>>  static uint8_t cryptodev_driver_id;
>> diff --git a/drivers/crypto/dpaa_sec/meson.build b/drivers/crypto/dpaa_sec/meson.build
>> index f5e660457..7d422d8d5 100644
>> --- a/drivers/crypto/dpaa_sec/meson.build
>> +++ b/drivers/crypto/dpaa_sec/meson.build
>> @@ -9,11 +9,6 @@ endif
>>  deps += ['bus_dpaa', 'mempool_dpaa', 'security']
>>  sources = files('dpaa_sec.c')
>>  
>> -# FIXME: temporary solution for Bugzilla 469
>> -if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0'))
>> -	cflags += '-fcommon'
>> -endif
>> -
>>  includes += include_directories('../../bus/dpaa/include')
>>  includes += include_directories('../../common/dpaax')
>>  includes += include_directories('../../common/dpaax/caamflib/')
>>
> 

Acked-by: Ray Kinsella <mdr at ashroe.eu>


More information about the dev mailing list