Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp1276033pxb; Thu, 7 Oct 2021 04:42:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxgU723lATtgzM8XqDv4MXr3LdnmPIHBJZUWG1VF16bFq1rRBU5nk5NZtpC1Vnt1sjzbYiY X-Received: by 2002:a17:90a:708c:: with SMTP id g12mr4852803pjk.13.1633606923865; Thu, 07 Oct 2021 04:42:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633606923; cv=none; d=google.com; s=arc-20160816; b=Of3jWqIi6ZsGkwUrUJGTIHGCklWJwK2VVHcMwCVJsDwqEa6vhBn7BfsKclrplB1fgy 8pxeBNBmYzs8Oh+7OH5c1deKrfD50QXmG3Qbc49Zh0QZF5r6K0jEzyrHWv+B5V/Z66Xt zclQwUEArquGAanWQA49YVT0rUtg79chbobopvsCkZyq22svOugIgRBIbTubywHPSnM3 Nv3Rtu6dUV4gfY8y4JkVY40nYbTqRth2+iheGmzQpQfe3ZlJs9zKV6aa0awFHGBT9oWw P6c31aVA5AF7Ighxg78kovFo880/YPglackNsJnb8t0B0S8RnPmx6d/N+q2ZVvoor+pF ue/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=t6zk3xfTxx+/7P9iF/K8HrCXbNIyzmGrI92g0qF/r8U=; b=OAYvpXHLxL7xuYTnXlQ1b250PRGaPu80VHWwt6orvpjTT8ywOd3qfNz0ugjlVJEE2G WqFHmzyYDxhJBqEhdxOKnszCcpMUM1f1HwiR4VagbrV31GJ7l9gvBTlDdFsmanDnfzeE umumg3XCqjra1/0IPVJtuv10DRqRqTJoPmfCKJyPm1QHPK4X6A85d+j6XAUduh4gH4Kx OxIDgvM2dPXA2rQCstk9IfUj0gdjnE6/G5sGh01TPHSRWObOHCINLfMLLtf01W1fqE07 kr6LTprft2ds4sZTWzSjbAFob3i/Nj2uHXhpYrHCWLoyxLvKMRiEaLtzFLCqIqO8Z+RK 0+Cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=Z5BfJR12; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s2si31304044plk.381.2021.10.07.04.41.50; Thu, 07 Oct 2021 04:42:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ziepe.ca header.s=google header.b=Z5BfJR12; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230091AbhJGLmQ (ORCPT + 99 others); Thu, 7 Oct 2021 07:42:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241067AbhJGLmP (ORCPT ); Thu, 7 Oct 2021 07:42:15 -0400 Received: from mail-qt1-x833.google.com (mail-qt1-x833.google.com [IPv6:2607:f8b0:4864:20::833]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50795C061755 for ; Thu, 7 Oct 2021 04:40:22 -0700 (PDT) Received: by mail-qt1-x833.google.com with SMTP id e16so5780333qts.4 for ; Thu, 07 Oct 2021 04:40:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=t6zk3xfTxx+/7P9iF/K8HrCXbNIyzmGrI92g0qF/r8U=; b=Z5BfJR12ZF73sqboFqV6Iftg9Fca9z5gXZZEXjYRHqQq4qghp9RcfRyFFD74hFJVbF FNLutLPICI+kRSkp0Z/yFqmimbN9Ix8EcbdmC0wcW6HYgMzZJ9IIWTzsnMKZKBZoNhv9 zaexlFTVGrzQz2Ql0HdZgeURLnwPVZTWxTAHSKEEeFsa+vKjn/xx0eRp4/wVP1DzlqFE ar+4ieCc7nQ6y3JoLjU0zomWckcMr9Zoag4Qfwzclr8meuO+iIDsNKzFr7jgwJ99Du0E soapNjOR5PLotwgmP+WLBkjuhluBIgE9jOgZiReEmqHG6viISNvPtCsj7/VSuA1TZOC6 0mEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=t6zk3xfTxx+/7P9iF/K8HrCXbNIyzmGrI92g0qF/r8U=; b=PlwAB+cxyWClEsXASZSoRBApoigvBpAJv/8rHoYKVDxDoaUq2wkOU3CmiFDiamc1kT aThcVPS0uwDgCUpfeDIp6Ix5n0Ssv2jzH/921bX65TAFDus+6R1p8kL4dHDiAQKUhRHm TwDo1sOVgHc81Y3hHuq8SXycqxr5zMjBQcCHWvem/M8LGCYU8a8i4fS7QHwNQf/n5LnD YOKagc8QB44Mv+NHpyRNNyhLl3nMsVe1AocP2F2bFLx6akL1K9L3f6bih/I+/NsO5pag MxqBMXEY6tykjLLhluv/eYTKu/dWxOmqXw9C0TJrBFE9ZzMJmg+AaKbe2r7GPbfYq7Iv GPVg== X-Gm-Message-State: AOAM530vxa9E/2P35GCXzdftFU9jUaNugpr9K95OyM8ZxUUO4A5IMiBf yCf+Ztj5DJtMq0EDpWayx3czvw== X-Received: by 2002:ac8:57d0:: with SMTP id w16mr4342934qta.96.1633606820017; Thu, 07 Oct 2021 04:40:20 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-162-113-129.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.162.113.129]) by smtp.gmail.com with ESMTPSA id v8sm17498391qta.21.2021.10.07.04.40.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 04:40:19 -0700 (PDT) Received: from jgg by mlx with local (Exim 4.94) (envelope-from ) id 1mYRl4-00Br7G-Sw; Thu, 07 Oct 2021 08:40:18 -0300 Date: Thu, 7 Oct 2021 08:40:18 -0300 From: Jason Gunthorpe To: Gal Pressman Cc: Sumit Semwal , Christian =?utf-8?B?S8O2bmln?= , Doug Ledford , linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, Oded Gabbay , Tomer Tayar , Yossi Leybovich , Alexander Matushevsky , Leon Romanovsky , Jianxin Xiong , Firas Jahjah Subject: Re: [RFC PATCH 2/2] RDMA/efa: Add support for dmabuf memory regions Message-ID: <20211007114018.GD2688930@ziepe.ca> References: <20211007104301.76693-1-galpress@amazon.com> <20211007104301.76693-3-galpress@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20211007104301.76693-3-galpress@amazon.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Oct 07, 2021 at 01:43:00PM +0300, Gal Pressman wrote: > @@ -1491,26 +1493,29 @@ static int efa_create_pbl(struct efa_dev *dev, > return 0; > } > > -struct ib_mr *efa_reg_mr(struct ib_pd *ibpd, u64 start, u64 length, > - u64 virt_addr, int access_flags, > - struct ib_udata *udata) > +static void efa_dmabuf_invalidate_cb(struct dma_buf_attachment *attach) > +{ > + WARN_ON_ONCE(1, > + "Invalidate callback should not be called when memory is pinned\n"); > +} > + > +static struct dma_buf_attach_ops efa_dmabuf_attach_ops = { > + .allow_peer2peer = true, > + .move_notify = efa_dmabuf_invalidate_cb, > +}; Shouldn't move_notify really just be left as NULL? I mean fixing whatever is preventing that? > +struct ib_mr *efa_reg_user_mr_dmabuf(struct ib_pd *ibpd, u64 start, > + u64 length, u64 virt_addr, > + int fd, int access_flags, > + struct ib_udata *udata) > +{ > + struct efa_dev *dev = to_edev(ibpd->device); > + struct ib_umem_dmabuf *umem_dmabuf; > + struct efa_mr *mr; > + int err; > + > + mr = efa_alloc_mr(ibpd, access_flags, udata); > + if (IS_ERR(mr)) { > + err = PTR_ERR(mr); > + goto err_out; > + } > + > + umem_dmabuf = ib_umem_dmabuf_get(ibpd->device, start, length, fd, > + access_flags, &efa_dmabuf_attach_ops); > + if (IS_ERR(umem_dmabuf)) { > + ibdev_dbg(&dev->ibdev, "Failed to get dmabuf[%d]\n", err); > + err = PTR_ERR(umem_dmabuf); > + goto err_free; > + } > + > + dma_resv_lock(umem_dmabuf->attach->dmabuf->resv, NULL); > + err = dma_buf_pin(umem_dmabuf->attach); > + if (err) { > + ibdev_dbg(&dev->ibdev, "Failed to pin dmabuf memory\n"); > + goto err_release; > + } > + > + err = ib_umem_dmabuf_map_pages(umem_dmabuf); > + if (err) { > + ibdev_dbg(&dev->ibdev, "Failed to map dmabuf pages\n"); > + goto err_unpin; > + } > + dma_resv_unlock(umem_dmabuf->attach->dmabuf->resv); If it is really this simple the core code should have this logic, 'ib_umem_dmabuf_get_pinned()' or something Jason