vhost-user 分为服务端和客户端,以下时序为libvirtd和vpp进行协商,协商过程中不管libvirtd作为vhost-user的服务端或者客户端,都由libvirtd主动使用Unix Socket套接字发起协商
vhost-user协商时序:
vm libvirtd --------------------------> vpp
VHOST_USER_GET_FEATURES
返回FEATURES: 5844926464
---------------------
VHOST_USER_GET_PROTOCOL_FEATURES
返回PROTOCOL_FEATURES: 3
---------------------
VHOST_USER_SET_PROTOCOL_FEATURES
设置PROTOCOL_FEATURES: 3
---------------------
VHOST_USER_GET_QUEUE_NUM
返回QUEUE_NUM: 16
---------------------
VHOST_USER_SET_OWNER
---------------------
VHOST_USER_GET_FEATURES
返回FEATURES: 5844926464
---------------------
VHOST_USER_SET_VRING_CALL
设置vring 0 的callfd回调: vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_CALL
设置vring 1 的callfd回调: vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_ENABLE
设置vring 0 的enabled为1
---------------------
VHOST_USER_SET_VRING_ENABLE
设置vring 1 的enabled为1
---------------------
VHOST_USER_SET_VRING_ENABLE
设置vring 0 的enabled为1
---------------------
VHOST_USER_SET_VRING_ENABLE
设置vring 1 的enabled为1
---------------------
VHOST_USER_SET_FEATURES
设置FEATURES: 5639274496
---------------------
VHOST_USER_SET_MEM_TABLE
根据memory.regions设置vui->region_mmap_addr
---------------------
VHOST_USER_SET_VRING_NUM
设置vring 0 的qsz
---------------------
VHOST_USER_SET_VRING_BASE
设置vring 0 的last_avail_idx为0
---------------------
VHOST_USER_SET_VRING_ADDR
设置vring 0 的desc、used、avail结构体,last_used_idx、last_avail_idx、used->idx为0
---------------------
VHOST_USER_SET_VRING_KICK
设置vring 0 的kick回调函数为 vhost_user_kickfd_read_ready
---------------------
VHOST_USER_SET_VRING_CALL
设置vring 0 的callfd回调:vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_NUM
设置vring 1 的qsz
---------------------
VHOST_USER_SET_VRING_BASE
设置vring 1 的last_avail_idx
---------------------
VHOST_USER_SET_VRING_ADDR
设置vring 1 的desc、used、avail结构体,last_used_idx、last_avail_idx、used->idx为0
---------------------
VHOST_USER_SET_VRING_KICK
设置vring 1 的kick回调函数为 vhost_user_kickfd_read_ready
---------------------
VHOST_USER_SET_VRING_CALL
设置vring 1 的callfd回调函数为 vhost_user_callfd_read_ready
---------------------
VHOST_USER_SET_VRING_ENABLE
设置vring 0 的enabled为1
---------------------
VHOST_USER_SET_VRING_ENABLE
设置vring 1 的enabled为1