From: Jiri Pirko <jiri@resnulli.us>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: linux-rdma@vger.kernel.org, leon@kernel.org, mrgolin@amazon.com,
gal.pressman@linux.dev, sleybo@amazon.com, parav@nvidia.com,
mbloch@nvidia.com, yanjun.zhu@linux.dev,
marco.crivellari@suse.com, roman.gushchin@linux.dev,
phaddad@nvidia.com, lirongqing@baidu.com, ynachum@amazon.com,
huangjunxian6@hisilicon.com,
kalesh-anakkur.purayil@broadcom.com, ohartoov@nvidia.com,
michaelgur@nvidia.com, shayd@nvidia.com, edwards@nvidia.com,
sriharsha.basavapatna@broadcom.com,
andrew.gospodarek@broadcom.com, selvin.xavier@broadcom.com
Subject: Re: [PATCH rdma-next v4 15/16] RDMA/mlx5: Use UMEM attribute for CQ doorbell record
Date: Wed, 13 May 2026 21:32:11 +0200 [thread overview]
Message-ID: <agTRkNEZY0_u8rnL@FV6GYCPJ69> (raw)
In-Reply-To: <20260512192134.GK7702@ziepe.ca>
Tue, May 12, 2026 at 09:21:34PM +0200, jgg@ziepe.ca wrote:
>On Thu, May 07, 2026 at 02:52:30PM +0200, Jiri Pirko wrote:
>> +int mlx5_ib_db_map_user(struct mlx5_ib_ucontext *context,
>> + struct ib_udata *udata, u16 attr_id,
>> + unsigned long virt, struct mlx5_db *db)
>> {
>> - struct mlx5_ib_user_db_page *page;
>> + struct mlx5_ib_user_db_page *page = NULL;
>> + unsigned long dma_offset;
>> int err = 0;
>>
>> + if (udata) {
>> + struct ib_umem *umem;
>> +
>> + umem = ib_umem_get_attr(context->ibucontext.device, udata,
>> + attr_id, sizeof(__be32) * 2, 0);
>> + if (IS_ERR(umem))
>> + return PTR_ERR(umem);
>> + if (umem) {
>
>More IS_ERR_OR_NULL stuff..
>
>> + /*
>> + * The 8-byte DBR is programmed to the device as one
>> + * DMA address, so it must stay within a single page.
>> + * An 8-byte range that crosses a page boundary may
>> + * be split across two non-contiguous DMA mappings.
>> + */
>> + if (ib_umem_offset(umem) >
>> + PAGE_SIZE - sizeof(__be32) * 2) {
>> + ib_umem_release(umem);
>> + return -EINVAL;
>> + }
>
>I think this can just be ib_umem_is_contiguous()
Right.
>
>> + page = kzalloc_obj(*page);
>> + if (!page) {
>> + ib_umem_release(umem);
>> + return -ENOMEM;
>> + }
>> + page->umem = umem;
>> + dma_offset = ib_umem_offset(umem);
>> + }
>> + }
>> +
>> mutex_lock(&context->db_page_mutex);
>>
>> + if (page)
>> + goto add_page;
>> +
>> + dma_offset = virt & ~PAGE_MASK;
>> +
>> list_for_each_entry(page, &context->db_page_list, list)
>> if ((current->mm == page->mm) &&
>> (page->user_virt == (virt & PAGE_MASK)))
>> goto found;
>
>Ah, this is why..
>
>I think this function should take in a ib_uverbs_buffer_desc and that
>should be stored inside the page instead of using virt. Then the
>functions flow doesn't really change, it searchs the page_list for a
>matching desc, otherwise it converts the desc to a umem and creates a
>new page. Refuse to match FD based descs
>
>That sort of suggests you want to split up the earlier patch so there
>is a seperate re-usable get desc function instead of bundling into
>ib_umem_get..
Okay, done that. Thanks!
>
>
>Jason
next prev parent reply other threads:[~2026-05-13 19:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-07 12:52 [PATCH rdma-next v4 00/16] RDMA: Introduce generic buffer descriptor infrastructure for umem Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 01/16] RDMA/umem: Rename ib_umem_get() to ib_umem_get_va() Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 02/16] RDMA/umem: Split ib_umem_get_va() into a thin wrapper around __ib_umem_get_va() Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 03/16] RDMA/core: Introduce generic buffer descriptor infrastructure for umem Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 04/16] RDMA/umem: Route ib_umem_get_va() through ib_umem_get() Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 05/16] RDMA/uverbs: Inline _uverbs_get_const_{signed,unsigned}() Jiri Pirko
2026-05-12 17:51 ` Jason Gunthorpe
2026-05-13 11:43 ` Jiri Pirko
2026-05-13 17:33 ` Jason Gunthorpe
2026-05-07 12:52 ` [PATCH rdma-next v4 06/16] RDMA/uverbs: Push out CQ buffer umem processing into a helper Jiri Pirko
2026-05-12 18:03 ` Jason Gunthorpe
2026-05-12 18:40 ` Jiri Pirko
2026-05-12 19:22 ` Jason Gunthorpe
2026-05-07 12:52 ` [PATCH rdma-next v4 07/16] RDMA/uverbs: Add CQ buffer UMEM attribute and driver helpers Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 08/16] RDMA/efa: Use ib_umem_get_cq_buf() for user CQ buffer Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 09/16] RDMA/mlx5: Use ib_umem_get_cq_buf_or_va() " Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 10/16] RDMA/bnxt_re: " Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 11/16] RDMA/mlx4: Use ib_umem_get_cq_buf() " Jiri Pirko
2026-05-12 18:29 ` Jason Gunthorpe
2026-05-13 11:38 ` Jiri Pirko
2026-05-13 17:51 ` Jason Gunthorpe
2026-05-13 18:10 ` Jiri Pirko
2026-05-13 23:37 ` Jason Gunthorpe
2026-05-07 12:52 ` [PATCH rdma-next v4 12/16] RDMA/uverbs: Remove legacy umem field from struct ib_cq Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 13/16] RDMA/uverbs: Use UMEM attributes for QP creation Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 14/16] RDMA/mlx5: Use UMEM attributes for QP buffers in create_qp Jiri Pirko
2026-05-07 12:52 ` [PATCH rdma-next v4 15/16] RDMA/mlx5: Use UMEM attribute for CQ doorbell record Jiri Pirko
2026-05-12 19:21 ` Jason Gunthorpe
2026-05-13 19:32 ` Jiri Pirko [this message]
2026-05-07 12:52 ` [PATCH rdma-next v4 16/16] RDMA/mlx5: Use UMEM attribute for QP " Jiri Pirko
2026-05-12 19:23 ` [PATCH rdma-next v4 00/16] RDMA: Introduce generic buffer descriptor infrastructure for umem Jason Gunthorpe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=agTRkNEZY0_u8rnL@FV6GYCPJ69 \
--to=jiri@resnulli.us \
--cc=andrew.gospodarek@broadcom.com \
--cc=edwards@nvidia.com \
--cc=gal.pressman@linux.dev \
--cc=huangjunxian6@hisilicon.com \
--cc=jgg@ziepe.ca \
--cc=kalesh-anakkur.purayil@broadcom.com \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=lirongqing@baidu.com \
--cc=marco.crivellari@suse.com \
--cc=mbloch@nvidia.com \
--cc=michaelgur@nvidia.com \
--cc=mrgolin@amazon.com \
--cc=ohartoov@nvidia.com \
--cc=parav@nvidia.com \
--cc=phaddad@nvidia.com \
--cc=roman.gushchin@linux.dev \
--cc=selvin.xavier@broadcom.com \
--cc=shayd@nvidia.com \
--cc=sleybo@amazon.com \
--cc=sriharsha.basavapatna@broadcom.com \
--cc=yanjun.zhu@linux.dev \
--cc=ynachum@amazon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.