From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ayan Halder Subject: Re: [RFC AFBC 07/12] drm/arm/malidp: Define the constraints on each supported drm_fourcc format for the AFBC modifiers. Date: Fri, 14 Dec 2018 14:23:00 +0000 Message-ID: <20181214142259.GD19564@arm.com> References: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> <1543836703-8491-8-git-send-email-ayan.halder@arm.com> <20181204174912.GO988@e110455-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70075.outbound.protection.outlook.com [40.107.7.75]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6BB1E6F521 for ; Fri, 14 Dec 2018 14:23:03 +0000 (UTC) In-Reply-To: <20181204174912.GO988@e110455-lin.cambridge.arm.com> Content-Language: en-US Content-ID: <6A485C71CB4BB546B626E56FE0E04B02@eurprd08.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau Cc: "arnd@arndb.de" , "corbet@lwn.net" , "airlied@linux.ie" , "gregkh@linuxfoundation.org" , "linux-doc@vger.kernel.org" , "nicolas.ferre@microchip.com" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "maxime.ripard@bootlin.com" , "malidp@foss.arm.com" , "mchehab+samsung@kernel.org" , "akpm@linux-foundation.org" , nd , "sean@poorly.run" , "davem@davemloft.net" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBEZWMgMDQsIDIwMTggYXQgMDU6NDk6MTJQTSArMDAwMCwgTGl2aXUgRHVkYXUgd3Jv dGU6Cj4gT24gTW9uLCBEZWMgMDMsIDIwMTggYXQgMTE6MzI6MDFBTSArMDAwMCwgQXlhbiBIYWxk ZXIgd3JvdGU6Cj4gPiBUaGUgY29uc3RyYWludHMgYXJlIGFzIGZvbGxvd3MgKGZvciBNYWxpLURQ IDUwMCwgNTUwLCA2NTApIDotCj4gPiAKPiA+IDEuIEFGQkMgaXMgbm90IHN1cHBvcnRlZCBmb3Ig dGhlIGZvcm1hdHMgZGVmaW5lZCBpbiBtYWxpZHBfaHdfZm9ybWF0X2lzX2xpbmVhcl9vbmx5KCkK PiA+IAo+ID4gMi4gU29tZSBvZiB0aGUgZm9ybWF0cyBhcmUgc3VwcG9ydGVkIG9ubHkgd2l0aCBB RkJDIG1vZGlmaWVycy4gVGh1cyB3ZSBoYXZlCj4gPiBpbnRyb2R1Y2VkIGEgbmV3IGZ1bmN0aW9u ICdtYWxpZHBfaHdfZm9ybWF0X2lzX2FmYmNfb25seSgpJyB3aGljaCB2ZXJpZmllcyB0aGUgc2Ft ZS4KPiA+IAo+ID4gMy4gQUZCQ19GT1JNQVRfTU9EX1lUUiBuZWVkcyB0byBiZSBwcm92aWRlZCBm b3IgYW55IFJHQiBmb3JtYXQuCj4gPiAKPiA+IDQuIEZvcm1hdHMgPD0gMTZicHAgY2Fubm90IHN1 cHBvcnQgQUZCQ19GT1JNQVRfTU9EX1NQTElULgo+ID4gCj4gPiA1LiBDQlIgc2hvdWxkIG5vdCBi ZSBzZXQgZm9yIG5vbi1zdWJzYW1wbGVkIGZvcm1hdHMuCj4gPiAKPiA+IDYuIFNNQVJUIGxheWVy IGRvZXMgbm90IHN1cHBvcnQgZnJhbWVidWZmZXIgd2l0aCBBRkJDIG1vZGlmaWVycy4KPiA+IFJl dHVybiAtRUlOVkFMIGZvciBzdWNoIGEgc2NlbmFyaW8uCj4gPiAKPiA+IDcuIEFGQkNfRk9STUFU X01PRF9ZVFIgaXMgbm90IHN1cHBvcnRlZCBmb3IgYW55IFlVViBmb3JtYXRzLgo+ID4gCj4gPiA4 LiBGb3JtYXRzIHdoaWNoIGFyZSBzdWJzYW1wbGVkIGNhbm5vdCBzdXBwb3J0IEFGQkNfRk9STUFU X01PRF9TUExJVC4gSG93ZXZlciBpbgo+ID4gRFA1NTAsIFlVVl80MjBfMTBCSVQgaXMgc3VwcG9y dGVkIHdpdGggQUZCQ19GT1JNQVRfTU9EX1NQTElULiBUaGlzIGZlYXR1cmUgaGFzCj4gPiBiZWVu IGlkZW50aWZpZWQgd2l0aCBNQUxJRFBfREVWSUNFX0FGQkNfWVVWXzQyMF8xMF9TVVBQT1JUX1NQ TElULgo+ID4gCj4gPiA5LiBJbiBEUDU1MCBhbmQgRFA2NTAsIGZvciBZVVlWLCB0aGUgaGFyZHdh cmUgc3VwcG9ydHMgZGlmZmVyZW50IGZvcm1hdC1pZHMgdG8KPiA+IGJlIHVzZWQgd2l0aCBhbmQg d2l0aG91dCBBRkJDIG1vZGlmaWVyLiBXZSBoYXZlIHVzZWQgdGhlIGZlYXR1cmUKPiA+ICdNQUxJ RFBfREVWSUNFX0FGQkNfWVVZVl9VU0VfNDIyX1AyJyB0byBpZGVudGlmeSB0aGlzIGNoYXJhY3Rl cmlzdGljLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBBeWFuIEt1bWFyIGhhbGRlciA8YXlhbi5o YWxkZXJAYXJtLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Ry di5jICAgIHwgIDIzICstLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYu aCAgICB8ICAgNiArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMgICAgIHwg IDcxICsrKysrKysrKysrKysrKysrKystLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRw X2h3LmggICAgIHwgICA1ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYyAg ICAgfCAgIDIgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9wbGFuZXMuYyB8IDEy NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ICA2IGZpbGVzIGNoYW5n ZWQsIDE5OSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9tYWxpZHBfZHJ2LmMKPiA+IGluZGV4IGI4ZGI5MmYuLjJmMGI1NTMgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9tYWxpZHBfZHJ2LmMKPiA+IEBAIC0yNjQsMjkgKzI2NCw4IEBAIHN0YXRpYyBib29s Cj4gPiAgbWFsaWRwX3ZlcmlmeV9hZmJjX2ZyYW1lYnVmZmVyX2NhcHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2Rl X2NtZCkKPiA+ICB7Cj4gPiAtCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm87Cj4g PiAtCj4gPiAtCWlmICgobW9kZV9jbWQtPm1vZGlmaWVyWzBdID4+IDU2KSAhPSBEUk1fRk9STUFU X01PRF9WRU5ET1JfQVJNKSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJVbmtub3duIG1vZGlmaWVy IChub3QgQXJtKVxuIik7Cj4gPiArCWlmIChtYWxpZHBfZm9ybWF0X21vZF9zdXBwb3J0ZWQoZGV2 LCBtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCBtb2RlX2NtZC0+bW9kaWZpZXJbMF0pID09IGZhbHNl KQo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCWlmIChtb2RlX2NtZC0+ bW9kaWZpZXJbMF0gJgo+ID4gLQkgICAgfkRSTV9GT1JNQVRfTU9EX0FSTV9BRkJDKEFGQkNfTU9E X1ZBTElEX0JJVFMpKSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBtb2RpZmll cnNcbiIpOwo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCWluZm8gPSBk cm1fZ2V0X2Zvcm1hdF9pbmZvKGRldiwgbW9kZV9jbWQpOwo+ID4gLQlpZiAoIWluZm8pIHsKPiA+ IC0JCURSTV9ERUJVR19LTVMoIlVuYWJsZSB0byBnZXQgdGhlIGZvcm1hdCBpbmZvcm1hdGlvblxu Iik7Cj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiAtCX0KPiA+IC0KPiA+IC0JaWYgKGluZm8tPm51 bV9wbGFuZXMgIT0gMSkgewo+ID4gLQkJRFJNX0RFQlVHX0tNUygiQUZCQyBidWZmZXJzIGV4cGVj dCBvbmUgcGxhbmVcbiIpOwo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gLQl9Cj4gPiAgCj4gPiAg CWlmIChtb2RlX2NtZC0+b2Zmc2V0c1swXSAhPSAwKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJB RkJDIGJ1ZmZlcnMnIHBsYW5lIG9mZnNldCBzaG91bGQgYmUgMFxuIik7Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vYXJt L21hbGlkcF9kcnYuaAo+ID4gaW5kZXggYjc2Yzg2Zi4uMDE5YTY4MiAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYXJtL21hbGlkcF9kcnYuaAo+ID4gQEAgLTkwLDYgKzkwLDEyIEBAIHN0cnVjdCBtYWxpZHBf Y3J0Y19zdGF0ZSB7Cj4gPiAgaW50IG1hbGlkcF9kZV9wbGFuZXNfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtKTsKPiA+ICBpbnQgbWFsaWRwX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtKTsKPiA+ICAKPiA+ICtib29sIG1hbGlkcF9od19mb3JtYXRfaXNfbGluZWFyX29ubHkodTMy IGZvcm1hdCk7Cj4gPiArYm9vbCBtYWxpZHBfaHdfZm9ybWF0X2lzX2FmYmNfb25seSh1MzIgZm9y bWF0KTsKPiA+ICsKPiA+ICtib29sIG1hbGlkcF9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtLAo+ID4gKwkJCQkgdTMyIGZvcm1hdCwgdTY0IG1vZGlmaWVyKTsKPiA+ ICsKPiA+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4gPiAgdm9pZCBtYWxpZHBfZXJyb3Ioc3Ry dWN0IG1hbGlkcF9kcm0gKm1hbGlkcCwKPiA+ICAJCSAgc3RydWN0IG1hbGlkcF9lcnJvcl9zdGF0 cyAqZXJyb3Jfc3RhdHMsIHUzMiBzdGF0dXMsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FybS9tYWxpZHBfaHcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMKPiA+ IGluZGV4IDI1YWM1ODkwLi40YTc3NGJlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FybS9tYWxpZHBfaHcuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcu Ywo+ID4gQEAgLTYwLDYgKzYwLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtYWxpZHBfZm9ybWF0 X2lkIG1hbGlkcDUwMF9kZV9mb3JtYXRzW10gPSB7Cj4gPiAgI2RlZmluZSBNQUxJRFBfSUQoX19n cm91cCwgX19mb3JtYXQpIFwKPiA+ICAJKCgoKF9fZ3JvdXApICYgMHg3KSA8PCAzKSB8ICgoX19m b3JtYXQpICYgMHg3KSkKPiA+ICAKPiA+ICsjZGVmaW5lIEFGQkNfWVVWXzQyMl9GT1JNQVRfSUQJ TUFMSURQX0lEKDUsIDEpCj4gPiArCj4gPiAgI2RlZmluZSBNQUxJRFBfQ09NTU9OX0ZPUk1BVFMg XAo+ID4gIAkvKiAgICBmb3VyY2MsICAgbGF5ZXJzIHN1cHBvcnRpbmcgdGhlIGZvcm1hdCwgICAg ICBpbnRlcm5hbCBpZCAgICovIFwKPiA+ICAJeyBEUk1fRk9STUFUX0FSR0IyMTAxMDEwLCBERV9W SURFTzEgfCBERV9HUkFQSElDUzEgfCBERV9WSURFTzIgfCBTRV9NRU1XUklURSwgTUFMSURQX0lE KDAsIDApIH0sIFwKPiA+IEBAIC04ODcsNyArODg5LDEwIEBAIGNvbnN0IHN0cnVjdCBtYWxpZHBf aHcgbWFsaWRwX2RldmljZVtNQUxJRFBfTUFYX0RFVklDRVNdID0gewo+ID4gIAkJCS5zZV9iYXNl ID0gTUFMSURQNTUwX1NFX0JBU0UsCj4gPiAgCQkJLmRjX2Jhc2UgPSBNQUxJRFA1NTBfRENfQkFT RSwKPiA+ICAJCQkub3V0X2RlcHRoX2Jhc2UgPSBNQUxJRFA1NTBfREVfT1VUUFVUX0RFUFRILAo+ ID4gLQkJCS5mZWF0dXJlcyA9IE1BTElEUF9SRUdNQVBfSEFTX0NMRUFSSVJRIHwgTUFMSURQX0RF VklDRV9BRkJDX1NVUFBPUlRfU1BMSVQgfCBBRkJDX1NVUFBPUlRfU1BMSVRfV0lUSF9ZVVZfNDIw XzEwLAo+ID4gKwkJCS5mZWF0dXJlcyA9IE1BTElEUF9SRUdNQVBfSEFTX0NMRUFSSVJRIHwKPiA+ ICsJCQkJICAgIE1BTElEUF9ERVZJQ0VfQUZCQ19TVVBQT1JUX1NQTElUIHwKPiA+ICsJCQkJICAg IE1BTElEUF9ERVZJQ0VfQUZCQ19ZVVZfNDIwXzEwX1NVUFBPUlRfU1BMSVQgfAo+IAo+IFBsZWFz ZSByb2xsIHNvbWUgb2YgdGhlc2UgY2hhbmdlcyBpbnRvIHBhdGNoIDUvMTIuCj4gCj4gPiArCQkJ CSAgICBNQUxJRFBfREVWSUNFX0FGQkNfWVVZVl9VU0VfNDIyX1AyLAo+ID4gIAkJCS5uX2xheWVy cyA9IEFSUkFZX1NJWkUobWFsaWRwNTUwX2xheWVycyksCj4gPiAgCQkJLmxheWVycyA9IG1hbGlk cDU1MF9sYXllcnMsCj4gPiAgCQkJLmRlX2lycV9tYXAgPSB7Cj4gPiBAQCAtOTMzLDcgKzkzOCw5 IEBAIGNvbnN0IHN0cnVjdCBtYWxpZHBfaHcgbWFsaWRwX2RldmljZVtNQUxJRFBfTUFYX0RFVklD RVNdID0gewo+ID4gIAkJCS5zZV9iYXNlID0gTUFMSURQNTUwX1NFX0JBU0UsCj4gPiAgCQkJLmRj X2Jhc2UgPSBNQUxJRFA1NTBfRENfQkFTRSwKPiA+ICAJCQkub3V0X2RlcHRoX2Jhc2UgPSBNQUxJ RFA1NTBfREVfT1VUUFVUX0RFUFRILAo+ID4gLQkJCS5mZWF0dXJlcyA9IE1BTElEUF9SRUdNQVBf SEFTX0NMRUFSSVJRIHwgTUFMSURQX0RFVklDRV9BRkJDX1NVUFBPUlRfU1BMSVQsCj4gPiArCQkJ LmZlYXR1cmVzID0gTUFMSURQX1JFR01BUF9IQVNfQ0xFQVJJUlEgfAo+ID4gKwkJCQkgICAgTUFM SURQX0RFVklDRV9BRkJDX1NVUFBPUlRfU1BMSVQgfAo+ID4gKwkJCQkgICAgTUFMSURQX0RFVklD RV9BRkJDX1lVWVZfVVNFXzQyMl9QMiwKPiA+ICAJCQkubl9sYXllcnMgPSBBUlJBWV9TSVpFKG1h bGlkcDY1MF9sYXllcnMpLAo+ID4gIAkJCS5sYXllcnMgPSBtYWxpZHA2NTBfbGF5ZXJzLAo+ID4g IAkJCS5kZV9pcnFfbWFwID0gewo+ID4gQEAgLTk4MiwxOSArOTg5LDczIEBAIGNvbnN0IHN0cnVj dCBtYWxpZHBfaHcgbWFsaWRwX2RldmljZVtNQUxJRFBfTUFYX0RFVklDRVNdID0gewo+ID4gIH07 Cj4gPiAgCj4gPiAgdTggbWFsaWRwX2h3X2dldF9mb3JtYXRfaWQoY29uc3Qgc3RydWN0IG1hbGlk cF9od19yZWdtYXAgKm1hcCwKPiA+IC0JCQkgICB1OCBsYXllcl9pZCwgdTMyIGZvcm1hdCkKPiA+ ICsJCQkgICB1OCBsYXllcl9pZCwgdTMyIGZvcm1hdCwgYm9vbCBoYXNfbW9kaWZpZXIpCj4gPiAg ewo+ID4gIAl1bnNpZ25lZCBpbnQgaTsKPiA+ICAKPiA+ICAJZm9yIChpID0gMDsgaSA8IG1hcC0+ bl9waXhlbF9mb3JtYXRzOyBpKyspIHsKPiA+ICAJCWlmICgoKG1hcC0+cGl4ZWxfZm9ybWF0c1tp XS5sYXllciAmIGxheWVyX2lkKSA9PSBsYXllcl9pZCkgJiYKPiA+IC0JCSAgICAobWFwLT5waXhl bF9mb3JtYXRzW2ldLmZvcm1hdCA9PSBmb3JtYXQpKQo+ID4gLQkJCXJldHVybiBtYXAtPnBpeGVs X2Zvcm1hdHNbaV0uaWQ7Cj4gPiArCQkgICAgKG1hcC0+cGl4ZWxfZm9ybWF0c1tpXS5mb3JtYXQg PT0gZm9ybWF0KSkgewo+ID4gKwo+ID4gKwkJCS8qCj4gPiArCQkJICogSW4gc29tZSBEUDU1MCBh bmQgRFA2NTAsIERSTV9GT1JNQVRfWVVZViArIEFGQkMgbW9kaWZpZXIKPiA+ICsJCQkgKiBpcyBz dXBwb3J0ZWQgYnkgYSBkaWZmZXJlbnQgaC93IGZvcm1hdCBpZCB0aGFuCj4gPiArCQkJICogRFJN X0ZPUk1BVF9ZVVlWIChvbmx5KS4KPiA+ICsJCQkgKi8KPiA+ICsJCQlpZiAoZm9ybWF0ID09IERS TV9GT1JNQVRfWVVZViAmJgo+ID4gKwkJCSAgICAoaGFzX21vZGlmaWVyKSAmJgo+ID4gKwkJCSAg ICAobWFwLT5mZWF0dXJlcyAmIE1BTElEUF9ERVZJQ0VfQUZCQ19ZVVlWX1VTRV80MjJfUDIpKQo+ ID4gKwkJCQlyZXR1cm4gQUZCQ19ZVVZfNDIyX0ZPUk1BVF9JRDsKPiA+ICsJCQllbHNlCj4gPiAr CQkJCXJldHVybiBtYXAtPnBpeGVsX2Zvcm1hdHNbaV0uaWQ7Cj4gPiArCQl9Cj4gPiAgCX0KPiA+ ICAKPiA+ICAJcmV0dXJuIE1BTElEUF9JTlZBTElEX0ZPUk1BVF9JRDsKPiA+ICB9Cj4gPiAgCj4g PiArYm9vbCBtYWxpZHBfaHdfZm9ybWF0X2lzX2xpbmVhcl9vbmx5KHUzMiBmb3JtYXQpCj4gPiAr ewo+ID4gKwlzd2l0Y2ggKGZvcm1hdCkgewo+ID4gKwljYXNlIERSTV9GT1JNQVRfQVJHQjIxMDEw MTA6Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JBMTAxMDEwMjoKPiA+ICsJY2FzZSBEUk1fRk9S TUFUX0JHUkExMDEwMTAyOgo+ID4gKwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4gPiArCWNh c2UgRFJNX0ZPUk1BVF9SR0JBODg4ODoKPiA+ICsJY2FzZSBEUk1fRk9STUFUX0JHUkE4ODg4Ogo+ ID4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdC ODg4ODoKPiA+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Ogo+ID4gKwljYXNlIERSTV9GT1JN QVRfQkdSWDg4ODg6Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6Cj4gPiArCWNhc2UgRFJN X0ZPUk1BVF9SR0I1NjU6Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMTU1NToKPiA+ICsJY2Fz ZSBEUk1fRk9STUFUX1JHQkE1NTUxOgo+ID4gKwljYXNlIERSTV9GT1JNQVRfQkdSQTU1NTE6Cj4g PiArCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ID4gKwljYXNlIERSTV9GT1JNQVRfWFlVVjg4ODg6 Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoKPiA+ICsJY2FzZSBEUk1fRk9STUFU X1gwTDI6Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9YMEwwOgo+ID4gKwkJcmV0dXJuIHRydWU7Cj4g PiArCWRlZmF1bHQ6Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4g PiArYm9vbCBtYWxpZHBfaHdfZm9ybWF0X2lzX2FmYmNfb25seSh1MzIgZm9ybWF0KQo+ID4gK3sK PiA+ICsJc3dpdGNoIChmb3JtYXQpIHsKPiA+ICsJY2FzZSBEUk1fRk9STUFUX1ZVWTg4ODoKPiA+ ICsJY2FzZSBEUk1fRk9STUFUX1ZVWTEwMTAxMDoKPiA+ICsJY2FzZSBEUk1fRk9STUFUX1lVVjQy MF84QklUOgo+ID4gKwljYXNlIERSTV9GT1JNQVRfWVVWNDIwXzEwQklUOgo+ID4gKwkJcmV0dXJu IHRydWU7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICt9 Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgbWFsaWRwX2h3X2NsZWFyX2lycShzdHJ1Y3QgbWFsaWRw X2h3X2RldmljZSAqaHdkZXYsIHU4IGJsb2NrLCB1MzIgaXJxKQo+ID4gIHsKPiA+ICAJdTMyIGJh c2UgPSBtYWxpZHBfZ2V0X2Jsb2NrX2Jhc2UoaHdkZXYsIGJsb2NrKTsKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9ody5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9t YWxpZHBfaHcuaAo+ID4gaW5kZXggMjdiOTA3Zi4uNTIxODhmMCAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h cm0vbWFsaWRwX2h3LmgKPiA+IEBAIC05Nyw3ICs5Nyw4IEBAIHN0cnVjdCBtYWxpZHBfc2VfY29u ZmlnIHsKPiA+ICAvKiByZWdtYXAgZmVhdHVyZXMgKi8KPiA+ICAjZGVmaW5lIE1BTElEUF9SRUdN QVBfSEFTX0NMRUFSSVJRCQkJCUJJVCgwKQo+ID4gICNkZWZpbmUgTUFMSURQX0RFVklDRV9BRkJD X1NVUFBPUlRfU1BMSVQJCQlCSVQoMSkKPiA+IC0jZGVmaW5lIEFGQkNfU1VQUE9SVF9TUExJVF9X SVRIX1lVVl80MjBfMTAJCQlCSVQoMikKPiA+ICsjZGVmaW5lIE1BTElEUF9ERVZJQ0VfQUZCQ19Z VVZfNDIwXzEwX1NVUFBPUlRfU1BMSVQJCUJJVCgyKQo+ID4gKyNkZWZpbmUgTUFMSURQX0RFVklD RV9BRkJDX1lVWVZfVVNFXzQyMl9QMgkJCUJJVCgzKQo+ID4gIAo+ID4gIHN0cnVjdCBtYWxpZHBf aHdfcmVnbWFwIHsKPiA+ICAJLyogYWRkcmVzcyBvZmZzZXQgb2YgdGhlIERFIHJlZ2lzdGVyIGJh bmsgKi8KPiA+IEBAIC0zMjMsNyArMzI0LDcgQEAgaW50IG1hbGlkcF9zZV9pcnFfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtLCBpbnQgaXJxKTsKPiA+ICB2b2lkIG1hbGlkcF9zZV9pcnFfZmlu aShzdHJ1Y3QgbWFsaWRwX2h3X2RldmljZSAqaHdkZXYpOwo+ID4gIAo+ID4gIHU4IG1hbGlkcF9o d19nZXRfZm9ybWF0X2lkKGNvbnN0IHN0cnVjdCBtYWxpZHBfaHdfcmVnbWFwICptYXAsCj4gPiAt CQkJICAgdTggbGF5ZXJfaWQsIHUzMiBmb3JtYXQpOwo+ID4gKwkJCSAgIHU4IGxheWVyX2lkLCB1 MzIgZm9ybWF0LCBib29sIGhhc19tb2RpZmllcik7Cj4gPiAgCj4gPiAgc3RhdGljIGlubGluZSB1 OCBtYWxpZHBfaHdfZ2V0X3BpdGNoX2FsaWduKHN0cnVjdCBtYWxpZHBfaHdfZGV2aWNlICpod2Rl diwgYm9vbCByb3RhdGVkKQo+ID4gIHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YXJtL21hbGlkcF9tdy5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYwo+ID4gaW5k ZXggOTE0NzJlNS4uMDQ4NDc0NCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v bWFsaWRwX213LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX213LmMKPiA+ IEBAIC0xNDMsNyArMTQzLDcgQEAgbWFsaWRwX213X2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+ICAKPiA+ICAJbXdfc3RhdGUtPmZvcm1hdCA9Cj4g PiAgCQltYWxpZHBfaHdfZ2V0X2Zvcm1hdF9pZCgmbWFsaWRwLT5kZXYtPmh3LT5tYXAsIFNFX01F TVdSSVRFLAo+ID4gLQkJCQkJZmItPmZvcm1hdC0+Zm9ybWF0KTsKPiA+ICsJCQkJCWZiLT5mb3Jt YXQtPmZvcm1hdCwgISFmYi0+bW9kaWZpZXIpOwo+ID4gIAlpZiAobXdfc3RhdGUtPmZvcm1hdCA9 PSBNQUxJRFBfSU5WQUxJRF9GT1JNQVRfSUQpIHsKPiA+ICAJCXN0cnVjdCBkcm1fZm9ybWF0X25h bWVfYnVmIGZvcm1hdF9uYW1lOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vbWFsaWRwX3BsYW5lcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfcGxhbmVz LmMKPiA+IGluZGV4IGNkNjBmNzMuLjA3NjVjZWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYXJtL21hbGlkcF9wbGFuZXMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9t YWxpZHBfcGxhbmVzLmMKPiA+IEBAIC01Miw2ICs1Miw4IEBACj4gPiAgI2RlZmluZSBNQUxJRFA1 NTBfTFNfRU5BQkxFCQkweDAxYwo+ID4gICNkZWZpbmUgTUFMSURQNTUwX0xTX1IxX0lOX1NJWkUJ CTB4MDIwCj4gPiAgCj4gPiArI2RlZmluZSBNT0RJRklFUlNfQ09VTlRfTUFYCQkxNQo+ID4gKwo+ ID4gIC8qCj4gPiAgICogVGhpcyA0LWVudHJ5IGxvb2stdXAtdGFibGUgaXMgdXNlZCB0byBkZXRl cm1pbmUgdGhlIGZ1bGwgOC1iaXQgYWxwaGEgdmFsdWUKPiA+ICAgKiBmb3IgZm9ybWF0cyB3aXRo IDEtIG9yIDItYml0IGFscGhhIGNoYW5uZWxzLgo+ID4gQEAgLTE0NSw2ICsxNDcsMTE3IEBAIHN0 YXRpYyB2b2lkIG1hbGlkcF9wbGFuZV9hdG9taWNfcHJpbnRfc3RhdGUoc3RydWN0IGRybV9wcmlu dGVyICpwLAo+ID4gIAlkcm1fcHJpbnRmKHAsICJcdG1tdV9wcmVmZXRjaF9wZ3NpemU9JWRcbiIs IG1zLT5tbXVfcHJlZmV0Y2hfcGdzaXplKTsKPiA+ICB9Cj4gPiAgCj4gPiArYm9vbCBtYWxpZHBf Zm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPiA+ICsJCQkJIHUz MiBmb3JtYXQsIHU2NCBtb2RpZmllcikKPiA+ICt7Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZm9y bWF0X2luZm8gKmluZm87Cj4gPiArCWNvbnN0IHU2NCAqbW9kaWZpZXJzOwo+ID4gKwlzdHJ1Y3Qg bWFsaWRwX2RybSAqbWFsaWRwID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiA+ICsJY29uc3Qgc3RydWN0 IG1hbGlkcF9od19yZWdtYXAgKm1hcCA9ICZtYWxpZHAtPmRldi0+aHctPm1hcDsKPiA+ICsKPiA+ ICsJaWYgKFdBUk5fT04obW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkpCj4gPiAr CQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCS8qIFNvbWUgcGl4ZWwgZm9ybWF0cyBhcmUgc3Vw cG9ydGVkIHdpdGhvdXQgYW55IG1vZGlmaWVyICovCj4gPiArCWlmIChtb2RpZmllciA9PSBEUk1f Rk9STUFUX01PRF9MSU5FQVIpIHsKPiA+ICsJCS8qIEhvd2V2ZXIgdGhlc2UgcGl4ZWwgZm9ybWF0 cyBuZWVkIHRvIGJlIHN1cHBvcnRlZCB3aXRoCj4gCj4gTml0cGljazogbXVsdGktbGluZSBjb21t ZW50IHN0eWxlIGlzIHRvIHN0YXJ0IHdpdGggYSBsaW5lIHRoYXQgY29udGFpbnMKPiBvbmx5IHRo ZSBtYXJrZXIgZm9yIHRoZSBzdGFydCBvZiB0aGUgY29tbWVudC4KQWdyZWVkCj4gCj4gPiArCQkg KiBtb2RpZmllcnMgb25seQo+ID4gKwkJICovCj4gPiArCQlyZXR1cm4gIW1hbGlkcF9od19mb3Jt YXRfaXNfYWZiY19vbmx5KGZvcm1hdCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYgKChtb2RpZmll ciA+PiA1NikgIT0gRFJNX0ZPUk1BVF9NT0RfVkVORE9SX0FSTSkgewo+ID4gKwkJRFJNX0VSUk9S KCJVbmtub3duIG1vZGlmaWVyIChub3QgQXJtKVxuIik7Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4g PiArCX0KPiA+ICsKPiA+ICsJaWYgKG1vZGlmaWVyICYKPiA+ICsJICAgIH5EUk1fRk9STUFUX01P RF9BUk1fQUZCQyhBRkJDX01PRF9WQUxJRF9CSVRTKSkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygi VW5zdXBwb3J0ZWQgbW9kaWZpZXJzXG4iKTsKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsJfQo+ ID4gKwo+ID4gKwltb2RpZmllcnMgPSBtYWxpZHBfZm9ybWF0X21vZGlmaWVyczsKPiAKPiBBY3R1 YWxseSwgbG9va2luZyBhZ2FpbiBhdCBwYXRjaCA1LzEyIGl0IGxvb2tzIHRvIG1lIGxpa2UgeW91 IGNvdWxkIHJvbGwKPiBpdCBpbnRvIHRoaXMgcGF0Y2ggY29tcGxldGVseS4KPgpBZ3JlZWQsIEkg d2lsbCBtZXJnZSBwYXRjaCA1LzEyICJEZWZpbmluZyBhIGNvbW1vbiBsaXN0IG9mIEFGQkMKbW9k aWZpZXJzIiB3aXRoIHRoZSBjdXJyZW50IHBhdGNoICgiYWRkaW5nIGNvbnN0cmFpbnRzIGZvciBl YWNoIGZvcm1hdAphbmQgbW9kaWZpZXIiKS4KCj4gPiArCXdoaWxlICgqbW9kaWZpZXJzICE9IERS TV9GT1JNQVRfTU9EX0lOVkFMSUQpIHsKPiA+ICsJCWlmICgqbW9kaWZpZXJzID09IG1vZGlmaWVy KSB7Cj4gPiArCQkJLyogU1BMSVQgYnVmZmVycyBtdXN0IHVzZSBTUEFSU0UgbGF5b3V0ICovCj4g PiArCQkJaWYgKFdBUk5fT05fT05DRSgobW9kaWZpZXIgJiBBRkJDX1NQTElUKSAmJiAhKG1vZGlm aWVyICYgQUZCQ19TUEFSU0UpKSkKPiA+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKwkJ CS8qIENCUiBvbmx5IGFwcGxpZXMgdG8gWVVWIGZvcm1hdHMsIHdoZXJlIFlUUiBzaG91bGQgYmUg YWx3YXlzIDAgKi8KPiA+ICsJCQlpZiAoV0FSTl9PTl9PTkNFKChtb2RpZmllciAmIEFGQkNfQ0JS KSAmJiAobW9kaWZpZXIgJiBBRkJDX1lUUikpKQo+ID4gKwkJCQlyZXR1cm4gZmFsc2U7Cj4gCj4g WW91IGNhbiB0YWtlIHRoZXNlIGNoZWNrcyBvdXRzaWRlIHRoZSB3aGlsZSgpIGxvb3AgYXMgdGhl eSB0ZXN0IGlmIHRoZQo+IG1vZGlmaWVyIHBhc3NlZCBhcyBhIHBhcmFtZXRlciBpcyB2YWxpZCwg d2hpY2ggeW91IHNob3VsZCBjaGVjayBiZWZvcmUKPiBydW5uaW5nIHRocm91Z2ggdGhlIGFycmF5 LiBJZiB5b3UgZG8gdGhhdCwgdGhlbiB0aGUgbG9vcCB0aHJvdWdoIHRoZQo+IG1hbGlkcF9mb3Jt YXRfbW9kaWZpZXJzIGlzIGEgc2ltcGxlICJpZiBmb3VuZCwgYnJlYWsgb3V0IG9mIGxvb3AiIGFu ZAo+IHRoZW4gdGhlIG5leHQgY2hlY2sgd2lsbCByZXR1cm4gZmFsc2UgaWYgeW91IGl0ZXJhdGVk IG92ZXIgdGhlIGVudGlyZQo+IGxpc3QuCj4gCkFncmVlZAo+ID4gKwo+ID4gKwkJCWJyZWFrOwo+ ID4gKwkJfQo+ID4gKwo+ID4gKwkJbW9kaWZpZXJzKys7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyog cmV0dXJuIGZhbHNlLCBpZiB0aGUgbW9kaWZpZXIgd2FzIG5vdCBmb3VuZCAqLwo+ID4gKwlpZiAo Km1vZGlmaWVycyA9PSBEUk1fRk9STUFUX01PRF9JTlZBTElEKSB7Cj4gPiArCQlEUk1fREVCVUdf S01TKCJVbnN1cHBvcnRlZCBtb2RpZmllclxuIik7Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhmb3JtYXQpOwo+ID4gKwo+ID4g KwlpZiAoaW5mby0+bnVtX3BsYW5lcyAhPSAxKSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJBRkJD IGJ1ZmZlcnMgZXhwZWN0IG9uZSBwbGFuZVxuIik7Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJaWYgKG1hbGlkcF9od19mb3JtYXRfaXNfbGluZWFyX29ubHkoZm9ybWF0 KSA9PSB0cnVlKSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJHaXZlbiBmb3JtYXQgKDB4JXgpIGlz IHN1cHBvcnRlZCBpcyBsaW5lYXIgbW9kZSBvbmx5XG4iLCBmb3JtYXQpOwo+ID4gKwkJcmV0dXJu IGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFJHQiBmb3JtYXRzIG5lZWQg dG8gcHJvdmlkZSBZVFIgbW9kaWZpZXIgYW5kIFlVViBmb3JtYXRzIHNob3VsZCBub3QKPiA+ICsJ ICogcHJvdmlkZSBZVFIgbW9kaWZpZXIuCj4gPiArCSAqLwo+ID4gKwlpZiAoIShpbmZvLT5pc195 dXYpICE9ICEhKG1vZGlmaWVyICYgQUZCQ19GT1JNQVRfTU9EX1lUUikpIHsKPiA+ICsJCURSTV9E RUJVR19LTVMoIkFGQkNfRk9STUFUX01PRF9ZVFIgaXMgJXMgZm9yICVzIGZvcm1hdHNcbiIsCj4g PiArCQkJICAgICAgaW5mby0+aXNfeXV2ID8gImRpc2FsbG93ZWQiIDogIm1hbmRhdG9yeSIsCj4g PiArCQkJICAgICAgaW5mby0+aXNfeXV2ID8gIllVViIgOiAiUkdCIik7Cj4gPiArCQlyZXR1cm4g ZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYgKG1vZGlmaWVyICYgQUZCQ19TUExJVCkgewo+ ID4gKwkJaWYgKCFpbmZvLT5pc195dXYpIHsKPiA+ICsJCQlpZiAoZHJtX2Zvcm1hdF9wbGFuZV9j cHAoZm9ybWF0LCAwKSA8PSAyKSB7Cj4gPiArCQkJCURSTV9ERUJVR19LTVMoIlJHQiBmb3JtYXRz IDw9IDE2YnBwIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggU1BMSVRcbiIpOwo+ID4gKwkJCQlyZXR1 cm4gZmFsc2U7Cj4gPiArCQkJfQo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJaWYgKChkcm1fZm9ybWF0 X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKGZvcm1hdCkgIT0gMSkgfHwKPiA+ICsJCSAgICAoZHJt X2Zvcm1hdF92ZXJ0X2Nocm9tYV9zdWJzYW1wbGluZyhmb3JtYXQpICE9IDEpKSB7Cj4gPiArCQkJ aWYgKCEoZm9ybWF0ID09IERSTV9GT1JNQVRfWVVWNDIwXzEwQklUICYmCj4gPiArCQkJICAgICAo bWFwLT5mZWF0dXJlcyAmIE1BTElEUF9ERVZJQ0VfQUZCQ19ZVVZfNDIwXzEwX1NVUFBPUlRfU1BM SVQpKSkgewo+ID4gKwkJCQlEUk1fREVCVUdfS01TKCJGb3JtYXRzIHdoaWNoIGFyZSBzdWItc2Ft cGxlZCBzaG91bGQgbmV2ZXIgYmUgc3BsaXRcbiIpOwo+ID4gKwkJCQlyZXR1cm4gZmFsc2U7Cj4g PiArCQkJfQo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCWlmIChtb2RpZmllciAmIEFGQkNf Q0JSKSB7Cj4gPiArCQlpZiAoKGRybV9mb3JtYXRfaG9yel9jaHJvbWFfc3Vic2FtcGxpbmcoZm9y bWF0KSA9PSAxKSB8fAo+ID4gKwkJICAgIChkcm1fZm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBs aW5nKGZvcm1hdCkgPT0gMSkpIHsKPiA+ICsJCQlEUk1fREVCVUdfS01TKCJGb3JtYXRzIHdoaWNo IGFyZSBub3Qgc3ViLXNhbXBsZWQgc2hvdWxkIG5vdCBoYXZlIENCUiBzZXRcbiIpOwo+ID4gKwkJ CXJldHVybiBmYWxzZTsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgbWFsaWRwX2Zvcm1hdF9tb2Rfc3VwcG9ydGVk X3Blcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICsJCQkJCQkgIHUzMiBmb3Jt YXQsIHU2NCBtb2RpZmllcikKPiA+ICt7Cj4gPiArCXJldHVybiBtYWxpZHBfZm9ybWF0X21vZF9z dXBwb3J0ZWQocGxhbmUtPmRldiwgZm9ybWF0LCBtb2RpZmllcik7Cj4gPiArfQo+ID4gKwo+ID4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIG1hbGlkcF9kZV9wbGFuZV9mdW5j cyA9IHsKPiA+ICAJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFu ZSwKPiA+ICAJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5l LAo+ID4gQEAgLTE1Myw2ICsyNjYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9m dW5jcyBtYWxpZHBfZGVfcGxhbmVfZnVuY3MgPSB7Cj4gPiAgCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gbWFsaWRwX2R1cGxpY2F0ZV9wbGFuZV9zdGF0ZSwKPiA+ICAJLmF0b21pY19kZXN0cm95 X3N0YXRlID0gbWFsaWRwX2Rlc3Ryb3lfcGxhbmVfc3RhdGUsCj4gPiAgCS5hdG9taWNfcHJpbnRf c3RhdGUgPSBtYWxpZHBfcGxhbmVfYXRvbWljX3ByaW50X3N0YXRlLAo+ID4gKwkuZm9ybWF0X21v ZF9zdXBwb3J0ZWQgPSBtYWxpZHBfZm9ybWF0X21vZF9zdXBwb3J0ZWRfcGVyX3BsYW5lLAo+ID4g IH07Cj4gPiAgCj4gPiAgc3RhdGljIGludCBtYWxpZHBfc2VfY2hlY2tfc2NhbGluZyhzdHJ1Y3Qg bWFsaWRwX3BsYW5lICptcCwKPiA+IEBAIC00MDYsOCArNTIwLDggQEAgc3RhdGljIGludCBtYWxp ZHBfZGVfcGxhbmVfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCWZiID0gc3Rh dGUtPmZiOwo+ID4gIAo+ID4gIAltcy0+Zm9ybWF0ID0gbWFsaWRwX2h3X2dldF9mb3JtYXRfaWQo Jm1wLT5od2Rldi0+aHctPm1hcCwKPiA+IC0JCQkJCSAgICAgbXAtPmxheWVyLT5pZCwKPiA+IC0J CQkJCSAgICAgZmItPmZvcm1hdC0+Zm9ybWF0KTsKPiA+ICsJCQkJCSAgICAgbXAtPmxheWVyLT5p ZCwgZmItPmZvcm1hdC0+Zm9ybWF0LAo+ID4gKwkJCQkJICAgICAhIWZiLT5tb2RpZmllcik7Cj4g PiAgCWlmIChtcy0+Zm9ybWF0ID09IE1BTElEUF9JTlZBTElEX0ZPUk1BVF9JRCkKPiA+ICAJCXJl dHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gQEAgLTQ2OSw2ICs1ODMsMTIgQEAgc3RhdGljIGludCBt YWxpZHBfZGVfcGxhbmVfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJLyogU01BUlQgbGF5ZXIgZG9lcyBub3Qg c3VwcG9ydCBBRkJDICovCj4gPiArCWlmIChtcC0+bGF5ZXItPmlkID09IERFX1NNQVJUICYmIGZi LT5tb2RpZmllcikgewo+ID4gKwkJRFJNX0VSUk9SKCJBRkJDIGZyYW1lYnVmZmVyIG5vdCBzdXBw b3J0ZWQgaW4gU01BUlQgbGF5ZXIiKTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4g PiArCj4gPiAgCW1zLT5yb3RtZW1fc2l6ZSA9IDA7Cj4gPiAgCWlmIChzdGF0ZS0+cm90YXRpb24g JiBNQUxJRFBfUk9UQVRFRF9NQVNLKSB7Cj4gPiAgCQlpbnQgdmFsOwo+ID4gLS0gCj4gPiAyLjcu NAo+ID4gCj4gCj4gQmVzdCByZWdhcmRzLAo+IExpdml1Cj4gCj4gCj4gLS0gCj4gPT09PT09PT09 PT09PT09PT09PT0KPiB8IEkgd291bGQgbGlrZSB0byB8Cj4gfCBmaXggdGhlIHdvcmxkLCAgfAo+ IHwgYnV0IHRoZXkncmUgbm90IHwKPiB8IGdpdmluZyBtZSB0aGUgICB8Cj4gIFwgc291cmNlIGNv ZGUhICAvCj4gICAtLS0tLS0tLS0tLS0tLS0KPiAgICAgPz9cXyg/Pz8pXy8/Pwo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxp bmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK