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 9C71BC4345F for ; Mon, 22 Apr 2024 15:39:52 +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=Rg2uhDT6NNXttM4Pbp2hXIsQtswecfwoeiXjhO1CahA=; b=r2Mc5mm5FvBY35 sXqRgLbfKECOfoS2qn+q9YUnVD5lNo+SA2td/90llarmPQ9YvCkguYuj4ZyLGcC6WOW5P9NTktdrl dCNjO9Nb2Z+h11yzPzwcFjSRDOKE+3s3io9CYi2FiU76foz3/p998bXoRra8DvAVzLryhFvAabndj v7cp68Lw9IUW8UVhRjakN8IQLut5Wpfz2fYXqeMvqXV89t20MG1cWysusRSqWlAagpQHPRzzbTUh1 BZZY1sRmnBUZa5pDDB/cU9WGNb5CDTvNkKIaeg3QaX3Jyhs3CDzZyG06G/yeg+kPgP6dprcxaDazP cenuSCUdCtgDG3E9WqPA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1ryvlb-0000000E9QD-1Lnq; Mon, 22 Apr 2024 15:39:39 +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 1ryvlZ-0000000E9OC-07Kd for linux-arm-kernel@lists.infradead.org; Mon, 22 Apr 2024 15:39:38 +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 8B6AC339; Mon, 22 Apr 2024 08:40:02 -0700 (PDT) Received: from [10.57.54.223] (unknown [10.57.54.223]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E0E533F73F; Mon, 22 Apr 2024 08:39:30 -0700 (PDT) Message-ID: Date: Mon, 22 Apr 2024 16:39:32 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 07/43] arm64: RME: Check for RME support at KVM init To: Suzuki K Poulose , kvm@vger.kernel.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Marc Zyngier , Will Deacon , James Morse , Oliver Upton , Zenghui Yu , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Joey Gouly , Alexandru Elisei , Christoffer Dall , Fuad Tabba , linux-coco@lists.linux.dev, Ganapatrao Kulkarni References: <20240412084056.1733704-1-steven.price@arm.com> <20240412084309.1733783-1-steven.price@arm.com> <20240412084309.1733783-8-steven.price@arm.com> <37fa1ff5-9e94-4def-afd6-fb9ea9356977@arm.com> From: Steven Price Content-Language: en-GB In-Reply-To: <37fa1ff5-9e94-4def-afd6-fb9ea9356977@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240422_083937_194456_140BFBEA X-CRM114-Status: GOOD ( 36.02 ) 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 T24gMTYvMDQvMjAyNCAxNDozMCwgU3V6dWtpIEsgUG91bG9zZSB3cm90ZToKPiBIaSBTdGV2ZW4K PiAKPiBPbiAxMi8wNC8yMDI0IDA5OjQyLCBTdGV2ZW4gUHJpY2Ugd3JvdGU6Cj4+IFF1ZXJ5IHRo ZSBSTUkgdmVyc2lvbiBudW1iZXIgYW5kIGNoZWNrIGlmIGl0IGlzIGEgY29tcGF0aWJsZSB2ZXJz aW9uLiBBCj4+IHN0YXRpYyBrZXkgaXMgYWxzbyBwcm92aWRlZCB0byBzaWduYWwgdGhhdCBhIHN1 cHBvcnRlZCBSTU0gaXMgYXZhaWxhYmxlLgo+Pgo+PiBGdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRv IHF1ZXJ5IGlmIGEgVk0gb3IgVkNQVSBpcyBhIHJlYWxtIChvciByZWMpCj4+IHdoaWNoIGN1cnJl bnRseSB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFN0ZXZl biBQcmljZSA8c3RldmVuLnByaWNlQGFybS5jb20+Cj4+IC0tLQo+PiDCoCBhcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmggfCAxOCArKysrKysrKysKPj4gwqAgYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9rdm1faG9zdC5owqDCoMKgIHzCoCA0ICsrCj4+IMKgIGFyY2gvYXJtNjQvaW5j bHVkZS9hc20va3ZtX3JtZS5owqDCoMKgwqAgfCA1NiArKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+IMKgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmlydC5owqDCoMKgwqDCoMKgwqAgfMKg IDEgKwo+PiDCoCBhcmNoL2FybTY0L2t2bS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCAzICstCj4+IMKgIGFyY2gvYXJtNjQva3ZtL2FybS5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDkgKysrKysKPj4gwqAgYXJjaC9hcm02NC9rdm0vcm1lLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDUyICsrKysrKysrKysrKysrKysrKysrKysr KysrCj4+IMKgIDcgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX3Jt ZS5oCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2t2bS9ybWUuYwo+Pgo+PiBk aWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCj4+IGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCj4+IGluZGV4IDk3NWFmMzBhZjMxZi4u NmYwODM5ODUzN2UyIDEwMDY0NAo+PiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9l bXVsYXRlLmgKPj4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fZW11bGF0ZS5oCj4+ IEBAIC02MTEsNCArNjExLDIyIEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZAo+PiBrdm1f cmVzZXRfY3B0cl9lbDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+PiDCoCDCoMKgwqDCoMKgIGt2 bV93cml0ZV9jcHRyX2VsMih2YWwpOwo+PiDCoCB9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgYm9v bCBrdm1faXNfcmVhbG0oc3RydWN0IGt2bSAqa3ZtKQo+PiArewo+PiArwqDCoMKgIGlmIChzdGF0 aWNfYnJhbmNoX3VubGlrZWx5KCZrdm1fcm1lX2lzX2F2YWlsYWJsZSkpCj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4ga3ZtLT5hcmNoLmlzX3JlYWxtOwo+PiArwqDCoMKgIHJldHVybiBmYWxzZTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBlbnVtIHJlYWxtX3N0YXRlIGt2bV9yZWFsbV9z dGF0ZShzdHJ1Y3Qga3ZtICprdm0pCj4+ICt7Cj4+ICvCoMKgwqAgcmV0dXJuIFJFQURfT05DRShr dm0tPmFyY2gucmVhbG0uc3RhdGUpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wg dmNwdV9pc19yZWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+PiArewo+PiArwqDCoMKgIHJldHVy biBmYWxzZTsKPj4gK30KPj4gKwo+PiDCoCAjZW5kaWYgLyogX19BUk02NF9LVk1fRU1VTEFURV9I X18gKi8KPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+ PiBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+PiBpbmRleCA5ZThhNDk2ZmIy ODQuLjYzYjY4Yjg1ZGIzZiAxMDA2NDQKPj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9r dm1faG9zdC5oCj4+ICsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+PiBA QCAtMjcsNiArMjcsNyBAQAo+PiDCoCAjaW5jbHVkZSA8YXNtL2Zwc2ltZC5oPgo+PiDCoCAjaW5j bHVkZSA8YXNtL2t2bS5oPgo+PiDCoCAjaW5jbHVkZSA8YXNtL2t2bV9hc20uaD4KPj4gKyNpbmNs dWRlIDxhc20va3ZtX3JtZS5oPgo+PiDCoCAjaW5jbHVkZSA8YXNtL3ZuY3JfbWFwcGluZy5oPgo+ PiDCoCDCoCAjZGVmaW5lIF9fS1ZNX0hBVkVfQVJDSF9JTlRDX0lOSVRJQUxJWkVECj4+IEBAIC0z NDgsNiArMzQ5LDkgQEAgc3RydWN0IGt2bV9hcmNoIHsKPj4gwqDCoMKgwqDCoMKgICogdGhlIGFz c29jaWF0ZWQgcEtWTSBpbnN0YW5jZSBpbiB0aGUgaHlwZXJ2aXNvci4KPj4gwqDCoMKgwqDCoMKg ICovCj4+IMKgwqDCoMKgwqAgc3RydWN0IGt2bV9wcm90ZWN0ZWRfdm0gcGt2bTsKPj4gKwo+PiAr wqDCoMKgIGJvb2wgaXNfcmVhbG07Cj4+ICvCoMKgwqAgc3RydWN0IHJlYWxtIHJlYWxtOwo+PiDC oCB9Owo+PiDCoCDCoCBzdHJ1Y3Qga3ZtX3ZjcHVfZmF1bHRfaW5mbyB7Cj4+IGRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ybWUuaAo+PiBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20va3ZtX3JtZS5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uOTIyZGEzZjQ3MjI3Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9rdm1fcm1lLmgKPj4gQEAgLTAsMCArMSw1NiBAQAo+PiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjMgQVJNIEx0ZC4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9fQVNNX0tWTV9STUVfSAo+PiAr I2RlZmluZSBfX0FTTV9LVk1fUk1FX0gKPj4gKwo+PiArLyoqCj4+ICsgKiBlbnVtIHJlYWxtX3N0 YXRlIC0gU3RhdGUgb2YgYSBSZWFsbQo+PiArICovCj4+ICtlbnVtIHJlYWxtX3N0YXRlIHsKPj4g K8KgwqDCoCAvKioKPj4gK8KgwqDCoMKgICogQFJFQUxNX1NUQVRFX05PTkU6Cj4+ICvCoMKgwqDC oCAqwqDCoMKgwqDCoCBSZWFsbSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQuIHJtaV9yZWFsbV9j cmVhdGUoKSBtYXkgYmUKPj4gK8KgwqDCoMKgICrCoMKgwqDCoMKgIGNhbGxlZCB0byBjcmVhdGUg dGhlIHJlYWxtLgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBSRUFMTV9TVEFURV9OT05FLAo+ PiArwqDCoMKgIC8qKgo+PiArwqDCoMKgwqAgKiBAUkVBTE1fU1RBVEVfTkVXOgo+PiArwqDCoMKg wqAgKsKgwqDCoMKgwqAgUmVhbG0gaXMgdW5kZXIgY29uc3RydWN0aW9uLCBub3QgZWxpZ2libGUg Zm9yIGV4ZWN1dGlvbi4KPj4gUGFnZXMKPj4gK8KgwqDCoMKgICrCoMKgwqDCoMKgIG1heSBiZSBw b3B1bGF0ZWQgd2l0aCBybWlfZGF0YV9jcmVhdGUoKS4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKg wqAgUkVBTE1fU1RBVEVfTkVXLAo+PiArwqDCoMKgIC8qKgo+PiArwqDCoMKgwqAgKiBAUkVBTE1f U1RBVEVfQUNUSVZFOgo+PiArwqDCoMKgwqAgKsKgwqDCoMKgwqAgUmVhbG0gaGFzIGJlZW4gY3Jl YXRlZCBhbmQgaXMgZWxpZ2libGUgZm9yIGV4ZWN1dGlvbiB3aXRoCj4+ICvCoMKgwqDCoCAqwqDC oMKgwqDCoCBybWlfcmVjX2VudGVyKCkuIFBhZ2VzIG1heSBubyBsb25nZXIgYmUgcG9wdWxhdGVk IHdpdGgKPj4gK8KgwqDCoMKgICrCoMKgwqDCoMKgIHJtaV9kYXRhX2NyZWF0ZSgpLgo+PiArwqDC oMKgwqAgKi8KPj4gK8KgwqDCoCBSRUFMTV9TVEFURV9BQ1RJVkUsCj4+ICvCoMKgwqAgLyoqCj4+ ICvCoMKgwqDCoCAqIEBSRUFMTV9TVEFURV9EWUlORzoKPj4gK8KgwqDCoMKgICrCoMKgwqDCoMKg IFJlYWxtIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZCBvciBoYXMgYWxyZWFk eQo+PiBiZWVuCj4+ICvCoMKgwqDCoCAqwqDCoMKgwqDCoCBkZXN0cm95ZWQuCj4+ICvCoMKgwqDC oCAqLwo+PiArwqDCoMKgIFJFQUxNX1NUQVRFX0RZSU5HLAo+PiArwqDCoMKgIC8qKgo+PiArwqDC oMKgwqAgKiBAUkVBTE1fU1RBVEVfREVBRDoKPj4gK8KgwqDCoMKgICrCoMKgwqDCoMKgIFJlYWxt IGhhcyBiZWVuIGRlc3Ryb3llZC4KPj4gK8KgwqDCoMKgICovCj4+ICvCoMKgwqAgUkVBTE1fU1RB VEVfREVBRAo+PiArfTsKPj4gKwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgcmVhbG0gLSBBZGRpdGlv bmFsIHBlciBWTSBkYXRhIGZvciBhIFJlYWxtCj4+ICsgKgo+PiArICogQHN0YXRlOiBUaGUgbGlm ZXRpbWUgc3RhdGUgbWFjaGluZSBmb3IgdGhlIHJlYWxtCj4+ICsgKi8KPj4gK3N0cnVjdCByZWFs bSB7Cj4+ICvCoMKgwqAgZW51bSByZWFsbV9zdGF0ZSBzdGF0ZTsKPj4gK307Cj4+ICsKPj4gK2lu dCBrdm1faW5pdF9ybWUodm9pZCk7Cj4+ICsKPj4gKyNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgKPj4gYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Zp cnQuaAo+PiBpbmRleCAyNjFkNmU5ZGYyZTEuLjEyY2YzNmMzODE4OSAxMDA2NDQKPj4gLS0tIGEv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS92aXJ0LmgKPj4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS92aXJ0LmgKPj4gQEAgLTgxLDYgKzgxLDcgQEAgdm9pZCBfX2h5cF9yZXNldF92ZWN0b3Jz KHZvaWQpOwo+PiDCoCBib29sIGlzX2t2bV9hcm1faW5pdGlhbGlzZWQodm9pZCk7Cj4+IMKgIMKg IERFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcHJvdGVjdGVkX21vZGVfaW5pdGlhbGl6ZWQp Owo+PiArREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9ybWVfaXNfYXZhaWxhYmxlKTsKPj4g wqAgwqAgLyogUmVwb3J0cyB0aGUgYXZhaWxhYmlsaXR5IG9mIEhZUCBtb2RlICovCj4+IMKgIHN0 YXRpYyBpbmxpbmUgYm9vbCBpc19oeXBfbW9kZV9hdmFpbGFibGUodm9pZCkKPj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQva3ZtL01ha2VmaWxlIGIvYXJjaC9hcm02NC9rdm0vTWFrZWZpbGUKPj4g aW5kZXggYzBjMDUwZTUzMTU3Li4xYzFkOGNkZjM4MWYgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJt NjQva3ZtL01ha2VmaWxlCj4+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL01ha2VmaWxlCj4+IEBAIC0y MCw3ICsyMCw4IEBAIGt2bS15ICs9IGFybS5vIG1tdS5vIG1taW8ubyBwc2NpLm8gaHlwZXJjYWxs cy5vCj4+IHB2dGltZS5vIFwKPj4gwqDCoMKgwqDCoMKgIHZnaWMvdmdpYy12My5vIHZnaWMvdmdp Yy12NC5vIFwKPj4gwqDCoMKgwqDCoMKgIHZnaWMvdmdpYy1tbWlvLm8gdmdpYy92Z2ljLW1taW8t djIubyBcCj4+IMKgwqDCoMKgwqDCoCB2Z2ljL3ZnaWMtbW1pby12My5vIHZnaWMvdmdpYy1rdm0t ZGV2aWNlLm8gXAo+PiAtwqDCoMKgwqAgdmdpYy92Z2ljLWl0cy5vIHZnaWMvdmdpYy1kZWJ1Zy5v Cj4+ICvCoMKgwqDCoCB2Z2ljL3ZnaWMtaXRzLm8gdmdpYy92Z2ljLWRlYnVnLm8gXAo+PiArwqDC oMKgwqAgcm1lLm8KPj4gwqAgwqAga3ZtLSQoQ09ORklHX0hXX1BFUkZfRVZFTlRTKcKgICs9IHBt dS1lbXVsLm8gcG11Lm8KPj4gwqAgZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIv YXJjaC9hcm02NC9rdm0vYXJtLmMKPj4gaW5kZXggM2RlZTU0OTBlZWE5Li4yMDU2YzY2MGM1ZWUg MTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jCj4+ICsrKyBiL2FyY2gvYXJtNjQv a3ZtL2FybS5jCj4+IEBAIC0zOCw2ICszOCw3IEBACj4+IMKgICNpbmNsdWRlIDxhc20va3ZtX21t dS5oPgo+PiDCoCAjaW5jbHVkZSA8YXNtL2t2bV9uZXN0ZWQuaD4KPj4gwqAgI2luY2x1ZGUgPGFz bS9rdm1fcGt2bS5oPgo+PiArI2luY2x1ZGUgPGFzbS9rdm1fcm1lLmg+Cj4+IMKgICNpbmNsdWRl IDxhc20va3ZtX2VtdWxhdGUuaD4KPj4gwqAgI2luY2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgo+PiDC oCBAQCAtNDcsNiArNDgsOCBAQAo+PiDCoCDCoCBzdGF0aWMgZW51bSBrdm1fbW9kZSBrdm1fbW9k ZSA9IEtWTV9NT0RFX0RFRkFVTFQ7Cj4+IMKgICtERUZJTkVfU1RBVElDX0tFWV9GQUxTRShrdm1f cm1lX2lzX2F2YWlsYWJsZSk7Cj4+ICsKPj4gwqAgREVDTEFSRV9LVk1fSFlQX1BFUl9DUFUodW5z aWduZWQgbG9uZywga3ZtX2h5cF92ZWN0b3IpOwo+PiDCoCDCoCBERUZJTkVfUEVSX0NQVSh1bnNp Z25lZCBsb25nLCBrdm1fYXJtX2h5cF9zdGFja19wYWdlKTsKPj4gQEAgLTI1NjIsNiArMjU2NSwx MiBAQCBzdGF0aWMgX19pbml0IGludCBrdm1fYXJtX2luaXQodm9pZCkKPj4gwqAgwqDCoMKgwqDC oCBpbl9oeXBfbW9kZSA9IGlzX2tlcm5lbF9pbl9oeXBfbW9kZSgpOwo+PiDCoCArwqDCoMKgIGlm IChpbl9oeXBfbW9kZSkgewo+PiArwqDCoMKgwqDCoMKgwqAgZXJyID0ga3ZtX2luaXRfcm1lKCk7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZXJyKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gZXJyOwo+PiArwqDCoMKgIH0KPj4gKwo+PiDCoMKgwqDCoMKgIGlmIChjcHVzX2hhdmVf ZmluYWxfY2FwKEFSTTY0X1dPUktBUk9VTkRfREVWSUNFX0xPQURfQUNRVUlSRSkgfHwKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGNwdXNfaGF2ZV9maW5hbF9jYXAoQVJNNjRfV09SS0FST1VORF8xNTA4 NDEyKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGt2bV9pbmZvKCJHdWVzdHMgd2l0aG91dCByZXF1 aXJlZCBDUFUgZXJyYXR1bSB3b3JrYXJvdW5kcwo+PiBjYW4gZGVhZGxvY2sgc3lzdGVtIVxuIiBc Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9ybWUuYyBiL2FyY2gvYXJtNjQva3ZtL3Jt ZS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uM2RiYmY5 ZDA0NmJmCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvYXJjaC9hcm02NC9rdm0vcm1lLmMKPj4g QEAgLTAsMCArMSw1MiBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK Pj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgQVJNIEx0ZC4KPj4gKyAqLwo+PiArCj4+ ICsjaW5jbHVkZSA8bGludXgva3ZtX2hvc3QuaD4KPj4gKwo+PiArI2luY2x1ZGUgPGFzbS9ybWlf Y21kcy5oPgo+PiArI2luY2x1ZGUgPGFzbS92aXJ0Lmg+Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcm1p X2NoZWNrX3ZlcnNpb24odm9pZCkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgYXJtX3NtY2NjX3Jl cyByZXM7Cj4+ICvCoMKgwqAgaW50IHZlcnNpb25fbWFqb3IsIHZlcnNpb25fbWlub3I7Cj4+ICvC oMKgwqAgdW5zaWduZWQgbG9uZyBob3N0X3ZlcnNpb24gPSBSTUlfQUJJX1ZFUlNJT04oUk1JX0FC SV9NQUpPUl9WRVJTSU9OLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgUk1JX0FCSV9NSU5PUl9WRVJTSU9OKTsKPj4gKwo+PiArwqDC oMKgIGFybV9zbWNjY18xXzFfaW52b2tlKFNNQ19STUlfVkVSU0lPTiwgaG9zdF92ZXJzaW9uLCAm cmVzKTsKPj4gKwo+PiArwqDCoMKgIGlmIChyZXMuYTAgPT0gU01DQ0NfUkVUX05PVF9TVVBQT1JU RUQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOWElPOwo+PiArCj4+ICvCoMKgwqAgdmVy c2lvbl9tYWpvciA9IFJNSV9BQklfVkVSU0lPTl9HRVRfTUFKT1IocmVzLmExKTsKPj4gK8KgwqDC oCB2ZXJzaW9uX21pbm9yID0gUk1JX0FCSV9WRVJTSU9OX0dFVF9NSU5PUihyZXMuYTEpOwo+PiAr Cj4gCj4gV2UgZG9uJ3Qgc2VlbSB0byBiZSB1c2luZyB0aGUgcmVzLmEwIHRvIGRldGVybWluIGlm IHRoZSBSTU0gc3VwcG9ydHMgb3VyCj4gcmVxdWVzdGVkIHZlcnNpb24uIEFzIHBlciBSTU0gc3Bl Yywgc2VjdGlvbiBCNC4zLjIzIDoKPiAKPiAiCj4gVGhlIHN0YXR1cyBjb2RlIGFuZCBsb3dlciBy ZXZpc2lvbiBvdXRwdXQgdmFsdWVzIGluZGljYXRlIHdoaWNoIG9mIHRoZQo+IGZvbGxvd2luZyBp cyB0cnVlLCBpbiBvcmRlciBvZiBwcmVjZWRlbmNlOgo+IMKgYSkgVGhlIFJNTSBzdXBwb3J0cyBh biBpbnRlcmZhY2UgcmV2aXNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIHRoZQo+IMKgwqDC oCByZXF1ZXN0ZWQgcmV2aXNpb24uCj4gwqDCoMKgwqAg4oCiIFRoZSBzdGF0dXMgY29kZSBpcyBS TUlfU1VDQ0VTUy4KPiDCoMKgwqDCoCDigKIgVGhlIGxvd2VyIHJldmlzaW9uIGlzIGVxdWFsIHRv IHRoZSByZXF1ZXN0ZWQgcmV2aXNpb24uCj4gwqBiKSBUaGUgUk1NIGRvZXMgbm90IHN1cHBvcnQg YW4gaW50ZXJmYWNlIHJldmlzaW9uIHdoaWNoIGlzIGNvbXBhdGlibGUKPiDCoMKgwqAgd2l0aCB0 aGUgcmVxdWVzdGVkIHJldmlzaW9uIFRoZSBSTU0gc3VwcG9ydHMgYW4gaW50ZXJmYWNlIHJldmlz aW9uCj4gwqDCoMKgIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIGFuZCBsZXNzIHRoYW4gdGhl IHJlcXVlc3RlZCByZXZpc2lvbi4KPiDCoMKgwqDCoCDigKIgVGhlIHN0YXR1cyBjb2RlIGlzIFJN SV9FUlJPUl9JTlBVVC4KPiDCoMKgwqDCoCDigKIgVGhlIGxvd2VyIHJldmlzaW9uIGlzIHRoZSBo aWdoZXN0IGludGVyZmFjZSByZXZpc2lvbiB3aGljaCBpcwo+IMKgwqDCoMKgwqDCoCBib3RoIGxl c3MgdGhhbiB0aGUgcmVxdWVzdGVkIHJldmlzaW9uIGFuZCBzdXBwb3J0ZWQgYnkgdGhlIFJNTS4K PiAKPiDCoGMpIFRoZSBSTU0gZG9lcyBub3Qgc3VwcG9ydCBhbiBpbnRlcmZhY2UgcmV2aXNpb24g d2hpY2ggaXMgY29tcGF0aWJsZQo+IMKgwqDCoCB3aXRoIHRoZSByZXF1ZXN0ZWQgcmV2aXNpb24g VGhlIFJNTSBzdXBwb3J0cyBhbiBpbnRlcmZhY2UgcmV2aXNpb24KPiDCoMKgwqAgd2hpY2ggaXMg aW5jb21wYXRpYmxlIHdpdGggYW5kIGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdGVkIHJldmlzaW9u Lgo+IMKgwqDCoMKgIOKAoiBUaGUgc3RhdHVzIGNvZGUgaXMgUk1JX0VSUk9SX0lOUFVULgo+IMKg wqDCoMKgIOKAoiBUaGUgbG93ZXIgcmV2aXNpb24gaXMgZXF1YWwgdG8gdGhlIGhpZ2hlciByZXZp c2lvbi4KPiAKPiBTbywgd2UgY291bGQgc2ltcGx5IGNoZWNrIHRoZSByZXMuYTAgZm9yIFJNSV9T VUNDRVNTIGFuZCBwcm9jZWVkIHdpdGgKPiBtYXJraW5nIFJNTSBhdmFpbGFibGUuCgpHb29kIHBv aW50IC0gdGhpcyBkaWRuJ3Qgd29yayBpbiBhIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHNwZWMs IGJ1dCB3ZQpzaG91bGQgYmUgYWJsZSB0byByZWx5IG9uIHRoZSByZXR1cm4gdmFsdWUgbm93LgoK Pj4gK8KgwqDCoCBpZiAodmVyc2lvbl9tYWpvciAhPSBSTUlfQUJJX01BSk9SX1ZFUlNJT04pIHsK Pj4gK8KgwqDCoMKgwqDCoMKgIGt2bV9lcnIoIlVuc3VwcG9ydGVkIFJNSSBBQkkgKHYlZC4lZCkg aG9zdCBzdXBwb3J0cyB2JWQuJWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZlcnNp b25fbWFqb3IsIHZlcnNpb25fbWlub3IsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJNSV9B QklfTUFKT1JfVkVSU0lPTiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUk1JX0FCSV9NSU5P Ul9WRVJTSU9OKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5YSU87Cj4+ICvCoMKgwqAg fQo+PiArCj4+ICvCoMKgwqAga3ZtX2luZm8oIlJNSSBBQkkgdmVyc2lvbiAlZC4lZFxuIiwgdmVy c2lvbl9tYWpvciwgdmVyc2lvbl9taW5vcik7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4g K30KPj4gKwo+PiAraW50IGt2bV9pbml0X3JtZSh2b2lkKQo+PiArewo+PiArwqDCoMKgIGlmIChQ QUdFX1NJWkUgIT0gU1pfNEspCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBPbmx5IDRrIHBhZ2Ugc2l6 ZSBvbiB0aGUgaG9zdCBpcyBzdXBwb3J0ZWQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAw Owo+PiArCj4+ICvCoMKgwqAgaWYgKHJtaV9jaGVja192ZXJzaW9uKCkpCj4+ICvCoMKgwqDCoMKg wqDCoCAvKiBDb250aW51ZSB3aXRob3V0IHJlYWxtIHN1cHBvcnQgKi8KPj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiAwOwo+PiArCj4+ICvCoMKgwqAgLyogRnV0dXJlIHBhdGNoIHdpbGwgZW5hYmxl IHN0YXRpYyBicmFuY2gga3ZtX3JtZV9pc19hdmFpbGFibGUgKi8KPj4gKwo+PiArwqDCoMKgIHJl dHVybiAwOwo+IAo+IERvIHdlIGV2ZXIgZXhwZWN0IHRoaXMgdG8gZmFpbCB0aGUga3ZtIGluaXRp YWxpc2F0aW9uID8gT3RoZXJ3aXNlLCB3ZQo+IGNvdWxkIGxlYXZlIGl0IGFzIGEgdm9pZCA/CgpU ZWNobmljYWxseSBpbiBhIGxhdGVyIHBhdGNoIHRoZSByZXR1cm4gZnJvbSBybWVfdm1pZF9pbml0 KCkgY2FuIGNhdXNlCnN1Y2ggYSBmYWlsdXJlLiBCdXQgaXQncyBub3QgY2xlYXIgdGhhdCBpdCBt YWtlcyBhbnkgc2Vuc2UgdG8gY29tcGxldGVseQpraWxsIEtWTSBiZWNhdXNlIG9mIHRoYXQuIFNv IEknbGwgY2hhbmdlIHRoaXMgdG8gYSB2b2lkIHJldHVybi4KClRoYW5rcywKClN0ZXZlCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=