From nobody Mon Jul 20 20:53:34 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 4h3t5p3gmxz6dPqV for ; Mon, 20 Jul 2026 20:53:34 +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 4h3t5p2F5Rz477T for ; Mon, 20 Jul 2026 20:53:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784580814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9Li6NV8xHDQTvb3qEmU9Yke9UzXXotLuYIa1hxsuUoA=; b=WCMKTfOjenWhHbpBCwdHjbY4wSs7F6xmOclx1hneHBEphOO7r3jCJPY73wJa6u1N7FcE3A sJ9C2tFm96unZOACFjG0Pr+FjXCVYvk1Luy3YyvRMK3YfHcD7tfDNHcy/cOJjrT+0oW2bc U2Byfr3Up5Ew4GBCYdUBLd/mxkQ1G3jxfth8l2SP3qhhP1BqI4cAoEqYdDwp55zm8yiRz0 pdbh+inGvYTmUx79t7McXi14TWQ4SkAMm27LHDm9hDb0akipkuHSUMNujO+/Z7XLOb/kEN eboLiG2IGyFAEg3hS7hyqLMGAW3T8u9Gg2ruO8cgQ+c74Klc5k7EOpG1Z/ENaw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784580814; a=rsa-sha256; cv=none; b=KIkNvPcdSdS9kx7UzZCHasYgIWGHtzhSft+67diwteGs+SExylVQYNu00EJ1TP15/uQifR QOr8JFQKPog72/Rx4NIktKv+bUm7gZXdg8VltmKs980Wj2YX81Mwp8SuO6oks1d+/5aQkz akpJdbTHAHyc1V2hAzWBBhS0UgVmz9lfzU7CWaELHld5CxUmEvv3G/W0LL2jJd9zRukdhz Glyjoan7XmzL+H3Z10xdLA8z8sJ+2/k6c74g6NjJKc3INyDIRGpaIxReOgXaj6m3JESL3f zWH2qsqNQYO5MR/nW8SUlgQ8jErHUQlbBFi2eP4S7d5EoAuTonKTpM+MfCH/ow== 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=1784580814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9Li6NV8xHDQTvb3qEmU9Yke9UzXXotLuYIa1hxsuUoA=; b=jHg4u1h/czJsD7w1MLS3YPWKzdR3ciMYG5JHfKe2uCpZQi5qzu/Ow/5zNZkkJeikVIFnqq fzw1S+Z/iLyH/d/jeMQV5sdQBfXpGjQEViSnufqtWohUERjZls/TQjV18/fkTeqJ9JlfXT +kpl1diLpDZJgXLvXcTZw2naTgoRSXi1YUa6evYOJULfsniI/XDM587D+Mw0jCNmeivDyx lSUSiGYlZz+GEAPV2MDMHbR3kuOhd7YQVlrxSTDy5qs6jQYb9bYjibjIZeOysipQ/4QOmn VSYOX0GYTYSYSwS4p+sWXN8f2Wd0wiDiJ7E7y0sqzPClZBQkTVKePZYiSoqF3Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h3t5p1HsFz33l for ; Mon, 20 Jul 2026 20:53:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1dd5d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 20 Jul 2026 20:53:34 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Ariel Ehrenberg From: Konstantin Belousov Subject: git: c15fa820881d - stable/15 - mlx5ib: encode dynamic UAR mmap offsets in the reserved command range 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: kib X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: c15fa820881d31dfe64d9c06922dca466ae147df Auto-Submitted: auto-generated Date: Mon, 20 Jul 2026 20:53:34 +0000 Message-Id: <6a5e8ace.1dd5d.17f1dc05@gitrepo.freebsd.org> The branch stable/15 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c15fa820881d31dfe64d9c06922dca466ae147df commit c15fa820881d31dfe64d9c06922dca466ae147df Author: Ariel Ehrenberg AuthorDate: 2026-06-08 10:55:47 +0000 Commit: Konstantin Belousov CommitDate: 2026-07-20 20:26:07 +0000 mlx5ib: encode dynamic UAR mmap offsets in the reserved command range (cherry picked from commit 631e57d54c137e9393c47075db09a6c7fb84c6ed) --- sys/dev/mlx5/mlx5_ib/mlx5_ib.h | 11 +++++++++++ sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c | 24 +++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib.h b/sys/dev/mlx5/mlx5_ib/mlx5_ib.h index 7e370ba004e7..99ebc2840160 100644 --- a/sys/dev/mlx5/mlx5_ib/mlx5_ib.h +++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib.h @@ -66,6 +66,17 @@ enum { MLX5_IB_MMAP_CMD_MASK = 0xff, }; +/* + * Reserved mmap command range used to encode rdma_user_mmap entry page + * offsets (e.g. dynamically allocated UARs). Keeping these above the legacy + * MLX5_IB_MMAP_* commands ensures mlx5_ib_mmap() routes them to the + * rdma_user_mmap offset handler instead of the legacy bfreg uar_mmap() path. + */ +enum { + MLX5_IB_MMAP_OFFSET_START = 9, + MLX5_IB_MMAP_OFFSET_END = 255, +}; + enum { MLX5_RES_SCAT_DATA32_CQE = 0x1, MLX5_RES_SCAT_DATA64_CQE = 0x2, diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c index 599361549763..c6175570734c 100644 --- a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c +++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c @@ -1703,6 +1703,25 @@ static unsigned long mlx5_vma_to_pgoff(struct vm_area_struct *vma) return (command << 16 | idx); } +static u64 mlx5_entry_to_mmap_offset(struct mlx5_user_mmap_entry *entry) +{ + u64 cmd = (entry->rdma_entry.start_pgoff >> 16) & 0xFFFF; + u64 index = entry->rdma_entry.start_pgoff & 0xFFFF; + + return (((index >> 8) << 16) | (cmd << MLX5_IB_MMAP_CMD_SHIFT) | + (index & 0xFF)) << PAGE_SHIFT; +} + +static int mlx5_rdma_user_mmap_entry_insert(struct mlx5_ib_ucontext *c, + struct mlx5_user_mmap_entry *entry, + size_t length) +{ + return rdma_user_mmap_entry_insert_range( + &c->ibucontext, &entry->rdma_entry, length, + (MLX5_IB_MMAP_OFFSET_START << 16), + ((MLX5_IB_MMAP_OFFSET_END << 16) + (1UL << 16) - 1)); +} + static int mlx5_ib_mmap_offset(struct mlx5_ib_dev *dev, struct vm_area_struct *vma, struct ib_ucontext *ucontext) @@ -3444,12 +3463,11 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_UAR_OBJ_ALLOC)( entry->page_idx = uar_index; entry->address = uar_index2pfn(dev, uar_index) << PAGE_SHIFT; - err = rdma_user_mmap_entry_insert(&c->ibucontext, &entry->rdma_entry, - length); + err = mlx5_rdma_user_mmap_entry_insert(c, entry, length); if (err) goto err_entry; - mmap_offset = rdma_user_mmap_get_offset(&entry->rdma_entry); + mmap_offset = mlx5_entry_to_mmap_offset(entry); err = uverbs_copy_to(attrs, MLX5_IB_ATTR_UAR_OBJ_ALLOC_MMAP_OFFSET, &mmap_offset, sizeof(mmap_offset)); if (err)