From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D7523A00C3; Fri, 15 May 2020 07:13:14 +0200 (CEST) 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(-) 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) { -- 2.17.1