From nobody Wed Aug 26 01:07:09 2026 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 4hV61p1fQVz6qM2D for ; Wed, 26 Aug 2026 01:07:10 +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 4hV61n3hpHz426x for ; Wed, 26 Aug 2026 01:07:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787706429; 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=NmzMkdWMf7eel0+I4q6KZ55ZNR1dprTVlaMAAvz8g6g=; b=lcyfxmEhuU6Af4hN24Da0XVZxGUXwLGjZr5TJkh3HN21DePkA2bQ4jgUFTYiCBwlI8tBKv ketJ/oSybk6hZ0/Tlwwp2xeh+q0HZXul0DoX+XT7eOJBcG5dxCsekXhSgFuH+V26HqxZup iuhVXPO2TqwpTSubfzopBsmB2UwwQzNLmj+RFQp9ASP954IOZ318bVxoENuGz1aKtEMICH TWcfkbcTe1OrEyFg7mUuWX7O7clx/DuNjOWI3/5N/afqmg2BTBCHRXFXW48XovvEwgJC6k reuPaCxCJvQCA/o758oMn7lW3ae75/1TbBeP1396/p8Vjen94mklKWhY41HL+g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787706429; a=rsa-sha256; cv=none; b=crDjbsfBMyP3ZwdrsxkCs+FACedu5vQ28TmLxBgBWBc66oPGyxEKhQac7A5pLAulRmZ5FH //aH2LOzDdPemgTM66W369+0uZT83EaiwJbVPi5VH5+W+wNnwveg6sXJbTljdT0YMHorvA Z/mik4ghUAbHUxaJtRxWMb/8LwDauuONW9hzO1RPqZzGZuEkjfY+C0qcOL7BrdCusV+i8r 5KCTg0zZ6iPdklqMiyQY+X/2WzYbCboVAUrcFVa3I/HIuLalHqQC0/JDw6Kdy24LiEE8Gd uNf0ECI0/0+i2z+iFhj6jpmvhWLGIseL3OCRCqZooq+ngIhktapdBGXGeWJPSA== 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=1787706429; 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=NmzMkdWMf7eel0+I4q6KZ55ZNR1dprTVlaMAAvz8g6g=; b=KL8H/IwLixemg3gZdz1S8koAVp66xfNzRwE596oNeaJ9EW8oR0OmAkRqmW1pe9ojB476rA VApKdQZ8dKNs1VwanKG2WoO9tjSv9O8omCpnNndNCF0Il9fyR1TW2RmZ0npqgFqhFPxuZd B9L+5MvvlEpXJ75gJuCj0qFlnJML9Bk6RhP9xDAZVkE7gJOJ6XJqEVqXaM6YarXRehwKkm 5jPQLqN07caBbsxHe7zO2iNC789RaQ9LSRWV/tS8bWZynltj8pZOXPVR2Tw5LljOVMWmVf a4+rndqGcplbCEtGjLvPPbrklDCRh9qHz/N3rpVChdShvaCzn586CE0UqUqpYA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hV61n2kNLz1DH for ; Wed, 26 Aug 2026 01:07:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 429e4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 26 Aug 2026 01:07:09 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: f89ea9e7b61b - stable/14 - ixgbe: Defer firmware recovery transitions to iflib 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 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/14 X-Git-Reftype: branch X-Git-Commit: f89ea9e7b61b2d6ba5c1ddcd6795dd4463f1f080 Auto-Submitted: auto-generated Date: Wed, 26 Aug 2026 01:07:09 +0000 Message-Id: <6a8e3c3d.429e4.2609c551@gitrepo.freebsd.org> The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=f89ea9e7b61b2d6ba5c1ddcd6795dd4463f1f080 commit f89ea9e7b61b2d6ba5c1ddcd6795dd4463f1f080 Author: Kevin Bowling AuthorDate: 2026-08-12 03:36:03 +0000 Commit: Kevin Bowling CommitDate: 2026-08-26 01:02:47 +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,