All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>,
	mst@redhat.com, vkaplans@redhat.com, wexu@redhat.com,
	yuanhan.liu@linux.intel.com, virtio-comment@lists.oasis-open.org,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC 2/2] spec/vhost-user spec: Add IOMMU support
Date: Thu, 13 Apr 2017 15:12:15 +0800	[thread overview]
Message-ID: <57a21a07-bdd1-fc50-e8ae-c84789950bd8@redhat.com> (raw)
In-Reply-To: <20170412092653.GH16464@pxdev.xzpeter.org>



On 2017年04月12日 17:26, Peter Xu wrote:
> On Wed, Apr 12, 2017 at 04:54:25PM +0800, Jason Wang wrote:
>> On 2017年04月12日 15:17, Peter Xu wrote:
>>> On Tue, Apr 11, 2017 at 05:16:19PM +0200, Maxime Coquelin wrote:
>>>> On 04/11/2017 03:20 PM, Peter Xu wrote:
>>>>> On Tue, Apr 11, 2017 at 12:10:02PM +0200, Maxime Coquelin wrote:
>>> [...]
>>>
>>>>>> +slave is expected to reply with a zero payload, non-zero otherwise.
>>>>> Is this ack mechanism really necessary? If not, not sure it'll be nice
>>>>> to keep vhost-user/vhost-kernel aligned on this behavior. At least
>>>>> that'll simplify vhost-user implementation on QEMU side (iiuc even
>>>>> without introducing new functions for update/invalidate operations).
>>>> I think this is necessary, and it won't complexify the vhost-user
>>>> implementation on QEMU side, since already widely used (see reply-ack
>>>> feature).
>>> Could you provide file/function/link pointer to the "reply-ack"
>>> feature? I failed to find it myself.
>>>
>>>> This reply-ack mechanism is used to obtain a behaviour closer to kernel
>>>> backend. Indeed, when QEMU sends a vhost_msg to the kernel backend, it
>>>> is blocked in the write() while the message is being processed in the
>>>> Kernel. With user backend, QEMU is unblocked from the write() when the
>>>> backend has read the message, before it is being processed.
>>>>
>>> I see. Then I agree with you that we may need a synchronized way to do
>>> it. One thing I think of is IOMMU page invalidation - it should be a
>>> sync operation to make sure that all the related caches were destroyed
>>> when the invalidation command returns in QEMU vIOMMU emulation path.
>>>
>> Looks not, if I understand correctly, e.g for Intel IOMMU, when QI is
>> enabled, this could be done asynchronously by not waiting for the completion
>> through wait descriptor. Vhost-kernel always implement the invalidation as a
>> synchronous one for simplicity, but looks like this is not needed.
> IMHO, the point is guest cannot reuse that IOVA only if it sends a
> invalidation wait descriptor. If without wait descriptor, the guest
> should never release any IOVA range, if so, that'll be dangerous,
> because the cache may still be dirty on that range on specific device.
>
> And since guest will for sure use wait descriptor (as long as it wants
> to reuse iova addresses), then we should possibly finally need a way
> to synchronously invalidate IOTLB, including to vhost-user backends.

Yes, what I mean is technically we can implement this only for wait 
descriptor.

Thanks

      reply	other threads:[~2017-04-13  7:12 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-11 10:10 [Qemu-devel] [RFC 0/2] vhost-user: Specify device IOTLB support Maxime Coquelin
2017-04-11 10:10 ` [Qemu-devel] [RFC 1/2] spec/vhost-user: Introduce secondary channel for slave initiated requests Maxime Coquelin
2017-04-11 13:06   ` Marc-André Lureau
2017-04-11 13:53     ` Maxime Coquelin
2017-04-14  9:03       ` Marc-André Lureau
2017-04-24  8:05         ` [Qemu-devel] [virtio-comment] " Wei Wang
2017-04-25 11:55           ` Maxime Coquelin
2017-04-26 11:29             ` Wei Wang
2017-04-11 10:10 ` [Qemu-devel] [RFC 2/2] spec/vhost-user spec: Add IOMMU support Maxime Coquelin
2017-04-11 13:20   ` Peter Xu
2017-04-11 15:16     ` Maxime Coquelin
2017-04-12  7:17       ` Peter Xu
2017-04-12  7:24         ` Maxime Coquelin
2017-04-12  7:49           ` Peter Xu
2017-04-12  9:00           ` Jason Wang
2017-04-12  8:54         ` Jason Wang
2017-04-12  9:26           ` Peter Xu
2017-04-13  7:12             ` Jason Wang [this message]

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=57a21a07-bdd1-fc50-e8ae-c84789950bd8@redhat.com \
    --to=jasowang@redhat.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mst@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=virtio-comment@lists.oasis-open.org \
    --cc=vkaplans@redhat.com \
    --cc=wexu@redhat.com \
    --cc=yuanhan.liu@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.