From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 3E0C01B315 for ; Fri, 13 Oct 2017 13:32:12 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 71C7361467; Fri, 13 Oct 2017 11:32:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 71C7361467 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jfreimann@redhat.com Received: from localhost (dhcp-192-218.str.redhat.com [10.33.192.218]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A27866060D; Fri, 13 Oct 2017 11:32:06 +0000 (UTC) Date: Fri, 13 Oct 2017 13:32:04 +0200 From: Jens Freimann To: Maxime Coquelin Cc: yliu@fridaylinux.org, thomas@monjalon.net, dev@dpdk.org Message-ID: <20171013113204.hmmkitx6m5ijhduj@dhcp-192-218.str.redhat.com> References: <20171012153850.21837-1-maxime.coquelin@redhat.com> <20171012153850.21837-2-maxime.coquelin@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20171012153850.21837-2-maxime.coquelin@redhat.com> User-Agent: NeoMutt/20170914 (1.9.0) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 13 Oct 2017 11:32:11 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH 1/2] vhost: fix deadlock on IOTLB miss X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Oct 2017 11:32:12 -0000 On Thu, Oct 12, 2017 at 03:38:49PM +0000, Maxime Coquelin wrote: >An optimization was done to only take the iotlb cache lock >once per packet burst instead of once per IOVA translation. > >With this, IOTLB miss requests are sent to Qemu with the lock >held, which can cause a deadlock if the socket buffer is full, >and if Qemu is waiting for an IOTLB update to be done. > >Holding the lock is not necessary when sending an IOTLB miss >request, as it is not manipulating the IOTLB cache list, which >the lock protects. Let's just release it while sending the >IOTLB miss. > >Signed-off-by: Maxime Coquelin >--- > lib/librte_vhost/vhost.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > Seems to be safe, because in case of an IOTLB miss we only take a different lock. Reviewed-by: Jens Freimann