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:
After=systemd-networkd-wait-online.service
Wants=systemd-networkd-wait-online.service
Now libvirt will start when the network is ready and when all the virtual functions are ready.