Re: linux-next: manual merge of the mm tree with the rdma tree

From: Suren Baghdasaryan
Date: Fri Jan 27 2023 - 00:39:50 EST


On Thu, Jan 26, 2023 at 9:21 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>
> Hi all,
>
> Today's linux-next merge of the mm tree got a conflict in:
>
> drivers/infiniband/hw/hfi1/file_ops.c
>
> between commit:
>
> 1ec82317a1da ("IB/hfi1: Use dma_mmap_coherent for matching buffers")
>
> from the rdma tree and commit:
>
> 6fe0afd07701 ("mm: replace vma->vm_flags direct modifications with modifier calls")
>
> from the mm tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging. You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.

Hi Stephen,
Conflict resolution for 6fe0afd07701 looks good to me.
Thanks,
Suren.

>
> --
> Cheers,
> Stephen Rothwell
>
> diff --cc drivers/infiniband/hw/hfi1/file_ops.c
> index e03b0207856e,c6e59bc480f9..000000000000
> --- a/drivers/infiniband/hw/hfi1/file_ops.c
> +++ b/drivers/infiniband/hw/hfi1/file_ops.c
> @@@ -424,17 -403,8 +424,17 @@@ static int hfi1_file_mmap(struct file *
> ret = -EPERM;
> goto done;
> }
> - vma->vm_flags &= ~VM_MAYWRITE;
> + vm_flags_clear(vma, VM_MAYWRITE);
> - addr = vma->vm_start;
> + /*
> + * Mmap multiple separate allocations into a single vma. From
> + * here, dma_mmap_coherent() calls dma_direct_mmap(), which
> + * requires the mmap to exactly fill the vma starting at
> + * vma_start. Adjust the vma start and end for each eager
> + * buffer segment mapped. Restore the originals when done.
> + */
> + vm_start_save = vma->vm_start;
> + vm_end_save = vma->vm_end;
> + vma->vm_end = vma->vm_start;
> for (i = 0 ; i < uctxt->egrbufs.numbufs; i++) {
> memlen = uctxt->egrbufs.buffers[i].len;
> memvirt = uctxt->egrbufs.buffers[i].addr;
> @@@ -560,9 -528,11 +560,9 @@@
> goto done;
> }
>
> - vma->vm_flags = flags;
> + vm_flags_reset(vma, flags);
> - hfi1_cdbg(PROC,
> - "%u:%u type:%u io/vf:%d/%d, addr:0x%llx, len:%lu(%lu), flags:0x%lx\n",
> - ctxt, subctxt, type, mapio, vmf, memaddr, memlen,
> - vma->vm_end - vma->vm_start, vma->vm_flags);
> + mmap_cdbg(ctxt, subctxt, type, mapio, vmf, memaddr, memvirt, memdma,
> + memlen, vma);
> if (vmf) {
> vma->vm_pgoff = PFN_DOWN(memaddr);
> vma->vm_ops = &vm_ops;