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 7A528C46CA2 for ; Tue, 19 Dec 2023 17:42:54 +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=Z9V4LnHGGLRbWpo8C1fgzSM/ZnT6EzsVMCLYENwd2YI=; b=GWET4roXE7AQ5Z XiNGu/qU6qKhQuB/nLYsZCOjHQkCRG3KpvFUF+FotvHbhuHWtll2dR0nXo+qfTWTEvehjXfQLe8JR nWV6ZmBD8w+5zmF6IKoUcGLsF3h3GjNygKsnwhHFk7xjWjYTwjscdPKTlmIm5f3yEf3/4lzh0fMJy wfbU9VXIvjkEgztZXXYI9883gl3xxokA7Cvcr3UMbkOhGVdmPtWxXR5q0WensxFOuMaJZpS1yR24M /4hl/77XIyNIaKu2hwxGSCIE4YWmPq4juyEq3tVKBjTFn+YJmUUt6HfGmkF7GYZf6/T2kIyzNxVAu QUXkR5m29DhlEuORWMrg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFe6s-00Ezu4-0r; Tue, 19 Dec 2023 17:42:26 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFe6o-00EzsJ-2k for linux-arm-kernel@lists.infradead.org; Tue, 19 Dec 2023 17:42:24 +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 714CB1FB; Tue, 19 Dec 2023 09:43:05 -0800 (PST) Received: from [10.1.32.152] (XHFQ2J9959.cambridge.arm.com [10.1.32.152]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CB7973F738; Tue, 19 Dec 2023 09:42:17 -0800 (PST) Message-ID: Date: Tue, 19 Dec 2023 17:42:16 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 02/16] mm: Batch-copy PTE ranges during fork() Content-Language: en-GB To: David Hildenbrand , Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland , Kefeng Wang , John Hubbard , Zi Yan , Barry Song <21cnbao@gmail.com>, Alistair Popple , Yang Shi Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231218105100.172635-1-ryan.roberts@arm.com> <20231218105100.172635-3-ryan.roberts@arm.com> <0bef5423-6eea-446b-8854-980e9c23a948@redhat.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231219_094222_980847_E13F3D70 X-CRM114-Status: GOOD ( 38.01 ) 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 T24gMTkvMTIvMjAyMyAxNzoyMiwgRGF2aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4gT24gMTkuMTIu MjMgMDk6MzAsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4gT24gMTgvMTIvMjAyMyAxNzo0NywgRGF2 aWQgSGlsZGVuYnJhbmQgd3JvdGU6Cj4+PiBPbiAxOC4xMi4yMyAxMTo1MCwgUnlhbiBSb2JlcnRz IHdyb3RlOgo+Pj4+IENvbnZlcnQgY29weV9wdGVfcmFuZ2UoKSB0byBjb3B5IGEgYmF0Y2ggb2Yg cHRlcyBpbiBvbmUgZ28uIEEgZ2l2ZW4KPj4+PiBiYXRjaCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBh cmNoaXRlY3R1cmUgd2l0aCB0aGUgbmV3IGhlbHBlciwKPj4+PiBwdGVfYmF0Y2hfcmVtYWluaW5n KCksIGFuZCBtYXBzIGEgcGh5c2ljYWxseSBjb250aWd1b3VzIGJsb2NrIG9mIG1lbW9yeSwKPj4+ PiBhbGwgYmVsb25naW5nIHRvIHRoZSBzYW1lIGZvbGlvLiBBIHB0ZSBiYXRjaCBpcyB0aGVuIHdy aXRlLXByb3RlY3RlZCBpbgo+Pj4+IG9uZSBnbyBpbiB0aGUgcGFyZW50IHVzaW5nIHRoZSBuZXcg aGVscGVyLCBwdGVwX3NldF93cnByb3RlY3RzKCkgYW5kIGlzCj4+Pj4gc2V0IGluIG9uZSBnbyBp biB0aGUgY2hpbGQgdXNpbmcgdGhlIG5ldyBoZWxwZXIsIHNldF9wdGVzX2Z1bGwoKS4KPj4+Pgo+ Pj4+IFRoZSBwcmltYXJ5IG1vdGl2YXRpb24gZm9yIHRoaXMgY2hhbmdlIGlzIHRvIHJlZHVjZSB0 aGUgbnVtYmVyIG9mIHRsYgo+Pj4+IG1haW50ZW5hbmNlIG9wZXJhdGlvbnMgdGhhdCB0aGUgYXJt NjQgYmFja2VuZCBoYXMgdG8gcGVyZm9ybSBkdXJpbmcKPj4+PiBmb3JrLCBhcyBpdCBpcyBhYm91 dCB0byBhZGQgdHJhbnNwYXJlbnQgc3VwcG9ydCBmb3IgdGhlICJjb250aWd1b3VzIGJpdCIKPj4+ PiBpbiBpdHMgcHRlcy4gQnkgd3JpdGUtcHJvdGVjdGluZyB0aGUgcGFyZW50IHVzaW5nIHRoZSBu ZXcKPj4+PiBwdGVwX3NldF93cnByb3RlY3RzKCkgKG5vdGUgdGhlICdzJyBhdCB0aGUgZW5kKSBm dW5jdGlvbiwgdGhlIGJhY2tlbmQKPj4+PiBjYW4gYXZvaWQgaGF2aW5nIHRvIHVuZm9sZCBjb250 aWcgcmFuZ2VzIG9mIFBURXMsIHdoaWNoIGlzIGV4cGVuc2l2ZSwKPj4+PiB3aGVuIGFsbCBwdGVz IGluIHRoZSByYW5nZSBhcmUgYmVpbmcgd3JpdGUtcHJvdGVjdGVkLiBTaW1pbGFybHksIGJ5Cj4+ Pj4gdXNpbmcgc2V0X3B0ZXNfZnVsbCgpIHJhdGhlciB0aGFuIHNldF9wdGVfYXQoKSB0byBzZXQg dXAgcHRlcyBpbiB0aGUKPj4+PiBjaGlsZCwgdGhlIGJhY2tlbmQgZG9lcyBub3QgbmVlZCB0byBm b2xkIGEgY29udGlndW91cyByYW5nZSBvbmNlIHRoZXkKPj4+PiBhcmUgYWxsIHBvcHVsYXRlZCAt IHRoZXkgY2FuIGJlIGluaXRpYWxseSBwb3B1bGF0ZWQgYXMgYSBjb250aWd1b3VzCj4+Pj4gcmFu Z2UgaW4gdGhlIGZpcnN0IHBsYWNlLgo+Pj4+Cj4+Pj4gVGhpcyBjb2RlIGlzIHZlcnkgcGVyZm9y bWFuY2Ugc2Vuc2l0aXZlLCBhbmQgYSBzaWduaWZpY2FudCBhbW91bnQgb2YKPj4+PiBlZmZvcnQg aGFzIGJlZW4gcHV0IGludG8gbm90IHJlZ3Jlc3NpbmcgcGVyZm9ybWFuY2UgZm9yIHRoZSBvcmRl ci0wCj4+Pj4gZm9saW8gY2FzZS4gQnkgZGVmYXVsdCwgcHRlX2JhdGNoX3JlbWFpbmluZygpIGlz IGNvbXBpbGUgY29uc3RhbnQgMSwKPj4+PiB3aGljaCBlbmFibGVzIHRoZSBjb21waWxlciB0byBz aW1wbGlmeSB0aGUgZXh0cmEgbG9vcHMgdGhhdCBhcmUgYWRkZWQKPj4+PiBmb3IgYmF0Y2hpbmcg YW5kIHByb2R1Y2UgY29kZSB0aGF0IGlzIGVxdWl2YWxlbnQgKGFuZCBlcXVhbGx5Cj4+Pj4gcGVy Zm9ybWFudCkgYXMgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLgo+Pj4+Cj4+Pj4gVGhpcyBj aGFuZ2UgYWRkcmVzc2VzIHRoZSBjb3JlLW1tIHJlZmFjdG9yaW5nIG9ubHkgYW5kIGEgc2VwYXJh dGUgY2hhbmdlCj4+Pj4gd2lsbCBpbXBsZW1lbnQgcHRlX2JhdGNoX3JlbWFpbmluZygpLCBwdGVw X3NldF93cnByb3RlY3RzKCkgYW5kCj4+Pj4gc2V0X3B0ZXNfZnVsbCgpIGluIHRoZSBhcm02NCBi YWNrZW5kIHRvIHJlYWxpemUgdGhlIHBlcmZvcm1hbmNlCj4+Pj4gaW1wcm92ZW1lbnQgYXMgcGFy dCBvZiB0aGUgd29yayB0byBlbmFibGUgY29udHB0ZSBtYXBwaW5ncy4KPj4+Pgo+Pj4+IFRvIGVu c3VyZSB0aGUgYXJtNjQgaXMgcGVyZm9ybWFudCBvbmNlIGltcGxlbWVudGVkLCB0aGlzIGNoYW5n ZSBpcyB2ZXJ5Cj4+Pj4gY2FyZWZ1bCB0byBvbmx5IGNhbGwgcHRlcF9nZXQoKSBvbmNlIHBlciBw dGUgYmF0Y2guCj4+Pj4KPj4+PiBUaGUgZm9sbG93aW5nIG1pY3JvYmVuY2htYXJrIHJlc3VsdHMg ZGVtb25zdGF0ZSB0aGF0IHRoZXJlIGlzIG5vCj4+Pj4gc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2Ug Y2hhbmdlIGFmdGVyIHRoaXMgcGF0Y2guIEZvcmsgaXMgY2FsbGVkIGluIGEKPj4+PiB0aWdodCBs b29wIGluIGEgcHJvY2VzcyB3aXRoIDFHIG9mIHBvcHVsYXRlZCBtZW1vcnkgYW5kIHRoZSB0aW1l IGZvciB0aGUKPj4+PiBmdW5jdGlvbiB0byBleGVjdXRlIGlzIG1lYXN1cmVkLiAxMDAgaXRlcmF0 aW9ucyBwZXIgcnVuLCA4IHJ1bnMKPj4+PiBwZXJmb3JtZWQgb24gYm90aCBBcHBsZSBNMiAoVk0p IGFuZCBBbXBlcmUgQWx0cmEgKGJhcmUgbWV0YWwpLiBUZXN0cwo+Pj4+IHBlcmZvcm1lZCBmb3Ig Y2FzZSB3aGVyZSAxRyBtZW1vcnkgaXMgY29tcHJpc2VkIG9mIG9yZGVyLTAgZm9saW9zIGFuZAo+ Pj4+IGNhc2Ugd2hlcmUgY29tcHJpc2VkIG9mIHB0ZS1tYXBwZWQgb3JkZXItOSBmb2xpb3MuIE5l Z2F0aXZlIGlzIGZhc3RlciwKPj4+PiBwb3NpdGl2ZSBpcyBzbG93ZXIsIGNvbXBhcmVkIHRvIGJh c2VsaW5lIHVwb24gd2hpY2ggdGhlIHNlcmllcyBpcyBiYXNlZDoKPj4+Pgo+Pj4+IHwgQXBwbGUg TTIgVk3CoMKgIHwgb3JkZXItMCAocHRlLW1hcCkgfCBvcmRlci05IChwdGUtbWFwKSB8Cj4+Pj4g fCBmb3JrwqDCoMKgwqDCoMKgwqDCoMKgIHwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t LS0tLS0tLS18Cj4+Pj4gfCBtaWNyb2JlbmNowqDCoMKgIHzCoMKgwqAgbWVhbiB8wqDCoCBzdGRl diB8wqDCoMKgIG1lYW4gfMKgwqAgc3RkZXYgfAo+Pj4+IHwtLS0tLS0tLS0tLS0tLS18LS0tLS0t LS0tfC0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfAo+Pj4+IHwgYmFzZWxpbmXCoMKgwqDC oMKgIHzCoMKgwqAgMC4wJSB8wqDCoMKgIDEuMSUgfMKgwqDCoCAwLjAlIHzCoMKgwqAgMS4yJSB8 Cj4+Pj4gfCBhZnRlci1jaGFuZ2XCoCB8wqDCoCAtMS4wJSB8wqDCoMKgIDIuMCUgfMKgwqAgLTAu MSUgfMKgwqDCoCAxLjElIHwKPj4+Pgo+Pj4+IHwgQW1wZXJlIEFsdHJhwqAgfCBvcmRlci0wIChw dGUtbWFwKSB8IG9yZGVyLTkgKHB0ZS1tYXApIHwKPj4+PiB8IGZvcmvCoMKgwqDCoMKgwqDCoMKg wqAgfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwKPj4+PiB8IG1pY3Jv YmVuY2jCoMKgwqAgfMKgwqDCoCBtZWFuIHzCoMKgIHN0ZGV2IHzCoMKgwqAgbWVhbiB8wqDCoCBz dGRldiB8Cj4+Pj4gfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0t LXwtLS0tLS0tLS18Cj4+Pj4gfCBiYXNlbGluZcKgwqDCoMKgwqAgfMKgwqDCoCAwLjAlIHzCoMKg wqAgMS4wJSB8wqDCoMKgIDAuMCUgfMKgwqDCoCAwLjElIHwKPj4+PiB8IGFmdGVyLWNoYW5nZcKg IHzCoMKgIC0wLjElIHzCoMKgwqAgMS4yJSB8wqDCoCAtMC4xJSB8wqDCoMKgIDAuMSUgfAo+Pj4+ Cj4+Pj4gVGVzdGVkLWJ5OiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+Cj4+Pj4g UmV2aWV3ZWQtYnk6IEFsaXN0YWlyIFBvcHBsZSA8YXBvcHBsZUBudmlkaWEuY29tPgo+Pj4+IFNp Z25lZC1vZmYtYnk6IFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2JlcnRzQGFybS5jb20+Cj4+Pj4gLS0t Cj4+Pj4gwqDCoCBpbmNsdWRlL2xpbnV4L3BndGFibGUuaCB8IDgwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4+Pj4gwqDCoCBtbS9tZW1vcnkuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4+ Pj4gwqDCoCAyIGZpbGVzIGNoYW5nZWQsIDEzOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMo LSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BndGFibGUuaCBiL2luY2x1 ZGUvbGludXgvcGd0YWJsZS5oCj4+Pj4gaW5kZXggYWY3NjM5YzNiMGEzLi5kYjkzZmI4MTQ2NWEg MTAwNjQ0Cj4+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKPj4+PiArKysgYi9pbmNs dWRlL2xpbnV4L3BndGFibGUuaAo+Pj4+IEBAIC0yMDUsNiArMjA1LDI3IEBAIHN0YXRpYyBpbmxp bmUgaW50IHBtZF95b3VuZyhwbWRfdCBwbWQpCj4+Pj4gwqDCoCAjZGVmaW5lIGFyY2hfZmx1c2hf bGF6eV9tbXVfbW9kZSgpwqDCoMKgIGRvIHt9IHdoaWxlICgwKQo+Pj4+IMKgwqAgI2VuZGlmCj4+ Pj4gwqDCoCArI2lmbmRlZiBwdGVfYmF0Y2hfcmVtYWluaW5nCj4+Pj4gKy8qKgo+Pj4+ICsgKiBw dGVfYmF0Y2hfcmVtYWluaW5nIC0gTnVtYmVyIG9mIHBhZ2VzIGZyb20gYWRkciB0byBuZXh0IGJh dGNoIGJvdW5kYXJ5Lgo+Pj4+ICsgKiBAcHRlOiBQYWdlIHRhYmxlIGVudHJ5IGZvciB0aGUgZmly c3QgcGFnZS4KPj4+PiArICogQGFkZHI6IEFkZHJlc3Mgb2YgdGhlIGZpcnN0IHBhZ2UuCj4+Pj4g KyAqIEBlbmQ6IEJhdGNoIGNlaWxpbmcgKGUuZy4gZW5kIG9mIHZtYSkuCj4+Pj4gKyAqCj4+Pj4g KyAqIFNvbWUgYXJjaGl0ZWN0dXJlcyAoYXJtNjQpIGNhbiBlZmZpY2llbnRseSBtb2RpZnkgYSBj b250aWd1b3VzIGJhdGNoIG9mCj4+Pj4gcHRlcy4KPj4+PiArICogSW4gc3VjaCBjYXNlcywgdGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIHBhZ2VzIHRvCj4+Pj4g dGhlIGVuZAo+Pj4+ICsgKiBvZiB0aGUgY3VycmVudCBiYXRjaCwgYXMgZGVmaW5lZCBieSBhZGRy LiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiBpdGVyYXRpbmcKPj4+PiArICogb3ZlciBwdGVzLgo+ Pj4+ICsgKgo+Pj4+ICsgKiBNYXkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgYXJjaGl0ZWN0dXJlLCBl bHNlIGJhdGNoIHNpemUgaXMgYWx3YXlzIDEuCj4+Pj4gKyAqLwo+Pj4+ICtzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGludCBwdGVfYmF0Y2hfcmVtYWluaW5nKHB0ZV90IHB0ZSwgdW5zaWduZWQgbG9u ZyBhZGRyLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHVuc2lnbmVkIGxvbmcgZW5kKQo+Pj4+ICt7Cj4+Pj4gK8KgwqDCoCByZXR1cm4gMTsKPj4+ PiArfQo+Pj4+ICsjZW5kaWYKPj4+Cj4+PiBJdCdzIGEgc2hhbWUgd2Ugbm93IGxvc2UgdGhlIG9w dGltaXphdGlvbiBmb3IgYWxsIG90aGVyIGFyY2h0aWVjdHVyZXMuCj4+Pgo+Pj4gV2FzIHRoZXJl IG5vIHdheSB0byBoYXZlIHNvbWUgYmFzaWMgYmF0Y2hpbmcgbWVjaGFuaXNtIHRoYXQgZG9lc24n dCByZXF1aXJlIGFyY2gKPj4+IHNwZWNpZmljcz8KPj4KPj4gSSB0cmllZCBhIGJ1bmNoIG9mIHRo aW5ncyBidXQgdWx0aW1hdGVseSB0aGUgd2F5IEkndmUgZG9uZSBpdCB3YXMgdGhlIG9ubHkgd2F5 Cj4+IHRvIHJlZHVjZSB0aGUgb3JkZXItMCBmb3JrIHJlZ3Jlc3Npb24gdG8gMC4KPj4KPj4gTXkg b3JpZ2luYWwgdjMgcG9zdGluZyB3YXMgY29zdGluZyA1JSBleHRyYSBhbmQgZXZlbiBteSBmaXJz dCBhdHRlbXB0IGF0IGFuCj4+IGFyY2gtc3BlY2lmaWMgdmVyc2lvbiB0aGF0IGRpZG4ndCByZXNv bHZlIHRvIGEgY29tcGlsZS10aW1lIGNvbnN0YW50IDEgc3RpbGwKPj4gY29zdCBhbiBleHRyYSAz JS4KPj4KPj4KPj4+Cj4+PiBJJ2QgaGF2ZSB0aG91Z2h0IHRoYXQgc29tZXRoaW5nIHZlcnkgYmFz aWMgd291bGQgaGF2ZSB3b3JrZWQgbGlrZToKPj4+Cj4+PiAqIENoZWNrIGlmIFBURSBpcyB0aGUg c2FtZSB3aGVuIHNldHRpbmcgdGhlIFBGTiB0byAwLgo+Pj4gKiBDaGVjayB0aGF0IFBGTiBpcyBj b25zZWN1dGl2ZQo+Pj4gKiBDaGVjayB0aGF0IGFsbCBQRk5zIGJlbG9uZyB0byB0aGUgc2FtZSBm b2xpbwo+Pgo+PiBJIGhhdmVuJ3QgdHJpZWQgdGhpcyBleGFjdCBhcHByb2FjaCwgYnV0IEknZCBi ZSBzdXJwcmlzZWQgaWYgSSBjYW4gZ2V0IHRoZQo+PiByZWdyZXNzaW9uIHVuZGVyIDQlIHdpdGgg dGhpcy4gRnVydGhlciBhbG9uZyB0aGUgc2VyaWVzIEkgc3BlbnQgYSBsb3Qgb2YgdGltZQo+PiBo YXZpbmcgdG8gZmlkZGxlIHdpdGggdGhlIGFybTY0IGltcGxlbWVudGF0aW9uOyBldmVyeSBjb25k aXRpb25hbCBhbmQgZXZlcnkKPj4gbWVtb3J5IHJlYWQgKGV2ZW4gd2hlbiBpbiBjYWNoZSkgd2Fz IGEgcHJvYmxlbS4gVGhlcmUgaXMganVzdCBzbyBsaXR0bGUgaW4gdGhlCj4+IGlubmVyIGxvb3Ag dGhhdCBldmVyeSBpbnN0cnVjdGlvbiBtYXR0ZXJzLiAoQXQgbGVhc3Qgb24gQW1wZXJlIEFsdHJh IGFuZCBBcHBsZQo+PiBNMikuCj4+Cj4+IE9mIGNvdXJzZSBpZiB5b3UncmUgd2lsbGluZyB0byBw YXkgdGhhdCA0LTUlIGZvciBvcmRlci0wIHRoZW4gdGhlIGJlbmVmaXQgdG8KPj4gb3JkZXItOSBp cyBhcm91bmQgMTAlIGluIG15IG1lYXN1cmVtZW50cy4gUGVyc29uYWxseSB0aG91Z2gsIEknZCBw cmVmZXIgdG8gcGxheQo+PiBzYWZlIGFuZCBlbnN1cmUgdGhlIGNvbW1vbiBvcmRlci0wIGNhc2Ug ZG9lc24ndCByZWdyZXNzLCBhcyB5b3UgcHJldmlvdXNseQo+PiBzdWdnZXN0ZWQuCj4+Cj4gCj4g SSBqdXN0IGhhY2tlZCBzb21ldGhpbmcgdXAsIG9uIHRvcCBvZiBteSBiZWxvdmVkIHJtYXAgY2xl YW51cC9iYXRjaGluZyBzZXJpZXMuIEkKPiBpbXBsZW1lbnRlZCB2ZXJ5IGdlbmVyaWMgYW5kIHNp bXBsZSBiYXRjaGluZyBmb3IgbGFyZ2UgZm9saW9zIChhbGwgUFRFIGJpdHMKPiBleGNlcHQgdGhl IFBGTiBoYXZlIHRvIG1hdGNoKS4KPiAKPiBTb21lIHZlcnkgcXVpY2sgdGVzdGluZyAoZG9uJ3Qg dHJ1c3QgZWFjaCBsYXN0ICUgKSBvbiBJbnRlbChSKSBYZW9uKFIpIFNpbHZlcgo+IDQyMTBSIENQ VS4KPiAKPiBvcmRlci0wOiAwLjAxNDIxMCAtPiAwLjAxMzk2OQo+IAo+IC0+IEFyb3VuZCAxLjcg JSBmYXN0ZXIKPiAKPiBvcmRlci05OiAwLjAxNDM3MyAtPiAwLjAwOTE0OQo+IAo+IC0+IEFyb3Vu ZCAzNi4zICUgZmFzdGVyCgpXZWxsIEkgZ3Vlc3MgdGhhdCBzaG93cyBtZSA6KQoKSSdsbCBkbyBh IHJldmlldyBhbmQgcnVuIHRoZSB0ZXN0cyBvbiBteSBIVyB0byBzZWUgaWYgaXQgY29uY3Vycy4K Cj4gCj4gCj4gQnV0IGl0J3MgbGlrZWx5IGJ1Z2d5LCBzbyBkb24ndCB0cnVzdCB0aGUgbnVtYmVy cyBqdXN0IHlldC4gSWYgdGhleSBhY3R1YWxseQo+IGhvbGQgdXAsIHdlIHNob3VsZCBwcm9iYWJs eSBkbyBzb21ldGhpbmcgbGlrZSB0aGF0IGFoZWFkIG9mIHRpbWUsIGJlZm9yZSBhbGwgdGhlCj4g YXJtLXNwZWNpZmljIGNvbnQtcHRlIHdvcmsuCj4gCj4gSSBzdXNwZWN0IHlvdSBjYW4gZWFzaWx5 IGV4dGVuZCB0aGF0IGJ5IGFyY2ggaG9va3Mgd2hlcmUgcmVhc29uYWJsZS4KPiAKPiBUaGUgKDMp IHBhdGNoZXMgb24gdG9wIG9mIHRoZSBybWFwIGNsZWFudXBzIGNhbiBiZSBmb3VuZCBhdDoKPiAK PiDCoMKgwqDCoGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZpZGhpbGRlbmJyYW5kL2xpbnV4L3RyZWUv Zm9yay1iYXRjaGluZwo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK