From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7ABF245BC0; Thu, 24 Oct 2024 15:18:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A645434A0; Thu, 24 Oct 2024 15:18:39 +0200 (CEST) Received: from mx0a-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 7E6E643487 for ; Thu, 24 Oct 2024 15:18:35 +0200 (CEST) Received: from pps.filterd (m0431384.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49OAn7Wr028526; Thu, 24 Oct 2024 06:18:34 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pfpt0220; bh=y 4ic4bDodH32d7RrJsctBVNti9FoUqcafJ+6Ag4VSuU=; b=AqCiOGsWzK9y04wtm df7BwrYjFhYFYuA7DNWJ0qWqIPuNc27x1+rbrvObCeUfXUtsPciDIwoStqGDeZSx GNFzqKG7sQoZhkV9tbPVRkcqjKzIa1TkD48DQwWfuxlhrfosw60izkrd7RUoIZz2 rUfuRmc445kPgKSVGbqGSnC/rJFpUY5IPaGrs4WVvWf4adkrlnoWM3FwEbTB5mJJ Rmb+vPA4AhNjqq/7JtTTpwhgrjmlNKnW2DzagB2skwI8tjQ88EfrZukkkFKxKW/8 WIRHpBOOp8uFHTH3Xpov+8+qA/S1FlHJi/lsVb7gDrItEWKRpgHUddF+lP/iR7bK BfLnQ== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 42fm570arp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 24 Oct 2024 06:18:33 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 24 Oct 2024 06:18:32 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Thu, 24 Oct 2024 06:18:32 -0700 Received: from localhost.localdomain (unknown [10.28.36.102]) by maili.marvell.com (Postfix) with ESMTP id 3B44B3F70BC; Thu, 24 Oct 2024 06:18:29 -0700 (PDT) From: Akhil Goyal To: CC: , , , , , , , , Akhil Goyal Subject: [PATCH v5 8/9] raw/cnxk_rvu_lf: add API to get BAR addresses Date: Thu, 24 Oct 2024 18:47:58 +0530 Message-ID: <20241024131759.3337333-9-gakhil@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241024131759.3337333-1-gakhil@marvell.com> References: <20241024130130.3330978-1-gakhil@marvell.com> <20241024131759.3337333-1-gakhil@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: R-R18_Fee1KzqZ_XOOvUVmeqA2DMq1LL X-Proofpoint-ORIG-GUID: R-R18_Fee1KzqZ_XOOvUVmeqA2DMq1LL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.687,Hydra:6.0.235,FMLib:17.0.607.475 definitions=2020-10-13_15,2020-10-13_02,2020-04-07_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Added rte_pmd_rvu_lf_bar_get() API to get BAR address for application to configure hardware. Signed-off-by: Akhil Goyal --- doc/guides/rawdevs/cnxk_rvu_lf.rst | 7 ++++++ drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c | 24 ++++++++++++++++++++ drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h | 18 +++++++++++++++ drivers/raw/cnxk_rvu_lf/version.map | 1 + 4 files changed, 50 insertions(+) diff --git a/doc/guides/rawdevs/cnxk_rvu_lf.rst b/doc/guides/rawdevs/cnxk_rvu_lf.rst index 51e1c58b69..a972654f82 100644 --- a/doc/guides/rawdevs/cnxk_rvu_lf.rst +++ b/doc/guides/rawdevs/cnxk_rvu_lf.rst @@ -73,3 +73,10 @@ and provides an opaque pointer for a response and its length. PF and VF application can define its own request and response based on the message id of the mailbox. For sample usage of the APIs, please refer to ``rvu_lf_rawdev_selftest()``. + +Get BAR addresses +----------------- + +Application can retrieve PCI BAR addresses of the device using the API +``rte_pmd_rvu_lf_bar_get()``. This helps application to configure the +registers of the hardware device. diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c index 156b9460c1..3a3971ecd3 100644 --- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c +++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf.c @@ -103,6 +103,30 @@ rte_pmd_rvu_lf_irq_unregister(uint8_t dev_id, unsigned int irq, return roc_rvu_lf_irq_unregister(roc_rvu_lf, irq, (roc_rvu_lf_intr_cb_fn)cb, data); } +int +rte_pmd_rvu_lf_bar_get(uint8_t dev_id, uint8_t bar_num, size_t *va, size_t *mask) +{ + struct roc_rvu_lf *roc_rvu_lf; + struct rte_rawdev *rawdev; + + rawdev = rte_rawdev_pmd_get_dev(dev_id); + if (rawdev == NULL) + return -EINVAL; + + roc_rvu_lf = (struct roc_rvu_lf *)rawdev->dev_private; + + if (bar_num > PCI_MAX_RESOURCE || + (roc_rvu_lf->pci_dev->mem_resource[bar_num].addr == NULL)) { + *va = 0; + *mask = 0; + return -ENOTSUP; + } + *va = (size_t)(roc_rvu_lf->pci_dev->mem_resource[bar_num].addr); + *mask = (size_t)(roc_rvu_lf->pci_dev->mem_resource[bar_num].len - 1); + + return 0; +} + uint16_t rte_pmd_rvu_lf_npa_pf_func_get(void) { diff --git a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h index 22978f89af..922c852592 100644 --- a/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h +++ b/drivers/raw/cnxk_rvu_lf/cnxk_rvu_lf_driver.h @@ -191,6 +191,24 @@ __rte_internal int rte_pmd_rvu_lf_msg_process(uint8_t dev_id, uint16_t vf, uint16_t msg_id, void *req, uint16_t req_len, void *rsp, uint16_t rsp_len); +/** + * Get BAR addresses for the RVU LF device. + * + * @param dev_id + * device id of RVU LF device + * @param bar_num + * BAR number for which address is required + * @param[out] va + * Virtual address of the BAR. 0 if not mapped + * @param[out] mask + * BAR address mask, 0 if not mapped + * + * @return + * Returns 0 on success, negative error code otherwise + */ +__rte_internal +int rte_pmd_rvu_lf_bar_get(uint8_t dev_id, uint8_t bar_num, size_t *va, size_t *mask); + #ifdef __cplusplus } #endif diff --git a/drivers/raw/cnxk_rvu_lf/version.map b/drivers/raw/cnxk_rvu_lf/version.map index aa974f629e..012f05d1e4 100644 --- a/drivers/raw/cnxk_rvu_lf/version.map +++ b/drivers/raw/cnxk_rvu_lf/version.map @@ -1,6 +1,7 @@ INTERNAL { global: + rte_pmd_rvu_lf_bar_get; rte_pmd_rvu_lf_irq_register; rte_pmd_rvu_lf_irq_unregister; rte_pmd_rvu_lf_msg_handler_register; -- 2.25.1