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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 63681C4829A for ; Tue, 13 Feb 2024 14:03:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4wYz6dNdmxaeGhZg4ocjcYraZLFXynfM5hUQY5y4VD0=; b=bQ+YSLN+U4zE60 u+614uvmdZd/r2GhzfU9ffI4v4SS/gSNUMvR2dVs66IgSjyMsNR2y5rE0FKm/9jk0mMp7qmcqRYKl er6DrX7i2Ce7x8XmtZnIXBm5JnQIptFea9kOOZUITFeqrwp1VSA08vVUN7bRPYU3UamRR6T9I0Ccz RHUAVXhfU9PEp9AnfpWK0KClwjS6OFsfebxULM8xmvZ82zWC0ZKdr07ceV8WwJ+zVE5rbyq3153Vp RIWNOkW3RkBGMebjV5EokbQfFpXfqtl3jB6qSKqJAsws0A1xXJ+e8ZG7J9/sNZ5RRHMhzW4rZ7vhE LlXfgBe0gsNZuJU/FbuQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rZtMZ-00000009Qf7-2s9s; Tue, 13 Feb 2024 14:02:52 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rZtMP-00000009QdT-2jGP for linux-arm-kernel@lists.infradead.org; Tue, 13 Feb 2024 14:02:18 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 18234DA7; Tue, 13 Feb 2024 06:02:48 -0800 (PST) Received: from [10.1.36.184] (XHFQ2J9959.cambridge.arm.com [10.1.36.184]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3D7B53F762; Tue, 13 Feb 2024 06:02:03 -0800 (PST) Message-ID: <3de2130b-9f0f-4a11-ac06-7bf814de641c@arm.com> Date: Tue, 13 Feb 2024 14:02:01 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 19/25] arm64/mm: Wire up PTE_CONT for user mappings Content-Language: en-GB To: David Hildenbrand , Ard Biesheuvel Cc: Mark Rutland , Catalin Marinas , Will Deacon , Marc Zyngier , James Morse , Andrey Ryabinin , Andrew Morton , Matthew Wilcox , Kefeng Wang , John Hubbard , Zi Yan , Barry Song <21cnbao@gmail.com>, Alistair Popple , Yang Shi , Nicholas Piggin , Christophe Leroy , "Aneesh Kumar K.V" , "Naveen N. Rao" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, x86@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20240202080756.1453939-1-ryan.roberts@arm.com> <20240202080756.1453939-20-ryan.roberts@arm.com> <64395ae4-3a7d-45dd-8f1d-ea6b232829c5@arm.com> <41499621-482f-455b-9f68-b43ea8052557@redhat.com> <1d302d7a-50ab-4ab4-b049-75ed4a71a87d@arm.com> <99e2a92c-f2a2-4e1e-8ce2-08caae2cb7e4@redhat.com> <64b872bd-4b12-4dbd-b043-1ad11aeaa19a@redhat.com> From: Ryan Roberts In-Reply-To: <64b872bd-4b12-4dbd-b043-1ad11aeaa19a@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240213_060215_898673_31934C35 X-CRM114-Status: GOOD ( 31.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 T24gMTMvMDIvMjAyNCAxMzo0NSwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4gT24gMTMuMDIu MjQgMTQ6MzMsIEFyZCBCaWVzaGV1dmVsIHdyb3RlOgo+PiBPbiBUdWUsIDEzIEZlYiAyMDI0IGF0 IDE0OjIxLCBSeWFuIFJvYmVydHMgPHJ5YW4ucm9iZXJ0c0Bhcm0uY29tPiB3cm90ZToKPj4+Cj4+ PiBPbiAxMy8wMi8yMDI0IDEzOjEzLCBEYXZpZCBIaWxkZW5icmFuZCB3cm90ZToKPj4+PiBPbiAx My4wMi4yNCAxNDowNiwgUnlhbiBSb2JlcnRzIHdyb3RlOgo+Pj4+PiBPbiAxMy8wMi8yMDI0IDEy OjE5LCBEYXZpZCBIaWxkZW5icmFuZCB3cm90ZToKPj4+Pj4+IE9uIDEzLjAyLjI0IDEzOjA2LCBS eWFuIFJvYmVydHMgd3JvdGU6Cj4+Pj4+Pj4gT24gMTIvMDIvMjAyNCAyMDozOCwgUnlhbiBSb2Jl cnRzIHdyb3RlOgo+Pj4+Pj4+PiBbLi4uXQo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4gK3N0YXRpYyBp bmxpbmUgYm9vbCBtbV9pc191c2VyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+Pj4+Pj4+Pj4+Pj4g K3sKPj4+Pj4+Pj4+Pj4+ICvCoMKgwqAgLyoKPj4+Pj4+Pj4+Pj4+ICvCoMKgwqDCoCAqIERvbid0 IGF0dGVtcHQgdG8gYXBwbHkgdGhlIGNvbnRpZyBiaXQgdG8ga2VybmVsIG1hcHBpbmdzLAo+Pj4+ Pj4+Pj4+Pj4gYmVjYXVzZQo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgICogZHluYW1pY2FsbHkgYWRk aW5nL3JlbW92aW5nIHRoZSBjb250aWcgYml0IGNhbiBjYXVzZSBwYWdlCj4+Pj4+Pj4+Pj4+PiBm YXVsdHMuCj4+Pj4+Pj4+Pj4+PiArwqDCoMKgwqAgKiBUaGVzZSByYWNpbmcgZmF1bHRzIGFyZSBv ayBmb3IgdXNlciBzcGFjZSwgc2luY2UgdGhleSBnZXQKPj4+Pj4+Pj4+Pj4+IHNlcmlhbGl6ZWQK Pj4+Pj4+Pj4+Pj4+ICvCoMKgwqDCoCAqIG9uIHRoZSBQVEwuIEJ1dCBrZXJuZWwgbWFwcGluZ3Mg Y2FuJ3QgdG9sZXJhdGUgZmF1bHRzLgo+Pj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgICovCj4+Pj4+Pj4+ Pj4+PiArwqDCoMKgIHJldHVybiBtbSAhPSAmaW5pdF9tbTsKPj4+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IFdlIGFsc28gaGF2ZSB0aGUgZWZpX21tIGFzIGEgbm9uLXVzZXIg bW0sIHRob3VnaCBJIGRvbid0IHRoaW5rIHdlCj4+Pj4+Pj4+Pj4+IG1hbmlwdWxhdGUKPj4+Pj4+ Pj4+Pj4gdGhhdCB3aGlsZSBpdCBpcyBsaXZlLCBhbmQgSSdtIG5vdCBzdXJlIGlmIHRoYXQgbmVl ZHMgYW55IHNwZWNpYWwKPj4+Pj4+Pj4+Pj4gaGFuZGxpbmcuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ PiBXZWxsIHdlIG5ldmVyIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiB0aGUgaG90IChvcmRlci0wIGZv bGlvKSBwYXRoLCBzbyBJCj4+Pj4+Pj4+Pj4gdGhpbmsgSQo+Pj4+Pj4+Pj4+IGNvdWxkIGFkZCBh IGNoZWNrIGZvciBlZmlfbW0gaGVyZSB3aXRoIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9uLiBJdCdz Cj4+Pj4+Pj4+Pj4gcHJvYmFibHkKPj4+Pj4+Pj4+PiBzYWZlc3QgdG8gZXhwbGljaXRseSBleGNs dWRlIGl0PyBXaGF0IGRvIHlvdSB0aGluaz8KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBPb3BzOiBUaGlz IHNob3VsZCBoYXZlIHJlYWQgIkkgdGhpbmsgSSBjb3VsZCBhZGQgYSBjaGVjayBmb3IgZWZpX21t IGhlcmUKPj4+Pj4+Pj4+ICp3aXRob3V0KiBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbiIKPj4+Pj4+ Pj4KPj4+Pj4+Pj4gSXQgdHVybnMgb3V0IHRoYXQgZWZpX21tIGlzIG9ubHkgZGVmaW5lZCB3aGVu IENPTkZJR19FRkkgaXMgZW5hYmxlZCBJCj4+Pj4+Pj4+IGNhbiBkbwo+Pj4+Pj4+PiB0aGlzOgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiByZXR1cm4gbW0gIT0gJmluaXRfbW0gJiYgKCFJU19FTkFCTEVEKENP TkZJR19FRkkpIHx8IG1tICE9ICZlZmlfbW0pOwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJcyB0aGF0IGFj Y2VwdGFibGU/IFRoaXMgaXMgbXkgcHJlZmVyZW5jZSwgYnV0IG5vdGhpbmcgZWxzZSBvdXRzaWRl IG9mIGVmaQo+Pj4+Pj4+PiByZWZlcmVuY2VzIHRoaXMgc3ltYm9sIGN1cnJlbnRseS4KPj4+Pj4+ Pj4KPj4+Pj4+Pj4gT3IgcGVyaGFwcyBJIGNhbiBjb252aW5jZSBteXNlbGYgdGhhdCBpdHMgc2Fm ZSB0byB0cmVhdCBlZmlfbW0gbGlrZQo+Pj4+Pj4+PiB1c2Vyc3BhY2UuCj4+Pj4+Pj4+IFRoZXJl IGFyZSBhIGNvdXBsZSBvZiB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGdhcmFudGVlZCBmb3IgaXQg dG8gYmUgc2FmZToKPj4+Pj4+Pj4KPj4+Pj4+Pj4gwqDCoMKgwqAgLSBUaGUgUEZOcyBvZiBwcmVz ZW50IHB0ZXMgZWl0aGVyIG5lZWQgdG8gaGF2ZSBhbiBhc3NvY2lhdGVkIHN0cnVjdAo+Pj4+Pj4+ PiBwYWdlIG9yCj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoCBuZWVkIHRvIGhhdmUgdGhlIFBURV9TUEVD SUFMIGJpdCBzZXQgKGVpdGhlciBwdGVfbWtzcGVjaWFsKCkgb3IKPj4+Pj4+Pj4gwqDCoMKgwqDC oMKgIHB0ZV9ta2Rldm1hcCgpKQo+Pj4+Pj4+Pgo+Pj4+Pj4+PiDCoMKgwqDCoCAtIExpdmUgbWFw cGluZ3MgbXVzdCBlaXRoZXIgYmUgc3RhdGljIChubyBjaGFuZ2VzIHRoYXQgY291bGQgY2F1c2UK Pj4+Pj4+Pj4gZm9sZC91bmZvbGQKPj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIHdoaWxlIGxpdmUpIG9y IHRoZSBzeXN0ZW0gbXVzdCBiZSBhYmxlIHRvIHRvbGVyYXRlIGEgdGVtcG9yYXJ5IGZhdWx0Cj4+ Pj4+Pj4+Cj4+Pj4+Pj4+IE1hcmsgc3VnZ2VzdHMgZWZpX21tIGlzIG5vdCBtYW5pcHVsYXRlZCB3 aGlsZSBsaXZlLCBzbyB0aGF0IG1lZXRzIHRoZQo+Pj4+Pj4+PiBsYXR0ZXIKPj4+Pj4+Pj4gcmVx dWlyZW1lbnQsIGJ1dCBJJ20gbm90IHN1cmUgYWJvdXQgdGhlIGZvcm1lcj8KPj4+Pj4+Pgo+Pj4+ Pj4+IEkndmUgZ29uZSB0aHJvdWdoIGFsbCB0aGUgZWZpIGNvZGUsIGFuZCBjb25jbHVkZSB0aGF0 LCBhcyBNYXJrIHN1Z2dlc3RzLCB0aGUKPj4+Pj4+PiBtYXBwaW5ncyBhcmUgaW5kZWVkIHN0YXRp Yy4gQW5kIGFkZGl0aW9uYWxseSwgdGhlIHB0ZXMgYXJlIHBvcHVsYXRlZAo+Pj4+Pj4+IHVzaW5n IG9ubHkKPj4+Pj4+PiB0aGUgX3ByaXZhdGVfIHB0ZXAgQVBJLCBzbyB0aGVyZSBpcyBubyBpc3N1 ZSBoZXJlLiBBcyBqdXN0IGRpc2N1c3NlZCB3aXRoCj4+Pj4+Pj4gTWFyaywKPj4+Pj4+PiBteSBw cmVmZXJlZW5jZSBpcyB0byBub3QgbWFrZSBhbnkgY2hhbmdlcyB0byBjb2RlLCBhbmQganVzdCBh ZGQgYSBjb21tZW50Cj4+Pj4+Pj4gZGVzY3JpYmluZyB3aHkgZWZpX21tIGlzIHNhZmUuCj4+Pj4+ Pj4KPj4+Pj4+PiBEZXRhaWxzOgo+Pj4+Pj4+Cj4+Pj4+Pj4gKiBSZWdpc3RlcmVkIHdpdGggcHRk dW1wCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgICogcHRlcF9nZXRfbG9ja2xlc3MoKQo+Pj4+Pj4+ICog ZWZpX2NyZWF0ZV9tYXBwaW5nIC0+IGNyZWF0ZV9wZ2RfbWFwcGluZyDigKYgLT4gaW5pdF9wdGU6 Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgICogX19wdGVwX2dldCgpCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg ICogX19zZXRfcHRlKCkKPj4+Pj4+PiAqIGVmaV9tZW1hdHRyX2FwcGx5X3Blcm1pc3Npb25zIC0+ IGVmaV9zZXRfbWFwcGluZ19wZXJtaXNzaW9ucyDigKYgLT4KPj4+Pj4+PiBzZXRfcGVybWlzc2lv bnMKPj4+Pj4+PiDCoMKgwqDCoMKgwqAgKiBfX3B0ZXBfZ2V0KCkKPj4+Pj4+PiDCoMKgwqDCoMKg wqAgKiBfX3NldF9wdGUoKQo+Pj4+Pj4KPj4+Pj4+IFNvdW5kIGdvb2QuIFdlIGNvdWxkIGFkZCBz b21lIFZNX1dBUk5fT04gaWYgd2UgZXZlciBnZXQgdGhlIGVmaV9tbSB2aWEgdGhlCj4+Pj4+PiAi b2ZmaWNpYWwiIEFQSXMuCj4+Pj4+Cj4+Pj4+IFdlIGNvdWxkLCBidXQgdGhhdCB3b3VsZCBsZWFk IHRvIHRoZSBzYW1lIGxpbmthZ2UgaXNzdWUsIHdoaWNoIEknbSB0cnlpbmcgdG8KPj4+Pj4gYXZv aWQgaW4gdGhlIGZpcnN0IHBsYWNlOgo+Pj4+Pgo+Pj4+PiBWTV9XQVJOX09OKElTX0VOQUJMRUQo Q09ORklHX0VGSSkgJiYgbW0gPT0gZWZpX21tKTsKPj4+Pj4KPj4+Pj4gVGhpcyBjcmVhdGVzIG5l dyBzb3VyY2UgY29kZSBkZXBlbmRlbmNpZXMsIHdoaWNoIEkgd291bGQgcmF0aGVyIGF2b2lkIGlm Cj4+Pj4+IHBvc3NpYmxlLgo+Pj4+Cj4+Pj4gSnVzdCBhIHRob3VnaHQsIHlvdSBjb3VsZCBoYXZl IGEgaXNfZWZpX21tKCkgZnVuY3Rpb24gdGhhdCBhYnN0cmFjdHMgYWxsIHRoYXQuCj4+Pj4KPj4+ PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9lZmkuaCBiL2luY2x1ZGUvbGludXgvZWZpLmgK Pj4+PiBpbmRleCBjNzRmNDc3MTFmMGIuLjE1MmY1ZmE2NmEyYSAxMDA2NDQKPj4+PiAtLS0gYS9p bmNsdWRlL2xpbnV4L2VmaS5oCj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9lZmkuaAo+Pj4+IEBA IC02OTIsNiArNjkyLDE1IEBAIGV4dGVybiBzdHJ1Y3QgZWZpIHsKPj4+Pgo+Pj4+IMKgIGV4dGVy biBzdHJ1Y3QgbW1fc3RydWN0IGVmaV9tbTsKPj4+Pgo+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQg aXNfZWZpX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+Pj4+ICt7Cj4+Pj4gKyNpZmRlZiBDT05G SUdfRUZJCj4+Pj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gbW0gPT0gJmVmaV9tbTsKPj4+PiArI2Vs c2UKPj4+PiArwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4+PiArI2VuZGlmCj4+Pj4gK30K Pj4+PiArCj4+Pj4gwqAgc3RhdGljIGlubGluZSBpbnQKPj4+PiDCoCBlZmlfZ3VpZGNtcCAoZWZp X2d1aWRfdCBsZWZ0LCBlZmlfZ3VpZF90IHJpZ2h0KQo+Pj4+IMKgIHsKPj4+Pgo+Pj4+Cj4+Pgo+ Pj4gVGhhdCB3b3VsZCBkZWZpbml0ZWx5IHdvcmssIGJ1dCBpbiB0aGF0IGNhc2UsIEkgbWlnaHQg YXMgd2VsbCBqdXN0IGNoZWNrIGZvciBpdAo+Pj4gaW4gbW1faXNfdXNlcigpIChhbmQgcGVyc29u YWxseSBJIHdvdWxkIGNoYW5nZSB0aGUgbmFtZSB0byBtbV9pc19lZmkoKSk6Cj4+Pgo+Pj4KPj4+ IHN0YXRpYyBpbmxpbmUgYm9vbCBtbV9pc191c2VyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+Pj4g ewo+Pj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gbW0gIT0gJmluaXRfbW0gJiYgIW1tX2lzX2Vm aShtbSk7Cj4+PiB9Cj4+Pgo+Pj4gQW55IG9iamVjdGlvbnM/Cj4+Pgo+Pgo+PiBBbnkgcmVhc29u IG5vdCB0byB1c2UgSVNfRU5BQkxFRChDT05GSUdfRUZJKSBpbiB0aGUgYWJvdmU/IFRoZSBleHRl cm4KPj4gZGVjbGFyYXRpb24gaXMgdmlzaWJsZSB0byB0aGUgY29tcGlsZXIsIGFuZCBhbnkgcmVm ZXJlbmNlcyBzaG91bGQKPj4gZGlzYXBwZWFyIGJlZm9yZSB0aGUgbGlua2VyIGNvdWxkIG5vdGlj ZSB0aGF0IGVmaV9tbSBkb2VzIG5vdCBleGlzdC4KPj4KPiAKPiBTdXJlLCBhcyBsb25nIGFzIHRo ZSBsaW5rZXIgaXMgaGFwcHkgd2h5IG5vdC4gSSdsbCBsZXQgUnlhbiBtZXNzIHdpdGggdGhhdCA6 KQoKSSdtIG5vdCBzdXJlIGlmIHlvdSBhcmUgc3VnZ2VzdGluZyBkcm9wcGluZyB0aGUgbW1faXNf ZWZpKCkgaGVscGVyIGFuZCBqdXN0IHVzZQpJU19FTkFCTEVEKENPTkZJR19FRkkpIGluIG1tX2lz X3VzZXIoKSB0byBndWFyZCBlZmlfbW0sIG9yIGlmIHlvdSBhcmUgc3VnZ2VzdGluZwp1c2luZyBJ U19FTkFCTEVEKENPTkZJR19FRkkpIGluIG1tX2lzX2VmaSgpIGluc3RlYWQgb2YgdGhlIGlmZGVm ZXJ5PwoKVGhlIGZvcm1lciB3YXMgd2hhdCBJIGRpZCBpbml0aWFsbHk7IEl0IHdvcmtzIGdyZWF0 LCBidXQgSSBkaWRuJ3QgbGlrZSB0aGF0IEkKd2FzIGludHJvZHVjaW5nIGEgbmV3IGNvZGUgZGVw ZW5kZWN5IGJldHdlZW4gZWZpIGFuZCBhcm02NCAobm90aGluZyBlbHNlIG91dHNpZGUKb2YgZWZp IHJlZmVyZW5jZXMgZWZpX21tKS4KClNvIHRoZW4gY29uY2x1ZGVkIHRoYXQgaXQgaXMgc2FmZSB0 byBub3Qgd29ycnkgYWJvdXQgZWZpX21tICh0aGFua3MgZm9yIHlvdXIKY29uZmlybWF0aW9uKS4g QnV0IHRoZW4gRGF2aWQgd2FudGVkIGEgVk1fV0FSTiBjaGVjaywgd2hpY2ggcmVpbnRyb2R1Y2Vz IHRoZQpjb2RlIGRlcGVuZGVuY3kuIFNvIGhlIHN1Z2dlc3RlZCB0aGUgbW1faXNfZWZpKCkgaGVs cGVyIHRvIGhpZGUgdGhhdC4uLiBUaGlzIGlzCmFsbCBzdGFydGluZyB0byBmZWVsIGNpcmN1bGFy Li4uCgpTaW5jZSBJJ3ZlIGpzdXQgdXBkYXRlZCB0aGUgY29kZSB0byBkbyBpdCBEYXZpZCdzIHdh eSwgSSBwcm9wb3NlIGxlYXZpbmcgaXQgYXMKaXMgc2luY2Ugbm9ib2R5IGhhcyBzdHJvbmcgZmVl bGluZ3MuCgo+IAo+PiBJbiBhbnkgY2FzZSwgZmVlbCBmcmVlIHRvIGFkZAo+Pgo+PiBBY2tlZC1i eTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4KCkdyZWF0IHRoYW5rcyEKCj4gCj4g VGhhbmtzIGZvciB0aGUgcmV2aWV3Lgo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK