get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/131699/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 131699,
    "url": "http://patchwork.dpdk.org/api/patches/131699/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230920072528.14185-27-syalavarthi@marvell.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230920072528.14185-27-syalavarthi@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230920072528.14185-27-syalavarthi@marvell.com",
    "date": "2023-09-20T07:25:17",
    "name": "[v2,26/34] ml/cnxk: support start and stop for TVM models",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "a44e24cf97bc0e2e0554242b99c02c225c074dba",
    "submitter": {
        "id": 2480,
        "url": "http://patchwork.dpdk.org/api/people/2480/?format=api",
        "name": "Srikanth Yalavarthi",
        "email": "syalavarthi@marvell.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patchwork.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230920072528.14185-27-syalavarthi@marvell.com/mbox/",
    "series": [
        {
            "id": 29567,
            "url": "http://patchwork.dpdk.org/api/series/29567/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=29567",
            "date": "2023-09-20T07:24:51",
            "name": "Implemenation of revised ml/cnxk driver",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/29567/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/131699/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/131699/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 3FE1C425E4;\n\tWed, 20 Sep 2023 09:28:24 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7B10542D9D;\n\tWed, 20 Sep 2023 09:26:06 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id E96B3410D5\n for <dev@dpdk.org>; Wed, 20 Sep 2023 09:25:42 +0200 (CEST)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 38K7JW13008355 for <dev@dpdk.org>; Wed, 20 Sep 2023 00:25:42 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3t7htasykw-11\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT)\n for <dev@dpdk.org>; Wed, 20 Sep 2023 00:25:42 -0700",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.48;\n Wed, 20 Sep 2023 00:25:40 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.48 via Frontend\n Transport; Wed, 20 Sep 2023 00:25:40 -0700",
            "from ml-host-33.caveonetworks.com (unknown [10.110.143.233])\n by maili.marvell.com (Postfix) with ESMTP id 8DF145B6922;\n Wed, 20 Sep 2023 00:25:40 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0220;\n bh=86KO794XrPVN79TW0jtn02afmbErQPuu2MXQxhWbVrQ=;\n b=b/EPUOcaLr0Kw3Y0ESbiB7AGwirz4lq5/SPVaLuYsKAt4ZS14bFtvutiai/bjgjKDgHq\n hqW3AydLMLvf0dGmMhUavgokkbnJRR8coUl1vcH91pNfGUG/C7czsz9ONB+juR1KbFNZ\n UUQSwMlUNxx83zp/D9D+dswnVj4yVb7C/zXqabV0jxuld5n6mIWJHeZBISKHCpi5upxV\n Hq06Uv37HBEiXFx/E5VCc5qabbe5sB5u9/J0sUzziGtZaHIXOQhqiOaa8ErFmZZSU8RZ\n ESavskEKHVmI4Q/X/zOt+LXK0YB01kBsUgjlAElUqN90Wy/FQ0DPDTE2h8hkK14VKkSk 1w==",
        "From": "Srikanth Yalavarthi <syalavarthi@marvell.com>",
        "To": "Srikanth Yalavarthi <syalavarthi@marvell.com>",
        "CC": "<dev@dpdk.org>, <sshankarnara@marvell.com>, <aprabhu@marvell.com>,\n <ptakkar@marvell.com>",
        "Subject": "[PATCH v2 26/34] ml/cnxk: support start and stop for TVM models",
        "Date": "Wed, 20 Sep 2023 00:25:17 -0700",
        "Message-ID": "<20230920072528.14185-27-syalavarthi@marvell.com>",
        "X-Mailer": "git-send-email 2.41.0",
        "In-Reply-To": "<20230920072528.14185-1-syalavarthi@marvell.com>",
        "References": "<20230830155927.3566-1-syalavarthi@marvell.com>\n <20230920072528.14185-1-syalavarthi@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "jfMmN0Nu3NvAhqrj719IbiOCkHaaq205",
        "X-Proofpoint-GUID": "jfMmN0Nu3NvAhqrj719IbiOCkHaaq205",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26\n definitions=2023-09-20_02,2023-09-19_01,2023-05-22_02",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Added support to start and stop TVM models. TVM model\nstart would invoke layer start for all Glow layers part\nof the model. TVM model stop would invoke layer stop\nfor all Glow layers part of the model.\n\nSigned-off-by: Srikanth Yalavarthi <syalavarthi@marvell.com>\nSigned-off-by: Anup Prabhu <aprabhu@marvell.com>\n---\n drivers/ml/cnxk/cn10k_ml_ops.c | 42 +++++++++++++++++++++++++++\n drivers/ml/cnxk/cnxk_ml_ops.c  | 18 ++++++++++--\n drivers/ml/cnxk/mvtvm_ml_ops.c | 52 ++++++++++++++++++++++++++++++++++\n drivers/ml/cnxk/mvtvm_ml_ops.h |  2 ++\n 4 files changed, 112 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/ml/cnxk/cn10k_ml_ops.c b/drivers/ml/cnxk/cn10k_ml_ops.c\nindex 85d0a9e18b..f70383b128 100644\n--- a/drivers/ml/cnxk/cn10k_ml_ops.c\n+++ b/drivers/ml/cnxk/cn10k_ml_ops.c\n@@ -798,7 +798,9 @@ cn10k_ml_layer_start(void *device, uint16_t model_id, const char *layer_name)\n \tbool locked;\n \tint ret = 0;\n \n+#ifndef RTE_MLDEV_CNXK_ENABLE_MVTVM\n \tPLT_SET_USED(layer_name);\n+#endif\n \n \tcnxk_mldev = (struct cnxk_ml_dev *)device;\n \tif (cnxk_mldev == NULL) {\n@@ -812,6 +814,25 @@ cn10k_ml_layer_start(void *device, uint16_t model_id, const char *layer_name)\n \t\treturn -EINVAL;\n \t}\n \n+#ifdef RTE_MLDEV_CNXK_ENABLE_MVTVM\n+\tif (model->type == ML_CNXK_MODEL_TYPE_TVM) {\n+\t\tfor (layer_id = 0; layer_id < model->mvtvm.metadata.model.nb_layers; layer_id++) {\n+\t\t\tif (strcmp(model->layer[layer_id].name, layer_name) == 0)\n+\t\t\t\tbreak;\n+\t\t}\n+\n+\t\tif (layer_id == model->mvtvm.metadata.model.nb_layers) {\n+\t\t\tplt_err(\"Invalid layer name: %s\", layer_name);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\n+\t\tif (model->layer[layer_id].type != ML_CNXK_LAYER_TYPE_MRVL) {\n+\t\t\tplt_err(\"Invalid layer name / type: %s\", layer_name);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t}\n+#endif\n+\n \tlayer = &model->layer[layer_id];\n \tcn10k_mldev = &cnxk_mldev->cn10k_mldev;\n \tocm = &cn10k_mldev->ocm;\n@@ -981,7 +1002,9 @@ cn10k_ml_layer_stop(void *device, uint16_t model_id, const char *layer_name)\n \tbool locked;\n \tint ret = 0;\n \n+#ifndef RTE_MLDEV_CNXK_ENABLE_MVTVM\n \tPLT_SET_USED(layer_name);\n+#endif\n \n \tcnxk_mldev = (struct cnxk_ml_dev *)device;\n \tif (cnxk_mldev == NULL) {\n@@ -995,6 +1018,25 @@ cn10k_ml_layer_stop(void *device, uint16_t model_id, const char *layer_name)\n \t\treturn -EINVAL;\n \t}\n \n+#ifdef RTE_MLDEV_CNXK_ENABLE_MVTVM\n+\tif (model->type == ML_CNXK_MODEL_TYPE_TVM) {\n+\t\tfor (layer_id = 0; layer_id < model->mvtvm.metadata.model.nb_layers; layer_id++) {\n+\t\t\tif (strcmp(model->layer[layer_id].name, layer_name) == 0)\n+\t\t\t\tbreak;\n+\t\t}\n+\n+\t\tif (layer_id == model->mvtvm.metadata.model.nb_layers) {\n+\t\t\tplt_err(\"Invalid layer name: %s\", layer_name);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\n+\t\tif (model->layer[layer_id].type != ML_CNXK_LAYER_TYPE_MRVL) {\n+\t\t\tplt_err(\"Invalid layer name / type: %s\", layer_name);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t}\n+#endif\n+\n \tlayer = &model->layer[layer_id];\n \tcn10k_mldev = &cnxk_mldev->cn10k_mldev;\n \tocm = &cn10k_mldev->ocm;\ndiff --git a/drivers/ml/cnxk/cnxk_ml_ops.c b/drivers/ml/cnxk/cnxk_ml_ops.c\nindex 512bac641e..1e567ad45c 100644\n--- a/drivers/ml/cnxk/cnxk_ml_ops.c\n+++ b/drivers/ml/cnxk/cnxk_ml_ops.c\n@@ -1233,7 +1233,14 @@ cnxk_ml_model_start(struct rte_ml_dev *dev, uint16_t model_id)\n \t\treturn -EINVAL;\n \t}\n \n-\treturn cn10k_ml_model_start(cnxk_mldev, model);\n+\tif (model->type == ML_CNXK_MODEL_TYPE_GLOW)\n+\t\treturn cn10k_ml_model_start(cnxk_mldev, model);\n+#ifdef RTE_MLDEV_CNXK_ENABLE_MVTVM\n+\telse\n+\t\treturn mvtvm_ml_model_start(cnxk_mldev, model);\n+#endif\n+\n+\treturn 0;\n }\n \n int\n@@ -1253,7 +1260,14 @@ cnxk_ml_model_stop(struct rte_ml_dev *dev, uint16_t model_id)\n \t\treturn -EINVAL;\n \t}\n \n-\treturn cn10k_ml_model_stop(cnxk_mldev, model);\n+\tif (model->type == ML_CNXK_MODEL_TYPE_GLOW)\n+\t\treturn cn10k_ml_model_stop(cnxk_mldev, model);\n+#ifdef RTE_MLDEV_CNXK_ENABLE_MVTVM\n+\telse\n+\t\treturn mvtvm_ml_model_stop(cnxk_mldev, model);\n+#endif\n+\n+\treturn 0;\n }\n \n static int\ndiff --git a/drivers/ml/cnxk/mvtvm_ml_ops.c b/drivers/ml/cnxk/mvtvm_ml_ops.c\nindex 073773e409..4015374b0d 100644\n--- a/drivers/ml/cnxk/mvtvm_ml_ops.c\n+++ b/drivers/ml/cnxk/mvtvm_ml_ops.c\n@@ -217,3 +217,55 @@ mvtvm_ml_model_unload(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mode\n \n \treturn plt_memzone_free(mz);\n }\n+\n+int\n+mvtvm_ml_model_start(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *model)\n+{\n+\tstruct cnxk_ml_layer *layer;\n+\n+\tuint16_t layer_id = 0;\n+\tint ret = 0;\n+\n+next_layer:\n+\tlayer = &model->layer[layer_id];\n+\tif (layer->type == ML_CNXK_LAYER_TYPE_MRVL) {\n+\t\tret = cn10k_ml_layer_start(cnxk_mldev, model->model_id, layer->name);\n+\t\tif (ret != 0) {\n+\t\t\tplt_err(\"Layer start failed, model_id = %u, layer_name = %s, error = %d\",\n+\t\t\t\tmodel->model_id, layer->name, ret);\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\tlayer_id++;\n+\n+\tif (layer_id < model->nb_layers)\n+\t\tgoto next_layer;\n+\n+\treturn 0;\n+}\n+\n+int\n+mvtvm_ml_model_stop(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *model)\n+{\n+\tstruct cnxk_ml_layer *layer;\n+\n+\tuint16_t layer_id = 0;\n+\tint ret = 0;\n+\n+next_layer:\n+\tlayer = &model->layer[layer_id];\n+\tif (layer->type == ML_CNXK_LAYER_TYPE_MRVL) {\n+\t\tret = cn10k_ml_layer_stop(cnxk_mldev, model->model_id, layer->name);\n+\t\tif (ret != 0) {\n+\t\t\tplt_err(\"Layer stop failed, model_id = %u, layer_name = %s, error = %d\",\n+\t\t\t\tmodel->model_id, layer->name, ret);\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\tlayer_id++;\n+\n+\tif (layer_id < model->nb_layers)\n+\t\tgoto next_layer;\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/ml/cnxk/mvtvm_ml_ops.h b/drivers/ml/cnxk/mvtvm_ml_ops.h\nindex 770794fe7d..55459f9f7f 100644\n--- a/drivers/ml/cnxk/mvtvm_ml_ops.h\n+++ b/drivers/ml/cnxk/mvtvm_ml_ops.h\n@@ -19,5 +19,7 @@ int mvtvm_ml_dev_close(struct cnxk_ml_dev *cnxk_mldev);\n int mvtvm_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *params,\n \t\t\tstruct cnxk_ml_model *model);\n int mvtvm_ml_model_unload(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *model);\n+int mvtvm_ml_model_start(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *model);\n+int mvtvm_ml_model_stop(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *model);\n \n #endif /* _MVTVM_ML_OPS_H_ */\n",
    "prefixes": [
        "v2",
        "26/34"
    ]
}