get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1658311,
    "url": "http://patchwork.ozlabs.org/api/patches/1658311/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-um/patch/20220720030436.79520-32-xuanzhuo@linux.alibaba.com/",
    "project": {
        "id": 60,
        "url": "http://patchwork.ozlabs.org/api/projects/60/?format=api",
        "name": "User-mode Linux Development",
        "link_name": "linux-um",
        "list_id": "linux-um.lists.infradead.org",
        "list_email": "linux-um@lists.infradead.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20220720030436.79520-32-xuanzhuo@linux.alibaba.com>",
    "list_archive_url": null,
    "date": "2022-07-20T03:04:27",
    "name": "[v12,31/40] virtio: find_vqs() add arg sizes",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": false,
    "hash": "4425a4f254452768671d45de41befb313d4e07f5",
    "submitter": {
        "id": 80519,
        "url": "http://patchwork.ozlabs.org/api/people/80519/?format=api",
        "name": "Xuan Zhuo",
        "email": "xuanzhuo@linux.alibaba.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-um/patch/20220720030436.79520-32-xuanzhuo@linux.alibaba.com/mbox/",
    "series": [
        {
            "id": 310331,
            "url": "http://patchwork.ozlabs.org/api/series/310331/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-um/list/?series=310331",
            "date": "2022-07-20T03:03:59",
            "name": "virtio pci support VIRTIO_F_RING_RESET",
            "version": 12,
            "mbox": "http://patchwork.ozlabs.org/series/310331/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1658311/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1658311/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "bilbo.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Lv+jUn4/;\n\tdkim-atps=neutral",
            "ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=<UNKNOWN>)"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby bilbo.ozlabs.org (Postfix) with ESMTPS id 4LngZY1s8bz9s2R\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 20 Jul 2022 13:06:13 +1000 (AEST)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux))\n\tid 1oE02C-00HFN7-CH; Wed, 20 Jul 2022 03:06:00 +0000",
            "from out30-43.freemail.mail.aliyun.com ([115.124.30.43])\n\tby bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux))\n\tid 1oE028-00HFGD-Td\n\tfor linux-um@lists.infradead.org; Wed, 20 Jul 2022 03:05:58 +0000",
            "from localhost(mailfrom:xuanzhuo@linux.alibaba.com\n fp:SMTPD_---0VJuw0e8_1658286350)\n          by smtp.aliyun-inc.com;\n          Wed, 20 Jul 2022 11:05:51 +0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=69FsXUQ93ikqXdBHN/yLav8zOmo7ULhZBWLsSfbUctA=; b=Lv+jUn4/5FWD+M\n\t9+6/aqjh02gG9mpeOqV/qjYRMuKtL+7ZtnZKWU6Scayw9F9lQ6UKEQMKqKd8a+cU0dXGXVkRhKciz\n\tLHe+rHkyEP1Ai0QfMG9je/a9dvsRGDFVvqJPEhEzyfsAZXP3XxZ4Y3xwZVIyPrf1XsZ3I+AtnU1+w\n\tBbMstyt+/ho0trQpDZQJ3h0eN01iXhc6NjEzVM+tyy0dxeeHkR41LsrBn4LraA9B7gxzc3yx4JNF6\n\t35PhG4SbruCS3a0xzBXCnSIYuHbdrIhjhDFDp5Z668pcKfCIxGEkXJCZ5Ut+ZFv6KoCi1tIxMaXs6\n\tmTTGWvAuLrQ+zQSQSzjw==;",
        "X-Alimail-AntiSpam": "\n AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046050;MF=xuanzhuo@linux.alibaba.com;NM=1;PH=DS;RN=37;SR=0;TI=SMTPD_---0VJuw0e8_1658286350;",
        "From": "Xuan Zhuo <xuanzhuo@linux.alibaba.com>",
        "To": "virtualization@lists.linux-foundation.org",
        "Cc": "Richard Weinberger <richard@nod.at>,\n\tAnton Ivanov <anton.ivanov@cambridgegreys.com>,\n\tJohannes Berg <johannes@sipsolutions.net>,\n\t\"Michael S. Tsirkin\" <mst@redhat.com>,\n\tJason Wang <jasowang@redhat.com>,\n\t\"David S. Miller\" <davem@davemloft.net>,\n\tEric Dumazet <edumazet@google.com>,\n\tJakub Kicinski <kuba@kernel.org>,\n\tPaolo Abeni <pabeni@redhat.com>,\n\tHans de Goede <hdegoede@redhat.com>,\n\tMark Gross <markgross@kernel.org>,\n\tVadim Pasternak <vadimp@nvidia.com>,\n\tBjorn Andersson <bjorn.andersson@linaro.org>,\n\tMathieu Poirier <mathieu.poirier@linaro.org>,\n\tCornelia Huck <cohuck@redhat.com>,\n\tHalil Pasic <pasic@linux.ibm.com>,\n\tEric Farman <farman@linux.ibm.com>,\n\tHeiko Carstens <hca@linux.ibm.com>,\n\tVasily Gorbik <gor@linux.ibm.com>,\n\tAlexander Gordeev <agordeev@linux.ibm.com>,\n\tChristian Borntraeger <borntraeger@linux.ibm.com>,\n\tSven Schnelle <svens@linux.ibm.com>,\n\tAlexei Starovoitov <ast@kernel.org>,\n\tDaniel Borkmann <daniel@iogearbox.net>,\n\tJesper Dangaard Brouer <hawk@kernel.org>,\n\tJohn Fastabend <john.fastabend@gmail.com>,\n\tXuan Zhuo <xuanzhuo@linux.alibaba.com>,\n\tVincent Whitchurch <vincent.whitchurch@axis.com>,\n\tlinux-um@lists.infradead.org,\n\tnetdev@vger.kernel.org,\n\tplatform-driver-x86@vger.kernel.org,\n\tlinux-remoteproc@vger.kernel.org,\n\tlinux-s390@vger.kernel.org,\n\tkvm@vger.kernel.org,\n\tbpf@vger.kernel.org,\n\tkangjie.xu@linux.alibaba.com",
        "Subject": "[PATCH v12 31/40] virtio: find_vqs() add arg sizes",
        "Date": "Wed, 20 Jul 2022 11:04:27 +0800",
        "Message-Id": "<20220720030436.79520-32-xuanzhuo@linux.alibaba.com>",
        "X-Mailer": "git-send-email 2.31.0",
        "In-Reply-To": "<20220720030436.79520-1-xuanzhuo@linux.alibaba.com>",
        "References": "<20220720030436.79520-1-xuanzhuo@linux.alibaba.com>",
        "MIME-Version": "1.0",
        "X-Git-Hash": "366032b2ffac",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20220719_200557_161994_EC294720 ",
        "X-CRM114-Status": "GOOD (  13.68  )",
        "X-Spam-Score": "-8.0 (--------)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  find_vqs() adds a new parameter sizes to specify the size\n   of each vq vring. NULL as sizes means that all queues in find_vqs() use the\n    maximum size. A value in the array is 0,\n which means that the corresponding\n    queue uses the maximum size.\n Content analysis details:   (-8.0 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at https://www.dnswl.org/,\n                              no trust\n                             [115.124.30.43 listed in list.dnswl.org]\n -0.0 SPF_PASS               SPF: sender matches SPF record\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\n -7.5 USER_IN_DEF_SPF_WL     From: address is in the default SPF\n                             white-list\n -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)\n                             [115.124.30.43 listed in wl.mailspike.net]\n -0.5 ENV_AND_HDR_SPF_MATCH  Env and Hdr From used in default SPF WL\n                             Match\n  0.0 UNPARSEABLE_RELAY      Informational: message has unparseable relay\n                             lines",
        "X-BeenThere": "linux-um@lists.infradead.org",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "<linux-um.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-um>,\n <mailto:linux-um-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/linux-um/>",
        "List-Post": "<mailto:linux-um@lists.infradead.org>",
        "List-Help": "<mailto:linux-um-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-um>,\n <mailto:linux-um-request@lists.infradead.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Sender": "\"linux-um\" <linux-um-bounces@lists.infradead.org>",
        "Errors-To": "linux-um-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "find_vqs() adds a new parameter sizes to specify the size of each vq\nvring.\n\nNULL as sizes means that all queues in find_vqs() use the maximum size.\nA value in the array is 0, which means that the corresponding queue uses\nthe maximum size.\n\nIn the split scenario, the meaning of size is the largest size, because\nit may be limited by memory, the virtio core will try a smaller size.\nAnd the size is power of 2.\n\nSigned-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>\nAcked-by: Hans de Goede <hdegoede@redhat.com>\nReviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>\n---\n arch/um/drivers/virtio_uml.c             |  2 +-\n drivers/platform/mellanox/mlxbf-tmfifo.c |  1 +\n drivers/remoteproc/remoteproc_virtio.c   |  1 +\n drivers/s390/virtio/virtio_ccw.c         |  1 +\n drivers/virtio/virtio_mmio.c             |  1 +\n drivers/virtio/virtio_pci_common.c       |  2 +-\n drivers/virtio/virtio_pci_common.h       |  2 +-\n drivers/virtio/virtio_pci_modern.c       |  7 +++++--\n drivers/virtio/virtio_vdpa.c             |  1 +\n include/linux/virtio_config.h            | 14 +++++++++-----\n 10 files changed, 22 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/arch/um/drivers/virtio_uml.c b/arch/um/drivers/virtio_uml.c\nindex e719af8bdf56..79e38afd4b91 100644\n--- a/arch/um/drivers/virtio_uml.c\n+++ b/arch/um/drivers/virtio_uml.c\n@@ -1011,7 +1011,7 @@ static struct virtqueue *vu_setup_vq(struct virtio_device *vdev,\n \n static int vu_find_vqs(struct virtio_device *vdev, unsigned nvqs,\n \t\t       struct virtqueue *vqs[], vq_callback_t *callbacks[],\n-\t\t       const char * const names[], const bool *ctx,\n+\t\t       const char * const names[], u32 sizes[], const bool *ctx,\n \t\t       struct irq_affinity *desc)\n {\n \tstruct virtio_uml_device *vu_dev = to_virtio_uml_device(vdev);\ndiff --git a/drivers/platform/mellanox/mlxbf-tmfifo.c b/drivers/platform/mellanox/mlxbf-tmfifo.c\nindex 1ae3c56b66b0..8be13d416f48 100644\n--- a/drivers/platform/mellanox/mlxbf-tmfifo.c\n+++ b/drivers/platform/mellanox/mlxbf-tmfifo.c\n@@ -928,6 +928,7 @@ static int mlxbf_tmfifo_virtio_find_vqs(struct virtio_device *vdev,\n \t\t\t\t\tstruct virtqueue *vqs[],\n \t\t\t\t\tvq_callback_t *callbacks[],\n \t\t\t\t\tconst char * const names[],\n+\t\t\t\t\tu32 sizes[],\n \t\t\t\t\tconst bool *ctx,\n \t\t\t\t\tstruct irq_affinity *desc)\n {\ndiff --git a/drivers/remoteproc/remoteproc_virtio.c b/drivers/remoteproc/remoteproc_virtio.c\nindex 0f7706e23eb9..81c4f5776109 100644\n--- a/drivers/remoteproc/remoteproc_virtio.c\n+++ b/drivers/remoteproc/remoteproc_virtio.c\n@@ -158,6 +158,7 @@ static int rproc_virtio_find_vqs(struct virtio_device *vdev, unsigned int nvqs,\n \t\t\t\t struct virtqueue *vqs[],\n \t\t\t\t vq_callback_t *callbacks[],\n \t\t\t\t const char * const names[],\n+\t\t\t\t u32 sizes[],\n \t\t\t\t const bool * ctx,\n \t\t\t\t struct irq_affinity *desc)\n {\ndiff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c\nindex 6b86d0280d6b..72500cd2dbf5 100644\n--- a/drivers/s390/virtio/virtio_ccw.c\n+++ b/drivers/s390/virtio/virtio_ccw.c\n@@ -635,6 +635,7 @@ static int virtio_ccw_find_vqs(struct virtio_device *vdev, unsigned nvqs,\n \t\t\t       struct virtqueue *vqs[],\n \t\t\t       vq_callback_t *callbacks[],\n \t\t\t       const char * const names[],\n+\t\t\t       u32 sizes[],\n \t\t\t       const bool *ctx,\n \t\t\t       struct irq_affinity *desc)\n {\ndiff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c\nindex a20d5a6b5819..5e3ba3cc7fd0 100644\n--- a/drivers/virtio/virtio_mmio.c\n+++ b/drivers/virtio/virtio_mmio.c\n@@ -474,6 +474,7 @@ static int vm_find_vqs(struct virtio_device *vdev, unsigned int nvqs,\n \t\t       struct virtqueue *vqs[],\n \t\t       vq_callback_t *callbacks[],\n \t\t       const char * const names[],\n+\t\t       u32 sizes[],\n \t\t       const bool *ctx,\n \t\t       struct irq_affinity *desc)\n {\ndiff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c\nindex ad258a9d3b9f..7ad734584823 100644\n--- a/drivers/virtio/virtio_pci_common.c\n+++ b/drivers/virtio/virtio_pci_common.c\n@@ -396,7 +396,7 @@ static int vp_find_vqs_intx(struct virtio_device *vdev, unsigned int nvqs,\n /* the config->find_vqs() implementation */\n int vp_find_vqs(struct virtio_device *vdev, unsigned int nvqs,\n \t\tstruct virtqueue *vqs[], vq_callback_t *callbacks[],\n-\t\tconst char * const names[], const bool *ctx,\n+\t\tconst char * const names[], u32 sizes[], const bool *ctx,\n \t\tstruct irq_affinity *desc)\n {\n \tint err;\ndiff --git a/drivers/virtio/virtio_pci_common.h b/drivers/virtio/virtio_pci_common.h\nindex 23112d84218f..a5ff838b85a5 100644\n--- a/drivers/virtio/virtio_pci_common.h\n+++ b/drivers/virtio/virtio_pci_common.h\n@@ -110,7 +110,7 @@ void vp_del_vqs(struct virtio_device *vdev);\n /* the config->find_vqs() implementation */\n int vp_find_vqs(struct virtio_device *vdev, unsigned int nvqs,\n \t\tstruct virtqueue *vqs[], vq_callback_t *callbacks[],\n-\t\tconst char * const names[], const bool *ctx,\n+\t\tconst char * const names[], u32 sizes[], const bool *ctx,\n \t\tstruct irq_affinity *desc);\n const char *vp_bus_name(struct virtio_device *vdev);\n \ndiff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c\nindex 4d28b6918c80..19ec491d515a 100644\n--- a/drivers/virtio/virtio_pci_modern.c\n+++ b/drivers/virtio/virtio_pci_modern.c\n@@ -355,12 +355,15 @@ static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev,\n static int vp_modern_find_vqs(struct virtio_device *vdev, unsigned int nvqs,\n \t\t\t      struct virtqueue *vqs[],\n \t\t\t      vq_callback_t *callbacks[],\n-\t\t\t      const char * const names[], const bool *ctx,\n+\t\t\t      const char * const names[],\n+\t\t\t      u32 sizes[],\n+\t\t\t      const bool *ctx,\n \t\t\t      struct irq_affinity *desc)\n {\n \tstruct virtio_pci_device *vp_dev = to_vp_device(vdev);\n \tstruct virtqueue *vq;\n-\tint rc = vp_find_vqs(vdev, nvqs, vqs, callbacks, names, ctx, desc);\n+\tint rc = vp_find_vqs(vdev, nvqs, vqs, callbacks, names, sizes, ctx,\n+\t\t\t     desc);\n \n \tif (rc)\n \t\treturn rc;\ndiff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c\nindex 9670cc79371d..832d2c5b1b19 100644\n--- a/drivers/virtio/virtio_vdpa.c\n+++ b/drivers/virtio/virtio_vdpa.c\n@@ -269,6 +269,7 @@ static int virtio_vdpa_find_vqs(struct virtio_device *vdev, unsigned int nvqs,\n \t\t\t\tstruct virtqueue *vqs[],\n \t\t\t\tvq_callback_t *callbacks[],\n \t\t\t\tconst char * const names[],\n+\t\t\t\tu32 sizes[],\n \t\t\t\tconst bool *ctx,\n \t\t\t\tstruct irq_affinity *desc)\n {\ndiff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h\nindex 36ec7be1f480..888f7e96f0c7 100644\n--- a/include/linux/virtio_config.h\n+++ b/include/linux/virtio_config.h\n@@ -55,6 +55,7 @@ struct virtio_shm_region {\n  *\t\tinclude a NULL entry for vqs that do not need a callback\n  *\tnames: array of virtqueue names (mainly for debugging)\n  *\t\tinclude a NULL entry for vqs unused by driver\n+ *\tsizes: array of virtqueue sizes\n  *\tReturns 0 on success or error status\n  * @del_vqs: free virtqueues found by find_vqs().\n  * @synchronize_cbs: synchronize with the virtqueue callbacks (optional)\n@@ -103,7 +104,9 @@ struct virtio_config_ops {\n \tvoid (*reset)(struct virtio_device *vdev);\n \tint (*find_vqs)(struct virtio_device *, unsigned nvqs,\n \t\t\tstruct virtqueue *vqs[], vq_callback_t *callbacks[],\n-\t\t\tconst char * const names[], const bool *ctx,\n+\t\t\tconst char * const names[],\n+\t\t\tu32 sizes[],\n+\t\t\tconst bool *ctx,\n \t\t\tstruct irq_affinity *desc);\n \tvoid (*del_vqs)(struct virtio_device *);\n \tvoid (*synchronize_cbs)(struct virtio_device *);\n@@ -212,7 +215,7 @@ struct virtqueue *virtio_find_single_vq(struct virtio_device *vdev,\n \tconst char *names[] = { n };\n \tstruct virtqueue *vq;\n \tint err = vdev->config->find_vqs(vdev, 1, &vq, callbacks, names, NULL,\n-\t\t\t\t\t NULL);\n+\t\t\t\t\t NULL, NULL);\n \tif (err < 0)\n \t\treturn ERR_PTR(err);\n \treturn vq;\n@@ -224,7 +227,8 @@ int virtio_find_vqs(struct virtio_device *vdev, unsigned nvqs,\n \t\t\tconst char * const names[],\n \t\t\tstruct irq_affinity *desc)\n {\n-\treturn vdev->config->find_vqs(vdev, nvqs, vqs, callbacks, names, NULL, desc);\n+\treturn vdev->config->find_vqs(vdev, nvqs, vqs, callbacks, names, NULL,\n+\t\t\t\t      NULL, desc);\n }\n \n static inline\n@@ -233,8 +237,8 @@ int virtio_find_vqs_ctx(struct virtio_device *vdev, unsigned nvqs,\n \t\t\tconst char * const names[], const bool *ctx,\n \t\t\tstruct irq_affinity *desc)\n {\n-\treturn vdev->config->find_vqs(vdev, nvqs, vqs, callbacks, names, ctx,\n-\t\t\t\t      desc);\n+\treturn vdev->config->find_vqs(vdev, nvqs, vqs, callbacks, names, NULL,\n+\t\t\t\t      ctx, desc);\n }\n \n /**\n",
    "prefixes": [
        "v12",
        "31/40"
    ]
}