From patchwork Fri May 15 05:08:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 186807 Delivered-To: patch@linaro.org Received: by 2002:a92:5b0a:0:0:0:0:0 with SMTP id p10csp110719ilb; Thu, 14 May 2020 22:13:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiQ4ogBSCY3qwsGf3bOgo5K76OSqL5fquVYHSuZRfYjv3UMieepXVbiRJnXJ+Jd61OYXel X-Received: by 2002:a1c:59c3:: with SMTP id n186mr1893921wmb.24.1589519595233; Thu, 14 May 2020 22:13:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589519595; cv=none; d=google.com; s=arc-20160816; b=dLQ6zrvoGnbR9nWND5+Q76aMmZa3x3olskfH4KY2uMwPgLTRbzLG9nujMDMP/LNKls tdCHecNTOoybjmU/6ZDC65Tv2YKaXjJHCUWZX2DPY34M0NSr6g0INYbvNThTfXe01X/4 Qchh4HtnkbkYhz2jVbd89RNhpUHRuSYqoRho1tzZpnMW9sff7CtaSxyTLky25Y3R6b/j oMYwXKqqa3PlzLOngNChBCDFA8QWKqFUZYtCUktvnOjQrJy5lkgLetHIpBw36RJkg1ek 1WxvEwJyWTGaSbDtcKoF++WC2N5+yiL0ttOQy5R3CJsTKJdaSCYbRz/zdM4RGLPqSjVL Wt8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:cc:to:from; bh=jn4sThP0yyxy/A899rIuCMT8sMHW61M9BN2+m+LFffU=; b=e9e8YTO/xG1MFx706okiIUzpzWYaykv72mg1OCCOdpsw89HIZuk/MTjBoaU+BavbNG 6hQhM33LKcwVQpugVTSIYlucDtMANbkZeDY3+F3nRQza0WWvdWv07jwiyAzPNq9hKw4p JNH45+H5xR3TZLr0x5eri4QuLu80v7BD1smzJFqRx49jPCcI9quSM5eI84B61vjOdQcf Pq1Hw2OFSb/4SQAYkvXOu00hkjNU1SHBOm9xy3gD0irUGUJSvTecJ/KyplviqSYNSAfW V/G+dmxdwOVt/ZG8xVGRf5iAwh63GwexCBr4R3fimHdK7ngVe9Op2s/fldgmmX+pajfp w7zQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id m8si1081873wmg.183.2020.05.14.22.13.15; Thu, 14 May 2020 22:13:15 -0700 (PDT) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) client-ip=92.243.14.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 97C8E1DA36; Fri, 15 May 2020 07:11:26 +0200 (CEST) Received: from inva021.nxp.com (inva021.nxp.com [92.121.34.21]) by dpdk.org (Postfix) with ESMTP id 14AF71D90A for ; Fri, 15 May 2020 07:11:08 +0200 (CEST) Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id EC26A200634; Fri, 15 May 2020 07:11:07 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id BBB60200643; Fri, 15 May 2020 07:11:05 +0200 (CEST) Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.133.63]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 7DD9B4031D; Fri, 15 May 2020 13:11:02 +0800 (SGT) From: Hemant Agrawal To: dev@dpdk.org, david.marchand@redhat.com, mdr@ashroe.eu Cc: Hemant Agrawal Date: Fri, 15 May 2020 10:38:30 +0530 Message-Id: <20200515050831.22834-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200515050831.22834-1-hemant.agrawal@nxp.com> References: <20200514142951.31801-1-hemant.agrawal@nxp.com> <20200515050831.22834-1-hemant.agrawal@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Subject: [dpdk-dev] [PATCH v7 12/13] bus/fslmc: share mcp ptr as function across libs 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" Currently rte_mcp_ptr_list is being shared as a variable across libs. This is only used in control path. This patch change it to a exported function based access. Signed-off-by: Hemant Agrawal --- drivers/bus/fslmc/fslmc_vfio.c | 15 ++++++++++++--- drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c | 2 +- drivers/bus/fslmc/portal/dpaa2_hw_dpci.c | 2 +- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 2 +- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 7 ++++--- drivers/bus/fslmc/rte_bus_fslmc_version.map | 2 +- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 2 +- drivers/event/dpaa2/dpaa2_hw_dpcon.c | 2 +- drivers/net/dpaa2/dpaa2_ethdev.c | 2 +- drivers/net/dpaa2/dpaa2_mux.c | 2 +- drivers/net/dpaa2/dpaa2_ptp.c | 2 +- drivers/raw/dpaa2_qdma/dpaa2_qdma.c | 2 +- 12 files changed, 26 insertions(+), 16 deletions(-) -- 2.17.1 diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c index 970969d2bf..efe2c43d37 100644 --- a/drivers/bus/fslmc/fslmc_vfio.c +++ b/drivers/bus/fslmc/fslmc_vfio.c @@ -51,6 +51,15 @@ static int fslmc_iommu_type; static uint32_t *msi_intr_vaddr; void *(*rte_mcp_ptr_list); +void * +dpaa2_get_mcp_ptr(int portal_idx) +{ + if (rte_mcp_ptr_list) + return rte_mcp_ptr_list[portal_idx]; + else + return NULL; +} + static struct rte_dpaa2_object_list dpaa2_obj_list = TAILQ_HEAD_INITIALIZER(dpaa2_obj_list); @@ -734,7 +743,7 @@ fslmc_process_mcp(struct rte_dpaa2_device *dev) struct fsl_mc_io dpmng = {0}; struct mc_version mc_ver_info = {0}; - rte_mcp_ptr_list = malloc(sizeof(void *) * 1); + rte_mcp_ptr_list = malloc(sizeof(void *) * (MC_PORTAL_INDEX + 1)); if (!rte_mcp_ptr_list) { DPAA2_BUS_ERR("Unable to allocate MC portal memory"); ret = -ENOMEM; @@ -762,7 +771,7 @@ fslmc_process_mcp(struct rte_dpaa2_device *dev) * required. */ if (rte_eal_process_type() == RTE_PROC_SECONDARY) { - rte_mcp_ptr_list[0] = (void *)v_addr; + rte_mcp_ptr_list[MC_PORTAL_INDEX] = (void *)v_addr; return 0; } @@ -782,7 +791,7 @@ fslmc_process_mcp(struct rte_dpaa2_device *dev) ret = -1; goto cleanup; } - rte_mcp_ptr_list[0] = (void *)v_addr; + rte_mcp_ptr_list[MC_PORTAL_INDEX] = (void *)v_addr; free(dev_name); return 0; diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c index db49d637f5..79b148f20b 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpbp.c @@ -56,7 +56,7 @@ dpaa2_create_dpbp_device(int vdev_fd __rte_unused, } /* Open the dpbp object */ - dpbp_node->dpbp.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dpbp_node->dpbp.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); ret = dpbp_open(&dpbp_node->dpbp, CMD_PRI_LOW, dpbp_id, &dpbp_node->token); if (ret) { diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c index 5ad0374df9..d393ce6186 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c @@ -50,7 +50,7 @@ rte_dpaa2_create_dpci_device(int vdev_fd __rte_unused, } /* Open the dpci object */ - dpci_node->dpci.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dpci_node->dpci.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); ret = dpci_open(&dpci_node->dpci, CMD_PRI_LOW, dpci_id, &dpci_node->token); if (ret) { diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index 739ce434ba..21c535f2fb 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -416,7 +416,7 @@ dpaa2_create_dpio_device(int vdev_fd, dpio_dev->hw_id = object_id; rte_atomic16_init(&dpio_dev->ref_count); /* Using single portal for all devices */ - dpio_dev->mc_portal = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dpio_dev->mc_portal = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); if (!check_lcore_cpuset) { check_lcore_cpuset = 1; diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 33b191f823..194b99c583 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -198,9 +198,6 @@ struct dpaa2_dpcon_dev { uint8_t channel_index; }; -/*! Global MCP list */ -extern void *(*rte_mcp_ptr_list); - /* Refer to Table 7-3 in SEC BG */ struct qbman_fle { uint32_t addr_lo; @@ -441,4 +438,8 @@ struct dpaa2_dpci_dev *rte_dpaa2_alloc_dpci_dev(void); __rte_internal void rte_dpaa2_free_dpci_dev(struct dpaa2_dpci_dev *dpci); +/* Global MCP pointer */ +__rte_internal +void *dpaa2_get_mcp_ptr(int portal_idx); + #endif diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map index 1b7a5a45e9..80da19a277 100644 --- a/drivers/bus/fslmc/rte_bus_fslmc_version.map +++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map @@ -21,6 +21,7 @@ INTERNAL { dpaa2_free_dpbp_dev; dpaa2_free_dq_storage; dpaa2_free_eq_descriptors; + dpaa2_get_mcp_ptr; dpaa2_io_portal; dpaa2_svr_family; dpaa2_virt_mode; @@ -111,5 +112,4 @@ INTERNAL { rte_fslmc_get_device_count; rte_fslmc_object_register; rte_global_active_dqs_list; - rte_mcp_ptr_list; }; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index fe34e644cc..5d63644934 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -3788,7 +3788,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) "Error in allocating the memory for dpsec object"); return -ENOMEM; } - dpseci->regs = rte_mcp_ptr_list[0]; + dpseci->regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); retcode = dpseci_open(dpseci, CMD_PRI_LOW, hw_id, &token); if (retcode != 0) { diff --git a/drivers/event/dpaa2/dpaa2_hw_dpcon.c b/drivers/event/dpaa2/dpaa2_hw_dpcon.c index d64e588aa8..200b71640b 100644 --- a/drivers/event/dpaa2/dpaa2_hw_dpcon.c +++ b/drivers/event/dpaa2/dpaa2_hw_dpcon.c @@ -48,7 +48,7 @@ rte_dpaa2_create_dpcon_device(int dev_fd __rte_unused, } /* Open the dpcon object */ - dpcon_node->dpcon.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dpcon_node->dpcon.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); ret = dpcon_open(&dpcon_node->dpcon, CMD_PRI_LOW, dpcon_id, &dpcon_node->token); if (ret) { diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 1bab3b064c..2f031ec5c1 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -2343,7 +2343,7 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev) DPAA2_PMD_ERR("Memory allocation failed for dpni device"); return -1; } - dpni_dev->regs = rte_mcp_ptr_list[0]; + dpni_dev->regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); eth_dev->process_private = (void *)dpni_dev; /* For secondary processes, the primary has done all the work */ diff --git a/drivers/net/dpaa2/dpaa2_mux.c b/drivers/net/dpaa2/dpaa2_mux.c index 9ac8806faf..f8366e839e 100644 --- a/drivers/net/dpaa2/dpaa2_mux.c +++ b/drivers/net/dpaa2/dpaa2_mux.c @@ -224,7 +224,7 @@ dpaa2_create_dpdmux_device(int vdev_fd __rte_unused, } /* Open the dpdmux object */ - dpdmux_dev->dpdmux.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dpdmux_dev->dpdmux.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); ret = dpdmux_open(&dpdmux_dev->dpdmux, CMD_PRI_LOW, dpdmux_id, &dpdmux_dev->token); if (ret) { diff --git a/drivers/net/dpaa2/dpaa2_ptp.c b/drivers/net/dpaa2/dpaa2_ptp.c index 316912fe3e..f58eedb314 100644 --- a/drivers/net/dpaa2/dpaa2_ptp.c +++ b/drivers/net/dpaa2/dpaa2_ptp.c @@ -147,7 +147,7 @@ dpaa2_create_dprtc_device(int vdev_fd __rte_unused, } /* Open the dprtc object */ - dprtc_dev->dprtc.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dprtc_dev->dprtc.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); ret = dprtc_open(&dprtc_dev->dprtc, CMD_PRI_LOW, dprtc_id, &dprtc_dev->token); if (ret) { diff --git a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c index d5202d6522..1be1b6ddf0 100644 --- a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c +++ b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c @@ -1315,7 +1315,7 @@ dpaa2_dpdmai_dev_init(struct rte_rawdev *rawdev, int dpdmai_id) /* Open DPDMAI device */ dpdmai_dev->dpdmai_id = dpdmai_id; - dpdmai_dev->dpdmai.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + dpdmai_dev->dpdmai.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX); ret = dpdmai_open(&dpdmai_dev->dpdmai, CMD_PRI_LOW, dpdmai_dev->dpdmai_id, &dpdmai_dev->token); if (ret) {