From: Akhil Goyal <akhil.goyal@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@dpdk.org Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com> --- drivers/common/dpaax/Makefile | 3 ++- drivers/common/dpaax/meson.build | 2 +- drivers/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 ----- 12 files changed, 9 insertions(+), 44 deletions(-) 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/meson.build b/drivers/common/dpaax/meson.build index ff2d1a507..800f91abb 100644 --- a/drivers/common/dpaax/meson.build +++ b/drivers/common/dpaax/meson.build @@ -6,7 +6,7 @@ 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') 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/') -- 2.17.1
From: Akhil Goyal <akhil.goyal@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@dpdk.org Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com> --- drivers/common/dpaax/Makefile | 3 ++- drivers/common/dpaax/caamflib.c | 16 ++++++++++++++++ drivers/common/dpaax/meson.build | 2 +- .../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, 25 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..800f91abb 100644 --- a/drivers/common/dpaax/meson.build +++ b/drivers/common/dpaax/meson.build @@ -6,7 +6,7 @@ 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') 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/') -- 2.17.1
From: Akhil Goyal <akhil.goyal@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@dpdk.org Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com> --- This patch is not tested on GCC 10. @kevin Please verify on your setup if it is fixing the GCC 10 compilation. 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/') -- 2.17.1
On 13/05/2020 14:50, akhil.goyal@nxp.com wrote: > From: Akhil Goyal <akhil.goyal@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@dpdk.org > > Signed-off-by: Akhil Goyal <akhil.goyal@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@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/') >
On 5/13/2020 2:50 PM, akhil.goyal@nxp.com wrote:
> From: Akhil Goyal <akhil.goyal@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@dpdk.org
>
> Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
+1, this is better approach, and tested with gcc10.
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Instead of having 3 seperate global variables for three seperate PMDs, now there
is a single global variable.
In static build these three variables were already used as single variable, that
is why we are getting fcommon warning, so I assume there is no use case to use
multiple of these PMDs at the same time, but previously this was fine (each PMD
has its own variable) when built as shared library, now shared library is also
using single variable.
It can be good to verify with PMD maintainers that this is OK, and these PMDs
won't be used at the same time in a platform.
> On 5/13/2020 2:50 PM, akhil.goyal@nxp.com wrote: > > From: Akhil Goyal <akhil.goyal@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@dpdk.org > > > > Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com> > > +1, this is better approach, and tested with gcc10. > > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> > Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> > > Instead of having 3 seperate global variables for three seperate PMDs, now > there is a single global variable. > In static build these three variables were already used as single variable, that is > why we are getting fcommon warning, so I assume there is no use case to use > multiple of these PMDs at the same time, but previously this was fine (each > PMD has its own variable) when built as shared library, now shared library is > also using single variable. > It can be good to verify with PMD maintainers that this is OK, and these PMDs > won't be used at the same time in a platform. [Hemant] This variable represent the SEC HW revision for a given platform. So it will not be different irrespective of drivers being used. Yes, for a given platform, only one PMD will be used at a given time.
Tidy solution.
On 13/05/2020 17:40, Kevin Traynor wrote:
> On 13/05/2020 14:50, akhil.goyal@nxp.com wrote:
>> From: Akhil Goyal <akhil.goyal@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@dpdk.org
>>
>> Signed-off-by: Akhil Goyal <akhil.goyal@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@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@ashroe.eu>
> > Tidy solution. > Thanks. > > Acked-by: Ray Kinsella <mdr@ashroe.eu> Applied to dpdk-next-crypto