From nobody Thu Apr 18 04:17:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of seabios.org designates 78.46.105.101 as permitted sender) client-ip=78.46.105.101; envelope-from=seabios-bounces@seabios.org; helo=coreboot.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of seabios.org designates 78.46.105.101 as permitted sender) smtp.mailfrom=seabios-bounces@seabios.org; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from coreboot.org (coreboot.org [78.46.105.101]) by mx.zohomail.com with SMTPS id 1627313675763177.9984471212572; Mon, 26 Jul 2021 08:34:35 -0700 (PDT) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by coreboot.org (Postfix) with ESMTPA id 760A910619E0; Mon, 26 Jul 2021 15:34:31 +0000 (UTC) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by coreboot.org (Postfix) with ESMTP id D4B3D10619BE for ; Mon, 26 Jul 2021 15:34:15 +0000 (UTC) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by mx0a-002c1b01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16QFWvJB013990; Mon, 26 Jul 2021 08:34:11 -0700 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by mx0a-002c1b01.pphosted.com with ESMTP id 3a1t40rq6n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 08:34:11 -0700 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by CH2PR02MB6952.namprd02.prod.outlook.com (2603:10b6:610:82::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.26; Mon, 26 Jul 2021 15:34:09 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) ([fe80::3167:f3a5:5f8c:284b]) by CH0PR02MB7898.namprd02.prod.outlook.com ([fe80::3167:f3a5:5f8c:284b%8]) with mapi id 15.20.4352.031; Mon, 26 Jul 2021 15:34:09 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=proofpoint20171006; bh=AKPNXOpiLBSzx08kbVAgdQILnr2IzZNUOVcZaWotKg0=; b=Jhvzfz9kAxCp8Vc9y0F0ow8qXTDpo+QyoDqllC8aqiyUZ7TjqtTqKV0mNue/wxlPFi5d zxmFnBv2db3Thw3pQBPoORHkIq8HqYE76TEyNmLx04oweQYPzy2ILDD9I/uBEf+IGqsy jAMhdf9p9RCMIcukcZLIEx4DaloAUEmKMNGOPfYBFvR+dAoXZ1zmCG0AM8hB1OnjzW3x EMPzFf/NeT4Q1ogrL9uLEAm9OEUTPJhL/Yq2sO4q25v/Lm1gobb02gSqt9hGqUeWxggs +alt93W7yNz+daeNUtTCcbP0usI7MGlYTI8oDdQkQ1sh5MyR7D4fFvGyiToPtS9KKbyI Mw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NWRYv62vzrgtytOGl/wDT7PlOS4vJ4VjcmQ8aknnbxZkGZU4aLuWXbMeBqugA653wUjhEU/6jTwAhMm7P05B0Ob4w7NHLbOZOwJ2hPx9JPEw61Un759mpG7moIJhsMj83y4z543jcfjMyP6zaakgg+rScJxt3tiswAHq4Jkd+OJoWELW5kmoHZgFWalrwP7ln8dwUT62z1nrh5O7CqRhmHPRshpZhYu0yrkLjgkBkoLaverKBQBI+RqBUss3ZY8+AJwfba7t/VLbPSNJ5qS11zrslP33iQRuXe32NHYR2Rl4EXHNY3hnZdDDfRiHFY5A8eUrwoeSE6h/+18n6ZVqXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AKPNXOpiLBSzx08kbVAgdQILnr2IzZNUOVcZaWotKg0=; b=m/3Onwun7TOF8SCXezMeGdkymlm2tEhYaWpT+s55CvHCcTjXnolY5nBXBpc2OUiuwy8CFsK1o+5uVLaBKMx9NjItasfFUXN2lN95Gc3OIhPU1N11Cz1EJqeG2xMXUezUAeUZNixBVNems4kZI3+BcWCG0zbC6QfUijFwTVR5KMId1LUpIORo4AEJoTGXb6GaFrC9+fEpGMfHq+scOm2YyPsqos3UbbbeJw7HkNGhs+TtC/XbXuJtmcIMAOcMQw7vSLXvIjtuNlvGzX8jBs7IHWXgBs3YVhPJRxm9pie7oj++Zhm9wyH+Y10DGUgf0BfkXRN/zQou/V5vM+OhV/bSOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none From: Thanos Makatos To: seabios@seabios.org Date: Mon, 26 Jul 2021 15:33:17 +0000 Message-Id: <20210726153316.234692-1-thanos.makatos@nutanix.com> X-ClientProxiedBy: BYAPR06CA0040.namprd06.prod.outlook.com (2603:10b6:a03:14b::17) To CH0PR02MB7898.namprd02.prod.outlook.com (2603:10b6:610:113::5) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7e407fa3-7b81-4ce0-ff50-08d9504acfb4 X-MS-TrafficTypeDiagnostic: CH2PR02MB6952: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-proofpoint-crosstenant: true X-MS-Oob-TLC-OOBClassifiers: OLM:260; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dnYZglMQgPitWhvXr6meDvTBJk89t2enqJPWcXFqQvBpRsgF5vyJnkwqsZSkt3fVw20DzUsK6ernzKwByzC0PvYjDPtKZLG1NJ4kI0OAOhqT19vQYc6VoGRO3VSD33wyEhMFgaQxORDcsh/x+LTK+GRYFO7y4+um19aG/SgHX7MRlziPHxwIzGKnhpz98l5uAap93DSG872CUg+GdRTwN3KRrUHB/jV1X8Gs3eYOp7IuSL+gFJ0Ch3ylELLEsZCIEtprw6pSbyWBO5Agm9Lq1o6udPp7F1vxQwkBrRVzDn9a+pFf5tAmc5mqFw8rESjeTvRfrEueVhdYshyKjzC5Y2rOSk9dmRm2b+Ev7zaaPf5QhsCs1tv7X8+Uc+mGxlzNlm94zLlX++FqnJ4yqRi9Hgv68G2Gj1z2ipA79ueesGgiD6iRnu9yYwoqjfXkVFMG4K5svRP98stXbJevFjclBRWEw1+FrWSIX8GZyg2shiifN2gBJHtxw5WAU8swQ80UIxtQvUxm08VYgLXhb69oC5V84F/zY1Kxa8IfsEqwTDhvjeHZahCb6PROsvKG5Q+uNkj2idYFFV7Wt+T+8JSfMikkQ2a4+zyYo3D/9rZwwLIqP4j2oqHaz8ccPpV58jCM5JN/mczrTRYbJ2jiKXukLbtQwspHdBhizsLBphCob8ZCNHYKzaNYlzdPNlAYBkB0YjmNGS+2tez6IxigYgyVUg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR02MB7898.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(136003)(376002)(396003)(346002)(39860400002)(52116002)(6486002)(66556008)(7696005)(316002)(66946007)(5660300002)(8676002)(4326008)(38350700002)(36756003)(66476007)(38100700002)(83380400001)(26005)(8936002)(6916009)(86362001)(956004)(6666004)(44832011)(478600001)(2906002)(2616005)(1076003)(107886003)(186003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?R/aI8mrnq+e/yIYiZhT64alxtaAIxtXP66BThvmDDEzJz45cfOZZelATgxJI?= =?us-ascii?Q?jKP27BQ1TqnxPp878GDuHGiMI+xIOVNcR2LQbzz3fVLsa/W5p2jDixOQEvfw?= =?us-ascii?Q?rYgRmbrw0jm3bWcqw5TgmgFtyCEFYrTM6submKGB9J2tMkRSNSIf3TMIjn8K?= =?us-ascii?Q?7nMvtK8RJEVBsh8ndFbkbLohBwQt14FwW+AhnVr4/i51OkwCcXFlruLWQ5RN?= =?us-ascii?Q?8mZkFu3zBD2JT+uu7jbbGfgTB0yYlLLpjIRAegD2elBWyuenaSZgaPyELzlG?= =?us-ascii?Q?4a3hstUYliiKlyg/7BE0iA96CMMDx4m9ftFDlB/1R9MEo3GH822ZeuKlWy7q?= =?us-ascii?Q?naKSGvLOACmtyRxsbLAJmwT3cwHmNrnynsL3NWpTb9ZASKV/YN9iTpxkNCXy?= =?us-ascii?Q?UDnpOJK4PMnEFDK4/EJt3RQ/Ze6Zdtp3hNAgpFY775aFwVJjNkYTkJu4YI5I?= =?us-ascii?Q?zAURwWZOKaLsYtODL8H80bISIIo8ofqm3ng7HpEtsAlyAPOk+XqsSvdJF+xZ?= =?us-ascii?Q?FL8MtLfro+/0GR6XqlWEmQNfflUjYLltkmv9S4yGbE+TY5eFNDWNclJHVUwZ?= =?us-ascii?Q?KIxaoIYwCpsOTEBs0v0NWttlRJGCbyzfGEMpPp7cBzs2ELFenm3M0cFm0u7J?= =?us-ascii?Q?8F+GGdrUbjmsHwzYJ1lSsClx1WoraE90NMvgeRe2tIr++VoRwtDG/jdKaTRZ?= =?us-ascii?Q?poUlFpYYxqz6E+BJY9PnKSJipT57wbjCVbJ9NgZOxuhGACXeX5cqNyf2f48w?= =?us-ascii?Q?kWG1wcxZzXGjWBqm+LuevA7yoSWAK2lvyZMH5nt7LVrq6G4BAxXvDfSuQS6G?= =?us-ascii?Q?kedA8GS6npX5AgUltFDjaL9yUmlgoYhiLzAaImbEf+oYrmJYNXox5nS8hfmc?= =?us-ascii?Q?BqWMOUaFJF8QsTHG4GacyXV3Y798lNHtBVqasYekPebZ9h/XD4KHUSdJ06aF?= =?us-ascii?Q?GEuzkaFiWbfvpeK+vBZ4RSLTRNdu6HBd0BL+jXkSU7DGbkP5gOcdoa1gFl0b?= =?us-ascii?Q?SKIRbon08jmzK795LrsjUDGvLHhEOrsBr3Goy52z4VXQdL2BYBDjG7lXxSKv?= =?us-ascii?Q?QReodcQ4eD51xk5w+OSepRgL2pDRGVBME6mlUTE2j9XtZVNYKmJ+u8CiNlZU?= =?us-ascii?Q?o91VpcgvIzoYmvvCj5qiXAiNP0mPht2K3esAjGrniiXTboJ5ySiwHIwLF/Tu?= =?us-ascii?Q?yRGfMEIUSNkowW80ZMhmhNscAolu1vW1eMUUbgypUhK6m9bBHuX8g+pytUe2?= =?us-ascii?Q?4WGn7ylsZ0DZek4/lctn+AcBj/LjsrsfQNVIEXJVCNd59v1/rTZwdnN+H8p4?= =?us-ascii?Q?MiqFlcFduVcOVEVMlTsrkm5U?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e407fa3-7b81-4ce0-ff50-08d9504acfb4 X-MS-Exchange-CrossTenant-AuthSource: CH0PR02MB7898.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2021 15:34:09.3597 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ja3yssdh/y3XN5dmV804kYpMsyeornOBgwSfePL/icTpWxXDpMkW8WTbwru4nfNAdXZT4Ze7Vs1qgBxk/8GFe+ZOh++POLtdU1/Bc7eYn8Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR02MB6952 X-Proofpoint-ORIG-GUID: rhYqxmmLf7vVvv7QiCt62jBQnvbprvq9 X-Proofpoint-GUID: rhYqxmmLf7vVvv7QiCt62jBQnvbprvq9 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-07-26_10:2021-07-26,2021-07-26 signatures=0 X-Proofpoint-Spam-Reason: safe Message-ID-Hash: B7XNRNX22V2MHWIXEPCOZ4UUKDM6FFYJ X-Message-ID-Hash: B7XNRNX22V2MHWIXEPCOZ4UUKDM6FFYJ X-MailFrom: thanos.makatos@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-seabios.seabios.org-0; header-match-seabios.seabios.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: kraxel@redhat.com, Thanos Makatos X-Mailman-Version: 3.3.4 Precedence: list Subject: [SeaBIOS] [PATCH v2] nvme: don't keep probing namespaces after an active one has been found List-Id: SeaBIOS mailing list Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable Authentication-Results: coreboot.org; auth=pass smtp.auth=mailman@coreboot.org smtp.mailfrom=seabios-bounces@seabios.org X-Spamd-Bar: / X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1627313677318100001 Content-Type: text/plain; charset="utf-8" The current implementation keeps probing NVMe namespaces even if an active one has been found. This is unnecessary and most importantly results in memory allocation failure if the are more than a few dozens of namespaces. Also, not probing the remaining namespaces after having found an active one reduces boot time. Signed-off-by: Thanos Makatos --- Changed since v1: * remove unnecessary code changes --- src/hw/nvme.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/hw/nvme.c b/src/hw/nvme.c index f035fa2..872ef43 100644 --- a/src/hw/nvme.c +++ b/src/hw/nvme.c @@ -233,9 +233,11 @@ nvme_admin_identify_ns(struct nvme_ctrl *ctrl, u32 ns_= id) ns_id)->ns; } =20 -static void +int nvme_probe_ns(struct nvme_ctrl *ctrl, u32 ns_idx, u8 mdts) { + int ret =3D -1; + u32 ns_id =3D ns_idx + 1; =20 struct nvme_identify_ns *id =3D nvme_admin_identify_ns(ctrl, ns_id); @@ -303,9 +305,11 @@ nvme_probe_ns(struct nvme_ctrl *ctrl, u32 ns_idx, u8 m= dts) =20 dprintf(3, "%s\n", desc); boot_add_hd(&ns->drive, desc, bootprio_find_pci_device(ctrl->pci)); + ret =3D 0; =20 free_buffer: free (id); + return ret; } =20 =20 @@ -560,6 +564,13 @@ nvme_wait_csts_rdy(struct nvme_ctrl *ctrl, unsigned rd= y) return 0; } =20 +static void +nvme_destroy_io_queues(struct nvme_ctrl *ctrl) +{ + nvme_destroy_sq(&ctrl->io_sq); + nvme_destroy_cq(&ctrl->io_cq); +} + /* Returns 0 on success. */ static int nvme_controller_enable(struct nvme_ctrl *ctrl) @@ -628,15 +639,22 @@ nvme_controller_enable(struct nvme_ctrl *ctrl) goto err_destroy_admin_sq; } =20 - /* Populate namespace IDs */ + /* Find first active namespace. */ int ns_idx; - for (ns_idx =3D 0; ns_idx < ctrl->ns_count; ns_idx++) { - nvme_probe_ns(ctrl, ns_idx, identify->mdts); + rc =3D -1; + for (ns_idx =3D 0; ns_idx < ctrl->ns_count && rc; ns_idx++) { + rc =3D nvme_probe_ns(ctrl, ns_idx, identify->mdts); + } + if (rc) { + dprintf(3, "no active NVMe namespace\n"); + goto err_destroy_ioq; } =20 dprintf(3, "NVMe initialization complete!\n"); return 0; =20 + err_destroy_ioq: + nvme_destroy_io_queues(ctrl); err_destroy_admin_sq: nvme_destroy_sq(&ctrl->admin_sq); err_destroy_admin_cq: --=20 2.22.3 _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-leave@seabios.org