[(v20.08),0/9] vhost: improve Vhost/vDPA device init
mbox series

Message ID 20200514080218.1435344-1-maxime.coquelin@redhat.com
Headers show
  • vhost: improve Vhost/vDPA device init
Related show


Maxime Coquelin May 14, 2020, 8:02 a.m. UTC
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

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.

protocol feature requires frontend support.
For Qemu, it has been posted for reviews and
can be found here:

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(-)