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 E30C2C4345F for ; Thu, 2 May 2024 10:17:16 +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-Type: Content-Transfer-Encoding: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=7nmDkmNrgQRD7L9zDz9fLdpbwY6/VVJQYMNiZwO70lY=; b=YPr9pdU8zRJWCm Ua44mL1YTuQWWU1zsx1JQBIUxImLvTngISfVVOxH+xIbcKNXExBMxliB1RupnIS7I8YgFP0b95TxR fc6Caw1tsMqz/BErxhGQIzhg706CtXU/sRK4430HjoKB2HbWOFJS86j3+XHkZkPVydodmAtMopjil xdECtrhqMnk+SnN4Wyno6TAOFRWU8Qth/xMHqCdEnUqHzul2qRk63B1sjWFzzrb+2h3U63maeTHcg Fp+ptYsNIeO74y48YJh7pZuYvj8uc3kj3yfmAwxepxtG3NeHIEPEpQsEBgmzbMQFQRiX3J23GAya4 BoEycgRkwy79uSj8WV5w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s2TUt-0000000CImE-1WI1; Thu, 02 May 2024 10:17:03 +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 1s2TUq-0000000CIlP-3fjj for linux-arm-kernel@lists.infradead.org; Thu, 02 May 2024 10:17:02 +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 CC7B62F4; Thu, 2 May 2024 03:17:25 -0700 (PDT) Received: from [10.1.197.1] (ewhatever.cambridge.arm.com [10.1.197.1]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D8E5F3F793; Thu, 2 May 2024 03:16:57 -0700 (PDT) Message-ID: <85a4bbda-4516-4c2a-ae51-5e8f8c451e3a@arm.com> Date: Thu, 2 May 2024 11:16:56 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 17/43] arm64: RME: Allow VMM to set RIPAS To: Steven Price , 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-18-steven.price@arm.com> <98ef5e64-2d1e-4fa2-a3da-210ea180f20f@arm.com> Content-Language: en-US From: Suzuki K Poulose In-Reply-To: <98ef5e64-2d1e-4fa2-a3da-210ea180f20f@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240502_031701_035410_0C1833EF X-CRM114-Status: GOOD ( 27.13 ) 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-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 T24gMDEvMDUvMjAyNCAxNjo0NywgU3RldmVuIFByaWNlIHdyb3RlOgo+IE9uIDE5LzA0LzIwMjQg MTA6MzQsIFN1enVraSBLIFBvdWxvc2Ugd3JvdGU6Cj4+IE9uIDEyLzA0LzIwMjQgMDk6NDIsIFN0 ZXZlbiBQcmljZSB3cm90ZToKPj4+IEVhY2ggcGFnZSB3aXRoaW4gdGhlIHByb3RlY3RlZCByZWdp b24gb2YgdGhlIHJlYWxtIGd1ZXN0IGNhbiBiZSBtYXJrZWQKPj4+IGFzIGVpdGhlciBSQU0gb3Ig RU1QVFkuIEFsbG93IHRoZSBWTU0gdG8gY29udHJvbCB0aGlzIGJlZm9yZSB0aGUgZ3Vlc3QKPj4+ IGhhcyBzdGFydGVkIGFuZCBwcm92aWRlIHRoZSBlcXVpdmFsZW50IGZ1bmN0aW9ucyB0byBjaGFu Z2UgdGhpcyAod2l0aAo+Pj4gdGhlIGd1ZXN0J3MgYXBwcm92YWwpIGF0IHJ1bnRpbWUuCj4+Pgo+ Pj4gV2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gUklQQVMgUkFNICgxKSB0byBSSVBBUyBFTVBUWSAo MCkgdGhlIG1lbW9yeSBpcwo+Pj4gdW5tYXBwZWQgZnJvbSB0aGUgZ3Vlc3QgYW5kIHVuZGVsZWdh dGVkIGFsbG93aW5nIHRoZSBtZW1vcnkgdG8gYmUgcmV1c2VkCj4+PiBieSB0aGUgaG9zdC4gV2hl biB0cmFuc2l0aW9uaW5nIHRvIFJJUEFTIFJBTSB0aGUgYWN0dWFsIHBvcHVsYXRpb24gb2YKPj4+ IHRoZSBsZWFmIFJUVHMgaXMgZG9uZSBsYXRlciBvbiBzdGFnZSAyIGZhdWx0LCBob3dldmVyIGl0 IG1heSBiZQo+Pj4gbmVjZXNzYXJ5IHRvIGFsbG9jYXRlIGFkZGl0aW9uYWwgUlRUcyB0byByZXBy ZXNlbnQgdGhlIHJhbmdlIHJlcXVlc3RlZC4KPj4KPj4gbWlub3Igbml0OiBUbyBnaXZlIGEgYml0 IG1vcmUgY29udGV4dDoKPj4KPj4gImhvd2V2ZXIgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBhbGxv Y2F0ZSBhZGRpdGlvbmFsIFJUVHMgaW4gb3JkZXIgZm9yCj4+IHRoZSBSTU0gdG8gdHJhY2sgdGhl IFJJUEFTIGZvciB0aGUgcmVxdWVzdGVkIHJhbmdlIi4KPiAKPiBUaGF0IGlzIHdoYXQgSSBtZWFu dCAtIGJ1dCB5b3VyIHdvcmRpbmcgaXMgcHJvYmFibHkgY2xlYXJlciA7KQo+IFRlY2huaWNhbGx5 IHRoZXJlJ3MgYWxzbyB0aGUgY2FzZSB3aGVyZSBhIFJJUEFTIGNoYW5nZSB3aWxsIGNhdXNlIGEK PiBibG9jayBtYXBwaW5nIHRvIGJlIHNwbGl0IHdoaWNoIGlzbid0IGp1c3QgYWJvdXQgdHJhY2tp bmcgUklQQVMgYnV0IGFsc28KPiBhYm91dCBicmVha2luZyB1cCB0aGUgYmxvY2sgbWFwcGluZyBm b3IgdGhlIHBhZ2VzIHRoYXQgcmVtYWluLgo+IAo+Pj4KPj4+IFdoZW4gZnJlZWluZyBhIGJsb2Nr IG1hcHBpbmcgaXQgaXMgbmVjZXNzYXJ5IHRvIHRlbXBvcmFyaWx5IHVuZm9sZCB0aGUKPj4+IFJU VCB3aGljaCByZXF1aXJlcyBkZWxlZ2F0aW5nIGFuIGV4dHJhIHBhZ2UgdG8gdGhlIFJNTSwgdGhp cyBwYWdlIGNhbgo+Pj4gdGhlbiBiZSByZWNvdmVyZWQgb25jZSB0aGUgY29udGVudHMgb2YgdGhl IGJsb2NrIG1hcHBpbmcgaGF2ZSBiZWVuCj4+PiBmcmVlZC4gQSBzcGFyZSwgZGVsZWdhdGVkIHBh Z2UgKHNwYXJlX3BhZ2UpIGlzIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KPj4+Cj4+PiBTaWduZWQt b2ZmLWJ5OiBTdGV2ZW4gUHJpY2UgPHN0ZXZlbi5wcmljZUBhcm0uY29tPgo+Pj4gLS0tCj4+PiAg wqAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1fcm1lLmggfMKgIDE2ICsrCj4+PiAgwqAgYXJj aC9hcm02NC9rdm0vbW11LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgOCArLQo+Pj4g IMKgIGFyY2gvYXJtNjQva3ZtL3JtZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMzkwICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICDCoCAzIGZpbGVzIGNoYW5nZWQsIDQx MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ybWUuaAo+Pj4gYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L2t2bV9ybWUuaAo+Pj4gaW5kZXggOTE1ZTc2MDY4YjAwLi5jYzhmODFjZmMzYzAgMTAwNjQ0Cj4+ PiAtLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ybWUuaAo+Pj4gKysrIGIvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9rdm1fcm1lLmgKPj4+IEBAIC05Niw2ICs5NiwxNCBAQCB2b2lkIGt2 bV9yZWFsbV9kZXN0cm95X3J0dHMoc3RydWN0IGt2bSAqa3ZtLCB1MzIKPj4+IGlhX2JpdHMpOwo+ Pj4gIMKgIGludCBrdm1fY3JlYXRlX3JlYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwo+Pj4gIMKg IHZvaWQga3ZtX2Rlc3Ryb3lfcmVjKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7Cj4+PiAgwqAgK3Zv aWQga3ZtX3JlYWxtX3VubWFwX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgaXBhLAo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTY0IHNpemUsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBib29sIHVubWFwX3ByaXZhdGUpOwo+Pj4gK2ludCByZWFsbV9zZXRfaXBhX3N0YXRlKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxv bmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 bnNpZ25lZCBsb25nIHJpcGFzKTsKPj4+ICsKPj4+ICDCoCAjZGVmaW5lIFJNRV9SVFRfQkxPQ0tf TEVWRUzCoMKgwqAgMgo+Pj4gIMKgICNkZWZpbmUgUk1FX1JUVF9NQVhfTEVWRUzCoMKgwqAgMwo+ Pj4gIMKgIEBAIC0xMTQsNCArMTIyLDEyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+ Pj4gcm1lX3J0dF9sZXZlbF9tYXBzaXplKGludCBsZXZlbCkKPj4+ICDCoMKgwqDCoMKgIHJldHVy biAoMVVMIDw8IFJNRV9SVFRfTEVWRUxfU0hJRlQobGV2ZWwpKTsKPj4+ICDCoCB9Cj4+PiAgwqAg K3N0YXRpYyBpbmxpbmUgYm9vbCByZWFsbV9pc19hZGRyX3Byb3RlY3RlZChzdHJ1Y3QgcmVhbG0g KnJlYWxtLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVuc2lnbmVkIGxvbmcgYWRkcikKPj4+ICt7Cj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBpYV9i aXRzID0gcmVhbG0tPmlhX2JpdHM7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiAhKGFkZHIgJiB+ KEJJVChpYV9iaXRzIC0gMSkgLSAxKSk7Cj4+PiArfQo+Pj4gKwo+Pj4gIMKgICNlbmRpZgo+Pj4g ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL21tdS5jIGIvYXJjaC9hcm02NC9rdm0vbW11LmMK Pj4+IGluZGV4IDQ2ZjBjNGU4MGFjZS4uOGE3YjU0NDk2OTdmIDEwMDY0NAo+Pj4gLS0tIGEvYXJj aC9hcm02NC9rdm0vbW11LmMKPj4+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL21tdS5jCj4+PiBAQCAt MzEwLDYgKzMxMCw3IEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVfaWNhY2hlX2d1ZXN0X3BhZ2Uo dm9pZCAqdmEsCj4+PiBzaXplX3Qgc2l6ZSkKPj4+ICDCoMKgICogQHN0YXJ0OiBUaGUgaW50ZXJt ZWRpYXRlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgcmFuZ2UgdG8gdW5tYXAKPj4+ICDC oMKgICogQHNpemU6wqAgVGhlIHNpemUgb2YgdGhlIGFyZWEgdG8gdW5tYXAKPj4+ICDCoMKgICog QG1heV9ibG9jazogV2hldGhlciBvciBub3Qgd2UgYXJlIHBlcm1pdHRlZCB0byBibG9jawo+Pj4g KyAqIEBvbmx5X3NoYXJlZDogSWYgdHJ1ZSB0aGVuIHByb3RlY3RlZCBtYXBwaW5ncyBzaG91bGQg bm90IGJlIHVubWFwcGVkCj4+PiAgwqDCoCAqCj4+PiAgwqDCoCAqIENsZWFyIGEgcmFuZ2Ugb2Yg c3RhZ2UtMiBtYXBwaW5ncywgbG93ZXJpbmcgdGhlIHZhcmlvdXMKPj4+IHJlZi1jb3VudHMuwqAg TXVzdAo+Pj4gIMKgwqAgKiBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBtbXVfbG9jayAodW5sZXNz IGZvciBmcmVlaW5nIHRoZSBzdGFnZTIKPj4+IHBnZCBiZWZvcmUKPj4+IEBAIC0zMTcsNyArMzE4 LDcgQEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZV9pY2FjaGVfZ3Vlc3RfcGFnZSh2b2lkICp2YSwK Pj4+IHNpemVfdCBzaXplKQo+Pj4gIMKgwqAgKiB3aXRoIHRoaW5ncyBiZWhpbmQgb3VyIGJhY2tz Lgo+Pj4gIMKgwqAgKi8KPj4+ICDCoCBzdGF0aWMgdm9pZCBfX3VubWFwX3N0YWdlMl9yYW5nZShz dHJ1Y3Qga3ZtX3MyX21tdSAqbW11LCBwaHlzX2FkZHJfdAo+Pj4gc3RhcnQsIHU2NCBzaXplLAo+ Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgbWF5X2Jsb2NrKQo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgbWF5X2Jsb2NrLCBib29sIG9u bHlfc2hhcmVkKQo+Pj4gIMKgIHsKPj4+ICDCoMKgwqDCoMKgIHN0cnVjdCBrdm0gKmt2bSA9IGt2 bV9zMl9tbXVfdG9fa3ZtKG1tdSk7Cj4+PiAgwqDCoMKgwqDCoCBwaHlzX2FkZHJfdCBlbmQgPSBz dGFydCArIHNpemU7Cj4+PiBAQCAtMzMwLDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIF9fdW5tYXBf c3RhZ2UyX3JhbmdlKHN0cnVjdCBrdm1fczJfbW11Cj4+PiAqbW11LCBwaHlzX2FkZHJfdCBzdGFy dCwgdTY0Cj4+PiAgwqAgwqAgc3RhdGljIHZvaWQgdW5tYXBfc3RhZ2UyX3JhbmdlKHN0cnVjdCBr dm1fczJfbW11ICptbXUsIHBoeXNfYWRkcl90Cj4+PiBzdGFydCwgdTY0IHNpemUpCj4+PiAgwqAg ewo+Pj4gLcKgwqDCoCBfX3VubWFwX3N0YWdlMl9yYW5nZShtbXUsIHN0YXJ0LCBzaXplLCB0cnVl KTsKPj4+ICvCoMKgwqAgX191bm1hcF9zdGFnZTJfcmFuZ2UobW11LCBzdGFydCwgc2l6ZSwgdHJ1 ZSwgZmFsc2UpOwo+Pj4gIMKgIH0KPj4+ICDCoCDCoCBzdGF0aWMgdm9pZCBzdGFnZTJfZmx1c2hf bWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sCj4+PiBAQCAtMTc3MSw3ICsxNzcyLDggQEAgYm9vbCBr dm1fdW5tYXBfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0Cj4+PiBrdm1fZ2ZuX3Jh bmdlICpyYW5nZSkKPj4+ICDCoCDCoMKgwqDCoMKgIF9fdW5tYXBfc3RhZ2UyX3JhbmdlKCZrdm0t PmFyY2gubW11LCByYW5nZS0+c3RhcnQgPDwgUEFHRV9TSElGVCwKPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHJhbmdlLT5lbmQgLSByYW5nZS0+c3RhcnQpIDw8IFBB R0VfU0hJRlQsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmFuZ2UtPm1h eV9ibG9jayk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmFuZ2UtPm1h eV9ibG9jaywKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByYW5nZS0+b25s eV9zaGFyZWQpOwo+Pj4gIMKgIMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+Pj4gIMKgIH0KPj4+ IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9ybWUuYyBiL2FyY2gvYXJtNjQva3ZtL3JtZS5j Cj4+PiBpbmRleCA2MjlhMDk1YmVhNjEuLjllNTk4M2M1MTM5MyAxMDA2NDQKPj4+IC0tLSBhL2Fy Y2gvYXJtNjQva3ZtL3JtZS5jCj4+PiArKysgYi9hcmNoL2FybTY0L2t2bS9ybWUuYwo+Pj4gQEAg LTc5LDYgKzc5LDEyIEBAIHN0YXRpYyBwaHlzX2FkZHJfdCBfX2FsbG9jX2RlbGVnYXRlZF9wYWdl KHN0cnVjdAo+Pj4gcmVhbG0gKnJlYWxtLAo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIHBoeXM7Cj4+ PiAgwqAgfQo+Pj4gIMKgICtzdGF0aWMgcGh5c19hZGRyX3QgYWxsb2NfZGVsZWdhdGVkX3BhZ2Uo c3RydWN0IHJlYWxtICpyZWFsbSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3Qga3ZtX21tdV9tZW1vcnlfY2FjaGUgKm1jKQo+Pj4gK3sKPj4+ICvCoMKg wqAgcmV0dXJuIF9fYWxsb2NfZGVsZWdhdGVkX3BhZ2UocmVhbG0sIG1jLCBHRlBfS0VSTkVMKTsK Pj4+ICt9Cj4+PiArCj4+PiAgwqAgc3RhdGljIHZvaWQgZnJlZV9kZWxlZ2F0ZWRfcGFnZShzdHJ1 Y3QgcmVhbG0gKnJlYWxtLCBwaHlzX2FkZHJfdCBwaHlzKQo+Pj4gIMKgIHsKPj4+ICDCoMKgwqDC oMKgIGlmIChyZWFsbS0+c3BhcmVfcGFnZSA9PSBQSFlTX0FERFJfTUFYKSB7Cj4+PiBAQCAtOTQs NiArMTAwLDE1MSBAQCBzdGF0aWMgdm9pZCBmcmVlX2RlbGVnYXRlZF9wYWdlKHN0cnVjdCByZWFs bQo+Pj4gKnJlYWxtLCBwaHlzX2FkZHJfdCBwaHlzKQo+Pj4gIMKgwqDCoMKgwqAgZnJlZV9wYWdl KCh1bnNpZ25lZCBsb25nKXBoeXNfdG9fdmlydChwaHlzKSk7Cj4+PiAgwqAgfQo+Pj4gIMKgICtz dGF0aWMgaW50IHJlYWxtX3J0dF9jcmVhdGUoc3RydWN0IHJlYWxtICpyZWFsbSwKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBhZGRyLAo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgbGV2ZWwsCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHBoeXNfYWRkcl90IHBoeXMpCj4+PiArewo+Pj4gK8KgwqDCoCBhZGRy ID0gQUxJR05fRE9XTihhZGRyLCBybWVfcnR0X2xldmVsX21hcHNpemUobGV2ZWwgLSAxKSk7Cj4+ PiArwqDCoMKgIHJldHVybiBybWlfcnR0X2NyZWF0ZSh2aXJ0X3RvX3BoeXMocmVhbG0tPnJkKSwg cGh5cywgYWRkciwgbGV2ZWwpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IHJlYWxtX3J0 dF9mb2xkKHN0cnVjdCByZWFsbSAqcmVhbG0sCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgbG9uZyBhZGRyLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlu dCBsZXZlbCwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaHlzX2FkZHJfdCAqcnR0 X2dyYW51bGUpCj4+PiArewo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIG91dF9ydHQ7Cj4+PiAr wqDCoMKgIGludCByZXQ7Cj4+PiArCj4+PiArwqDCoMKgIHJldCA9IHJtaV9ydHRfZm9sZCh2aXJ0 X3RvX3BoeXMocmVhbG0tPnJkKSwgYWRkciwgbGV2ZWwsICZvdXRfcnR0KTsKPj4+ICsKPj4+ICvC oMKgwqAgaWYgKFJNSV9SRVRVUk5fU1RBVFVTKHJldCkgPT0gUk1JX1NVQ0NFU1MgJiYgcnR0X2dy YW51bGUpCj4+PiArwqDCoMKgwqDCoMKgwqAgKnJ0dF9ncmFudWxlID0gb3V0X3J0dDsKPj4+ICsK Pj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCByZWFs bV9kZXN0cm95X3Byb3RlY3RlZChzdHJ1Y3QgcmVhbG0gKnJlYWxtLAo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGlwYSwKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyAqbmV4dF9hZGRyKQo+ Pj4gK3sKPj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyByZCA9IHZpcnRfdG9fcGh5cyhyZWFsbS0+ cmQpOwo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGFkZHI7Cj4+PiArwqDCoMKgIHBoeXNfYWRk cl90IHJ0dDsKPj4+ICvCoMKgwqAgaW50IHJldDsKPj4+ICsKPj4+ICtsb29wOgo+Pj4gK8KgwqDC oCByZXQgPSBybWlfZGF0YV9kZXN0cm95KHJkLCBpcGEsICZhZGRyLCBuZXh0X2FkZHIpOwo+Pj4g K8KgwqDCoCBpZiAoUk1JX1JFVFVSTl9TVEFUVVMocmV0KSA9PSBSTUlfRVJST1JfUlRUKSB7Cj4+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKCpuZXh0X2FkZHIgPiBpcGEpCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gMDsgLyogVU5BU1NJR05FRCAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKg IHJ0dCA9IGFsbG9jX2RlbGVnYXRlZF9wYWdlKHJlYWxtLCBOVUxMKTsKPj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAoV0FSTl9PTihydHQgPT0gUEhZU19BRERSX01BWCkpCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gLTE7Cj4+PiArwqDCoMKgwqDCoMKgwqAgLyogQVNTSUdORUQgLSBp cGEgaXMgbWFwcGVkIGFzIGEgYmxvY2ssIHNvIHNwbGl0ICovCj4+PiArwqDCoMKgwqDCoMKgwqAg cmV0ID0gcmVhbG1fcnR0X2NyZWF0ZShyZWFsbSwgaXBhLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJNSV9SRVRVUk5fSU5ERVgocmV0KSArIDEsIHJ0 dCk7Cj4+Cj4+IENvdWxkIHdlIG5vdCBnbyBhbGwgdGhlIHdheSB0byBMMyAocmF0aGVyIHRoYW4g MSBsZXZlbCBkZWVwZXIpIGFuZCB0cnkKPj4gYWdhaW4gPyBUaGF0IHdheSwgd2UgYXJlIGNvdmVy ZWQgZm9yIGJsb2NrIG1hcHBpbmdzIGF0IEwxICgxRykuCj4gCj4gSSBkb24ndCB0aGluayB0aGlz IHNpdHVhdGlvbiBjYW4gaGFwcGVuLiBUaGUgc3BlYyBzdGF0ZXMgdGhhdCBmb3IKPiBSTUlfRVJS T1JfUlRUIGVpdGhlciB0b3A+aXBhIChVTkFTU0lHTkVELCBpbiB3aGljaCBjYXNlIHdlJ3ZlIGJh aWxlZCBvdXQKPiBhYm92ZSkgb3IgdG9wPT1pcGEgKEFTU0lHTkVEKSBpbiB3aGljaCBjYXNlIFJN SV9SRVRVUk5fSU5ERVgocmV0KSBtdXN0Cj4gZXF1YWwgMi4KCkl0IGNvdWxkIGJlIDEgYXMgUk1N IHNwZWMgYWxsb3dzIEJsb2NrIG1hcHBpbmcgYXQgTDEuIEJ1dCBpZiB3ZSBkb24ndApmb2xkIHRv IHRoYXQgbGV2ZWwgaW4gS1ZNLCB0aGUgY3VycmVudCBjb2RlIG1heSBiZSBmaW5lLgoKPiAKPiBT byBpbiB0aGlzIGNhc2UgcmVhbG1fcnR0X2NyZWF0ZSgpIHdpbGwgYWx3YXlzIGJlIGNhbGxlZCB3 aXRoIGxldmVsPTMuCj4gCj4gSSBjYW4gc2ltcGxpZnkgdGhpcyBieSBleHBsaWNpdGx5IHBhc3Np bmcgMyBhbmQgYWRkaW5nIGEgV0FSTl9PTigpIGZvcgo+IFJNSV9SRVRVUk5fSU5ERVgocmV0KSAh PSAyLgoKWWVzIHBsZWFzZSwgaWYgd2UgZG9uJ3QgZm9sZCBhbGwgdGhlIHdheSB1cCB0byBMMS4K ClRoYW5rcwpTdXp1a2kKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=