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=BAYES_00,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 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 7623BC55179 for ; Tue, 27 Oct 2020 08:07:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 242CD2072E for ; Tue, 27 Oct 2020 08:07:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="Xy9/3e57" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2508791AbgJ0IHb (ORCPT ); Tue, 27 Oct 2020 04:07:31 -0400 Received: from mail-oo1-f67.google.com ([209.85.161.67]:38750 "EHLO mail-oo1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2894390AbgJ0IFQ (ORCPT ); Tue, 27 Oct 2020 04:05:16 -0400 Received: by mail-oo1-f67.google.com with SMTP id v123so115882ooa.5 for ; Tue, 27 Oct 2020 01:05:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=iRVTkxIJnHwaBLHokGGgZRE0TJVDnrQ64zJBBqMFGs0=; b=Xy9/3e579FMjjTLWAuxWgipn5uXab1XIWYf2dD59Ue8ydsa3nziuf3dnpX6I3eKQXi LX0Fhct8zwQ9LPuwvLWtj2sHUJJ3/cbghGd13edFhR4n655CEK2nlwMk9XgeGlojhrCH MtcfG6S4mtBZzrOUEzua2bUtpL2rn4D1Bjj1E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=iRVTkxIJnHwaBLHokGGgZRE0TJVDnrQ64zJBBqMFGs0=; b=sdwxwADstrF9p953m1HErD3s9aKJFYVIq6RxZvT6bPvQw8fBDELFounNxo1iRcdz9b 56arb+CRf2byV3j2Lxo4zbfZl3/Dp6v1PRsVoWR4HdVhXBsbmmpVzPi1OYkaww+z695r zBQ8rxUw3/N6BAmztn84bLOJDr3+aQq3xzJFHYZg7ECMViMBjWpTBIcM6jWX4miDXu3l jbw91X1TnERM+zPHbbMpBz3zMW4eHbgDL3N3n2O7OC2iWRV/Gdwn+q8hTSIYqRURmkQT DTTU4mwaR50x+rn4ZciJSL0PtVBSPM/Vm+LmwCD7Yfi/OLaeOxR6e4csursEYlvzD4uo 0wMA== X-Gm-Message-State: AOAM532gzrqbEoFxpE3J80+G9wsi1uHw1mpvv+q7Ie81QKc/jZsno6hw Y53oqX0o9EckkblSRXseis4qEfBndlCypIxiVf7xWw== X-Google-Smtp-Source: ABdhPJwUquARZelitGIpZLDuhwl8Qo3TUgFyzzaUCWDMIxNpoISTQyK7JTuU9JW1uR1xbLdlZOvSwHCimNolpOBBW1c= X-Received: by 2002:a4a:b503:: with SMTP id r3mr809275ooo.28.1603785913727; Tue, 27 Oct 2020 01:05:13 -0700 (PDT) MIME-Version: 1.0 References: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> <20201026105818.2585306-6-daniel.vetter@ffwll.ch> <20201026221520.GC2802004@chromium.org> In-Reply-To: <20201026221520.GC2802004@chromium.org> From: Daniel Vetter Date: Tue, 27 Oct 2020 09:05:01 +0100 Message-ID: Subject: Re: [PATCH v4 05/15] mm/frame-vector: Use FOLL_LONGTERM To: Tomasz Figa Cc: DRI Development , LKML , KVM list , Linux MM , Linux ARM , linux-samsung-soc , "open list:DMA BUFFER SHARING FRAMEWORK" , linux-s390 , Daniel Vetter , Jason Gunthorpe , Pawel Osciak , Marek Szyprowski , Kyungmin Park , Mauro Carvalho Chehab , Andrew Morton , John Hubbard , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Jan Kara , Dan Williams Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 26, 2020 at 11:15 PM Tomasz Figa wrote: > > Hi Daniel, > > On Mon, Oct 26, 2020 at 11:58:08AM +0100, 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. > > > > 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. > > > > By relying entirely on the vma checks in pin_user_pages and follow_pfn > > (for vm_flags and vma_is_fsdax) we can also streamline the code a lot. > > > > 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) > > --- > > mm/frame_vector.c | 50 ++++++++++++++--------------------------------- > > 1 file changed, 15 insertions(+), 35 deletions(-) > > > > Thank you for the patch. Please see my comments inline. > > > diff --git a/mm/frame_vector.c b/mm/frame_vector.c > > index 10f82d5643b6..d44779e56313 100644 > > --- a/mm/frame_vector.c > > +++ b/mm/frame_vector.c > > @@ -38,7 +38,6 @@ int get_vaddr_frames(unsigned long start, unsigned in= t nr_frames, > > struct vm_area_struct *vma; > > int ret =3D 0; > > int err; > > - int locked; > > > > if (nr_frames =3D=3D 0) > > return 0; > > @@ -48,40 +47,25 @@ int get_vaddr_frames(unsigned long start, unsigned = int nr_frames, > > > > start =3D untagged_addr(start); > > > > - 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))) { > > + 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); > > Should we drop the gup_flags argument, since it's ignored now? Hm right I think an earlier version even had that, but then I moved to inlining the functionality in all the places it's used. I'll drop the gup flag. > > - goto out; > > + goto out_unlocked; > > } > > > > Should we initialize ret with 0 here, since pin_user_pages_fast() can > return a negative error code, but below we use it as a counter for the > looked up frames? Indeed, that's a bug. Will fix for v5. -Daniel > Best regards, > Tomasz > > > + mmap_read_lock(mm); > > vec->got_ref =3D false; > > vec->is_pfns =3D true; > > do { > > unsigned long *nums =3D frame_vector_pfns(vec); > > > > + 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 +76,13 @@ int get_vaddr_frames(unsigned long start, unsigned = int nr_frames, > > start +=3D PAGE_SIZE; > > ret++; > > } > > - /* > > - * We stop if we have enough pages or if VMA doesn't comp= letely > > - * 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) > > -- > > 2.28.0 > > --=20 Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch 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=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 11A6FC4363A for ; Tue, 27 Oct 2020 08:07:16 +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 8A3C9207BB for ; Tue, 27 Oct 2020 08:07:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="e97rvenb"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="Xy9/3e57" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8A3C9207BB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=T+KlatWI0JMNPZc/9sPvpqw8a9llvFOzrkT4ZTnH/Oo=; b=e97rvenbXo77HIpboZN6thXWD CCESbbZQareHmVGqW2ycjNAY8gabwBc5KTDSN96K5XlKpjHOY0+VXMXAiKb9gzNcECApZbLg2iYKY 4fAhtRnw1GyIf1OvGHSgeN9zQZfiiLeqxIlV5HDYwEkBOfO0xbZqVjvJWJZMEIpn3BnIw+m+6eDJR Qd+mAbRQcB/lEbSP11krsuDWlFFZf8oXE5r9F5SurhLz+yIOTzW53VYfOQFAglkAv1BOAD+ayWAJH 08WiOi4w8NhSQ2I03KIj4myW5YKZH3r85ymYPFhdB/m0S5Zb9D35JglEeOPs0iR1qk9y0XB4QFhYI 1WGfGZBog==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXJyp-0007Ys-C6; Tue, 27 Oct 2020 08:05:19 +0000 Received: from mail-oo1-xc42.google.com ([2607:f8b0:4864:20::c42]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXJym-0007Wx-7r for linux-arm-kernel@lists.infradead.org; Tue, 27 Oct 2020 08:05:17 +0000 Received: by mail-oo1-xc42.google.com with SMTP id f1so119402oov.1 for ; Tue, 27 Oct 2020 01:05:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=iRVTkxIJnHwaBLHokGGgZRE0TJVDnrQ64zJBBqMFGs0=; b=Xy9/3e579FMjjTLWAuxWgipn5uXab1XIWYf2dD59Ue8ydsa3nziuf3dnpX6I3eKQXi LX0Fhct8zwQ9LPuwvLWtj2sHUJJ3/cbghGd13edFhR4n655CEK2nlwMk9XgeGlojhrCH MtcfG6S4mtBZzrOUEzua2bUtpL2rn4D1Bjj1E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=iRVTkxIJnHwaBLHokGGgZRE0TJVDnrQ64zJBBqMFGs0=; b=ZwA3caCC1SeUrPp/wSmclUIPPZc88AAd6yCvMh2R0py88Sum5SQsOq42Kd5a+PJYZv fuwTw8zAQ2ArubdWtHxlg+/JJpaWbd5taZSza5M8g3iXCtHikLEi9fezAVMtx2A8hou9 jCjwcEqxWUF8varzGf8L0WcjqpfVWXzqnP3EKvlaHRymwaKM3e+agkuRAL8fGhChITKl hQkIze/KGee4hnf4IfGNZH8ftGuoeidUmw880pF0QyLvncAsSevVvXKn3ggbO7orao99 N85cZwhmowTI2ehKA1rnbwQnmRaKP2LWt+XDaL6iKjHi7F9cMF+uRKkXJ+mRJA9TCxOf WeRQ== X-Gm-Message-State: AOAM530mJkj/k0NaE+me6Lft/ynTIcp7H76vOszjNbmxDrCbGkxmH3y8 LAqMnNONVFGFUsLXwasdbTbXOyY4M/c/BZ6wBjcnd5FjnZCRKg== X-Google-Smtp-Source: ABdhPJwUquARZelitGIpZLDuhwl8Qo3TUgFyzzaUCWDMIxNpoISTQyK7JTuU9JW1uR1xbLdlZOvSwHCimNolpOBBW1c= X-Received: by 2002:a4a:b503:: with SMTP id r3mr809275ooo.28.1603785913727; Tue, 27 Oct 2020 01:05:13 -0700 (PDT) MIME-Version: 1.0 References: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> <20201026105818.2585306-6-daniel.vetter@ffwll.ch> <20201026221520.GC2802004@chromium.org> In-Reply-To: <20201026221520.GC2802004@chromium.org> From: Daniel Vetter Date: Tue, 27 Oct 2020 09:05:01 +0100 Message-ID: Subject: Re: [PATCH v4 05/15] mm/frame-vector: Use FOLL_LONGTERM To: Tomasz Figa X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201027_040516_480926_519E63AD X-CRM114-Status: GOOD ( 33.40 ) 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: =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , linux-s390 , linux-samsung-soc , Jan Kara , Pawel Osciak , KVM list , Jason Gunthorpe , John Hubbard , Mauro Carvalho Chehab , LKML , DRI Development , Linux MM , Kyungmin Park , Daniel Vetter , Andrew Morton , Marek Szyprowski , Dan Williams , Linux ARM , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBPY3QgMjYsIDIwMjAgYXQgMTE6MTUgUE0gVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9t aXVtLm9yZz4gd3JvdGU6Cj4KPiBIaSBEYW5pZWwsCj4KPiBPbiBNb24sIE9jdCAyNiwgMjAyMCBh dCAxMTo1ODowOEFNICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gVGhpcyBpcyB1c2Vk IGJ5IG1lZGlhL3ZpZGVidWYyIGZvciBwZXJzaXN0ZW50IGRtYSBtYXBwaW5ncywgbm90IGp1c3QK PiA+IGZvciBhIHNpbmdsZSBkbWEgb3BlcmF0aW9uIGFuZCB0aGVuIGZyZWVkIGFnYWluLCBzbyBu ZWVkcwo+ID4gRk9MTF9MT05HVEVSTS4KPiA+Cj4gPiBVbmZvcnR1bmF0ZWx5IGN1cnJlbnQgcHVw X2xvY2tlZCBkb2Vzbid0IHN1cHBvcnQgRk9MTF9MT05HVEVSTSBkdWUgdG8KPiA+IGxvY2tpbmcg aXNzdWVzLiBSZXdvcmsgdGhlIGNvZGUgdG8gcHVsbCB0aGUgcHVwIHBhdGggb3V0IGZyb20gdGhl Cj4gPiBtbWFwX3NlbSBjcml0aWNhbCBzZWN0aW9uIGFzIHN1Z2dlc3RlZCBieSBKYXNvbi4KPiA+ Cj4gPiBCeSByZWx5aW5nIGVudGlyZWx5IG9uIHRoZSB2bWEgY2hlY2tzIGluIHBpbl91c2VyX3Bh Z2VzIGFuZCBmb2xsb3dfcGZuCj4gPiAoZm9yIHZtX2ZsYWdzIGFuZCB2bWFfaXNfZnNkYXgpIHdl IGNhbiBhbHNvIHN0cmVhbWxpbmUgdGhlIGNvZGUgYSBsb3QuCj4gPgo+ID4gU2lnbmVkLW9mZi1i eTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gPiBDYzogSmFzb24g R3VudGhvcnBlIDxqZ2dAemllcGUuY2E+Cj4gPiBDYzogUGF3ZWwgT3NjaWFrIDxwYXdlbEBvc2Np YWsuY29tPgo+ID4gQ2M6IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNv bT4KPiA+IENjOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgo+ID4g Q2M6IFRvbWFzeiBGaWdhIDx0ZmlnYUBjaHJvbWl1bS5vcmc+Cj4gPiBDYzogTWF1cm8gQ2FydmFs aG8gQ2hlaGFiIDxtY2hlaGFiQGtlcm5lbC5vcmc+Cj4gPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtw bUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KPiA+IENjOiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52 aWRpYS5jb20+Cj4gPiBDYzogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4g PiBDYzogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KPiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5q LndpbGxpYW1zQGludGVsLmNvbT4KPiA+IENjOiBsaW51eC1tbUBrdmFjay5vcmcKPiA+IENjOiBs aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPiA+IENjOiBsaW51eC1zYW1zdW5n LXNvY0B2Z2VyLmtlcm5lbC5vcmcKPiA+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK PiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Cj4gPiAtLQo+ID4gdjI6IFN0cmVhbWxpbmUgdGhlIGNvZGUgYW5kIGZ1cnRoZXIgc2ltcGxpZnkg dGhlIGxvb3AgY2hlY2tzIChKYXNvbikKPiA+IC0tLQo+ID4gIG1tL2ZyYW1lX3ZlY3Rvci5jIHwg NTAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAx IGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4gPgo+Cj4g VGhhbmsgeW91IGZvciB0aGUgcGF0Y2guIFBsZWFzZSBzZWUgbXkgY29tbWVudHMgaW5saW5lLgo+ Cj4gPiBkaWZmIC0tZ2l0IGEvbW0vZnJhbWVfdmVjdG9yLmMgYi9tbS9mcmFtZV92ZWN0b3IuYwo+ ID4gaW5kZXggMTBmODJkNTY0M2I2Li5kNDQ3NzllNTYzMTMgMTAwNjQ0Cj4gPiAtLS0gYS9tbS9m cmFtZV92ZWN0b3IuYwo+ID4gKysrIGIvbW0vZnJhbWVfdmVjdG9yLmMKPiA+IEBAIC0zOCw3ICsz OCw2IEBAIGludCBnZXRfdmFkZHJfZnJhbWVzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGludCBucl9mcmFtZXMsCj4gPiAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKPiA+ ICAgICAgIGludCByZXQgPSAwOwo+ID4gICAgICAgaW50IGVycjsKPiA+IC0gICAgIGludCBsb2Nr ZWQ7Cj4gPgo+ID4gICAgICAgaWYgKG5yX2ZyYW1lcyA9PSAwKQo+ID4gICAgICAgICAgICAgICBy ZXR1cm4gMDsKPiA+IEBAIC00OCw0MCArNDcsMjUgQEAgaW50IGdldF92YWRkcl9mcmFtZXModW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgaW50IG5yX2ZyYW1lcywKPiA+Cj4gPiAgICAgICBz dGFydCA9IHVudGFnZ2VkX2FkZHIoc3RhcnQpOwo+ID4KPiA+IC0gICAgIG1tYXBfcmVhZF9sb2Nr KG1tKTsKPiA+IC0gICAgIGxvY2tlZCA9IDE7Cj4gPiAtICAgICB2bWEgPSBmaW5kX3ZtYV9pbnRl cnNlY3Rpb24obW0sIHN0YXJ0LCBzdGFydCArIDEpOwo+ID4gLSAgICAgaWYgKCF2bWEpIHsKPiA+ IC0gICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKPiA+IC0gICAgICAgICAgICAgZ290byBvdXQ7 Cj4gPiAtICAgICB9Cj4gPiAtCj4gPiAtICAgICAvKgo+ID4gLSAgICAgICogV2hpbGUgZ2V0X3Zh ZGRyX2ZyYW1lcygpIGNvdWxkIGJlIHVzZWQgZm9yIHRyYW5zaWVudCAoa2VybmVsCj4gPiAtICAg ICAgKiBjb250cm9sbGVkIGxpZmV0aW1lKSBwaW5uaW5nIG9mIG1lbW9yeSBwYWdlcyBhbGwgY3Vy cmVudAo+ID4gLSAgICAgICogdXNlcnMgZXN0YWJsaXNoIGxvbmcgdGVybSAodXNlcnNwYWNlIGNv bnRyb2xsZWQgbGlmZXRpbWUpCj4gPiAtICAgICAgKiBwYWdlIHBpbm5pbmcuIFRyZWF0IGdldF92 YWRkcl9mcmFtZXMoKSBsaWtlCj4gPiAtICAgICAgKiBnZXRfdXNlcl9wYWdlc19sb25ndGVybSgp IGFuZCBkaXNhbGxvdyBpdCBmb3IgZmlsZXN5c3RlbS1kYXgKPiA+IC0gICAgICAqIG1hcHBpbmdz Lgo+ID4gLSAgICAgICovCj4gPiAtICAgICBpZiAodm1hX2lzX2ZzZGF4KHZtYSkpIHsKPiA+IC0g ICAgICAgICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0 Owo+ID4gLSAgICAgfQo+ID4gLQo+ID4gLSAgICAgaWYgKCEodm1hLT52bV9mbGFncyAmIChWTV9J TyB8IFZNX1BGTk1BUCkpKSB7Cj4gPiArICAgICByZXQgPSBwaW5fdXNlcl9wYWdlc19mYXN0KHN0 YXJ0LCBucl9mcmFtZXMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPTExf Rk9SQ0UgfCBGT0xMX1dSSVRFIHwgRk9MTF9MT05HVEVSTSwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cnVjdCBwYWdlICoqKSh2ZWMtPnB0cnMpKTsKPiA+ICsgICAgIGlm IChyZXQgPiAwKSB7Cj4gPiAgICAgICAgICAgICAgIHZlYy0+Z290X3JlZiA9IHRydWU7Cj4gPiAg ICAgICAgICAgICAgIHZlYy0+aXNfcGZucyA9IGZhbHNlOwo+ID4gLSAgICAgICAgICAgICByZXQg PSBwaW5fdXNlcl9wYWdlc19sb2NrZWQoc3RhcnQsIG5yX2ZyYW1lcywKPiA+IC0gICAgICAgICAg ICAgICAgICAgICBndXBfZmxhZ3MsIChzdHJ1Y3QgcGFnZSAqKikodmVjLT5wdHJzKSwgJmxvY2tl ZCk7Cj4KPiBTaG91bGQgd2UgZHJvcCB0aGUgZ3VwX2ZsYWdzIGFyZ3VtZW50LCBzaW5jZSBpdCdz IGlnbm9yZWQgbm93PwoKSG0gcmlnaHQgSSB0aGluayBhbiBlYXJsaWVyIHZlcnNpb24gZXZlbiBo YWQgdGhhdCwgYnV0IHRoZW4gSSBtb3ZlZCB0bwppbmxpbmluZyB0aGUgZnVuY3Rpb25hbGl0eSBp biBhbGwgdGhlIHBsYWNlcyBpdCdzIHVzZWQuCgpJJ2xsIGRyb3AgdGhlIGd1cCBmbGFnLgoKPiA+ IC0gICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9j a2VkOwo+ID4gICAgICAgfQo+ID4KPgo+IFNob3VsZCB3ZSBpbml0aWFsaXplIHJldCB3aXRoIDAg aGVyZSwgc2luY2UgcGluX3VzZXJfcGFnZXNfZmFzdCgpIGNhbgo+IHJldHVybiBhIG5lZ2F0aXZl IGVycm9yIGNvZGUsIGJ1dCBiZWxvdyB3ZSB1c2UgaXQgYXMgYSBjb3VudGVyIGZvciB0aGUKPiBs b29rZWQgdXAgZnJhbWVzPwoKSW5kZWVkLCB0aGF0J3MgYSBidWcuIFdpbGwgZml4IGZvciB2NS4K LURhbmllbAoKPiBCZXN0IHJlZ2FyZHMsCj4gVG9tYXN6Cj4KPiA+ICsgICAgIG1tYXBfcmVhZF9s b2NrKG1tKTsKPiA+ICAgICAgIHZlYy0+Z290X3JlZiA9IGZhbHNlOwo+ID4gICAgICAgdmVjLT5p c19wZm5zID0gdHJ1ZTsKPiA+ICAgICAgIGRvIHsKPiA+ICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyAqbnVtcyA9IGZyYW1lX3ZlY3Rvcl9wZm5zKHZlYyk7Cj4gPgo+ID4gKyAgICAgICAgICAg ICB2bWEgPSBmaW5kX3ZtYV9pbnRlcnNlY3Rpb24obW0sIHN0YXJ0LCBzdGFydCArIDEpOwo+ID4g KyAgICAgICAgICAgICBpZiAoIXZtYSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsK PiA+ICsKPiA+ICAgICAgICAgICAgICAgd2hpbGUgKHJldCA8IG5yX2ZyYW1lcyAmJiBzdGFydCAr IFBBR0VfU0laRSA8PSB2bWEtPnZtX2VuZCkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgIGVy ciA9IGZvbGxvd19wZm4odm1hLCBzdGFydCwgJm51bXNbcmV0XSk7Cj4gPiAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGVycikgewo+ID4gQEAgLTkyLDE3ICs3NiwxMyBAQCBpbnQgZ2V0X3ZhZGRy X2ZyYW1lcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzLAo+ID4g ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IFBBR0VfU0laRTsKPiA+ICAgICAgICAgICAg ICAgICAgICAgICByZXQrKzsKPiA+ICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAgICAgICAv Kgo+ID4gLSAgICAgICAgICAgICAgKiBXZSBzdG9wIGlmIHdlIGhhdmUgZW5vdWdoIHBhZ2VzIG9y IGlmIFZNQSBkb2Vzbid0IGNvbXBsZXRlbHkKPiA+IC0gICAgICAgICAgICAgICogY292ZXIgdGhl IHRhaWwgcGFnZS4KPiA+IC0gICAgICAgICAgICAgICovCj4gPiAtICAgICAgICAgICAgIGlmIChy ZXQgPj0gbnJfZnJhbWVzIHx8IHN0YXJ0IDwgdm1hLT52bV9lbmQpCj4gPiArICAgICAgICAgICAg IC8qIEJhaWwgb3V0IGlmIFZNQSBkb2Vzbid0IGNvbXBsZXRlbHkgY292ZXIgdGhlIHRhaWwgcGFn ZS4gKi8KPiA+ICsgICAgICAgICAgICAgaWYgKHN0YXJ0IDwgdm1hLT52bV9lbmQpCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAtICAgICAgICAgICAgIHZtYSA9IGZpbmRfdm1h X2ludGVyc2VjdGlvbihtbSwgc3RhcnQsIHN0YXJ0ICsgMSk7Cj4gPiAtICAgICB9IHdoaWxlICh2 bWEgJiYgdm1hLT52bV9mbGFncyAmIChWTV9JTyB8IFZNX1BGTk1BUCkpOwo+ID4gKyAgICAgfSB3 aGlsZSAocmV0IDwgbnJfZnJhbWVzKTsKPiA+ICBvdXQ6Cj4gPiAtICAgICBpZiAobG9ja2VkKQo+ ID4gLSAgICAgICAgICAgICBtbWFwX3JlYWRfdW5sb2NrKG1tKTsKPiA+ICsgICAgIG1tYXBfcmVh ZF91bmxvY2sobW0pOwo+ID4gK291dF91bmxvY2tlZDoKPiA+ICAgICAgIGlmICghcmV0KQo+ID4g ICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwo+ID4gICAgICAgaWYgKHJldCA+IDApCj4gPiAt LQo+ID4gMi4yOC4wCj4gPgoKCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK 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=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 E0CE4C4363A for ; Tue, 27 Oct 2020 08:05:16 +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 F323621D24 for ; Tue, 27 Oct 2020 08:05:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="Xy9/3e57" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F323621D24 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 44898899C4; Tue, 27 Oct 2020 08:05:15 +0000 (UTC) Received: from mail-oo1-xc43.google.com (mail-oo1-xc43.google.com [IPv6:2607:f8b0:4864:20::c43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C083899C4 for ; Tue, 27 Oct 2020 08:05:14 +0000 (UTC) Received: by mail-oo1-xc43.google.com with SMTP id o129so113437ooo.11 for ; Tue, 27 Oct 2020 01:05:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=iRVTkxIJnHwaBLHokGGgZRE0TJVDnrQ64zJBBqMFGs0=; b=Xy9/3e579FMjjTLWAuxWgipn5uXab1XIWYf2dD59Ue8ydsa3nziuf3dnpX6I3eKQXi LX0Fhct8zwQ9LPuwvLWtj2sHUJJ3/cbghGd13edFhR4n655CEK2nlwMk9XgeGlojhrCH MtcfG6S4mtBZzrOUEzua2bUtpL2rn4D1Bjj1E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=iRVTkxIJnHwaBLHokGGgZRE0TJVDnrQ64zJBBqMFGs0=; b=I4gg60JkF3YNVv+pCluQhOLj23Cn5iBI8SsM2CTXk8qGQZESUaNs//iyiJqiszJe06 87UGB5Flg9gKYcaeivdD+oKz+FAmo4FTx7yGb9GieLnhoAioAPnkTIkIGaU7JqstIsEv SnARha5PaJ/yu4M5Qq6vDC6exWayQm7RxJ4Ny8xa7GoPp3EfMzUZWpiAsbT4+VwPmKwG sffflS/P1QxG9z2tLUL5LqWO3/9XoGoqPPdwMkqIKUpDxos7U9SWonzpOO6UtpVHSXP4 LkEdoz05gYPARbqCrw+jUirm8pbwV7Qf6M5KPzaz2wW9LkkwWdCPcxalhdHhJz6ElMdE HVLg== X-Gm-Message-State: AOAM530Y/8Ro+t70gZtXz9t012XEZyt5+n+yClimKP0gmPxiIg6lXE8e 2yCl6neWmOKdIsRKeS2LfSjg3bH1tizxx3K3q7Znww== X-Google-Smtp-Source: ABdhPJwUquARZelitGIpZLDuhwl8Qo3TUgFyzzaUCWDMIxNpoISTQyK7JTuU9JW1uR1xbLdlZOvSwHCimNolpOBBW1c= X-Received: by 2002:a4a:b503:: with SMTP id r3mr809275ooo.28.1603785913727; Tue, 27 Oct 2020 01:05:13 -0700 (PDT) MIME-Version: 1.0 References: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> <20201026105818.2585306-6-daniel.vetter@ffwll.ch> <20201026221520.GC2802004@chromium.org> In-Reply-To: <20201026221520.GC2802004@chromium.org> From: Daniel Vetter Date: Tue, 27 Oct 2020 09:05:01 +0100 Message-ID: Subject: Re: [PATCH v4 05/15] mm/frame-vector: Use FOLL_LONGTERM To: Tomasz Figa 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: =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , linux-s390 , linux-samsung-soc , Jan Kara , Pawel Osciak , KVM list , Jason Gunthorpe , John Hubbard , Mauro Carvalho Chehab , LKML , DRI Development , Linux MM , Kyungmin Park , Daniel Vetter , Andrew Morton , Marek Szyprowski , Dan Williams , Linux ARM , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gTW9uLCBPY3QgMjYsIDIwMjAgYXQgMTE6MTUgUE0gVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9t aXVtLm9yZz4gd3JvdGU6Cj4KPiBIaSBEYW5pZWwsCj4KPiBPbiBNb24sIE9jdCAyNiwgMjAyMCBh dCAxMTo1ODowOEFNICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gVGhpcyBpcyB1c2Vk IGJ5IG1lZGlhL3ZpZGVidWYyIGZvciBwZXJzaXN0ZW50IGRtYSBtYXBwaW5ncywgbm90IGp1c3QK PiA+IGZvciBhIHNpbmdsZSBkbWEgb3BlcmF0aW9uIGFuZCB0aGVuIGZyZWVkIGFnYWluLCBzbyBu ZWVkcwo+ID4gRk9MTF9MT05HVEVSTS4KPiA+Cj4gPiBVbmZvcnR1bmF0ZWx5IGN1cnJlbnQgcHVw X2xvY2tlZCBkb2Vzbid0IHN1cHBvcnQgRk9MTF9MT05HVEVSTSBkdWUgdG8KPiA+IGxvY2tpbmcg aXNzdWVzLiBSZXdvcmsgdGhlIGNvZGUgdG8gcHVsbCB0aGUgcHVwIHBhdGggb3V0IGZyb20gdGhl Cj4gPiBtbWFwX3NlbSBjcml0aWNhbCBzZWN0aW9uIGFzIHN1Z2dlc3RlZCBieSBKYXNvbi4KPiA+ Cj4gPiBCeSByZWx5aW5nIGVudGlyZWx5IG9uIHRoZSB2bWEgY2hlY2tzIGluIHBpbl91c2VyX3Bh Z2VzIGFuZCBmb2xsb3dfcGZuCj4gPiAoZm9yIHZtX2ZsYWdzIGFuZCB2bWFfaXNfZnNkYXgpIHdl IGNhbiBhbHNvIHN0cmVhbWxpbmUgdGhlIGNvZGUgYSBsb3QuCj4gPgo+ID4gU2lnbmVkLW9mZi1i eTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gPiBDYzogSmFzb24g R3VudGhvcnBlIDxqZ2dAemllcGUuY2E+Cj4gPiBDYzogUGF3ZWwgT3NjaWFrIDxwYXdlbEBvc2Np YWsuY29tPgo+ID4gQ2M6IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNv bT4KPiA+IENjOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgo+ID4g Q2M6IFRvbWFzeiBGaWdhIDx0ZmlnYUBjaHJvbWl1bS5vcmc+Cj4gPiBDYzogTWF1cm8gQ2FydmFs aG8gQ2hlaGFiIDxtY2hlaGFiQGtlcm5lbC5vcmc+Cj4gPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtw bUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KPiA+IENjOiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52 aWRpYS5jb20+Cj4gPiBDYzogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4g PiBDYzogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KPiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5q LndpbGxpYW1zQGludGVsLmNvbT4KPiA+IENjOiBsaW51eC1tbUBrdmFjay5vcmcKPiA+IENjOiBs aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPiA+IENjOiBsaW51eC1zYW1zdW5n LXNvY0B2Z2VyLmtlcm5lbC5vcmcKPiA+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK PiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ Cj4gPiAtLQo+ID4gdjI6IFN0cmVhbWxpbmUgdGhlIGNvZGUgYW5kIGZ1cnRoZXIgc2ltcGxpZnkg dGhlIGxvb3AgY2hlY2tzIChKYXNvbikKPiA+IC0tLQo+ID4gIG1tL2ZyYW1lX3ZlY3Rvci5jIHwg NTAgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAx IGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4gPgo+Cj4g VGhhbmsgeW91IGZvciB0aGUgcGF0Y2guIFBsZWFzZSBzZWUgbXkgY29tbWVudHMgaW5saW5lLgo+ Cj4gPiBkaWZmIC0tZ2l0IGEvbW0vZnJhbWVfdmVjdG9yLmMgYi9tbS9mcmFtZV92ZWN0b3IuYwo+ ID4gaW5kZXggMTBmODJkNTY0M2I2Li5kNDQ3NzllNTYzMTMgMTAwNjQ0Cj4gPiAtLS0gYS9tbS9m cmFtZV92ZWN0b3IuYwo+ID4gKysrIGIvbW0vZnJhbWVfdmVjdG9yLmMKPiA+IEBAIC0zOCw3ICsz OCw2IEBAIGludCBnZXRfdmFkZHJfZnJhbWVzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGludCBucl9mcmFtZXMsCj4gPiAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKPiA+ ICAgICAgIGludCByZXQgPSAwOwo+ID4gICAgICAgaW50IGVycjsKPiA+IC0gICAgIGludCBsb2Nr ZWQ7Cj4gPgo+ID4gICAgICAgaWYgKG5yX2ZyYW1lcyA9PSAwKQo+ID4gICAgICAgICAgICAgICBy ZXR1cm4gMDsKPiA+IEBAIC00OCw0MCArNDcsMjUgQEAgaW50IGdldF92YWRkcl9mcmFtZXModW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgaW50IG5yX2ZyYW1lcywKPiA+Cj4gPiAgICAgICBz dGFydCA9IHVudGFnZ2VkX2FkZHIoc3RhcnQpOwo+ID4KPiA+IC0gICAgIG1tYXBfcmVhZF9sb2Nr KG1tKTsKPiA+IC0gICAgIGxvY2tlZCA9IDE7Cj4gPiAtICAgICB2bWEgPSBmaW5kX3ZtYV9pbnRl cnNlY3Rpb24obW0sIHN0YXJ0LCBzdGFydCArIDEpOwo+ID4gLSAgICAgaWYgKCF2bWEpIHsKPiA+ IC0gICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKPiA+IC0gICAgICAgICAgICAgZ290byBvdXQ7 Cj4gPiAtICAgICB9Cj4gPiAtCj4gPiAtICAgICAvKgo+ID4gLSAgICAgICogV2hpbGUgZ2V0X3Zh ZGRyX2ZyYW1lcygpIGNvdWxkIGJlIHVzZWQgZm9yIHRyYW5zaWVudCAoa2VybmVsCj4gPiAtICAg ICAgKiBjb250cm9sbGVkIGxpZmV0aW1lKSBwaW5uaW5nIG9mIG1lbW9yeSBwYWdlcyBhbGwgY3Vy cmVudAo+ID4gLSAgICAgICogdXNlcnMgZXN0YWJsaXNoIGxvbmcgdGVybSAodXNlcnNwYWNlIGNv bnRyb2xsZWQgbGlmZXRpbWUpCj4gPiAtICAgICAgKiBwYWdlIHBpbm5pbmcuIFRyZWF0IGdldF92 YWRkcl9mcmFtZXMoKSBsaWtlCj4gPiAtICAgICAgKiBnZXRfdXNlcl9wYWdlc19sb25ndGVybSgp IGFuZCBkaXNhbGxvdyBpdCBmb3IgZmlsZXN5c3RlbS1kYXgKPiA+IC0gICAgICAqIG1hcHBpbmdz Lgo+ID4gLSAgICAgICovCj4gPiAtICAgICBpZiAodm1hX2lzX2ZzZGF4KHZtYSkpIHsKPiA+IC0g ICAgICAgICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0 Owo+ID4gLSAgICAgfQo+ID4gLQo+ID4gLSAgICAgaWYgKCEodm1hLT52bV9mbGFncyAmIChWTV9J TyB8IFZNX1BGTk1BUCkpKSB7Cj4gPiArICAgICByZXQgPSBwaW5fdXNlcl9wYWdlc19mYXN0KHN0 YXJ0LCBucl9mcmFtZXMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZPTExf Rk9SQ0UgfCBGT0xMX1dSSVRFIHwgRk9MTF9MT05HVEVSTSwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cnVjdCBwYWdlICoqKSh2ZWMtPnB0cnMpKTsKPiA+ICsgICAgIGlm IChyZXQgPiAwKSB7Cj4gPiAgICAgICAgICAgICAgIHZlYy0+Z290X3JlZiA9IHRydWU7Cj4gPiAg ICAgICAgICAgICAgIHZlYy0+aXNfcGZucyA9IGZhbHNlOwo+ID4gLSAgICAgICAgICAgICByZXQg PSBwaW5fdXNlcl9wYWdlc19sb2NrZWQoc3RhcnQsIG5yX2ZyYW1lcywKPiA+IC0gICAgICAgICAg ICAgICAgICAgICBndXBfZmxhZ3MsIChzdHJ1Y3QgcGFnZSAqKikodmVjLT5wdHJzKSwgJmxvY2tl ZCk7Cj4KPiBTaG91bGQgd2UgZHJvcCB0aGUgZ3VwX2ZsYWdzIGFyZ3VtZW50LCBzaW5jZSBpdCdz IGlnbm9yZWQgbm93PwoKSG0gcmlnaHQgSSB0aGluayBhbiBlYXJsaWVyIHZlcnNpb24gZXZlbiBo YWQgdGhhdCwgYnV0IHRoZW4gSSBtb3ZlZCB0bwppbmxpbmluZyB0aGUgZnVuY3Rpb25hbGl0eSBp biBhbGwgdGhlIHBsYWNlcyBpdCdzIHVzZWQuCgpJJ2xsIGRyb3AgdGhlIGd1cCBmbGFnLgoKPiA+ IC0gICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9j a2VkOwo+ID4gICAgICAgfQo+ID4KPgo+IFNob3VsZCB3ZSBpbml0aWFsaXplIHJldCB3aXRoIDAg aGVyZSwgc2luY2UgcGluX3VzZXJfcGFnZXNfZmFzdCgpIGNhbgo+IHJldHVybiBhIG5lZ2F0aXZl IGVycm9yIGNvZGUsIGJ1dCBiZWxvdyB3ZSB1c2UgaXQgYXMgYSBjb3VudGVyIGZvciB0aGUKPiBs b29rZWQgdXAgZnJhbWVzPwoKSW5kZWVkLCB0aGF0J3MgYSBidWcuIFdpbGwgZml4IGZvciB2NS4K LURhbmllbAoKPiBCZXN0IHJlZ2FyZHMsCj4gVG9tYXN6Cj4KPiA+ICsgICAgIG1tYXBfcmVhZF9s b2NrKG1tKTsKPiA+ICAgICAgIHZlYy0+Z290X3JlZiA9IGZhbHNlOwo+ID4gICAgICAgdmVjLT5p c19wZm5zID0gdHJ1ZTsKPiA+ICAgICAgIGRvIHsKPiA+ICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyAqbnVtcyA9IGZyYW1lX3ZlY3Rvcl9wZm5zKHZlYyk7Cj4gPgo+ID4gKyAgICAgICAgICAg ICB2bWEgPSBmaW5kX3ZtYV9pbnRlcnNlY3Rpb24obW0sIHN0YXJ0LCBzdGFydCArIDEpOwo+ID4g KyAgICAgICAgICAgICBpZiAoIXZtYSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsK PiA+ICsKPiA+ICAgICAgICAgICAgICAgd2hpbGUgKHJldCA8IG5yX2ZyYW1lcyAmJiBzdGFydCAr IFBBR0VfU0laRSA8PSB2bWEtPnZtX2VuZCkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgIGVy ciA9IGZvbGxvd19wZm4odm1hLCBzdGFydCwgJm51bXNbcmV0XSk7Cj4gPiAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGVycikgewo+ID4gQEAgLTkyLDE3ICs3NiwxMyBAQCBpbnQgZ2V0X3ZhZGRy X2ZyYW1lcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnJfZnJhbWVzLAo+ID4g ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IFBBR0VfU0laRTsKPiA+ICAgICAgICAgICAg ICAgICAgICAgICByZXQrKzsKPiA+ICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAgICAgICAv Kgo+ID4gLSAgICAgICAgICAgICAgKiBXZSBzdG9wIGlmIHdlIGhhdmUgZW5vdWdoIHBhZ2VzIG9y IGlmIFZNQSBkb2Vzbid0IGNvbXBsZXRlbHkKPiA+IC0gICAgICAgICAgICAgICogY292ZXIgdGhl IHRhaWwgcGFnZS4KPiA+IC0gICAgICAgICAgICAgICovCj4gPiAtICAgICAgICAgICAgIGlmIChy ZXQgPj0gbnJfZnJhbWVzIHx8IHN0YXJ0IDwgdm1hLT52bV9lbmQpCj4gPiArICAgICAgICAgICAg IC8qIEJhaWwgb3V0IGlmIFZNQSBkb2Vzbid0IGNvbXBsZXRlbHkgY292ZXIgdGhlIHRhaWwgcGFn ZS4gKi8KPiA+ICsgICAgICAgICAgICAgaWYgKHN0YXJ0IDwgdm1hLT52bV9lbmQpCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiAtICAgICAgICAgICAgIHZtYSA9IGZpbmRfdm1h X2ludGVyc2VjdGlvbihtbSwgc3RhcnQsIHN0YXJ0ICsgMSk7Cj4gPiAtICAgICB9IHdoaWxlICh2 bWEgJiYgdm1hLT52bV9mbGFncyAmIChWTV9JTyB8IFZNX1BGTk1BUCkpOwo+ID4gKyAgICAgfSB3 aGlsZSAocmV0IDwgbnJfZnJhbWVzKTsKPiA+ICBvdXQ6Cj4gPiAtICAgICBpZiAobG9ja2VkKQo+ ID4gLSAgICAgICAgICAgICBtbWFwX3JlYWRfdW5sb2NrKG1tKTsKPiA+ICsgICAgIG1tYXBfcmVh ZF91bmxvY2sobW0pOwo+ID4gK291dF91bmxvY2tlZDoKPiA+ICAgICAgIGlmICghcmV0KQo+ID4g ICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwo+ID4gICAgICAgaWYgKHJldCA+IDApCj4gPiAt LQo+ID4gMi4yOC4wCj4gPgoKCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==