OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-dev message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio-dev] virtio-snd spec question


On Wed, Feb 02, 2022 at 10:43:38AM -0800, Roman Kiryanov wrote:
> Sure. This is how I expect the device side ctl listening loop should look like:
> 
> while (...) {
>     request = virtqueue_pop(ctl_vq, ...);  //1
>         response = virtqueue_pop(ctl_vq, ...);  //2
>         virtqueue_push(ctl_vq, response, response_size):  //3
>     virtqueue_push(ctl_vq, request, 0):  //4
> }
> 
> My understanding is that line 1 could read output from line 3 if the kernel is
> not fast enough fetching the response.

Is this code from qemu then? In that case I don't see how. virtqueue_pop gets
an available buffer. virtqueue_push adds a used buffer, not an available
one. I think it's just the API that's confusing.

> On Tue, Feb 1, 2022 at 11:44 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> 
>     On Tue, Feb 01, 2022 at 03:57:10PM -0800, Roman Kiryanov wrote:
>     > Hello,
>     >
>     > I work in Android Studio Emulator and I am currently implementing a
>     virtio-snd
>     > device. We found a spec draft here:
>     >
>     > https://github.com/oasis-tcs/virtio-spec/commit/
>     > e73c8cdf3e822fd83c26c6de964a947670f93cc3#
>     > diff-73045e70aeaf45f93087610437b705e2d320c82a9d29b4027721f5f5f3918dc5
>     >
>     > It mentions four virtqueues: ctl, event, rx and tx. It is not very clear
>     where
>     > a virtio-snd device should put responses to the ctl requests from the
>     linux
>     > kernel driver. There is a kernel driver implementation and we have a
>     > virtio-snd device implemented in another emulator, it uses the same
>     virtqueue
>     > (ctl) to put ctl responses and the current kernel driver seems happy with
>     this.
>     >
>     > Do you know if this is expected behavior? I am far from an expert here,
>     but I
>     > believe the device and the kernel will race here by reading from the same
>     > virtqueue: the device could read VirtQueueElement produced by itself
>     before the
>     > kernel if the kernel is not fast enough.
>     >
>     > Thank you.
>     >
>     > Regards,
>     > Roman.
> 
>     Could you explain a bit more? which function in the kernel driver are
>     you referring to?
> 
> 
> 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]