When the virtio-net and virtio-scsi drivers have done the probe() primitive they set the DRIVER_OK flag.
If the vhost kernel backend is used, the set_status() primitive in qemu will be triggered with DRIVER_OK status and it will trigger vhost_XXX_start(). How does the net and scsi solutions ensure that the vhost_XXX_start() primitive has finished before sending jobs to through the virtqueues? Because if vhost_XXX_start() has not finished, jobs might get to the qemu dummy virtqueue handles, instead of getting to the vhost server in the host kernel.