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=-11.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 74EA4C00A89 for ; Sat, 31 Oct 2020 02:55:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2EB2B22228 for ; Sat, 31 Oct 2020 02:55:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="AtOxaAfN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726234AbgJaCz3 (ORCPT ); Fri, 30 Oct 2020 22:55:29 -0400 Received: from hqnvemgate25.nvidia.com ([216.228.121.64]:4027 "EHLO hqnvemgate25.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725794AbgJaCz2 (ORCPT ); Fri, 30 Oct 2020 22:55:28 -0400 Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Fri, 30 Oct 2020 19:55:30 -0700 Received: from [10.2.58.85] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sat, 31 Oct 2020 02:55:18 +0000 Subject: Re: [PATCH v5 05/15] mm/frame-vector: Use FOLL_LONGTERM To: Daniel Vetter , DRI Development , LKML CC: , , , , , Daniel Vetter , "Jason Gunthorpe" , Pawel Osciak , Marek Szyprowski , Kyungmin Park , "Tomasz Figa" , Mauro Carvalho Chehab , Andrew Morton , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Jan Kara , Dan Williams References: <20201030100815.2269-1-daniel.vetter@ffwll.ch> <20201030100815.2269-6-daniel.vetter@ffwll.ch> From: John Hubbard Message-ID: <446b2d5b-a1a1-a408-f884-f17a04b72c18@nvidia.com> Date: Fri, 30 Oct 2020 19:55:17 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20201030100815.2269-6-daniel.vetter@ffwll.ch> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1604112930; bh=kIbuOrZMF2YQAWfUPs6gkqYbyNybPPlpG1DHBddVTeI=; h=Subject:To:CC:References:From:Message-ID:Date:User-Agent: MIME-Version:In-Reply-To:Content-Type:Content-Language: Content-Transfer-Encoding:X-Originating-IP:X-ClientProxiedBy; b=AtOxaAfNPVF2Y8gZFgz8BlJTCY2WnS/ll/uZOpZY6ZM3sYeZDX0wsWzg9kbJTYbtL uIT7SI94Nu0DAKox4tjTnJcLN8XQH4afRazJUVETQXmRDSkforw/ZyajpCSjQdhakD V5TkHQG1hyUHjxO5/EziqQ5QU5HsvmsdLhy0c2pJ17Ik4sdOeRb9MDZW7AgVbI6HUp khbiVPlvAQBqPZreVxuJwdPBCd0dFyD9l044fmdbRBxITLNtDeDmPV0I8qXzaQGtcL 05gwU5zD1T2KQ11VFOtz4tXHAh7iSeMGU/Zo8kgIrMlYShlD2P3PVWKbYJ1hjOt5Cc x4G0lu6VoJy1w== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/30/20 3:08 AM, Daniel Vetter wrote: > This is used by media/videbuf2 for persistent dma mappings, not just > for a single dma operation and then freed again, so needs > FOLL_LONGTERM. >=20 > Unfortunately current pup_locked doesn't support FOLL_LONGTERM due to > locking issues. Rework the code to pull the pup path out from the > mmap_sem critical section as suggested by Jason. >=20 > By relying entirely on the vma checks in pin_user_pages and follow_pfn There are vma checks in pin_user_pages(), but this patch changes things to call pin_user_pages_fast(). And that does not have the vma checks. More below about this: > (for vm_flags and vma_is_fsdax) we can also streamline the code a lot. >=20 > Signed-off-by: Daniel Vetter > Cc: Jason Gunthorpe > Cc: Pawel Osciak > Cc: Marek Szyprowski > Cc: Kyungmin Park > Cc: Tomasz Figa > Cc: Mauro Carvalho Chehab > Cc: Andrew Morton > Cc: John Hubbard > Cc: J=C3=A9r=C3=B4me Glisse > Cc: Jan Kara > Cc: Dan Williams > Cc: linux-mm@kvack.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-samsung-soc@vger.kernel.org > Cc: linux-media@vger.kernel.org > Signed-off-by: Daniel Vetter > -- > v2: Streamline the code and further simplify the loop checks (Jason) >=20 > v5: Review from Tomasz: > - fix page counting for the follow_pfn case by resetting ret > - drop gup_flags paramater, now unused > --- > .../media/common/videobuf2/videobuf2-memops.c | 3 +- > include/linux/mm.h | 2 +- > mm/frame_vector.c | 53 ++++++------------- > 3 files changed, 19 insertions(+), 39 deletions(-) >=20 > diff --git a/drivers/media/common/videobuf2/videobuf2-memops.c b/drivers/= media/common/videobuf2/videobuf2-memops.c > index 6e9e05153f4e..9dd6c27162f4 100644 > --- a/drivers/media/common/videobuf2/videobuf2-memops.c > +++ b/drivers/media/common/videobuf2/videobuf2-memops.c > @@ -40,7 +40,6 @@ struct frame_vector *vb2_create_framevec(unsigned long = start, > unsigned long first, last; > unsigned long nr; > struct frame_vector *vec; > - unsigned int flags =3D FOLL_FORCE | FOLL_WRITE; > =20 > first =3D start >> PAGE_SHIFT; > last =3D (start + length - 1) >> PAGE_SHIFT; > @@ -48,7 +47,7 @@ struct frame_vector *vb2_create_framevec(unsigned long = start, > vec =3D frame_vector_create(nr); > if (!vec) > return ERR_PTR(-ENOMEM); > - ret =3D get_vaddr_frames(start & PAGE_MASK, nr, flags, vec); > + ret =3D get_vaddr_frames(start & PAGE_MASK, nr, vec); > if (ret < 0) > goto out_destroy; > /* We accept only complete set of PFNs */ > diff --git a/include/linux/mm.h b/include/linux/mm.h > index ef360fe70aaf..d6b8e30dce2e 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1765,7 +1765,7 @@ struct frame_vector { > struct frame_vector *frame_vector_create(unsigned int nr_frames); > void frame_vector_destroy(struct frame_vector *vec); > int get_vaddr_frames(unsigned long start, unsigned int nr_pfns, > - unsigned int gup_flags, struct frame_vector *vec); > + struct frame_vector *vec); > void put_vaddr_frames(struct frame_vector *vec); > int frame_vector_to_pages(struct frame_vector *vec); > void frame_vector_to_pfns(struct frame_vector *vec); > diff --git a/mm/frame_vector.c b/mm/frame_vector.c > index 10f82d5643b6..f8c34b895c76 100644 > --- a/mm/frame_vector.c > +++ b/mm/frame_vector.c > @@ -32,13 +32,12 @@ > * This function takes care of grabbing mmap_lock as necessary. > */ > int get_vaddr_frames(unsigned long start, unsigned int nr_frames, > - unsigned int gup_flags, struct frame_vector *vec) > + struct frame_vector *vec) > { > struct mm_struct *mm =3D current->mm; > struct vm_area_struct *vma; > int ret =3D 0; > int err; > - int locked; > =20 > if (nr_frames =3D=3D 0) > return 0; > @@ -48,40 +47,26 @@ int get_vaddr_frames(unsigned long start, unsigned in= t nr_frames, > =20 > start =3D untagged_addr(start); > =20 > - mmap_read_lock(mm); > - locked =3D 1; > - vma =3D find_vma_intersection(mm, start, start + 1); > - if (!vma) { > - ret =3D -EFAULT; > - goto out; > - } > - > - /* > - * While get_vaddr_frames() could be used for transient (kernel > - * controlled lifetime) pinning of memory pages all current > - * users establish long term (userspace controlled lifetime) > - * page pinning. Treat get_vaddr_frames() like > - * get_user_pages_longterm() and disallow it for filesystem-dax > - * mappings. > - */ > - if (vma_is_fsdax(vma)) { > - ret =3D -EOPNOTSUPP; > - goto out; > - } > - > - if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) { By removing this check from this location, and changing from pin_user_pages_locked() to pin_user_pages_fast(), I *think* we end up losing the check entirely. Is that intended? If so it could use a comment somewhere to explain why. thanks, --=20 John Hubbard NVIDIA > + ret =3D pin_user_pages_fast(start, nr_frames, > + FOLL_FORCE | FOLL_WRITE | FOLL_LONGTERM, > + (struct page **)(vec->ptrs)); > + if (ret > 0) { > vec->got_ref =3D true; > vec->is_pfns =3D false; > - ret =3D pin_user_pages_locked(start, nr_frames, > - gup_flags, (struct page **)(vec->ptrs), &locked); > - goto out; > + goto out_unlocked; > } > =20 > + mmap_read_lock(mm); > vec->got_ref =3D false; > vec->is_pfns =3D true; > + ret =3D 0; > do { > unsigned long *nums =3D frame_vector_pfns(vec); > =20 > + vma =3D find_vma_intersection(mm, start, start + 1); > + if (!vma) > + break; > + > while (ret < nr_frames && start + PAGE_SIZE <=3D vma->vm_end) { > err =3D follow_pfn(vma, start, &nums[ret]); > if (err) { > @@ -92,17 +77,13 @@ int get_vaddr_frames(unsigned long start, unsigned in= t nr_frames, > start +=3D PAGE_SIZE; > ret++; > } > - /* > - * We stop if we have enough pages or if VMA doesn't completely > - * cover the tail page. > - */ > - if (ret >=3D nr_frames || start < vma->vm_end) > + /* Bail out if VMA doesn't completely cover the tail page. */ > + if (start < vma->vm_end) > break; > - vma =3D find_vma_intersection(mm, start, start + 1); > - } while (vma && vma->vm_flags & (VM_IO | VM_PFNMAP)); > + } while (ret < nr_frames); > out: > - if (locked) > - mmap_read_unlock(mm); > + mmap_read_unlock(mm); > +out_unlocked: > if (!ret) > ret =3D -EFAULT; > if (ret > 0) >=20 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=-11.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 9CB48C00A89 for ; Sat, 31 Oct 2020 02:56:10 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 3C6A42071A for ; Sat, 31 Oct 2020 02:56:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TQCRY+qZ"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nvidia.com header.i=@nvidia.com header.b="AtOxaAfN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C6A42071A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=cNpRQtfvwulS2u7OFi5J/64cTW5ha1SCW3jDqs8PAbk=; b=TQCRY+qZx40shC5cPJblq8YlE aUrAT5/UMkY41sAHRoM1Ni22XymSJiuvM4dvOjkJiCD6b8nu5qr3j6BQ88kzZwWonfcyx68Ffm2gL PmkhgEvOhEkNtHaelHFbGpemPeEAAT7uoA8Vl34mkM99gCD67igv5aUv2hF+OIjvaX/MhDvwjzgp6 7BI9213wL59ircszOOM9LRe29eGe1AC6JowZQ+t+CUpX5FR5WAuGj7jdg+QMAfw2VHH9W7zylylcW FLYKUQ+FBPgXKzFbcbjAADyc/n4ZjUs/ANfAcO6u2WFM/nSP9FEeuRmnoeuh4vKtvBWyQ1feVzzP1 pmrI61rlA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kYh3H-0004ER-0N; Sat, 31 Oct 2020 02:55:35 +0000 Received: from hqnvemgate25.nvidia.com ([216.228.121.64]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kYh3D-0004DH-Et for linux-arm-kernel@lists.infradead.org; Sat, 31 Oct 2020 02:55:33 +0000 Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Fri, 30 Oct 2020 19:55:30 -0700 Received: from [10.2.58.85] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sat, 31 Oct 2020 02:55:18 +0000 Subject: Re: [PATCH v5 05/15] mm/frame-vector: Use FOLL_LONGTERM To: Daniel Vetter , DRI Development , LKML References: <20201030100815.2269-1-daniel.vetter@ffwll.ch> <20201030100815.2269-6-daniel.vetter@ffwll.ch> From: John Hubbard Message-ID: <446b2d5b-a1a1-a408-f884-f17a04b72c18@nvidia.com> Date: Fri, 30 Oct 2020 19:55:17 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20201030100815.2269-6-daniel.vetter@ffwll.ch> Content-Language: en-US X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1604112930; bh=kIbuOrZMF2YQAWfUPs6gkqYbyNybPPlpG1DHBddVTeI=; h=Subject:To:CC:References:From:Message-ID:Date:User-Agent: MIME-Version:In-Reply-To:Content-Type:Content-Language: Content-Transfer-Encoding:X-Originating-IP:X-ClientProxiedBy; b=AtOxaAfNPVF2Y8gZFgz8BlJTCY2WnS/ll/uZOpZY6ZM3sYeZDX0wsWzg9kbJTYbtL uIT7SI94Nu0DAKox4tjTnJcLN8XQH4afRazJUVETQXmRDSkforw/ZyajpCSjQdhakD V5TkHQG1hyUHjxO5/EziqQ5QU5HsvmsdLhy0c2pJ17Ik4sdOeRb9MDZW7AgVbI6HUp khbiVPlvAQBqPZreVxuJwdPBCd0dFyD9l044fmdbRBxITLNtDeDmPV0I8qXzaQGtcL 05gwU5zD1T2KQ11VFOtz4tXHAh7iSeMGU/Zo8kgIrMlYShlD2P3PVWKbYJ1hjOt5Cc x4G0lu6VoJy1w== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201030_225531_722790_1B21E712 X-CRM114-Status: GOOD ( 33.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-samsung-soc@vger.kernel.org, Jan Kara , Pawel Osciak , kvm@vger.kernel.org, Jason Gunthorpe , Mauro Carvalho Chehab , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Tomasz Figa , linux-mm@kvack.org, Kyungmin Park , Daniel Vetter , Andrew Morton , Marek Szyprowski , Dan Williams , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTAvMzAvMjAgMzowOCBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBUaGlzIGlzIHVzZWQg YnkgbWVkaWEvdmlkZWJ1ZjIgZm9yIHBlcnNpc3RlbnQgZG1hIG1hcHBpbmdzLCBub3QganVzdAo+ IGZvciBhIHNpbmdsZSBkbWEgb3BlcmF0aW9uIGFuZCB0aGVuIGZyZWVkIGFnYWluLCBzbyBuZWVk cwo+IEZPTExfTE9OR1RFUk0uCj4gCj4gVW5mb3J0dW5hdGVseSBjdXJyZW50IHB1cF9sb2NrZWQg ZG9lc24ndCBzdXBwb3J0IEZPTExfTE9OR1RFUk0gZHVlIHRvCj4gbG9ja2luZyBpc3N1ZXMuIFJl d29yayB0aGUgY29kZSB0byBwdWxsIHRoZSBwdXAgcGF0aCBvdXQgZnJvbSB0aGUKPiBtbWFwX3Nl bSBjcml0aWNhbCBzZWN0aW9uIGFzIHN1Z2dlc3RlZCBieSBKYXNvbi4KPiAKPiBCeSByZWx5aW5n IGVudGlyZWx5IG9uIHRoZSB2bWEgY2hlY2tzIGluIHBpbl91c2VyX3BhZ2VzIGFuZCBmb2xsb3df cGZuCgpUaGVyZSBhcmUgdm1hIGNoZWNrcyBpbiBwaW5fdXNlcl9wYWdlcygpLCBidXQgdGhpcyBw YXRjaCBjaGFuZ2VzIHRoaW5ncwp0byBjYWxsIHBpbl91c2VyX3BhZ2VzX2Zhc3QoKS4gQW5kIHRo YXQgZG9lcyBub3QgaGF2ZSB0aGUgdm1hIGNoZWNrcy4KTW9yZSBiZWxvdyBhYm91dCB0aGlzOgoK PiAoZm9yIHZtX2ZsYWdzIGFuZCB2bWFfaXNfZnNkYXgpIHdlIGNhbiBhbHNvIHN0cmVhbWxpbmUg dGhlIGNvZGUgYSBsb3QuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBpbnRlbC5jb20+Cj4gQ2M6IEphc29uIEd1bnRob3JwZSA8amdnQHppZXBlLmNhPgo+ IENjOiBQYXdlbCBPc2NpYWsgPHBhd2VsQG9zY2lhay5jb20+Cj4gQ2M6IE1hcmVrIFN6eXByb3dz a2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KPiBDYzogS3l1bmdtaW4gUGFyayA8a3l1bmdt aW4ucGFya0BzYW1zdW5nLmNvbT4KPiBDYzogVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9y Zz4KPiBDYzogTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFiQGtlcm5lbC5vcmc+Cj4gQ2M6 IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+Cj4gQ2M6IEpvaG4gSHVi YmFyZCA8amh1YmJhcmRAbnZpZGlhLmNvbT4KPiBDYzogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3Nl QHJlZGhhdC5jb20+Cj4gQ2M6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Cj4gQ2M6IERhbiBXaWxs aWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgo+IENjOiBsaW51eC1tbUBrdmFjay5vcmcK PiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4gQ2M6IGxpbnV4LXNh bXN1bmctc29jQHZnZXIua2VybmVsLm9yZwo+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v cmcKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNo Pgo+IC0tCj4gdjI6IFN0cmVhbWxpbmUgdGhlIGNvZGUgYW5kIGZ1cnRoZXIgc2ltcGxpZnkgdGhl IGxvb3AgY2hlY2tzIChKYXNvbikKPiAKPiB2NTogUmV2aWV3IGZyb20gVG9tYXN6Ogo+IC0gZml4 IHBhZ2UgY291bnRpbmcgZm9yIHRoZSBmb2xsb3dfcGZuIGNhc2UgYnkgcmVzZXR0aW5nIHJldAo+ IC0gZHJvcCBndXBfZmxhZ3MgcGFyYW1hdGVyLCBub3cgdW51c2VkCj4gLS0tCj4gICAuLi4vbWVk aWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItbWVtb3BzLmMgfCAgMyArLQo+ICAgaW5jbHVk ZS9saW51eC9tbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgIG1tL2Zy YW1lX3ZlY3Rvci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUzICsrKysrKy0tLS0t LS0tLS0tLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92 aWRlb2J1ZjItbWVtb3BzLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9i dWYyLW1lbW9wcy5jCj4gaW5kZXggNmU5ZTA1MTUzZjRlLi45ZGQ2YzI3MTYyZjQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1tZW1vcHMuYwo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItbWVtb3BzLmMK PiBAQCAtNDAsNyArNDAsNiBAQCBzdHJ1Y3QgZnJhbWVfdmVjdG9yICp2YjJfY3JlYXRlX2ZyYW1l dmVjKHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gICAJdW5zaWduZWQgbG9uZyBmaXJzdCwgbGFzdDsK PiAgIAl1bnNpZ25lZCBsb25nIG5yOwo+ICAgCXN0cnVjdCBmcmFtZV92ZWN0b3IgKnZlYzsKPiAt CXVuc2lnbmVkIGludCBmbGFncyA9IEZPTExfRk9SQ0UgfCBGT0xMX1dSSVRFOwo+ICAgCj4gICAJ Zmlyc3QgPSBzdGFydCA+PiBQQUdFX1NISUZUOwo+ICAgCWxhc3QgPSAoc3RhcnQgKyBsZW5ndGgg LSAxKSA+PiBQQUdFX1NISUZUOwo+IEBAIC00OCw3ICs0Nyw3IEBAIHN0cnVjdCBmcmFtZV92ZWN0 b3IgKnZiMl9jcmVhdGVfZnJhbWV2ZWModW5zaWduZWQgbG9uZyBzdGFydCwKPiAgIAl2ZWMgPSBm cmFtZV92ZWN0b3JfY3JlYXRlKG5yKTsKPiAgIAlpZiAoIXZlYykKPiAgIAkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7Cj4gLQlyZXQgPSBnZXRfdmFkZHJfZnJhbWVzKHN0YXJ0ICYgUEFHRV9NQVNL LCBuciwgZmxhZ3MsIHZlYyk7Cj4gKwlyZXQgPSBnZXRfdmFkZHJfZnJhbWVzKHN0YXJ0ICYgUEFH RV9NQVNLLCBuciwgdmVjKTsKPiAgIAlpZiAocmV0IDwgMCkKPiAgIAkJZ290byBvdXRfZGVzdHJv eTsKPiAgIAkvKiBXZSBhY2NlcHQgb25seSBjb21wbGV0ZSBzZXQgb2YgUEZOcyAqLwo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKPiBpbmRleCBl ZjM2MGZlNzBhYWYuLmQ2YjhlMzBkY2UyZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21t LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKPiBAQCAtMTc2NSw3ICsxNzY1LDcgQEAgc3Ry dWN0IGZyYW1lX3ZlY3RvciB7Cj4gICBzdHJ1Y3QgZnJhbWVfdmVjdG9yICpmcmFtZV92ZWN0b3Jf Y3JlYXRlKHVuc2lnbmVkIGludCBucl9mcmFtZXMpOwo+ICAgdm9pZCBmcmFtZV92ZWN0b3JfZGVz dHJveShzdHJ1Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICAgaW50IGdldF92YWRkcl9mcmFtZXMo dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgaW50IG5yX3BmbnMsCj4gLQkJICAgICB1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICsJCSAgICAg c3RydWN0IGZyYW1lX3ZlY3RvciAqdmVjKTsKPiAgIHZvaWQgcHV0X3ZhZGRyX2ZyYW1lcyhzdHJ1 Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICAgaW50IGZyYW1lX3ZlY3Rvcl90b19wYWdlcyhzdHJ1 Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICAgdm9pZCBmcmFtZV92ZWN0b3JfdG9fcGZucyhzdHJ1 Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+IGRpZmYgLS1naXQgYS9tbS9mcmFtZV92ZWN0b3IuYyBi L21tL2ZyYW1lX3ZlY3Rvci5jCj4gaW5kZXggMTBmODJkNTY0M2I2Li5mOGMzNGI4OTVjNzYgMTAw NjQ0Cj4gLS0tIGEvbW0vZnJhbWVfdmVjdG9yLmMKPiArKysgYi9tbS9mcmFtZV92ZWN0b3IuYwo+ IEBAIC0zMiwxMyArMzIsMTIgQEAKPiAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBn cmFiYmluZyBtbWFwX2xvY2sgYXMgbmVjZXNzYXJ5Lgo+ICAgICovCj4gICBpbnQgZ2V0X3ZhZGRy X2ZyYW1lcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzLAo+IC0J CSAgICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IGZyYW1lX3ZlY3RvciAqdmVjKQo+ ICsJCSAgICAgc3RydWN0IGZyYW1lX3ZlY3RvciAqdmVjKQo+ICAgewo+ICAgCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tID0gY3VycmVudC0+bW07Cj4gICAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7 Cj4gICAJaW50IHJldCA9IDA7Cj4gICAJaW50IGVycjsKPiAtCWludCBsb2NrZWQ7Cj4gICAKPiAg IAlpZiAobnJfZnJhbWVzID09IDApCj4gICAJCXJldHVybiAwOwo+IEBAIC00OCw0MCArNDcsMjYg QEAgaW50IGdldF92YWRkcl9mcmFtZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgaW50 IG5yX2ZyYW1lcywKPiAgIAo+ICAgCXN0YXJ0ID0gdW50YWdnZWRfYWRkcihzdGFydCk7Cj4gICAK PiAtCW1tYXBfcmVhZF9sb2NrKG1tKTsKPiAtCWxvY2tlZCA9IDE7Cj4gLQl2bWEgPSBmaW5kX3Zt YV9pbnRlcnNlY3Rpb24obW0sIHN0YXJ0LCBzdGFydCArIDEpOwo+IC0JaWYgKCF2bWEpIHsKPiAt CQlyZXQgPSAtRUZBVUxUOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBX aGlsZSBnZXRfdmFkZHJfZnJhbWVzKCkgY291bGQgYmUgdXNlZCBmb3IgdHJhbnNpZW50IChrZXJu ZWwKPiAtCSAqIGNvbnRyb2xsZWQgbGlmZXRpbWUpIHBpbm5pbmcgb2YgbWVtb3J5IHBhZ2VzIGFs bCBjdXJyZW50Cj4gLQkgKiB1c2VycyBlc3RhYmxpc2ggbG9uZyB0ZXJtICh1c2Vyc3BhY2UgY29u dHJvbGxlZCBsaWZldGltZSkKPiAtCSAqIHBhZ2UgcGlubmluZy4gVHJlYXQgZ2V0X3ZhZGRyX2Zy YW1lcygpIGxpa2UKPiAtCSAqIGdldF91c2VyX3BhZ2VzX2xvbmd0ZXJtKCkgYW5kIGRpc2FsbG93 IGl0IGZvciBmaWxlc3lzdGVtLWRheAo+IC0JICogbWFwcGluZ3MuCj4gLQkgKi8KPiAtCWlmICh2 bWFfaXNfZnNkYXgodm1hKSkgewo+IC0JCXJldCA9IC1FT1BOT1RTVVBQOwo+IC0JCWdvdG8gb3V0 Owo+IC0JfQo+IC0KPiAtCWlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVAp KSkgewoKQnkgcmVtb3ZpbmcgdGhpcyBjaGVjayBmcm9tIHRoaXMgbG9jYXRpb24sIGFuZCBjaGFu Z2luZyBmcm9tCnBpbl91c2VyX3BhZ2VzX2xvY2tlZCgpIHRvIHBpbl91c2VyX3BhZ2VzX2Zhc3Qo KSwgSSAqdGhpbmsqIHdlIGVuZCB1cApsb3NpbmcgdGhlIGNoZWNrIGVudGlyZWx5LiBJcyB0aGF0 IGludGVuZGVkPyBJZiBzbyBpdCBjb3VsZCB1c2UgYSBjb21tZW50CnNvbWV3aGVyZSB0byBleHBs YWluIHdoeS4KCnRoYW5rcywKLS0gCkpvaG4gSHViYmFyZApOVklESUEKCj4gKwlyZXQgPSBwaW5f dXNlcl9wYWdlc19mYXN0KHN0YXJ0LCBucl9mcmFtZXMsCj4gKwkJCQkgIEZPTExfRk9SQ0UgfCBG T0xMX1dSSVRFIHwgRk9MTF9MT05HVEVSTSwKPiArCQkJCSAgKHN0cnVjdCBwYWdlICoqKSh2ZWMt PnB0cnMpKTsKPiArCWlmIChyZXQgPiAwKSB7Cj4gICAJCXZlYy0+Z290X3JlZiA9IHRydWU7Cj4g ICAJCXZlYy0+aXNfcGZucyA9IGZhbHNlOwo+IC0JCXJldCA9IHBpbl91c2VyX3BhZ2VzX2xvY2tl ZChzdGFydCwgbnJfZnJhbWVzLAo+IC0JCQlndXBfZmxhZ3MsIChzdHJ1Y3QgcGFnZSAqKikodmVj LT5wdHJzKSwgJmxvY2tlZCk7Cj4gLQkJZ290byBvdXQ7Cj4gKwkJZ290byBvdXRfdW5sb2NrZWQ7 Cj4gICAJfQo+ICAgCj4gKwltbWFwX3JlYWRfbG9jayhtbSk7Cj4gICAJdmVjLT5nb3RfcmVmID0g ZmFsc2U7Cj4gICAJdmVjLT5pc19wZm5zID0gdHJ1ZTsKPiArCXJldCA9IDA7Cj4gICAJZG8gewo+ ICAgCQl1bnNpZ25lZCBsb25nICpudW1zID0gZnJhbWVfdmVjdG9yX3BmbnModmVjKTsKPiAgIAo+ ICsJCXZtYSA9IGZpbmRfdm1hX2ludGVyc2VjdGlvbihtbSwgc3RhcnQsIHN0YXJ0ICsgMSk7Cj4g KwkJaWYgKCF2bWEpCj4gKwkJCWJyZWFrOwo+ICsKPiAgIAkJd2hpbGUgKHJldCA8IG5yX2ZyYW1l cyAmJiBzdGFydCArIFBBR0VfU0laRSA8PSB2bWEtPnZtX2VuZCkgewo+ICAgCQkJZXJyID0gZm9s bG93X3Bmbih2bWEsIHN0YXJ0LCAmbnVtc1tyZXRdKTsKPiAgIAkJCWlmIChlcnIpIHsKPiBAQCAt OTIsMTcgKzc3LDEzIEBAIGludCBnZXRfdmFkZHJfZnJhbWVzKHVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGludCBucl9mcmFtZXMsCj4gICAJCQlzdGFydCArPSBQQUdFX1NJWkU7Cj4gICAJ CQlyZXQrKzsKPiAgIAkJfQo+IC0JCS8qCj4gLQkJICogV2Ugc3RvcCBpZiB3ZSBoYXZlIGVub3Vn aCBwYWdlcyBvciBpZiBWTUEgZG9lc24ndCBjb21wbGV0ZWx5Cj4gLQkJICogY292ZXIgdGhlIHRh aWwgcGFnZS4KPiAtCQkgKi8KPiAtCQlpZiAocmV0ID49IG5yX2ZyYW1lcyB8fCBzdGFydCA8IHZt YS0+dm1fZW5kKQo+ICsJCS8qIEJhaWwgb3V0IGlmIFZNQSBkb2Vzbid0IGNvbXBsZXRlbHkgY292 ZXIgdGhlIHRhaWwgcGFnZS4gKi8KPiArCQlpZiAoc3RhcnQgPCB2bWEtPnZtX2VuZCkKPiAgIAkJ CWJyZWFrOwo+IC0JCXZtYSA9IGZpbmRfdm1hX2ludGVyc2VjdGlvbihtbSwgc3RhcnQsIHN0YXJ0 ICsgMSk7Cj4gLQl9IHdoaWxlICh2bWEgJiYgdm1hLT52bV9mbGFncyAmIChWTV9JTyB8IFZNX1BG Tk1BUCkpOwo+ICsJfSB3aGlsZSAocmV0IDwgbnJfZnJhbWVzKTsKPiAgIG91dDoKPiAtCWlmIChs b2NrZWQpCj4gLQkJbW1hcF9yZWFkX3VubG9jayhtbSk7Cj4gKwltbWFwX3JlYWRfdW5sb2NrKG1t KTsKPiArb3V0X3VubG9ja2VkOgo+ICAgCWlmICghcmV0KQo+ICAgCQlyZXQgPSAtRUZBVUxUOwo+ ICAgCWlmIChyZXQgPiAwKQo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== 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=-11.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 B0320C4742C for ; Sat, 31 Oct 2020 02:55:32 +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 3CC7C22228 for ; Sat, 31 Oct 2020 02:55:32 +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="AtOxaAfN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3CC7C22228 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 7202C6E0CF; Sat, 31 Oct 2020 02:55:31 +0000 (UTC) Received: from hqnvemgate25.nvidia.com (hqnvemgate25.nvidia.com [216.228.121.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5896D6E0CF for ; Sat, 31 Oct 2020 02:55:30 +0000 (UTC) Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate25.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Fri, 30 Oct 2020 19:55:30 -0700 Received: from [10.2.58.85] (10.124.1.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Sat, 31 Oct 2020 02:55:18 +0000 Subject: Re: [PATCH v5 05/15] mm/frame-vector: Use FOLL_LONGTERM To: Daniel Vetter , DRI Development , LKML References: <20201030100815.2269-1-daniel.vetter@ffwll.ch> <20201030100815.2269-6-daniel.vetter@ffwll.ch> From: John Hubbard Message-ID: <446b2d5b-a1a1-a408-f884-f17a04b72c18@nvidia.com> Date: Fri, 30 Oct 2020 19:55:17 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <20201030100815.2269-6-daniel.vetter@ffwll.ch> Content-Language: en-US X-Originating-IP: [10.124.1.5] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1604112930; bh=kIbuOrZMF2YQAWfUPs6gkqYbyNybPPlpG1DHBddVTeI=; h=Subject:To:CC:References:From:Message-ID:Date:User-Agent: MIME-Version:In-Reply-To:Content-Type:Content-Language: Content-Transfer-Encoding:X-Originating-IP:X-ClientProxiedBy; b=AtOxaAfNPVF2Y8gZFgz8BlJTCY2WnS/ll/uZOpZY6ZM3sYeZDX0wsWzg9kbJTYbtL uIT7SI94Nu0DAKox4tjTnJcLN8XQH4afRazJUVETQXmRDSkforw/ZyajpCSjQdhakD V5TkHQG1hyUHjxO5/EziqQ5QU5HsvmsdLhy0c2pJ17Ik4sdOeRb9MDZW7AgVbI6HUp khbiVPlvAQBqPZreVxuJwdPBCd0dFyD9l044fmdbRBxITLNtDeDmPV0I8qXzaQGtcL 05gwU5zD1T2KQ11VFOtz4tXHAh7iSeMGU/Zo8kgIrMlYShlD2P3PVWKbYJ1hjOt5Cc x4G0lu6VoJy1w== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-samsung-soc@vger.kernel.org, Jan Kara , Pawel Osciak , kvm@vger.kernel.org, Jason Gunthorpe , Mauro Carvalho Chehab , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Tomasz Figa , linux-mm@kvack.org, Kyungmin Park , Daniel Vetter , Andrew Morton , Marek Szyprowski , Dan Williams , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gMTAvMzAvMjAgMzowOCBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBUaGlzIGlzIHVzZWQg YnkgbWVkaWEvdmlkZWJ1ZjIgZm9yIHBlcnNpc3RlbnQgZG1hIG1hcHBpbmdzLCBub3QganVzdAo+ IGZvciBhIHNpbmdsZSBkbWEgb3BlcmF0aW9uIGFuZCB0aGVuIGZyZWVkIGFnYWluLCBzbyBuZWVk cwo+IEZPTExfTE9OR1RFUk0uCj4gCj4gVW5mb3J0dW5hdGVseSBjdXJyZW50IHB1cF9sb2NrZWQg ZG9lc24ndCBzdXBwb3J0IEZPTExfTE9OR1RFUk0gZHVlIHRvCj4gbG9ja2luZyBpc3N1ZXMuIFJl d29yayB0aGUgY29kZSB0byBwdWxsIHRoZSBwdXAgcGF0aCBvdXQgZnJvbSB0aGUKPiBtbWFwX3Nl bSBjcml0aWNhbCBzZWN0aW9uIGFzIHN1Z2dlc3RlZCBieSBKYXNvbi4KPiAKPiBCeSByZWx5aW5n IGVudGlyZWx5IG9uIHRoZSB2bWEgY2hlY2tzIGluIHBpbl91c2VyX3BhZ2VzIGFuZCBmb2xsb3df cGZuCgpUaGVyZSBhcmUgdm1hIGNoZWNrcyBpbiBwaW5fdXNlcl9wYWdlcygpLCBidXQgdGhpcyBw YXRjaCBjaGFuZ2VzIHRoaW5ncwp0byBjYWxsIHBpbl91c2VyX3BhZ2VzX2Zhc3QoKS4gQW5kIHRo YXQgZG9lcyBub3QgaGF2ZSB0aGUgdm1hIGNoZWNrcy4KTW9yZSBiZWxvdyBhYm91dCB0aGlzOgoK PiAoZm9yIHZtX2ZsYWdzIGFuZCB2bWFfaXNfZnNkYXgpIHdlIGNhbiBhbHNvIHN0cmVhbWxpbmUg dGhlIGNvZGUgYSBsb3QuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBpbnRlbC5jb20+Cj4gQ2M6IEphc29uIEd1bnRob3JwZSA8amdnQHppZXBlLmNhPgo+ IENjOiBQYXdlbCBPc2NpYWsgPHBhd2VsQG9zY2lhay5jb20+Cj4gQ2M6IE1hcmVrIFN6eXByb3dz a2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KPiBDYzogS3l1bmdtaW4gUGFyayA8a3l1bmdt aW4ucGFya0BzYW1zdW5nLmNvbT4KPiBDYzogVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9y Zz4KPiBDYzogTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFiQGtlcm5lbC5vcmc+Cj4gQ2M6 IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+Cj4gQ2M6IEpvaG4gSHVi YmFyZCA8amh1YmJhcmRAbnZpZGlhLmNvbT4KPiBDYzogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3Nl QHJlZGhhdC5jb20+Cj4gQ2M6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Cj4gQ2M6IERhbiBXaWxs aWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgo+IENjOiBsaW51eC1tbUBrdmFjay5vcmcK PiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4gQ2M6IGxpbnV4LXNh bXN1bmctc29jQHZnZXIua2VybmVsLm9yZwo+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v cmcKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNo Pgo+IC0tCj4gdjI6IFN0cmVhbWxpbmUgdGhlIGNvZGUgYW5kIGZ1cnRoZXIgc2ltcGxpZnkgdGhl IGxvb3AgY2hlY2tzIChKYXNvbikKPiAKPiB2NTogUmV2aWV3IGZyb20gVG9tYXN6Ogo+IC0gZml4 IHBhZ2UgY291bnRpbmcgZm9yIHRoZSBmb2xsb3dfcGZuIGNhc2UgYnkgcmVzZXR0aW5nIHJldAo+ IC0gZHJvcCBndXBfZmxhZ3MgcGFyYW1hdGVyLCBub3cgdW51c2VkCj4gLS0tCj4gICAuLi4vbWVk aWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItbWVtb3BzLmMgfCAgMyArLQo+ICAgaW5jbHVk ZS9saW51eC9tbS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgIG1tL2Zy YW1lX3ZlY3Rvci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUzICsrKysrKy0tLS0t LS0tLS0tLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92 aWRlb2J1ZjItbWVtb3BzLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9i dWYyLW1lbW9wcy5jCj4gaW5kZXggNmU5ZTA1MTUzZjRlLi45ZGQ2YzI3MTYyZjQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1tZW1vcHMuYwo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItbWVtb3BzLmMK PiBAQCAtNDAsNyArNDAsNiBAQCBzdHJ1Y3QgZnJhbWVfdmVjdG9yICp2YjJfY3JlYXRlX2ZyYW1l dmVjKHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gICAJdW5zaWduZWQgbG9uZyBmaXJzdCwgbGFzdDsK PiAgIAl1bnNpZ25lZCBsb25nIG5yOwo+ICAgCXN0cnVjdCBmcmFtZV92ZWN0b3IgKnZlYzsKPiAt CXVuc2lnbmVkIGludCBmbGFncyA9IEZPTExfRk9SQ0UgfCBGT0xMX1dSSVRFOwo+ICAgCj4gICAJ Zmlyc3QgPSBzdGFydCA+PiBQQUdFX1NISUZUOwo+ICAgCWxhc3QgPSAoc3RhcnQgKyBsZW5ndGgg LSAxKSA+PiBQQUdFX1NISUZUOwo+IEBAIC00OCw3ICs0Nyw3IEBAIHN0cnVjdCBmcmFtZV92ZWN0 b3IgKnZiMl9jcmVhdGVfZnJhbWV2ZWModW5zaWduZWQgbG9uZyBzdGFydCwKPiAgIAl2ZWMgPSBm cmFtZV92ZWN0b3JfY3JlYXRlKG5yKTsKPiAgIAlpZiAoIXZlYykKPiAgIAkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7Cj4gLQlyZXQgPSBnZXRfdmFkZHJfZnJhbWVzKHN0YXJ0ICYgUEFHRV9NQVNL LCBuciwgZmxhZ3MsIHZlYyk7Cj4gKwlyZXQgPSBnZXRfdmFkZHJfZnJhbWVzKHN0YXJ0ICYgUEFH RV9NQVNLLCBuciwgdmVjKTsKPiAgIAlpZiAocmV0IDwgMCkKPiAgIAkJZ290byBvdXRfZGVzdHJv eTsKPiAgIAkvKiBXZSBhY2NlcHQgb25seSBjb21wbGV0ZSBzZXQgb2YgUEZOcyAqLwo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKPiBpbmRleCBl ZjM2MGZlNzBhYWYuLmQ2YjhlMzBkY2UyZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21t LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKPiBAQCAtMTc2NSw3ICsxNzY1LDcgQEAgc3Ry dWN0IGZyYW1lX3ZlY3RvciB7Cj4gICBzdHJ1Y3QgZnJhbWVfdmVjdG9yICpmcmFtZV92ZWN0b3Jf Y3JlYXRlKHVuc2lnbmVkIGludCBucl9mcmFtZXMpOwo+ICAgdm9pZCBmcmFtZV92ZWN0b3JfZGVz dHJveShzdHJ1Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICAgaW50IGdldF92YWRkcl9mcmFtZXMo dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgaW50IG5yX3BmbnMsCj4gLQkJICAgICB1bnNp Z25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICsJCSAgICAg c3RydWN0IGZyYW1lX3ZlY3RvciAqdmVjKTsKPiAgIHZvaWQgcHV0X3ZhZGRyX2ZyYW1lcyhzdHJ1 Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICAgaW50IGZyYW1lX3ZlY3Rvcl90b19wYWdlcyhzdHJ1 Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+ICAgdm9pZCBmcmFtZV92ZWN0b3JfdG9fcGZucyhzdHJ1 Y3QgZnJhbWVfdmVjdG9yICp2ZWMpOwo+IGRpZmYgLS1naXQgYS9tbS9mcmFtZV92ZWN0b3IuYyBi L21tL2ZyYW1lX3ZlY3Rvci5jCj4gaW5kZXggMTBmODJkNTY0M2I2Li5mOGMzNGI4OTVjNzYgMTAw NjQ0Cj4gLS0tIGEvbW0vZnJhbWVfdmVjdG9yLmMKPiArKysgYi9tbS9mcmFtZV92ZWN0b3IuYwo+ IEBAIC0zMiwxMyArMzIsMTIgQEAKPiAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBn cmFiYmluZyBtbWFwX2xvY2sgYXMgbmVjZXNzYXJ5Lgo+ICAgICovCj4gICBpbnQgZ2V0X3ZhZGRy X2ZyYW1lcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzLAo+IC0J CSAgICAgdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IGZyYW1lX3ZlY3RvciAqdmVjKQo+ ICsJCSAgICAgc3RydWN0IGZyYW1lX3ZlY3RvciAqdmVjKQo+ICAgewo+ICAgCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tID0gY3VycmVudC0+bW07Cj4gICAJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7 Cj4gICAJaW50IHJldCA9IDA7Cj4gICAJaW50IGVycjsKPiAtCWludCBsb2NrZWQ7Cj4gICAKPiAg IAlpZiAobnJfZnJhbWVzID09IDApCj4gICAJCXJldHVybiAwOwo+IEBAIC00OCw0MCArNDcsMjYg QEAgaW50IGdldF92YWRkcl9mcmFtZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgaW50 IG5yX2ZyYW1lcywKPiAgIAo+ICAgCXN0YXJ0ID0gdW50YWdnZWRfYWRkcihzdGFydCk7Cj4gICAK PiAtCW1tYXBfcmVhZF9sb2NrKG1tKTsKPiAtCWxvY2tlZCA9IDE7Cj4gLQl2bWEgPSBmaW5kX3Zt YV9pbnRlcnNlY3Rpb24obW0sIHN0YXJ0LCBzdGFydCArIDEpOwo+IC0JaWYgKCF2bWEpIHsKPiAt CQlyZXQgPSAtRUZBVUxUOwo+IC0JCWdvdG8gb3V0Owo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBX aGlsZSBnZXRfdmFkZHJfZnJhbWVzKCkgY291bGQgYmUgdXNlZCBmb3IgdHJhbnNpZW50IChrZXJu ZWwKPiAtCSAqIGNvbnRyb2xsZWQgbGlmZXRpbWUpIHBpbm5pbmcgb2YgbWVtb3J5IHBhZ2VzIGFs bCBjdXJyZW50Cj4gLQkgKiB1c2VycyBlc3RhYmxpc2ggbG9uZyB0ZXJtICh1c2Vyc3BhY2UgY29u dHJvbGxlZCBsaWZldGltZSkKPiAtCSAqIHBhZ2UgcGlubmluZy4gVHJlYXQgZ2V0X3ZhZGRyX2Zy YW1lcygpIGxpa2UKPiAtCSAqIGdldF91c2VyX3BhZ2VzX2xvbmd0ZXJtKCkgYW5kIGRpc2FsbG93 IGl0IGZvciBmaWxlc3lzdGVtLWRheAo+IC0JICogbWFwcGluZ3MuCj4gLQkgKi8KPiAtCWlmICh2 bWFfaXNfZnNkYXgodm1hKSkgewo+IC0JCXJldCA9IC1FT1BOT1RTVVBQOwo+IC0JCWdvdG8gb3V0 Owo+IC0JfQo+IC0KPiAtCWlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVAp KSkgewoKQnkgcmVtb3ZpbmcgdGhpcyBjaGVjayBmcm9tIHRoaXMgbG9jYXRpb24sIGFuZCBjaGFu Z2luZyBmcm9tCnBpbl91c2VyX3BhZ2VzX2xvY2tlZCgpIHRvIHBpbl91c2VyX3BhZ2VzX2Zhc3Qo KSwgSSAqdGhpbmsqIHdlIGVuZCB1cApsb3NpbmcgdGhlIGNoZWNrIGVudGlyZWx5LiBJcyB0aGF0 IGludGVuZGVkPyBJZiBzbyBpdCBjb3VsZCB1c2UgYSBjb21tZW50CnNvbWV3aGVyZSB0byBleHBs YWluIHdoeS4KCnRoYW5rcywKLS0gCkpvaG4gSHViYmFyZApOVklESUEKCj4gKwlyZXQgPSBwaW5f dXNlcl9wYWdlc19mYXN0KHN0YXJ0LCBucl9mcmFtZXMsCj4gKwkJCQkgIEZPTExfRk9SQ0UgfCBG T0xMX1dSSVRFIHwgRk9MTF9MT05HVEVSTSwKPiArCQkJCSAgKHN0cnVjdCBwYWdlICoqKSh2ZWMt PnB0cnMpKTsKPiArCWlmIChyZXQgPiAwKSB7Cj4gICAJCXZlYy0+Z290X3JlZiA9IHRydWU7Cj4g ICAJCXZlYy0+aXNfcGZucyA9IGZhbHNlOwo+IC0JCXJldCA9IHBpbl91c2VyX3BhZ2VzX2xvY2tl ZChzdGFydCwgbnJfZnJhbWVzLAo+IC0JCQlndXBfZmxhZ3MsIChzdHJ1Y3QgcGFnZSAqKikodmVj LT5wdHJzKSwgJmxvY2tlZCk7Cj4gLQkJZ290byBvdXQ7Cj4gKwkJZ290byBvdXRfdW5sb2NrZWQ7 Cj4gICAJfQo+ICAgCj4gKwltbWFwX3JlYWRfbG9jayhtbSk7Cj4gICAJdmVjLT5nb3RfcmVmID0g ZmFsc2U7Cj4gICAJdmVjLT5pc19wZm5zID0gdHJ1ZTsKPiArCXJldCA9IDA7Cj4gICAJZG8gewo+ ICAgCQl1bnNpZ25lZCBsb25nICpudW1zID0gZnJhbWVfdmVjdG9yX3BmbnModmVjKTsKPiAgIAo+ ICsJCXZtYSA9IGZpbmRfdm1hX2ludGVyc2VjdGlvbihtbSwgc3RhcnQsIHN0YXJ0ICsgMSk7Cj4g KwkJaWYgKCF2bWEpCj4gKwkJCWJyZWFrOwo+ICsKPiAgIAkJd2hpbGUgKHJldCA8IG5yX2ZyYW1l cyAmJiBzdGFydCArIFBBR0VfU0laRSA8PSB2bWEtPnZtX2VuZCkgewo+ICAgCQkJZXJyID0gZm9s bG93X3Bmbih2bWEsIHN0YXJ0LCAmbnVtc1tyZXRdKTsKPiAgIAkJCWlmIChlcnIpIHsKPiBAQCAt OTIsMTcgKzc3LDEzIEBAIGludCBnZXRfdmFkZHJfZnJhbWVzKHVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGludCBucl9mcmFtZXMsCj4gICAJCQlzdGFydCArPSBQQUdFX1NJWkU7Cj4gICAJ CQlyZXQrKzsKPiAgIAkJfQo+IC0JCS8qCj4gLQkJICogV2Ugc3RvcCBpZiB3ZSBoYXZlIGVub3Vn aCBwYWdlcyBvciBpZiBWTUEgZG9lc24ndCBjb21wbGV0ZWx5Cj4gLQkJICogY292ZXIgdGhlIHRh aWwgcGFnZS4KPiAtCQkgKi8KPiAtCQlpZiAocmV0ID49IG5yX2ZyYW1lcyB8fCBzdGFydCA8IHZt YS0+dm1fZW5kKQo+ICsJCS8qIEJhaWwgb3V0IGlmIFZNQSBkb2Vzbid0IGNvbXBsZXRlbHkgY292 ZXIgdGhlIHRhaWwgcGFnZS4gKi8KPiArCQlpZiAoc3RhcnQgPCB2bWEtPnZtX2VuZCkKPiAgIAkJ CWJyZWFrOwo+IC0JCXZtYSA9IGZpbmRfdm1hX2ludGVyc2VjdGlvbihtbSwgc3RhcnQsIHN0YXJ0 ICsgMSk7Cj4gLQl9IHdoaWxlICh2bWEgJiYgdm1hLT52bV9mbGFncyAmIChWTV9JTyB8IFZNX1BG Tk1BUCkpOwo+ICsJfSB3aGlsZSAocmV0IDwgbnJfZnJhbWVzKTsKPiAgIG91dDoKPiAtCWlmIChs b2NrZWQpCj4gLQkJbW1hcF9yZWFkX3VubG9jayhtbSk7Cj4gKwltbWFwX3JlYWRfdW5sb2NrKG1t KTsKPiArb3V0X3VubG9ja2VkOgo+ICAgCWlmICghcmV0KQo+ICAgCQlyZXQgPSAtRUZBVUxUOwo+ ICAgCWlmIChyZXQgPiAwKQo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=