Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3740713ybi; Fri, 19 Jul 2019 08:14:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqzCtMo/W090d1VQSnF9P88A0FZZyCGpaLxnZ1oinU/2iFPJ5Eoi/WrgHUB99H77UtXOSAHm X-Received: by 2002:a63:d301:: with SMTP id b1mr47317919pgg.379.1563549291653; Fri, 19 Jul 2019 08:14:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563549291; cv=none; d=google.com; s=arc-20160816; b=wYcPN05tYSim+WJ+aAYlpDv/g4w7HJaOrkuR2u56c5OsiiAp2cW4A5G8+SMZNmQxH/ y3tqktopA2E9eHVFt4N2P1QJI3yXoPp87pyhIFaY+lGmT/hI493chco60YCoUre41rEt MClOuCJHvU5PcO4Cm6bBaC/dWuu/R6bhU6gG6XeQaS8ndU7vO+juqQPFEoxDQo4ndhM6 oykS2YK3ZNKl4eC7tKLMlD9SUp3GniWZMAm6FzcuQaKLKlUT8CGoxd5tXJIEex0QSbEm JZG6pd2hjcpDn0ichlncF5+jh1ffMi0d3UBPGuslMw9JgnMZ0VV23kvpwv7Du/WlUmFF waoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=mGGBQjuamiUtrVxadzRH0T3QChYv88JTRGFWYKUNnp4=; b=JboojLoJ3ZwluAeZpybf+0Nhe35s45slbHFKcntP82o2XNeQKiouztc6Nn1mPChkLX L1YIMJRDWD5hT1zClOgImVi0f/3pa0ssrFl+eLxGr8MR1SigCN1bdREdr8y+TKKKNnws /1jQm/ztmQrJdrZYsPhr7InarFdqa4NdpXDxWzWRde5tL9S28kve1ZAz6GDVLZVi9e+j Mzob+TzVZnLbnGgjdnpMKghG7psGC5U+rWcDMXN6VJC0v32hZMFWHZ9tOJoLDgKMeLeu caOEPvEQ7sOdZc/1JyfNJeL1LLZ+UKTu0yOHAfZxP3wQHetegihzeHqk677kVxup4xmO L4TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance-com.20150623.gappssmtp.com header.s=20150623 header.b=FBEmjb0q; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q19si855229pgg.521.2019.07.19.08.14.36; Fri, 19 Jul 2019 08:14:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance-com.20150623.gappssmtp.com header.s=20150623 header.b=FBEmjb0q; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729037AbfGSNbt (ORCPT + 99 others); Fri, 19 Jul 2019 09:31:49 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:36871 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728432AbfGSNbr (ORCPT ); Fri, 19 Jul 2019 09:31:47 -0400 Received: by mail-pl1-f196.google.com with SMTP id b3so15651411plr.4 for ; Fri, 19 Jul 2019 06:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mGGBQjuamiUtrVxadzRH0T3QChYv88JTRGFWYKUNnp4=; b=FBEmjb0qrVWLovbPmr7DSDJHa+ihZqziFBLKc/xL8I6kdno/oQgbE2eWdUGo1V4KIn keVyNUINecuyEzsF4Pz97IJAyu1G9NhmFr6XVQsfEgff2zWdlqlxMfY9CICQOuvud5X2 BG2PDCVMRRwo3Ok7Atlz+hLmcIFNmVATqEBo2B9ffRxDN/v8U3HG6L1w5FsTCbyUKhso UzucxMWIBB/CfuBZYThIMoXLA8Qc0KWuAZtXcwoZ/MG3BfFPAlxyjntA3iTqXS4j96SM dOQgPr2eEl6FwRMRXcMFol9yqqITJPKljakK4E1ezN5mP/WIi4XCuH0G2eSx0i1yULa3 eF+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mGGBQjuamiUtrVxadzRH0T3QChYv88JTRGFWYKUNnp4=; b=uT0+tYYfGPCbxjhw1BoxF6eGw+PPX1P3X0b4oGkD/FcYNK9QdbmI9Ck4w+a3vFNLz3 zEZujfOnEYs5hn531HuE89u7Bd2SF1QDxvLx0NbAzMr2g/jkhv5ZBex/4jFXiPaLdBzd 6XSrpp10jRsNpDWF0tD/cNkSieh0DUdxZ7herQi6cX/fi+JBCrxEchy1ElSLgrZXsebq P/XZ1POeTHkFrNVvK9q+qf2ABNj/5pvI7Z0KLWkwNhwVCTKUVJXOhHbLlfo9FB3z56DO ywEWXL7nHvKlai2sBzowCDcag9xRPSkwwEvONoYdvjBbL2ifZV1o17El2iO7ij8K+bH/ sfHA== X-Gm-Message-State: APjAAAUkYiOrJ6x0MxMU7/D4q9FL/lAGCZTwObZexDdBERiabxMrw/0k KXl/+heoDNx2dq5piI7ns+95LhyYp3sUdA== X-Received: by 2002:a17:902:be12:: with SMTP id r18mr54212293pls.341.1563543106635; Fri, 19 Jul 2019 06:31:46 -0700 (PDT) Received: from bogon.bytedance.net ([61.120.150.76]) by smtp.gmail.com with ESMTPSA id x9sm37875954pfn.177.2019.07.19.06.31.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 19 Jul 2019 06:31:46 -0700 (PDT) From: Fei Li To: linux-kernel@vger.kernel.org Cc: Jason Wang , Pawel Moll , "Michael S . Tsirkin" , Suzuki K Poulose , Fam Zheng Subject: [PATCH 1/2] virtio-mmio: Process vrings more proactively Date: Fri, 19 Jul 2019 21:31:34 +0800 Message-Id: <20190719133135.32418-2-lifei.shirley@bytedance.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) In-Reply-To: <20190719133135.32418-1-lifei.shirley@bytedance.com> References: <20190719133135.32418-1-lifei.shirley@bytedance.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Fam Zheng This allows the backend to _not_ trap mmio read of the status register after injecting IRQ in the data path, which can improve the performance significantly by avoiding a vmexit for each interrupt. More importantly it also makes it possible for Firecracker to hook up virtio-mmio with vhost-net, in which case there isn't a way to implement proper status register handling. For a complete backend that does set either INT_CONFIG bit or INT_VRING bit upon generating irq, what happens hasn't changed. Signed-off-by: Fam Zheng --- drivers/virtio/virtio_mmio.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c index e09edb5c5e06..9b42502b2204 100644 --- a/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c @@ -295,9 +295,7 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) { virtio_config_changed(&vm_dev->vdev); ret = IRQ_HANDLED; - } - - if (likely(status & VIRTIO_MMIO_INT_VRING)) { + } else { spin_lock_irqsave(&vm_dev->lock, flags); list_for_each_entry(info, &vm_dev->virtqueues, node) ret |= vring_interrupt(irq, info->vq); -- 2.11.0