public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: Daisuke Matsuda <dskmtsd@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org,
	jgg@ziepe.ca, zyjzyj2000@gmail.com, hch@infradead.org
Subject: Re: [PATCH for-next v3] RDMA/core: Avoid hmm_dma_map_alloc() for virtual DMA devices
Date: Sun, 25 May 2025 13:24:56 +0300	[thread overview]
Message-ID: <20250525102456.GX7435@unreal> (raw)
In-Reply-To: <77ba8709-9b59-4c83-8898-6f0c699992c3@gmail.com>

On Sun, May 25, 2025 at 06:34:56PM +0900, Daisuke Matsuda wrote:
> Hi Leon,
> 
> Thank you for amending the patch.
> I've run the test and confirmed that the bug has been resolved.
> 
> We still have two build errors. Please see my reply below.
> 
> On 2025/05/25 16:08, Leon Romanovsky wrote:
> > On Sat, May 24, 2025 at 02:43:28PM +0000, Daisuke Matsuda wrote:
> <...>
> > >   drivers/infiniband/core/device.c   | 17 +++++++++++++++++
> > >   drivers/infiniband/core/umem_odp.c | 11 ++++++++---
> > >   include/rdma/ib_verbs.h            |  4 ++++
> > >   3 files changed, 29 insertions(+), 3 deletions(-)
> > 
> > Please include changelogs when you submit vX patches next time.
> 
> Oh, sorry. I will be careful from next time.
> 
> > 
> > I ended with the following patch:
> > 
> > diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/umem_odp.c
> > index 51d518989914e..cf16549919e02 100644
> > --- a/drivers/infiniband/core/umem_odp.c
> > +++ b/drivers/infiniband/core/umem_odp.c
> > @@ -60,9 +60,11 @@ static int ib_init_umem_odp(struct ib_umem_odp *umem_odp,
> >   {
> >   	struct ib_device *dev = umem_odp->umem.ibdev;
> >   	size_t page_size = 1UL << umem_odp->page_shift;
> > +	struct hmm_dma_map *map;
> >   	unsigned long start;
> >   	unsigned long end;
> > -	int ret;
> > +	size_t nr_entries;
> > +	int ret = 0;
> >   	umem_odp->umem.is_odp = 1;
> >   	mutex_init(&umem_odp->umem_mutex);
> > @@ -75,9 +77,20 @@ static int ib_init_umem_odp(struct ib_umem_odp *umem_odp,
> >   	if (unlikely(end < page_size))
> >   		return -EOVERFLOW;
> > -	ret = hmm_dma_map_alloc(dev->dma_device, &umem_odp->map,
> > -				(end - start) >> PAGE_SHIFT,
> > -				1 << umem_odp->page_shift);
> > +	nr_entries = (end - start) >> PAGE_SHIFT;
> > +	if (!(nr_entries * PAGE_SIZE / page_size))
> > +		return -EINVAL;
> > +
> > +	nap = &umem_odp->map;
> 
> BUILD ERROR: 'nap' should be 'map'

Sorry, I pushed the code too fast.

> 
> > +	if (ib_uses_virt_dma(dev)) {
> > +		map->pfn_list = kvcalloc(nr_entries, sizeof(*map->pfn_list),
> > +					 GFP_KERNEL | __GFP_NOWARN);
> > +		if (!map->pfn_list)
> > +			ret = -ENOMEM;
> > +	} else
> > +		ret = hmm_dma_map_alloc(dev->dma_device, &umem_odp->map,
> 
> OPTIONAL: Perhaps we can just pass 'map' for the 2nd arg?


<...>

> > +		hmm_dma_map_free(dev->dma_device, &umem_odp->map);
> 
> OPTIONAL: Here too.

Sure, will change.

> 
> >   	return ret;
> >   }
> > @@ -259,7 +275,10 @@ static void ib_umem_odp_free(struct ib_umem_odp *umem_odp)
> >   				    ib_umem_end(umem_odp));
> >   	mutex_unlock(&umem_odp->umem_mutex);
> >   	mmu_interval_notifier_remove(&umem_odp->notifier);
> > -	hmm_dma_map_free(dev->dma_device, &umem_odp->map);
> > +	if (ib_uses_virt_dma(dev))
> > +		kfree(umem_odp->map->pfn_list);
> 
> BUILD ERROR:     'umem_odp->map.pfn_list' is correct.

Sorry about that too.

> 
> Thanks again,
> Daisuke
> 
> 

  reply	other threads:[~2025-05-25 10:25 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-24 14:43 [PATCH for-next v3] RDMA/core: Avoid hmm_dma_map_alloc() for virtual DMA devices Daisuke Matsuda
2025-05-24 21:27 ` Greg Sword
2025-05-25  2:54   ` Daisuke Matsuda
2025-05-26 17:51     ` Greg Sword
2025-05-25  6:05   ` Leon Romanovsky
2025-05-26 17:52     ` Greg Sword
2025-05-27  6:35       ` Leon Romanovsky
2025-05-25  5:22 ` Zhu Yanjun
2025-05-25  6:03   ` Daisuke Matsuda
2025-05-25 14:17     ` Zhu Yanjun
2025-05-25  7:08 ` Leon Romanovsky
2025-05-25  9:34   ` Daisuke Matsuda
2025-05-25 10:24     ` Leon Romanovsky [this message]
2025-05-25  7:51 ` Leon Romanovsky
2025-05-26  6:57   ` Christoph Hellwig
2025-05-26  9:07     ` Leon Romanovsky
2025-05-26 19:57     ` 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=20250525102456.GX7435@unreal \
    --to=leon@kernel.org \
    --cc=dskmtsd@gmail.com \
    --cc=hch@infradead.org \
    --cc=jgg@ziepe.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=zyjzyj2000@gmail.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