Guennadi Liakhovetski
2019-Oct-15 09:23 UTC
question: asynchronous notification from vhost
Hi, I'm developing a virtualised audio / DSP virtio and vhost driver pair and I'm currently somewhat stuck trying to figure out how to asynchronously notify the guest from the vhost driver. I'm using the vhost_add_used_and_signal() function to return data back to the guest in the guest context, when the guest initiated an operation, that's working well. But how do I "kick" the guest from an asynchronous, e.g. from an interrupt thread context? Thanks Guennadi
Guennadi Liakhovetski
2019-Oct-15 14:42 UTC
0-copy (was Re: question: asynchronous notification from vhost)
On Tue, Oct 15, 2019 at 11:23:13AM +0200, Guennadi Liakhovetski wrote:> Hi, > > I'm developing a virtualised audio / DSP virtio and vhost driver pair > and I'm currently somewhat stuck trying to figure out how to > asynchronously notify the guest from the vhost driver. I'm using the > vhost_add_used_and_signal() function to return data back to the guest > in the guest context, when the guest initiated an operation, that's > working well. But how do I "kick" the guest from an asynchronous, e.g. > from an interrupt thread context?I think I've solved that by using a vhost work queue. That brings me one step further, possibly, to the last larger problem to solve: the actual data transmission. My preference would be to use zero-copy for that, but so far I only see one example of zero-copy in drivers/vhost - in net.c and only in TX direction. As far as I understand that isn't a principal limitation of the vhost / virtio API, rather it's related to certain networking specifics. Am I right? Is it supposed to work in both firections, or are there problems? Thanks Guennadi