From nobody Thu Oct 29 06:38:31 2026 X-Original-To: dev-commits-src-branches@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 4jFZLc1rGDz6xtqx for ; Thu, 29 Oct 2026 06:38:32 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jFZLb5V6Pz3G5s for ; Thu, 29 Oct 2026 06:38:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793255911; 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=P5YRVY7EqPvDLIDP7oMbAYg9tGgRLqoOWgt6IUd46/0=; b=E3bPan4kTFBnJXVyJqRJtDaC257sboLnXDoDElg7WKVAC2cOf9XpPIT+vQCcZa47AxGyDP /tJSgWMcUKI3Ud82MO2A/A+/g2xcE7WWkYPl88VCnOo+9cjiK6BsuiNueEs/zs3DP9w9pz 9u2P8za51Zh1XeWMJRoaDLkRszPczs5O1y0lgWuxOnAbUQvy39NgLiXz9Ngf4uyKeg1PDJ nOZ96dKgEwFbU5YPL9RQdk/ZrFsMPmpARVqpzKfnrmrSB5YSxSm5jMNBnvWxNMwuoEOGTn b6QhkR2OWjCBALdI4itcnncKDt26YUOoaC3XmEDw8wSBqbe8ejASORbbDxa0kA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793255911; b=fuJxYPGxTedLwr+Vs+EnqPp9eK7jb0toW+FjEDGaZyNTcuz9taJBi3jOi9trnvRYJ61ZfQ y3C6+1yIJfFoiDy57c+PTfU6w1yl2KW+KWNmS2SnYXndZcS1PuC7tGhLTGFGp4IvhVd1NC 5kkcWGx6Qboo21CgaVo4llUB9WgBZZobvYYL2t61y5hOZrdFzVdaPn0661sz+6JR0LHW9D WhSzxuf+0qrrmWH70kp3s9yqhGUED+0VVo9bkQtxI2qkTsLnPqthBHgdtojSjLRdvpJa4e +srwQ15DEf7hmlMNuZaKQ8MIxyI9QcPmWwhdh6YUuQQ9eF81areLiMQvQnNuZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793255911; 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=P5YRVY7EqPvDLIDP7oMbAYg9tGgRLqoOWgt6IUd46/0=; b=WxwqxJ62TkBb/xdKYNJqzOgGXavtQFQbP3MAM32MiGZw3dw5yTu0pM7UM1fuUl51qrkjmb kWFJIGwqg+N6BSWH5w2JBOt6PyMjOLRHIFreBVgmrvWuWqPpaPpqvYIsR5vF++pZhVxs3C Eq6C6cqKWR9G7o5xIOebSudwMU/YYEvDAc/Z3LNgAGa+TZ6fvnoUzovMP1bqKNaYWINpBt Q3o1ralzvsy4tP1GxZhmiK5spiGP8OIM5nSXCbw1pEejW6RfRKVQoRrxiK4fj2fbPAvBGg 0mtnQj6PZ3HTXIzvsQfwECerJcl87j+nJzYjpqym18A05IRA5U275Bj4OpPyoQ== 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 4jFZLb53ygzRpt for ; Thu, 29 Oct 2026 06:38:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e38d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 06:38:31 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: f8d0a9f2d66a - stable/15 - ice: Quiesce queues after partial initialization List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: Commits to the stable branches of the FreeBSD src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: f8d0a9f2d66ad8a137c6898a5de9d6a449094c56 Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 06:38:31 +0000 Message-Id: <6ae2e9e7.3e38d.2d83ea70@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=f8d0a9f2d66ad8a137c6898a5de9d6a449094c56 commit f8d0a9f2d66ad8a137c6898a5de9d6a449094c56 Author: Kevin Bowling AuthorDate: 2026-09-03 06:05:23 +0000 Commit: Kevin Bowling CommitDate: 2026-10-29 06:38:23 +0000 ice: Quiesce queues after partial initialization ice_if_init marks DRIVER_INITIALIZED only after all queue and filter operations succeed, so ice_if_stop intentionally does nothing after an initialization failure. Each failure path must therefore unwind any hardware queues it may have configured before iflib releases their DMA mappings. Tx setup enables firmware scheduler queues one at a time, and Rx enable similarly processes queues incrementally. Route failures from both operations through cleanup paths for both the PF and mirror VSIs. The cleanup helpers tolerate queues which were not configured, so they also cover failures on the first queue. This leaves failed initialization stopped as required by the iflib_init_failed contract. Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D59331 (cherry picked from commit fc809d6a6191ef4e881119ec00ea752d1ed6cc37) --- sys/dev/ice/ice_lib.c | 4 ++-- sys/dev/ice/if_ice_iflib.c | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/sys/dev/ice/ice_lib.c b/sys/dev/ice/ice_lib.c index 2e29ed5f2073..eba31be0a7dd 100644 --- a/sys/dev/ice/ice_lib.c +++ b/sys/dev/ice/ice_lib.c @@ -1929,7 +1929,7 @@ ice_control_rx_queue(struct ice_vsi *vsi, u16 qidx, bool enable) int ice_control_all_rx_queues(struct ice_vsi *vsi, bool enable) { - int i, err; + int i, err = 0; /* TODO: amortize waits by changing all queues up front and then * checking their status afterwards. This will become more necessary @@ -1941,7 +1941,7 @@ ice_control_all_rx_queues(struct ice_vsi *vsi, bool enable) break; } - return (0); + return (err); } /** diff --git a/sys/dev/ice/if_ice_iflib.c b/sys/dev/ice/if_ice_iflib.c index 4684f0d94111..d0b36ceb25fb 100644 --- a/sys/dev/ice/if_ice_iflib.c +++ b/sys/dev/ice/if_ice_iflib.c @@ -2121,7 +2121,7 @@ ice_if_init(if_ctx_t ctx) device_printf(dev, "Unable to configure the main VSI for Tx: %s\n", ice_err_str(err)); - goto err_init_failed; + goto err_cleanup_tx; } err = ice_cfg_vsi_for_rx(&sc->pf_vsi); @@ -2135,9 +2135,9 @@ ice_if_init(if_ctx_t ctx) err = ice_control_all_rx_queues(&sc->pf_vsi, true); if (err) { device_printf(dev, - "Unable to enable Rx rings for transmit: %s\n", + "Unable to enable Rx rings for receive: %s\n", ice_err_str(err)); - goto err_cleanup_tx; + goto err_stop_rx; } err = ice_cfg_pf_default_mac_filters(sc); @@ -4517,7 +4517,7 @@ ice_subif_if_init(if_ctx_t ctx) device_printf(dev, "Unable to configure subif VSI for Tx: %s\n", ice_err_str(err)); - goto err_init_failed; + goto err_cleanup_tx; } err = ice_cfg_vsi_for_rx(vsi); @@ -4533,7 +4533,7 @@ ice_subif_if_init(if_ctx_t ctx) device_printf(dev, "Unable to enable subif Rx rings for receive: %s\n", ice_err_str(err)); - goto err_cleanup_tx; + goto err_stop_rx; } ice_configure_all_rxq_interrupts(vsi); @@ -4542,6 +4542,8 @@ ice_subif_if_init(if_ctx_t ctx) ice_set_state(&mif->state, ICE_STATE_DRIVER_INITIALIZED); return; +err_stop_rx: + ice_control_all_rx_queues(vsi, false); err_cleanup_tx: ice_vsi_disable_tx(vsi); err_init_failed: