[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [virtio-dev] virtio-snd spec question
Hello Roman, On 02.02.2022 00:57, 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 <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.
Yes, this is the expected behavior of the device and you are doing everything right. The virtio specification describes kind of single-producer single- consumer lockless queue way to work with virtqueues. And if both the device and the driver (in this case, the Linux kernel) follow the specification, then you don't have to worry about a possible race condition. -- Anton Yakovlev Senior Software Engineer OpenSynergy GmbH Rotherstr. 20, 10245 Berlin
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]