uVirt: how to pass raw disks or pcidevices?

This syntax is correct for making a raw block device available to the VM.
Is it possible something is holding an open file handle to /dev/sda? (like LVM).
That would prevent qemu from opening it. The system log (e.g logread -l 200) might show the error QEMU is encountering.

That looks very weird. What does your /proc/meminfo look like before you start the VM?

Do you have enough hugepages (HugePages_Free * 2MiB) for the VM? VFIO can act funny when the VM doesn’t have hugepages behind it.

I have noted that SATA controllers are known to have stability issues under passthrough but that should not prevent you booting a VM with the SATA controller passed through to it.