Tidy solution.
On 13/05/2020 17:40, Kevin Traynor wrote: > On 13/05/2020 14:50, akhil.go...@nxp.com wrote: >> From: Akhil Goyal <akhil.go...@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: sta...@dpdk.org >> >> Signed-off-by: Akhil Goyal <akhil.go...@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 <ktray...@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 <m...@ashroe.eu>