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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,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 B771DC48BE5 for ; Mon, 21 Jun 2021 14:31:04 +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 721D661151 for ; Mon, 21 Jun 2021 14:31:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 721D661151 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.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 9D9466E188; Mon, 21 Jun 2021 14:31:03 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id DAF246E17C; Mon, 21 Jun 2021 14:31:02 +0000 (UTC) IronPort-SDR: 9cYkNLzwf3ZWgydiVURSthfuGW+Wj2BaaeeAlGWhh7xuHdR98g5n1R9liaGpQKR2ae0D3yVULn Hc7gX8NFlbyg== X-IronPort-AV: E=McAfee;i="6200,9189,10022"; a="187233313" X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="187233313" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 07:31:02 -0700 IronPort-SDR: nE6OAikm4naz1Lih6IUYMcIMnPLOt8e1EiIwJazPle6mMU9oXd3TyogJjyIRJaPct/CgcyP9tJ IYegO6zqI3Sw== X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="453901737" Received: from plogin-mobl.ger.corp.intel.com (HELO [10.249.33.137]) ([10.249.33.137]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 07:30:55 -0700 Subject: Re: [PATCH] drm/i915/eb: Fix pagefault disabling in the first slowpath To: Matthew Auld , Daniel Vetter , Intel Graphics Development References: <20210618214503.1773805-1-daniel.vetter@ffwll.ch> <8678b7b8-ad42-3e14-158e-77994b299c6e@intel.com> From: Maarten Lankhorst Message-ID: <9c2b9130-4361-7a30-52a2-fc1d96e0f124@linux.intel.com> Date: Mon, 21 Jun 2021 16:30:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <8678b7b8-ad42-3e14-158e-77994b299c6e@intel.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US 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?Q?Thomas_Hellstr=c3=b6m?= , DRI Development , Chris Wilson , Jon Bloomfield , Jason Ekstrand , Dave Airlie , Daniel Vetter Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Op 21-06-2021 om 11:33 schreef Matthew Auld: > On 18/06/2021 22:45, Daniel Vetter wrote: >> In >> >> commit ebc0808fa2da0548a78e715858024cb81cd732bc >> Author: Chris Wilson >> Date:   Tue Oct 18 13:02:51 2016 +0100 >> >>      drm/i915: Restrict pagefault disabling to just around copy_from_user() >> >> we entirely missed that there's a slow path call to eb_relocate_entry >> (or i915_gem_execbuffer_relocate_entry as it was called back then) >> which was left fully wrapped by pagefault_disable/enable() calls. >> Previously any issues with blocking calls where handled by the >> following code: >> >>     /* we can't wait for rendering with pagefaults disabled */ >>     if (pagefault_disabled() && !object_is_idle(obj)) >>         return -EFAULT; >> >> Now at this point the prefaulting was still around, which means in >> normal applications it was very hard to hit this bug. No idea why the >> regressions in igts weren't caught. >> >> Now this all changed big time with 2 patches merged closely together. >> >> First >> >> commit 2889caa9232109afc8881f29a2205abeb5709d0c >> Author: Chris Wilson >> Date:   Fri Jun 16 15:05:19 2017 +0100 >> >>      drm/i915: Eliminate lots of iterations over the execobjects array >> >> removes the prefaulting from the first relocation path, pushing it into >> the first slowpath (of which this patch added a total of 3 escalation >> levels). This would have really quickly uncovered the above bug, were >> it not for immediate adding a duct-tape on top with >> >> commit 7dd4f6729f9243bd7046c6f04c107a456bda38eb >> Author: Chris Wilson >> Date:   Fri Jun 16 15:05:24 2017 +0100 >> >>      drm/i915: Async GPU relocation processing >> >> by pushing all all the relocation patching to the gpu if the buffer >> was busy, which avoided all the possible blocking calls. >> >> The entire slowpath was then furthermore ditched in >> >> commit 7dc8f1143778a35b190f9413f228b3cf28f67f8d >> Author: Chris Wilson >> Date:   Wed Mar 11 16:03:10 2020 +0000 >> >>          drm/i915/gem: Drop relocation slowpath >> >> and resurrected in >> >> commit fd1500fcd4420eee06e2c7f3aa6067b78ac05871 >> Author: Maarten Lankhorst >> Date:   Wed Aug 19 16:08:43 2020 +0200 >> >>          Revert "drm/i915/gem: Drop relocation slowpath". >> >> but this did not further impact what's going on. >> >> Since pagefault_disable/enable is an atomic section, any sleeping in >> there is prohibited, and we definitely do that without gpu relocations >> since we have to wait for the gpu usage to finish before we can patch >> up the relocations. > > Why do we also need the __copy_from_user_inatomic in eb_relocate_vma()? > > Reviewed-by: Matthew Auld > >> >> Signed-off-by: Daniel Vetter >> Cc: Jon Bloomfield >> Cc: Chris Wilson >> Cc: Maarten Lankhorst >> Cc: Joonas Lahtinen >> Cc: Daniel Vetter >> Cc: "Thomas Hellström" >> Cc: Matthew Auld >> Cc: Lionel Landwerlin >> Cc: Dave Airlie >> Cc: Jason Ekstrand >> --- >>   drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 -- >>   1 file changed, 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c >> index 6539b82dda54..7ff2fc3c0b2c 100644 >> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c >> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c >> @@ -2082,9 +2082,7 @@ static noinline int eb_relocate_parse_slow(struct i915_execbuffer *eb, >>         list_for_each_entry(ev, &eb->relocs, reloc_link) { >>           if (!have_copy) { >> -            pagefault_disable(); >>               err = eb_relocate_vma(eb, ev); >> -            pagefault_enable(); >>               if (err) >>                   break; >>           } else { >> Reviewed-by: Maarten Lankhorst 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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,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 36B87C4743C for ; Mon, 21 Jun 2021 14:31:04 +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 F105161156 for ; Mon, 21 Jun 2021 14:31:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F105161156 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8A1246E17C; Mon, 21 Jun 2021 14:31:03 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id DAF246E17C; Mon, 21 Jun 2021 14:31:02 +0000 (UTC) IronPort-SDR: 9cYkNLzwf3ZWgydiVURSthfuGW+Wj2BaaeeAlGWhh7xuHdR98g5n1R9liaGpQKR2ae0D3yVULn Hc7gX8NFlbyg== X-IronPort-AV: E=McAfee;i="6200,9189,10022"; a="187233313" X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="187233313" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 07:31:02 -0700 IronPort-SDR: nE6OAikm4naz1Lih6IUYMcIMnPLOt8e1EiIwJazPle6mMU9oXd3TyogJjyIRJaPct/CgcyP9tJ IYegO6zqI3Sw== X-IronPort-AV: E=Sophos;i="5.83,289,1616482800"; d="scan'208";a="453901737" Received: from plogin-mobl.ger.corp.intel.com (HELO [10.249.33.137]) ([10.249.33.137]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jun 2021 07:30:55 -0700 To: Matthew Auld , Daniel Vetter , Intel Graphics Development References: <20210618214503.1773805-1-daniel.vetter@ffwll.ch> <8678b7b8-ad42-3e14-158e-77994b299c6e@intel.com> From: Maarten Lankhorst Message-ID: <9c2b9130-4361-7a30-52a2-fc1d96e0f124@linux.intel.com> Date: Mon, 21 Jun 2021 16:30:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.9.0 MIME-Version: 1.0 In-Reply-To: <8678b7b8-ad42-3e14-158e-77994b299c6e@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH] drm/i915/eb: Fix pagefault disabling in the first slowpath X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , DRI Development , Chris Wilson , Dave Airlie , Daniel Vetter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T3AgMjEtMDYtMjAyMSBvbSAxMTozMyBzY2hyZWVmIE1hdHRoZXcgQXVsZDoKPiBPbiAxOC8wNi8y MDIxIDIyOjQ1LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+PiBJbgo+Pgo+PiBjb21taXQgZWJjMDgw OGZhMmRhMDU0OGE3OGU3MTU4NTgwMjRjYjgxY2Q3MzJiYwo+PiBBdXRob3I6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiBEYXRlOsKgwqAgVHVlIE9jdCAxOCAxMzow Mjo1MSAyMDE2ICswMTAwCj4+Cj4+IMKgwqDCoMKgIGRybS9pOTE1OiBSZXN0cmljdCBwYWdlZmF1 bHQgZGlzYWJsaW5nIHRvIGp1c3QgYXJvdW5kIGNvcHlfZnJvbV91c2VyKCkKPj4KPj4gd2UgZW50 aXJlbHkgbWlzc2VkIHRoYXQgdGhlcmUncyBhIHNsb3cgcGF0aCBjYWxsIHRvIGViX3JlbG9jYXRl X2VudHJ5Cj4+IChvciBpOTE1X2dlbV9leGVjYnVmZmVyX3JlbG9jYXRlX2VudHJ5IGFzIGl0IHdh cyBjYWxsZWQgYmFjayB0aGVuKQo+PiB3aGljaCB3YXMgbGVmdCBmdWxseSB3cmFwcGVkIGJ5IHBh Z2VmYXVsdF9kaXNhYmxlL2VuYWJsZSgpIGNhbGxzLgo+PiBQcmV2aW91c2x5IGFueSBpc3N1ZXMg d2l0aCBibG9ja2luZyBjYWxscyB3aGVyZSBoYW5kbGVkIGJ5IHRoZQo+PiBmb2xsb3dpbmcgY29k ZToKPj4KPj4gwqDCoMKgwqAvKiB3ZSBjYW4ndCB3YWl0IGZvciByZW5kZXJpbmcgd2l0aCBwYWdl ZmF1bHRzIGRpc2FibGVkICovCj4+IMKgwqDCoMKgaWYgKHBhZ2VmYXVsdF9kaXNhYmxlZCgpICYm ICFvYmplY3RfaXNfaWRsZShvYmopKQo+PiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVGQVVMVDsK Pj4KPj4gTm93IGF0IHRoaXMgcG9pbnQgdGhlIHByZWZhdWx0aW5nIHdhcyBzdGlsbCBhcm91bmQs IHdoaWNoIG1lYW5zIGluCj4+IG5vcm1hbCBhcHBsaWNhdGlvbnMgaXQgd2FzIHZlcnkgaGFyZCB0 byBoaXQgdGhpcyBidWcuIE5vIGlkZWEgd2h5IHRoZQo+PiByZWdyZXNzaW9ucyBpbiBpZ3RzIHdl cmVuJ3QgY2F1Z2h0Lgo+Pgo+PiBOb3cgdGhpcyBhbGwgY2hhbmdlZCBiaWcgdGltZSB3aXRoIDIg cGF0Y2hlcyBtZXJnZWQgY2xvc2VseSB0b2dldGhlci4KPj4KPj4gRmlyc3QKPj4KPj4gY29tbWl0 IDI4ODljYWE5MjMyMTA5YWZjODg4MWYyOWEyMjA1YWJlYjU3MDlkMGMKPj4gQXV0aG9yOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4gRGF0ZTrCoMKgIEZyaSBKdW4g MTYgMTU6MDU6MTkgMjAxNyArMDEwMAo+Pgo+PiDCoMKgwqDCoCBkcm0vaTkxNTogRWxpbWluYXRl IGxvdHMgb2YgaXRlcmF0aW9ucyBvdmVyIHRoZSBleGVjb2JqZWN0cyBhcnJheQo+Pgo+PiByZW1v dmVzIHRoZSBwcmVmYXVsdGluZyBmcm9tIHRoZSBmaXJzdCByZWxvY2F0aW9uIHBhdGgsIHB1c2hp bmcgaXQgaW50bwo+PiB0aGUgZmlyc3Qgc2xvd3BhdGggKG9mIHdoaWNoIHRoaXMgcGF0Y2ggYWRk ZWQgYSB0b3RhbCBvZiAzIGVzY2FsYXRpb24KPj4gbGV2ZWxzKS4gVGhpcyB3b3VsZCBoYXZlIHJl YWxseSBxdWlja2x5IHVuY292ZXJlZCB0aGUgYWJvdmUgYnVnLCB3ZXJlCj4+IGl0IG5vdCBmb3Ig aW1tZWRpYXRlIGFkZGluZyBhIGR1Y3QtdGFwZSBvbiB0b3Agd2l0aAo+Pgo+PiBjb21taXQgN2Rk NGY2NzI5ZjkyNDNiZDcwNDZjNmYwNGMxMDdhNDU2YmRhMzhlYgo+PiBBdXRob3I6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiBEYXRlOsKgwqAgRnJpIEp1biAxNiAx NTowNToyNCAyMDE3ICswMTAwCj4+Cj4+IMKgwqDCoMKgIGRybS9pOTE1OiBBc3luYyBHUFUgcmVs b2NhdGlvbiBwcm9jZXNzaW5nCj4+Cj4+IGJ5IHB1c2hpbmcgYWxsIGFsbCB0aGUgcmVsb2NhdGlv biBwYXRjaGluZyB0byB0aGUgZ3B1IGlmIHRoZSBidWZmZXIKPj4gd2FzIGJ1c3ksIHdoaWNoIGF2 b2lkZWQgYWxsIHRoZSBwb3NzaWJsZSBibG9ja2luZyBjYWxscy4KPj4KPj4gVGhlIGVudGlyZSBz bG93cGF0aCB3YXMgdGhlbiBmdXJ0aGVybW9yZSBkaXRjaGVkIGluCj4+Cj4+IGNvbW1pdCA3ZGM4 ZjExNDM3NzhhMzViMTkwZjk0MTNmMjI4YjNjZjI4ZjY3ZjhkCj4+IEF1dGhvcjogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+IERhdGU6wqDCoCBXZWQgTWFyIDExIDE2 OjAzOjEwIDIwMjAgKzAwMDAKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoCBkcm0vaTkxNS9nZW06IERy b3AgcmVsb2NhdGlvbiBzbG93cGF0aAo+Pgo+PiBhbmQgcmVzdXJyZWN0ZWQgaW4KPj4KPj4gY29t bWl0IGZkMTUwMGZjZDQ0MjBlZWUwNmUyYzdmM2FhNjA2N2I3OGFjMDU4NzEKPj4gQXV0aG9yOiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+PiBE YXRlOsKgwqAgV2VkIEF1ZyAxOSAxNjowODo0MyAyMDIwICswMjAwCj4+Cj4+IMKgwqDCoMKgwqDC oMKgwqAgUmV2ZXJ0ICJkcm0vaTkxNS9nZW06IERyb3AgcmVsb2NhdGlvbiBzbG93cGF0aCIuCj4+ Cj4+IGJ1dCB0aGlzIGRpZCBub3QgZnVydGhlciBpbXBhY3Qgd2hhdCdzIGdvaW5nIG9uLgo+Pgo+ PiBTaW5jZSBwYWdlZmF1bHRfZGlzYWJsZS9lbmFibGUgaXMgYW4gYXRvbWljIHNlY3Rpb24sIGFu eSBzbGVlcGluZyBpbgo+PiB0aGVyZSBpcyBwcm9oaWJpdGVkLCBhbmQgd2UgZGVmaW5pdGVseSBk byB0aGF0IHdpdGhvdXQgZ3B1IHJlbG9jYXRpb25zCj4+IHNpbmNlIHdlIGhhdmUgdG8gd2FpdCBm b3IgdGhlIGdwdSB1c2FnZSB0byBmaW5pc2ggYmVmb3JlIHdlIGNhbiBwYXRjaAo+PiB1cCB0aGUg cmVsb2NhdGlvbnMuCj4KPiBXaHkgZG8gd2UgYWxzbyBuZWVkIHRoZSBfX2NvcHlfZnJvbV91c2Vy X2luYXRvbWljIGluIGViX3JlbG9jYXRlX3ZtYSgpPwo+Cj4gUmV2aWV3ZWQtYnk6IE1hdHRoZXcg QXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KPgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPj4gQ2M6IEpvbiBCbG9vbWZpZWxk IDxqb24uYmxvb21maWVsZEBpbnRlbC5jb20+Cj4+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmto b3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0 aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGZmd2xsLmNoPgo+PiBDYzogIlRob21hcyBIZWxsc3Ryw7ZtIiA8dGhvbWFzLmhlbGxzdHJvbUBs aW51eC5pbnRlbC5jb20+Cj4+IENjOiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5j b20+Cj4+IENjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5j b20+Cj4+IENjOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgo+PiBDYzogSmFzb24g RWtzdHJhbmQgPGphc29uQGpsZWtzdHJhbmQubmV0Pgo+PiAtLS0KPj4gwqAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8IDIgLS0KPj4gwqAgMSBmaWxlIGNo YW5nZWQsIDIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBpbmRleCA2NTM5YjgyZGRhNTQuLjdmZjJmYzNjMGIy YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4+IEBAIC0yMDgyLDkgKzIwODIsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3Jl bG9jYXRlX3BhcnNlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+IMKgIMKgwqDC oMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xpbmspIHsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghaGF2ZV9jb3B5KSB7Cj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHBhZ2VmYXVsdF9kaXNhYmxlKCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGVyciA9IGViX3JlbG9jYXRlX3ZtYShlYiwgZXYpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwYWdlZmF1bHRfZW5hYmxlKCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChlcnIpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKg wqDCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+PgpSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=