From patchwork Fri May 3 20:29:11 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasha Levin X-Patchwork-Id: 2519281 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 9DD7D3FD1A for ; Fri, 3 May 2013 20:30:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934211Ab3ECUaK (ORCPT ); Fri, 3 May 2013 16:30:10 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:47546 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1762729Ab3ECUaI (ORCPT ); Fri, 3 May 2013 16:30:08 -0400 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by aserp1040.oracle.com (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id r43KU0tG002853 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 3 May 2013 20:30:01 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r43KTxCV017785 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Fri, 3 May 2013 20:30:00 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r43KTxIV001315; Fri, 3 May 2013 20:29:59 GMT Received: from lappy.us.oracle.com (/10.159.134.53) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 03 May 2013 13:29:59 -0700 From: Sasha Levin To: penberg@kernel.org, asias@redhat.com Cc: kvm@vger.kernel.org, Sasha Levin Subject: [PATCH 2/8] kvm tools: fix vhost interaction with ctrl vq Date: Fri, 3 May 2013 16:29:11 -0400 Message-Id: <1367612957-6719-2-git-send-email-sasha.levin@oracle.com> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1367612957-6719-1-git-send-email-sasha.levin@oracle.com> References: <1367612957-6719-1-git-send-email-sasha.levin@oracle.com> X-Source-IP: ucsinet21.oracle.com [156.151.31.93] Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org We broke networking using vhost with the introduction of a ctrl vq, make sure that that queue get treated like a special case. Signed-off-by: Sasha Levin --- tools/kvm/virtio/net.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/kvm/virtio/net.c b/tools/kvm/virtio/net.c index 2de9222..bef0039 100644 --- a/tools/kvm/virtio/net.c +++ b/tools/kvm/virtio/net.c @@ -357,6 +357,11 @@ static void set_guest_features(struct kvm *kvm, void *dev, u32 features) ndev->features = features; } +static bool is_ctrl_vq(struct net_dev *ndev, u32 vq) +{ + return vq == (u32)(ndev->queue_pairs * 2); +} + static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 page_size, u32 align, u32 pfn) { @@ -377,10 +382,12 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 page_size, u32 align, mutex_init(&ndev->io_lock[vq]); pthread_cond_init(&ndev->io_cond[vq], NULL); - if (ndev->vhost_fd == 0) { - if (vq == (u32)(ndev->queue_pairs * 2)) - pthread_create(&ndev->io_thread[vq], NULL, virtio_net_ctrl_thread, ndev); - else if (vq & 1) + if (is_ctrl_vq(ndev, vq)) { + pthread_create(&ndev->io_thread[vq], NULL, virtio_net_ctrl_thread, ndev); + + return 0; + } else if (ndev->vhost_fd == 0 ) { + if (vq & 1) pthread_create(&ndev->io_thread[vq], NULL, virtio_net_tx_thread, ndev); else pthread_create(&ndev->io_thread[vq], NULL, virtio_net_rx_thread, ndev); @@ -453,7 +460,7 @@ static void notify_vq_eventfd(struct kvm *kvm, void *dev, u32 vq, u32 efd) }; int r; - if (ndev->vhost_fd == 0) + if (ndev->vhost_fd == 0 || is_ctrl_vq(ndev, vq)) return; r = ioctl(ndev->vhost_fd, VHOST_SET_VRING_KICK, &file);