get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 105915,
    "url": "http://patchwork.dpdk.org/api/patches/105915/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20220117162027.927041-1-yuanx.wang@intel.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": "<20220117162027.927041-1-yuanx.wang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220117162027.927041-1-yuanx.wang@intel.com",
    "date": "2022-01-17T16:20:27",
    "name": "vhost: fix guest physical address to host physical address mapping",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "42d36d14c2e4cb6214c3c5d72acb53a28385f832",
    "submitter": {
        "id": 2087,
        "url": "http://patchwork.dpdk.org/api/people/2087/?format=api",
        "name": "Wang, YuanX",
        "email": "yuanx.wang@intel.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/20220117162027.927041-1-yuanx.wang@intel.com/mbox/",
    "series": [
        {
            "id": 21202,
            "url": "http://patchwork.dpdk.org/api/series/21202/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=21202",
            "date": "2022-01-17T16:20:27",
            "name": "vhost: fix guest physical address to host physical address mapping",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/21202/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/105915/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/105915/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 BB1C5A034F;\n\tMon, 17 Jan 2022 09:29:01 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 408CD41181;\n\tMon, 17 Jan 2022 09:29:01 +0100 (CET)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n by mails.dpdk.org (Postfix) with ESMTP id 496A54067B\n for <dev@dpdk.org>; Mon, 17 Jan 2022 09:28:59 +0100 (CET)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Jan 2022 00:28:58 -0800",
            "from dpdk.sh.intel.com (HELO localhost.localdomain)\n ([10.239.251.55])\n by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Jan 2022 00:28:55 -0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1642408140; x=1673944140;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=QZNaaZZv4H5NN5J53XIc5TJX2IpZMgNKMtuweB1WlMQ=;\n b=SR+tEUE46ysiQXmCgkHobBvrxgAqjLct748373cEW4uhCG5HxPFJh1Mh\n SPktedLD6PEXHkPc7E022bVM6th7HKLFCalOdjrks4Q5/6EO4zVUn2TR/\n wyK9hFKgbVx/MPrNaLkyNJW8UvDloyUY0WDu+RPy5uwR2NvdBw7HrrBR7\n +T77dvM9zND/WZuuX5HB3volZhez/K0sIvP3rS5GDW1JXOrFLodtT0Ebo\n QkhDwsvG3oiNfpl0/VQWBQcsyIGSTv7rBL7VGmL/s2ATMA+CrJGRXIIAP\n HmPaXnNQzpsI6sc90e5JrdpFIEG/4o+uICc3EG//U6X7/bDo9lFkZV5qI w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10229\"; a=\"224559012\"",
            "E=Sophos;i=\"5.88,295,1635231600\"; d=\"scan'208\";a=\"224559012\"",
            "E=Sophos;i=\"5.88,295,1635231600\"; d=\"scan'208\";a=\"692996732\""
        ],
        "From": "Yuan Wang <yuanx.wang@intel.com>",
        "To": "maxime.coquelin@redhat.com,\n\tchenbo.xia@intel.com",
        "Cc": "dev@dpdk.org, jiayu.hu@intel.com, xuan.ding@intel.com,\n wenwux.ma@intel.com,\n yvonnex.yang@intel.com, yuanx.wang@intel.com",
        "Subject": "[PATCH] vhost: fix guest physical address to host physical address\n mapping",
        "Date": "Mon, 17 Jan 2022 16:20:27 +0000",
        "Message-Id": "<20220117162027.927041-1-yuanx.wang@intel.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "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": "Async copy fails when looking up hpa in the gpa to hpa mapping table.\nThis happens because the gpa is matched exactly in the merged\nmapping table, and the merge loses the mapping entries.\nA new range comparison method is introduced to solve this issue.\n\nFixes: 6563cf92380 (\"vhost: fix async copy on multi-page buffers\")\n\nSigned-off-by: Yuan Wang <yuanx.wang@intel.com>\n---\n lib/vhost/vhost.h | 18 ++++++++++++++++--\n 1 file changed, 16 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h\nindex 9521ae56da..d4586f3341 100644\n--- a/lib/vhost/vhost.h\n+++ b/lib/vhost/vhost.h\n@@ -588,6 +588,20 @@ static __rte_always_inline int guest_page_addrcmp(const void *p1,\n \treturn 0;\n }\n \n+static __rte_always_inline int guest_page_rangecmp(const void *p1, const void *p2)\n+{\n+\tconst struct guest_page *page1 = (const struct guest_page *)p1;\n+\tconst struct guest_page *page2 = (const struct guest_page *)p2;\n+\n+\tif (page1->guest_phys_addr >= page2->guest_phys_addr) {\n+\t\tif (page1->guest_phys_addr < page2->guest_phys_addr + page2->size)\n+\t\t\treturn 0;\n+\t\telse\n+\t\t\treturn 1;\n+\t} else\n+\t\treturn -1;\n+}\n+\n static __rte_always_inline rte_iova_t\n gpa_to_first_hpa(struct virtio_net *dev, uint64_t gpa,\n \tuint64_t gpa_size, uint64_t *hpa_size)\n@@ -598,9 +612,9 @@ gpa_to_first_hpa(struct virtio_net *dev, uint64_t gpa,\n \n \t*hpa_size = gpa_size;\n \tif (dev->nr_guest_pages >= VHOST_BINARY_SEARCH_THRESH) {\n-\t\tkey.guest_phys_addr = gpa & ~(dev->guest_pages[0].size - 1);\n+\t\tkey.guest_phys_addr = gpa;\n \t\tpage = bsearch(&key, dev->guest_pages, dev->nr_guest_pages,\n-\t\t\t       sizeof(struct guest_page), guest_page_addrcmp);\n+\t\t\t       sizeof(struct guest_page), guest_page_rangecmp);\n \t\tif (page) {\n \t\t\tif (gpa + gpa_size <=\n \t\t\t\t\tpage->guest_phys_addr + page->size) {\n",
    "prefixes": []
}