From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Coquelin Subject: Re: [PATCH] vhost: fix MQ fails to startup Date: Thu, 27 Apr 2017 09:56:47 +0200 Message-ID: <57212715-6192-dba2-418a-2418a5d14953@redhat.com> References: <1493274893-40764-1-git-send-email-zhiyong.yang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: yuanhan.liu@linux.intel.com, ciara.loftus@intel.com, =?UTF-8?Q?Marc-Andr=c3=a9_Lureau?= To: Zhiyong Yang , dev@dpdk.org Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id BD4F4CFA0 for ; Thu, 27 Apr 2017 09:56:51 +0200 (CEST) In-Reply-To: <1493274893-40764-1-git-send-email-zhiyong.yang@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Zhiyong, +Marc-André On 04/27/2017 08:34 AM, Zhiyong Yang wrote: > vhost since dpdk17.02 + qemu2.7 and above will cause failures of > new connection when negotiating to set MQ. (one queue pair works > well).Because there exist some bugs in qemu code when introducing > VHOST_USER_PROTOCOL_F_REPLY_ACK to qemu. when dealing with the vhost > message VHOST_USER_SET_MEM_TABLE for the second time, qemu indeed > doesn't send the messge (The message needs to be sent only once)but > still will be waiting for dpdk's reply ack, then, qemu is always > freezing. DPDK code works in the right way. I'm looking at Qemu's vhost_user_set_mem_table() function, but fail to see how it could wait for the reply-ack if it didn't send the VHOST_USER_SET_MEM_TABLE request before. > But the feature > VHOST_USER_PROTOCOL_F_REPLY_ACK has to be disabled by default at the > dpdk side in order to avoid the feature support of DPDK + qemu at > the same time. if doing like that, MQ can works well. Once Qemu bugs > have been fixed and upstreamed, we can enable it. The problem is for DPDK to detect whether bug is fixed in Qemu. Maybe only way would be to have a new protocol feature flag, which is not really its role. > Fixes: 73c8f9f69c6c("vhost: introduce reply ack feature") > > Reported-by: Loftus, Ciara > Signed-off-by: Zhiyong Yang > --- > lib/librte_vhost/vhost_user.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/librte_vhost/vhost_user.h b/lib/librte_vhost/vhost_user.h > index 2ba22db..a3d2900 100644 > --- a/lib/librte_vhost/vhost_user.h > +++ b/lib/librte_vhost/vhost_user.h > @@ -52,7 +52,7 @@ > #define VHOST_USER_PROTOCOL_FEATURES ((1ULL << VHOST_USER_PROTOCOL_F_MQ) | \ > (1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD) |\ > (1ULL << VHOST_USER_PROTOCOL_F_RARP) | \ > - (1ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK) | \ > + (0ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK) | \ > (1ULL << VHOST_USER_PROTOCOL_F_NET_MTU)) > > typedef enum VhostUserRequest { > Cheers, Maxime