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=-7.8 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 EDD1AC43603 for ; Thu, 12 Dec 2019 15:12:43 +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 C0BAD2067C for ; Thu, 12 Dec 2019 15:12:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="u1hLbhBy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C0BAD2067C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 71C566E17E; Thu, 12 Dec 2019 15:12:43 +0000 (UTC) Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by gabe.freedesktop.org (Postfix) with ESMTPS id B610E6E17E for ; Thu, 12 Dec 2019 15:12:41 +0000 (UTC) Received: by mail-wm1-x342.google.com with SMTP id p17so2907321wmi.3 for ; Thu, 12 Dec 2019 07:12:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=URI4J7AxefciPmhyggFyH101buqE2u+6OavdnH5chuo=; b=u1hLbhByCuifBGVAhRuDlYe6mE9xwyIprOi8xJJLplWGSVJ4xjPXw6G8/ccgRCmBiq moxrsCqjQr4nvzufdVuyYMFcDrM4odhcJ8ZafG1+DgDOleT2LO/3w4dIfsaiRhuHUqJJ 1X5djEQwMg8++fJA2qQU02Vdz90fWOrG+zZOjW+ExYUaw1WRJ5zdQqqS42ytlxq4hmOw aHfc8TzHKE3VzREL+59U7kT0wSmBahGkjHkzEeNSkbZsr2NGEnUxbTmBRAbTg2Mfmi6/ 4xcr1gOtSxSbBzBIxs6UAd35c1obH5YBtAe3TAAUDjEPEZRupF4Sa8474Su3Q50izmjC eKNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=URI4J7AxefciPmhyggFyH101buqE2u+6OavdnH5chuo=; b=eIHuEidGT8KDRNVsWeHwTajW8OOUYLu14qosGHMmoU3/j7+r8TDD+0bGPJJsksTlbh mSN7rCY+f8Aw9oeRO1d1KjEps+819xmSXkncrxTPjKh9t9EAjoIOsGa2212n4ClJqnbO epxksMQMqMau5ekSDCrSmod/zY6sP3FO7Oay2FQB4XW+D3ncadNFrVPdnIOYF5cC1iuT ancWv1/4BgpbAWy+sQpwtz7plUbIUzfO4kFroXC6BUaSk6UyVtd2EOcQ6vi1X/K1JM5R ADELHkXJh9TthCDkOeLAxBJatJkN54O0md8fcsTMDZBErDT7maxM45wXgx6Qn1qoPalR 5HqQ== X-Gm-Message-State: APjAAAXrktbc/WsrAkQWV6wj0IUbnqNl3mWB3plvNuxn2yibJZGTWUvh hsOSvBqVw0hTs0UYje3rBr9oXoCL X-Google-Smtp-Source: APXvYqyKm8t7aQPD5+ybh1XzA+uojTNJPDfnwJ7rxeezpWsmgWm9EOqj20iq6BdlUl2uDdJtOYpaqw== X-Received: by 2002:a7b:c183:: with SMTP id y3mr7372007wmi.0.1576163560320; Thu, 12 Dec 2019 07:12:40 -0800 (PST) Received: from ?IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7? ([2a02:908:1252:fb60:be8a:bd56:1f94:86e7]) by smtp.gmail.com with ESMTPSA id w19sm6026930wmc.22.2019.12.12.07.12.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 12 Dec 2019 07:12:39 -0800 (PST) Subject: Re: [PATCH 5/5] drm/amdgpu: immedially invalidate PTEs To: Philip Yang , christian.koenig@amd.com, Felix Kuehling , amd-gfx@lists.freedesktop.org, Alex.Sierra@amd.com References: <20191205133940.3865-1-christian.koenig@amd.com> <20191205133940.3865-5-christian.koenig@amd.com> <98ce952f-f52d-bf60-00b3-d984b7c2184d@gmail.com> <5a8ca58c-07e9-1e55-939c-7396de95317c@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <4c5b8265-1e23-92d1-a888-33a5d8d5d3a5@gmail.com> Date: Thu, 12 Dec 2019 16:12:38 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <5a8ca58c-07e9-1e55-939c-7396de95317c@amd.com> Content-Language: en-US X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: christian.koenig@amd.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" SGkgUGhpbGlwLAoKdGhhdCBpcyBhbiBleHBlY3RlZCByZXN1bHQuIFlvdSBjYW4gb25seSBpbnZh bGlkYXRlIHBhZ2UgdGFibGVzIHdpdGhvdXQgCmhvbGRpbmcgdGhlIHJlc2VydmF0aW9uIGxvY2su CgpXaGF0IHlvdSBkbyBoZXJlIGlzIGFkZGluZyBhIG5ldyBtYXBwaW5nIGFuZCB0aGF0IG9uZSBu ZWVkcyB0byBhbGxvY2F0ZSAKYSBuZXcgcGFnZSB0YWJsZXMgYW5kIHdvbid0IHdvcmsgbGlrZSB0 aGlzLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKQW0gMTIuMTIuMTkgdW0gMTU6Mzggc2NocmllYiBQ aGlsaXAgWWFuZzoKPiBIaSBDaHJpc3RpYW4sCj4KPiBGWUksIHJlbW92ZSBhbWRncHVfYm9fcmVz ZXJ2ZShyb290LCB0cnVlKSBiZWZvcmUgY2FsbGluZyAKPiBhbWRncHVfdm1fYm9fdXBkYXRlX21h cHBpbmcsIEkgZ290IHRoaXMgd2FybmluZyBiYWNrdHJhY2U6Cj4KPiDCoMKgwqAgW8KgIDE4Mi4z OTAwNzJdIFdBUk5JTkc6IENQVTogMTIgUElEOiA0Mzc2IGF0Cj4KPiAvaG9tZS95YW5ncC9naXQv Y29tcHV0ZV9zdGFnaW5nL2tlcm5lbC9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jOjEyMjkK PiDCoMKgwqAgdHRtX2JvX3ZhbGlkYXRlKzB4MTRkLzB4MWIwIFt0dG1dCj4gwqDCoMKgIFvCoCAx ODIuMzkwMDg1XSBNb2R1bGVzIGxpbmtlZCBpbjogZnVzZSBpcDZ0YWJsZV9maWx0ZXIgaXA2X3Rh Ymxlcwo+IMKgwqDCoCBpcHRhYmxlX2ZpbHRlciBhbWRncHUgYW1kX2lvbW11X3YyIGdwdV9zY2hl ZCBhc3QgZHJtX3ZyYW1faGVscGVyCj4gwqDCoMKgIGRybV90dG1faGVscGVyIHR0bSBrMTB0ZW1w IGlwX3RhYmxlcyB4X3RhYmxlcyBpMmNfcGlpeDQKPiDCoMKgwqAgW8KgIDE4Mi4zOTAxMjNdIENQ VTogMTIgUElEOiA0Mzc2IENvbW06IGtmZHRlc3QgVGFpbnRlZDogR8KgwqDCoMKgwqDCoMKgIFcK PiDCoMKgwqAgNS40LjAtcmM3LWtmZC15YW5ncCAjMQo+IMKgwqDCoCBbwqAgMTgyLjM5MDEzM10g SGFyZHdhcmUgbmFtZTogR0lHQUJZVEUgTVowMS1DRTAtMDAvTVowMS1DRTAtMDAsIAo+IEJJT1Mg RjEyCj4gwqDCoMKgIDA4LzA1LzIwMTkKPiDCoMKgwqAgW8KgIDE4Mi4zOTAxNDZdIFJJUDogMDAx MDp0dG1fYm9fdmFsaWRhdGUrMHgxNGQvMHgxYjAgW3R0bV0KPiDCoMKgwqAgW8KgIDE4Mi4zOTAx NTNdIENvZGU6IDQwIGZmIDUyIDE4IDhiIDQ0IDI0IDA0IGU5IDRmIGZmIGZmIGZmIDQ4IDhiIAo+ IDg3IDIwCj4gwqDCoMKgIDAxIDAwIDAwIGJlIGZmIGZmIGZmIGZmIDQ4IDhkIDc4IDYwIGU4IDVi IDNhIGUxIGQ0IDg1IGMwIDBmIDg1IGU3IAo+IGZlIGZmCj4gwqDCoMKgIGZmIDwwZj4gMGIgZTkg ZTAgZmUgZmYgZmYgYmUgMDEgMDAgMDAgMDAgNDggODkgZGYgZTggMmYgYzQgZmYgZmYgCj4gZTkg MTkKPiDCoMKgwqAgW8KgIDE4Mi4zOTAxNjFdIFJTUDogMDAxODpmZmZmYWI3YTAzMmYzOTkwIEVG TEFHUzogMDAwMTAyNDYKPiDCoMKgwqAgW8KgIDE4Mi4zOTAxNjZdIFJBWDogMDAwMDAwMDAwMDAw MDAwMCBSQlg6IGZmZmY5NDNjNTliMzc4NTAgUkNYOgo+IMKgwqDCoCBmZmZmOTQzYzU5YjM1MDAw Cj4gwqDCoMKgIFvCoCAxODIuMzkwMTcxXSBSRFg6IGZmZmY5NDNjNTM5ZGFmMDAgUlNJOiBmZmZm OTQzYzU2ZmIzMWQ4IFJESToKPiDCoMKgwqAgZmZmZjk0M2M1MzlkYjc5MAo+IMKgwqDCoCBbwqAg MTgyLjM5MDE3OF0gUkJQOiBmZmZmOTQzYzU5YjM3ODMwIFIwODogMDAwMDAwMDAwMDAwMDIwMCBS MDk6Cj4gwqDCoMKgIDAwMDAwMDAwMDAwMDAwMDAKPiDCoMKgwqAgW8KgIDE4Mi4zOTAxODRdIFIx MDogMDAwMDAwMDAwMDAwMDAwMCBSMTE6IDAwMDAwMDAwMDAxZmVlMGUgUjEyOgo+IMKgwqDCoCBm ZmZmYWI3YTAzMmYzYTUwCj4gwqDCoMKgIFvCoCAxODIuMzkwMTk0XSBSMTM6IDAwMDAwMDAwMDAw MDAyMDAgUjE0OiBmZmZmOTQzYzU5YjM3ODAwIFIxNToKPiDCoMKgwqAgMDAwMDAwMDAwMDAwMDAw MAo+IMKgwqDCoCBbwqAgMTgyLjM5MDE5N10gRlM6wqAgMDAwMDdmMGQyN2Y0MTc4MCgwMDAwKSBH UzpmZmZmOTQzYzllOTAwMDAwKDAwMDApCj4gwqDCoMKgIGtubEdTOjAwMDAwMDAwMDAwMDAwMDAK PiDCoMKgwqAgW8KgIDE4Mi4zOTAyMDNdIENTOsKgIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1Iw OiAwMDAwMDAwMDgwMDUwMDMzCj4gwqDCoMKgIFvCoCAxODIuMzkwMjA5XSBDUjI6IDAwMDA3ZmJh N2ExMDEwYTAgQ1IzOiAwMDAwMDAwN2YyNjI0MDAwIENSNDoKPiDCoMKgwqAgMDAwMDAwMDAwMDM0 MDZlMAo+IMKgwqDCoCBbwqAgMTgyLjM5MDIxMl0gQ2FsbCBUcmFjZToKPiDCoMKgwqAgW8KgIDE4 Mi4zOTAyMTldwqAgPyByY3VfcmVhZF9sb2NrX3NjaGVkX2hlbGQrMHg1Mi8weDgwCj4gwqDCoMKg IFvCoCAxODIuMzkwMjIzXcKgID8gX3Jhd19zcGluX3VubG9jaysweDI0LzB4MzAKPiDCoMKgwqAg W8KgIDE4Mi4zOTAyNjddwqAgPyBhbWRncHVfYm9fZG9fY3JlYXRlKzB4NGQxLzB4NWQwIFthbWRn cHVdCj4gwqDCoMKgIFvCoCAxODIuMzkwMzE5XcKgIGFtZGdwdV92bV9jbGVhcl9ibysweDEzZC8w eDNhMCBbYW1kZ3B1XQo+IMKgwqDCoCBbwqAgMTgyLjM5MDM3MV3CoCA/IGFtZGdwdV92bV9udW1f ZW50cmllcysweDFlLzB4NzAgW2FtZGdwdV0KPiDCoMKgwqAgW8KgIDE4Mi4zOTA0MjRdwqAgYW1k Z3B1X3ZtX3VwZGF0ZV9wdGVzKzB4NTYxLzB4NWQwIFthbWRncHVdCj4gwqDCoMKgIFvCoCAxODIu MzkwNDgwXcKgIGFtZGdwdV92bV9ib191cGRhdGVfbWFwcGluZysweGZkLzB4MTMwIFthbWRncHVd Cj4gwqDCoMKgIFvCoCAxODIuMzkwNTMwXcKgIGFtZGdwdV92bV9ib19zcGxpdF9tYXBwaW5nKzB4 MWVhLzB4MmMwIFthbWRncHVdCj4gwqDCoMKgIFvCoCAxODIuMzkwNTkxXcKgIHN2bV9yYW5nZV9t YXBfdG9fZ3B1cysweDE2MC8weDMxMCBbYW1kZ3B1XQo+IMKgwqDCoCBbwqAgMTgyLjM5MDY1MF3C oCBrZmRfcmVnaXN0ZXJfc3ZtKzB4YjgvMHgyYjAgW2FtZGdwdV0KPiDCoMKgwqAgW8KgIDE4Mi4z OTA3MDhdwqAga2ZkX2lvY3RsX3JlZ2lzdGVyX3N2bSsweGU4LzB4MTEwIFthbWRncHVdCj4gwqDC oMKgIFvCoCAxODIuMzkwNzY1XcKgIGtmZF9pb2N0bCsweDIzMi8weDNkMCBbYW1kZ3B1XQo+IMKg wqDCoCBbwqAgMTgyLjM5MDgyM13CoCA/IGtmZF9pb2N0bF9nZXRfcHJvY2Vzc19hcGVydHVyZXNf bmV3KzB4MzEwLzB4MzEwCj4gwqDCoMKgIFthbWRncHVdCj4gwqDCoMKgIFvCoCAxODIuMzkwODM4 XcKgID8gc2VsaW51eF9maWxlX2lvY3RsKzB4MTUzLzB4MjEwCj4gwqDCoMKgIFvCoCAxODIuMzkw ODQ1XcKgIGRvX3Zmc19pb2N0bCsweGEyLzB4NmUwCj4gwqDCoMKgIFvCoCAxODIuMzkwODU0XcKg IGtzeXNfaW9jdGwrMHg3MC8weDgwCj4gwqDCoMKgIFvCoCAxODIuMzkwODYyXcKgIF9feDY0X3N5 c19pb2N0bCsweDE2LzB4MjAKPiDCoMKgwqAgW8KgIDE4Mi4zOTA4NjldwqAgZG9fc3lzY2FsbF82 NCsweDRhLzB4MWIwCj4gwqDCoMKgIFvCoCAxODIuMzkwODc5XcKgIGVudHJ5X1NZU0NBTExfNjRf YWZ0ZXJfaHdmcmFtZSsweDQ5LzB4YmUKPgo+IFBoaWxpcAo+Cj4gT24gMjAxOS0xMi0xMiAzOjUx IGEubS4sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+IEhpIEZlbGl4LAo+Pgo+PiB5ZWFoLCBJ J3ZlIGFsc28gZm91bmQgYSBjb3JuZXIgY2FzZSB3aGljaCB3b3VsZCByYWlzZSBhIHdhcm5pbmcg bm93Lgo+Pgo+PiBOZWVkIHRvIHJld29yayBob3cgZGVwZW5kZW5jaWVzIGZvciB0aGUgUFRFIHVw ZGF0ZSBhcmUgZ2VuZXJhdGVkLgo+Pgo+PiBHb2luZyB0byB0YWtlIGNhcmUgb2YgdGhpcyBpbiB0 aGUgbmV4dCBmZXcgZGF5cywKPj4gQ2hyaXN0aWFuLgo+Pgo+PiBBbSAxMi4xMi4xOSB1bSAwMToy MCBzY2hyaWViIEZlbGl4IEt1ZWhsaW5nOgo+Pj4gSGkgQ2hyaXN0aWFuLAo+Pj4KPj4+IEFsZXgg c3RhcnRlZCB0cnlpbmcgdG8gaW52YWxpZGF0ZSBQVEVzIGluIHRoZSBNTVUgbm90aWZpZXJzIGFu ZCAKPj4+IHdlJ3JlIGZpbmRpbmcgdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIHJlc2VydmUgdGhlIFZN IHJlc2VydmF0aW9uIGZvciAKPj4+IGFtZGdwdV9zeW5jX3Jlc3YgaW4gYW1kZ3B1X3ZtX3NkbWFf cHJlcGFyZS4gSXMgdGhhdCBzeW5jX3Jlc3Ygc3RpbGwgCj4+PiBuZWVkZWQgbm93LCBnaXZlbiB0 aGF0IFZNIGZlbmNlcyBhcmVuJ3QgaW4gdGhhdCByZXNlcnZhdGlvbiBvYmplY3QgCj4+PiBhbnkg bW9yZT8KPj4+Cj4+PiBSZWdhcmRzLAo+Pj4gwqAgRmVsaXgKPj4+Cj4+PiBPbiAyMDE5LTEyLTA1 IDU6MzksIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4gV2hlbiBhIEJPIGlzIGV2aWN0ZWQg aW1tZWRpYWxseSBpbnZhbGlkYXRlIHRoZSBtYXBwZWQgUFRFcy4KPj4+Pgo+Pj4+IFNpZ25lZC1v ZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4+PiAt LS0KPj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyB8IDE3ICsr KysrKysrKysrKysrKystCj4+Pj4gwqAgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm0uYyAKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5jCj4+Pj4gaW5kZXggODM5ZDZkZjM5NGZjLi5lNTc4MTEzYmZkNTUgMTAwNjQ0Cj4+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+IEBAIC0yNTY1LDYg KzI1NjUsNyBAQCB2b2lkIGFtZGdwdV92bV9ib19pbnZhbGlkYXRlKHN0cnVjdCAKPj4+PiBhbWRn cHVfZGV2aWNlICphZGV2LAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywgYm9vbCBldmljdGVkKQo+Pj4+IMKgIHsKPj4+PiDCoMKg wqDCoMKgIHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqYm9fYmFzZTsKPj4+PiArwqDCoMKgIGlu dCByOwo+Pj4+IMKgIMKgwqDCoMKgwqAgLyogc2hhZG93IGJvIGRvZXNuJ3QgaGF2ZSBibyBiYXNl LCBpdHMgdmFsaWRhdGlvbiBuZWVkcyBpdHMgCj4+Pj4gcGFyZW50ICovCj4+Pj4gwqDCoMKgwqDC oCBpZiAoYm8tPnBhcmVudCAmJiBiby0+cGFyZW50LT5zaGFkb3cgPT0gYm8pCj4+Pj4gQEAgLTI1 NzIsOCArMjU3MywyMiBAQCB2b2lkIGFtZGdwdV92bV9ib19pbnZhbGlkYXRlKHN0cnVjdCAKPj4+ PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+IMKgIMKgwqDCoMKgwqAgZm9yIChib19iYXNlID0g Ym8tPnZtX2JvOyBib19iYXNlOyBib19iYXNlID0gYm9fYmFzZS0+bmV4dCkgewo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSA9IGJvX2Jhc2UtPnZtOwo+Pj4+ICvC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3YgPSB2bS0+cm9vdC5iYXNlLmJvLT50 Ym8uYmFzZS5yZXN2Owo+Pj4+ICsKPj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGJvLT50Ym8udHlw ZSAhPSB0dG1fYm9fdHlwZV9rZXJuZWwpIHsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgYW1kZ3B1X2JvX3ZhICpib192YTsKPj4+PiArCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYm9fdmEgPSBjb250YWluZXJfb2YoYm9fYmFzZSwgc3RydWN0IGFtZGdwdV9ib192YSwK Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJh c2UpOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfdm1fYm9fdXBkYXRl KGFkZXYsIGJvX3ZhLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJvLT50Ym8uYmFzZS5yZXN2ICE9IHJlc3YpOwo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmICghcikgewo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YW1kZ3B1X3ZtX2JvX2lkbGUoYm9fYmFzZSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb250aW51ZTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIH0KPj4+PiDCoCAtwqDCoMKgwqDCoMKgwqAgaWYgKGV2aWN0ZWQgJiYgYm8t PnRiby5iYXNlLnJlc3YgPT0gCj4+Pj4gdm0tPnJvb3QuYmFzZS5iby0+dGJvLmJhc2UucmVzdikg ewo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZXZpY3RlZCAmJiBiby0+dGJvLmJhc2UucmVzdiA9 PSByZXN2KSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X3ZtX2JvX2V2 aWN0ZWQoYm9fYmFzZSk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7 Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=