Linux RDMA and InfiniBand development
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Jiri Pirko <jiri@resnulli.us>
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 v3 03/17] RDMA/core: Introduce generic buffer descriptor infrastructure for umem
Date: Thu, 14 May 2026 09:14:10 -0300	[thread overview]
Message-ID: <20260514121410.GY7702@ziepe.ca> (raw)
In-Reply-To: <agWOldIWkFI3i1xB@FV6GYCPJ69>

On Thu, May 14, 2026 at 11:02:45AM +0200, Jiri Pirko wrote:
> >> There's no addr_size because no caller has a user-passed
> >> length distinct from the driver-required minimum.
> >> Drivers either have no length in their legacy ucmd (mlx4/mlx5 CQ, mlx5 QP,
> >> the size is driver-computed from entries*cqe_size etc.) or they
> >> pass ucmd.buf_size which serves as both (vmw_pvrdma, qedr, mlx5
> >> SRQ, ...).
> >
> >This is what I was wondering about, so how does it work when there is
> >a ucmd.buf_size and also a minimum size computed from
> >entries*cqe_size? What does the driver write?
> >
> >I think the driver has to pass in both the minimum size computed from
> >entries*cqe_size and also the uhw exact size? The minimum size is used
> >if the uhw path isn't used to check the other attribute while the uhw
> >exact size is used to pin the memory if the uhw path is used - and it
> >should also be checked against the minimum?
> 
> I asked Claude to check every caller: At the moment of conversion
> none of them would have addr_size != min_size. They split into
> three groups:
> 
>   1) Driver-computed total only (no user-passed length distinct from
>      min). addr_size == min_size by construction:
> 
>        mlx4 CQ/QP/SRQ           entries * cqe_size, qp->buf_size, ...
>        mlx5 CQ/QP/SRQ           entries * cqe_size, rwq->buf_size, ...
>        bnxt_re QP/SRQ/CQ-resize max_wqe * wqe_size, entries * sizeof
>        mana CQ                  cq->cqe * COMP_ENTRY_SIZE
>        hns_roce MTR             mtr_bufs_size(buf_attr)
>        qedr SRQ producer pair   sizeof(struct rdma_srq_producers)
>        all DBR helpers          PAGE_SIZE

OK these make sense

>   2) MR registration / opaque user umem. The user-passed length *is*
>      the request; there's no separate driver minimum. addr_size ==
>      min_size by definition:
> 
>        reg_user_mr in every driver
>        mlx5 devx user umem

MR has to use the exact size passed in the top level system call, so
it probably needs some special helper that does that instead of minimum
 
>   3) User-passed length without a driver minimum cross-check today:
> 
>        vmw_pvrdma CQ/QP/SRQ     derivable min (entries*sizeof, wqe_*),
>                                 not computed in the user path
>        qedr CQ/QP/SRQ           ureq.size, no min computed in wrapper
>        mana WQ, QP raw_sq,
>             QP RC queues        ucmd.{wq,sq}_buf_size, queue_size[],
>                                 no derivable min
>        ionic CQ, QP sq/rq       req_cq->size, sq->size, rq->size,
>                                 no derivable min

Yeah, these are exactly the ones I'd expect to have a second
parameter. Something like ucmd.wq_buf_size should be entirely ignored
if the user passes a new attribute, not silently used as a minimum
check. That logic has to be done in the helper

So you imagine another helper for these four drivers with an
additional parameter?

> Given that, I'd prefer to keep the single size argument for now and
> spell the contract out in the kdoc:
> 
>   @size: minimum required umem length, validated post-pin against any
>          descriptor produced via @attr_id / @legacy_filler; also used
>          as the pin length on the VA fallback path. Callers that have
>          a distinct user-passed length must validate it against their
>          driver minimum before calling.

> If/when a driver actually needs distinct values, splitting into
> addr_size + min_size is mechanical.

Ok, maybe mention in the commit message this has trouble for the four
drivers in group 3

Jason

  reply	other threads:[~2026-05-14 12:14 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-04 13:57 [PATCH rdma-next v3 00/17] RDMA: Introduce generic buffer descriptor infrastructure for umem Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 01/17] RDMA/umem: Rename ib_umem_get() to ib_umem_get_va() Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 02/17] RDMA/umem: Split ib_umem_get_va() into a thin wrapper around __ib_umem_get_va() Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 03/17] RDMA/core: Introduce generic buffer descriptor infrastructure for umem Jiri Pirko
2026-05-06 13:37   ` Jason Gunthorpe
2026-05-06 14:14     ` Jiri Pirko
2026-05-12 18:12       ` Jason Gunthorpe
2026-05-13 19:18         ` Jiri Pirko
2026-05-13 23:34           ` Jason Gunthorpe
2026-05-14  9:02             ` Jiri Pirko
2026-05-14 12:14               ` Jason Gunthorpe [this message]
2026-05-04 13:57 ` [PATCH rdma-next v3 04/17] RDMA/umem: Route ib_umem_get_va() through ib_umem_get() Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 05/17] RDMA/uverbs: Inline _uverbs_get_const_{signed,unsigned}() Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 06/17] RDMA/uverbs: Push out CQ buffer umem processing into a helper Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 07/17] RDMA/uverbs: Add CQ buffer UMEM attribute and driver helpers Jiri Pirko
2026-05-06 13:46   ` Jason Gunthorpe
2026-05-06 14:27     ` Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 08/17] RDMA/efa: Use ib_umem_get_cq_buf() for user CQ buffer Jiri Pirko
2026-05-06 13:51   ` Jason Gunthorpe
2026-05-06 14:32     ` Jiri Pirko
2026-05-12 18:18       ` Jason Gunthorpe
2026-05-04 13:57 ` [PATCH rdma-next v3 09/17] RDMA/mlx5: Use ib_umem_get_cq_buf_or_va() " Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 10/17] RDMA/bnxt_re: " Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 11/17] RDMA/mlx4: Use ib_umem_get_cq_buf() " Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 12/17] RDMA/uverbs: Remove legacy umem field from struct ib_cq Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 13/17] RDMA/uverbs: Use UMEM attributes for QP creation Jiri Pirko
2026-05-06 13:43   ` Jason Gunthorpe
2026-05-06 14:17     ` Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 14/17] RDMA/mlx5: Use UMEM attributes for QP buffers in create_qp Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 15/17] RDMA/mlx5: Use UMEM attribute for CQ doorbell record Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 16/17] RDMA/mlx5: Use UMEM attribute for QP " Jiri Pirko
2026-05-04 13:57 ` [PATCH rdma-next v3 17/17] RDMA/uverbs: Track attr consumption and warn on unused attrs Jiri Pirko
2026-05-06 13:56   ` Jason Gunthorpe
2026-05-06 14:22     ` Jiri Pirko

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=20260514121410.GY7702@ziepe.ca \
    --to=jgg@ziepe.ca \
    --cc=andrew.gospodarek@broadcom.com \
    --cc=edwards@nvidia.com \
    --cc=gal.pressman@linux.dev \
    --cc=huangjunxian6@hisilicon.com \
    --cc=jiri@resnulli.us \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox