From patchwork Fri Aug 21 19:53:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349504 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=GWDss1Ii; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC0H4Zrmz9sTS for ; Sat, 22 Aug 2020 05:54:39 +1000 (AEST) Received: from localhost ([::1]:60476 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D7V-0006JM-8v for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:54:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36222) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D77-0006Bq-9n for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:25401) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D75-0002eb-Nu for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039650; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cjuMfzB7vmmpnq1Y+pCZSaYpOzcdGDKXx0gwxTqDWn4=; b=GWDss1IiXb1qZ/s0EmHrQpChfPLDG/kYWK/m0u9SUFTYbP+PgvZ+OrrayMTROo2DjVvsfS B0dJ1xTahun1GFi7Pjbmk+8zLMz8nox81ccbP6pgkJBHqGOild2zg6ZfS/0thE7IPPPUXs O/7erSdUP6DPKeXDfXJZxYUtDFIFGyc= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-327-tetHgmGcOmK9CengH2ynOA-1; Fri, 21 Aug 2020 15:54:09 -0400 X-MC-Unique: tetHgmGcOmK9CengH2ynOA-1 Received: by mail-wm1-f69.google.com with SMTP id v8so1369288wma.6 for ; Fri, 21 Aug 2020 12:54:08 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=cjuMfzB7vmmpnq1Y+pCZSaYpOzcdGDKXx0gwxTqDWn4=; b=DboJD9a3I7iVkaA2J4XI2GW9njDdBmngq34V+kt2r6Cp+MZ3NwEbnX0I3YQO7E24JF ex0F7YtYxWCO+CkgLL21+lRtlnaezSF0o/tbsjZhqKW4VLj/5KZ5bMZCrwdJGtJAOfA9 g4krqe8D0F4CILHH4OghjDiAQobOhufMIinD4Q1Vrp9c7k8Hd0BhinWK0x9cHLs5gQWC lKiPr6gsZiaW5rPN5NcIvGG/TRAdqOuDf9yc1WZrpECadt/6crcScGnMbuZA83ZXnck4 3uixk8iEUbVD2AWoDevq64N3g/YZiMAYIGijKAcm2KJDFq8KOzOV1st+X95jQ8zkD41l 60zw== X-Gm-Message-State: AOAM531yy7QzY0BobmrQ3qs0p66hQMPr64zXp+yayDub2Rg0FDBPnpsD eZxcrxlJJtjrCqt1pJeJCrW+jmaOXnHy1YkND3+fQLkxcYqmZPqBinH+o7qZ+j8C0XOjVB+z5Jm RsEdKWMn28WpKaEc= X-Received: by 2002:a1c:1904:: with SMTP id 4mr4614419wmz.119.1598039647710; Fri, 21 Aug 2020 12:54:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwzRaArRtMttJmtkCRf690g6PGVLrd2W7qbwxwyd71RyatCuhPQyMtGhydLl9q7KsoAMRhe2Q== X-Received: by 2002:a1c:1904:: with SMTP id 4mr4614397wmz.119.1598039647479; Fri, 21 Aug 2020 12:54:07 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id p14sm7330159wrg.96.2020.08.21.12.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:06 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 01/15] block/nvme: Replace magic value by SCALE_MS definition Date: Fri, 21 Aug 2020 21:53:45 +0200 Message-Id: <20200821195359.1285345-2-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Use self-explicit SCALE_MS definition instead of magic value. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/nvme.c b/block/nvme.c index 374e2689157..2f5e3c2adfa 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -715,7 +715,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, /* Reset device to get a clean state. */ s->regs->cc = cpu_to_le32(le32_to_cpu(s->regs->cc) & 0xFE); /* Wait for CSTS.RDY = 0. */ - deadline = qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + timeout_ms * 1000000ULL; + deadline = qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + timeout_ms * SCALE_MS; while (le32_to_cpu(s->regs->csts) & 0x1) { if (qemu_clock_get_ns(QEMU_CLOCK_REALTIME) > deadline) { error_setg(errp, "Timeout while waiting for device to reset (%" From patchwork Fri Aug 21 19:53:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349505 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=MZe7UayP; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC0b24XKz9sTT for ; Sat, 22 Aug 2020 05:54:55 +1000 (AEST) Received: from localhost ([::1]:60910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D7l-0006Tg-2P for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:54:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7C-0006PL-UJ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:46684) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7B-0002fK-8B for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039656; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=969biaX/G7f1D/6G5QoxlHmmKW8KQsbMUTT5iH7LPeo=; b=MZe7UayP0qNjMGiEb7tb5/oppge9VcgM/UO5zPI0zaL8w5AZ1zMo8/hhIrsDHXkBegyL68 SLAjj/eEIriMQ607usr1vfyVtYBmJY2/vHZ0BXizRcgjg8mpsaV5fWhg24xtPuQBUFjfV0 9343mAlUsCzRuJxIGy5ktE9clYr+oWE= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-474-0MFAZjN0NMSZqWvBztomWA-1; Fri, 21 Aug 2020 15:54:14 -0400 X-MC-Unique: 0MFAZjN0NMSZqWvBztomWA-1 Received: by mail-wm1-f72.google.com with SMTP id k204so1374775wmb.3 for ; Fri, 21 Aug 2020 12:54:14 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=969biaX/G7f1D/6G5QoxlHmmKW8KQsbMUTT5iH7LPeo=; b=UK0AFU0vjSg5gtBaZ+V6cK6ZywkdPCzhs5pDoOxVQ/qpYGednWOokaS0g+d7gMZK9r rg+7ZzrEfSgmoTTfwx/FyXps5h9PnJgZGmzH5nrEo44itfM+J8fBBUmq7F8uPeeuFFQG fgW1w411b80vrbm3Gnmj9QoQqOwF364/OmIIDlVvpBlu4Imd9vxLMevkOMtF9dMm9Gkk bO0yAH1EHIwowoOiUFQgSwQftoBumd0sjsCrpuez7Gl5DjhW6QPEeE3nu1sHDwdXzqPl Ne6+5YffeEaeN9kTPiIOGgYYOclspf47UuuD8l6gVTgdSkfrvN3Tc1m8pm5aZ3nl6t+o 0O2Q== X-Gm-Message-State: AOAM532Nij0ZDr6zkZFzAk+qldOpoadhhwfSgcsHk0WuyfGGlN8anKOf BK/C9qW3xmV5BocVDUs2vc0zVyDjK1wRjUMEPpO/khGVVWNFx5eVLhJjpY9yykuyIsqJm7paHlm WsvA0RNe3KlDvpKM= X-Received: by 2002:a5d:60c2:: with SMTP id x2mr2400675wrt.73.1598039653155; Fri, 21 Aug 2020 12:54:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZMtp1rDhksvpZhU0EoNPybYyltpwgKpxYxPw5/0AcKlG4wRhNKIQcnM0oRFyzHHd/p2Ck1w== X-Received: by 2002:a5d:60c2:: with SMTP id x2mr2400660wrt.73.1598039653005; Fri, 21 Aug 2020 12:54:13 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id x2sm6767121wrg.73.2020.08.21.12.54.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:12 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 02/15] block/nvme: Avoid further processing if trace event not enabled Date: Fri, 21 Aug 2020 21:53:46 +0200 Message-Id: <20200821195359.1285345-3-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=63.128.21.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 02:43:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Avoid further processing if TRACE_NVME_SUBMIT_COMMAND_RAW is not enabled. This is an untested intend of performance optimization. Reviewed-by: Stefan Hajnoczi Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/block/nvme.c b/block/nvme.c index 2f5e3c2adfa..8c30a5fee28 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -441,6 +441,9 @@ static void nvme_trace_command(const NvmeCmd *cmd) { int i; + if (!trace_event_get_state_backends(TRACE_NVME_SUBMIT_COMMAND_RAW)) { + return; + } for (i = 0; i < 8; ++i) { uint8_t *cmdp = (uint8_t *)cmd + i * 8; trace_nvme_submit_command_raw(cmdp[0], cmdp[1], cmdp[2], cmdp[3], From patchwork Fri Aug 21 19:53:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349508 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=h6zVdcFh; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC2Z3MBlz9sTS for ; Sat, 22 Aug 2020 05:56:38 +1000 (AEST) Received: from localhost ([::1]:40384 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D9Q-0001OU-6C for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:56:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36282) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7I-0006b6-4N for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:24 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:55808 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7G-0002fp-Ia for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039661; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3lqHxzXh/lLTVxijpUS4Uwli7GjtQ2LdijRLIbNHx/E=; b=h6zVdcFhhblpK9sJ9AVbaQ6Ot2O6Gr00Kb8zw39flcLBAzKfoqSM4OQDOfWYc4AOKcSy/N QcOkpfOV5GH3YoaSoepXidCUh9Bbt9T5hPLQjQTNxfKoo3pMIwfrx1yiPfQorTEOzXyBlG cOxeh3yNVi+55OmhZm2R92IffKh+x1Q= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-326-ew029iKJObeiDAEqWM-Xjw-1; Fri, 21 Aug 2020 15:54:19 -0400 X-MC-Unique: ew029iKJObeiDAEqWM-Xjw-1 Received: by mail-wr1-f70.google.com with SMTP id l14so904913wrp.9 for ; Fri, 21 Aug 2020 12:54:19 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=3lqHxzXh/lLTVxijpUS4Uwli7GjtQ2LdijRLIbNHx/E=; b=oYzBr7zfh/o0rNunrYfIkCH4p/mEEgjTfNYuCfIwJH+vUfL15JKrVNAKFob8gaH15E +mDTuy5v1inX0C3Sw+/ws2W1mzfHIt2jH9TGB1Kv6U7Xm/HJBU6G2Gwua2sY5n3X4V/w tks6NslmknswUHWlDCjBaKPlGi52jj/B7EL7PGTmEZzQeoX4dEqKAvYt8G067JLXGDqC CGrgvymbi/LTc2A0aQXi/X4hC8RsAzdKIdOdEHFOX+2075H4fqbivmiYbhyiV1+mvU6f CKt8yb0skI6ESTHYlxt5G+tKa5j4lcRWx1Pbc4Xix43zGbSv57dqRoiy2592XvxmKJ+g ZnoA== X-Gm-Message-State: AOAM5315XrEfFEn6HaP2kD+gqdQkHvehvA77LytDosY6b7lDEeu9bvp+ Nr4Xus5DvnWdxAfv6hx85LbKtiFMsNTiFrDJCxK6EqmStZOmfurrXVv3Uhd2oKMX7FgmDAkHyOa o6WAN4Fe3Dz3xVec= X-Received: by 2002:a5d:6348:: with SMTP id b8mr4014930wrw.362.1598039658339; Fri, 21 Aug 2020 12:54:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWiZLnWDYHHdpRqC3K0ok/pfI8IjezKPPXbRz6Kir7dS5BmYBBoS0KzcNcyp4AXd5qchq9CA== X-Received: by 2002:a5d:6348:: with SMTP id b8mr4014912wrw.362.1598039658133; Fri, 21 Aug 2020 12:54:18 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id x133sm7604709wmg.39.2020.08.21.12.54.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:17 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 03/15] block/nvme: Let nvme_create_queue_pair() fail gracefully Date: Fri, 21 Aug 2020 21:53:47 +0200 Message-Id: <20200821195359.1285345-4-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=205.139.110.61; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 01:00:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" As nvme_create_queue_pair() is allowed to fail, replace the alloc() calls by try_alloc() to avoid aborting QEMU. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 8c30a5fee28..a6e5537aaaf 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -213,14 +213,22 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs, int i, r; BDRVNVMeState *s = bs->opaque; Error *local_err = NULL; - NVMeQueuePair *q = g_new0(NVMeQueuePair, 1); + NVMeQueuePair *q; uint64_t prp_list_iova; + q = g_try_new0(NVMeQueuePair, 1); + if (!q) { + return NULL; + } + q->prp_list_pages = qemu_try_blockalign0(bs, + s->page_size * NVME_NUM_REQS); + if (!q->prp_list_pages) { + goto fail; + } qemu_mutex_init(&q->lock); q->s = s; q->index = idx; qemu_co_queue_init(&q->free_req_queue); - q->prp_list_pages = qemu_blockalign0(bs, s->page_size * NVME_NUM_REQS); q->completion_bh = aio_bh_new(bdrv_get_aio_context(bs), nvme_process_completion_bh, q); r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages, From patchwork Fri Aug 21 19:53:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349506 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=GDMZZmPn; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC0n74J9z9sTT for ; Sat, 22 Aug 2020 05:55:05 +1000 (AEST) Received: from localhost ([::1]:33554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D7v-0006qI-J4 for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:55:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36296) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7N-0006nX-3z for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:29 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:54337 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7L-0002g9-Bf for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039666; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=e3FBLu+fyuqppCrHmkAguIxwuEUrof8OTOSO/o0z6Ic=; b=GDMZZmPnJMSXGKJOIOpc+gywuGUAAEF6CBe+icLrXUST2GmEOte1KaCM5z4nqj3V8Ruk44 jlHnt/7N53K4aq/zdHtazlW+XK0NURnRcG5XrQ0Tp6S0ZmTMKbDmkE/kZYiZ0NHsPTKAmS 7fIOqKPGvmeM6YIYzs5uMJ5/X3yoNrw= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-240-NEvVJgpxMJyTCCgdamkavw-1; Fri, 21 Aug 2020 15:54:25 -0400 X-MC-Unique: NEvVJgpxMJyTCCgdamkavw-1 Received: by mail-wr1-f69.google.com with SMTP id d6so896588wrv.23 for ; Fri, 21 Aug 2020 12:54:24 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=e3FBLu+fyuqppCrHmkAguIxwuEUrof8OTOSO/o0z6Ic=; b=fhbNcvGepQpoTmm0+yRhnj01tG8HHltsUqFu4SjmU5PeJ807bgtjwz6AVLKTDSB4Nh 7saYpKGu6MPulE5mAh4V2ss7bDimzWl2ttnBDX5m0QLm6TMzmXE7NEfWofph89zvR0EE oyMmLS05WXL7e5JaA4ecqyeALxZqiuckA9Itw0Q7C7GGOZvryhOwVyGIh9neHPUgkJcs fYGvV4BYiobxBXqT6lPnVpISmnnZGIRR74SeIlg+MJiFCSlBhrPSJ3w87vRV3huzUrr4 km4xfNn2np9QjMDLMaLfE44kCNkNJsCkNihU5y31W0trVK/mZMYlT2MPh5CoMTKM+Cgy f1pQ== X-Gm-Message-State: AOAM532LIVAV+XWQX7zhcgoJrazQJl+fMtTFli6UTYXnM1LrKrXH7HWp x7vJQdSI2gyVwqBN7xSl6N1RDLRYdrLgFz8ZfuRdO8cPNdLuYbQ78gQHgR+CkdeKuSBkoWVmPjJ HORaOnxbKB4aqn+E= X-Received: by 2002:a5d:464a:: with SMTP id j10mr4272281wrs.187.1598039663646; Fri, 21 Aug 2020 12:54:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOPQKY7K0RrC/qXEpFBRoL3j0WdYlSTvM1hwtHRLzscjNnv6oU1ad3iuruLakfBsccAvytVQ== X-Received: by 2002:a5d:464a:: with SMTP id j10mr4272258wrs.187.1598039663336; Fri, 21 Aug 2020 12:54:23 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id v12sm6186217wri.47.2020.08.21.12.54.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:22 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 04/15] block/nvme: Define INDEX macros to ease code review Date: Fri, 21 Aug 2020 21:53:48 +0200 Message-Id: <20200821195359.1285345-5-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=205.139.110.120; envelope-from=philmd@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/20 23:41:39 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Use definitions instead of '0' or '1' indexes. Also this will be useful when using multi-queues later. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index a6e5537aaaf..b4c1a6690e4 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -103,6 +103,9 @@ typedef volatile struct { QEMU_BUILD_BUG_ON(offsetof(NVMeRegs, doorbells) != 0x1000); +#define INDEX_ADMIN 0 +#define INDEX_IO(n) (1 + n) + struct BDRVNVMeState { AioContext *aio_context; QEMUVFIOState *vfio; @@ -531,7 +534,7 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) } cmd.prp1 = cpu_to_le64(iova); - if (nvme_cmd_sync(bs, s->queues[0], &cmd)) { + if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to identify controller"); goto out; } @@ -555,7 +558,7 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) cmd.cdw10 = 0; cmd.nsid = cpu_to_le32(namespace); - if (nvme_cmd_sync(bs, s->queues[0], &cmd)) { + if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to identify namespace"); goto out; } @@ -644,7 +647,7 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) .cdw10 = cpu_to_le32(((queue_size - 1) << 16) | (n & 0xFFFF)), .cdw11 = cpu_to_le32(0x3), }; - if (nvme_cmd_sync(bs, s->queues[0], &cmd)) { + if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to create io queue [%d]", n); nvme_free_queue_pair(q); return false; @@ -655,7 +658,7 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) .cdw10 = cpu_to_le32(((queue_size - 1) << 16) | (n & 0xFFFF)), .cdw11 = cpu_to_le32(0x1 | (n << 16)), }; - if (nvme_cmd_sync(bs, s->queues[0], &cmd)) { + if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to create io queue [%d]", n); nvme_free_queue_pair(q); return false; @@ -739,16 +742,18 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, /* Set up admin queue. */ s->queues = g_new(NVMeQueuePair *, 1); - s->queues[0] = nvme_create_queue_pair(bs, 0, NVME_QUEUE_SIZE, errp); - if (!s->queues[0]) { + s->queues[INDEX_ADMIN] = nvme_create_queue_pair(bs, 0, + NVME_QUEUE_SIZE, + errp); + if (!s->queues[INDEX_ADMIN]) { ret = -EINVAL; goto out; } s->nr_queues = 1; QEMU_BUILD_BUG_ON(NVME_QUEUE_SIZE & 0xF000); s->regs->aqa = cpu_to_le32((NVME_QUEUE_SIZE << 16) | NVME_QUEUE_SIZE); - s->regs->asq = cpu_to_le64(s->queues[0]->sq.iova); - s->regs->acq = cpu_to_le64(s->queues[0]->cq.iova); + s->regs->asq = cpu_to_le64(s->queues[INDEX_ADMIN]->sq.iova); + s->regs->acq = cpu_to_le64(s->queues[INDEX_ADMIN]->cq.iova); /* After setting up all control registers we can enable device now. */ s->regs->cc = cpu_to_le32((ctz32(NVME_CQ_ENTRY_BYTES) << 20) | @@ -839,7 +844,7 @@ static int nvme_enable_disable_write_cache(BlockDriverState *bs, bool enable, .cdw11 = cpu_to_le32(enable ? 0x01 : 0x00), }; - ret = nvme_cmd_sync(bs, s->queues[0], &cmd); + ret = nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd); if (ret) { error_setg(errp, "Failed to configure NVMe write cache"); } @@ -1056,7 +1061,7 @@ static coroutine_fn int nvme_co_prw_aligned(BlockDriverState *bs, { int r; BDRVNVMeState *s = bs->opaque; - NVMeQueuePair *ioq = s->queues[1]; + NVMeQueuePair *ioq = s->queues[INDEX_IO(0)]; NVMeRequest *req; uint32_t cdw12 = (((bytes >> s->blkshift) - 1) & 0xFFFF) | @@ -1171,7 +1176,7 @@ static coroutine_fn int nvme_co_pwritev(BlockDriverState *bs, static coroutine_fn int nvme_co_flush(BlockDriverState *bs) { BDRVNVMeState *s = bs->opaque; - NVMeQueuePair *ioq = s->queues[1]; + NVMeQueuePair *ioq = s->queues[INDEX_IO(0)]; NVMeRequest *req; NvmeCmd cmd = { .opcode = NVME_CMD_FLUSH, @@ -1202,7 +1207,7 @@ static coroutine_fn int nvme_co_pwrite_zeroes(BlockDriverState *bs, BdrvRequestFlags flags) { BDRVNVMeState *s = bs->opaque; - NVMeQueuePair *ioq = s->queues[1]; + NVMeQueuePair *ioq = s->queues[INDEX_IO(0)]; NVMeRequest *req; uint32_t cdw12 = ((bytes >> s->blkshift) - 1) & 0xFFFF; @@ -1255,7 +1260,7 @@ static int coroutine_fn nvme_co_pdiscard(BlockDriverState *bs, int bytes) { BDRVNVMeState *s = bs->opaque; - NVMeQueuePair *ioq = s->queues[1]; + NVMeQueuePair *ioq = s->queues[INDEX_IO(0)]; NVMeRequest *req; NvmeDsmRange *buf; QEMUIOVector local_qiov; @@ -1398,7 +1403,7 @@ static void nvme_aio_unplug(BlockDriverState *bs) BDRVNVMeState *s = bs->opaque; assert(s->plugged); s->plugged = false; - for (i = 1; i < s->nr_queues; i++) { + for (i = INDEX_IO(0); i < s->nr_queues; i++) { NVMeQueuePair *q = s->queues[i]; qemu_mutex_lock(&q->lock); nvme_kick(q); From patchwork Fri Aug 21 19:53:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349510 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=RMir91bZ; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC2s4yGNz9sTS for ; Sat, 22 Aug 2020 05:56:53 +1000 (AEST) Received: from localhost ([::1]:42130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D9f-000285-9k for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:56:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36340) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7S-00071n-Ab for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:34 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:24932 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7Q-0002he-Hy for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039671; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E/x+WG0TFgHIJ/8pW+jPELPjejq1PPY2g5C0FRtawW8=; b=RMir91bZ1PKl3GzHNk6FzrpE7Fiw9T0yRBsPt4oBAFpjhGGwwBTLOY/GEYvNBPuLjJic/T c+prloTuq7qkOgX2N9dW2HjsbSd4kT8TiHyZisWmuwAqoJzPehYR1sMBKzl2ikn97cktEj x9PnMS+ud/2se2ZACnyMfr4s7hy5rOQ= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-55-hQpC7rsQN1y0EkmAAeGzHg-1; Fri, 21 Aug 2020 15:54:29 -0400 X-MC-Unique: hQpC7rsQN1y0EkmAAeGzHg-1 Received: by mail-wm1-f69.google.com with SMTP id v8so1369611wma.6 for ; Fri, 21 Aug 2020 12:54:29 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=E/x+WG0TFgHIJ/8pW+jPELPjejq1PPY2g5C0FRtawW8=; b=snznbagTd9szEuhJHEHUTDwucylSb8ApAyVQL9QAcE3ZY2NuM0js/vPe5s27CdiucV lYe7ZRobm7KoeWnMyQaSc4o8pCNOdh3YNMAYCaoHhikApww1FxrpxGuTZUk/bRfATTfz U2IUfUQjHrtuP0J4hdTySCW9tJRylJ4Al77a1Ay8LMUkl4klWyl8BwXqcsCQoK/G0Ycb 4mLy2loUJu++qofQ1HceevLWLBAmbeIbLZDMeRjTz5S0wU5if/6OVF455RwFgw10aOlq HObs2h9fAmbh1JRibF0c1zMdBru5hg5Zj6nBIGuVvty+duM7Kmpd6EcvSYOyF6sBkKRK q61w== X-Gm-Message-State: AOAM533gEtWmrgo8ApNk8W4PpEa68YceR2qFcAr+TNv0WAF3HLE2k/H8 WeXiCRDydvvEA6bc9vtuWkF8GH2wQe79fEWIBOdiKkcxNqLEUFxDp6vY/7BX0iWCVzBSnU/H9pU zWA8CNEfw9DEDD80= X-Received: by 2002:adf:ee51:: with SMTP id w17mr4216373wro.239.1598039668600; Fri, 21 Aug 2020 12:54:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwgzb1gelRXox5cdld7Hsuf6Xx5+55NqkKhJ3cBrKqbZbDHZ56IU/4fjARcnOf6gbNDPPah9A== X-Received: by 2002:adf:ee51:: with SMTP id w17mr4216356wro.239.1598039668458; Fri, 21 Aug 2020 12:54:28 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id y142sm7577171wmd.3.2020.08.21.12.54.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:27 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 05/15] block/nvme: Improve error message when IO queue creation failed Date: Fri, 21 Aug 2020 21:53:49 +0200 Message-Id: <20200821195359.1285345-6-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=207.211.31.81; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 05:15:56 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Do not use the same error message for different failures. Display a different error whether it is the CQ or the SQ. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index b4c1a6690e4..c63629d3b45 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -648,7 +648,7 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) .cdw11 = cpu_to_le32(0x3), }; if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { - error_setg(errp, "Failed to create io queue [%d]", n); + error_setg(errp, "Failed to create CQ io queue [%d]", n); nvme_free_queue_pair(q); return false; } @@ -659,7 +659,7 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) .cdw11 = cpu_to_le32(0x1 | (n << 16)), }; if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { - error_setg(errp, "Failed to create io queue [%d]", n); + error_setg(errp, "Failed to create SQ io queue [%d]", n); nvme_free_queue_pair(q); return false; } From patchwork Fri Aug 21 19:53:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349509 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=EBWXQ/Z6; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC2t47MJz9sTT for ; Sat, 22 Aug 2020 05:56:53 +1000 (AEST) Received: from localhost ([::1]:42110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D9f-00027Y-Ks for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:56:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36356) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7W-0007FH-Vm for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:29007) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7V-0002hy-5v for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7xDCDapdWyub1oQeIVHPwnt1jYU5IQrsPDwy4E3ew7k=; b=EBWXQ/Z6HAdSokCSMSSY+0WxV2HYjYldpFS0IsiMZjgHhUeFWD4hBrEArOL4wPR64BWnPS mVERTwoJr9BLoS/rl0GZUdt2SHQsbMWf5oH7iLOKUYMvmJ8Of9uxWxAILz7TEUneuQqMa3 vMaEuq37IsBtCW6hP6PDUxek0ByAxjk= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-187-c_oTzyNvNP6-yyMY_NKQ6Q-1; Fri, 21 Aug 2020 15:54:34 -0400 X-MC-Unique: c_oTzyNvNP6-yyMY_NKQ6Q-1 Received: by mail-wm1-f70.google.com with SMTP id k204so1375066wmb.3 for ; Fri, 21 Aug 2020 12:54:34 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=7xDCDapdWyub1oQeIVHPwnt1jYU5IQrsPDwy4E3ew7k=; b=BQGhbKIMYKqqLwFUuX0cTLeO4C3vHMiHa2JO3H0nNbB9/gt0c3ijsn0RaCeMpexh6e s/XFEWyUWl+MLHya1+2BZYM0z/3p4L8SKSLIB60UKJLq3QsN29XfLRCUgMq7l3y3gx4p ypnVTybmGCVW7wMQIAlzJVnYV2hfCtABnBkWoyouyRJkZjve+d4BJSG+HNjLF0gNvehi 7ukumT0CFkqtc8kHvUjdsG876dasY9YL+onPg5Oum1lfgi+jYMXlG0HROA+OWD9lUVYY cAauNZJsV74LRj5iTqa3Dif6rCO+k8sVzb5jxBmVs3S524KAmKX/ZAubDsN7vsGQ0+k6 nZNQ== X-Gm-Message-State: AOAM531eN5S1UMxat7gbx45WpgwbUXGdSWvVdN0Y7JD53WwN04HcBTFj f8iBg2OZct2aeUJvx4AaGdK32yx6zqu66rsabDJMVXaFTWXK9ZaKTZt1jNdnNO3UzDud/2IU+Uo WvFr5o8VaFZleHe0= X-Received: by 2002:a1c:a54e:: with SMTP id o75mr5468870wme.181.1598039673693; Fri, 21 Aug 2020 12:54:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPe89aAI6gKRcPETnkSxHgC7A8l1QHiyl3gfzMig87o+Kl7saTf6y48FosXkdn25nId9vxSA== X-Received: by 2002:a1c:a54e:: with SMTP id o75mr5468860wme.181.1598039673531; Fri, 21 Aug 2020 12:54:33 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id l17sm6663952wmg.1.2020.08.21.12.54.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:32 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 06/15] block/nvme: Use common error path in nvme_add_io_queue() Date: Fri, 21 Aug 2020 21:53:50 +0200 Message-Id: <20200821195359.1285345-7-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Rearrange nvme_add_io_queue() by using a common error path. This will be proven useful in few commits where we add IRQ notification to the IO queues. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index c63629d3b45..419178adda3 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -649,8 +649,7 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) }; if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to create CQ io queue [%d]", n); - nvme_free_queue_pair(q); - return false; + goto out_error; } cmd = (NvmeCmd) { .opcode = NVME_ADM_CMD_CREATE_SQ, @@ -660,13 +659,15 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) }; if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to create SQ io queue [%d]", n); - nvme_free_queue_pair(q); - return false; + goto out_error; } s->queues = g_renew(NVMeQueuePair *, s->queues, n + 1); s->queues[n] = q; s->nr_queues++; return true; +out_error: + nvme_free_queue_pair(q); + return false; } static bool nvme_poll_cb(void *opaque) From patchwork Fri Aug 21 19:53:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349512 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hzxDxSo/; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC4h3ST3z9sPB for ; Sat, 22 Aug 2020 05:58:28 +1000 (AEST) Received: from localhost ([::1]:50134 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DBC-0005Vb-2f for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:58:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7d-0007JC-J2 for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:28931) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7b-0002je-PZ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039683; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1TqZzm1Kvd50b3ZJamR+XAsrd85Z+ArcaWN9nI9tRp0=; b=hzxDxSo/QBQ17I5ZviNgB94seswQsw1yQvGEJQUJ5gMRjuN83MpHBsAd8ekR05NYHfO9V8 KBXNGK4dLh9tsc9EiT1wZr5tlf0J0JrmviCk5HivDRQz01DOFUq8mR1Hb3zPzfrMndEKCc skmNxYjY/doTB6ThqHmVGNMGlM48ps8= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-254-Jz9p_Fr_N6mtjlUWZfNcxg-1; Fri, 21 Aug 2020 15:54:41 -0400 X-MC-Unique: Jz9p_Fr_N6mtjlUWZfNcxg-1 Received: by mail-wr1-f70.google.com with SMTP id g3so770360wrx.1 for ; Fri, 21 Aug 2020 12:54:40 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=1TqZzm1Kvd50b3ZJamR+XAsrd85Z+ArcaWN9nI9tRp0=; b=mApFwifdrpb7LtPt3jZG7VG1z2S9FeL0n+FXfCHPHU3sl+yH2pKTXR9Pi7FRT7GZ3n l3yo2f98wb/luHVLRmhg5b3wAmu2YMYsWsAPM7KjhDM8VvESNjZKY7s6L9xFtV9pKrsA 5Md4GYoZg6H8UitJ5JH7P7aA/lUgCUqwbjlSi/2LO8KPSze385C9w4z/FQVgXZafqvTk QeXHOLWU1RfmHQNlu1dp8BbaKJOZ1/9o4BWRQ1JAQwd3RK2/6uzyqXxYl66nWz7R390c pRkHIjP7Xa62xLjqOFGlq2nnIW+WxehDZNlP0J+mmPSHPgtOna8yVxA+eREE1UsUr00S XKRw== X-Gm-Message-State: AOAM533lcSpomrtof2OqOXRS29iGFAQPWRmMp45CMAEg6c5lprn7A69Z S4lJWPByIsgJU6oxtRPWHHEAJJbNNApkDNnbfCWYficKLeLVg1H+dBc24gISNrMrD/jDw1ziPg6 5gTsR7CHU+Vb0z1s= X-Received: by 2002:a5d:674d:: with SMTP id l13mr3033049wrw.151.1598039678992; Fri, 21 Aug 2020 12:54:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxXEDpU04L/pwxn5Vq4df9EyeTE366/9PgNpkk/3FzixxwU6X+Ot6X9KZ19WFPIlxBj5mwqZg== X-Received: by 2002:a5d:674d:: with SMTP id l13mr3033043wrw.151.1598039678806; Fri, 21 Aug 2020 12:54:38 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id t23sm6727668wra.74.2020.08.21.12.54.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:38 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 07/15] block/nvme: Rename local variable Date: Fri, 21 Aug 2020 21:53:51 +0200 Message-Id: <20200821195359.1285345-8-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=63.128.21.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 02:43:55 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We are going to modify the code in the next commit. Renaming the 'resp' variable to 'id' first makes the next commit easier to review. No logical changes. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 419178adda3..15c5202c03c 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -510,8 +510,8 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) BDRVNVMeState *s = bs->opaque; NvmeIdCtrl *idctrl; NvmeIdNs *idns; + uint8_t *id; NvmeLBAF *lbaf; - uint8_t *resp; uint16_t oncs; int r; uint64_t iova; @@ -520,14 +520,14 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) .cdw10 = cpu_to_le32(0x1), }; - resp = qemu_try_blockalign0(bs, sizeof(NvmeIdCtrl)); - if (!resp) { + id = qemu_try_blockalign0(bs, sizeof(NvmeIdCtrl)); + if (!id) { error_setg(errp, "Cannot allocate buffer for identify response"); goto out; } - idctrl = (NvmeIdCtrl *)resp; - idns = (NvmeIdNs *)resp; - r = qemu_vfio_dma_map(s->vfio, resp, sizeof(NvmeIdCtrl), true, &iova); + idctrl = (NvmeIdCtrl *)id; + idns = (NvmeIdNs *)id; + r = qemu_vfio_dma_map(s->vfio, id, sizeof(NvmeIdCtrl), true, &iova); if (r) { error_setg(errp, "Cannot map buffer for DMA"); goto out; @@ -554,8 +554,7 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) s->supports_write_zeroes = !!(oncs & NVME_ONCS_WRITE_ZEROS); s->supports_discard = !!(oncs & NVME_ONCS_DSM); - memset(resp, 0, 4096); - + memset(id, 0, 4096); cmd.cdw10 = 0; cmd.nsid = cpu_to_le32(namespace); if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { @@ -587,8 +586,8 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) s->blkshift = lbaf->ds; out: - qemu_vfio_dma_unmap(s->vfio, resp); - qemu_vfree(resp); + qemu_vfio_dma_unmap(s->vfio, id); + qemu_vfree(id); } static bool nvme_poll_queues(BDRVNVMeState *s) From patchwork Fri Aug 21 19:53:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349507 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=V2rinsd0; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC2Y5kV7z9sRN for ; Sat, 22 Aug 2020 05:56:37 +1000 (AEST) Received: from localhost ([::1]:40182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9D9P-0001Ja-Ew for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:56:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36518) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7k-0007RR-BC for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:53 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:53515 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7i-0002kv-PT for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039690; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WtBrq1bijthgDexWbDxZSKtNjp9JLqgaI8U5ThisE0A=; b=V2rinsd0fFKpQf/gmCANZZUJH0DteHMfX9ahKqgQaqriJESSlssu3EbweYSk3jCgyIsA0X b7vOTlmgl7jswx1ij4j9yb1co/YfOs23GEnT3e0uin+truZNlKZXjwWO1ptRFpYLT5a9fw 5MX6lv3nN3JLbk2ZB5+jPZHaiFM5Oek= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-323-cwKMXIJDNHGa022alVp3EA-1; Fri, 21 Aug 2020 15:54:46 -0400 X-MC-Unique: cwKMXIJDNHGa022alVp3EA-1 Received: by mail-wr1-f70.google.com with SMTP id j2so905744wrr.14 for ; Fri, 21 Aug 2020 12:54:46 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=WtBrq1bijthgDexWbDxZSKtNjp9JLqgaI8U5ThisE0A=; b=AsTz018KB5DkSMy4ExSpi0+HK2M1Y6JeuB+FuPXD3l6m2oxeCk0lhGB9yZYk18NkOL AmeDlv8A5Oeaq86JPLUoKkfDQN7IEn4SaIVEaXwwhOXnxmmWH4oX341MfPYQh93damTR C/8dIFC46jmEE5E3n5qiD3XP+sPa6x74CrwKNCgqp7D4FcyM9FUtqlEmR+000aqMMlVY cIGrKZJdMv9TAgmQo1yZ9o2SWsWHznkQERBddtTRC1o8WQk6LtlxzuznzlI2ChQgFr+k i9PyLGZTnypmrexbs/oqnBtel5L3qfAlWl0bLlsYH2jYRCpiQtAEXTxUq5k9NFKH1LVt p4Xg== X-Gm-Message-State: AOAM532KrWQRMmylnZBrxVZ45P2IHRFaeSft0rHN5rwRd+DLcbFekSnQ 9rnpYpFIFLH8eClwBf5+vMSAPofwQF4cNAQiRu5z3JrPN0SGO7YEDjobYhXannqYHJQkUpAQ4su jMQKOGbvS6LvYUao= X-Received: by 2002:a1c:7215:: with SMTP id n21mr4506800wmc.156.1598039684788; Fri, 21 Aug 2020 12:54:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzVgFwQsWuAYY8uYC/Qoa8fuz/XnCXc1ATlaWF27Pnj+R1KPsBX+A7evqzWWtY6mFxaw6NzxQ== X-Received: by 2002:a1c:7215:: with SMTP id n21mr4506743wmc.156.1598039683888; Fri, 21 Aug 2020 12:54:43 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id j4sm7191494wmi.48.2020.08.21.12.54.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:43 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 08/15] block/nvme: Use union of NvmeIdCtrl / NvmeIdNs structures Date: Fri, 21 Aug 2020 21:53:52 +0200 Message-Id: <20200821195359.1285345-9-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=207.211.31.81; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 05:15:56 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We allocate an unique chunk of memory then use it for two different structures. By using an union, we make it clear the data is overlapping (and we can remove the casts). Suggested-by: Stefan Hajnoczi Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 15c5202c03c..af3176a9669 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -508,9 +508,10 @@ static int nvme_cmd_sync(BlockDriverState *bs, NVMeQueuePair *q, static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) { BDRVNVMeState *s = bs->opaque; - NvmeIdCtrl *idctrl; - NvmeIdNs *idns; - uint8_t *id; + union { + NvmeIdCtrl ctrl; + NvmeIdNs ns; + } *id; NvmeLBAF *lbaf; uint16_t oncs; int r; @@ -520,14 +521,12 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) .cdw10 = cpu_to_le32(0x1), }; - id = qemu_try_blockalign0(bs, sizeof(NvmeIdCtrl)); + id = qemu_try_blockalign0(bs, sizeof(*id)); if (!id) { error_setg(errp, "Cannot allocate buffer for identify response"); goto out; } - idctrl = (NvmeIdCtrl *)id; - idns = (NvmeIdNs *)id; - r = qemu_vfio_dma_map(s->vfio, id, sizeof(NvmeIdCtrl), true, &iova); + r = qemu_vfio_dma_map(s->vfio, id, sizeof(*id), true, &iova); if (r) { error_setg(errp, "Cannot map buffer for DMA"); goto out; @@ -539,22 +538,22 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) goto out; } - if (le32_to_cpu(idctrl->nn) < namespace) { + if (le32_to_cpu(id->ctrl.nn) < namespace) { error_setg(errp, "Invalid namespace"); goto out; } - s->write_cache_supported = le32_to_cpu(idctrl->vwc) & 0x1; - s->max_transfer = (idctrl->mdts ? 1 << idctrl->mdts : 0) * s->page_size; + s->write_cache_supported = le32_to_cpu(id->ctrl.vwc) & 0x1; + s->max_transfer = (id->ctrl.mdts ? 1 << id->ctrl.mdts : 0) * s->page_size; /* For now the page list buffer per command is one page, to hold at most * s->page_size / sizeof(uint64_t) entries. */ s->max_transfer = MIN_NON_ZERO(s->max_transfer, s->page_size / sizeof(uint64_t) * s->page_size); - oncs = le16_to_cpu(idctrl->oncs); + oncs = le16_to_cpu(id->ctrl.oncs); s->supports_write_zeroes = !!(oncs & NVME_ONCS_WRITE_ZEROS); s->supports_discard = !!(oncs & NVME_ONCS_DSM); - memset(id, 0, 4096); + memset(id, 0, sizeof(*id)); cmd.cdw10 = 0; cmd.nsid = cpu_to_le32(namespace); if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { @@ -562,11 +561,11 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) goto out; } - s->nsze = le64_to_cpu(idns->nsze); - lbaf = &idns->lbaf[NVME_ID_NS_FLBAS_INDEX(idns->flbas)]; + s->nsze = le64_to_cpu(id->ns.nsze); + lbaf = &id->ns.lbaf[NVME_ID_NS_FLBAS_INDEX(id->ns.flbas)]; - if (NVME_ID_NS_DLFEAT_WRITE_ZEROES(idns->dlfeat) && - NVME_ID_NS_DLFEAT_READ_BEHAVIOR(idns->dlfeat) == + if (NVME_ID_NS_DLFEAT_WRITE_ZEROES(id->ns.dlfeat) && + NVME_ID_NS_DLFEAT_READ_BEHAVIOR(id->ns.dlfeat) == NVME_ID_NS_DLFEAT_READ_BEHAVIOR_ZEROES) { bs->supported_write_flags |= BDRV_REQ_MAY_UNMAP; } From patchwork Fri Aug 21 19:53:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349513 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=WJhn2tNK; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC4l3BCZz9sTS for ; Sat, 22 Aug 2020 05:58:31 +1000 (AEST) Received: from localhost ([::1]:50526 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DBF-0005fA-60 for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:58:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36552) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7n-0007Ws-1e for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:59725) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7l-0002lJ-BN for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039692; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0i2p9sl3VAF8Jqkhq9VbsKE+8jvhj1TW75WcnxQRvoc=; b=WJhn2tNKwRpQVlUCkFSsCB3Nk5OVQMC1CUjAUMkRb0/sGrhNBlcIFOg2luQFEiP+slexvz 4S4mLZ98EAq7zMc4aK+qIxJUXBk4Je6q5YQJfFuLOP6Cvlv00q1aNrQSpfECw+5qTUxDxf zpBlaFjH6bgkkc4EUpVZaLuv8Sm3Upk= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-91-epgvYMJDPluMpOZBFPZGxA-1; Fri, 21 Aug 2020 15:54:50 -0400 X-MC-Unique: epgvYMJDPluMpOZBFPZGxA-1 Received: by mail-wm1-f69.google.com with SMTP id p184so1366419wmp.7 for ; Fri, 21 Aug 2020 12:54:50 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=0i2p9sl3VAF8Jqkhq9VbsKE+8jvhj1TW75WcnxQRvoc=; b=Ea3I3Ry9TwuT0zLwhkZp9EhI8r4jpW9pd/s+SA3yAD+GMgAiyKVL/fPqTFCa60s6Sb 3JfJ4iwDlWG8MmjOwsnIeq6AhbW1rB2kGLDwK9V7UEfS8kHfWHU24uB22OYVzSCfNmIB O7bc4kyqfLCFza174bB/qN/yBUcRJSHr6zEI8deyDislCBPCBDd0fymHQADjwZhIK06j V41G0tceld8JWLAsKI5+IJMlmbf97yDe3i0ZzuElWVufwPhbz0Nnl3MEYDjL4R9XKRdt j2uiojuSveG+vsr75N7DLaTOE1ImrGRHFeM606NrCA8E0Nkl9dc+aP6j1qvto1AKgwlO A8og== X-Gm-Message-State: AOAM530iZPMXB70ZSH6NQhI9PVBO1Uw89hjxZLQSJQmWWOfNKMwN8Uu/ KXHHj6Nk1a4swbTdCH9PnSILrOOkVoz7Y+K9ghE1gXlIVU8RiY0iazWFdHz3H45z8tygwL6KjlF p9sgGTMMPuMHkiOg= X-Received: by 2002:a5d:400e:: with SMTP id n14mr3997272wrp.75.1598039689112; Fri, 21 Aug 2020 12:54:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqgq21Dk4POF4Ky/yB5OC0piWJtmURQ8gZizVXstYdsIkedV9CuwpKT7yavYmSMlMj4Koy/A== X-Received: by 2002:a5d:400e:: with SMTP id n14mr3997265wrp.75.1598039688949; Fri, 21 Aug 2020 12:54:48 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id q2sm6326632wro.8.2020.08.21.12.54.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:48 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 09/15] block/nvme: Replace qemu_try_blockalign0 by qemu_try_blockalign/memset Date: Fri, 21 Aug 2020 21:53:53 +0200 Message-Id: <20200821195359.1285345-10-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" In the next commit we'll get rid of qemu_try_blockalign(). To ease review, first replace qemu_try_blockalign0() by explicit calls to qemu_try_blockalign() and memset(). Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index af3176a9669..7e21a2d7ece 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -174,12 +174,12 @@ static void nvme_init_queue(BlockDriverState *bs, NVMeQueue *q, bytes = ROUND_UP(nentries * entry_bytes, s->page_size); q->head = q->tail = 0; - q->queue = qemu_try_blockalign0(bs, bytes); - + q->queue = qemu_try_blockalign(bs, bytes); if (!q->queue) { error_setg(errp, "Cannot allocate queue"); return; } + memset(q->queue, 0, bytes); r = qemu_vfio_dma_map(s->vfio, q->queue, bytes, false, &q->iova); if (r) { error_setg(errp, "Cannot map queue"); @@ -223,11 +223,12 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs, if (!q) { return NULL; } - q->prp_list_pages = qemu_try_blockalign0(bs, + q->prp_list_pages = qemu_try_blockalign(bs, s->page_size * NVME_NUM_REQS); if (!q->prp_list_pages) { goto fail; } + memset(q->prp_list_pages, 0, s->page_size * NVME_NUM_REQS); qemu_mutex_init(&q->lock); q->s = s; q->index = idx; @@ -521,7 +522,7 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) .cdw10 = cpu_to_le32(0x1), }; - id = qemu_try_blockalign0(bs, sizeof(*id)); + id = qemu_try_blockalign(bs, sizeof(*id)); if (!id) { error_setg(errp, "Cannot allocate buffer for identify response"); goto out; @@ -531,8 +532,9 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) error_setg(errp, "Cannot map buffer for DMA"); goto out; } - cmd.prp1 = cpu_to_le64(iova); + memset(id, 0, sizeof(*id)); + cmd.prp1 = cpu_to_le64(iova); if (nvme_cmd_sync(bs, s->queues[INDEX_ADMIN], &cmd)) { error_setg(errp, "Failed to identify controller"); goto out; @@ -1283,11 +1285,11 @@ static int coroutine_fn nvme_co_pdiscard(BlockDriverState *bs, assert(s->nr_queues > 1); - buf = qemu_try_blockalign0(bs, s->page_size); + buf = qemu_try_blockalign(bs, s->page_size); if (!buf) { return -ENOMEM; } - + memset(buf, 0, s->page_size); buf->nlb = cpu_to_le32(bytes >> s->blkshift); buf->slba = cpu_to_le64(offset >> s->blkshift); buf->cattr = 0; From patchwork Fri Aug 21 19:53:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349515 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=TJ64AV0F; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC6B1bZbz9sTS for ; Sat, 22 Aug 2020 05:59:46 +1000 (AEST) Received: from localhost ([::1]:57810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DCR-0000E1-W1 for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:59:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36590) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7r-0007jZ-Iw for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:59 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:22212 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7p-0002m5-UU for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:54:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039697; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y47Rdgq2E7ETUgE+8WKfJU6kiExsJ3jsfjk0oBdiMjg=; b=TJ64AV0FaDSDhIjX/pMdz3rLfOWxGJO9vv7QH7Gj+oR7hTXSSM5jmsvDVAbkL0jMEV+BVk gdDW/H7DGMQ6NK7NVwLBbwqXi7S73xcSE8iSbugnKAoSeRlLjkaAC2co2qcTlkGs9gQP1p czof4O23uf9L+gizQr39ThvyodvMHJM= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-172-nHx7pFaTP42wJU8jJIPdOQ-1; Fri, 21 Aug 2020 15:54:55 -0400 X-MC-Unique: nHx7pFaTP42wJU8jJIPdOQ-1 Received: by mail-wr1-f70.google.com with SMTP id f7so900439wrs.8 for ; Fri, 21 Aug 2020 12:54:55 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=y47Rdgq2E7ETUgE+8WKfJU6kiExsJ3jsfjk0oBdiMjg=; b=X8kBhiy/gjJRtK0BXXVUD1+LFqTmqz3G9dUILARY4Gi+lwrokVRSDsCwSsu5ilS2Hi 3eAmZEnk+64U81oGgq7Zoe7OD+2C1kkTREImIOpBQ/MGB94DANFbDfAozvEM90+7XB8V xBpowBxEbJKr1l2+THvBS/zHPsU+OK+p3WWALg8eVUMR0/Q3/umIRhv8WmZGFTLvQEXA pvJInXQMPF0t7//zYJVorlWoF9DDR3//jOFQhbWGy0AfT8iEfjJaFqNjh1wpwg8WpYoj 78F6+IbkD5znaREq41Y5t2y7xPl93mLtTtNs5whjTyCYqtbDv0jkdwr5nFBmwLHXMPHj ARnw== X-Gm-Message-State: AOAM531Gi/x+FqZSBuUARB3zahpkyf0p5e+jPTmZmKBJNuhwWsKZI9iO +WZUyJr5i0fZ/bTkiv0n7vmep9tGcPEFOZ4giRKGhUn8Hsc1Xk8DlXHz06orj3M7W6EXOR9Fnav Cp80WYCfRIFqZruc= X-Received: by 2002:adf:fecc:: with SMTP id q12mr4209767wrs.374.1598039694245; Fri, 21 Aug 2020 12:54:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzioq88rRY1lsto/f0vK6mEJOfEKayI8VG4T5ieTqOXLbkNG36iLjFInRQfyeieUbNVwqsYGA== X-Received: by 2002:adf:fecc:: with SMTP id q12mr4209751wrs.374.1598039694016; Fri, 21 Aug 2020 12:54:54 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id o124sm6607073wmb.2.2020.08.21.12.54.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:53 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 10/15] block/nvme: Replace qemu_try_blockalign(bs) by qemu_try_memalign(pg_sz) Date: Fri, 21 Aug 2020 21:53:54 +0200 Message-Id: <20200821195359.1285345-11-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=205.139.110.61; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 01:00:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" qemu_try_blockalign() is a generic API that call back to the block driver to return its page alignment. As we call from within the very same driver, we already know to page alignment stored in our state. Remove indirections and use the value from BDRVNVMeState. This change is required to later remove the BlockDriverState argument, to make nvme_init_queue() per hardware, and not per block driver. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 7e21a2d7ece..3742e0535aa 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -174,7 +174,7 @@ static void nvme_init_queue(BlockDriverState *bs, NVMeQueue *q, bytes = ROUND_UP(nentries * entry_bytes, s->page_size); q->head = q->tail = 0; - q->queue = qemu_try_blockalign(bs, bytes); + q->queue = qemu_try_memalign(s->page_size, bytes); if (!q->queue) { error_setg(errp, "Cannot allocate queue"); return; @@ -223,7 +223,7 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs, if (!q) { return NULL; } - q->prp_list_pages = qemu_try_blockalign(bs, + q->prp_list_pages = qemu_try_memalign(s->page_size, s->page_size * NVME_NUM_REQS); if (!q->prp_list_pages) { goto fail; @@ -522,7 +522,7 @@ static void nvme_identify(BlockDriverState *bs, int namespace, Error **errp) .cdw10 = cpu_to_le32(0x1), }; - id = qemu_try_blockalign(bs, sizeof(*id)); + id = qemu_try_memalign(s->page_size, sizeof(*id)); if (!id) { error_setg(errp, "Cannot allocate buffer for identify response"); goto out; @@ -1141,7 +1141,7 @@ static int nvme_co_prw(BlockDriverState *bs, uint64_t offset, uint64_t bytes, return nvme_co_prw_aligned(bs, offset, bytes, qiov, is_write, flags); } trace_nvme_prw_buffered(s, offset, bytes, qiov->niov, is_write); - buf = qemu_try_blockalign(bs, bytes); + buf = qemu_try_memalign(s->page_size, bytes); if (!buf) { return -ENOMEM; @@ -1285,7 +1285,7 @@ static int coroutine_fn nvme_co_pdiscard(BlockDriverState *bs, assert(s->nr_queues > 1); - buf = qemu_try_blockalign(bs, s->page_size); + buf = qemu_try_memalign(s->page_size, s->page_size); if (!buf) { return -ENOMEM; } From patchwork Fri Aug 21 19:53:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349517 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=XeiuPO1S; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC7w6nHGz9sRN for ; Sat, 22 Aug 2020 06:01:16 +1000 (AEST) Received: from localhost ([::1]:33808 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DDu-0002Bh-O7 for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 16:01:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D7x-0007zW-UZ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:32038) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D7v-0002mP-0f for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039702; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NuSKQWVrMs8vraRihCSu39r/qzyDiytcvGfDb3sY9wM=; b=XeiuPO1SL6neUUNNyzRjHTzor04Xeij2Tx6XEW72CT6h+DsVSBtR+ZZF+xY5tCAsG+oyv8 8VmaSCSRRDY1DXJ8fJ37zpFVWRlNLJQkSYD/1dA8iB74i54M2d95MTf64HZgkjfSe0iQAI LyTNAGykhpZHzCk+VaBsB58S/TYZyJQ= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-381-_bOBlJhcNEOaFUTa3gqKrQ-1; Fri, 21 Aug 2020 15:55:01 -0400 X-MC-Unique: _bOBlJhcNEOaFUTa3gqKrQ-1 Received: by mail-wm1-f71.google.com with SMTP id q23so967027wmj.0 for ; Fri, 21 Aug 2020 12:55:00 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=NuSKQWVrMs8vraRihCSu39r/qzyDiytcvGfDb3sY9wM=; b=gROBEX350gF5osRbDppfsJ4w3xPvAcJcyvUCC2xjkoMTmC6y5nLAv2p8SHH1Bivs0l uHB0/TMpgfTquZYkFxbt3J3kd076v3Wz1jw5Q2uM03QcoxAac5oKScEFGBygZyu8XEz8 1zS1MhUtMPzU5Wm+k8JNF6OJqbOEO9eINQaLP8Sa/KYiHNWbqsuRLyP9AFOSwOxJUJIe 5YLU6MR1KbI198frhGST9oSvyfu7RAXHFY1ziylSCbmHIzy/qO4AojW/DVIleSLybcxO iCkCiWYWKpjaka1/iAhf17lzeXJsO9WG38/oVKC4U4XvGE/4A9pjU0qxLkIWClC4aeKI u6SQ== X-Gm-Message-State: AOAM533nEVuk0VPmxobBZrgA/SFPDGvZiamXAoKw3Ze3m3M/ai5C+Pgf 2DQT3ojAoXOrBRSpEgpfEu4R02QTxrh4vI+rZam9ywoip3Yp8Vc+86fK29b+VeUAXpmTFye9F6E 6cw3iJwwq0VY5tDI= X-Received: by 2002:a7b:cc0b:: with SMTP id f11mr5583590wmh.31.1598039699485; Fri, 21 Aug 2020 12:54:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx6ulkCCJMaE+uybsKbrr7aGFvRoA2uMVEhGiA76MIX/fwbV0O9u2wfNic3WNs75VeOjcSQTQ== X-Received: by 2002:a7b:cc0b:: with SMTP id f11mr5583570wmh.31.1598039699286; Fri, 21 Aug 2020 12:54:59 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id x11sm6353387wrl.28.2020.08.21.12.54.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:54:58 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 11/15] block/nvme: Simplify nvme_init_queue() arguments Date: Fri, 21 Aug 2020 21:53:55 +0200 Message-Id: <20200821195359.1285345-12-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" nvme_init_queue() doesn't require BlockDriverState anymore. Replace it by BDRVNVMeState to simplify. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 3742e0535aa..f98ca067144 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -165,10 +165,9 @@ static QemuOptsList runtime_opts = { }, }; -static void nvme_init_queue(BlockDriverState *bs, NVMeQueue *q, +static void nvme_init_queue(BDRVNVMeState *s, NVMeQueue *q, int nentries, int entry_bytes, Error **errp) { - BDRVNVMeState *s = bs->opaque; size_t bytes; int r; @@ -251,14 +250,14 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs, req->prp_list_iova = prp_list_iova + i * s->page_size; } - nvme_init_queue(bs, &q->sq, size, NVME_SQ_ENTRY_BYTES, &local_err); + nvme_init_queue(s, &q->sq, size, NVME_SQ_ENTRY_BYTES, &local_err); if (local_err) { error_propagate(errp, local_err); goto fail; } q->sq.doorbell = &s->regs->doorbells[idx * 2 * s->doorbell_scale]; - nvme_init_queue(bs, &q->cq, size, NVME_CQ_ENTRY_BYTES, &local_err); + nvme_init_queue(s, &q->cq, size, NVME_CQ_ENTRY_BYTES, &local_err); if (local_err) { error_propagate(errp, local_err); goto fail; From patchwork Fri Aug 21 19:53:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349511 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=HFXNIgwN; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC4P6Tkpz9sRN for ; Sat, 22 Aug 2020 05:58:13 +1000 (AEST) Received: from localhost ([::1]:48758 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DAx-0004xI-LV for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:58:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36702) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D85-00085j-94 for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:13 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:23340 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D82-0002nN-Qd for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039710; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4QkeIEuTWWrDAk5fgLztw4p0UNTKf91orUMJW2LVbIY=; b=HFXNIgwNdhxxot8bqmav4vf0xzOJlkGpDrLbCN70GHEELVOU4suDOJQAcmnxIJ79l2NO0j i7inN8G4GdsHnhcofSWSm5qMubeBWXwLTKK/DdkCEH/BB2K8Fkde9tUtwohC3yMz/ctvFX 0tGXwCW1PWXvglKQ2smYgMkkjuSekzU= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-347-bXcHSh7tMnOjHvcpF9y6xg-1; Fri, 21 Aug 2020 15:55:06 -0400 X-MC-Unique: bXcHSh7tMnOjHvcpF9y6xg-1 Received: by mail-wm1-f71.google.com with SMTP id k204so1375559wmb.3 for ; Fri, 21 Aug 2020 12:55:06 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=4QkeIEuTWWrDAk5fgLztw4p0UNTKf91orUMJW2LVbIY=; b=DUSUO9hX2kIY7Vq3mgnIhk5EBKU5B08j72dlejLrTPEyDzfiNjYCXQjHgQkzYe9aby au0EhY2XUFEKSmLRFnuRpJkntrHMjTnqY3zmvamBJrIlpNuAiCI/AY7c0ue3w3DVFviz Ju6/RR5kjmvGUQNYhfbjz5jduAX7+IT1kXoUm5QMYPBfDsdxAQx44yeoP8KXXM1EUFAs hDogS+w5JvIT7mOQoMOr8wZQ0ienNDkoYlTCjR3aA+tLzUILnzpdcqVW1tgLCqw/u6PD C1QaARJcogffV0zldy49Xdx45miiU09yFLH+8wJ9uMXYo63uHoSjQ5OmDsp5Vov9MPiz qNbw== X-Gm-Message-State: AOAM531+jvZm2xPyW1T3bNobJ9A0tq5h5JLCss4NoEUsHPjbIQcfbwNi tl2ydIfJ00QT11d/8UM5GvGE6gLzIOImzjxOpeplk0WgysthVWCsmRcQFuhQ+6pl60hY/CVSJRA d2X/zsOVHqSQ7xz4= X-Received: by 2002:a5d:4241:: with SMTP id s1mr4065586wrr.411.1598039704635; Fri, 21 Aug 2020 12:55:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwMpajGP4WqfXOkZJv+j1i7lAsCAEl2/lVIVd6XTuoWAbxhQbxnoz07ynKNkJ1+tBrnBVAeeQ== X-Received: by 2002:a5d:4241:: with SMTP id s1mr4065564wrr.411.1598039704477; Fri, 21 Aug 2020 12:55:04 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id z12sm6514659wrp.20.2020.08.21.12.55.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:55:03 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 12/15] block/nvme: Replace BDRV_POLL_WHILE by AIO_WAIT_WHILE Date: Fri, 21 Aug 2020 21:53:56 +0200 Message-Id: <20200821195359.1285345-13-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=207.211.31.81; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 05:15:56 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" BDRV_POLL_WHILE() is defined as: #define BDRV_POLL_WHILE(bs, cond) ({ \ BlockDriverState *bs_ = (bs); \ AIO_WAIT_WHILE(bdrv_get_aio_context(bs_), \ cond); }) As we will remove the BlockDriverState use in the next commit, start by using the exploded version of BDRV_POLL_WHILE(). Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/nvme.c b/block/nvme.c index f98ca067144..3d49ff81fb7 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -493,6 +493,7 @@ static void nvme_cmd_sync_cb(void *opaque, int ret) static int nvme_cmd_sync(BlockDriverState *bs, NVMeQueuePair *q, NvmeCmd *cmd) { + AioContext *aio_context = bdrv_get_aio_context(bs); NVMeRequest *req; int ret = -EINPROGRESS; req = nvme_get_free_req(q); @@ -501,7 +502,7 @@ static int nvme_cmd_sync(BlockDriverState *bs, NVMeQueuePair *q, } nvme_submit_command(q, req, cmd, nvme_cmd_sync_cb, &ret); - BDRV_POLL_WHILE(bs, ret == -EINPROGRESS); + AIO_WAIT_WHILE(aio_context, ret == -EINPROGRESS); return ret; } From patchwork Fri Aug 21 19:53:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349514 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=EdMnsQLw; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC660yMqz9sTY for ; Sat, 22 Aug 2020 05:59:40 +1000 (AEST) Received: from localhost ([::1]:57292 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DCK-0008Sp-Po for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 15:59:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36726) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D87-000875-AZ for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:41481) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D85-0002oN-Ct for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039712; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yy0hBatfQlANUaZcx4KGMsjzMpZLj9VFeVufbMLLnpc=; b=EdMnsQLwS57YVbAG/+8wg8JRnYdhWV6X+2Q0w9KiEXpFzOvN4eDce6lBx7ZtxmSJGWx091 LxSzt8yG5Y68pvqJHMF4HOEXZAwmH9ER2SOv765DdZX1XWrt1ivetn/5C6pH/Xm7RJikSX mntMlaxbsHDazshBMGt1+ZuCXtliiAg= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-79-XfPTxW1wPrOGq7i9fsjvQA-1; Fri, 21 Aug 2020 15:55:11 -0400 X-MC-Unique: XfPTxW1wPrOGq7i9fsjvQA-1 Received: by mail-wm1-f70.google.com with SMTP id k12so1076511wmj.1 for ; Fri, 21 Aug 2020 12:55:10 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=yy0hBatfQlANUaZcx4KGMsjzMpZLj9VFeVufbMLLnpc=; b=QIBOmWezHSN25lCw4yuBS7vvpg9tIh5xf7Rx8puFbqKm6XPSc4pKuL9sX27hoLTUdo KS9humoNmjtZ/kV15R1z7VRamcmGxjeZfouF1s48IHZlUXUl76KRlpREdIU4IjutEMZm RdvLmQexMKmWnBoHaK3pNlPY/wlsn7DDeLgP6jRC2ctFf23sIrkfEE2o8JPP0vKLKOZ/ a3aqN0S6O/fm1mBPxwZM5EQgDXV5/q1ljJ3QDp8gYM8d2KB0xS8s9bEbldwlzSZCo+bS L4QM3q6MGJXauDZsQnB7PBJtlncqVLOJUE5GETUi75wJbzQUT5FIriWx1O4c0k86q9z3 2LQQ== X-Gm-Message-State: AOAM533V2Av4zhcTWnARV88LDA/qAwzNv0Jck3aQTKu6725ksB3TaVNH P+mcNH7LLkFDjyIU/zfh3sHVYEs0EYEFQd4LcIZ1jMNxD+vLjA29fHCzFmwHgObxyDerUEQKrxv VBQbpJ50sMMPiKNY= X-Received: by 2002:a1c:ed15:: with SMTP id l21mr5033325wmh.37.1598039709672; Fri, 21 Aug 2020 12:55:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy5wbcmaRgRI7PygY14XJLRD0jMIJugzT1HRmHi87KvTwwB0CelAieW6u8+W/Yfh1jtkes2IA== X-Received: by 2002:a1c:ed15:: with SMTP id l21mr5033311wmh.37.1598039709500; Fri, 21 Aug 2020 12:55:09 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id o2sm5979231wrj.21.2020.08.21.12.55.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:55:08 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 13/15] block/nvme: Simplify nvme_create_queue_pair() arguments Date: Fri, 21 Aug 2020 21:53:57 +0200 Message-Id: <20200821195359.1285345-14-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" nvme_create_queue_pair() doesn't require BlockDriverState anymore. Replace it by BDRVNVMeState and AioContext to simplify. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 3d49ff81fb7..85b235c8e6d 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -208,12 +208,12 @@ static void nvme_free_req_queue_cb(void *opaque) qemu_mutex_unlock(&q->lock); } -static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs, +static NVMeQueuePair *nvme_create_queue_pair(BDRVNVMeState *s, + AioContext *aio_context, int idx, int size, Error **errp) { int i, r; - BDRVNVMeState *s = bs->opaque; Error *local_err = NULL; NVMeQueuePair *q; uint64_t prp_list_iova; @@ -232,8 +232,7 @@ static NVMeQueuePair *nvme_create_queue_pair(BlockDriverState *bs, q->s = s; q->index = idx; qemu_co_queue_init(&q->free_req_queue); - q->completion_bh = aio_bh_new(bdrv_get_aio_context(bs), - nvme_process_completion_bh, q); + q->completion_bh = aio_bh_new(aio_context, nvme_process_completion_bh, q); r = qemu_vfio_dma_map(s->vfio, q->prp_list_pages, s->page_size * NVME_NUM_REQS, false, &prp_list_iova); @@ -637,7 +636,8 @@ static bool nvme_add_io_queue(BlockDriverState *bs, Error **errp) NvmeCmd cmd; int queue_size = NVME_QUEUE_SIZE; - q = nvme_create_queue_pair(bs, n, queue_size, errp); + q = nvme_create_queue_pair(s, bdrv_get_aio_context(bs), + n, queue_size, errp); if (!q) { return false; } @@ -683,6 +683,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, Error **errp) { BDRVNVMeState *s = bs->opaque; + AioContext *aio_context = bdrv_get_aio_context(bs); int ret; uint64_t cap; uint64_t timeout_ms; @@ -743,7 +744,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, /* Set up admin queue. */ s->queues = g_new(NVMeQueuePair *, 1); - s->queues[INDEX_ADMIN] = nvme_create_queue_pair(bs, 0, + s->queues[INDEX_ADMIN] = nvme_create_queue_pair(s, aio_context, 0, NVME_QUEUE_SIZE, errp); if (!s->queues[INDEX_ADMIN]) { From patchwork Fri Aug 21 19:53:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349518 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=BCJkSyIP; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC9f0Jgnz9sR4 for ; Sat, 22 Aug 2020 06:02:46 +1000 (AEST) Received: from localhost ([::1]:37892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DFL-0003tZ-QF for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 16:02:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D8H-0008CE-6U for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:25 -0400 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:24268 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D8B-0002sE-2K for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039717; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Z6xkWpwBlZzkhFi5oKqD8l8Ej8buVWdRi+BzbsrCC3Q=; b=BCJkSyIPqe26F9/YQvN4q2sb6aWGSVKoMC1cSAN5fxg4Nm+zdg8u+J3GDJ31G4TiMTnDmu 20PUjgxUjYK00d6lgHhe9K1aQ8jEXxZdFV7kHRrr4/RE4WSKCwzrPOj49R6wXtbNImaJlx 936NLEzU1bo+hQRR4TpWFCWuPYcVcNM= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-388-QbqD46IONj-gg17BdnBSdw-1; Fri, 21 Aug 2020 15:55:16 -0400 X-MC-Unique: QbqD46IONj-gg17BdnBSdw-1 Received: by mail-wm1-f69.google.com with SMTP id b73so1042545wmb.0 for ; Fri, 21 Aug 2020 12:55:16 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=Z6xkWpwBlZzkhFi5oKqD8l8Ej8buVWdRi+BzbsrCC3Q=; b=rLosndNYWAgwuLtG8940Pz2Xc1oLq3B+aKkuiIxFMh6Nrvw1w9fL98fjwVjZB9Aj5s qI4NnPlPh9pvGTZivq1/PmC1/N/IzEinhyl6K0GFRpDkCv3rBzbsTY/nMqAMtlLOA23O PJQR1t6YkInwGaANXvGDqDF1+5QR7r9dSHVJVQEj5AIOXBmsdQV3E2+vHXjk81u8w2Tc zTBRaLuLh/Ue4busd0zIp/1/LZ7e5/iLx0IbvOnZ4SC9HQPyAQ2kYyqBO2GV6Sa/za8s k738FRnB/SwR1aSQu2avzeemZUkWVeIjnoQxrMsiyLNeTbzXqidGxtHLaTSzDaVqxiWA QDDg== X-Gm-Message-State: AOAM530gEmA1Q8nhPk1kbKFuv8S7G1UsqM6n0fx+DfKkRHCp328VLHFv RLbD2+9CwNaRFjTc+BNT3IDdwGUuRKc6Lds5WRcwoJ45wBQ54KJD3ikmwJYhOo47lyUXSrmuWk4 ggNgI+fKTvR6hVDU= X-Received: by 2002:a1c:7915:: with SMTP id l21mr5564008wme.50.1598039714673; Fri, 21 Aug 2020 12:55:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZfSW+NJGIBaC+n4RDM9u1snPu4BoDTlXjjnSOilHbdh9a4EFTx8ZFLFS9nbPoRU0Sr1QUUQ== X-Received: by 2002:a1c:7915:: with SMTP id l21mr5563998wme.50.1598039714485; Fri, 21 Aug 2020 12:55:14 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id m1sm7070832wmc.28.2020.08.21.12.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:55:13 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 14/15] block/nvme: Extract nvme_poll_queue() Date: Fri, 21 Aug 2020 21:53:58 +0200 Message-Id: <20200821195359.1285345-15-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=205.139.110.61; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 01:00:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" As we want to do per-queue polling, extract the nvme_poll_queue() method which operates on a single queue. Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 85b235c8e6d..1cc2e9493d0 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -590,31 +590,41 @@ out: qemu_vfree(id); } +static bool nvme_poll_queue(NVMeQueuePair *q) +{ + bool progress = false; + + const size_t cqe_offset = q->cq.head * NVME_CQ_ENTRY_BYTES; + NvmeCqe *cqe = (NvmeCqe *)&q->cq.queue[cqe_offset]; + + /* + * Do an early check for completions. q->lock isn't needed because + * nvme_process_completion() only runs in the event loop thread and + * cannot race with itself. + */ + if ((le16_to_cpu(cqe->status) & 0x1) == q->cq_phase) { + return false; + } + + qemu_mutex_lock(&q->lock); + while (nvme_process_completion(q)) { + /* Keep polling */ + progress = true; + } + qemu_mutex_unlock(&q->lock); + + return progress; +} + static bool nvme_poll_queues(BDRVNVMeState *s) { bool progress = false; int i; for (i = 0; i < s->nr_queues; i++) { - NVMeQueuePair *q = s->queues[i]; - const size_t cqe_offset = q->cq.head * NVME_CQ_ENTRY_BYTES; - NvmeCqe *cqe = (NvmeCqe *)&q->cq.queue[cqe_offset]; - - /* - * Do an early check for completions. q->lock isn't needed because - * nvme_process_completion() only runs in the event loop thread and - * cannot race with itself. - */ - if ((le16_to_cpu(cqe->status) & 0x1) == q->cq_phase) { - continue; - } - - qemu_mutex_lock(&q->lock); - while (nvme_process_completion(q)) { - /* Keep polling */ + if (nvme_poll_queue(s->queues[i])) { progress = true; } - qemu_mutex_unlock(&q->lock); } return progress; } From patchwork Fri Aug 21 19:53:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1349516 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=dba3tgxY; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BYC7k0NJCz9sR4 for ; Sat, 22 Aug 2020 06:01:06 +1000 (AEST) Received: from localhost ([::1]:33290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9DDj-0001sd-8X for incoming@patchwork.ozlabs.org; Fri, 21 Aug 2020 16:01:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36876) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9D8K-0008HB-J2 for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:59873) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k9D8G-0002ub-TS for qemu-devel@nongnu.org; Fri, 21 Aug 2020 15:55:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598039723; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iv472Tg/IWNKyPux4o/KGHZT2x9lkLiYreRkrEkWN1E=; b=dba3tgxYTGLxknqlC7OuG6yJl+TuyRowzCfbrT3pTc97F5K/pze1kxVbdsyieUAsOs7mHJ +qkZtlajtuPZ9nSV6LV/z257OKD4JmY0uhUScmOTxLfu/gFTcxPo3H6BwYwfB4FALnlwLJ 0D3+BXanWv8B/lb+KnO9qpSmeJWcG1g= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-391-dEgzub30O66kSFU3ZSD84A-1; Fri, 21 Aug 2020 15:55:21 -0400 X-MC-Unique: dEgzub30O66kSFU3ZSD84A-1 Received: by mail-wm1-f72.google.com with SMTP id a82so1373263wmh.5 for ; Fri, 21 Aug 2020 12:55:21 -0700 (PDT) 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:mime-version:content-transfer-encoding; bh=iv472Tg/IWNKyPux4o/KGHZT2x9lkLiYreRkrEkWN1E=; b=VL+09MdnU2R/69k86SQYkiuqHfWB+xG0YFaGwZ3lVAav30EzK7Jc+WRK78ciqCecat CohFbB22xLyJyqZCT5jnAdV9o1DNUox+iMTCmmD6bUo/4GaaQzh28kcwnoPhpFYDtecb lvv3Obv78vMj7wE+P+xVIfYTDRdc87pwIyPYzdCKHR99fsLa+vjJQiJEFEGvk7LJwity 4fKoK4SLWdVpqcf4D1Zf+mCOp8drUACd0lL/YZEdpCU7M7rE1x6KawyCCEoVyDvaZKTm hg2Hjw5/Yfuc/K1H8gtyp/1/lv1LhF8NduoSGczN5hTl7/UNB6E6409gxbqHlNuFFA0Q P7RA== X-Gm-Message-State: AOAM531thcyEca8zjef9x2/xGsKPUprDlMVeKHQ26Bn5tQSnponi2lHx YcgHchJujMYrRSTsHlP7+jxeJJ2aojQRznicrl0C/aChs3d9r+D3drrBZhwygop5aJBiGxp0tVC W2FIUXHtOoyJJbok= X-Received: by 2002:a05:6000:120c:: with SMTP id e12mr4031090wrx.354.1598039720103; Fri, 21 Aug 2020 12:55:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwi5d2ZRS6uExby9mt6mS5NoA9Os3ZDOll6N3SqTG3MZR1YUs16h12hxbCvBioVKMR4jGe86w== X-Received: by 2002:a05:6000:120c:: with SMTP id e12mr4031077wrx.354.1598039719881; Fri, 21 Aug 2020 12:55:19 -0700 (PDT) Received: from x1w.redhat.com (121.red-81-40-121.staticip.rima-tde.net. [81.40.121.121]) by smtp.gmail.com with ESMTPSA id r22sm6925292wmh.45.2020.08.21.12.55.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 12:55:19 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v6 15/15] block/nvme: Use an array of EventNotifier Date: Fri, 21 Aug 2020 21:53:59 +0200 Message-Id: <20200821195359.1285345-16-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821195359.1285345-1-philmd@redhat.com> References: <20200821195359.1285345-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/21 04:26:32 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Stefano Garzarella Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" In preparation of using multiple IRQ (thus multiple eventfds) make BDRVNVMeState::irq_notifier an array (for now of a single element, the admin queue notifier). Reviewed-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Signed-off-by: Philippe Mathieu-Daudé --- block/nvme.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/block/nvme.c b/block/nvme.c index 1cc2e9493d0..86bfd487e2c 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -106,6 +106,12 @@ QEMU_BUILD_BUG_ON(offsetof(NVMeRegs, doorbells) != 0x1000); #define INDEX_ADMIN 0 #define INDEX_IO(n) (1 + n) +/* This driver shares a single MSIX IRQ for the admin and I/O queues */ +enum { + MSIX_SHARED_IRQ_IDX = 0, + MSIX_IRQ_COUNT = 1 +}; + struct BDRVNVMeState { AioContext *aio_context; QEMUVFIOState *vfio; @@ -120,7 +126,7 @@ struct BDRVNVMeState { /* How many uint32_t elements does each doorbell entry take. */ size_t doorbell_scale; bool write_cache_supported; - EventNotifier irq_notifier; + EventNotifier irq_notifier[MSIX_IRQ_COUNT]; uint64_t nsze; /* Namespace size reported by identify command */ int nsid; /* The namespace id to read/write data. */ @@ -631,7 +637,8 @@ static bool nvme_poll_queues(BDRVNVMeState *s) static void nvme_handle_event(EventNotifier *n) { - BDRVNVMeState *s = container_of(n, BDRVNVMeState, irq_notifier); + BDRVNVMeState *s = container_of(n, BDRVNVMeState, + irq_notifier[MSIX_SHARED_IRQ_IDX]); trace_nvme_handle_event(s); event_notifier_test_and_clear(n); @@ -683,7 +690,8 @@ out_error: static bool nvme_poll_cb(void *opaque) { EventNotifier *e = opaque; - BDRVNVMeState *s = container_of(e, BDRVNVMeState, irq_notifier); + BDRVNVMeState *s = container_of(e, BDRVNVMeState, + irq_notifier[MSIX_SHARED_IRQ_IDX]); trace_nvme_poll_cb(s); return nvme_poll_queues(s); @@ -705,7 +713,7 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, s->device = g_strdup(device); s->nsid = namespace; s->aio_context = bdrv_get_aio_context(bs); - ret = event_notifier_init(&s->irq_notifier, 0); + ret = event_notifier_init(&s->irq_notifier[MSIX_SHARED_IRQ_IDX], 0); if (ret) { error_setg(errp, "Failed to init event notifier"); return ret; @@ -784,12 +792,13 @@ static int nvme_init(BlockDriverState *bs, const char *device, int namespace, } } - ret = qemu_vfio_pci_init_irq(s->vfio, &s->irq_notifier, + ret = qemu_vfio_pci_init_irq(s->vfio, s->irq_notifier, VFIO_PCI_MSIX_IRQ_INDEX, errp); if (ret) { goto out; } - aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, + aio_set_event_notifier(bdrv_get_aio_context(bs), + &s->irq_notifier[MSIX_SHARED_IRQ_IDX], false, nvme_handle_event, nvme_poll_cb); nvme_identify(bs, namespace, &local_err); @@ -872,9 +881,10 @@ static void nvme_close(BlockDriverState *bs) nvme_free_queue_pair(s->queues[i]); } g_free(s->queues); - aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, + aio_set_event_notifier(bdrv_get_aio_context(bs), + &s->irq_notifier[MSIX_SHARED_IRQ_IDX], false, NULL, NULL); - event_notifier_cleanup(&s->irq_notifier); + event_notifier_cleanup(&s->irq_notifier[MSIX_SHARED_IRQ_IDX]); qemu_vfio_pci_unmap_bar(s->vfio, 0, (void *)s->regs, 0, NVME_BAR_SIZE); qemu_vfio_close(s->vfio); @@ -1381,7 +1391,8 @@ static void nvme_detach_aio_context(BlockDriverState *bs) q->completion_bh = NULL; } - aio_set_event_notifier(bdrv_get_aio_context(bs), &s->irq_notifier, + aio_set_event_notifier(bdrv_get_aio_context(bs), + &s->irq_notifier[MSIX_SHARED_IRQ_IDX], false, NULL, NULL); } @@ -1391,7 +1402,7 @@ static void nvme_attach_aio_context(BlockDriverState *bs, BDRVNVMeState *s = bs->opaque; s->aio_context = new_context; - aio_set_event_notifier(new_context, &s->irq_notifier, + aio_set_event_notifier(new_context, &s->irq_notifier[MSIX_SHARED_IRQ_IDX], false, nvme_handle_event, nvme_poll_cb); for (int i = 0; i < s->nr_queues; i++) {