Hi,
Our company's jmnd vdpa driver, which requires the rte_vhost_host_notifier_ctrl interface,
replicates the problem with the following scenario:
QEMU start vhost-user with modern net and blk, backend use dpdk-vdpa process,
after live migration, dest QEMU deadlock with dpdk-vdpa.
- QEMU sends VHOST_USER_SET_VRING_KICK to dpdk-vdpa net
- QEMU does not need to wait for a response to this message
- QEMU then sends VHOST_USER_SET_MEM_TABLE to dpdk-vdpa blk
- QEMU needs to wait reply in this message
- when dpdk-vdpa recv VHOST_USER_SET_VRING_KICK,
- it will send VHOST_USER_BACKEND_VRING_HOST_NOTIFIER_MSG to QEMU
- dpdk-vdpa needs to wait for a response to this message
- QEMU will deadlock with dpdk-vdpa
I tried to add a patch to the qemu community that uses a new thread to loop backend channel,
But there will be some multi-threaded synchronization issues
I think this is a public issue, and other backend messages take this into account,
so I think this message also needs a flag to fix it.
and jmnd vdpa driver will subsequently be open-sourced to the community.