I had an issue when I configured SR-IOV on Mellanox NIC where libvirt would start before the network was ready.
The fix for this is to enable 2 services
sudo systemctl enable systemd-networkd.service systemd-networkd-wait-online.service
Then edit the libvirt systemd file: /usr/lib/systemd/system/libvirtd.service and add:
Now libvirt will start when the network is ready and when all the virtual functions are ready.