Jason, Correct me if I'm wrong. Based on this series, is your proposal to move the touched functions in vhost.c [1] to vhost_ops, so they will become backend-dependent operations, and then develop shadow vq backend to intercept them?
Other code would also move to that new backend, like the setup/teardown. [1] vhost_virtqueue_mask and vhost_dev_disable_notifiers