From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kavanagh, Mark B" Subject: Re: [PATCH v3 01/19] Revert "vhost: workaround MQ fails to startup" Date: Wed, 1 Nov 2017 17:11:16 +0000 Message-ID: References: <20171005083627.27828-1-maxime.coquelin@redhat.com> <20171005083627.27828-2-maxime.coquelin@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "mst@redhat.com" , "jfreiman@redhat.com" , "vkaplans@redhat.com" , "jasowang@redhat.com" , "Mcnamara, John" , "Loftus, Ciara" , "Stokes, Ian" To: Maxime Coquelin , "dev@dpdk.org" , "Horton, Remy" , "Bie, Tiwei" , "yliu@fridaylinux.org" Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 3B8DF1B2E6 for ; Wed, 1 Nov 2017 18:11:22 +0100 (CET) In-Reply-To: <20171005083627.27828-2-maxime.coquelin@redhat.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 Maxime, First off, apologies for the lateness of this reply - I realize that this p= atch has already been upstreamed. Unfortunately, during OvS-DPDK regression testing for DPDK v17.11-rc2 just = today, a regression involving vHost multiq was detected, and pinpointed to = this patch. Version info for the components involved during the aforementioned testing = is as follows: DPDK: v17.11-rc2 OvS: af2e40c ("sparse: eliminate "duplicate initialization") + DPDK v17.11 = upgrade patch QEMU: v2.7.0 The regression may be reproduced as follows: - Set up OvS-DPDK as normal, and add one vHostUser client port: $OVS_DIR/utilities/ovs-vsctl add-port br0 vhost-user0 -- set Interface vho= st-user0 type=3Ddpdkvhostuserclient =20 - Start QEMU, specifying 2 ports for the guest interface" $QEMU_DIR/x86_64-softmmu/qemu-system-x86_64 \ -cpu host -enable-kvm -m 4096M \ -object memory-backend-file,id=3Dmem,size=3D4096M,mem-path=3D/dev/hugep= ages,share=3Don \ -numa node,memdev=3Dmem -mem-prealloc \ -drive file=3D$VM_IMAGE \ -chardev socket,id=3Dchar0,path=3D/tmp/sock0,server \ -netdev type=3Dvhost-user,id=3Dmynet1,chardev=3Dchar0,vhostforce,queues= =3D2 \ -device virtio-net-pci,mac=3D00:00:00:00:00:01,netdev=3Dmynet1,mrg_rxbu= f=3Doff,mq=3Don,vectors=3D6 \ -nographic" =20 - The guest subsequently starts as normal, but then hangs completely, rende= ring it completely unusable. The last lines of ovs-vswitchd.log read as follows: |00051|dpdk|INFO|VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE |00052|dpdk|INFO|VHOST_CONFIG: set queue enable: 1 to qp idx: 1 |00053|dpdk|INFO|VHOST_CONFIG: read message VHOST_USER_SET_FEATURES Moving from QEMU v2.7.0 to v2.10.0 resolves the issue. However, herein lies= the issue: QEMU v2.10.0 was only released in August of this year; anecdota= lly, we know that many OvS-DPDK customers use older versions of QEMU (typic= ally, v2.7.0), and are likely un[able|willing] to move. With this patch, a = hard dependency on QEMU v2.10 is created for users who want to use the vHU = multiq feature in DPDK v17.11 (and subsequently, the upcoming OvS v2.9.0), = which IMO will likely be unacceptable for many. One potential solution to this problem is to introduce a compile-time optio= n that would allow the user to [dis|en]able the VHOST_USER_PROTOCOL_F_REPLY= _ACK feature - is that something that would be acceptable to you Maxime? Thanks in advance, Mark=20 >From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Maxime Coquelin >Sent: Thursday, October 5, 2017 9:36 AM >To: dev@dpdk.org; Horton, Remy ; Bie, Tiwei >; yliu@fridaylinux.org >Cc: mst@redhat.com; jfreiman@redhat.com; vkaplans@redhat.com; >jasowang@redhat.com; Maxime Coquelin >Subject: [dpdk-dev] [PATCH v3 01/19] Revert "vhost: workaround MQ fails to >startup" > >This reverts commit 04d81227960b5c1cf2f11f492100979ead20c526. > >As agreed when this workaround was introduced, it can be reverted >as Qemu v2.10 that fixes the issue is now out. > >The reply-ack feature is required for vhost-user IOMMU support. > >Signed-off-by: Maxime Coquelin >--- > lib/librte_vhost/vhost_user.h | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > >diff --git a/lib/librte_vhost/vhost_user.h b/lib/librte_vhost/vhost_user.h >index 35ebd7190..2ba22dbb0 100644 >--- a/lib/librte_vhost/vhost_user.h >+++ b/lib/librte_vhost/vhost_user.h >@@ -49,14 +49,10 @@ > #define VHOST_USER_PROTOCOL_F_REPLY_ACK 3 > #define VHOST_USER_PROTOCOL_F_NET_MTU 4 > >-/* >- * disable REPLY_ACK feature to workaround the buggy QEMU implementation. >- * Proved buggy QEMU includes v2.7 - v2.9. >- */ > #define VHOST_USER_PROTOCOL_FEATURES ((1ULL << VHOST_USER_PROTOCOL_F_MQ) = | \ > (1ULL << VHOST_USER_PROTOCOL_F_LOG_SHMFD) |\ > (1ULL << VHOST_USER_PROTOCOL_F_RARP) | \ >- (0ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK) | \ >+ (1ULL << VHOST_USER_PROTOCOL_F_REPLY_ACK) | \ > (1ULL << VHOST_USER_PROTOCOL_F_NET_MTU)) > > typedef enum VhostUserRequest { >-- >2.13.6