From patchwork Fri Aug 24 12:16:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Duszynski X-Patchwork-Id: 43848 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A498E4C99; Fri, 24 Aug 2018 14:17:04 +0200 (CEST) Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) by dpdk.org (Postfix) with ESMTP id B33282C0C for ; Fri, 24 Aug 2018 14:17:01 +0200 (CEST) Received: by mail-lf1-f67.google.com with SMTP id r4-v6so6517559lff.12 for ; Fri, 24 Aug 2018 05:17:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=whQCTFmUsFodd4jf4DSppMYjFlndEVDuT+eYk5+PsKU=; b=F3eJXwmtdNYmigGkDI9XvDT3V7aU7lKi5d6wmOXPtGnovMIVU/Vp4Shtc1BVzaAhYV R7rc15FWHcGqqYhoE4VLhd3Sx152DlkHoe7jvaTFoYSDCCsyZEH6/2Mb6gNeBFoCGhGF WbHkdeKic/EFyf0fFGfcPcVEZLOke1i3wrkkghMJi3UChQp+0U15ON0NV4+Io7tjVRiy 5lM6/P7LiPEWeuUtGE7TEhhw2y9Zzs1x81koqJi4Ujht9hRGOO7ZYA5fNJuJbNk3IrxT f5Z5IBRs35W5YTlCknRgypHwhB1/gnXVQnZnStwwis4oQYPy8m3B6q7jfLy5Sm+dCkHx ZlOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=whQCTFmUsFodd4jf4DSppMYjFlndEVDuT+eYk5+PsKU=; b=nspo1Jl9PGkg0YqQU6Nltfmt4nYERaH7KDqkM/r+VycZRrVpwDzcCjfVBKFF9z/fdU u0dK1mzWngtcpMv7jGxQUVSYa+9NyHC12Iy4uzSCmxGGTt8hZB5GpLxA4fWP0ZOXcw6S t/yngE0ee3gk6RvZp+4K9k6NXQznZJtY3yBqyf56vfE82UI3BsU3ZZxSU4VNGj4VZaDc Hjz3r0L3KWT72MU0XOg/Oh8QMvbH+w/9srEo3PiEyGKI2G6XI7z6YdXj1hOXlaJtgNSI bnjDFekkk6bDHDTNsyTwAUdGNfRxRH6dilTYfAxF3ELI09805NzxUcQC0+cAIQ0vDKSM 3p+Q== X-Gm-Message-State: APzg51AtcuOGreBiTxyLGEtEDgPqALKr8da4ERi14Sw/tkgIEpa/d/OK O/KDb2yxmgKFcuUdmxz8c2jk/k4PmEA= X-Google-Smtp-Source: ANB0VdZ7tjD9ygx6XsQthHaQHQuYFWMaWn7ysvglAlnkuCdwJ7dYD1i2a0pWfeuaKNlNGGr1r5gNcA== X-Received: by 2002:a19:3bd4:: with SMTP id d81-v6mr1170490lfl.96.1535113021127; Fri, 24 Aug 2018 05:17:01 -0700 (PDT) Received: from sh.semihalf.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id a18-v6sm1177672ljk.47.2018.08.24.05.16.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 24 Aug 2018 05:17:00 -0700 (PDT) From: Tomasz Duszynski To: dev@dpdk.org Cc: nsamsono@marvell.com, mw@semihalf.com, Liron Himi , Tomasz Duszynski Date: Fri, 24 Aug 2018 14:16:41 +0200 Message-Id: <1535113006-9393-2-git-send-email-tdu@semihalf.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535113006-9393-1-git-send-email-tdu@semihalf.com> References: <1535113006-9393-1-git-send-email-tdu@semihalf.com> Subject: [dpdk-dev] [PATCH 1/6] drivers/common: add mvep common code for MRVL PMDs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Liron Himi Add MVEP (Marvell Embedded Processors) to drivers/common which will keep code reused by current and future MRVL PMDs. Right now we have only common DMA memory initialization routines there. Signed-off-by: Liron Himi Signed-off-by: Tomasz Duszynski Reviewed-by: Natalie Samsonov --- config/common_base | 5 +++ devtools/test-build.sh | 2 ++ drivers/common/Makefile | 4 +++ drivers/common/meson.build | 2 +- drivers/common/mvep/Makefile | 38 +++++++++++++++++++++ drivers/common/mvep/meson.build | 19 +++++++++++ drivers/common/mvep/mvep_common.c | 45 +++++++++++++++++++++++++ drivers/common/mvep/rte_common_mvep_version.map | 6 ++++ drivers/common/mvep/rte_mvep_common.h | 20 +++++++++++ mk/rte.app.mk | 4 +++ 10 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 drivers/common/mvep/Makefile create mode 100644 drivers/common/mvep/meson.build create mode 100644 drivers/common/mvep/mvep_common.c create mode 100644 drivers/common/mvep/rte_common_mvep_version.map create mode 100644 drivers/common/mvep/rte_mvep_common.h diff --git a/config/common_base b/config/common_base index 4bcbaf9..978592d 100644 --- a/config/common_base +++ b/config/common_base @@ -395,6 +395,11 @@ CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y # +# Compile Marvell Embedded Processors Common +# +CONFIG_RTE_LIBRTE_MVEP_COMMON=n + +# # Compile Marvell PMD driver # CONFIG_RTE_LIBRTE_MVPP2_PMD=n diff --git a/devtools/test-build.sh b/devtools/test-build.sh index 1eee241..82861b2 100755 --- a/devtools/test-build.sh +++ b/devtools/test-build.sh @@ -182,6 +182,8 @@ config () # sed -ri 's,(PMD_MVSAM_CRYPTO=)n,\1y,' $1/.config test -z "$LIBMUSDK_PATH" || \ sed -ri 's,(MVPP2_PMD=)n,\1y,' $1/.config + test -z "$LIBMUSDK_PATH" || \ + sed -ri 's,(MVEP_COMMON=)n,\1y,' $1/.config build_config_hook $1 $2 $3 # Explicit enabler/disabler (uppercase) diff --git a/drivers/common/Makefile b/drivers/common/Makefile index 0fd2237..1795133 100644 --- a/drivers/common/Makefile +++ b/drivers/common/Makefile @@ -8,4 +8,8 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO DIRS-y += octeontx endif +ifeq ($(CONFIG_RTE_LIBRTE_MVEP_COMMON),y) +DIRS-$(CONFIG_RTE_LIBRTE_MVEP_COMMON) += mvep +endif + include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/common/meson.build b/drivers/common/meson.build index d7b7d8c..f828ce7 100644 --- a/drivers/common/meson.build +++ b/drivers/common/meson.build @@ -2,6 +2,6 @@ # Copyright(c) 2018 Cavium, Inc std_deps = ['eal'] -drivers = ['octeontx', 'qat'] +drivers = ['mvep', 'octeontx', 'qat'] config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON' driver_name_fmt = 'rte_common_@0@' diff --git a/drivers/common/mvep/Makefile b/drivers/common/mvep/Makefile new file mode 100644 index 0000000..845bb47 --- /dev/null +++ b/drivers/common/mvep/Makefile @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Marvell International Ltd. +# + +include $(RTE_SDK)/mk/rte.vars.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(MAKECMDGOALS),config) +ifeq ($(LIBMUSDK_PATH),) +$(error "Please define LIBMUSDK_PATH environment variable") +endif +endif +endif + +# library name +LIB = librte_common_mvep.a + +# library version +LIBABIVER := 1 + +# versioning export map +EXPORT_MAP := rte_common_mvep_version.map + +# external library dependencies +CFLAGS += -I$($RTE_SDK)/drivers/common/mvep +CFLAGS += -I$(LIBMUSDK_PATH)/include +CFLAGS += -DMVCONF_TYPES_PUBLIC +CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC +CFLAGS += $(WERROR_FLAGS) +CFLAGS += -O3 +LDLIBS += -L$(LIBMUSDK_PATH)/lib +LDLIBS += -lmusdk +LDLIBS += -lrte_eal -lrte_kvargs + +# library source files +SRCS-$(CONFIG_RTE_LIBRTE_MVEP_COMMON) += mvep_common.c + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/common/mvep/meson.build b/drivers/common/mvep/meson.build new file mode 100644 index 0000000..8ccfacb --- /dev/null +++ b/drivers/common/mvep/meson.build @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Marvell International Ltd. +# Copyright(c) 2018 Semihalf. +# All rights reserved. +# +path = get_option('lib_musdk_dir') +lib_dir = path + '/lib' +inc_dir = path + '/include' + +lib = cc.find_library('libmusdk', dirs: [lib_dir], required: false) +if not lib.found() + build = false +else + ext_deps += lib + includes += include_directories(inc_dir) + cflags += ['-DMVCONF_TYPES_PUBLIC', '-DMVCONF_DMA_PHYS_ADDR_T_PUBLIC'] +endif + +sources = files('mvep_common.c') diff --git a/drivers/common/mvep/mvep_common.c b/drivers/common/mvep/mvep_common.c new file mode 100644 index 0000000..67fa65b --- /dev/null +++ b/drivers/common/mvep/mvep_common.c @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Marvell International Ltd. + */ + +#include + +#include +#include + +#include "rte_mvep_common.h" + +/* Memory size (in bytes) for MUSDK dma buffers */ +#define MRVL_MUSDK_DMA_MEMSIZE (40 * 1024 * 1024) + +struct mvep { + uint32_t ref_count; +}; + +static struct mvep mvep; + +int rte_mvep_init(enum mvep_module_type module __rte_unused, + struct rte_kvargs *kvlist __rte_unused) +{ + int ret; + + if (!mvep.ref_count) { + ret = mv_sys_dma_mem_init(MRVL_MUSDK_DMA_MEMSIZE); + if (ret) + return ret; + } + + mvep.ref_count++; + + return 0; +} + +int rte_mvep_deinit(enum mvep_module_type module __rte_unused) +{ + mvep.ref_count--; + + if (!mvep.ref_count) + mv_sys_dma_mem_destroy(); + + return 0; +} diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map new file mode 100644 index 0000000..fa1a1b8 --- /dev/null +++ b/drivers/common/mvep/rte_common_mvep_version.map @@ -0,0 +1,6 @@ +DPDK_18.08 { + global: + + rte_mvep_init; + rte_mvep_deinit; +}; diff --git a/drivers/common/mvep/rte_mvep_common.h b/drivers/common/mvep/rte_mvep_common.h new file mode 100644 index 0000000..ba47e16 --- /dev/null +++ b/drivers/common/mvep/rte_mvep_common.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Marvell International Ltd. + */ + +#ifndef __RTE_MVEP_COMMON_H__ +#define __RTE_MVEP_COMMON_H__ + +#include + +enum mvep_module_type { + MVEP_MOD_T_NONE = 0, + MVEP_MOD_T_PP2, + MVEP_MOD_T_SAM, + MVEP_MOD_T_LAST +}; + +int rte_mvep_init(enum mvep_module_type module, struct rte_kvargs *kvlist); +int rte_mvep_deinit(enum mvep_module_type module); + +#endif /* __RTE_MVEP_COMMON_H__ */ diff --git a/mk/rte.app.mk b/mk/rte.app.mk index de33883..a9c9b4f 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -98,6 +98,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF)$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOO _LDLIBS-y += -lrte_common_octeontx endif +ifeq ($(CONFIG_RTE_LIBRTE_MVEP_COMMON),y) +_LDLIBS-$(CONFIG_RTE_LIBRTE_MVEP_COMMON) += -lrte_common_mvep -L$(LIBMUSDK_PATH)/lib -lmusdk +endif + _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += -lrte_bus_pci _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += -lrte_bus_vdev _LDLIBS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += -lrte_bus_dpaa