get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 74852,
    "url": "http://patchwork.dpdk.org/api/patches/74852/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1595858444-126652-1-git-send-email-matan@mellanox.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": "<1595858444-126652-1-git-send-email-matan@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1595858444-126652-1-git-send-email-matan@mellanox.com",
    "date": "2020-07-27T14:00:44",
    "name": "vdpa/mlx5: fix notification timing",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "125c3443936098736a681adcc7ca37a8d6b782e4",
    "submitter": {
        "id": 796,
        "url": "http://patchwork.dpdk.org/api/people/796/?format=api",
        "name": "Matan Azrad",
        "email": "matan@mellanox.com"
    },
    "delegate": {
        "id": 2642,
        "url": "http://patchwork.dpdk.org/api/users/2642/?format=api",
        "username": "mcoquelin",
        "first_name": "Maxime",
        "last_name": "Coquelin",
        "email": "maxime.coquelin@redhat.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1595858444-126652-1-git-send-email-matan@mellanox.com/mbox/",
    "series": [
        {
            "id": 11325,
            "url": "http://patchwork.dpdk.org/api/series/11325/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=11325",
            "date": "2020-07-27T14:00:44",
            "name": "vdpa/mlx5: fix notification timing",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/11325/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/74852/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/74852/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 80400A053A;\n\tMon, 27 Jul 2020 16:00:51 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 0DBF21BFD9;\n\tMon, 27 Jul 2020 16:00:50 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by dpdk.org (Postfix) with ESMTP id 2A95B1BFCF\n for <dev@dpdk.org>; Mon, 27 Jul 2020 16:00:48 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n matan@mellanox.com) with SMTP; 27 Jul 2020 17:00:46 +0300",
            "from pegasus25.mtr.labs.mlnx. (pegasus25.mtr.labs.mlnx\n [10.210.16.10])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 06RE0kUx014371;\n Mon, 27 Jul 2020 17:00:46 +0300"
        ],
        "From": "Matan Azrad <matan@mellanox.com>",
        "To": "Maxime Coquelin <maxime.coquelin@redhat.com>",
        "Cc": "dev@dpdk.org",
        "Date": "Mon, 27 Jul 2020 14:00:44 +0000",
        "Message-Id": "<1595858444-126652-1-git-send-email-matan@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "Subject": "[dpdk-dev] [PATCH] vdpa/mlx5: fix notification timing",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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": "The issue is relevant only for the timer event modes: 0 and 1.\n\nWhen the HW finishes to consume a burst of the guest Rx descriptors,\nit creates a CQE in the CQ.\nWhen traffic stops, the mlx5 driver arms the CQ to get a notification\nwhen a specific CQE index is created - the index to be armed is the\nnext CQE index which should be polled by the driver.\n\nThe mlx5 driver configured the kernel driver to send notification to\nthe guest callfd in the same time of the armed CQE event.\nIt means that the guest was notified only for each first CQE in a\npoll cycle, so if the driver polled CQEs of all the virtio queue\navailable descriptors, the guest was not notified again for the rest\nbecause there was no any new CQE to trigger the guest notification.\n\nHence, the Rx queues might be stuck when the guest didn't work with\npoll mode.\n\nRemove prior kernel notification, and do manual notification after CQ\npolling.\n\nFixes: a9dd7275a149 (\"vdpa/mlx5: optimize notification events\")\n\nSigned-off-by: Matan Azrad <matan@mellanox.com>\nAcked-by: Xueming Li <xuemingl@mellanox.com>\n---\n drivers/vdpa/mlx5/mlx5_vdpa_event.c | 17 +++--------------\n 1 file changed, 3 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_event.c b/drivers/vdpa/mlx5/mlx5_vdpa_event.c\nindex e14b380..0414c91 100644\n--- a/drivers/vdpa/mlx5/mlx5_vdpa_event.c\n+++ b/drivers/vdpa/mlx5/mlx5_vdpa_event.c\n@@ -172,17 +172,6 @@\n \t\trte_errno = errno;\n \t\tgoto error;\n \t}\n-\tif (callfd != -1 &&\n-\t    priv->event_mode != MLX5_VDPA_EVENT_MODE_ONLY_INTERRUPT) {\n-\t\tret = mlx5_glue->devx_subscribe_devx_event_fd(priv->eventc,\n-\t\t\t\t\t\t\t      callfd,\n-\t\t\t\t\t\t\t      cq->cq->obj, 0);\n-\t\tif (ret) {\n-\t\t\tDRV_LOG(ERR, \"Failed to subscribe CQE event fd.\");\n-\t\t\trte_errno = errno;\n-\t\t\tgoto error;\n-\t\t}\n-\t}\n \tcq->callfd = callfd;\n \t/* Init CQ to ones to be in HW owner in the start. */\n \tcq->cqes[0].op_own = MLX5_CQE_OWNER_MASK;\n@@ -352,11 +341,11 @@\n \t\t\t\t\t\t   struct mlx5_vdpa_virtq, eqp);\n \n \t\tmlx5_vdpa_cq_poll(cq);\n+\t\t/* Notify guest for descs consuming. */\n+\t\tif (cq->callfd != -1)\n+\t\t\teventfd_write(cq->callfd, (eventfd_t)1);\n \t\tif (priv->event_mode == MLX5_VDPA_EVENT_MODE_ONLY_INTERRUPT) {\n \t\t\tmlx5_vdpa_cq_arm(priv, cq);\n-\t\t\t/* Notify guest for descs consuming. */\n-\t\t\tif (cq->callfd != -1)\n-\t\t\t\teventfd_write(cq->callfd, (eventfd_t)1);\n \t\t\treturn;\n \t\t}\n \t\t/* Don't arm again - timer will take control. */\n",
    "prefixes": []
}