Hi,

> -----Original Message-----
> From: Ye, Xiaolong
> Sent: Monday, September 2, 2019 4:35 PM
> To: Maxime Coquelin <maxime.coque...@redhat.com>
> Cc: Bie, Tiwei <tiwei....@intel.com>; Wang, Zhihong
> <zhihong.w...@intel.com>; amore...@redhat.com; Wang, Xiao W
> <xiao.w.w...@intel.com>; dev@dpdk.org; jfreim...@redhat.com;
> sta...@dpdk.org
> Subject: Re: [PATCH 02/15] vhost: configure vDPA as soon as the device is
> ready
> 
> On 08/29, Maxime Coquelin wrote:
> >There might not have any VHOST_USER_SET_VRING_CALL requests
> >sent once virtio device is ready. When it happens, the vDPA
> >device's dev_conf() callback may never be called.
> >
> >Fixes: 9f9014512822 ("vhost: configure vDPA device after set vring call
> message")
> >Cc: sta...@dpdk.org
> >Cc: xiaolong...@intel.com
> >
> >Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
> >---
> > lib/librte_vhost/vhost_user.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> >diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> >index 0b72648a5..b1ea80c52 100644
> >--- a/lib/librte_vhost/vhost_user.c
> >+++ b/lib/librte_vhost/vhost_user.c
> >@@ -2112,8 +2112,7 @@ vhost_user_msg_handler(int vid, int fd)
> >     did = dev->vdpa_dev_id;
> >     vdpa_dev = rte_vdpa_get_device(did);
> >     if (vdpa_dev && virtio_is_ready(dev) &&
> >-                    !(dev->flags & VIRTIO_DEV_VDPA_CONFIGURED) &&
> >-                    msg.request.master ==
> VHOST_USER_SET_VRING_CALL) {
> >+                    !(dev->flags & VIRTIO_DEV_VDPA_CONFIGURED)) {

In the early beginning of vhost user messages, there seems to be a 
VHOST_USER_SET_VRING_CALL with invalid call fd,
not sure if QEMU has any update on this point.
If the virtio_is_ready() is based on that invalid call fd, then vdpa_dev_conf() 
cannot setup interrupt properly.
I think that's why in our previous implementation, we wait for the real call fd 
and then call dev_conf().

BRs,
Xiao

Reply via email to