From patchwork Sat Nov 10 15:13:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 10677239 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 031431709 for ; Sat, 10 Nov 2018 15:13:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E776D2CBD0 for ; Sat, 10 Nov 2018 15:13:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DBBDC2CBFF; Sat, 10 Nov 2018 15:13:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 49EA02CBD0 for ; Sat, 10 Nov 2018 15:13:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726283AbeKKA6n (ORCPT ); Sat, 10 Nov 2018 19:58:43 -0500 Received: from mail-pl1-f193.google.com ([209.85.214.193]:40681 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726188AbeKKA6n (ORCPT ); Sat, 10 Nov 2018 19:58:43 -0500 Received: by mail-pl1-f193.google.com with SMTP id q19-v6so2262195pll.7 for ; Sat, 10 Nov 2018 07:13:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/M7Cou6Kxsk4NxelxmlGwh11KK6xtX6xUj9PPr1unlg=; b=1R72biawXh+cI47jd5Fc7bMl795DGgrsuz1FStUSs7UccbgTNezItLbhBsX4QBVmQV /walZpWTi3UXF5PuvU9kDGdeFpVTzHJd/bQezxhRCqG/zqa/U17GfBRn3H49QFfK8nys aJ5KCcQk71RZRk+09g6ANy4lbJELD4qRVMJMJR4QrV1ymPmnyHal7J2bXEFOI3rlzgoH Btpy++w6/kynlSa6fgNrpxmWZaQrZa/8Mf9AgY3NFwLiUy0uLXTDMNckAkBjI2ol7Ien J14urNPbdnciMv8bM6ql+qiIyEN+BL306rYsf90Kt62Ok7/I/rTtT3on7D4twUvglfm/ Ptow== 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=/M7Cou6Kxsk4NxelxmlGwh11KK6xtX6xUj9PPr1unlg=; b=lKj4Dn/M2i8kXBg8M4E/qNX65e1j1QNThLKxZF/62vwR23k2WKAPlh4hDBigg5qlfQ cJZ4W2Oth3+ikgr9DLjin0LkXF/atJtez9zumG+ccJg1oRMzZirnjGTdko5M/endwzRA ZchgWuf68mZr6MTtVLeg4PIv2K+kyt59gu5yd7TpYBbJGpa7FRebD7bEUHAmWpEgbHFZ vh1gUcDBYxdNBesg/GMMzVLEzoE/JEFUgD6P8sL6XTQEhXH9frwynPWbJ9J2pZrPtStA XkCTXqZTUlUPlrj7NSUsHHA2i4+U5MrlfA+6dUKTM7RC0NyN7aMbtkgiztVuTx3CGvxe rcBA== X-Gm-Message-State: AGRZ1gILBAcTsYiyHSbkb/55hg3xs6M9fxeXlgRwp1kkxfMohAGFHpm/ JnN8CWomOSpe31yqA/zlflyGel/7cZc= X-Google-Smtp-Source: AJdET5diDjWXooXGz9/nUD8lMMofU9TMtf5ewi0kVYkA6TM/pp5n+yfRUlmfU3ekWiudLdOQmueC7w== X-Received: by 2002:a17:902:7c87:: with SMTP id y7-v6mr13199390pll.232.1541862803667; Sat, 10 Nov 2018 07:13:23 -0800 (PST) Received: from x1.localdomain (66.29.188.166.static.utbb.net. [66.29.188.166]) by smtp.gmail.com with ESMTPSA id d68-v6sm11178615pfa.80.2018.11.10.07.13.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 10 Nov 2018 07:13:22 -0800 (PST) From: Jens Axboe To: linux-block@vger.kernel.org Cc: Jens Axboe , Keith Busch , linux-nvme@lists.infradead.org Subject: [PATCH 1/6] nvme: don't disable local ints for polled queue Date: Sat, 10 Nov 2018 08:13:12 -0700 Message-Id: <20181110151317.3813-2-axboe@kernel.dk> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181110151317.3813-1-axboe@kernel.dk> References: <20181110151317.3813-1-axboe@kernel.dk> Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP A polled queued doesn't trigger interrupts, so it's always safe to grab the queue lock without disabling interrupts. Cc: Keith Busch Cc: linux-nvme@lists.infradead.org Signed-off-by: Jens Axboe --- drivers/nvme/host/pci.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 6aa86dfcb32c..a6e3fbddfadf 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -1061,15 +1061,26 @@ static irqreturn_t nvme_irq_check(int irq, void *data) static int __nvme_poll(struct nvme_queue *nvmeq, unsigned int tag) { + unsigned long flags = 0; /* gcc 7.x fail */ u16 start, end; - bool found; + bool found, has_irq; if (!nvme_cqe_pending(nvmeq)) return 0; - spin_lock_irq(&nvmeq->cq_lock); + /* + * Polled queue doesn't have an IRQ, no need to disable ints + */ + has_irq = !nvmeq->polled; + if (has_irq) + local_irq_save(flags); + + spin_lock(&nvmeq->cq_lock); found = nvme_process_cq(nvmeq, &start, &end, tag); - spin_unlock_irq(&nvmeq->cq_lock); + spin_unlock(&nvmeq->cq_lock); + + if (has_irq) + local_irq_restore(flags); nvme_complete_cqes(nvmeq, start, end); return found;