The goal of this series is to make the Vhost/vDPA device init more robust by adding support to a new protocol feature.
VHOST_USER_SET_STATUS is received by the backend when the driver updates the Virtio device status register. For now this series only deal with the DRIVER_OK bit, which indicates that the driver is done with the device initialization. For example, such information helps the Vhost backend to know when it can call de dev_conf vDPA callback. It avoids doing an hazardous workaround which only work with Qemu and not Virtio-user PMD. Before adding support for this new request, some clean-ups and refactoring are done as preliminary steps to make the code more easily readable. Some vDPA APIs are also made mandatory, and the IFC driver modified to add support for the .set_vring_state() callback. I think this one should be mandatory as if the frontent requests for one queue to be disabled, I think the vDPA device should no more be processing it. Note that the VHOST_USER_PROTOCOL_F_STATUS protocol feature requires frontend support. For Qemu, it has been posted for reviews and can be found here: https://patchwork.ozlabs.org/project/qemu-devel/patch/20200514073332.1434576-1-maxime.coque...@redhat.com/ For Virtio-user PMD, it is being developped and will be posted soon. Maxime Coquelin (9): vhost: fix virtio ready flag check vhost: refactor Virtio ready check vdpa/ifc: add support to vDPA queue enable vhost: make some vDPA callbacks mandatory vhost: check vDPA configuration succeed vhost: add support for virtio status vdpa/ifc: enable status protocol feature vdpa/mlx5: enable status protocol feature vhost: only use vDPA config workaround if needed drivers/vdpa/ifc/base/ifcvf.c | 9 +++ drivers/vdpa/ifc/base/ifcvf.h | 4 ++ drivers/vdpa/ifc/ifcvf_vdpa.c | 26 ++++++++- drivers/vdpa/mlx5/mlx5_vdpa.c | 4 +- lib/librte_vhost/rte_vdpa.h | 14 +++-- lib/librte_vhost/rte_vhost.h | 4 ++ lib/librte_vhost/socket.c | 6 +- lib/librte_vhost/vdpa.c | 10 ++++ lib/librte_vhost/vhost.c | 3 +- lib/librte_vhost/vhost.h | 9 +++ lib/librte_vhost/vhost_user.c | 103 +++++++++++++++++++++++++++------- lib/librte_vhost/vhost_user.h | 6 +- 12 files changed, 162 insertions(+), 36 deletions(-) -- 2.25.4