Re: RPMSG over VirtIO under KVM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Good day Guennadi,

On Thu, 16 Apr 2020 at 08:06, Guennadi Liakhovetski
<guennadi.liakhovetski@xxxxxxxxxxxxxxx> wrote:
>
> Hi,
>
> It has been proposed to port the VirtIO SOF driver [1], used to
> implement audio support under Linux, running in a KVM guest, to use
> RPMSG to communicate with the SOF vhost driver, running on the Linux
> host. On one hand I see an rpmsg-virtio driver, which should make such
> a port possible, on the other hand I don't see a single VirtIO driver
> in the kernel, using RPMSG for Linux virtualisation.

Above you wrote "rpmsg-virtio" driver, which I take to mean the code
found in file virtio_rpmsg_bus.c [1].  The code in [1] centers around
the communication between an application processor and some form of
remote processor (micro controller or dsp).  The "virtio" part of the
name refers to the underlying infrastructure put in place to
communicate with the remote processor, all coming from the virtio
space.  Here instead of using the virtio mechanic to communicate
between a host and a guest, it is used to communicate with a remote
processor.

I came to the same conclusion a while back - as of today no virtio
drivers are using RPMSG to communicate between host and guest.  I
suppose nobody needed it or implemented their own schemes.

[1].  https://elixir.bootlin.com/linux/v5.7-rc1/source/drivers/rpmsg/virtio_rpmsg_bus.c

>
> Hence my questions: is this a good idea? Is there anything in the
> kernel VirtIO RPMSG implementation, that would make this impossible?

I don't see why it wouldn't be a good idea, nor what would technically
prevent such a thing from happening.  Two things work in your favour:
1) the RPMSG foundation has been tailored to be used over different
kinds of hardware and 2) an existing implementation is already using
virtioqueues.

I suggest to start looking at function rpmsg_register_device(), used
by different RPMSG drivers - the magic is really in the RPMSG
operations (struct rpmsg_device_ops) that are used to abstract the HW
implementation.

Regards,
Mathieu

>
> Thanks
> Guennadi
>
> [1] https://thesofproject.github.io/latest/developer_guides/virtualization/virtualization.html



[Index of Archives]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux