From nobody Wed Dec 10 22:53:57 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4dRWH923Fzz6Jqjs for ; Wed, 10 Dec 2025 22:53:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dRWH90mBYz3PlJ for ; Wed, 10 Dec 2025 22:53:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1765407237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6LMYpKNt0ejBgGdBhpxzsVRJsJCtVSJbLf4U1hgHK2I=; b=ekMQR80/ZEtlnKXD+QKJXAHDrgDotj0FXX/Fjpr/wH9evS+PXY7VUN+2ZnOAmPcB6KCVtj 9C6rJqg1R5/70AuKWPXsjaRUwlZAODB+5S8pYFtW1OmxAezzH7tImuAkr/iPUr2845wAJu KMtUg60SS8C7geGNxCdBRriCnZppQnWA2frU/rS4YgdCudl0xLWSQWRsD+f6q3/wnSJb1U a49pyEi3CTp+SuqORURIYAdyz6QIhyIBtdoDInY9eEDyb7lKwgNzFJ02CDQ40UOxPj7nm/ L/OzcHYIzsd4hkCxUAOZYb4B6bTiD1tz48R4+f9b/y0JQ/dqN1bifkweUn/xqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1765407237; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6LMYpKNt0ejBgGdBhpxzsVRJsJCtVSJbLf4U1hgHK2I=; b=M80HWBvSAp6d9UE5ouqTjCchFmh729FB3ef77bjo/O0r0oEZn7GbRMDHjqwK0tDCmm+77H 9lzLwHmbMsaUBS2Ok7KfeU0eJ4NUAQga2watNzhssccovgO1dNNUcEhxSya5fxllqnzi7t pYZlZNOaeNWwhU20Iu5EdXJP57sc35wBLERS6xfur+WN11mEd3ykvrNpzLLlyTFLuhIP19 uzCR8QLkS/sfA/gI0lYFIUn1O9+TjjC+Zjykf6hPmtKx6zIO+C4zfSVqJqWCT0Viz5jpMS hF8Jp7OYXAHoIfoHq85e95s/hjMnZNAI2Ut7zsFmv9irq4Lmr9IGoaRhE55MkQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1765407237; a=rsa-sha256; cv=none; b=K6/0kczLaHNPOplg1d47/aTl4I4S8L9U9GWRRWk/vVbTrofzGEw6VIx4TvV7d+NRBRPjgU w7xioOyBzwzk3xfi5MJjOyECJiTxRrLFT4dlHq4J+IUhBIBIOEYvSG5l05YZrxWdK9txc/ 1YPLIWMHIf17+08xZhNOWg/SmWO6KNTJmVTgJzpmPudPovspXcuiD5brxSS9WOkQGg2Xkt vFeU/eUIEmb/Pqz37CkuIbEKZgHXqLiPVm47eXvPlHd+sNB6qUeiofbPtjVNiuSLSQyHjk Q8ZKZE6eXYkCDqX5AvsHk3vhAF8mlU1rn/wDvLwo2A6OfRcnk8z7G8PU4HbIsw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dRWH90HtSz14j2 for ; Wed, 10 Dec 2025 22:53:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id a0df by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 10 Dec 2025 22:53:57 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: b6b52a9b8011 - main - nvme: Notify failure with newbus call List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b6b52a9b8011d9893899ecad87948ef346858960 Auto-Submitted: auto-generated Date: Wed, 10 Dec 2025 22:53:57 +0000 Message-Id: <6939fa05.a0df.57d52f01@gitrepo.freebsd.org> The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=b6b52a9b8011d9893899ecad87948ef346858960 commit b6b52a9b8011d9893899ecad87948ef346858960 Author: Warner Losh AuthorDate: 2025-12-10 22:52:53 +0000 Commit: Warner Losh CommitDate: 2025-12-10 22:52:53 +0000 nvme: Notify failure with newbus call Sponsored by: Netflix Reviewed by: dab Differential Revision: https://reviews.freebsd.org/D51391 --- sys/dev/nvme/nvme.c | 23 ++++++++++------------- sys/dev/nvme/nvme_ctrlr.c | 4 ++-- sys/dev/nvme/nvme_private.h | 2 +- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/sys/dev/nvme/nvme.c b/sys/dev/nvme/nvme.c index dcd0851dd56a..2571c6fe2973 100644 --- a/sys/dev/nvme/nvme.c +++ b/sys/dev/nvme/nvme.c @@ -208,11 +208,10 @@ nvme_notify_async(struct nvme_controller *ctrlr, } void -nvme_notify_fail_consumers(struct nvme_controller *ctrlr) +nvme_notify_fail(struct nvme_controller *ctrlr) { - struct nvme_consumer *cons; - void *ctrlr_cookie; - uint32_t i; + device_t *children; + int n_children; /* * This controller failed during initialization (i.e. IDENTIFY @@ -223,15 +222,13 @@ nvme_notify_fail_consumers(struct nvme_controller *ctrlr) if (!ctrlr->is_initialized) return; - for (i = 0; i < NVME_MAX_CONSUMERS; i++) { - cons = &nvme_consumer[i]; - if (cons->id != INVALID_CONSUMER_ID && - (ctrlr_cookie = ctrlr->cons_cookie[i]) != NULL) { - ctrlr->cons_cookie[i] = NULL; - if (cons->fail_fn != NULL) - cons->fail_fn(ctrlr_cookie); - } - } + if (device_get_children(ctrlr->dev, &children, &n_children) != 0) + return; + + for (int i = 0; i < n_children; i++) + NVME_CONTROLLER_FAILED(children[i]); + + free(children, M_TEMP); } struct nvme_consumer * diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index 2f28d8f5cb7f..6b875060d4b1 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -256,7 +256,7 @@ nvme_ctrlr_fail(struct nvme_controller *ctrlr, bool admin_also) nvme_qpair_fail(&ctrlr->ioq[i]); } } - nvme_notify_fail_consumers(ctrlr); + nvme_notify_fail(ctrlr); } /* @@ -1723,7 +1723,7 @@ nvme_ctrlr_destruct(struct nvme_controller *ctrlr, device_t dev) if (gone) nvme_ctrlr_fail(ctrlr, true); else - nvme_notify_fail_consumers(ctrlr); + nvme_notify_fail(ctrlr); for (i = 0; i < NVME_MAX_NAMESPACES; i++) nvme_ns_destruct(&ctrlr->ns[i]); diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h index 27d70d120307..04756c6c74a7 100644 --- a/sys/dev/nvme/nvme_private.h +++ b/sys/dev/nvme/nvme_private.h @@ -560,7 +560,7 @@ void nvme_notify_async(struct nvme_controller *ctrlr, const struct nvme_completion *async_cpl, uint32_t log_page_id, void *log_page_buffer, uint32_t log_page_size); -void nvme_notify_fail_consumers(struct nvme_controller *ctrlr); +void nvme_notify_fail(struct nvme_controller *ctrlr); void nvme_ctrlr_shared_handler(void *arg); void nvme_ctrlr_poll(struct nvme_controller *ctrlr);