From patchwork Tue Feb 7 16:06:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srikanth Yalavarthi X-Patchwork-Id: 123317 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CDFAA41C30; Tue, 7 Feb 2023 17:07:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AFFCE410D1; Tue, 7 Feb 2023 17:07:26 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 8911640A84 for ; Tue, 7 Feb 2023 17:07:25 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 317BL2vd005847 for ; Tue, 7 Feb 2023 08:07:24 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0220; bh=/Ew2otNJmzD5AqejmpHGanCSMEWPqrK2hCkTCaWDBzQ=; b=DcgNNZ9sYyJd8s+jqQ9MDIa7TftzELWU4AcD1UKqWMuAvcb8OnIKeIFerilsA5gMbWxz x3OGTnuQhcRsk4ZVSQ9ccwgkqRo4ubNKOphgn17KSWCuL1/2gw7ViqEf10092fxWylDw kFRyOBLZ+aQt3dOeruzPj3YINuZXSeqQ4qFfTiMZulvM/CGSds/alSb8dsY0+zKTeKyJ 4qItyA3raIvfvj03Vtws71zJJj8NUIUoi6635X7iQ63RIq2l3q6YAoIcpFNXa/wHnTi7 EG8S24haGIGD2AFlHJ1DWpzTigwEG5lSXkrU7tRx8FaZ+/97HEAcHNF858TqhIjMz6YV wg== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrtmsnd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 07 Feb 2023 08:07:24 -0800 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 7 Feb 2023 08:07:22 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend Transport; Tue, 7 Feb 2023 08:07:22 -0800 Received: from ml-host-33.caveonetworks.com (unknown [10.110.143.233]) by maili.marvell.com (Postfix) with ESMTP id 1D4633F7043; Tue, 7 Feb 2023 08:07:22 -0800 (PST) From: Srikanth Yalavarthi To: CC: , , , , , , "Srikanth Yalavarthi" Subject: [PATCH v5 00/39] Implementation of ML CNXK driver Date: Tue, 7 Feb 2023 08:06:40 -0800 Message-ID: <20230207160719.1307-1-syalavarthi@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221208200220.20267-1-syalavarthi@marvell.com> References: <20221208200220.20267-1-syalavarthi@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: McOIxW8mgvOTXOxxRoGU4XpDr1qwYfC- X-Proofpoint-ORIG-GUID: McOIxW8mgvOTXOxxRoGU4XpDr1qwYfC- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-07_07,2023-02-06_03,2022-06-22_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 Marvell ML CNXK Driver ---------------------- This patch series implements common Machine Learning (ML) ROC code and driver for Marvell Octeon 10 (cnxk) platform. ML inferencing is supported on cnxk platform through an integrated ML inferencing processor. The current driver supports programming the ML hardware engine through offload mode. All APIs proposed in the DPDK ML device specification are supported on the cnxk platform. v5: * Updated model_id to uint16_t * Updated release notes for 23.03 v4: * Update function names of ML common code * Added support for configurable OCM page size * Minor typo fixes v3: * Skip installation of internal headers * Update internal comments and code cleanup v2: * Typo and formatting fixes Srikanth Yalavarthi (39): common/cnxk: add ML headers and ROC code for cnxk ml/cnxk: add skeleton for ML cnxk driver ml/cnxk: enable probe and remove of ML device ml/cnxk: add driver support to get device info ml/cnxk: add support for configure and close ml/cnxk: parse ML firmware path from device args ml/cnxk: enable firmware load and device reset ml/cnxk: enable support for simulator environment ml/cnxk: enable support for device start and stop ml/cnxk: add support to create device queue-pairs ml/cnxk: add functions to load and unload models ml/cnxk: enable validity checks for model metadata ml/cnxk: add internal structures for derived info ml/cnxk: add internal structures for tiles and OCM ml/cnxk: add structures for slow and fast path JDs ml/cnxk: find OCM mask and page slots for a model ml/cnxk: add support to reserve and free OCM pages ml/cnxk: enable support to start an ML model ml/cnxk: enable support to stop an ML models ml/cnxk: enable support to get model information ml/cnxk: enable support to update model params ml/cnxk: add support to get IO buffer sizes ml/cnxk: enable quantization and dequantization ml/cnxk: enable support to dump device debug info ml/cnxk: add driver support for device selftest ml/cnxk: enqueue a burst of inference requests ml/cnxk: dequeue a burst of inference requests ml/cnxk: add internal function for sync mode run ml/cnxk: enable support for firmware error codes ml/cnxk: add support to get and reset device stats ml/cnxk: add support to handle extended dev stats ml/cnxk: enable support to get xstats in cycles ml/cnxk: add support to report DPE FW warnings ml/cnxk: add support to enable model data caching ml/cnxk: add support to select OCM allocation mode ml/cnxk: add support to use lock during jcmd enq ml/cnxk: add support to select poll memory region ml/cnxk: add user guide for marvell cnxk ml driver ml/cnxk: enable support for configurable ocm page MAINTAINERS | 11 + doc/guides/index.rst | 1 + doc/guides/mldevs/cnxk.rst | 254 +++ doc/guides/mldevs/index.rst | 14 + doc/guides/rel_notes/release_23_03.rst | 7 + drivers/common/cnxk/hw/ml.h | 170 ++ drivers/common/cnxk/meson.build | 1 + drivers/common/cnxk/roc_api.h | 4 + drivers/common/cnxk/roc_constants.h | 2 + drivers/common/cnxk/roc_dev_priv.h | 1 + drivers/common/cnxk/roc_ml.c | 626 +++++++ drivers/common/cnxk/roc_ml.h | 152 ++ drivers/common/cnxk/roc_ml_priv.h | 24 + drivers/common/cnxk/roc_platform.c | 1 + drivers/common/cnxk/roc_platform.h | 2 + drivers/common/cnxk/roc_priv.h | 3 + drivers/common/cnxk/version.map | 29 + drivers/meson.build | 1 + drivers/ml/cnxk/cn10k_ml_dev.c | 870 +++++++++ drivers/ml/cnxk/cn10k_ml_dev.h | 429 +++++ drivers/ml/cnxk/cn10k_ml_model.c | 413 +++++ drivers/ml/cnxk/cn10k_ml_model.h | 508 ++++++ drivers/ml/cnxk/cn10k_ml_ocm.c | 519 ++++++ drivers/ml/cnxk/cn10k_ml_ocm.h | 85 + drivers/ml/cnxk/cn10k_ml_ops.c | 2316 ++++++++++++++++++++++++ drivers/ml/cnxk/cn10k_ml_ops.h | 94 + drivers/ml/cnxk/meson.build | 32 + drivers/ml/meson.build | 8 + 28 files changed, 6577 insertions(+) create mode 100644 doc/guides/mldevs/cnxk.rst create mode 100644 doc/guides/mldevs/index.rst create mode 100644 drivers/common/cnxk/hw/ml.h create mode 100644 drivers/common/cnxk/roc_ml.c create mode 100644 drivers/common/cnxk/roc_ml.h create mode 100644 drivers/common/cnxk/roc_ml_priv.h create mode 100644 drivers/ml/cnxk/cn10k_ml_dev.c create mode 100644 drivers/ml/cnxk/cn10k_ml_dev.h create mode 100644 drivers/ml/cnxk/cn10k_ml_model.c create mode 100644 drivers/ml/cnxk/cn10k_ml_model.h create mode 100644 drivers/ml/cnxk/cn10k_ml_ocm.c create mode 100644 drivers/ml/cnxk/cn10k_ml_ocm.h create mode 100644 drivers/ml/cnxk/cn10k_ml_ops.c create mode 100644 drivers/ml/cnxk/cn10k_ml_ops.h create mode 100644 drivers/ml/cnxk/meson.build create mode 100644 drivers/ml/meson.build Acked-by: Prince Takkar --- 2.17.1