get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 101992,
    "url": "http://patches.dpdk.org/api/patches/101992/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20211018122818.1579942-5-kevin.laatz@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.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": "<20211018122818.1579942-5-kevin.laatz@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211018122818.1579942-5-kevin.laatz@intel.com",
    "date": "2021-10-18T12:28:06",
    "name": "[v8,04/16] dma/idxd: create dmadev instances on bus probe",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d589b39193321929a1214c807e0c4b201c27d495",
    "submitter": {
        "id": 921,
        "url": "http://patches.dpdk.org/api/people/921/?format=api",
        "name": "Kevin Laatz",
        "email": "kevin.laatz@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20211018122818.1579942-5-kevin.laatz@intel.com/mbox/",
    "series": [
        {
            "id": 19737,
            "url": "http://patches.dpdk.org/api/series/19737/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=19737",
            "date": "2021-10-18T12:28:02",
            "name": "add dmadev driver for idxd devices",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/19737/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/101992/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/101992/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 6B6D1A0C43;\n\tMon, 18 Oct 2021 14:28:57 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 463324111D;\n\tMon, 18 Oct 2021 14:28:34 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n by mails.dpdk.org (Postfix) with ESMTP id 863A2410FA\n for <dev@dpdk.org>; Mon, 18 Oct 2021 14:28:31 +0200 (CEST)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 18 Oct 2021 05:28:31 -0700",
            "from silpixa00401122.ir.intel.com ([10.55.128.10])\n by orsmga008.jf.intel.com with ESMTP; 18 Oct 2021 05:28:29 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10140\"; a=\"215401538\"",
            "E=Sophos;i=\"5.85,382,1624345200\"; d=\"scan'208\";a=\"215401538\"",
            "E=Sophos;i=\"5.85,382,1624345200\"; d=\"scan'208\";a=\"493562444\""
        ],
        "X-ExtLoop1": "1",
        "From": "Kevin Laatz <kevin.laatz@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net, bruce.richardson@intel.com, fengchengwen@huawei.com,\n jerinj@marvell.com, conor.walsh@intel.com,\n Kevin Laatz <kevin.laatz@intel.com>",
        "Date": "Mon, 18 Oct 2021 12:28:06 +0000",
        "Message-Id": "<20211018122818.1579942-5-kevin.laatz@intel.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20211018122818.1579942-1-kevin.laatz@intel.com>",
        "References": "<20210827172048.558704-1-kevin.laatz@intel.com>\n <20211018122818.1579942-1-kevin.laatz@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v8 04/16] dma/idxd: create dmadev instances on\n bus probe",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "When a suitable device is found during the bus scan/probe, create a dmadev\ninstance for each HW queue. Internal structures required for device\ncreation are also added.\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\nSigned-off-by: Kevin Laatz <kevin.laatz@intel.com>\nReviewed-by: Conor Walsh <conor.walsh@intel.com>\n---\n drivers/dma/idxd/idxd_bus.c      | 19 ++++++++++\n drivers/dma/idxd/idxd_common.c   | 61 ++++++++++++++++++++++++++++++++\n drivers/dma/idxd/idxd_hw_defs.h  | 27 ++++++++++++++\n drivers/dma/idxd/idxd_internal.h |  7 ++++\n 4 files changed, 114 insertions(+)\n create mode 100644 drivers/dma/idxd/idxd_hw_defs.h",
    "diff": "diff --git a/drivers/dma/idxd/idxd_bus.c b/drivers/dma/idxd/idxd_bus.c\nindex ef589af30e..b48fa954ed 100644\n--- a/drivers/dma/idxd/idxd_bus.c\n+++ b/drivers/dma/idxd/idxd_bus.c\n@@ -85,6 +85,18 @@ dsa_get_sysfs_path(void)\n \treturn path ? path : DSA_SYSFS_PATH;\n }\n \n+static int\n+idxd_dev_close(struct rte_dma_dev *dev)\n+{\n+\tstruct idxd_dmadev *idxd = dev->data->dev_private;\n+\tmunmap(idxd->portal, 0x1000);\n+\treturn 0;\n+}\n+\n+static const struct rte_dma_dev_ops idxd_bus_ops = {\n+\t\t.dev_close = idxd_dev_close,\n+};\n+\n static void *\n idxd_bus_mmap_wq(struct rte_dsa_device *dev)\n {\n@@ -206,6 +218,7 @@ idxd_probe_dsa(struct rte_dsa_device *dev)\n \t\treturn -1;\n \tidxd.max_batch_size = ret;\n \tidxd.qid = dev->addr.wq_id;\n+\tidxd.u.bus.dsa_id = dev->addr.device_id;\n \tidxd.sva_support = 1;\n \n \tidxd.portal = idxd_bus_mmap_wq(dev);\n@@ -214,6 +227,12 @@ idxd_probe_dsa(struct rte_dsa_device *dev)\n \t\treturn -ENOENT;\n \t}\n \n+\tret = idxd_dmadev_create(dev->wq_name, &dev->device, &idxd, &idxd_bus_ops);\n+\tif (ret) {\n+\t\tIDXD_PMD_ERR(\"Failed to create rawdev %s\", dev->wq_name);\n+\t\treturn ret;\n+\t}\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/dma/idxd/idxd_common.c b/drivers/dma/idxd/idxd_common.c\nindex e00ddbe5ef..5abff34292 100644\n--- a/drivers/dma/idxd/idxd_common.c\n+++ b/drivers/dma/idxd/idxd_common.c\n@@ -2,10 +2,71 @@\n  * Copyright 2021 Intel Corporation\n  */\n \n+#include <rte_malloc.h>\n+#include <rte_common.h>\n #include <rte_log.h>\n \n #include \"idxd_internal.h\"\n \n+#define IDXD_PMD_NAME_STR \"dmadev_idxd\"\n+\n+int\n+idxd_dmadev_create(const char *name, struct rte_device *dev,\n+\t\t   const struct idxd_dmadev *base_idxd,\n+\t\t   const struct rte_dma_dev_ops *ops)\n+{\n+\tstruct idxd_dmadev *idxd = NULL;\n+\tstruct rte_dma_dev *dmadev = NULL;\n+\tint ret = 0;\n+\n+\tif (!name) {\n+\t\tIDXD_PMD_ERR(\"Invalid name of the device!\");\n+\t\tret = -EINVAL;\n+\t\tgoto cleanup;\n+\t}\n+\n+\t/* Allocate device structure */\n+\tdmadev = rte_dma_pmd_allocate(name, dev->numa_node, sizeof(struct idxd_dmadev));\n+\tif (dmadev == NULL) {\n+\t\tIDXD_PMD_ERR(\"Unable to allocate raw device\");\n+\t\tret = -ENOMEM;\n+\t\tgoto cleanup;\n+\t}\n+\tdmadev->dev_ops = ops;\n+\tdmadev->device = dev;\n+\n+\tidxd = dmadev->data->dev_private;\n+\t*idxd = *base_idxd; /* copy over the main fields already passed in */\n+\tidxd->dmadev = dmadev;\n+\n+\t/* allocate batch index ring and completion ring.\n+\t * The +1 is because we can never fully use\n+\t * the ring, otherwise read == write means both full and empty.\n+\t */\n+\tidxd->batch_comp_ring = rte_zmalloc(NULL, (sizeof(idxd->batch_idx_ring[0]) +\n+\t\t\tsizeof(idxd->batch_comp_ring[0]))\t* (idxd->max_batches + 1),\n+\t\t\tsizeof(idxd->batch_comp_ring[0]));\n+\tif (idxd->batch_comp_ring == NULL) {\n+\t\tIDXD_PMD_ERR(\"Unable to reserve memory for batch data\\n\");\n+\t\tret = -ENOMEM;\n+\t\tgoto cleanup;\n+\t}\n+\tidxd->batch_idx_ring = (void *)&idxd->batch_comp_ring[idxd->max_batches+1];\n+\tidxd->batch_iova = rte_mem_virt2iova(idxd->batch_comp_ring);\n+\n+\tdmadev->fp_obj->dev_private = idxd;\n+\n+\tidxd->dmadev->state = RTE_DMA_DEV_READY;\n+\n+\treturn 0;\n+\n+cleanup:\n+\tif (dmadev)\n+\t\trte_dma_pmd_release(name);\n+\n+\treturn ret;\n+}\n+\n int idxd_pmd_logtype;\n \n RTE_LOG_REGISTER_DEFAULT(idxd_pmd_logtype, WARNING);\ndiff --git a/drivers/dma/idxd/idxd_hw_defs.h b/drivers/dma/idxd/idxd_hw_defs.h\nnew file mode 100644\nindex 0000000000..a92d462d01\n--- /dev/null\n+++ b/drivers/dma/idxd/idxd_hw_defs.h\n@@ -0,0 +1,27 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2021 Intel Corporation\n+ */\n+\n+#ifndef _IDXD_HW_DEFS_H_\n+#define _IDXD_HW_DEFS_H_\n+\n+#define IDXD_COMP_STATUS_INCOMPLETE        0\n+#define IDXD_COMP_STATUS_SUCCESS           1\n+#define IDXD_COMP_STATUS_INVALID_OPCODE 0x10\n+#define IDXD_COMP_STATUS_INVALID_SIZE   0x13\n+#define IDXD_COMP_STATUS_SKIPPED        0xFF /* not official IDXD error, needed as placeholder */\n+\n+/**\n+ * Completion record structure written back by DSA\n+ */\n+struct idxd_completion {\n+\tuint8_t status;\n+\tuint8_t result;\n+\t/* 16-bits pad here */\n+\tuint32_t completed_size; /* data length, or descriptors for batch */\n+\n+\trte_iova_t fault_address;\n+\tuint32_t invalid_flags;\n+} __rte_aligned(32);\n+\n+#endif\ndiff --git a/drivers/dma/idxd/idxd_internal.h b/drivers/dma/idxd/idxd_internal.h\nindex b8a7d7dab6..8f1cdf6102 100644\n--- a/drivers/dma/idxd/idxd_internal.h\n+++ b/drivers/dma/idxd/idxd_internal.h\n@@ -5,6 +5,10 @@\n #ifndef _IDXD_INTERNAL_H_\n #define _IDXD_INTERNAL_H_\n \n+#include <rte_dmadev_pmd.h>\n+\n+#include \"idxd_hw_defs.h\"\n+\n /**\n  * @file idxd_internal.h\n  *\n@@ -58,4 +62,7 @@ struct idxd_dmadev {\n \t} u;\n };\n \n+int idxd_dmadev_create(const char *name, struct rte_device *dev,\n+\t\tconst struct idxd_dmadev *base_idxd, const struct rte_dma_dev_ops *ops);\n+\n #endif /* _IDXD_INTERNAL_H_ */\n",
    "prefixes": [
        "v8",
        "04/16"
    ]
}