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? 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? 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.