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,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 04BBBC6369E for ; Wed, 18 Nov 2020 16:03:08 +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 7519B247C3 for ; Wed, 18 Nov 2020 16:03:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Dv3pl1Lz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7519B247C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com 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-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kSF2pScCN7OivZ0Pr/SV3A/ebIfw5v4ZcKLMOhQE+ec=; b=Dv3pl1Lz/AInWtMqf2m7STHcD 3OAdCIJwN+73+VFkSB9TYRS02uHc89NQ7xlrHDGJmDSQL0RzEWc53OfDuS33BVnNtQxkiuzlQVk57 mjFaIn2+6HQtMz8eN6fsINwJTeeK6+WUSgWjJ+nogn8dpwETe+1PsLWdkL3y+ADsxDZ3Za/A5+v2n GqaTGPNvc9s1QrFPD1Am1D3Mwm2lp2v6Ja+vcTmuSIa8SzRYR4NSL1tiZkncGR3AtDu9a0U/15/9x Iz1Qdo63VVpuJGja37zAO5HKfduf97IrDQXR4HPTphkU8y9cq3jgRpXy6iE51MLunvWVUJpDMCFlz 9p7x+IEIA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfPtr-0008M8-3W; Wed, 18 Nov 2020 16:01:39 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kfPtk-0008L6-Jr for linux-arm-kernel@lists.infradead.org; Wed, 18 Nov 2020 16:01:33 +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 34F7B1396; Wed, 18 Nov 2020 08:01:31 -0800 (PST) Received: from [192.168.1.179] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7793B3F7BB; Wed, 18 Nov 2020 08:01:28 -0800 (PST) Subject: Re: [PATCH v4 2/2] arm64: kvm: Introduce MTE VCPU feature To: Marc Zyngier References: <20201026155727.36685-1-steven.price@arm.com> <20201026155727.36685-3-steven.price@arm.com> <8507a92b4ba3bbc45814b7197bd4e2fb@kernel.org> From: Steven Price Message-ID: Date: Wed, 18 Nov 2020 16:01:23 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <8507a92b4ba3bbc45814b7197bd4e2fb@kernel.org> Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201118_110132_804488_5ABFAD97 X-CRM114-Status: GOOD ( 41.62 ) 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: Mark Rutland , Peter Maydell , "Dr. David Alan Gilbert" , Andrew Jones , Haibo Xu , Suzuki K Poulose , qemu-devel@nongnu.org, Catalin Marinas , Juan Quintela , Richard Henderson , linux-kernel@vger.kernel.org, Dave Martin , James Morse , linux-arm-kernel@lists.infradead.org, Thomas Gleixner , Will Deacon , kvmarm@lists.cs.columbia.edu, Julien Thierry Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTcvMTEvMjAyMCAxOTozNSwgTWFyYyBaeW5naWVyIHdyb3RlOgo+IEhpIFN0ZXZlbiwKPiAK PiBPbiAyMDIwLTEwLTI2IDE1OjU3LCBTdGV2ZW4gUHJpY2Ugd3JvdGU6Cj4+IEFkZCBhIG5ldyBW TSBmZWF0dXJlICdLVk1fQVJNX0NBUF9NVEUnIHdoaWNoIGVuYWJsZXMgbWVtb3J5IHRhZ2dpbmcK Pj4gZm9yIGEgVk0uIFRoaXMgZXhwb3NlcyB0aGUgZmVhdHVyZSB0byB0aGUgZ3Vlc3QgYW5kIGF1 dG9tYXRpY2FsbHkgdGFncwo+PiBtZW1vcnkgcGFnZXMgdG91Y2hlZCBieSB0aGUgVk0gYXMgUEdf bXRlX3RhZ2dlZCAoYW5kIGNsZWFycyB0aGUgdGFncwo+PiBzdG9yYWdlKSB0byBlbnN1cmUgdGhh dCB0aGUgZ3Vlc3QgY2Fubm90IHNlZSBzdGFsZSB0YWdzLCBhbmQgc28gdGhhdCB0aGUKPj4gdGFn cyBhcmUgY29ycmVjdGx5IHNhdmVkL3Jlc3RvcmVkIGFjcm9zcyBzd2FwLgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBTdGV2ZW4gUHJpY2UgPHN0ZXZlbi5wcmljZUBhcm0uY29tPgo+PiBSZXZpZXdlZC1i eTogQW5kcmV3IEpvbmVzIDxkcmpvbmVzQHJlZGhhdC5jb20+Cj4+IC0tLQo+PiDCoGFyY2gvYXJt NjQvaW5jbHVkZS9hc20va3ZtX2VtdWxhdGUuaCB8wqAgMyArKysKPj4gwqBhcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2t2bV9ob3N0LmjCoMKgwqAgfMKgIDMgKysrCj4+IMKgYXJjaC9hcm02NC9rdm0v YXJtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgOSArKysrKysrKysKPj4g wqBhcmNoL2FybTY0L2t2bS9tbXUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg MjAgKysrKysrKysrKysrKysrKysrKysKPj4gwqBhcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNiArKysrKy0KPj4gwqBpbmNsdWRlL3VhcGkvbGludXgv a3ZtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEgKwo+PiDCoDYgZmlsZXMgY2hhbmdl ZCwgNDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCj4+IGIvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9rdm1fZW11bGF0ZS5oCj4+IGluZGV4IDVlZjI2NjljY2Q2Yy4uNjZjMGQ5ZTdjMmI0IDEw MDY0NAo+PiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmgKPj4gKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCj4+IEBAIC03OSw2ICs3OSw5 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y3B1X3Jlc2V0X2hjcihzdHJ1Y3Qga3ZtX3ZjcHUgCj4+ ICp2Y3B1KQo+PiDCoMKgwqDCoCBpZiAoY3B1c19oYXZlX2NvbnN0X2NhcChBUk02NF9NSVNNQVRD SEVEX0NBQ0hFX1RZUEUpIHx8Cj4+IMKgwqDCoMKgwqDCoMKgwqAgdmNwdV9lbDFfaXNfMzJiaXQo dmNwdSkpCj4+IMKgwqDCoMKgwqDCoMKgwqAgdmNwdS0+YXJjaC5oY3JfZWwyIHw9IEhDUl9USUQy Owo+PiArCj4+ICvCoMKgwqAgaWYgKHZjcHUtPmt2bS0+YXJjaC5tdGVfZW5hYmxlZCkKPiAKPiBQ bGVhc2UgYWRkIGEgcHJlZGljYXRlICh2Y3B1X2hhc19tdGUoKSBvciBrdm1faGFzX210ZSgpPykg Zm9yIHRoaXMuCgpTdXJlCgo+PiArwqDCoMKgwqDCoMKgwqAgdmNwdS0+YXJjaC5oY3JfZWwyIHw9 IEhDUl9BVEE7Cj4+IMKgfQo+Pgo+PiDCoHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyAqdmNw dV9oY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9rdm1faG9zdC5oCj4+IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9z dC5oCj4+IGluZGV4IDk1YWI3MzQ1ZGNjOC4uY2Q5OTNhZWMwNDQwIDEwMDY0NAo+PiAtLS0gYS9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKPj4gKysrIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9rdm1faG9zdC5oCj4+IEBAIC0xMTgsNiArMTE4LDkgQEAgc3RydWN0IGt2bV9hcmNo IHsKPj4gwqDCoMKgwqDCoCAqLwo+PiDCoMKgwqDCoCB1bnNpZ25lZCBsb25nICpwbXVfZmlsdGVy Owo+PiDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcG11dmVyOwo+PiArCj4+ICvCoMKgwqAgLyogTWVt b3J5IFRhZ2dpbmcgRXh0ZW5zaW9uIGVuYWJsZWQgZm9yIHRoZSBndWVzdCAqLwo+PiArwqDCoMKg IGJvb2wgbXRlX2VuYWJsZWQ7Cj4+IMKgfTsKPj4KPj4gwqBzdHJ1Y3Qga3ZtX3ZjcHVfZmF1bHRf aW5mbyB7Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9hcm0uYyBiL2FyY2gvYXJtNjQv a3ZtL2FybS5jCj4+IGluZGV4IGY1NjEyMmVlZGZmYy4uN2VlOTNiY2FjMDE3IDEwMDY0NAo+PiAt LS0gYS9hcmNoL2FybTY0L2t2bS9hcm0uYwo+PiArKysgYi9hcmNoL2FybTY0L2t2bS9hcm0uYwo+ PiBAQCAtODksNiArODksMTIgQEAgaW50IGt2bV92bV9pb2N0bF9lbmFibGVfY2FwKHN0cnVjdCBr dm0gKmt2bSwKPj4gwqDCoMKgwqDCoMKgwqDCoCByID0gMDsKPj4gwqDCoMKgwqDCoMKgwqDCoCBr dm0tPmFyY2gucmV0dXJuX25pc3ZfaW9fYWJvcnRfdG9fdXNlciA9IHRydWU7Cj4+IMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSBLVk1fQ0FQX0FSTV9NVEU6Cj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAoIXN5c3RlbV9zdXBwb3J0c19tdGUoKSB8fCBrdm0tPmNyZWF0ZWRfdmNw dXMpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+IAo+IFlvdSBh bHNvIHdhbnQgdG8gYXZvaWQgMzJiaXQgZ3Vlc3RzLiBBbHNvLCB3aGF0IGlzIHRoZSByYXRpb25h bCBmb3IKCkludGVyZXN0aW5nIHBvaW50LCBob3dldmVyIGlmIEkgdW5kZXJzdGFuZCBjb3JyZWN0 bHkgdGhlIDMyIGJpdCBmbGFnIGlzIAphIFZDUFUgZmxhZy4gQW5kIGF0IHRoaXMgcG9pbnQga3Zt LT5jcmVhdGVkX3ZjcHVzPT0wLCBzbyBJIGRvbid0IGJlbGlldmUgCndlIGFjdHVhbGx5IGtub3cg d2hldGhlciB0aGUgZ3Vlc3QgaXMgMzIgYml0IG9yIG5vdCBhdCB0aGUgcG9pbnQgb2YgdGhpcyAK dGVzdC4gQW5kIHNpbmNlIHRoaXMgaXMgYSBwZXItVk0gZmxhZyBpdCBhY3R1YWxseSBjYW4gbWFr ZSBzZW5zZSBmb3IgYSAKaGV0ZXJvZ2VuZW91cyBWTSBpZiBhbnlvbmUgaXMgY3JhenkgZW5vdWdo IHRvIHdhbnQgc3VjaCBhIHRoaW5nLgoKPiB0aGlzIGJlaW5nIGEgVk0gY2FwYWJpbGl0eSBhcyBv cHBvc2VkIHRvIGEgQ1BVIGZlYXR1cmUsIHNpbWlsYXIKPiB0byBTVkUgYW5kIFBNVT8KCnYxL3Yy IGFjdHVhbGx5IGhhZCBpdCBhcyBhIENQVSBmZWF0dXJlLiBIb3dldmVyIHlvdSBuZWVkIGEgcGVy LVZNIGZsYWcgCnRvIGVuZm9yY2UgdGhlIHVzZSBvZiB0YWdnZWQgbWVtb3J5ICh0aGUgY29kZSBp biB1c2VyX21lbV9hYm9ydCgpIGJlbG93KS4KCj4+ICvCoMKgwqDCoMKgwqDCoCByID0gMDsKPj4g K8KgwqDCoMKgwqDCoMKgIGt2bS0+YXJjaC5tdGVfZW5hYmxlZCA9IHRydWU7Cj4+ICvCoMKgwqDC oMKgwqDCoCBicmVhazsKPj4gwqDCoMKgwqAgZGVmYXVsdDoKPj4gwqDCoMKgwqDCoMKgwqDCoCBy ID0gLUVJTlZBTDsKPj4gwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gQEAgLTIxMCw2ICsyMTYs OSBAQCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIAo+ PiBsb25nIGV4dCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+IMKgwqDCoMKgwqDCoMKgwqAg ciA9IDE7Cj4+IMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSBLVk1fQ0FQ X0FSTV9NVEU6Cj4+ICvCoMKgwqDCoMKgwqDCoCByID0gc3lzdGVtX3N1cHBvcnRzX210ZSgpOwo+ IAo+IFNhbWUgY29tbWVudCBhYm91dCAzMmJpdC4KCkFzIGFib3ZlLCB3ZSBkb24ndCBrbm93IGlm IHdlJ3JlIGxhdW5jaGluZyBhIDMyIGJpdCBndWVzdCBvciBub3QuCgo+PiArwqDCoMKgwqDCoMKg wqAgYnJlYWs7Cj4+IMKgwqDCoMKgIGNhc2UgS1ZNX0NBUF9TVEVBTF9USU1FOgo+PiDCoMKgwqDC oMKgwqDCoMKgIHIgPSBrdm1fYXJtX3B2dGltZV9zdXBwb3J0ZWQoKTsKPj4gwqDCoMKgwqDCoMKg wqDCoCBicmVhazsKPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL21tdS5jIGIvYXJjaC9h cm02NC9rdm0vbW11LmMKPj4gaW5kZXggMTlhYWNjN2Q2NGRlLi4zOGZlMjUzMTBjYTEgMTAwNjQ0 Cj4+IC0tLSBhL2FyY2gvYXJtNjQva3ZtL21tdS5jCj4+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL21t dS5jCj4+IEBAIC04NjIsNiArODYyLDI2IEBAIHN0YXRpYyBpbnQgdXNlcl9tZW1fYWJvcnQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LAo+PiBwaHlzX2FkZHJfdCBmYXVsdF9pcGEsCj4+IMKgwqDCoMKg IGlmICh2bWFfcGFnZXNpemUgPT0gUEFHRV9TSVpFICYmICFmb3JjZV9wdGUpCj4+IMKgwqDCoMKg wqDCoMKgwqAgdm1hX3BhZ2VzaXplID0gdHJhbnNwYXJlbnRfaHVnZXBhZ2VfYWRqdXN0KG1lbXNs b3QsIGh2YSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJnBmbiwgJmZhdWx0X2lwYSk7Cj4+ICsKPj4gK8KgwqDCoCAvKgo+ PiArwqDCoMKgwqAgKiBUaGUgb3RoZXJ3aXNlIHJlZHVuZGFudCB0ZXN0IGZvciBzeXN0ZW1fc3Vw cG9ydHNfbXRlKCkgYWxsb3dzIHRoZQo+PiArwqDCoMKgwqAgKiBjb2RlIHRvIGJlIGNvbXBpbGVk IG91dCB3aGVuIENPTkZJR19BUk02NF9NVEUgaXMgbm90IHByZXNlbnQuCj4+ICvCoMKgwqDCoCAq Lwo+PiArwqDCoMKgIGlmIChzeXN0ZW1fc3VwcG9ydHNfbXRlKCkgJiYga3ZtLT5hcmNoLm10ZV9l bmFibGVkICYmIAo+PiBwZm5fdmFsaWQocGZuKSkgewo+PiArwqDCoMKgwqDCoMKgwqAgLyoKPj4g K8KgwqDCoMKgwqDCoMKgwqAgKiBWTSB3aWxsIGJlIGFibGUgdG8gc2VlIHRoZSBwYWdlJ3MgdGFn cywgc28gd2UgbXVzdCBlbnN1cmUKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiB0aGV5IGhhdmUgYmVl biBpbml0aWFsaXNlZC4KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKg IHN0cnVjdCBwYWdlICpwYWdlID0gcGZuX3RvX3BhZ2UocGZuKTsKPj4gK8KgwqDCoMKgwqDCoMKg IGxvbmcgaSwgbnJfcGFnZXMgPSBjb21wb3VuZF9ucihwYWdlKTsKPj4gKwo+PiArwqDCoMKgwqDC oMKgwqAgLyogaWYgUEdfbXRlX3RhZ2dlZCBpcyBzZXQsIHRhZ3MgaGF2ZSBhbHJlYWR5IGJlZW4g Cj4+IGluaXRpYWxpc2VkICovCj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgbnJf cGFnZXM7IGkrKywgcGFnZSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghdGVz dF9hbmRfc2V0X2JpdChQR19tdGVfdGFnZ2VkLCAmcGFnZS0+ZmxhZ3MpKQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG10ZV9jbGVhcl9wYWdlX3RhZ3MocGFnZV9hZGRyZXNzKHBh Z2UpKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4gCj4gV2hhdCBhcmUgdGhl IHZpc2liaWxpdHkgcmVxdWlyZW1lbnRzIGZvciB0aGUgdGFncywgc3BlY2lhbGx5IGlmIHRoZQo+ IGd1ZXN0IGhhcyBpdHMgTU1VIG9mZj8gSXMgdGhlcmUgYW55IGNhY2hlIG1hbmFnZW1lbnQgdGhh dCBuZWVkcyB0bwo+IG9jY3VyPwoKSWYgdGhlIGd1ZXN0IGhhcyBpdHMgTU1VIG9mZiB0aGVuIHRo ZSBtZW1vcnkgd291bGQgYmUgdHJlYWQgYXMgVW50YWdnZWQgCmJ5IHRoZSBhcmNoaXRlY3R1cmUg KHRoZSBzdGFnZSAxIHBhZ2UgdGFibGUgbXVzdCBwcm92aWRlIHRoZSAndGFnZ2VkJyAKZmxhZyku IEFyY2hpdGVjdHVyYWxseSB0aGUgdGFnIGJpdHMgaGFuZGxlZCB0aGUgc2FtZSBhcyB0aGUgZGF0 YSBiaXRzIHNvIApubyBleHRyYS9kaWZmZXJlbnQgY2FjaGUgbWFuYWdlbWVudCBpcyByZXF1aXJl ZC4gVGhlIG9ubHkgZXhjZXB0aW9uIGluIAp0aGUgYXJjaGl0ZWN0dXJlIGlzIHRoYXQgdGhlIHRh ZyB2YWx1ZXMgYXJlIG9wdGlvbmFsbHkgZXhwb3NlZCBpbiB0aGUgCm5vcm1hbCBQQSBzcGFjZSAo aW4gYSBwb3RlbnRpYWxseSBub24tY29oZXJlbnQgd2F5KSAtIGJ1dCBpZiB0aGF0IGlzIHRoZSAK Y2FzZSB0aGF0IFBBIHNwYWNlIHNob3VsZG4ndCBiZSB0b3VjaGVkIGJ5IExpbnV4LgoKPiBBbm90 aGVyIHRoaW5nIGlzIGRldmljZS1saWtlIG1lbW9yeSB0aGF0IGlzIG1hbmFnZWQgYnkgdXNlcnNw YWNlLAo+IHN1Y2ggYXMgdGhlIFFFTVUgZW11bGF0ZWQgZmxhc2gsIGZvciB3aGljaCB0aGVyZSBh bHNvIG1pZ2h0IGJlIHRhZ3MuCj4gSG93IGlzIHRoYXQgZGVhbHQgd2l0aD8gSW4gZ2VuZXJhbCwg d2hhdCBhcmUgdGhlIGV4cGVjdGF0aW9ucyBmb3IKPiB0YWdzIG9uIG1lbW9yeSBzaGFyZWQgYmV0 d2VlbiBob3N0IGFuZCBndWVzdD8gV2hvIG93bnMgdGhlbT8KCkFjdHVhbCBkZXZpY2UtbGlrZSBt ZW1vcnkgc2hvdWxkbid0IGJlIGV4cGVjdGVkIHRvIGhhdmUgdGFncyAtIHRoZXkgCndvdWxkbid0 IGhhdmUgdGFncyBvbiBhIHJlYWwgaG9zdC4KCkluIHRlcm1zIG9mIG1lbW9yeSBzaGFyZWQgYmV0 d2VlbiBob3N0IGFuZCBndWVzdCAtIHRoZSB0YWdzIGFyZSBhbHNvIApzaGFyZWQsIGVmZmVjdGl2 ZWx5IHRhZ3MgYXJlIGp1c3QgZGF0YS4gQ2xlYXJseSB0aGUgaG9zdCBhbmQgZ3Vlc3QgbmVlZCAK dG8gZGVjaWRlIGhvdyB0byBzaGFyZSB0aGUgdGFnIHNwYWNlLiBJbiBnZW5lcmFsIEkgd291bGQg ZXhwZWN0IHRoZSB0YWdzIAp0byBiZSBpZ25vcmVkIChhbmQgdGFnIGNoZWNraW5nIHRvIGJlIGRp c2FibGVkKSBpbiB0aG9zZSBzaGFyZWQgcmVnaW9ucy4gClNhZGx5IHRoZSBhcmNoaXRlY3R1cmUg ZG9lc24ndCBwcm92aWRlIGEgbWV0aG9kIHRvIHByZXZlbnQgdGhlIGd1ZXN0IAphY2Nlc3Npbmcg dGFncyBpbiBhIHJlZ2lvbiAod2l0aG91dCBhbHNvIGNyaXBwbGluZyBjYWNoZWFiaWxpdHkpLgoK VGhpcyBpcyBvbmUgb2YgdGhlIGFyZWFzIHRoYXQgaXMgcG90ZW50aWFsbHkgdHJpY2t5IGZvciBt aWdyYXRpb24gCmJlY2F1c2UgdGhlIFZNTSBtYXkgd2FudCB0byB1c2UgTVRFIGJ1dCBtdXN0IGRp c2FibGUgdGFnIGNoZWNraW5nIHdoaWxlIAp0b3VjaGluZyB0aGUgZ3Vlc3QncyBtZW1vcnkgYmVj YXVzZSB0aGUgZ3Vlc3QgbWF5IGJlIHVzaW5nIHRoZSB0YWcgCm1lbW9yeSBmb3IgaXQncyBvd24g cHVycG9zZXMuIFRoZXJlIGlzIHNvbWUgZGlzY3Vzc2lvbiBhYm91dCB0aGlzIGluIHRoZSAKY292 ZXIgbGV0dGVyIG9mIHYyOgoKaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcva3ZtYXJtLzIwMjAwOTA0 MTYwMDE4LjI5NDgxLTEtc3RldmVuLnByaWNlQGFybS5jb20vClRoYW5rcywKClN0ZXZlCgo+PiAr Cj4+IMKgwqDCoMKgIGlmICh3cml0YWJsZSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgIHByb3QgfD0g S1ZNX1BHVEFCTEVfUFJPVF9XOwo+PiDCoMKgwqDCoMKgwqDCoMKgIGt2bV9zZXRfcGZuX2RpcnR5 KHBmbik7Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jIGIvYXJjaC9h cm02NC9rdm0vc3lzX3JlZ3MuYwo+PiBpbmRleCA0MzBlMzZlMWExM2QuLjM1YTNkYzQ0ODIzMSAx MDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYwo+PiArKysgYi9hcmNoL2Fy bTY0L2t2bS9zeXNfcmVncy5jCj4+IEBAIC0xMTMyLDcgKzExMzIsOCBAQCBzdGF0aWMgdTY0IHJl YWRfaWRfcmVnKGNvbnN0IHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFybTY0X2dldF9zcGVjdHJlX3YyX3N0YXRlKCkgPT0gU1BFQ1RSRV9VTkFGRkVD VEVEKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsIHw9ICgxVUwgPDwgSURfQUE2NFBG UjBfQ1NWMl9TSElGVCk7Cj4+IMKgwqDCoMKgIH0gZWxzZSBpZiAoaWQgPT0gU1lTX0lEX0FBNjRQ RlIxX0VMMSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgdmFsICY9IH4oMHhmVUwgPDwgSURfQUE2NFBG UjFfTVRFX1NISUZUKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICghdmNwdS0+a3ZtLT5hcmNoLm10 ZV9lbmFibGVkKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2YWwgJj0gfigweGZVTCA8PCBJ RF9BQTY0UEZSMV9NVEVfU0hJRlQpOwo+PiDCoMKgwqDCoCB9IGVsc2UgaWYgKGlkID09IFNZU19J RF9BQTY0SVNBUjFfRUwxICYmICF2Y3B1X2hhc19wdHJhdXRoKHZjcHUpKSB7Cj4+IMKgwqDCoMKg wqDCoMKgwqAgdmFsICY9IH4oKDB4ZlVMIDw8IElEX0FBNjRJU0FSMV9BUEFfU0hJRlQpIHwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4ZlVMIDw8IElEX0FBNjRJU0FSMV9BUElfU0hJ RlQpIHwKPj4gQEAgLTEzOTQsNiArMTM5NSw5IEBAIHN0YXRpYyBib29sIGFjY2Vzc19tdGVfcmVn cyhzdHJ1Y3Qga3ZtX3ZjcHUKPj4gKnZjcHUsIHN0cnVjdCBzeXNfcmVnX3BhcmFtcyAqcCwKPj4g wqBzdGF0aWMgdW5zaWduZWQgaW50IG10ZV92aXNpYmlsaXR5KGNvbnN0IHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qg c3RydWN0IHN5c19yZWdfZGVzYyAqcmQpCj4+IMKgewo+PiArwqDCoMKgIGlmICh2Y3B1LT5rdm0t PmFyY2gubXRlX2VuYWJsZWQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gKwo+PiDC oMKgwqDCoCByZXR1cm4gUkVHX0hJRERFTl9VU0VSIHwgUkVHX0hJRERFTl9HVUVTVDsKPj4gwqB9 Cj4+Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3Vh cGkvbGludXgva3ZtLmgKPj4gaW5kZXggY2E0MTIyMGI0MGI4Li4zZTZmYjViNTgwYTkgMTAwNjQ0 Cj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaAo+PiArKysgYi9pbmNsdWRlL3VhcGkv bGludXgva3ZtLmgKPj4gQEAgLTEwNTMsNiArMTA1Myw3IEBAIHN0cnVjdCBrdm1fcHBjX3Jlc2l6 ZV9ocHQgewo+PiDCoCNkZWZpbmUgS1ZNX0NBUF9YODZfVVNFUl9TUEFDRV9NU1IgMTg4Cj4+IMKg I2RlZmluZSBLVk1fQ0FQX1g4Nl9NU1JfRklMVEVSIDE4OQo+PiDCoCNkZWZpbmUgS1ZNX0NBUF9F TkZPUkNFX1BWX0ZFQVRVUkVfQ1BVSUQgMTkwCj4+ICsjZGVmaW5lIEtWTV9DQVBfQVJNX01URSAx OTEKPj4KPj4gwqAjaWZkZWYgS1ZNX0NBUF9JUlFfUk9VVElORwo+IAo+IFRoYW5rcywKPiAKPiAg wqDCoMKgwqDCoMKgwqAgTS4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==