[Top][All Lists]

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

Re: Fwd: VirtioSound device emulation implementation

From: Alex Bennée
Subject: Re: Fwd: VirtioSound device emulation implementation
Date: Thu, 28 Jan 2021 10:42:21 +0000
User-agent: mu4e 1.5.7; emacs 28.0.50

Shreyansh Chouhan <chouhan.shreyansh2702@gmail.com> writes:

> Thanks a lot Alex!
>> All QEMU devices have two parts, a frontend (which the guest sees) and a
>> backend (which is how the data gets to somewhere in the host). Some of
>> the command line options in QEMU elide the details for convenience (-nic
>> and -drive are examples). The -netdev device is all about configuring
>> the backend of the network part for a paired -device front end. There is
>> a similar setup for audio (-audiodev) although I'll defer to Gerd's
>> expertise on how the two interact.
> This helped me understand a bit more about how the devices work. In the
> source
> code, I found the `virtio-net-pci.c` and `virtio-net.c` files, I think the
> pci device is what is visible to the guest.
> So `virtio-net-pci.c` should be the front end?

No - they are both front-ends. In VirtIO you have two transports. The
first is virtio-mmio which is a simple set of memory mapped IO
registers. There is no discovery (well there is some but the guest needs
to find where in memory the mmio bus is via some method like hardcoded
address or DTB).

The second is virtio-pci. Here the virtio devices are encapsulated in a
PCI bus so you get the benefits of discovery and bus enumeration.

> For the realize function, I saw that the `virtio_net_device_realize`
> function initializes
> the `net_conf` for the device. So I am guessing that the
> `virtio_snd_device_realize` function
> should initialize the number of jacks and streams a device has, along with
> the configuration
> for all these jacks and streams?

No those are all front-end configuration knobs. 

> The thing is I do not understand `net` devices all that well so I get a bit
> confused with
> what is specific to a net device and what should I actually be worried
> about :)
> The device initalization step mentions that the jack and streams should be
> read and
> a query should be made for the config of all jacks and streams. What should
> be the
> default values of these configurations? I think the realize function is
> responsible
> for setting these up.


Alex Bennée

reply via email to

[Prev in Thread] Current Thread [Next in Thread]