From: Jason Wang <jasowang@redhat.com>
To: Eugenio Perez Martin <eperezma@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Parav Pandit <parav@mellanox.com>, Cindy Lu <lulu@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
qemu-level <qemu-devel@nongnu.org>,
Gautam Dawar <gdawar@xilinx.com>,
Markus Armbruster <armbru@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Harpreet Singh Anand <hanand@xilinx.com>,
Xiao W Wang <xiao.w.wang@intel.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Eli Cohen <eli@mellanox.com>, Paolo Bonzini <pbonzini@redhat.com>,
Zhu Lingshan <lingshan.zhu@intel.com>,
virtualization <virtualization@lists.linux-foundation.org>,
Eric Blake <eblake@redhat.com>
Subject: Re: [PATCH 17/31] vdpa: adapt vhost_ops callbacks to svq
Date: Tue, 8 Feb 2022 11:57:54 +0800 [thread overview]
Message-ID: <3d0dfaaa-a67c-6f48-fd03-45d2661ba92a@redhat.com> (raw)
In-Reply-To: <CAJaqyWdRKZp6CwnE+HAr0JALhSRh-trJbZ01kddnLTuRX_tMKQ@mail.gmail.com>
在 2022/2/1 上午2:58, Eugenio Perez Martin 写道:
> On Sun, Jan 30, 2022 at 5:03 AM Jason Wang <jasowang@redhat.com> wrote:
>>
>> 在 2022/1/22 上午4:27, Eugenio Pérez 写道:
>>> First half of the buffers forwarding part, preparing vhost-vdpa
>>> callbacks to SVQ to offer it. QEMU cannot enable it at this moment, so
>>> this is effectively dead code at the moment, but it helps to reduce
>>> patch size.
>>>
>>> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
>>> ---
>>> hw/virtio/vhost-shadow-virtqueue.h | 2 +-
>>> hw/virtio/vhost-shadow-virtqueue.c | 21 ++++-
>>> hw/virtio/vhost-vdpa.c | 133 ++++++++++++++++++++++++++---
>>> 3 files changed, 143 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h
>>> index 035207a469..39aef5ffdf 100644
>>> --- a/hw/virtio/vhost-shadow-virtqueue.h
>>> +++ b/hw/virtio/vhost-shadow-virtqueue.h
>>> @@ -35,7 +35,7 @@ size_t vhost_svq_device_area_size(const VhostShadowVirtqueue *svq);
>>>
>>> void vhost_svq_stop(VhostShadowVirtqueue *svq);
>>>
>>> -VhostShadowVirtqueue *vhost_svq_new(void);
>>> +VhostShadowVirtqueue *vhost_svq_new(uint16_t qsize);
>>>
>>> void vhost_svq_free(VhostShadowVirtqueue *vq);
>>>
>>> diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c
>>> index f129ec8395..7c168075d7 100644
>>> --- a/hw/virtio/vhost-shadow-virtqueue.c
>>> +++ b/hw/virtio/vhost-shadow-virtqueue.c
>>> @@ -277,9 +277,17 @@ void vhost_svq_stop(VhostShadowVirtqueue *svq)
>>> /**
>>> * Creates vhost shadow virtqueue, and instruct vhost device to use the shadow
>>> * methods and file descriptors.
>>> + *
>>> + * @qsize Shadow VirtQueue size
>>> + *
>>> + * Returns the new virtqueue or NULL.
>>> + *
>>> + * In case of error, reason is reported through error_report.
>>> */
>>> -VhostShadowVirtqueue *vhost_svq_new(void)
>>> +VhostShadowVirtqueue *vhost_svq_new(uint16_t qsize)
>>> {
>>> + size_t desc_size = sizeof(vring_desc_t) * qsize;
>>> + size_t device_size, driver_size;
>>> g_autofree VhostShadowVirtqueue *svq = g_new0(VhostShadowVirtqueue, 1);
>>> int r;
>>>
>>> @@ -300,6 +308,15 @@ VhostShadowVirtqueue *vhost_svq_new(void)
>>> /* Placeholder descriptor, it should be deleted at set_kick_fd */
>>> event_notifier_init_fd(&svq->svq_kick, INVALID_SVQ_KICK_FD);
>>>
>>> + svq->vring.num = qsize;
>>
>> I wonder if this is the best. E.g some hardware can support up to 32K
>> queue size. So this will probably end up with:
>>
>> 1) SVQ use 32K queue size
>> 2) hardware queue uses 256
>>
> In that case SVQ vring queue size will be 32K and guest's vring can
> negotiate any number with SVQ equal or less than 32K,
Sorry for being unclear what I meant is actually
1) SVQ uses 32K queue size
2) guest vq uses 256
This looks like a burden that needs extra logic and may damage the
performance.
And this can lead other interesting situation:
1) SVQ uses 256
2) guest vq uses 1024
Where a lot of more SVQ logic is needed.
> including 256.
> Is that what you mean?
I mean, it looks to me the logic will be much more simplified if we just
allocate the shadow virtqueue with the size what guest can see (guest
vring).
Then we don't need to think if the difference of the queue size can have
any side effects.
>
> If with hardware queues you mean guest's vring, not sure why it is
> "probably 256". I'd say that in that case with the virtio-net kernel
> driver the ring size will be the same as the device export, for
> example, isn't it?
>
> The implementation should support any combination of sizes, but the
> ring size exposed to the guest is never bigger than hardware one.
>
>> ? Or we SVQ can stick to 256 but this will this cause trouble if we want
>> to add event index support?
>>
> I think we should not have any problem with event idx. If you mean
> that the guest could mark more buffers available than SVQ vring's
> size, that should not happen because there must be less entries in the
> guest than SVQ.
>
> But if I understood you correctly, a similar situation could happen if
> a guest's contiguous buffer is scattered across many qemu's VA chunks.
> Even if that would happen, the situation should be ok too: SVQ knows
> the guest's avail idx and, if SVQ is full, it will continue forwarding
> avail buffers when the device uses more buffers.
>
> Does that make sense to you?
Yes.
Thanks
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-02-08 3:58 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20220121202733.404989-1-eperezma@redhat.com>
[not found] ` <20220121202733.404989-22-eperezma@redhat.com>
2022-01-24 4:32 ` [PATCH 21/31] util: Add iova_tree_alloc Peter Xu
[not found] ` <CAJaqyWf--wbNZz5ZzbpixD9op_fO5fV01kbYXzG097c_NkqYrw@mail.gmail.com>
2022-01-24 11:07 ` Peter Xu
[not found] ` <CAJaqyWcdpTr2X4VuAN2NLmpviCjDoAaY269+VQGZ7-F6myOhSw@mail.gmail.com>
2022-01-27 8:06 ` Peter Xu
[not found] ` <CAJaqyWczZ7C_vbwugyN9bEgOVuRokGqVMb_g5UK_R4F8O+qKOA@mail.gmail.com>
2022-01-28 3:57 ` Peter Xu
2022-01-28 5:55 ` Jason Wang
2022-01-30 5:06 ` Jason Wang
[not found] ` <20220121202733.404989-2-eperezma@redhat.com>
2022-01-28 5:59 ` [PATCH 01/31] vdpa: Reorder virtio/vhost-vdpa.c functions Jason Wang
[not found] ` <CAJaqyWffGzYv2+HufFZzzBPtu5z3_vaKh4evGXqj7hqTB0WU3A@mail.gmail.com>
2022-02-21 7:31 ` Jason Wang
[not found] ` <20220121202733.404989-3-eperezma@redhat.com>
2022-01-28 6:00 ` [PATCH 02/31] vhost: Add VhostShadowVirtqueue Jason Wang
2022-01-28 6:02 ` [PATCH 00/31] vDPA shadow virtqueue Jason Wang
[not found] ` <CAJaqyWfWxQSJc3YMpF6g7VwZBN_ab0Z+1nXgWH1sg+uBaOYgBQ@mail.gmail.com>
2022-02-08 8:27 ` Jason Wang
[not found] ` <20220121202733.404989-4-eperezma@redhat.com>
2022-01-28 6:03 ` [PATCH 03/31] vdpa: Add vhost_svq_get_dev_kick_notifier Jason Wang
[not found] ` <20220121202733.404989-5-eperezma@redhat.com>
2022-01-28 6:29 ` [PATCH 04/31] vdpa: Add vhost_svq_set_svq_kick_fd Jason Wang
[not found] ` <CAJaqyWc7fbgN-W7y3=iFqHsJzj+1Mg0cuwSu+my=62nu9vGOqA@mail.gmail.com>
2022-02-08 8:47 ` Jason Wang
[not found] ` <20220121202733.404989-6-eperezma@redhat.com>
2022-01-28 6:32 ` [PATCH 05/31] vhost: Add Shadow VirtQueue kick forwarding capabilities Jason Wang
[not found] ` <20220121202733.404989-7-eperezma@redhat.com>
2022-01-28 6:56 ` [PATCH 06/31] vhost: Route guest->host notification through shadow virtqueue Jason Wang
[not found] ` <CAJaqyWeRbmwW80q3q52nFw=iz1xcPRFviFaRHo0nzXpEb+3m3A@mail.gmail.com>
2022-02-08 9:02 ` Jason Wang
[not found] ` <20220121202733.404989-8-eperezma@redhat.com>
2022-01-29 7:57 ` [PATCH 07/31] vhost: dd vhost_svq_get_svq_call_notifier Jason Wang
[not found] ` <20220121202733.404989-10-eperezma@redhat.com>
2022-01-29 8:05 ` [PATCH 09/31] vhost-vdpa: Take into account SVQ in vhost_vdpa_set_vring_call Jason Wang
[not found] ` <CAJaqyWda5sBw9VGBrz8g60OJ07Eeq45RRYu9vwgOPZFwten9rw@mail.gmail.com>
2022-02-08 3:23 ` Jason Wang
[not found] ` <CAJaqyWeisXmZ9+xw2Rj50K7aKx4khNZZjLZEz4MY97B9pQQm3w@mail.gmail.com>
2022-02-21 7:39 ` Jason Wang
[not found] ` <CAJaqyWc5uR70a=hTpVpomuahF9iZouLmRpXPnWidga5CFxJOpA@mail.gmail.com>
2022-02-22 7:18 ` Jason Wang
[not found] ` <20220121202733.404989-12-eperezma@redhat.com>
2022-01-29 8:11 ` [PATCH 11/31] vhost: Add vhost_svq_valid_device_features to shadow vq Jason Wang
[not found] ` <CAJaqyWfaf0RG9AzW4ktH2L3wyfOGuSk=rNm-j7xRkpdfVvkY-g@mail.gmail.com>
[not found] ` <CAJaqyWc6BqJBDcUE36AQ=bgWjJYkyMo1ZYxRwmc5ZgGj4T-pVg@mail.gmail.com>
2022-02-08 3:37 ` Jason Wang
[not found] ` <20220121202733.404989-16-eperezma@redhat.com>
2022-01-29 8:14 ` [PATCH 15/31] vdpa: Add vhost_svq_get_num Jason Wang
[not found] ` <20220121202733.404989-17-eperezma@redhat.com>
2022-01-29 8:20 ` [PATCH 16/31] vhost: pass queue index to vhost_vq_get_addr Jason Wang
[not found] ` <CAJaqyWexu=VroHQxmtJDQm=iu1va-s1VGR8hqGOreG0SOisjYg@mail.gmail.com>
2022-02-08 6:58 ` Jason Wang
[not found] ` <20220121202733.404989-18-eperezma@redhat.com>
2022-01-30 4:03 ` [PATCH 17/31] vdpa: adapt vhost_ops callbacks to svq Jason Wang
[not found] ` <CAJaqyWdRKZp6CwnE+HAr0JALhSRh-trJbZ01kddnLTuRX_tMKQ@mail.gmail.com>
2022-02-08 3:57 ` Jason Wang [this message]
[not found] ` <CAJaqyWfEEg2PKgxBAFwYhF9LD1oDtwVYXSjHHnCbstT3dvL2GA@mail.gmail.com>
2022-02-21 7:15 ` Jason Wang
[not found] ` <CAJaqyWcoHgToqsR-bVRctTnhgufmarR_2hh4O_VoCbCGp8WNhg@mail.gmail.com>
2022-02-22 3:16 ` Jason Wang
[not found] ` <CAJaqyWd2PQFedaEOV7YVZgp0m37snn-4LYYtNw7g4u+7hrtq=Q@mail.gmail.com>
2022-02-22 7:59 ` Jason Wang
[not found] ` <20220121202733.404989-19-eperezma@redhat.com>
2022-01-30 4:42 ` [PATCH 18/31] vhost: Shadow virtqueue buffers forwarding Jason Wang
[not found] ` <CAJaqyWdDax2+e3ZUEYyYNe5xAL=Oocu+72n89ygayrzYrQz2Yw@mail.gmail.com>
2022-02-08 8:11 ` Jason Wang
[not found] ` <CAJaqyWfRWexq7jrCkJrPzLB4g_fK42pE8BarMhZwKNYtNXi7XA@mail.gmail.com>
2022-02-23 2:03 ` Jason Wang
2022-01-30 6:46 ` Jason Wang
[not found] ` <CAJaqyWfF01k3LntM7RLEmFcej=EY2d4+2MARKXPptQ2J7VnB9A@mail.gmail.com>
2022-02-08 8:15 ` Jason Wang
[not found] ` <CAJaqyWedqtzRW=ur7upchneSc-oOkvkr3FUph_BfphV3zTmnkw@mail.gmail.com>
2022-02-21 7:43 ` Jason Wang
[not found] ` <CAJaqyWcHhMpjJ4kde1ejV5c_vP7_8PvfXpi5u9rdWuaORFt_zg@mail.gmail.com>
2022-02-22 7:26 ` Jason Wang
[not found] ` <CAJaqyWePWg+eeQjjcMh24k0K+yUQUF2x0yXH32tPPWEw_wYP0Q@mail.gmail.com>
2022-02-23 2:26 ` Jason Wang
[not found] ` <20220121202733.404989-23-eperezma@redhat.com>
2022-01-30 5:21 ` [PATCH 22/31] vhost: Add VhostIOVATree Jason Wang
[not found] ` <CAJaqyWePW6hJKAm7nk+syqmXAgdTQSTtuv9jACu_+hgbg2bRHg@mail.gmail.com>
2022-02-08 8:17 ` Jason Wang
[not found] ` <20220121202733.404989-24-eperezma@redhat.com>
2022-01-30 5:57 ` [PATCH 23/31] vdpa: Add custom IOTLB translations to SVQ Jason Wang
[not found] ` <CAJaqyWe1zH8bfaoxTyz_RXH=0q+Yk9H7QyUffaRB1fCV9oVLZQ@mail.gmail.com>
2022-02-08 8:19 ` Jason Wang
[not found] ` <20220121202733.404989-29-eperezma@redhat.com>
2022-01-30 6:50 ` [PATCH 28/31] vdpa: Expose VHOST_F_LOG_ALL on SVQ Jason Wang
[not found] ` <CAJaqyWdBLU+maEhByepzeH7iwLmqUba0rRb8PM4VwBy2P8Vtow@mail.gmail.com>
2022-02-08 8:25 ` Jason Wang
[not found] ` <CAJaqyWcvWjPas0=xp+U-c-kG+e6k73jg=C4phFD7S-tZY=niSQ@mail.gmail.com>
2022-02-17 6:02 ` Jason Wang
[not found] ` <CAJaqyWdhHmD+tB_bY_YEMnBU1p7-LW=LP8f+3e_ZXDcOfSRiNA@mail.gmail.com>
2022-02-22 7:41 ` Jason Wang
[not found] ` <CAJaqyWfFC4SgxQ4zQeHgtDDJSd0tBa-W4HmtW0UASA2cVDWDUg@mail.gmail.com>
2022-02-23 3:46 ` Jason Wang
[not found] ` <CAJaqyWds=97TjEpORiqhsj57KNxJ482jwcRS8TN59a4aank7-w@mail.gmail.com>
2022-02-24 3:45 ` Jason Wang
[not found] ` <20220121202733.404989-30-eperezma@redhat.com>
2022-01-30 6:51 ` [PATCH 29/31] vdpa: Make ncs autofree Jason Wang
[not found] ` <20220121202733.404989-31-eperezma@redhat.com>
2022-01-30 6:53 ` [PATCH 30/31] vdpa: Move vhost_vdpa_get_iova_range to net/vhost-vdpa.c Jason Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3d0dfaaa-a67c-6f48-fd03-45d2661ba92a@redhat.com \
--to=jasowang@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=eli@mellanox.com \
--cc=eperezma@redhat.com \
--cc=gdawar@xilinx.com \
--cc=hanand@xilinx.com \
--cc=lingshan.zhu@intel.com \
--cc=lulu@redhat.com \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=parav@mellanox.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=xiao.w.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).