From nobody Wed Aug 26 00:57:07 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 4hV5pD2pZVz6qLCm for ; Wed, 26 Aug 2026 00:57:08 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hV5pC66QXz3vM0 for ; Wed, 26 Aug 2026 00:57:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787705827; 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=WjEi6xuVKbtLHPtjVaD5dtoVLaMtC8h4jlLb1C8oqJ8=; b=H/k7z3AOebhz9ZxvBU5vWWyB+0Zviw7ztl1QdRI3s2HGvTWYQw+P+tpmwQ6WW7YHiYDo5g eDaYcDZYGSNMj7I4BOhKOJtbVfpXa5BUUpC6r8JjUNiuG1LVVjNBBqVBOdnBKV+KuD+hqV JNY0BMYoSFZDZQgNtkTi8PPnITSshj/IS6iTJ3N1pMjESHYF4td5+Qo+J7x7oJcbrk9Cjm gmLIZY9gUagpUWhhBwnjti1dmkbheaQuXCuyr1koyKjllv+bhCl3tfk7nRFWIo+2Rz9FmI eZbO0PLOOsplazEQQUtno1MfOQNsZZFfUEYyFOQMhKHaxFZAH0+vr60J5OUsbw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787705827; a=rsa-sha256; cv=none; b=Ncb68/q/o2WXqPlziazDT77lB+risHIp5VlaFpidwMVZzdsYjz86tMFqYbNgJaX32RQS15 s9Ib9NPRNHO9/OzOn3XGdUAF/c+kM2LqVOXinpT2PxYQtqjSfELEW0gFZq7T5HHGGP73ZE NUclngHeqFFSFdoLLB9warF+EkE9msb207VyOHF5cn9CAejdehbZSKBCcVEV2QVsMJWr08 Ocg/HDChruGS+tRvNiZTsLK9jp9PsYvjrzTx9FKG3tTXVfmqV69LrM8HAWZDENilgNPm+D 2ljFOJDv+QNequ5XYYm7t7vZyrsQnF98rnyNujbOsxUh+okjL0crwi79DYH9uw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787705827; 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=WjEi6xuVKbtLHPtjVaD5dtoVLaMtC8h4jlLb1C8oqJ8=; b=i6JlOqQbADplg0HVadrptOHHUaGE/1Yn/PCd+Pe0dx1adWAfBJPMwCBqj79tJiyqRBEIRo 0nHnR8RUuLzOpQLay7vZd8vRCo+m5sbyt45m+9Lyd7jxfwalfwWlQiYhDs7WYlyus/fwgT 2WQvhEpI6Ls6KZ2z28ZPGdYqI6QBTengLT8Dy+nH1RpC+RWQqVlQKYU0EK4YYWXQm3iHb5 DalsSKmQAswrvZeQ5kmeh18o00E0V4J2+DQLh9FFUPAfQ2eyycVOTzpidFgLmLu/bvCmiN LbQVK3lFwlnWTR6nALRnpKBNg6A5y8ejUGaLdIsRS1d5r87ZIe7tou/tCN6xcw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hV5pC4KxnzvB for ; Wed, 26 Aug 2026 00:57:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42dcc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 26 Aug 2026 00:57:07 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 95cf012c8da1 - stable/15 - ixgbe: Defer firmware recovery transitions to iflib List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org List-Id: 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: 95cf012c8da1c5c1a0cf3ab564edc78b24b57de4 Auto-Submitted: auto-generated Date: Wed, 26 Aug 2026 00:57:07 +0000 Message-Id: <6a8e39e3.42dcc.32fec746@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=95cf012c8da1c5c1a0cf3ab564edc78b24b57de4 commit 95cf012c8da1c5c1a0cf3ab564edc78b24b57de4 Author: Kevin Bowling AuthorDate: 2026-08-12 03:36:03 +0000 Commit: Kevin Bowling CommitDate: 2026-08-26 00:56:52 +0000 ixgbe: Defer firmware recovery transitions to iflib The firmware-mode callout invoked ixgbe_if_stop() directly. This performed a full device reset without the iflib context lock or the iflib queue lifecycle. It could also poll the E610 firmware command interface from callout context while identification was active. Request an iflib reset from the callout instead. Reject initialization while firmware recovery remains active. This leaves the interface stopped and lets iflib publish that state. Request initialization when firmware exits recovery so an administratively-up interface can recover without operator intervention. (cherry picked from commit 43aa553ef45a4345bdfabadae40d811730151144) --- sys/dev/ixgbe/if_ix.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c index 78fcabc3d68b..df3435434525 100644 --- a/sys/dev/ixgbe/if_ix.c +++ b/sys/dev/ixgbe/if_ix.c @@ -4026,6 +4026,10 @@ ixgbe_if_init(if_ctx_t ctx) int i, j, err; INIT_DEBUGOUT("ixgbe_if_init: begin"); + if (atomic_load_acq_int(&sc->recovery_mode)) { + iflib_init_failed(ctx); + return; + } /* Preserve the largest frame requested by the PF or an active VF. */ sc->max_frame_size = if_getmtu(ifp) + IXGBE_MTU_HDR; @@ -4569,11 +4573,15 @@ ixgbe_fw_mode_timer(void *arg) " Adapters and Devices User Guide for details on" " firmware recovery mode.\n"); - if (hw->adapter_stopped == FALSE) - ixgbe_if_stop(sc->ctx); + /* Stop and publish the failure from the iflib taskqueue. */ + iflib_request_reset_if_up(sc->ctx); + iflib_admin_intr_deferred(sc->ctx); } - } else - atomic_cmpset_acq_int(&sc->recovery_mode, 1, 0); + } else if (atomic_cmpset_acq_int(&sc->recovery_mode, 1, 0)) { + /* Reinitialize an interface which was up when recovery began. */ + iflib_request_reset_if_up(sc->ctx); + iflib_admin_intr_deferred(sc->ctx); + } callout_reset(&sc->fw_mode_timer, hz,