From nobody Mon Mar 23 00:24:24 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 4ffDST035Qz6WJC8 for ; Mon, 23 Mar 2026 00:24:25 +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" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ffDSS4Pp1z3tZp for ; Mon, 23 Mar 2026 00:24:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774225464; 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=Id/pLZAwxr7WpnR39bHC8KINrbK/UkiBK6nMYXl3eU8=; b=GI62764edNr9+HpVR1dG9MZcuK3UfCYFA7uDtKmgGU0JTmRWAf7IJQ6aKnWLDtnfOKAynK Bvbb4+kkf+TZFffEuTNr3ii5Dabf0B4VrY87ldQDp2Hjc8OFvEhpzdclSrLOejxBh+2P6X jT65bR1BTEwoOceeui00hOPuyAUBqrc8reWYFJU5MYJaXzwmWQCHBEb2dcjyBcKJx6irQE m5ahVBkBIAz2ZWymcKBdXkq0Zd/TAK0+RtbbkCoJziIr8+AgLXGGmnkTsrzKEyTezUPkNH 5sm/cKPcB8B5+U0GZ4lBbLCdeucrpNVwA44q5rMQMArhSRNtn3xvG94VdZaNXw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774225464; a=rsa-sha256; cv=none; b=jDChIoiXfcGopTgBpUBmWFJ+gN8DMWx8zr+ormzY44qxUIJT62EOuL0Hi6RTu2E3CBCqYb ILYS7uszp+Wg0EK5aEUZo/svCnPUTh3FyOKakIda0VbpkBh7T1J25s85+HIA1r3mtvxEFw vpp5iw6iKepYPgs9qY0TTWkoOKFpiF6F5TE9yXZjcsGhUnp1fcMaK5FMSBkuquV98/odxA tcOa52dRRkQp4peI2pbsG+L6w/eyVZRSJHVL6QUU7+yNDA0GLe9bm7vb/4IC26l1JHpIg+ TpFNU8AjG2x9p+hUo8Ibsx0YYDs8vexKA4S8cfpo7zMS/MR8XEPM85O0f4NSvQ== 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=1774225464; 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=Id/pLZAwxr7WpnR39bHC8KINrbK/UkiBK6nMYXl3eU8=; b=V2DVRg4bIFlBllLll89gmdbki43V3VHTbAMj9vfDmuP+oTYC5rGxIBx6eS6UE6dSpsGlIa JMpkoCAjf9o+Dq5v90Sm244Bec1D+vCDCPTFY4Z1OlO5c77xes+jYOyAODQ5JRlgZ6cDcg Q9TFYE1WXwEt9WvP4LDv1mTbwGjV73Q95ho5bgRHNClufFbX2nkXsmpoWUswj+CZuToJcE 7FzdUny/vA2JwZVz0gjbzeP42eS+32cTgTcr8CyhxaD5NUAazZ1F5WWelzIeEFJGKcwpvq 2nEmtZL7noyI/fj8fvGuGqNNjRQu57zweCfYcTMZzQqzu4PjhUIidIADiFiJJQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4ffDSS34XYz84Q for ; Mon, 23 Mar 2026 00:24:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 39ef4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 23 Mar 2026 00:24:24 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: f0d5f46a1e42 - main - mlx5: postpone freeing the completed command entity to taskqueue 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f0d5f46a1e42b801d96447e544cc3820612748b1 Auto-Submitted: auto-generated Date: Mon, 23 Mar 2026 00:24:24 +0000 Message-Id: <69c08838.39ef4.24865d44@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f0d5f46a1e42b801d96447e544cc3820612748b1 commit f0d5f46a1e42b801d96447e544cc3820612748b1 Author: Konstantin Belousov AuthorDate: 2026-03-10 07:32:00 +0000 Commit: Konstantin Belousov CommitDate: 2026-03-23 00:23:53 +0000 mlx5: postpone freeing the completed command entity to taskqueue because cancel_delayed_work_sync() might need to sleep, which cannot be done in the interrupt thread where the completion runs. Sponsored by: Nvidia networking MFC after: 1 week --- sys/dev/mlx5/driver.h | 1 + sys/dev/mlx5/mlx5_core/mlx5_cmd.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sys/dev/mlx5/driver.h b/sys/dev/mlx5/driver.h index cdefe7e013f6..ba6714c5c7b6 100644 --- a/sys/dev/mlx5/driver.h +++ b/sys/dev/mlx5/driver.h @@ -890,6 +890,7 @@ struct mlx5_cmd_work_ent { u16 op; u8 busy; bool polling; + struct work_struct freew; }; struct mlx5_pas { diff --git a/sys/dev/mlx5/mlx5_core/mlx5_cmd.c b/sys/dev/mlx5/mlx5_core/mlx5_cmd.c index 86c721a83cb7..e314a04c294f 100644 --- a/sys/dev/mlx5/mlx5_core/mlx5_cmd.c +++ b/sys/dev/mlx5/mlx5_core/mlx5_cmd.c @@ -802,6 +802,15 @@ static void cb_timeout_handler(struct work_struct *work) mlx5_cmd_comp_handler(dev, 1UL << ent->idx, MLX5_CMD_MODE_EVENTS); } +static void +cmd_free_work(struct work_struct *work) +{ + struct mlx5_cmd_work_ent *ent = container_of(work, + struct mlx5_cmd_work_ent, freew); + + free_cmd(ent); +} + static void complete_command(struct mlx5_cmd_work_ent *ent) { struct mlx5_cmd *cmd = ent->cmd; @@ -856,7 +865,8 @@ static void complete_command(struct mlx5_cmd_work_ent *ent) free_msg(dev, ent->in); err = err ? err : ent->status; - free_cmd(ent); + INIT_WORK(&ent->freew, cmd_free_work); + schedule_work(&ent->freew); callback(err, context); } else { complete(&ent->done);