From nobody Wed Aug 12 03:53:30 2026 X-Original-To: dev-commits-src-main@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 4hKZNB5R99z6mGHN for ; Wed, 12 Aug 2026 03:53:30 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hKZNB44BVz3tLL for ; Wed, 12 Aug 2026 03:53:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786506810; 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=FlCzMluqgO6HMA3D9I5HO0x34gCPOHVijqmY5h+Itoo=; b=ILF4GvGugWnUtnEtmB5n+joijcYBkrQOttylN51wDWklKhzEhUNHtdOaprt2eVuU78E/jq zd6Zv3yfig6aLUxfsrFi7D6ruZ8fYF0MQ+7LXOHA1JaQqXJhQGhWRKicXwba9ihhiX9BFe tOUGk/a5Cs0oLZQivKPcZGkYrbyoChu1AjHe+Y9uRAqpOR1UVpoLstFZKsz2D9Mm0j6yWo /CPzSA5BWxTJngD4N/nJqTT4nDHs3yyJMKvFD57UIMyFPkInyRNxBANyAiXBEtUPzFu72D 8qIM/DKMcWbUXJFfK4Zn+FAlUBJHbx7Lo65JyIqqkZ86wtMaQ6xYbnLVqFOXHw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786506810; a=rsa-sha256; cv=none; b=ySgsFYLULGfMNUPPBzGvbzIveOaQlXOeksmrNPbO8QgOx8mOl4z/6/o4/fvLi9f1NPEyXc MWxVru64zUCTTT7ATfysUKfNBRZEHLogVcWYTm8czobyUtyWqaNrILbff/19RXq22tNGwu naoKmTY3oE17WF33CyIBEayz4NxlAtxFC+kpK7CgheK46UG1Jpx44USuoYcJ/FACYi54c/ 7EC2RjASesUylywaAYm/4iop+YtfNoCApVFNdfCS8yVPvxhM0FTjb4ksdxR+KijAkcCiKX BSg8e+13lTdBE1JeK3uZAlWOYQHFzpqL9GIsYBaOyEOviuyMYCO8HLjNm6IZEg== 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=1786506810; 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=FlCzMluqgO6HMA3D9I5HO0x34gCPOHVijqmY5h+Itoo=; b=gWo1o3Aby9TL2UmFw49mNPjE4ixTwEWh2iv1sxaUY1eAB9+xowr1PtVOmwvJnxYVAV/tyY FBd3/gewHzD803JRnnkMlKu6fbjY1kjFwBI2+X0y/a7CymZM4LkJB8+pmSxUKUOhf+MubA soFaEiSlH9cQExIyAild7aq0DgH4bYiehAjpXD2zuAudSZg+Hnvgq4W0o7C8pYAy10ZHmZ AjBis4v88xxavm7cHGob0utrL2MQIw/V2DZqC8JQapPIDNtLpCYacnUiD0szmWsFMpjM1i sSzzNHlR+sViE9AbU8MoxoL5i3+DOnmmfE9NT1I6xdpIXjDO9/bYS2d4K4hzVA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hKZNB30dlz1NZl for ; Wed, 12 Aug 2026 03:53:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a2e8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 12 Aug 2026 03:53:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 43aa553ef45a - main - ixgbe: Defer firmware recovery transitions to iflib List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 43aa553ef45a4345bdfabadae40d811730151144 Auto-Submitted: auto-generated Date: Wed, 12 Aug 2026 03:53:30 +0000 Message-Id: <6a7bee3a.3a2e8.18d06946@gitrepo.freebsd.org> The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=43aa553ef45a4345bdfabadae40d811730151144 commit 43aa553ef45a4345bdfabadae40d811730151144 Author: Kevin Bowling AuthorDate: 2026-08-12 03:36:03 +0000 Commit: Kevin Bowling CommitDate: 2026-08-12 03:39:40 +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. MFC after: 2 weeks --- 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 c12956fb6e07..0ec9dd584b60 100644 --- a/sys/dev/ixgbe/if_ix.c +++ b/sys/dev/ixgbe/if_ix.c @@ -4035,6 +4035,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; @@ -4578,11 +4582,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,