get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 132895,
    "url": "http://patches.dpdk.org/api/patches/132895/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231018133932.150177-1-bruce.richardson@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": "<20231018133932.150177-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231018133932.150177-1-bruce.richardson@intel.com",
    "date": "2023-10-18T13:39:31",
    "name": "[v5,1/2] eventdev: fix device pointer for vdev-based eventdevs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "7e2639427afbc328e365b33c541e688d9cb04f8a",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231018133932.150177-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 29908,
            "url": "http://patches.dpdk.org/api/series/29908/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29908",
            "date": "2023-10-18T13:39:31",
            "name": "[v5,1/2] eventdev: fix device pointer for vdev-based eventdevs",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/29908/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/132895/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/132895/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 7E6C44319A;\n\tWed, 18 Oct 2023 15:39:57 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 51549402CD;\n\tWed, 18 Oct 2023 15:39:57 +0200 (CEST)",
            "from mgamail.intel.com (mgamail.intel.com [134.134.136.100])\n by mails.dpdk.org (Postfix) with ESMTP id 61EEE40261;\n Wed, 18 Oct 2023 15:39:54 +0200 (CEST)",
            "from orsmga006.jf.intel.com ([10.7.209.51])\n by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 18 Oct 2023 06:39:53 -0700",
            "from unknown (HELO silpixa00401385.ir.intel.com) ([10.237.214.41])\n by orsmga006.jf.intel.com with ESMTP; 18 Oct 2023 06:39:51 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1697636394; x=1729172394;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=zkoZVqerAqdeZEBBW5PzGxgEgcWX9ARKbGSy6vDz2lg=;\n b=B9sJdxjQV/ejCybfTvKzeVYF0VFPwd7LtQKBlwBD4eVlYUtvaBEfHr1S\n S0fgvTkRgk+IdNEUpSD5sBBF0s9034Spmj0Tvwr5UyM3tBlfg4TH3TjMi\n R/Fyr458DX5+rzaLWlp5O94SjV8hsf8RHrvrY6uJfXxs+7hkR5W0Z7+2f\n pKIFNhRzvLOBNxHyObqlcOMIAxkobf5a1apmEHIoZ4Ysrla77iP/ZH8mZ\n asMzjOzLesMxsIz2bLrKnU7kluR4lSwdp5nyT+GAH3fMznut5s9JNcZPD\n I7Hf44Z7MwGjmPcH8UjiguTZlrgMj4DUNz+jGmBBJuJwjxRVT/9XiwG7r Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10867\"; a=\"452482808\"",
            "E=Sophos;i=\"6.03,235,1694761200\"; d=\"scan'208\";a=\"452482808\"",
            "E=McAfee;i=\"6600,9927,10867\"; a=\"733172999\"",
            "E=Sophos;i=\"6.03,235,1694761200\"; d=\"scan'208\";a=\"733172999\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Jerin Jacob <jerinj@marvell.com>,\n David Marchand <david.marchand@redhat.com>,\n Bruce Richardson <bruce.richardson@intel.com>, stable@dpdk.org",
        "Subject": "[PATCH v5 1/2] eventdev: fix device pointer for vdev-based eventdevs",
        "Date": "Wed, 18 Oct 2023 14:39:31 +0100",
        "Message-Id": "<20231018133932.150177-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "In-Reply-To": "<20231016151713.711965-1-bruce.richardson@intel.com>",
        "References": "<20231016151713.711965-1-bruce.richardson@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "The eventdevs based on vdevs, rather than on e.g. HW PCI devices, were,\nas a rule, not setting the \".dev\" pointer in the eventdev structure.\nThis caused issues as a NULL pointer was returned in calls to info_get,\ntriggering crashes if the pointer is passed unchecked to e.g.\nrte_dev_name() to print out the name of an event device.\n\nMost effective, and future-proofed fix, is to not rely on the eventdev\ndrivers to set the pointer themselves, but to change the vdev init\nfunction to take the vdev struct as parameter, and set the \"dev\" pointer\ncentrally on init. This allows us to fix all drivers in one go, enforced\nby compiler error if the parameter is missing.\n\nFixes: aaa4a221da26 (\"event/sw: add new software-only eventdev driver\")\nFixes: 46a186b1f0c5 (\"event/dsw: add device registration and build system\")\nFixes: bbbb929da5e6 (\"event/skeleton: add skeleton eventdev driver\")\nFixes: 3c7f3dcfb099 (\"event/opdl: add PMD main body and helper function\")\nFixes: 9caac5dd1e7f (\"event/dpaa: introduce PMD\")\nFixes: 8a5d7a8ec74b (\"event/dpaa2: initialize device\")\nFixes: 34498de6000f (\"event/octeontx: add octeontx eventdev driver\")\nCc: stable@dpdk.org\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\nAcked-by: David Marchand <david.marchand@redhat.com>\n---\n drivers/event/dpaa/dpaa_eventdev.c         | 6 +++---\n drivers/event/dpaa2/dpaa2_eventdev.c       | 6 +++---\n drivers/event/dsw/dsw_evdev.c              | 2 +-\n drivers/event/octeontx/ssovf_evdev.c       | 2 +-\n drivers/event/opdl/opdl_evdev.c            | 2 +-\n drivers/event/skeleton/skeleton_eventdev.c | 6 +++---\n drivers/event/sw/sw_evdev.c                | 2 +-\n lib/eventdev/eventdev_pmd_vdev.h           | 3 ++-\n 8 files changed, 15 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c\nindex f615da3813..46a9b88c73 100644\n--- a/drivers/event/dpaa/dpaa_eventdev.c\n+++ b/drivers/event/dpaa/dpaa_eventdev.c\n@@ -994,14 +994,14 @@ dpaa_event_check_flags(const char *params)\n }\n \n static int\n-dpaa_event_dev_create(const char *name, const char *params)\n+dpaa_event_dev_create(const char *name, const char *params, struct rte_vdev_device *vdev)\n {\n \tstruct rte_eventdev *eventdev;\n \tstruct dpaa_eventdev *priv;\n \n \teventdev = rte_event_pmd_vdev_init(name,\n \t\t\t\t\t   sizeof(struct dpaa_eventdev),\n-\t\t\t\t\t   rte_socket_id());\n+\t\t\t\t\t   rte_socket_id(), vdev);\n \tif (eventdev == NULL) {\n \t\tDPAA_EVENTDEV_ERR(\"Failed to create eventdev vdev %s\", name);\n \t\tgoto fail;\n@@ -1051,7 +1051,7 @@ dpaa_event_dev_probe(struct rte_vdev_device *vdev)\n \n \tparams = rte_vdev_device_args(vdev);\n \n-\treturn dpaa_event_dev_create(name, params);\n+\treturn dpaa_event_dev_create(name, params, vdev);\n }\n \n static int\ndiff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c\nindex ffc5550f85..dd4e64395f 100644\n--- a/drivers/event/dpaa2/dpaa2_eventdev.c\n+++ b/drivers/event/dpaa2/dpaa2_eventdev.c\n@@ -1086,7 +1086,7 @@ dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev,\n }\n \n static int\n-dpaa2_eventdev_create(const char *name)\n+dpaa2_eventdev_create(const char *name, struct rte_vdev_device *vdev)\n {\n \tstruct rte_eventdev *eventdev;\n \tstruct dpaa2_eventdev *priv;\n@@ -1096,7 +1096,7 @@ dpaa2_eventdev_create(const char *name)\n \n \teventdev = rte_event_pmd_vdev_init(name,\n \t\t\t\t\t   sizeof(struct dpaa2_eventdev),\n-\t\t\t\t\t   rte_socket_id());\n+\t\t\t\t\t   rte_socket_id(), vdev);\n \tif (eventdev == NULL) {\n \t\tDPAA2_EVENTDEV_ERR(\"Failed to create Event device %s\", name);\n \t\tgoto fail;\n@@ -1190,7 +1190,7 @@ dpaa2_eventdev_probe(struct rte_vdev_device *vdev)\n \n \tname = rte_vdev_device_name(vdev);\n \tDPAA2_EVENTDEV_INFO(\"Initializing %s\", name);\n-\treturn dpaa2_eventdev_create(name);\n+\treturn dpaa2_eventdev_create(name, vdev);\n }\n \n static int\ndiff --git a/drivers/event/dsw/dsw_evdev.c b/drivers/event/dsw/dsw_evdev.c\nindex 785c12f61f..1209e73a9d 100644\n--- a/drivers/event/dsw/dsw_evdev.c\n+++ b/drivers/event/dsw/dsw_evdev.c\n@@ -435,7 +435,7 @@ dsw_probe(struct rte_vdev_device *vdev)\n \tname = rte_vdev_device_name(vdev);\n \n \tdev = rte_event_pmd_vdev_init(name, sizeof(struct dsw_evdev),\n-\t\t\t\t      rte_socket_id());\n+\t\t\t\t      rte_socket_id(), vdev);\n \tif (dev == NULL)\n \t\treturn -EFAULT;\n \ndiff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c\nindex 0eb9358981..a16f24e088 100644\n--- a/drivers/event/octeontx/ssovf_evdev.c\n+++ b/drivers/event/octeontx/ssovf_evdev.c\n@@ -880,7 +880,7 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev)\n \t}\n \n \teventdev = rte_event_pmd_vdev_init(name, sizeof(struct ssovf_evdev),\n-\t\t\t\trte_socket_id());\n+\t\t\t\trte_socket_id(), vdev);\n \tif (eventdev == NULL) {\n \t\tssovf_log_err(\"Failed to create eventdev vdev %s\", name);\n \t\treturn -ENOMEM;\ndiff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c\nindex dd25749654..0cccaf7e97 100644\n--- a/drivers/event/opdl/opdl_evdev.c\n+++ b/drivers/event/opdl/opdl_evdev.c\n@@ -697,7 +697,7 @@ opdl_probe(struct rte_vdev_device *vdev)\n \t\t}\n \t}\n \tdev = rte_event_pmd_vdev_init(name,\n-\t\t\tsizeof(struct opdl_evdev), socket_id);\n+\t\t\tsizeof(struct opdl_evdev), socket_id, vdev);\n \n \tif (dev == NULL) {\n \t\tPMD_DRV_LOG(ERR, \"eventdev vdev init() failed\");\ndiff --git a/drivers/event/skeleton/skeleton_eventdev.c b/drivers/event/skeleton/skeleton_eventdev.c\nindex dc9b131641..7db1efaf14 100644\n--- a/drivers/event/skeleton/skeleton_eventdev.c\n+++ b/drivers/event/skeleton/skeleton_eventdev.c\n@@ -428,12 +428,12 @@ RTE_PMD_REGISTER_PCI_TABLE(event_skeleton_pci, pci_id_skeleton_map);\n /* VDEV based event device */\n \n static int\n-skeleton_eventdev_create(const char *name, int socket_id)\n+skeleton_eventdev_create(const char *name, int socket_id, struct rte_vdev_device *vdev)\n {\n \tstruct rte_eventdev *eventdev;\n \n \teventdev = rte_event_pmd_vdev_init(name,\n-\t\t\tsizeof(struct skeleton_eventdev), socket_id);\n+\t\t\tsizeof(struct skeleton_eventdev), socket_id, vdev);\n \tif (eventdev == NULL) {\n \t\tPMD_DRV_ERR(\"Failed to create eventdev vdev %s\", name);\n \t\tgoto fail;\n@@ -459,7 +459,7 @@ skeleton_eventdev_probe(struct rte_vdev_device *vdev)\n \tname = rte_vdev_device_name(vdev);\n \tRTE_LOG(INFO, PMD, \"Initializing %s on NUMA node %d\\n\", name,\n \t\t\trte_socket_id());\n-\treturn skeleton_eventdev_create(name, rte_socket_id());\n+\treturn skeleton_eventdev_create(name, rte_socket_id(), vdev);\n }\n \n static int\ndiff --git a/drivers/event/sw/sw_evdev.c b/drivers/event/sw/sw_evdev.c\nindex 6d1816b76d..55e7735cb0 100644\n--- a/drivers/event/sw/sw_evdev.c\n+++ b/drivers/event/sw/sw_evdev.c\n@@ -1075,7 +1075,7 @@ sw_probe(struct rte_vdev_device *vdev)\n \t\t\tmin_burst_size, deq_burst_size, refill_once);\n \n \tdev = rte_event_pmd_vdev_init(name,\n-\t\t\tsizeof(struct sw_evdev), socket_id);\n+\t\t\tsizeof(struct sw_evdev), socket_id, vdev);\n \tif (dev == NULL) {\n \t\tSW_LOG_ERR(\"eventdev vdev init() failed\");\n \t\treturn -EFAULT;\ndiff --git a/lib/eventdev/eventdev_pmd_vdev.h b/lib/eventdev/eventdev_pmd_vdev.h\nindex 5fa9d699ac..bb433ba955 100644\n--- a/lib/eventdev/eventdev_pmd_vdev.h\n+++ b/lib/eventdev/eventdev_pmd_vdev.h\n@@ -45,7 +45,7 @@ extern \"C\" {\n __rte_internal\n static inline struct rte_eventdev *\n rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,\n-\t\tint socket_id)\n+\t\tint socket_id, struct rte_vdev_device *vdev)\n {\n \n \tstruct rte_eventdev *eventdev;\n@@ -67,6 +67,7 @@ rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,\n \t\t\trte_panic(\"Cannot allocate memzone for private device\"\n \t\t\t\t\t\" data\");\n \t}\n+\teventdev->dev = &vdev->device;\n \n \treturn eventdev;\n }\n",
    "prefixes": [
        "v5",
        "1/2"
    ]
}