From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B93DEC33CA8 for ; Mon, 25 Nov 2019 23:11:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 918F1208CC for ; Mon, 25 Nov 2019 23:11:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="fYa9Fxr2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727403AbfKYXK6 (ORCPT ); Mon, 25 Nov 2019 18:10:58 -0500 Received: from hqemgate14.nvidia.com ([216.228.121.143]:1191 "EHLO hqemgate14.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727358AbfKYXK5 (ORCPT ); Mon, 25 Nov 2019 18:10:57 -0500 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate14.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 25 Nov 2019 15:10:58 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 25 Nov 2019 15:10:55 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 25 Nov 2019 15:10:55 -0800 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 25 Nov 2019 23:10:50 +0000 Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 25 Nov 2019 23:10:49 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by rnnvemgw01.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Mon, 25 Nov 2019 15:10:49 -0800 From: John Hubbard To: Andrew Morton CC: Al Viro , Alex Williamson , Benjamin Herrenschmidt , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Christoph Hellwig , Dan Williams , Daniel Vetter , Dave Chinner , David Airlie , "David S . Miller" , Ira Weiny , Jan Kara , Jason Gunthorpe , Jens Axboe , Jonathan Corbet , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Magnus Karlsson , "Mauro Carvalho Chehab" , Michael Ellerman , Michal Hocko , Mike Kravetz , "Paul Mackerras" , Shuah Khan , Vlastimil Babka , , , , , , , , , , , , , LKML , John Hubbard , "Jason Gunthorpe" Subject: [PATCH v2 09/19] IB/{core,hw,umem}: set FOLL_PIN via pin_user_pages*(), fix up ODP Date: Mon, 25 Nov 2019 15:10:25 -0800 Message-ID: <20191125231035.1539120-10-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191125231035.1539120-1-jhubbard@nvidia.com> References: <20191125231035.1539120-1-jhubbard@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1574723458; bh=F5LoLh4kW0VgIVuupouosvzq/0ORLXJ24SyIGBNyaiY=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:X-NVConfidentiality: Content-Transfer-Encoding:Content-Type; b=fYa9Fxr238hgOyyNRcsaLelkrz/AaWZ+YFI0ekeV82KuEzJPfks9Ze3MMHT9RXQg7 Fp5WtkQAVmozLC8aivKlUT81a6TstuxmkvgxJIc2lPQleWopKjyLXkFRRc3z3XhJcQ h8MlIK+gqKy8AZkJ60NkBh3w/SacdTFVnj5AoPkLy8ExGYHmAqtp4K60laJIuVN8WW X4lfsAt5OJGDmj2+9UsK+NIlBA/0G+sWt4/ceZxHcqkxCNsDp3L/81Z4kvy4GaeOLm ZbjfLjLIsI2+axnC2pIQNslxQNS5wrvyI8smr299LyZV3JmSTZs+fLmQw3mVHcFjWY vdNbSQpWwK68Q== Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Convert infiniband to use the new pin_user_pages*() calls. Also, revert earlier changes to Infiniband ODP that had it using put_user_page(). ODP is "Case 3" in Documentation/core-api/pin_user_pages.rst, which is to say, normal get_user_pages() and put_page() is the API to use there. The new pin_user_pages*() calls replace corresponding get_user_pages*() calls, and set the FOLL_PIN flag. The FOLL_PIN flag requires that the caller must return the pages via put_user_page*() calls, but infiniband was already doing that as part of an earlier commit. Reviewed-by: Jason Gunthorpe Signed-off-by: John Hubbard --- drivers/infiniband/core/umem.c | 2 +- drivers/infiniband/core/umem_odp.c | 13 ++++++------- drivers/infiniband/hw/hfi1/user_pages.c | 2 +- drivers/infiniband/hw/mthca/mthca_memfree.c | 2 +- drivers/infiniband/hw/qib/qib_user_pages.c | 2 +- drivers/infiniband/hw/qib/qib_user_sdma.c | 2 +- drivers/infiniband/hw/usnic/usnic_uiom.c | 2 +- drivers/infiniband/sw/siw/siw_mem.c | 2 +- 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.= c index 7a3b99597ead..39a1542e6707 100644 --- a/drivers/infiniband/core/umem.c +++ b/drivers/infiniband/core/umem.c @@ -267,7 +267,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, uns= igned long addr, =20 while (npages) { down_read(&mm->mmap_sem); - ret =3D get_user_pages(cur_base, + ret =3D pin_user_pages(cur_base, min_t(unsigned long, npages, PAGE_SIZE / sizeof (struct page *)), gup_flags | FOLL_LONGTERM, diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/u= mem_odp.c index e42d44e501fd..abc3bb6578cc 100644 --- a/drivers/infiniband/core/umem_odp.c +++ b/drivers/infiniband/core/umem_odp.c @@ -308,9 +308,8 @@ EXPORT_SYMBOL(ib_umem_odp_release); * The function returns -EFAULT if the DMA mapping operation fails. It ret= urns * -EAGAIN if a concurrent invalidation prevents us from updating the page= . * - * The page is released via put_user_page even if the operation failed. Fo= r - * on-demand pinning, the page is released whenever it isn't stored in the - * umem. + * The page is released via put_page even if the operation failed. For on-= demand + * pinning, the page is released whenever it isn't stored in the umem. */ static int ib_umem_odp_map_dma_single_page( struct ib_umem_odp *umem_odp, @@ -363,7 +362,7 @@ static int ib_umem_odp_map_dma_single_page( } =20 out: - put_user_page(page); + put_page(page); return ret; } =20 @@ -473,7 +472,7 @@ int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_= odp, u64 user_virt, ret =3D -EFAULT; break; } - put_user_page(local_page_list[j]); + put_page(local_page_list[j]); continue; } =20 @@ -500,8 +499,8 @@ int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_= odp, u64 user_virt, * ib_umem_odp_map_dma_single_page(). */ if (npages - (j + 1) > 0) - put_user_pages(&local_page_list[j+1], - npages - (j + 1)); + release_pages(&local_page_list[j+1], + npages - (j + 1)); break; } } diff --git a/drivers/infiniband/hw/hfi1/user_pages.c b/drivers/infiniband/h= w/hfi1/user_pages.c index 469acb961fbd..9a94761765c0 100644 --- a/drivers/infiniband/hw/hfi1/user_pages.c +++ b/drivers/infiniband/hw/hfi1/user_pages.c @@ -106,7 +106,7 @@ int hfi1_acquire_user_pages(struct mm_struct *mm, unsig= ned long vaddr, size_t np int ret; unsigned int gup_flags =3D FOLL_LONGTERM | (writable ? FOLL_WRITE : 0); =20 - ret =3D get_user_pages_fast(vaddr, npages, gup_flags, pages); + ret =3D pin_user_pages_fast(vaddr, npages, gup_flags, pages); if (ret < 0) return ret; =20 diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniba= nd/hw/mthca/mthca_memfree.c index edccfd6e178f..8269ab040c21 100644 --- a/drivers/infiniband/hw/mthca/mthca_memfree.c +++ b/drivers/infiniband/hw/mthca/mthca_memfree.c @@ -472,7 +472,7 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mth= ca_uar *uar, goto out; } =20 - ret =3D get_user_pages_fast(uaddr & PAGE_MASK, 1, + ret =3D pin_user_pages_fast(uaddr & PAGE_MASK, 1, FOLL_WRITE | FOLL_LONGTERM, pages); if (ret < 0) goto out; diff --git a/drivers/infiniband/hw/qib/qib_user_pages.c b/drivers/infiniban= d/hw/qib/qib_user_pages.c index 6bf764e41891..7fc4b5f81fcd 100644 --- a/drivers/infiniband/hw/qib/qib_user_pages.c +++ b/drivers/infiniband/hw/qib/qib_user_pages.c @@ -108,7 +108,7 @@ int qib_get_user_pages(unsigned long start_page, size_t= num_pages, =20 down_read(¤t->mm->mmap_sem); for (got =3D 0; got < num_pages; got +=3D ret) { - ret =3D get_user_pages(start_page + got * PAGE_SIZE, + ret =3D pin_user_pages(start_page + got * PAGE_SIZE, num_pages - got, FOLL_LONGTERM | FOLL_WRITE | FOLL_FORCE, p + got, NULL); diff --git a/drivers/infiniband/hw/qib/qib_user_sdma.c b/drivers/infiniband= /hw/qib/qib_user_sdma.c index 05190edc2611..1a3cc2957e3a 100644 --- a/drivers/infiniband/hw/qib/qib_user_sdma.c +++ b/drivers/infiniband/hw/qib/qib_user_sdma.c @@ -670,7 +670,7 @@ static int qib_user_sdma_pin_pages(const struct qib_dev= data *dd, else j =3D npages; =20 - ret =3D get_user_pages_fast(addr, j, FOLL_LONGTERM, pages); + ret =3D pin_user_pages_fast(addr, j, FOLL_LONGTERM, pages); if (ret !=3D j) { i =3D 0; j =3D ret; diff --git a/drivers/infiniband/hw/usnic/usnic_uiom.c b/drivers/infiniband/= hw/usnic/usnic_uiom.c index 62e6ffa9ad78..600896727d34 100644 --- a/drivers/infiniband/hw/usnic/usnic_uiom.c +++ b/drivers/infiniband/hw/usnic/usnic_uiom.c @@ -141,7 +141,7 @@ static int usnic_uiom_get_pages(unsigned long addr, siz= e_t size, int writable, ret =3D 0; =20 while (npages) { - ret =3D get_user_pages(cur_base, + ret =3D pin_user_pages(cur_base, min_t(unsigned long, npages, PAGE_SIZE / sizeof(struct page *)), gup_flags | FOLL_LONGTERM, diff --git a/drivers/infiniband/sw/siw/siw_mem.c b/drivers/infiniband/sw/si= w/siw_mem.c index e99983f07663..e53b07dcfed5 100644 --- a/drivers/infiniband/sw/siw/siw_mem.c +++ b/drivers/infiniband/sw/siw/siw_mem.c @@ -426,7 +426,7 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, bool = writable) while (nents) { struct page **plist =3D &umem->page_chunk[i].plist[got]; =20 - rv =3D get_user_pages(first_page_va, nents, + rv =3D pin_user_pages(first_page_va, nents, foll_flags | FOLL_LONGTERM, plist, NULL); if (rv < 0) --=20 2.24.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 737A2C432C0 for ; Mon, 25 Nov 2019 23:38:57 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 228BF2071A for ; Mon, 25 Nov 2019 23:38:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="fYa9Fxr2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 228BF2071A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 47MNlg0mnczDqf1 for ; Tue, 26 Nov 2019 10:38:55 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nvidia.com (client-ip=216.228.121.143; helo=hqemgate14.nvidia.com; envelope-from=jhubbard@nvidia.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=nvidia.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=nvidia.com header.i=@nvidia.com header.b="fYa9Fxr2"; dkim-atps=neutral Received: from hqemgate14.nvidia.com (hqemgate14.nvidia.com [216.228.121.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 47MN7Y4VHdzDqbl for ; Tue, 26 Nov 2019 10:11:04 +1100 (AEDT) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate14.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 25 Nov 2019 15:10:58 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 25 Nov 2019 15:10:55 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 25 Nov 2019 15:10:55 -0800 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 25 Nov 2019 23:10:50 +0000 Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 25 Nov 2019 23:10:49 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) id ; Mon, 25 Nov 2019 15:10:49 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH v2 09/19] IB/{core, hw, umem}: set FOLL_PIN via pin_user_pages*(), fix up ODP Date: Mon, 25 Nov 2019 15:10:25 -0800 Message-ID: <20191125231035.1539120-10-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191125231035.1539120-1-jhubbard@nvidia.com> References: <20191125231035.1539120-1-jhubbard@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public Content-Transfer-Encoding: quoted-printable Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1574723458; bh=F5LoLh4kW0VgIVuupouosvzq/0ORLXJ24SyIGBNyaiY=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:X-NVConfidentiality: Content-Transfer-Encoding:Content-Type; b=fYa9Fxr238hgOyyNRcsaLelkrz/AaWZ+YFI0ekeV82KuEzJPfks9Ze3MMHT9RXQg7 Fp5WtkQAVmozLC8aivKlUT81a6TstuxmkvgxJIc2lPQleWopKjyLXkFRRc3z3XhJcQ h8MlIK+gqKy8AZkJ60NkBh3w/SacdTFVnj5AoPkLy8ExGYHmAqtp4K60laJIuVN8WW X4lfsAt5OJGDmj2+9UsK+NIlBA/0G+sWt4/ceZxHcqkxCNsDp3L/81Z4kvy4GaeOLm ZbjfLjLIsI2+axnC2pIQNslxQNS5wrvyI8smr299LyZV3JmSTZs+fLmQw3mVHcFjWY vdNbSQpWwK68Q== X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, LKML , linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Christoph Hellwig , Jason Gunthorpe , Jason Gunthorpe , Vlastimil Babka , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-media@vger.kernel.org, Shuah Khan , John Hubbard , linux-block@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Al Viro , Dan Williams , Mauro Carvalho Chehab , Magnus Karlsson , Jens Axboe , netdev@vger.kernel.org, Alex Williamson , Daniel Vetter , linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "David S . Miller" , Mike Kravetz Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Convert infiniband to use the new pin_user_pages*() calls. Also, revert earlier changes to Infiniband ODP that had it using put_user_page(). ODP is "Case 3" in Documentation/core-api/pin_user_pages.rst, which is to say, normal get_user_pages() and put_page() is the API to use there. The new pin_user_pages*() calls replace corresponding get_user_pages*() calls, and set the FOLL_PIN flag. The FOLL_PIN flag requires that the caller must return the pages via put_user_page*() calls, but infiniband was already doing that as part of an earlier commit. Reviewed-by: Jason Gunthorpe Signed-off-by: John Hubbard --- drivers/infiniband/core/umem.c | 2 +- drivers/infiniband/core/umem_odp.c | 13 ++++++------- drivers/infiniband/hw/hfi1/user_pages.c | 2 +- drivers/infiniband/hw/mthca/mthca_memfree.c | 2 +- drivers/infiniband/hw/qib/qib_user_pages.c | 2 +- drivers/infiniband/hw/qib/qib_user_sdma.c | 2 +- drivers/infiniband/hw/usnic/usnic_uiom.c | 2 +- drivers/infiniband/sw/siw/siw_mem.c | 2 +- 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.= c index 7a3b99597ead..39a1542e6707 100644 --- a/drivers/infiniband/core/umem.c +++ b/drivers/infiniband/core/umem.c @@ -267,7 +267,7 @@ struct ib_umem *ib_umem_get(struct ib_udata *udata, uns= igned long addr, =20 while (npages) { down_read(&mm->mmap_sem); - ret =3D get_user_pages(cur_base, + ret =3D pin_user_pages(cur_base, min_t(unsigned long, npages, PAGE_SIZE / sizeof (struct page *)), gup_flags | FOLL_LONGTERM, diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/u= mem_odp.c index e42d44e501fd..abc3bb6578cc 100644 --- a/drivers/infiniband/core/umem_odp.c +++ b/drivers/infiniband/core/umem_odp.c @@ -308,9 +308,8 @@ EXPORT_SYMBOL(ib_umem_odp_release); * The function returns -EFAULT if the DMA mapping operation fails. It ret= urns * -EAGAIN if a concurrent invalidation prevents us from updating the page= . * - * The page is released via put_user_page even if the operation failed. Fo= r - * on-demand pinning, the page is released whenever it isn't stored in the - * umem. + * The page is released via put_page even if the operation failed. For on-= demand + * pinning, the page is released whenever it isn't stored in the umem. */ static int ib_umem_odp_map_dma_single_page( struct ib_umem_odp *umem_odp, @@ -363,7 +362,7 @@ static int ib_umem_odp_map_dma_single_page( } =20 out: - put_user_page(page); + put_page(page); return ret; } =20 @@ -473,7 +472,7 @@ int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_= odp, u64 user_virt, ret =3D -EFAULT; break; } - put_user_page(local_page_list[j]); + put_page(local_page_list[j]); continue; } =20 @@ -500,8 +499,8 @@ int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_= odp, u64 user_virt, * ib_umem_odp_map_dma_single_page(). */ if (npages - (j + 1) > 0) - put_user_pages(&local_page_list[j+1], - npages - (j + 1)); + release_pages(&local_page_list[j+1], + npages - (j + 1)); break; } } diff --git a/drivers/infiniband/hw/hfi1/user_pages.c b/drivers/infiniband/h= w/hfi1/user_pages.c index 469acb961fbd..9a94761765c0 100644 --- a/drivers/infiniband/hw/hfi1/user_pages.c +++ b/drivers/infiniband/hw/hfi1/user_pages.c @@ -106,7 +106,7 @@ int hfi1_acquire_user_pages(struct mm_struct *mm, unsig= ned long vaddr, size_t np int ret; unsigned int gup_flags =3D FOLL_LONGTERM | (writable ? FOLL_WRITE : 0); =20 - ret =3D get_user_pages_fast(vaddr, npages, gup_flags, pages); + ret =3D pin_user_pages_fast(vaddr, npages, gup_flags, pages); if (ret < 0) return ret; =20 diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniba= nd/hw/mthca/mthca_memfree.c index edccfd6e178f..8269ab040c21 100644 --- a/drivers/infiniband/hw/mthca/mthca_memfree.c +++ b/drivers/infiniband/hw/mthca/mthca_memfree.c @@ -472,7 +472,7 @@ int mthca_map_user_db(struct mthca_dev *dev, struct mth= ca_uar *uar, goto out; } =20 - ret =3D get_user_pages_fast(uaddr & PAGE_MASK, 1, + ret =3D pin_user_pages_fast(uaddr & PAGE_MASK, 1, FOLL_WRITE | FOLL_LONGTERM, pages); if (ret < 0) goto out; diff --git a/drivers/infiniband/hw/qib/qib_user_pages.c b/drivers/infiniban= d/hw/qib/qib_user_pages.c index 6bf764e41891..7fc4b5f81fcd 100644 --- a/drivers/infiniband/hw/qib/qib_user_pages.c +++ b/drivers/infiniband/hw/qib/qib_user_pages.c @@ -108,7 +108,7 @@ int qib_get_user_pages(unsigned long start_page, size_t= num_pages, =20 down_read(¤t->mm->mmap_sem); for (got =3D 0; got < num_pages; got +=3D ret) { - ret =3D get_user_pages(start_page + got * PAGE_SIZE, + ret =3D pin_user_pages(start_page + got * PAGE_SIZE, num_pages - got, FOLL_LONGTERM | FOLL_WRITE | FOLL_FORCE, p + got, NULL); diff --git a/drivers/infiniband/hw/qib/qib_user_sdma.c b/drivers/infiniband= /hw/qib/qib_user_sdma.c index 05190edc2611..1a3cc2957e3a 100644 --- a/drivers/infiniband/hw/qib/qib_user_sdma.c +++ b/drivers/infiniband/hw/qib/qib_user_sdma.c @@ -670,7 +670,7 @@ static int qib_user_sdma_pin_pages(const struct qib_dev= data *dd, else j =3D npages; =20 - ret =3D get_user_pages_fast(addr, j, FOLL_LONGTERM, pages); + ret =3D pin_user_pages_fast(addr, j, FOLL_LONGTERM, pages); if (ret !=3D j) { i =3D 0; j =3D ret; diff --git a/drivers/infiniband/hw/usnic/usnic_uiom.c b/drivers/infiniband/= hw/usnic/usnic_uiom.c index 62e6ffa9ad78..600896727d34 100644 --- a/drivers/infiniband/hw/usnic/usnic_uiom.c +++ b/drivers/infiniband/hw/usnic/usnic_uiom.c @@ -141,7 +141,7 @@ static int usnic_uiom_get_pages(unsigned long addr, siz= e_t size, int writable, ret =3D 0; =20 while (npages) { - ret =3D get_user_pages(cur_base, + ret =3D pin_user_pages(cur_base, min_t(unsigned long, npages, PAGE_SIZE / sizeof(struct page *)), gup_flags | FOLL_LONGTERM, diff --git a/drivers/infiniband/sw/siw/siw_mem.c b/drivers/infiniband/sw/si= w/siw_mem.c index e99983f07663..e53b07dcfed5 100644 --- a/drivers/infiniband/sw/siw/siw_mem.c +++ b/drivers/infiniband/sw/siw/siw_mem.c @@ -426,7 +426,7 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, bool = writable) while (nents) { struct page **plist =3D &umem->page_chunk[i].plist[got]; =20 - rv =3D get_user_pages(first_page_va, nents, + rv =3D pin_user_pages(first_page_va, nents, foll_flags | FOLL_LONGTERM, plist, NULL); if (rv < 0) --=20 2.24.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Hubbard Subject: [PATCH v2 09/19] IB/{core, hw, umem}: set FOLL_PIN via pin_user_pages*(), fix up ODP Date: Mon, 25 Nov 2019 15:10:25 -0800 Message-ID: <20191125231035.1539120-10-jhubbard@nvidia.com> References: <20191125231035.1539120-1-jhubbard@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from hqemgate14.nvidia.com (hqemgate14.nvidia.com [216.228.121.143]) by gabe.freedesktop.org (Postfix) with ESMTPS id 928A06E16D for ; Mon, 25 Nov 2019 23:10:55 +0000 (UTC) In-Reply-To: <20191125231035.1539120-1-jhubbard@nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrew Morton Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, LKML , linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Christoph Hellwig , Jason Gunthorpe , Jason Gunthorpe , Vlastimil Babka , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-media@vger.kernel.org, Shuah Khan , John Hubbard , linux-block@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Al Viro List-Id: dri-devel@lists.freedesktop.org Q29udmVydCBpbmZpbmliYW5kIHRvIHVzZSB0aGUgbmV3IHBpbl91c2VyX3BhZ2VzKigpIGNhbGxz LgoKQWxzbywgcmV2ZXJ0IGVhcmxpZXIgY2hhbmdlcyB0byBJbmZpbmliYW5kIE9EUCB0aGF0IGhh ZCBpdCB1c2luZwpwdXRfdXNlcl9wYWdlKCkuIE9EUCBpcyAiQ2FzZSAzIiBpbgpEb2N1bWVudGF0 aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdCwgd2hpY2ggaXMgdG8gc2F5LCBub3JtYWwK Z2V0X3VzZXJfcGFnZXMoKSBhbmQgcHV0X3BhZ2UoKSBpcyB0aGUgQVBJIHRvIHVzZSB0aGVyZS4K ClRoZSBuZXcgcGluX3VzZXJfcGFnZXMqKCkgY2FsbHMgcmVwbGFjZSBjb3JyZXNwb25kaW5nIGdl dF91c2VyX3BhZ2VzKigpCmNhbGxzLCBhbmQgc2V0IHRoZSBGT0xMX1BJTiBmbGFnLiBUaGUgRk9M TF9QSU4gZmxhZyByZXF1aXJlcyB0aGF0IHRoZQpjYWxsZXIgbXVzdCByZXR1cm4gdGhlIHBhZ2Vz IHZpYSBwdXRfdXNlcl9wYWdlKigpIGNhbGxzLCBidXQgaW5maW5pYmFuZAp3YXMgYWxyZWFkeSBk b2luZyB0aGF0IGFzIHBhcnQgb2YgYW4gZWFybGllciBjb21taXQuCgpSZXZpZXdlZC1ieTogSmFz b24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBKb2huIEh1YmJh cmQgPGpodWJiYXJkQG52aWRpYS5jb20+Ci0tLQogZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1l bS5jICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29k cC5jICAgICAgICAgIHwgMTMgKysrKysrLS0tLS0tLQogZHJpdmVycy9pbmZpbmliYW5kL2h3L2hm aTEvdXNlcl9wYWdlcy5jICAgICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2Ev bXRoY2FfbWVtZnJlZS5jIHwgIDIgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3Vz ZXJfcGFnZXMuYyAgfCAgMiArLQogZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdXNlcl9z ZG1hLmMgICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvdXNuaWNfdWlvbS5j ICAgIHwgIDIgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9zdy9zaXcvc2l3X21lbS5jICAgICAgICAg fCAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91bWVtLmMKaW5kZXggN2EzYjk5NTk3ZWFkLi4zOWExNTQyZTY3MDcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYworKysgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91bWVtLmMKQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdHJ1Y3QgaWJfdW1l bSAqaWJfdW1lbV9nZXQoc3RydWN0IGliX3VkYXRhICp1ZGF0YSwgdW5zaWduZWQgbG9uZyBhZGRy LAogCiAJd2hpbGUgKG5wYWdlcykgewogCQlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0JCXJl dCA9IGdldF91c2VyX3BhZ2VzKGN1cl9iYXNlLAorCQlyZXQgPSBwaW5fdXNlcl9wYWdlcyhjdXJf YmFzZSwKIAkJCQkgICAgIG1pbl90KHVuc2lnbmVkIGxvbmcsIG5wYWdlcywKIAkJCQkJICAgUEFH RV9TSVpFIC8gc2l6ZW9mIChzdHJ1Y3QgcGFnZSAqKSksCiAJCQkJICAgICBndXBfZmxhZ3MgfCBG T0xMX0xPTkdURVJNLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9v ZHAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMKaW5kZXggZTQyZDQ0ZTUw MWZkLi5hYmMzYmI2NTc4Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3Vt ZW1fb2RwLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYwpAQCAtMzA4 LDkgKzMwOCw4IEBAIEVYUE9SVF9TWU1CT0woaWJfdW1lbV9vZHBfcmVsZWFzZSk7CiAgKiBUaGUg ZnVuY3Rpb24gcmV0dXJucyAtRUZBVUxUIGlmIHRoZSBETUEgbWFwcGluZyBvcGVyYXRpb24gZmFp bHMuIEl0IHJldHVybnMKICAqIC1FQUdBSU4gaWYgYSBjb25jdXJyZW50IGludmFsaWRhdGlvbiBw cmV2ZW50cyB1cyBmcm9tIHVwZGF0aW5nIHRoZSBwYWdlLgogICoKLSAqIFRoZSBwYWdlIGlzIHJl bGVhc2VkIHZpYSBwdXRfdXNlcl9wYWdlIGV2ZW4gaWYgdGhlIG9wZXJhdGlvbiBmYWlsZWQuIEZv cgotICogb24tZGVtYW5kIHBpbm5pbmcsIHRoZSBwYWdlIGlzIHJlbGVhc2VkIHdoZW5ldmVyIGl0 IGlzbid0IHN0b3JlZCBpbiB0aGUKLSAqIHVtZW0uCisgKiBUaGUgcGFnZSBpcyByZWxlYXNlZCB2 aWEgcHV0X3BhZ2UgZXZlbiBpZiB0aGUgb3BlcmF0aW9uIGZhaWxlZC4gRm9yIG9uLWRlbWFuZAor ICogcGlubmluZywgdGhlIHBhZ2UgaXMgcmVsZWFzZWQgd2hlbmV2ZXIgaXQgaXNuJ3Qgc3RvcmVk IGluIHRoZSB1bWVtLgogICovCiBzdGF0aWMgaW50IGliX3VtZW1fb2RwX21hcF9kbWFfc2luZ2xl X3BhZ2UoCiAJCXN0cnVjdCBpYl91bWVtX29kcCAqdW1lbV9vZHAsCkBAIC0zNjMsNyArMzYyLDcg QEAgc3RhdGljIGludCBpYl91bWVtX29kcF9tYXBfZG1hX3NpbmdsZV9wYWdlKAogCX0KIAogb3V0 OgotCXB1dF91c2VyX3BhZ2UocGFnZSk7CisJcHV0X3BhZ2UocGFnZSk7CiAJcmV0dXJuIHJldDsK IH0KIApAQCAtNDczLDcgKzQ3Miw3IEBAIGludCBpYl91bWVtX29kcF9tYXBfZG1hX3BhZ2VzKHN0 cnVjdCBpYl91bWVtX29kcCAqdW1lbV9vZHAsIHU2NCB1c2VyX3ZpcnQsCiAJCQkJCXJldCA9IC1F RkFVTFQ7CiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQlwdXRfdXNlcl9wYWdlKGxvY2FsX3BhZ2Vf bGlzdFtqXSk7CisJCQkJcHV0X3BhZ2UobG9jYWxfcGFnZV9saXN0W2pdKTsKIAkJCQljb250aW51 ZTsKIAkJCX0KIApAQCAtNTAwLDggKzQ5OSw4IEBAIGludCBpYl91bWVtX29kcF9tYXBfZG1hX3Bh Z2VzKHN0cnVjdCBpYl91bWVtX29kcCAqdW1lbV9vZHAsIHU2NCB1c2VyX3ZpcnQsCiAJCQkgKiBp Yl91bWVtX29kcF9tYXBfZG1hX3NpbmdsZV9wYWdlKCkuCiAJCQkgKi8KIAkJCWlmIChucGFnZXMg LSAoaiArIDEpID4gMCkKLQkJCQlwdXRfdXNlcl9wYWdlcygmbG9jYWxfcGFnZV9saXN0W2orMV0s Ci0JCQkJCSAgICAgICBucGFnZXMgLSAoaiArIDEpKTsKKwkJCQlyZWxlYXNlX3BhZ2VzKCZsb2Nh bF9wYWdlX2xpc3RbaisxXSwKKwkJCQkJICAgICAgbnBhZ2VzIC0gKGogKyAxKSk7CiAJCQlicmVh azsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3VzZXJf cGFnZXMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3VzZXJfcGFnZXMuYwppbmRleCA0 NjlhY2I5NjFmYmQuLjlhOTQ3NjE3NjVjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5k L2h3L2hmaTEvdXNlcl9wYWdlcy5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3Vz ZXJfcGFnZXMuYwpAQCAtMTA2LDcgKzEwNiw3IEBAIGludCBoZmkxX2FjcXVpcmVfdXNlcl9wYWdl cyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB2YWRkciwgc2l6ZV90IG5wCiAJ aW50IHJldDsKIAl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzID0gRk9MTF9MT05HVEVSTSB8ICh3cml0 YWJsZSA/IEZPTExfV1JJVEUgOiAwKTsKIAotCXJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QodmFk ZHIsIG5wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcyk7CisJcmV0ID0gcGluX3VzZXJfcGFnZXNfZmFz dCh2YWRkciwgbnBhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0 dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNh X21lbWZyZWUuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9tZW1mcmVlLmMK aW5kZXggZWRjY2ZkNmUxNzhmLi44MjY5YWIwNDBjMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9tdGhjYS9tdGhjYV9tZW1mcmVlLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5k L2h3L210aGNhL210aGNhX21lbWZyZWUuYwpAQCAtNDcyLDcgKzQ3Miw3IEBAIGludCBtdGhjYV9t YXBfdXNlcl9kYihzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIHN0cnVjdCBtdGhjYV91YXIgKnVhciwK IAkJZ290byBvdXQ7CiAJfQogCi0JcmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdCh1YWRkciAmIFBB R0VfTUFTSywgMSwKKwlyZXQgPSBwaW5fdXNlcl9wYWdlc19mYXN0KHVhZGRyICYgUEFHRV9NQVNL LCAxLAogCQkJCSAgRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0sIHBhZ2VzKTsKIAlpZiAocmV0 IDwgMCkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWli L3FpYl91c2VyX3BhZ2VzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3Bh Z2VzLmMKaW5kZXggNmJmNzY0ZTQxODkxLi43ZmM0YjVmODFmY2QgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfcGFnZXMuYworKysgYi9kcml2ZXJzL2luZmlu aWJhbmQvaHcvcWliL3FpYl91c2VyX3BhZ2VzLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCBpbnQgcWli X2dldF91c2VyX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGFnZSwgc2l6ZV90IG51bV9wYWdl cywKIAogCWRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKIAlmb3IgKGdvdCA9IDA7 IGdvdCA8IG51bV9wYWdlczsgZ290ICs9IHJldCkgewotCQlyZXQgPSBnZXRfdXNlcl9wYWdlcyhz dGFydF9wYWdlICsgZ290ICogUEFHRV9TSVpFLAorCQlyZXQgPSBwaW5fdXNlcl9wYWdlcyhzdGFy dF9wYWdlICsgZ290ICogUEFHRV9TSVpFLAogCQkJCSAgICAgbnVtX3BhZ2VzIC0gZ290LAogCQkJ CSAgICAgRk9MTF9MT05HVEVSTSB8IEZPTExfV1JJVEUgfCBGT0xMX0ZPUkNFLAogCQkJCSAgICAg cCArIGdvdCwgTlVMTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3Fp Yl91c2VyX3NkbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfc2RtYS5j CmluZGV4IDA1MTkwZWRjMjYxMS4uMWEzY2MyOTU3ZTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lu ZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQv aHcvcWliL3FpYl91c2VyX3NkbWEuYwpAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBpbnQgcWli X3VzZXJfc2RtYV9waW5fcGFnZXMoY29uc3Qgc3RydWN0IHFpYl9kZXZkYXRhICpkZCwKIAkJZWxz ZQogCQkJaiA9IG5wYWdlczsKIAotCQlyZXQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHIsIGos IEZPTExfTE9OR1RFUk0sIHBhZ2VzKTsKKwkJcmV0ID0gcGluX3VzZXJfcGFnZXNfZmFzdChhZGRy LCBqLCBGT0xMX0xPTkdURVJNLCBwYWdlcyk7CiAJCWlmIChyZXQgIT0gaikgewogCQkJaSA9IDA7 CiAJCQlqID0gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3VzbmljL3Vz bmljX3Vpb20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody91c25pYy91c25pY191aW9tLmMKaW5k ZXggNjJlNmZmYTlhZDc4Li42MDA4OTY3MjdkMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody91c25pYy91c25pY191aW9tLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Vz bmljL3VzbmljX3Vpb20uYwpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBpbnQgdXNuaWNfdWlv bV9nZXRfcGFnZXModW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSwgaW50IHdyaXRhYmxl LAogCXJldCA9IDA7CiAKIAl3aGlsZSAobnBhZ2VzKSB7Ci0JCXJldCA9IGdldF91c2VyX3BhZ2Vz KGN1cl9iYXNlLAorCQlyZXQgPSBwaW5fdXNlcl9wYWdlcyhjdXJfYmFzZSwKIAkJCQkgICAgIG1p bl90KHVuc2lnbmVkIGxvbmcsIG5wYWdlcywKIAkJCQkgICAgIFBBR0VfU0laRSAvIHNpemVvZihz dHJ1Y3QgcGFnZSAqKSksCiAJCQkJICAgICBndXBfZmxhZ3MgfCBGT0xMX0xPTkdURVJNLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfbWVtLmMgYi9kcml2ZXJzL2lu ZmluaWJhbmQvc3cvc2l3L3Npd19tZW0uYwppbmRleCBlOTk5ODNmMDc2NjMuLmU1M2IwN2RjZmVk NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfbWVtLmMKKysrIGIv ZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfbWVtLmMKQEAgLTQyNiw3ICs0MjYsNyBAQCBz dHJ1Y3Qgc2l3X3VtZW0gKnNpd191bWVtX2dldCh1NjQgc3RhcnQsIHU2NCBsZW4sIGJvb2wgd3Jp dGFibGUpCiAJCXdoaWxlIChuZW50cykgewogCQkJc3RydWN0IHBhZ2UgKipwbGlzdCA9ICZ1bWVt LT5wYWdlX2NodW5rW2ldLnBsaXN0W2dvdF07CiAKLQkJCXJ2ID0gZ2V0X3VzZXJfcGFnZXMoZmly c3RfcGFnZV92YSwgbmVudHMsCisJCQlydiA9IHBpbl91c2VyX3BhZ2VzKGZpcnN0X3BhZ2VfdmEs IG5lbnRzLAogCQkJCQkgICAgZm9sbF9mbGFncyB8IEZPTExfTE9OR1RFUk0sCiAJCQkJCSAgICBw bGlzdCwgTlVMTCk7CiAJCQlpZiAocnYgPCAwKQotLSAKMi4yNC4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96874C33C8C for ; Mon, 25 Nov 2019 23:11:02 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6D8FA2082F for ; Mon, 25 Nov 2019 23:11:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D8FA2082F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 73AD86E130; Mon, 25 Nov 2019 23:10:58 +0000 (UTC) Received: from hqemgate14.nvidia.com (hqemgate14.nvidia.com [216.228.121.143]) by gabe.freedesktop.org (Postfix) with ESMTPS id 928A06E16D for ; Mon, 25 Nov 2019 23:10:55 +0000 (UTC) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate14.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 25 Nov 2019 15:10:58 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 25 Nov 2019 15:10:55 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 25 Nov 2019 15:10:55 -0800 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 25 Nov 2019 23:10:50 +0000 Received: from rnnvemgw01.nvidia.com (10.128.109.123) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 25 Nov 2019 23:10:49 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by rnnvemgw01.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) id ; Mon, 25 Nov 2019 15:10:49 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH v2 09/19] IB/{core, hw, umem}: set FOLL_PIN via pin_user_pages*(), fix up ODP Date: Mon, 25 Nov 2019 15:10:25 -0800 Message-ID: <20191125231035.1539120-10-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191125231035.1539120-1-jhubbard@nvidia.com> References: <20191125231035.1539120-1-jhubbard@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1574723458; bh=F5LoLh4kW0VgIVuupouosvzq/0ORLXJ24SyIGBNyaiY=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:X-NVConfidentiality: Content-Transfer-Encoding:Content-Type; b=fYa9Fxr238hgOyyNRcsaLelkrz/AaWZ+YFI0ekeV82KuEzJPfks9Ze3MMHT9RXQg7 Fp5WtkQAVmozLC8aivKlUT81a6TstuxmkvgxJIc2lPQleWopKjyLXkFRRc3z3XhJcQ h8MlIK+gqKy8AZkJ60NkBh3w/SacdTFVnj5AoPkLy8ExGYHmAqtp4K60laJIuVN8WW X4lfsAt5OJGDmj2+9UsK+NIlBA/0G+sWt4/ceZxHcqkxCNsDp3L/81Z4kvy4GaeOLm ZbjfLjLIsI2+axnC2pIQNslxQNS5wrvyI8smr299LyZV3JmSTZs+fLmQw3mVHcFjWY vdNbSQpWwK68Q== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, LKML , linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Christoph Hellwig , Jason Gunthorpe , Jason Gunthorpe , Vlastimil Babka , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-media@vger.kernel.org, Shuah Khan , John Hubbard , linux-block@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Al Viro , Dan Williams , Mauro Carvalho Chehab , Magnus Karlsson , Jens Axboe , netdev@vger.kernel.org, Alex Williamson , linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "David S . Miller" , Mike Kravetz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191125231025.iwbD8cIWV1q9DZIN_7zrDpRl7xNp535ORqgN8ce7VW4@z> Q29udmVydCBpbmZpbmliYW5kIHRvIHVzZSB0aGUgbmV3IHBpbl91c2VyX3BhZ2VzKigpIGNhbGxz LgoKQWxzbywgcmV2ZXJ0IGVhcmxpZXIgY2hhbmdlcyB0byBJbmZpbmliYW5kIE9EUCB0aGF0IGhh ZCBpdCB1c2luZwpwdXRfdXNlcl9wYWdlKCkuIE9EUCBpcyAiQ2FzZSAzIiBpbgpEb2N1bWVudGF0 aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdCwgd2hpY2ggaXMgdG8gc2F5LCBub3JtYWwK Z2V0X3VzZXJfcGFnZXMoKSBhbmQgcHV0X3BhZ2UoKSBpcyB0aGUgQVBJIHRvIHVzZSB0aGVyZS4K ClRoZSBuZXcgcGluX3VzZXJfcGFnZXMqKCkgY2FsbHMgcmVwbGFjZSBjb3JyZXNwb25kaW5nIGdl dF91c2VyX3BhZ2VzKigpCmNhbGxzLCBhbmQgc2V0IHRoZSBGT0xMX1BJTiBmbGFnLiBUaGUgRk9M TF9QSU4gZmxhZyByZXF1aXJlcyB0aGF0IHRoZQpjYWxsZXIgbXVzdCByZXR1cm4gdGhlIHBhZ2Vz IHZpYSBwdXRfdXNlcl9wYWdlKigpIGNhbGxzLCBidXQgaW5maW5pYmFuZAp3YXMgYWxyZWFkeSBk b2luZyB0aGF0IGFzIHBhcnQgb2YgYW4gZWFybGllciBjb21taXQuCgpSZXZpZXdlZC1ieTogSmFz b24gR3VudGhvcnBlIDxqZ2dAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBKb2huIEh1YmJh cmQgPGpodWJiYXJkQG52aWRpYS5jb20+Ci0tLQogZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1l bS5jICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtX29k cC5jICAgICAgICAgIHwgMTMgKysrKysrLS0tLS0tLQogZHJpdmVycy9pbmZpbmliYW5kL2h3L2hm aTEvdXNlcl9wYWdlcy5jICAgICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvbXRoY2Ev bXRoY2FfbWVtZnJlZS5jIHwgIDIgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3Vz ZXJfcGFnZXMuYyAgfCAgMiArLQogZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdXNlcl9z ZG1hLmMgICB8ICAyICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvdXNuaWNfdWlvbS5j ICAgIHwgIDIgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9zdy9zaXcvc2l3X21lbS5jICAgICAgICAg fCAgMiArLQogOCBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS91bWVtLmMgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91bWVtLmMKaW5kZXggN2EzYjk5NTk3ZWFkLi4zOWExNTQyZTY3MDcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW0uYworKysgYi9kcml2ZXJz L2luZmluaWJhbmQvY29yZS91bWVtLmMKQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdHJ1Y3QgaWJfdW1l bSAqaWJfdW1lbV9nZXQoc3RydWN0IGliX3VkYXRhICp1ZGF0YSwgdW5zaWduZWQgbG9uZyBhZGRy LAogCiAJd2hpbGUgKG5wYWdlcykgewogCQlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0JCXJl dCA9IGdldF91c2VyX3BhZ2VzKGN1cl9iYXNlLAorCQlyZXQgPSBwaW5fdXNlcl9wYWdlcyhjdXJf YmFzZSwKIAkJCQkgICAgIG1pbl90KHVuc2lnbmVkIGxvbmcsIG5wYWdlcywKIAkJCQkJICAgUEFH RV9TSVpFIC8gc2l6ZW9mIChzdHJ1Y3QgcGFnZSAqKSksCiAJCQkJICAgICBndXBfZmxhZ3MgfCBG T0xMX0xPTkdURVJNLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9v ZHAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMKaW5kZXggZTQyZDQ0ZTUw MWZkLi5hYmMzYmI2NTc4Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3Vt ZW1fb2RwLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYwpAQCAtMzA4 LDkgKzMwOCw4IEBAIEVYUE9SVF9TWU1CT0woaWJfdW1lbV9vZHBfcmVsZWFzZSk7CiAgKiBUaGUg ZnVuY3Rpb24gcmV0dXJucyAtRUZBVUxUIGlmIHRoZSBETUEgbWFwcGluZyBvcGVyYXRpb24gZmFp bHMuIEl0IHJldHVybnMKICAqIC1FQUdBSU4gaWYgYSBjb25jdXJyZW50IGludmFsaWRhdGlvbiBw cmV2ZW50cyB1cyBmcm9tIHVwZGF0aW5nIHRoZSBwYWdlLgogICoKLSAqIFRoZSBwYWdlIGlzIHJl bGVhc2VkIHZpYSBwdXRfdXNlcl9wYWdlIGV2ZW4gaWYgdGhlIG9wZXJhdGlvbiBmYWlsZWQuIEZv cgotICogb24tZGVtYW5kIHBpbm5pbmcsIHRoZSBwYWdlIGlzIHJlbGVhc2VkIHdoZW5ldmVyIGl0 IGlzbid0IHN0b3JlZCBpbiB0aGUKLSAqIHVtZW0uCisgKiBUaGUgcGFnZSBpcyByZWxlYXNlZCB2 aWEgcHV0X3BhZ2UgZXZlbiBpZiB0aGUgb3BlcmF0aW9uIGZhaWxlZC4gRm9yIG9uLWRlbWFuZAor ICogcGlubmluZywgdGhlIHBhZ2UgaXMgcmVsZWFzZWQgd2hlbmV2ZXIgaXQgaXNuJ3Qgc3RvcmVk IGluIHRoZSB1bWVtLgogICovCiBzdGF0aWMgaW50IGliX3VtZW1fb2RwX21hcF9kbWFfc2luZ2xl X3BhZ2UoCiAJCXN0cnVjdCBpYl91bWVtX29kcCAqdW1lbV9vZHAsCkBAIC0zNjMsNyArMzYyLDcg QEAgc3RhdGljIGludCBpYl91bWVtX29kcF9tYXBfZG1hX3NpbmdsZV9wYWdlKAogCX0KIAogb3V0 OgotCXB1dF91c2VyX3BhZ2UocGFnZSk7CisJcHV0X3BhZ2UocGFnZSk7CiAJcmV0dXJuIHJldDsK IH0KIApAQCAtNDczLDcgKzQ3Miw3IEBAIGludCBpYl91bWVtX29kcF9tYXBfZG1hX3BhZ2VzKHN0 cnVjdCBpYl91bWVtX29kcCAqdW1lbV9vZHAsIHU2NCB1c2VyX3ZpcnQsCiAJCQkJCXJldCA9IC1F RkFVTFQ7CiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJCQlwdXRfdXNlcl9wYWdlKGxvY2FsX3BhZ2Vf bGlzdFtqXSk7CisJCQkJcHV0X3BhZ2UobG9jYWxfcGFnZV9saXN0W2pdKTsKIAkJCQljb250aW51 ZTsKIAkJCX0KIApAQCAtNTAwLDggKzQ5OSw4IEBAIGludCBpYl91bWVtX29kcF9tYXBfZG1hX3Bh Z2VzKHN0cnVjdCBpYl91bWVtX29kcCAqdW1lbV9vZHAsIHU2NCB1c2VyX3ZpcnQsCiAJCQkgKiBp Yl91bWVtX29kcF9tYXBfZG1hX3NpbmdsZV9wYWdlKCkuCiAJCQkgKi8KIAkJCWlmIChucGFnZXMg LSAoaiArIDEpID4gMCkKLQkJCQlwdXRfdXNlcl9wYWdlcygmbG9jYWxfcGFnZV9saXN0W2orMV0s Ci0JCQkJCSAgICAgICBucGFnZXMgLSAoaiArIDEpKTsKKwkJCQlyZWxlYXNlX3BhZ2VzKCZsb2Nh bF9wYWdlX2xpc3RbaisxXSwKKwkJCQkJICAgICAgbnBhZ2VzIC0gKGogKyAxKSk7CiAJCQlicmVh azsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3VzZXJf cGFnZXMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3VzZXJfcGFnZXMuYwppbmRleCA0 NjlhY2I5NjFmYmQuLjlhOTQ3NjE3NjVjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5k L2h3L2hmaTEvdXNlcl9wYWdlcy5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9oZmkxL3Vz ZXJfcGFnZXMuYwpAQCAtMTA2LDcgKzEwNiw3IEBAIGludCBoZmkxX2FjcXVpcmVfdXNlcl9wYWdl cyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyB2YWRkciwgc2l6ZV90IG5wCiAJ aW50IHJldDsKIAl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzID0gRk9MTF9MT05HVEVSTSB8ICh3cml0 YWJsZSA/IEZPTExfV1JJVEUgOiAwKTsKIAotCXJldCA9IGdldF91c2VyX3BhZ2VzX2Zhc3QodmFk ZHIsIG5wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcyk7CisJcmV0ID0gcGluX3VzZXJfcGFnZXNfZmFz dCh2YWRkciwgbnBhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0 dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhL210aGNh X21lbWZyZWUuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tdGhjYS9tdGhjYV9tZW1mcmVlLmMK aW5kZXggZWRjY2ZkNmUxNzhmLi44MjY5YWIwNDBjMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9tdGhjYS9tdGhjYV9tZW1mcmVlLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5k L2h3L210aGNhL210aGNhX21lbWZyZWUuYwpAQCAtNDcyLDcgKzQ3Miw3IEBAIGludCBtdGhjYV9t YXBfdXNlcl9kYihzdHJ1Y3QgbXRoY2FfZGV2ICpkZXYsIHN0cnVjdCBtdGhjYV91YXIgKnVhciwK IAkJZ290byBvdXQ7CiAJfQogCi0JcmV0ID0gZ2V0X3VzZXJfcGFnZXNfZmFzdCh1YWRkciAmIFBB R0VfTUFTSywgMSwKKwlyZXQgPSBwaW5fdXNlcl9wYWdlc19mYXN0KHVhZGRyICYgUEFHRV9NQVNL LCAxLAogCQkJCSAgRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0sIHBhZ2VzKTsKIAlpZiAocmV0 IDwgMCkKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWli L3FpYl91c2VyX3BhZ2VzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3Bh Z2VzLmMKaW5kZXggNmJmNzY0ZTQxODkxLi43ZmM0YjVmODFmY2QgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfcGFnZXMuYworKysgYi9kcml2ZXJzL2luZmlu aWJhbmQvaHcvcWliL3FpYl91c2VyX3BhZ2VzLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCBpbnQgcWli X2dldF91c2VyX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGFnZSwgc2l6ZV90IG51bV9wYWdl cywKIAogCWRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKIAlmb3IgKGdvdCA9IDA7 IGdvdCA8IG51bV9wYWdlczsgZ290ICs9IHJldCkgewotCQlyZXQgPSBnZXRfdXNlcl9wYWdlcyhz dGFydF9wYWdlICsgZ290ICogUEFHRV9TSVpFLAorCQlyZXQgPSBwaW5fdXNlcl9wYWdlcyhzdGFy dF9wYWdlICsgZ290ICogUEFHRV9TSVpFLAogCQkJCSAgICAgbnVtX3BhZ2VzIC0gZ290LAogCQkJ CSAgICAgRk9MTF9MT05HVEVSTSB8IEZPTExfV1JJVEUgfCBGT0xMX0ZPUkNFLAogCQkJCSAgICAg cCArIGdvdCwgTlVMTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3Fp Yl91c2VyX3NkbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfc2RtYS5j CmluZGV4IDA1MTkwZWRjMjYxMS4uMWEzY2MyOTU3ZTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lu ZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQv aHcvcWliL3FpYl91c2VyX3NkbWEuYwpAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBpbnQgcWli X3VzZXJfc2RtYV9waW5fcGFnZXMoY29uc3Qgc3RydWN0IHFpYl9kZXZkYXRhICpkZCwKIAkJZWxz ZQogCQkJaiA9IG5wYWdlczsKIAotCQlyZXQgPSBnZXRfdXNlcl9wYWdlc19mYXN0KGFkZHIsIGos IEZPTExfTE9OR1RFUk0sIHBhZ2VzKTsKKwkJcmV0ID0gcGluX3VzZXJfcGFnZXNfZmFzdChhZGRy LCBqLCBGT0xMX0xPTkdURVJNLCBwYWdlcyk7CiAJCWlmIChyZXQgIT0gaikgewogCQkJaSA9IDA7 CiAJCQlqID0gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3VzbmljL3Vz bmljX3Vpb20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody91c25pYy91c25pY191aW9tLmMKaW5k ZXggNjJlNmZmYTlhZDc4Li42MDA4OTY3MjdkMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody91c25pYy91c25pY191aW9tLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3Vz bmljL3VzbmljX3Vpb20uYwpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBpbnQgdXNuaWNfdWlv bV9nZXRfcGFnZXModW5zaWduZWQgbG9uZyBhZGRyLCBzaXplX3Qgc2l6ZSwgaW50IHdyaXRhYmxl LAogCXJldCA9IDA7CiAKIAl3aGlsZSAobnBhZ2VzKSB7Ci0JCXJldCA9IGdldF91c2VyX3BhZ2Vz KGN1cl9iYXNlLAorCQlyZXQgPSBwaW5fdXNlcl9wYWdlcyhjdXJfYmFzZSwKIAkJCQkgICAgIG1p bl90KHVuc2lnbmVkIGxvbmcsIG5wYWdlcywKIAkJCQkgICAgIFBBR0VfU0laRSAvIHNpemVvZihz dHJ1Y3QgcGFnZSAqKSksCiAJCQkJICAgICBndXBfZmxhZ3MgfCBGT0xMX0xPTkdURVJNLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfbWVtLmMgYi9kcml2ZXJzL2lu ZmluaWJhbmQvc3cvc2l3L3Npd19tZW0uYwppbmRleCBlOTk5ODNmMDc2NjMuLmU1M2IwN2RjZmVk NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfbWVtLmMKKysrIGIv ZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfbWVtLmMKQEAgLTQyNiw3ICs0MjYsNyBAQCBz dHJ1Y3Qgc2l3X3VtZW0gKnNpd191bWVtX2dldCh1NjQgc3RhcnQsIHU2NCBsZW4sIGJvb2wgd3Jp dGFibGUpCiAJCXdoaWxlIChuZW50cykgewogCQkJc3RydWN0IHBhZ2UgKipwbGlzdCA9ICZ1bWVt LT5wYWdlX2NodW5rW2ldLnBsaXN0W2dvdF07CiAKLQkJCXJ2ID0gZ2V0X3VzZXJfcGFnZXMoZmly c3RfcGFnZV92YSwgbmVudHMsCisJCQlydiA9IHBpbl91c2VyX3BhZ2VzKGZpcnN0X3BhZ2VfdmEs IG5lbnRzLAogCQkJCQkgICAgZm9sbF9mbGFncyB8IEZPTExfTE9OR1RFUk0sCiAJCQkJCSAgICBw bGlzdCwgTlVMTCk7CiAJCQlpZiAocnYgPCAwKQotLSAKMi4yNC4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=