On Wed, Apr 11, 2018 at 04:38:53PM +0800, Tiwei Bie wrote: > On Wed, Apr 11, 2018 at 04:01:19PM +0800, Jason Wang wrote: > > On 2018年04月11日 15:20, Tiwei Bie wrote: > > > This patch introduces VHOST_USER_PROTOCOL_F_NEED_ALL_IOTLB > > > feature for vhost-user. By default, vhost-user backend needs > > > to query the IOTLBs from QEMU after meeting unknown IOVAs. > > > With this protocol feature negotiated, QEMU will provide all > > > the IOTLBs to vhost-user backend without waiting for the > > > queries from backend. This is helpful when using a hardware > > > accelerator which is not able to handle unknown IOVAs at the > > > vhost-user backend. > > > > > > Signed-off-by: Tiwei Bie<tiwei....@intel.com> > > > --- > > > The idea of this patch is to let QEMU push all the IOTLBs > > > to vhost-user backend without waiting for the queries from > > > the backend. Because hardware accelerator at the vhost-user > > > backend may not be able to handle unknown IOVAs. > > > > > > This is just a RFC for now. It seems that, it doesn't work > > > as expected when guest is using kernel driver (To handle > > > this case, it seems that some RAM regions' events also need > > > to be listened). Any comments would be appreciated! Thanks! > > > > Interesting, a quick question is why this is needed? Can we just use exist > > IOTLB update message? > > Yeah, we are still using the existing IOTLB update messages > to send the IOTLB messages to backend. The only difference > is that, QEMU won't wait for the queries before sending the > IOTLB update messages.
So I have a concern with that, in that without any flow control the socket buffer used by vhost-user might become full. We don't currently expect that. Again, my understanding is that the biggest benefit from use of a hardware accelerator is when notifications can be passed-through to the guest. And since that involves VFIO, and since VFIO already needs to support all kinds of IOMMUs, one wonders whether one can just pass that directly to the VFIO instead of shipping it to vhost-user. > > > > It looks to me at least kernel does not need this. > > Something similar in kernel vhost is that, for kernel vhost, > QEMU needs to push the IOTLBs of some ring addrs to kernel > vhost backend without waiting for the queries. > > Best regards, > Tiwei Bie That's really to work around a bug in kernel, we keep this around since we want to support old kernels. > > > > Thanks