Am I using virtio for my KVM guest?

As you can see you have:

CONFIG_VIRTIO_BALLOON=m

It means it is compiled as a module, hence visible via lsmod. Furthermore, you have:

CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y

It means that they are compiled within the kernel, hence lsmod does not report them.

So your guest has the virtio drivers for:

  • blk: block devices, aka disks;
  • net: network devices;
  • balloon: memory ballooning, the fact that you could have a total maximum memory allocated to all your guest bigger that the physical host memory. This works of course as long as not all guests consume all their respective memory. KVM uses the unused memory of one guest to feed another more demanding guest, aka balloon.
  • pci: I guess PCI passthrough support, though I am not sure. With VirtualBox, ethernet controllers exposed to the guest are using this driver instead of the virtio_net one.
  • console: You can configure a serial console in KVM. This can be accesses by virsh concole domain. A great feature (for Linux guests). You have nearly complete access to the VM even without VNC (thus with minimal bandwidth and C&P available) when the network has crashed, preventing SSH access.
  • ring: don't know what this is

KVM provides paravirtualization drivers for several bits of hardware; this particular one is the memory balloon driver.

In particular, you should see virtio_net when using the virtio network drivers, and virtio_blk when using the block device (disk) driver. And in the latter case, your disk would be /dev/vda instead of /dev/sda.

In your case, the virtio disk and network drivers are compiled into the kernel, rather than as modules, so you would not see them with lsmod.

CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y

Several other less important virtio drivers also exist on your system and are compiled directly into the kernel (such as VIRTIO_PCI, the paravirtualized PCI bus).