From nobody Mon Mar 23 00:24:24 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 4ffDSZ2Zp7z6WJXb for ; Mon, 23 Mar 2026 00:24: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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ffDSY6Kl0z3tTX for ; Mon, 23 Mar 2026 00:24:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774225469; 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=gpLX7wCR+36lhW3x4HYkLdd7XCuxk7PU4KHBr3l8gdKjHDN2nIJdGkRDDtAXCCHrI7WBMs RPPvPMlvkYwCVM8NFmN0y4GnoDY5MDLm2Da7kiU3sUPsNdUD+/J7mJv31H6nqIRj5U/71J Iw3vic+5Qo/I8a7AGE+aIofnnnOkIhGZXIS5GAsXgvIY/L9U6xgg15PID0VJOMHOtKnSIs QyxM51fVt2G6E3fUy1qScl4KW0U8vv/Eb8sU1aLBL4FQL61iunxg+jjeuFv4zfLqlW0E79 ZOZLq1nCg8ivsrhHcEcqwck0xcx3sFR+MvDr+Lce9zE3yZU//zI8VJ7ikZgzag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774225469; a=rsa-sha256; cv=none; b=YaVXu0RHdLC6VZejyDdB3auOBJ1Q1mveybnV/6C/a0D7LMOgGtA3J5t+RZU+ICNEXZWmvN Zwf1xPNGDNUq83a+bJI9CepWxgbIzXT/KbQieKH74W9J7TfH4+l8C9jHntHxR2qnU00zjE 8ephysaIdTIsLCHD1emqWaWkr+n1GB9ECxWXuBvsvJhm42lIFOJvDhNwOBUU6MPRX6+ABg VrAUesy1LgNrMv+bnxRqWb8ttrMT+vIq6fOl6/cAqFy670hUErs2Zi59EeofRWGEt9/rca Gs5XGvZatyd71ruser4kR2ZKQpSN187vq/0GQkvBUQYJVSubzFVqiiUhW8e83Q== 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=1774225469; 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=u2uxYQJianWCgOBCfZKHE7ZTspliAUdlRKkCU6HSft/D6XIC0XwwgRZZM08fYAnd62pBeE AYNDu11CsMA4byozFbvAyefRpiA+dQBK4tMJz2KxaKkozHDgzwTm3Mv92sBPtg6fGuNNWO EvvSX9O1y50fMyj/EkgXUVX+1rbzOHiIDYyXf12yQP6TKJ4ocNGWnLYIV6coKBQPW9/qzj ydRhdAGVGgz+PegPzjyjY0uLxboHYcRQ9xhdDaw6e6Rzf4OK1AaWPicGG/j0DGAmjiyH64 OusZvxSx07fMt/TxlUB4nm+Nv+tINq9lGkTGVWslxaxNMeo2+jzBgB+kwtGu/w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4ffDSY4BHnz890 for ; Mon, 23 Mar 2026 00:24:29 +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 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 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);