From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on archive.lwn.net X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_PASS,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by archive.lwn.net (Postfix) with ESMTP id 7376C7D04D for ; Mon, 8 Jun 2020 10:41:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729326AbgFHKlh (ORCPT ); Mon, 8 Jun 2020 06:41:37 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:54632 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1729300AbgFHKlf (ORCPT ); Mon, 8 Jun 2020 06:41:35 -0400 X-UUID: a5affbf3929340e6891b13530b79bfa3-20200608 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=nDTwn3HYUdqhoihw53OorCtFz45EH3thj56ECqplSXA=; b=NNphv3hiYS7YOeaUTrfRc+YLS427m63OhTZ26J3ZQ8Y6QcIEv1ONJ/QYSC69ee8S6KnCVVCAvDQKSwt6ZH0dmA5HLBmGN1M0ogKCtFyQ+t5r7rujs0LrEhSgcikbv1DQ2jhKtlv49M3s+uLBTBCf80TNF5DqINhsMeFZMQGJ2h8=; X-UUID: a5affbf3929340e6891b13530b79bfa3-20200608 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 943911058; Mon, 08 Jun 2020 18:41:19 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 8 Jun 2020 18:41:16 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 8 Jun 2020 18:41:15 +0800 Message-ID: <1591612878.18435.5.camel@mtksdaap41> Subject: Re: [PATCH 01/10] media: mtk-vcodec: abstract firmware interface From: Tiffany Lin To: Alexandre Courbot CC: Andrew-CT Chen , Rui Wang , Yunfei Dong , "Pi-Hsun Shih" , Maoguang Meng , , , Date: Mon, 8 Jun 2020 18:41:18 +0800 In-Reply-To: <1591611416.18435.1.camel@mtksdaap41> References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-2-acourbot@chromium.org> <1591611416.18435.1.camel@mtksdaap41> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Archived-At: List-Archive: List-Post: T24gTW9uLCAyMDIwLTA2LTA4IGF0IDE4OjE2ICswODAwLCBUaWZmYW55IExpbiB3cm90ZToNCj4g T24gV2VkLCAyMDIwLTA1LTIwIGF0IDE3OjI3ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90 ZToNCj4gPiBGcm9tOiBZdW5mZWkgRG9uZyA8eXVuZmVpLmRvbmdAbWVkaWF0ZWsuY29tPg0KPiA+ IA0KPiA+IE1UODE4MydzIGNvZGVjIGZpcndtYXJlIGlzIHJ1biBieSBhIGRpZmZlcmVudCByZW1v dGUgcHJvY2Vzc29yIGZyb20NCj4gPiBNVDgxNzMuIFdoaWxlIHRoZSBmaXJtd2FyZSBpbnRlcmZh Y2UgaXMgYmFzaWNhbGx5IHRoZSBzYW1lLCB0aGUgd2F5IHRvDQo+ID4gaW52b2tlIGl0IGRpZmZl cnMuIEFic3RyYWN0IGFsbCBmaXJtd2FyZSBjYWxscyB1bmRlciBhIGxheWVyIHRoYXQgd2lsbA0K PiA+IGFsbG93IHVzIHRvIGhhbmRsZSBib3RoIGZpcm13YXJlIHR5cGVzIHRyYW5zcGFyZW50bHku DQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlh dGVrLmNvbT4NCj4gPiBbYWNvdXJib3Q6IHJlZmFjdG9yLCBjbGVhbnVwIGFuZCBzcGxpdF0NCj4g PiBDby1kZXZlbG9wZWQtYnk6IEFsZXhhbmRyZSBDb3VyYm90IDxhY291cmJvdEBjaHJvbWl1bS5v cmc+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIENvdXJib3QgPGFjb3VyYm90QGNocm9t aXVtLm9yZz4NCj4gPiBbcGloc3VuOiBmaXggZXJyb3IgcGF0aCBhbmQgYWRkIG10a192Y29kZWNf ZndfcmVsZWFzZV0NCj4gPiBTaWduZWQtb2ZmLWJ5OiBQaS1Ic3VuIFNoaWggPHBpaHN1bkBjaHJv bWl1bS5vcmc+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2Rl Yy9NYWtlZmlsZSAgICB8ICAgNCArLQ0KPiA+ICAuLi4vcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtf dmNvZGVjX2RlY19kcnYuYyAgfCAgNTAgKystLS0NCj4gPiAgLi4uL3BsYXRmb3JtL210ay12Y29k ZWMvbXRrX3Zjb2RlY19kZWNfcG0uYyAgIHwgICAxIC0NCj4gPiAgLi4uL3BsYXRmb3JtL210ay12 Y29kZWMvbXRrX3Zjb2RlY19kcnYuaCAgICAgIHwgICA1ICstDQo+ID4gIC4uLi9wbGF0Zm9ybS9t dGstdmNvZGVjL210a192Y29kZWNfZW5jX2Rydi5jICB8ICA0NyArKy0tLQ0KPiA+ICAuLi4vcGxh dGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19wbS5jICAgfCAgIDIgLQ0KPiA+ICAuLi4v bWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3LmMgfCAxNzIgKysrKysrKysr KysrKysrKysrDQo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZncuaCB8ICAzNiArKysrDQo+ID4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf dXRpbC5jICAgICB8ICAgMSAtDQo+ID4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRl Y19oMjY0X2lmLmMgICB8ICAgMSAtDQo+ID4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMv dmRlY192cDhfaWYuYyAgICB8ICAgMSAtDQo+ID4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL3Zk ZWMvdmRlY192cDlfaWYuYyAgICB8ICAgMSAtDQo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZkZWNfZHJ2X2Jhc2UuaCB8ICAgMiAtDQo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9t dGstdmNvZGVjL3ZkZWNfZHJ2X2lmLmMgICB8ICAgMSAtDQo+ID4gIC4uLi9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL3ZkZWNfdnB1X2lmLmMgICB8ICAxMiArLQ0KPiA+ICAuLi4vbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5oICAgfCAgMTEgKy0NCj4gPiAgLi4uL3BsYXRm b3JtL210ay12Y29kZWMvdmVuYy92ZW5jX2gyNjRfaWYuYyAgIHwgIDE1ICstDQo+ID4gIC4uLi9w bGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY192cDhfaWYuYyAgICB8ICAgOCArLQ0KPiA+ICAu Li4vbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jX2Rydl9pZi5jICAgfCAgIDEgLQ0KPiA+ ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jX3ZwdV9pZi5jICAgfCAgMTcgKy0N Cj4gPiAgLi4uL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuaCAgIHwgICA1 ICstDQo+ID4gIDIxIGZpbGVzIGNoYW5nZWQsIDI5MCBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRp b25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5oDQo+ID4gDQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9NYWtlZmlsZSBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9NYWtlZmlsZQ0KPiA+IGluZGV4IDM3Yjk0 YjU1NWZhMS4uYjg2MzYxMTllZDBhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLXZjb2RlYy9NYWtlZmlsZQ0KPiA+IEBAIC0xMiw3ICsxMiw3IEBAIG10ay12Y29kZWMt ZGVjLXkgOj0gdmRlYy92ZGVjX2gyNjRfaWYubyBcDQo+ID4gIAkJdmRlY192cHVfaWYubyBcDQo+ ID4gIAkJbXRrX3Zjb2RlY19kZWMubyBcDQo+ID4gIAkJbXRrX3Zjb2RlY19kZWNfcG0ubyBcDQo+ ID4gLQ0KPiA+ICsJCW10a192Y29kZWNfZncubw0KPiA+ICANCj4gPiAgbXRrLXZjb2RlYy1lbmMt eSA6PSB2ZW5jL3ZlbmNfdnA4X2lmLm8gXA0KPiA+ICAJCXZlbmMvdmVuY19oMjY0X2lmLm8gXA0K PiA+IEBAIC0yNSw1ICsyNSwzIEBAIG10ay12Y29kZWMtZW5jLXkgOj0gdmVuYy92ZW5jX3ZwOF9p Zi5vIFwNCj4gPiAgDQo+ID4gIG10ay12Y29kZWMtY29tbW9uLXkgOj0gbXRrX3Zjb2RlY19pbnRy Lm8gXA0KPiA+ICAJCW10a192Y29kZWNfdXRpbC5vXA0KPiA+IC0NCj4gPiAtY2NmbGFncy15ICs9 IC1JJChzcmN0cmVlKS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12cHUNCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Ry di5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Ry di5jDQo+ID4gaW5kZXggOTdhMWI2NjY0YzIwLi40ZjA3YTVmY2NlN2YgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5j DQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZGVjX2Rydi5jDQo+ID4gQEAgLTIwLDcgKzIwLDcgQEANCj4gPiAgI2luY2x1ZGUgIm10a192Y29k ZWNfZGVjX3BtLmgiDQo+ID4gICNpbmNsdWRlICJtdGtfdmNvZGVjX2ludHIuaCINCj4gPiAgI2lu Y2x1ZGUgIm10a192Y29kZWNfdXRpbC5oIg0KPiA+IC0jaW5jbHVkZSAibXRrX3ZwdS5oIg0KPiA+ ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19mdy5oIg0KPiA+ICANCj4gPiAgI2RlZmluZSBWREVDX0hX X0FDVElWRQkweDEwDQo+ID4gICNkZWZpbmUgVkRFQ19JUlFfQ0ZHCTB4MTENCj4gPiBAQCAtNzcs MjIgKzc3LDYgQEAgc3RhdGljIGlycXJldHVybl90IG10a192Y29kZWNfZGVjX2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKnByaXYpDQo+ID4gIAlyZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4gIH0N Cj4gPiAgDQo+ID4gLXN0YXRpYyB2b2lkIG10a192Y29kZWNfZGVjX3Jlc2V0X2hhbmRsZXIodm9p ZCAqcHJpdikNCj4gPiAtew0KPiA+IC0Jc3RydWN0IG10a192Y29kZWNfZGV2ICpkZXYgPSBwcml2 Ow0KPiA+IC0Jc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHg7DQo+ID4gLQ0KPiA+IC0JbXRrX3Y0 bDJfZXJyKCJXYXRjaGRvZyB0aW1lb3V0ISEiKTsNCj4gPiAtDQo+ID4gLQltdXRleF9sb2NrKCZk ZXYtPmRldl9tdXRleCk7DQo+ID4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldi0+Y3R4 X2xpc3QsIGxpc3QpIHsNCj4gPiAtCQljdHgtPnN0YXRlID0gTVRLX1NUQVRFX0FCT1JUOw0KPiA+ IC0JCW10a192NGwyX2RlYnVnKDAsICJbJWRdIENoYW5nZSB0byBzdGF0ZSBNVEtfU1RBVEVfRVJS T1IiLA0KPiA+IC0JCQkJY3R4LT5pZCk7DQo+ID4gLQl9DQo+ID4gLQltdXRleF91bmxvY2soJmRl di0+ZGV2X211dGV4KTsNCj4gPiAtfQ0KPiA+IC0NCj4gDQo+IEFmdGVyIHVzaW5nIGFic3RyYWN0 IGZpcm13YXJlIGludGVyZmFjZSwgaG93IGRvZXMgZHJpdmVyIHByb2Nlc3MNCj4gd2F0Y2hkb2cg dGltZW91dD8NCg0KSSBmb3VuZCBpdCBtb3ZlIHRvIG10a192Y29kZWNfZncuYyBhbmQgcmVuYW1l IHRvDQptdGtfdmNvZGVjX3Jlc2V0X2hhbmRsZXIuDQoNCg0KUmV2aWV3ZWQtYnk6VGlmZmFueSBM aW4gPHRpZmZhbnkubGluQG1lZGlhdGVrLmNvbT4NCg0KPiANCj4gPiAgc3RhdGljIGludCBmb3Bz X3Zjb2RlY19vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgbXRr X3Zjb2RlY19kZXYgKmRldiA9IHZpZGVvX2RydmRhdGEoZmlsZSk7DQo+ID4gQEAgLTE0NCwyMSAr MTI4LDIwIEBAIHN0YXRpYyBpbnQgZm9wc192Y29kZWNfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkN Cj4gPiAgCWlmICh2NGwyX2ZoX2lzX3Npbmd1bGFyKCZjdHgtPmZoKSkgew0KPiA+ICAJCW10a192 Y29kZWNfZGVjX3B3X29uKCZkZXYtPnBtKTsNCj4gPiAgCQkvKg0KPiA+IC0JCSAqIHZwdV9sb2Fk X2Zpcm13YXJlIGNoZWNrcyBpZiBpdCB3YXMgbG9hZGVkIGFscmVhZHkgYW5kDQo+ID4gLQkJICog ZG9lcyBub3RoaW5nIGluIHRoYXQgY2FzZQ0KPiA+ICsJCSAqIERvZXMgbm90aGluZyBpZiBmaXJt d2FyZSB3YXMgYWxyZWFkeSBsb2FkZWQuDQo+ID4gIAkJICovDQo+ID4gLQkJcmV0ID0gdnB1X2xv YWRfZmlybXdhcmUoZGV2LT52cHVfcGxhdF9kZXYpOw0KPiA+ICsJCXJldCA9IG10a192Y29kZWNf ZndfbG9hZF9maXJtd2FyZShkZXYtPmZ3X2hhbmRsZXIpOw0KPiA+ICAJCWlmIChyZXQgPCAwKSB7 DQo+ID4gIAkJCS8qDQo+ID4gIAkJCSAqIFJldHVybiAwIGlmIGRvd25sb2FkaW5nIGZpcm13YXJl IHN1Y2Nlc3NmdWxseSwNCj4gPiAgCQkJICogb3RoZXJ3aXNlIGl0IGlzIGZhaWxlZA0KPiA+ICAJ CQkgKi8NCj4gPiAtCQkJbXRrX3Y0bDJfZXJyKCJ2cHVfbG9hZF9maXJtd2FyZSBmYWlsZWQhIik7 DQo+ID4gKwkJCW10a192NGwyX2VycigiZmFpbGVkIHRvIGxvYWQgZmlybXdhcmUhIik7DQo+ID4g IAkJCWdvdG8gZXJyX2xvYWRfZnc7DQo+ID4gIAkJfQ0KPiA+ICANCj4gPiAgCQlkZXYtPmRlY19j YXBhYmlsaXR5ID0NCj4gPiAtCQkJdnB1X2dldF92ZGVjX2h3X2NhcGEoZGV2LT52cHVfcGxhdF9k ZXYpOw0KPiA+ICsJCQltdGtfdmNvZGVjX2Z3X2dldF92ZGVjX2NhcGEoZGV2LT5md19oYW5kbGVy KTsNCj4gPiAgCQltdGtfdjRsMl9kZWJ1ZygwLCAiZGVjb2RlciBjYXBhYmlsaXR5ICV4IiwgZGV2 LT5kZWNfY2FwYWJpbGl0eSk7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IEBAIC0yMjgsNiArMjExLDgg QEAgc3RhdGljIGludCBtdGtfdmNvZGVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ID4gIAlzdHJ1Y3QgbXRrX3Zjb2RlY19kZXYgKmRldjsNCj4gPiAgCXN0cnVjdCB2aWRl b19kZXZpY2UgKnZmZF9kZWM7DQo+ID4gIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4gPiArCXBo YW5kbGUgcnByb2NfcGhhbmRsZTsNCj4gPiArCWVudW0gbXRrX3Zjb2RlY19md190eXBlIGZ3X3R5 cGU7DQo+ID4gIAlpbnQgaSwgcmV0Ow0KPiA+ICANCj4gPiAgCWRldiA9IGRldm1fa3phbGxvYygm cGRldi0+ZGV2LCBzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOw0KPiA+IEBAIC0yMzcsMTkgKzIy MiwyMSBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikNCj4gPiAgCUlOSVRfTElTVF9IRUFEKCZkZXYtPmN0eF9saXN0KTsNCj4gPiAgCWRl di0+cGxhdF9kZXYgPSBwZGV2Ow0KPiA+ICANCj4gPiAtCWRldi0+dnB1X3BsYXRfZGV2ID0gdnB1 X2dldF9wbGF0X2RldmljZShkZXYtPnBsYXRfZGV2KTsNCj4gPiAtCWlmIChkZXYtPnZwdV9wbGF0 X2RldiA9PSBOVUxMKSB7DQo+ID4gLQkJbXRrX3Y0bDJfZXJyKCJbVlBVXSB2cHUgZGV2aWNlIGlu IG5vdCByZWFkeSIpOw0KPiA+IC0JCXJldHVybiAtRVBST0JFX0RFRkVSOw0KPiA+ICsJaWYgKCFv Zl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LT5kZXYub2Zfbm9kZSwgIm1lZGlhdGVrLHZwdSIsDQo+ ID4gKwkJCQkgICZycHJvY19waGFuZGxlKSkgew0KPiA+ICsJCWZ3X3R5cGUgPSBWUFU7DQo+ID4g Kwl9IGVsc2Ugew0KPiA+ICsJCW10a192NGwyX2VycigiQ291bGQgbm90IGdldCB2ZGVjIElQSSBk ZXZpY2UiKTsNCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gPiAgCX0NCj4gPiAtDQo+ID4gLQl2 cHVfd2R0X3JlZ19oYW5kbGVyKGRldi0+dnB1X3BsYXRfZGV2LCBtdGtfdmNvZGVjX2RlY19yZXNl dF9oYW5kbGVyLA0KPiA+IC0JCQlkZXYsIFZQVV9SU1RfREVDKTsNCj4gPiArCWRldi0+ZndfaGFu ZGxlciA9IG10a192Y29kZWNfZndfc2VsZWN0KGRldiwgZndfdHlwZSwgVlBVX1JTVF9ERUMpOw0K PiA+ICsJaWYgKElTX0VSUihkZXYtPmZ3X2hhbmRsZXIpKQ0KPiA+ICsJCXJldHVybiBQVFJfRVJS KGRldi0+ZndfaGFuZGxlcik7DQo+ID4gIA0KPiA+ICAJcmV0ID0gbXRrX3Zjb2RlY19pbml0X2Rl Y19wbShkZXYpOw0KPiA+ICAJaWYgKHJldCA8IDApIHsNCj4gPiAgCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICJGYWlsZWQgdG8gZ2V0IG10IHZjb2RlYyBjbG9jayBzb3VyY2UiKTsNCj4gPiAtCQlyZXR1 cm4gcmV0Ow0KPiA+ICsJCWdvdG8gZXJyX2RlY19wbTsNCj4gPiAgCX0NCj4gPiAgDQo+ID4gIAlm b3IgKGkgPSAwOyBpIDwgTlVNX01BWF9WREVDX1JFR19CQVNFOyBpKyspIHsNCj4gPiBAQCAtMzUy LDYgKzMzOSw4IEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KPiA+ICAJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmZGV2LT52NGwyX2Rl dik7DQo+ID4gIGVycl9yZXM6DQo+ID4gIAltdGtfdmNvZGVjX3JlbGVhc2VfZGVjX3BtKGRldik7 DQo+ID4gK2Vycl9kZWNfcG06DQo+ID4gKwltdGtfdmNvZGVjX2Z3X3JlbGVhc2UoZGV2LT5md19o YW5kbGVyKTsNCj4gPiAgCXJldHVybiByZXQ7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTM3Niw2 ICszNjUsNyBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfZGVjX3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiA+ICANCj4gPiAgCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmRl di0+djRsMl9kZXYpOw0KPiA+ICAJbXRrX3Zjb2RlY19yZWxlYXNlX2RlY19wbShkZXYpOw0KPiA+ ICsJbXRrX3Zjb2RlY19md19yZWxlYXNlKGRldi0+ZndfaGFuZGxlcik7DQo+ID4gIAlyZXR1cm4g MDsNCj4gPiAgfQ0KPiA+ICANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX3BtLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay12Y29kZWMvbXRrX3Zjb2RlY19kZWNfcG0uYw0KPiA+IGluZGV4IDVhNmVjOGZiNTJkYS4u MzZkZmUzZmMwNTZhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LXZjb2RlYy9tdGtfdmNvZGVjX2RlY19wbS5jDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX3BtLmMNCj4gPiBAQCAtMTIsNyArMTIsNiBA QA0KPiA+ICANCj4gPiAgI2luY2x1ZGUgIm10a192Y29kZWNfZGVjX3BtLmgiDQo+ID4gICNpbmNs dWRlICJtdGtfdmNvZGVjX3V0aWwuaCINCj4gPiAtI2luY2x1ZGUgIm10a192cHUuaCINCj4gPiAg DQo+ID4gIGludCBtdGtfdmNvZGVjX2luaXRfZGVjX3BtKHN0cnVjdCBtdGtfdmNvZGVjX2RldiAq bXRrZGV2KQ0KPiA+ICB7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Rydi5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL210a192Y29kZWNfZHJ2LmgNCj4gPiBpbmRleCA5ZmQ1NmRlZTdmZDEuLmUxMzJjNGVj NDYzYSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMv bXRrX3Zjb2RlY19kcnYuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZj b2RlYy9tdGtfdmNvZGVjX2Rydi5oDQo+ID4gQEAgLTMwOSwxMyArMzA5LDEzIEBAIHN0cnVjdCBt dGtfdmNvZGVjX2N0eCB7DQo+ID4gICAqIEBtMm1fZGV2X2RlYzogbTJtIGRldmljZSBmb3IgZGVj b2Rlcg0KPiA+ICAgKiBAbTJtX2Rldl9lbmM6IG0ybSBkZXZpY2UgZm9yIGVuY29kZXIuDQo+ID4g ICAqIEBwbGF0X2RldjogcGxhdGZvcm0gZGV2aWNlDQo+ID4gLSAqIEB2cHVfcGxhdF9kZXY6IG10 ayB2cHUgcGxhdGZvcm0gZGV2aWNlDQo+ID4gICAqIEBjdHhfbGlzdDogbGlzdCBvZiBzdHJ1Y3Qg bXRrX3Zjb2RlY19jdHgNCj4gPiAgICogQGlycWxvY2s6IHByb3RlY3QgZGF0YSBhY2Nlc3MgYnkg aXJxIGhhbmRsZXIgYW5kIHdvcmsgdGhyZWFkDQo+ID4gICAqIEBjdXJyX2N0eDogVGhlIGNvbnRl eHQgdGhhdCBpcyB3YWl0aW5nIGZvciBjb2RlYyBoYXJkd2FyZQ0KPiA+ICAgKg0KPiA+ICAgKiBA cmVnX2Jhc2U6IE1hcHBlZCBhZGRyZXNzIG9mIE1USyBWY29kZWMgcmVnaXN0ZXJzLg0KPiA+ICAg Kg0KPiA+ICsgKiBAZndfaGFuZGxlcjogdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBmaXJt d2FyZS4NCj4gPiAgICogQGlkX2NvdW50ZXI6IHVzZWQgdG8gaWRlbnRpZnkgY3VycmVudCBvcGVu ZWQgaW5zdGFuY2UNCj4gPiAgICoNCj4gPiAgICogQGVuY29kZV93b3JrcXVldWU6IGVuY29kZSB3 b3JrIHF1ZXVlDQo+ID4gQEAgLTM0NCwxMiArMzQ0LDEzIEBAIHN0cnVjdCBtdGtfdmNvZGVjX2Rl diB7DQo+ID4gIAlzdHJ1Y3QgdjRsMl9tMm1fZGV2ICptMm1fZGV2X2RlYzsNCj4gPiAgCXN0cnVj dCB2NGwyX20ybV9kZXYgKm0ybV9kZXZfZW5jOw0KPiA+ICAJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGxhdF9kZXY7DQo+ID4gLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICp2cHVfcGxhdF9kZXY7 DQo+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGN0eF9saXN0Ow0KPiA+ICAJc3BpbmxvY2tfdCBpcnFs b2NrOw0KPiA+ICAJc3RydWN0IG10a192Y29kZWNfY3R4ICpjdXJyX2N0eDsNCj4gPiAgCXZvaWQg X19pb21lbSAqcmVnX2Jhc2VbTlVNX01BWF9WQ09ERUNfUkVHX0JBU0VdOw0KPiA+ICANCj4gPiAr CXN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmd19oYW5kbGVyOw0KPiA+ICsNCj4gPiAgCXVuc2lnbmVk IGxvbmcgaWRfY291bnRlcjsNCj4gPiAgDQo+ID4gIAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAq ZGVjb2RlX3dvcmtxdWV1ZTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL210a192Y29kZWNfZW5jX2Rydi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL210a192Y29kZWNfZW5jX2Rydi5jDQo+ID4gaW5kZXggNGQzMWYxZWQxMTNm Li40MzQwZWExMGFmZDAgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstdmNvZGVjL210a192Y29kZWNfZW5jX2Rydi5jDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZW5jX2Rydi5jDQo+ID4gQEAgLTIxLDcgKzIx LDcgQEANCj4gPiAgI2luY2x1ZGUgIm10a192Y29kZWNfZW5jX3BtLmgiDQo+ID4gICNpbmNsdWRl ICJtdGtfdmNvZGVjX2ludHIuaCINCj4gPiAgI2luY2x1ZGUgIm10a192Y29kZWNfdXRpbC5oIg0K PiA+IC0jaW5jbHVkZSAibXRrX3ZwdS5oIg0KPiA+ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19mdy5o Ig0KPiA+ICANCj4gPiAgbW9kdWxlX3BhcmFtKG10a192NGwyX2RiZ19sZXZlbCwgaW50LCBTX0lS VUdPIHwgU19JV1VTUik7DQo+ID4gIG1vZHVsZV9wYXJhbShtdGtfdmNvZGVjX2RiZywgYm9vbCwg U19JUlVHTyB8IFNfSVdVU1IpOw0KPiA+IEBAIC0xMDEsMjIgKzEwMSw2IEBAIHN0YXRpYyBpcnFy ZXR1cm5fdCBtdGtfdmNvZGVjX2VuY19sdF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2 KQ0KPiA+ICAJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ICB9DQo+ID4gIA0KPiA+IC1zdGF0aWMg dm9pZCBtdGtfdmNvZGVjX2VuY19yZXNldF9oYW5kbGVyKHZvaWQgKnByaXYpDQo+ID4gLXsNCj4g PiAtCXN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2ID0gcHJpdjsNCj4gPiAtCXN0cnVjdCBtdGtf dmNvZGVjX2N0eCAqY3R4Ow0KPiA+IC0NCj4gPiAtCW10a192NGwyX2RlYnVnKDAsICJXYXRjaGRv ZyB0aW1lb3V0ISEiKTsNCj4gPiAtDQo+ID4gLQltdXRleF9sb2NrKCZkZXYtPmRldl9tdXRleCk7 DQo+ID4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldi0+Y3R4X2xpc3QsIGxpc3QpIHsN Cj4gPiAtCQljdHgtPnN0YXRlID0gTVRLX1NUQVRFX0FCT1JUOw0KPiA+IC0JCW10a192NGwyX2Rl YnVnKDAsICJbJWRdIENoYW5nZSB0byBzdGF0ZSBNVEtfU1RBVEVfQUJPUlQiLA0KPiA+IC0JCQkJ Y3R4LT5pZCk7DQo+ID4gLQl9DQo+ID4gLQltdXRleF91bmxvY2soJmRldi0+ZGV2X211dGV4KTsN Cj4gPiAtfQ0KPiA+IC0NCj4gDQo+IEFmdGVyIHVzaW5nIGFic3RyYWN0IGZpcm13YXJlIGludGVy ZmFjZSwgaG93IGRvZXMgZHJpdmVyIHByb2Nlc3MNCj4gd2F0Y2hkb2cgdGltZW91dD8NCj4gDQo+ ID4gIHN0YXRpYyBpbnQgZm9wc192Y29kZWNfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gPiAg ew0KPiA+ICAJc3RydWN0IG10a192Y29kZWNfZGV2ICpkZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUp Ow0KPiA+IEBAIC0xNTksMTAgKzE0MywxMCBAQCBzdGF0aWMgaW50IGZvcHNfdmNvZGVjX29wZW4o c3RydWN0IGZpbGUgKmZpbGUpDQo+ID4gIA0KPiA+ICAJaWYgKHY0bDJfZmhfaXNfc2luZ3VsYXIo JmN0eC0+ZmgpKSB7DQo+ID4gIAkJLyoNCj4gPiAtCQkgKiB2cHVfbG9hZF9maXJtd2FyZSBjaGVj a3MgaWYgaXQgd2FzIGxvYWRlZCBhbHJlYWR5IGFuZA0KPiA+ICsJCSAqIGxvYWQgZmlyZXdhcmUg dG8gY2hlY2tzIGlmIGl0IHdhcyBsb2FkZWQgYWxyZWFkeSBhbmQNCj4gPiAgCQkgKiBkb2VzIG5v dGhpbmcgaW4gdGhhdCBjYXNlDQo+ID4gIAkJICovDQo+ID4gLQkJcmV0ID0gdnB1X2xvYWRfZmly bXdhcmUoZGV2LT52cHVfcGxhdF9kZXYpOw0KPiA+ICsJCXJldCA9IG10a192Y29kZWNfZndfbG9h ZF9maXJtd2FyZShkZXYtPmZ3X2hhbmRsZXIpOw0KPiA+ICAJCWlmIChyZXQgPCAwKSB7DQo+ID4g IAkJCS8qDQo+ID4gIAkJCSAqIFJldHVybiAwIGlmIGRvd25sb2FkaW5nIGZpcm13YXJlIHN1Y2Nl c3NmdWxseSwNCj4gPiBAQCAtMTczLDcgKzE1Nyw3IEBAIHN0YXRpYyBpbnQgZm9wc192Y29kZWNf b3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gPiAgCQl9DQo+ID4gIA0KPiA+ICAJCWRldi0+ZW5j X2NhcGFiaWxpdHkgPQ0KPiA+IC0JCQl2cHVfZ2V0X3ZlbmNfaHdfY2FwYShkZXYtPnZwdV9wbGF0 X2Rldik7DQo+ID4gKwkJCW10a192Y29kZWNfZndfZ2V0X3ZlbmNfY2FwYShkZXYtPmZ3X2hhbmRs ZXIpOw0KPiA+ICAJCW10a192NGwyX2RlYnVnKDAsICJlbmNvZGVyIGNhcGFiaWxpdHkgJXgiLCBk ZXYtPmVuY19jYXBhYmlsaXR5KTsNCj4gPiAgCX0NCj4gPiAgDQo+ID4gQEAgLTIzNSw2ICsyMTks OCBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikNCj4gPiAgCXN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2Ow0KPiA+ICAJc3RydWN0IHZp ZGVvX2RldmljZSAqdmZkX2VuYzsNCj4gPiAgCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPiA+ICsJ cGhhbmRsZSBycHJvY19waGFuZGxlOw0KPiA+ICsJZW51bSBtdGtfdmNvZGVjX2Z3X3R5cGUgZndf dHlwZTsNCj4gPiAgCWludCBpLCBqLCByZXQ7DQo+ID4gIA0KPiA+ICAJZGV2ID0gZGV2bV9remFs bG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZGV2KSwgR0ZQX0tFUk5FTCk7DQo+ID4gQEAgLTI0NCwx OSArMjMwLDIxIEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KPiA+ICAJSU5JVF9MSVNUX0hFQUQoJmRldi0+Y3R4X2xpc3QpOw0KPiA+ ICAJZGV2LT5wbGF0X2RldiA9IHBkZXY7DQo+ID4gIA0KPiA+IC0JZGV2LT52cHVfcGxhdF9kZXYg PSB2cHVfZ2V0X3BsYXRfZGV2aWNlKGRldi0+cGxhdF9kZXYpOw0KPiA+IC0JaWYgKGRldi0+dnB1 X3BsYXRfZGV2ID09IE5VTEwpIHsNCj4gPiAtCQltdGtfdjRsMl9lcnIoIltWUFVdIHZwdSBkZXZp Y2UgaW4gbm90IHJlYWR5Iik7DQo+ID4gLQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7DQo+ID4gKwlp ZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYtPmRldi5vZl9ub2RlLCAibWVkaWF0ZWssdnB1 IiwNCj4gPiArCQkJCSAgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ID4gKwkJZndfdHlwZSA9IFZQVTsN Cj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJbXRrX3Y0bDJfZXJyKCJDb3VsZCBub3QgZ2V0IHZlbmMg SVBJIGRldmljZSIpOw0KPiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICAJfQ0KPiA+IC0NCj4g PiAtCXZwdV93ZHRfcmVnX2hhbmRsZXIoZGV2LT52cHVfcGxhdF9kZXYsIG10a192Y29kZWNfZW5j X3Jlc2V0X2hhbmRsZXIsDQo+ID4gLQkJCQlkZXYsIFZQVV9SU1RfRU5DKTsNCj4gPiArCWRldi0+ ZndfaGFuZGxlciA9IG10a192Y29kZWNfZndfc2VsZWN0KGRldiwgZndfdHlwZSwgVlBVX1JTVF9F TkMpOw0KPiA+ICsJaWYgKElTX0VSUihkZXYtPmZ3X2hhbmRsZXIpKQ0KPiA+ICsJCXJldHVybiBQ VFJfRVJSKGRldi0+ZndfaGFuZGxlcik7DQo+ID4gIA0KPiA+ICAJcmV0ID0gbXRrX3Zjb2RlY19p bml0X2VuY19wbShkZXYpOw0KPiA+ICAJaWYgKHJldCA8IDApIHsNCj4gPiAgCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IG10IHZjb2RlYyBjbG9jayBzb3VyY2UhIik7DQo+ID4g LQkJcmV0dXJuIHJldDsNCj4gPiArCQlnb3RvIGVycl9lbmNfcG07DQo+ID4gIAl9DQo+ID4gIA0K PiA+ICAJZm9yIChpID0gVkVOQ19TWVMsIGogPSAwOyBpIDwgTlVNX01BWF9WQ09ERUNfUkVHX0JB U0U7IGkrKywgaisrKSB7DQo+ID4gQEAgLTM3Nyw2ICszNjUsOCBAQCBzdGF0aWMgaW50IG10a192 Y29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgCXY0bDJfZGV2 aWNlX3VucmVnaXN0ZXIoJmRldi0+djRsMl9kZXYpOw0KPiA+ICBlcnJfcmVzOg0KPiA+ICAJbXRr X3Zjb2RlY19yZWxlYXNlX2VuY19wbShkZXYpOw0KPiA+ICtlcnJfZW5jX3BtOg0KPiA+ICsJbXRr X3Zjb2RlY19md19yZWxlYXNlKGRldi0+ZndfaGFuZGxlcik7DQo+ID4gIAlyZXR1cm4gcmV0Ow0K PiA+ICB9DQo+ID4gIA0KPiA+IEBAIC00MDEsNiArMzkxLDcgQEAgc3RhdGljIGludCBtdGtfdmNv ZGVjX2VuY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgDQo+ID4g IAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZkZXYtPnY0bDJfZGV2KTsNCj4gPiAgCW10a192Y29k ZWNfcmVsZWFzZV9lbmNfcG0oZGV2KTsNCj4gPiArCW10a192Y29kZWNfZndfcmVsZWFzZShkZXYt PmZ3X2hhbmRsZXIpOw0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19w bS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZW5jX3Bt LmMNCj4gPiBpbmRleCAzZTJiZmRlZDc5YTYuLmVlMjI5MDJhYWE3MSAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfcG0uYw0K PiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Vu Y19wbS5jDQo+ID4gQEAgLTEyLDggKzEyLDYgQEANCj4gPiAgDQo+ID4gICNpbmNsdWRlICJtdGtf dmNvZGVjX2VuY19wbS5oIg0KPiA+ICAjaW5jbHVkZSAibXRrX3Zjb2RlY191dGlsLmgiDQo+ID4g LSNpbmNsdWRlICJtdGtfdnB1LmgiDQo+ID4gLQ0KPiA+ICANCj4gPiAgaW50IG10a192Y29kZWNf aW5pdF9lbmNfcG0oc3RydWN0IG10a192Y29kZWNfZGV2ICptdGtkZXYpDQo+ID4gIHsNCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZncuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3LmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTY3YmIx MDBhOTkwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3LmMNCj4gPiBAQCAtMCwwICsxLDE3MiBAQA0KPiA+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgIm10a192Y29kZWNfZncuaCINCj4gPiArI2luY2x1ZGUgIm10a192Y29kZWNfdXRpbC5oIg0K PiA+ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19kcnYuaCINCj4gPiArDQo+ID4gK3N0cnVjdCBtdGtf dmNvZGVjX2Z3X29wcyB7DQo+ID4gKwlpbnQgKCpsb2FkX2Zpcm13YXJlKShzdHJ1Y3QgbXRrX3Zj b2RlY19mdyAqZncpOw0KPiA+ICsJdW5zaWduZWQgaW50ICgqZ2V0X3ZkZWNfY2FwYSkoc3RydWN0 IG10a192Y29kZWNfZncgKmZ3KTsNCj4gPiArCXVuc2lnbmVkIGludCAoKmdldF92ZW5jX2NhcGEp KHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdyk7DQo+ID4gKwl2b2lkICogKCptYXBfZG1fYWRkciko c3RydWN0IG10a192Y29kZWNfZncgKmZ3LCB1MzIgZHRjbV9kbWVtX2FkZHIpOw0KPiA+ICsJaW50 ICgqaXBpX3JlZ2lzdGVyKShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncsIGludCBpZCwNCj4gPiAr CQltdGtfdmNvZGVjX2lwaV9oYW5kbGVyIGhhbmRsZXIsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQg KnByaXYpOw0KPiA+ICsJaW50ICgqaXBpX3NlbmQpKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywg aW50IGlkLCB2b2lkICpidWYsDQo+ID4gKwkJdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgaW50 IHdhaXQpOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IG10a192Y29kZWNfZncgew0KPiA+ ICsJZW51bSBtdGtfdmNvZGVjX2Z3X3R5cGUgdHlwZTsNCj4gPiArCWNvbnN0IHN0cnVjdCBtdGtf dmNvZGVjX2Z3X29wcyAqb3BzOw0KPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsN Cj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgbXRrX3Zjb2RlY192cHVfbG9hZF9maXJt d2FyZShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpDQo+ID4gK3sNCj4gPiArCXJldHVybiB2cHVf bG9hZF9maXJtd2FyZShmdy0+cGRldik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1bnNp Z25lZCBpbnQgbXRrX3Zjb2RlY192cHVfZ2V0X3ZkZWNfY2FwYShzdHJ1Y3QgbXRrX3Zjb2RlY19m dyAqZncpDQo+ID4gK3sNCj4gPiArCXJldHVybiB2cHVfZ2V0X3ZkZWNfaHdfY2FwYShmdy0+cGRl dik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbXRrX3Zjb2RlY192 cHVfZ2V0X3ZlbmNfY2FwYShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpDQo+ID4gK3sNCj4gPiAr CXJldHVybiB2cHVfZ2V0X3ZlbmNfaHdfY2FwYShmdy0+cGRldik7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyB2b2lkICptdGtfdmNvZGVjX3ZwdV9tYXBfZG1fYWRkcihzdHJ1Y3QgbXRrX3Zj b2RlY19mdyAqZncsDQo+ID4gKwkJCQkJdTMyIGR0Y21fZG1lbV9hZGRyKQ0KPiA+ICt7DQo+ID4g KwlyZXR1cm4gdnB1X21hcHBpbmdfZG1fYWRkcihmdy0+cGRldiwgZHRjbV9kbWVtX2FkZHIpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10a192Y29kZWNfdnB1X3NldF9pcGlfcmVn aXN0ZXIoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LCBpbnQgaWQsDQo+ID4gKwkJbXRrX3Zjb2Rl Y19pcGlfaGFuZGxlciBoYW5kbGVyLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpwcml2KQ0KPiA+ ICt7DQo+ID4gKwkvKg0KPiA+ICsJICogVGhlIGhhbmRsZXIgd2UgcmVjZWl2ZSB0YWtlcyBhIHZv aWQgKiBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIFdlDQo+ID4gKwkgKiBjYW5ub3QgY2hhbmdlIHRo aXMgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSBwYXNzZWQgZG93biB0byB0aGUgcnByb2MNCj4gPiAr CSAqIHN1YnN5c3RlbSB3aGVuIFNDUCBpcyB1c2VkLiBWUFUgdGFrZXMgYSBjb25zdCBhcmd1bWVu dCwgd2hpY2ggaXMNCj4gPiArCSAqIG1vcmUgY29uc3RyYWluZWQsIHNvIHRoZSBjb252ZXJzaW9u IGJlbG93IGlzIHNhZmUuDQo+ID4gKwkgKi8NCj4gPiArCWlwaV9oYW5kbGVyX3QgaGFuZGxlcl9j b25zdCA9IChpcGlfaGFuZGxlcl90KWhhbmRsZXI7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHZwdV9p cGlfcmVnaXN0ZXIoZnctPnBkZXYsIGlkLCBoYW5kbGVyX2NvbnN0LCBuYW1lLCBwcml2KTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBtdGtfdmNvZGVjX3ZwdV9pcGlfc2VuZChzdHJ1 Y3QgbXRrX3Zjb2RlY19mdyAqZncsIGludCBpZCwgdm9pZCAqYnVmLA0KPiA+ICsJCXVuc2lnbmVk IGludCBsZW4sIHVuc2lnbmVkIGludCB3YWl0KQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gdnB1X2lw aV9zZW5kKGZ3LT5wZGV2LCBpZCwgYnVmLCBsZW4pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG10a192Y29kZWNfZndfb3BzIG10a192Y29kZWNfdnB1X21zZyA9IHsN Cj4gPiArCS5sb2FkX2Zpcm13YXJlID0gbXRrX3Zjb2RlY192cHVfbG9hZF9maXJtd2FyZSwNCj4g PiArCS5nZXRfdmRlY19jYXBhID0gbXRrX3Zjb2RlY192cHVfZ2V0X3ZkZWNfY2FwYSwNCj4gPiAr CS5nZXRfdmVuY19jYXBhID0gbXRrX3Zjb2RlY192cHVfZ2V0X3ZlbmNfY2FwYSwNCj4gPiArCS5t YXBfZG1fYWRkciA9IG10a192Y29kZWNfdnB1X21hcF9kbV9hZGRyLA0KPiA+ICsJLmlwaV9yZWdp c3RlciA9IG10a192Y29kZWNfdnB1X3NldF9pcGlfcmVnaXN0ZXIsDQo+ID4gKwkuaXBpX3NlbmQg PSBtdGtfdmNvZGVjX3ZwdV9pcGlfc2VuZCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIG10a192Y29kZWNfcmVzZXRfaGFuZGxlcih2b2lkICpwcml2KQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgbXRrX3Zjb2RlY19kZXYgKmRldiA9IHByaXY7DQo+ID4gKwlzdHJ1Y3QgbXRrX3Zjb2Rl Y19jdHggKmN0eDsNCj4gPiArDQo+ID4gKwltdGtfdjRsMl9lcnIoIldhdGNoZG9nIHRpbWVvdXQh ISIpOw0KPiA+ICsNCj4gPiArCW11dGV4X2xvY2soJmRldi0+ZGV2X211dGV4KTsNCj4gPiArCWxp c3RfZm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2LT5jdHhfbGlzdCwgbGlzdCkgew0KPiA+ICsJCWN0 eC0+c3RhdGUgPSBNVEtfU1RBVEVfQUJPUlQ7DQo+ID4gKwkJbXRrX3Y0bDJfZGVidWcoMCwgIlsl ZF0gQ2hhbmdlIHRvIHN0YXRlIE1US19TVEFURV9BQk9SVCIsDQo+ID4gKwkJCQljdHgtPmlkKTsN Cj4gPiArCX0NCj4gPiArCW11dGV4X3VubG9jaygmZGV2LT5kZXZfbXV0ZXgpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICtzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqbXRrX3Zjb2RlY19md19zZWxlY3Qoc3Ry dWN0IG10a192Y29kZWNfZGV2ICpkZXYsDQo+ID4gKwkJCQkJICAgZW51bSBtdGtfdmNvZGVjX2Z3 X3R5cGUgdHlwZSwNCj4gPiArCQkJCQkgICBlbnVtIHJzdF9pZCByc3RfaWQpDQo+ID4gK3sNCj4g PiArCWNvbnN0IHN0cnVjdCBtdGtfdmNvZGVjX2Z3X29wcyAqb3BzOw0KPiA+ICsJc3RydWN0IG10 a192Y29kZWNfZncgKmZ3Ow0KPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZndfcGRldiA9 IE5VTEw7DQo+ID4gKw0KPiA+ICsJc3dpdGNoICh0eXBlKSB7DQo+ID4gKwljYXNlIFZQVToNCj4g PiArCQlvcHMgPSAmbXRrX3Zjb2RlY192cHVfbXNnOw0KPiA+ICsJCWZ3X3BkZXYgPSB2cHVfZ2V0 X3BsYXRfZGV2aWNlKGRldi0+cGxhdF9kZXYpOw0KPiA+ICsJCWlmICghZndfcGRldikgew0KPiA+ ICsJCQltdGtfdjRsMl9lcnIoImZpcm13YXJlIGRldmljZSBpcyBub3QgcmVhZHkiKTsNCj4gPiAr CQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQo+ID4gKwkJfQ0KPiA+ICsJCXZwdV93ZHRfcmVn X2hhbmRsZXIoZndfcGRldiwgbXRrX3Zjb2RlY19yZXNldF9oYW5kbGVyLA0KPiA+ICsJCQkJICAg IGRldiwgcnN0X2lkKTsNCj4gPiArCQlicmVhazsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJbXRr X3Y0bDJfZXJyKCJpbnZhbGlkIHZjb2RlYyBmdyB0eXBlIik7DQo+ID4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZncgPSBkZXZtX2t6YWxsb2MoJmRl di0+cGxhdF9kZXYtPmRldiwgc2l6ZW9mKCpmdyksIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFm dykNCj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsNCj4gPiArDQo+ID4gKwlmdy0+dHlw ZSA9IHR5cGU7DQo+ID4gKwlmdy0+b3BzID0gb3BzOw0KPiA+ICsJZnctPnBkZXYgPSBmd19wZGV2 Ow0KPiA+ICsNCj4gPiArCXJldHVybiBmdzsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQ TChtdGtfdmNvZGVjX2Z3X3NlbGVjdCk7DQo+ID4gKw0KPiA+ICt2b2lkIG10a192Y29kZWNfZndf cmVsZWFzZShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpDQo+ID4gK3sNCj4gPiArCXN3aXRjaCAo ZnctPnR5cGUpIHsNCj4gPiArCWNhc2UgVlBVOg0KPiA+ICsJCXB1dF9kZXZpY2UoJmZ3LT5wZGV2 LT5kZXYpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKG10a192Y29kZWNfZndfcmVsZWFzZSk7DQo+ID4gKw0KPiA+ICtpbnQgbXRrX3Zjb2Rl Y19md19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdykNCj4gPiArew0KPiA+ ICsJcmV0dXJuIGZ3LT5vcHMtPmxvYWRfZmlybXdhcmUoZncpOw0KPiA+ICt9DQo+ID4gK0VYUE9S VF9TWU1CT0xfR1BMKG10a192Y29kZWNfZndfbG9hZF9maXJtd2FyZSk7DQo+ID4gKw0KPiA+ICt1 bnNpZ25lZCBpbnQgbXRrX3Zjb2RlY19md19nZXRfdmRlY19jYXBhKHN0cnVjdCBtdGtfdmNvZGVj X2Z3ICpmdykNCj4gPiArew0KPiA+ICsJcmV0dXJuIGZ3LT5vcHMtPmdldF92ZGVjX2NhcGEoZncp Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10a192Y29kZWNfZndfZ2V0X3ZkZWNf Y2FwYSk7DQo+ID4gKw0KPiA+ICt1bnNpZ25lZCBpbnQgbXRrX3Zjb2RlY19md19nZXRfdmVuY19j YXBhKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdykNCj4gPiArew0KPiA+ICsJcmV0dXJuIGZ3LT5v cHMtPmdldF92ZW5jX2NhcGEoZncpOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10 a192Y29kZWNfZndfZ2V0X3ZlbmNfY2FwYSk7DQo+ID4gKw0KPiA+ICt2b2lkICptdGtfdmNvZGVj X2Z3X21hcF9kbV9hZGRyKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywgdTMyIG1lbV9hZGRyKQ0K PiA+ICt7DQo+ID4gKwlyZXR1cm4gZnctPm9wcy0+bWFwX2RtX2FkZHIoZncsIG1lbV9hZGRyKTsN Cj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChtdGtfdmNvZGVjX2Z3X21hcF9kbV9hZGRy KTsNCj4gPiArDQo+ID4gK2ludCBtdGtfdmNvZGVjX2Z3X2lwaV9yZWdpc3RlcihzdHJ1Y3QgbXRr X3Zjb2RlY19mdyAqZncsIGludCBpZCwNCj4gPiArCW10a192Y29kZWNfaXBpX2hhbmRsZXIgaGFu ZGxlciwgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqcHJpdikNCj4gPiArew0KPiA+ICsJcmV0dXJu IGZ3LT5vcHMtPmlwaV9yZWdpc3RlcihmdywgaWQsIGhhbmRsZXIsIG5hbWUsIHByaXYpOw0KPiA+ ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10a192Y29kZWNfZndfaXBpX3JlZ2lzdGVyKTsN Cj4gPiArDQo+ID4gK2ludCBtdGtfdmNvZGVjX2Z3X2lwaV9zZW5kKHN0cnVjdCBtdGtfdmNvZGVj X2Z3ICpmdywNCj4gPiArCWludCBpZCwgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuLCB1bnNp Z25lZCBpbnQgd2FpdCkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGZ3LT5vcHMtPmlwaV9zZW5kKGZ3 LCBpZCwgYnVmLCBsZW4sIHdhaXQpOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKG10 a192Y29kZWNfZndfaXBpX3NlbmQpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL210a192Y29kZWNfZncuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5mZjI1YjBjMTlmNzQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZncu aA0KPiA+IEBAIC0wLDAgKzEsMzYgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX01US19WQ09ERUNfRldfSF8NCj4gPiAr I2RlZmluZSBfTVRLX1ZDT0RFQ19GV19IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Jl bW90ZXByb2MuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICIuLi9tdGstdnB1L210a192cHUuaCIN Cj4gPiArDQo+ID4gK3N0cnVjdCBtdGtfdmNvZGVjX2RldjsNCj4gPiArDQo+ID4gK2VudW0gbXRr X3Zjb2RlY19md190eXBlIHsNCj4gPiArCVZQVSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVj dCBtdGtfdmNvZGVjX2Z3Ow0KPiA+ICsNCj4gPiArdHlwZWRlZiB2b2lkICgqbXRrX3Zjb2RlY19p cGlfaGFuZGxlcikgKHZvaWQgKmRhdGEsDQo+ID4gKwl1bnNpZ25lZCBpbnQgbGVuLCB2b2lkICpw cml2KTsNCj4gPiArDQo+ID4gK3N0cnVjdCBtdGtfdmNvZGVjX2Z3ICptdGtfdmNvZGVjX2Z3X3Nl bGVjdChzdHJ1Y3QgbXRrX3Zjb2RlY19kZXYgKmRldiwNCj4gPiArCQkJCQkgICBlbnVtIG10a192 Y29kZWNfZndfdHlwZSB0eXBlLA0KPiA+ICsJCQkJCSAgIGVudW0gcnN0X2lkIHJzdF9pZCk7DQo+ ID4gK3ZvaWQgbXRrX3Zjb2RlY19md19yZWxlYXNlKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdyk7 DQo+ID4gKw0KPiA+ICtpbnQgbXRrX3Zjb2RlY19md19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdGtf dmNvZGVjX2Z3ICpmdyk7DQo+ID4gK3Vuc2lnbmVkIGludCBtdGtfdmNvZGVjX2Z3X2dldF92ZGVj X2NhcGEoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KTsNCj4gPiArdW5zaWduZWQgaW50IG10a192 Y29kZWNfZndfZ2V0X3ZlbmNfY2FwYShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpOw0KPiA+ICt2 b2lkICptdGtfdmNvZGVjX2Z3X21hcF9kbV9hZGRyKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywg dTMyIG1lbV9hZGRyKTsNCj4gPiAraW50IG10a192Y29kZWNfZndfaXBpX3JlZ2lzdGVyKHN0cnVj dCBtdGtfdmNvZGVjX2Z3ICpmdywgaW50IGlkLA0KPiA+ICsJbXRrX3Zjb2RlY19pcGlfaGFuZGxl ciBoYW5kbGVyLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpwcml2KTsNCj4gPiAraW50IG10a192 Y29kZWNfZndfaXBpX3NlbmQoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LA0KPiA+ICsJaW50IGlk LCB2b2lkICpidWYsIHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGludCB3YWl0KTsNCj4gPiAr DQo+ID4gKyNlbmRpZiAvKiBfTVRLX1ZDT0RFQ19GV19IXyAqLw0KPiA+ICsNCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfdXRpbC5j IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfdXRpbC5jDQo+ ID4gaW5kZXggZDQ4ZjU0MmRiMWE5Li5hYzU5NzNiNjczNWYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfdXRpbC5jDQo+ID4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfdXRpbC5jDQo+ ID4gQEAgLTksNyArOSw2IEBADQo+ID4gIA0KPiA+ICAjaW5jbHVkZSAibXRrX3Zjb2RlY19kcnYu aCINCj4gPiAgI2luY2x1ZGUgIm10a192Y29kZWNfdXRpbC5oIg0KPiA+IC0jaW5jbHVkZSAibXRr X3ZwdS5oIg0KPiA+ICANCj4gPiAgLyogRm9yIGVuY29kZXIsIHRoaXMgd2lsbCBlbmFibGUgbG9n cyBpbiB2ZW5jLyovDQo+ID4gIGJvb2wgbXRrX3Zjb2RlY19kYmc7DQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfaDI2NF9pZi5jIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY19oMjY0X2lmLmMNCj4g PiBpbmRleCA1MDA0OGMxNzBiOTkuLjQwZDZlNmM1YWM3YSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlYy92ZGVjX2gyNjRfaWYuYw0KPiA+ICsr KyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfaDI2NF9pZi5j DQo+ID4gQEAgLTI4MSw3ICsyODEsNiBAQCBzdGF0aWMgaW50IHZkZWNfaDI2NF9pbml0KHN0cnVj dCBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0KPiA+ICAJaW5zdC0+Y3R4ID0gY3R4Ow0KPiA+ICANCj4g PiAgCWluc3QtPnZwdS5pZCA9IElQSV9WREVDX0gyNjQ7DQo+ID4gLQlpbnN0LT52cHUuZGV2ID0g Y3R4LT5kZXYtPnZwdV9wbGF0X2RldjsNCj4gPiAgCWluc3QtPnZwdS5jdHggPSBjdHg7DQo+ID4g IA0KPiA+ICAJZXJyID0gdnB1X2RlY19pbml0KCZpbnN0LT52cHUpOw0KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlYy92ZGVjX3ZwOF9pZi5jIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY192cDhfaWYuYw0KPiA+ IGluZGV4IDYwMTFmZGQ2MGEyMi4uZTUzOTNmODQxMDgwIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfdnA4X2lmLmMNCj4gPiArKysg Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlYy92ZGVjX3ZwOF9pZi5jDQo+ ID4gQEAgLTQwMCw3ICs0MDAsNiBAQCBzdGF0aWMgaW50IHZkZWNfdnA4X2luaXQoc3RydWN0IG10 a192Y29kZWNfY3R4ICpjdHgpDQo+ID4gIAlpbnN0LT5jdHggPSBjdHg7DQo+ID4gIA0KPiA+ICAJ aW5zdC0+dnB1LmlkID0gSVBJX1ZERUNfVlA4Ow0KPiA+IC0JaW5zdC0+dnB1LmRldiA9IGN0eC0+ ZGV2LT52cHVfcGxhdF9kZXY7DQo+ID4gIAlpbnN0LT52cHUuY3R4ID0gY3R4Ow0KPiA+ICANCj4g PiAgCWVyciA9IHZwdV9kZWNfaW5pdCgmaW5zdC0+dnB1KTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY192cDlfaWYuYyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfdnA5X2lmLmMNCj4gPiBpbmRl eCAyNTdhNWI1YWQyMTIuLjhlMDk5Yjg1OWYyMSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlYy92ZGVjX3ZwOV9pZi5jDQo+ID4gKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY192cDlfaWYuYw0KPiA+IEBA IC03OTUsNyArNzk1LDYgQEAgc3RhdGljIGludCB2ZGVjX3ZwOV9pbml0KHN0cnVjdCBtdGtfdmNv ZGVjX2N0eCAqY3R4KQ0KPiA+ICAJaW5zdC0+Y3R4ID0gY3R4Ow0KPiA+ICANCj4gPiAgCWluc3Qt PnZwdS5pZCA9IElQSV9WREVDX1ZQOTsNCj4gPiAtCWluc3QtPnZwdS5kZXYgPSBjdHgtPmRldi0+ dnB1X3BsYXRfZGV2Ow0KPiA+ICAJaW5zdC0+dnB1LmN0eCA9IGN0eDsNCj4gPiAgDQo+ID4gIAlp ZiAodnB1X2RlY19pbml0KCZpbnN0LT52cHUpKSB7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX2Rydl9iYXNlLmggYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay12Y29kZWMvdmRlY19kcnZfYmFzZS5oDQo+ID4gaW5kZXggY2ViNGRiNGNi M2JlLi5lOTEzZjk2M2I3ZGIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL3ZkZWNfZHJ2X2Jhc2UuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZGVjX2Rydl9iYXNlLmgNCj4gPiBAQCAtNyw4ICs3LDYgQEANCj4g PiAgI2lmbmRlZiBfVkRFQ19EUlZfQkFTRV8NCj4gPiAgI2RlZmluZSBfVkRFQ19EUlZfQkFTRV8N Cj4gPiAgDQo+ID4gLSNpbmNsdWRlICJtdGtfdmNvZGVjX2Rydi5oIg0KPiA+IC0NCj4gPiAgI2lu Y2x1ZGUgInZkZWNfZHJ2X2lmLmgiDQo+ID4gIA0KPiA+ICBzdHJ1Y3QgdmRlY19jb21tb25faWYg ew0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRl Y19kcnZfaWYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX2Rydl9p Zi5jDQo+ID4gaW5kZXggMmU0M2RkNDQ4NmUwLi5iMTg3NDNiOTA2ZWEgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNfZHJ2X2lmLmMNCj4gPiAr KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlY19kcnZfaWYuYw0KPiA+ IEBAIC0xMyw3ICsxMyw2IEBADQo+ID4gICNpbmNsdWRlICJtdGtfdmNvZGVjX2RlYy5oIg0KPiA+ ICAjaW5jbHVkZSAidmRlY19kcnZfYmFzZS5oIg0KPiA+ICAjaW5jbHVkZSAibXRrX3Zjb2RlY19k ZWNfcG0uaCINCj4gPiAtI2luY2x1ZGUgIm10a192cHUuaCINCj4gPiAgDQo+ID4gIGludCB2ZGVj X2lmX2luaXQoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBmb3VyY2Mp DQo+ID4gIHsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNv ZGVjL3ZkZWNfdnB1X2lmLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRl Y192cHVfaWYuYw0KPiA+IGluZGV4IDk0OGExMmZkOWQ0Ni4uNThiMGU2ZmE4ZmQyIDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5j DQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNfdnB1X2lm LmMNCj4gPiBAQCAtOCw2ICs4LDcgQEANCj4gPiAgI2luY2x1ZGUgIm10a192Y29kZWNfdXRpbC5o Ig0KPiA+ICAjaW5jbHVkZSAidmRlY19pcGlfbXNnLmgiDQo+ID4gICNpbmNsdWRlICJ2ZGVjX3Zw dV9pZi5oIg0KPiA+ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19mdy5oIg0KPiA+ICANCj4gPiAgc3Rh dGljIHZvaWQgaGFuZGxlX2luaXRfYWNrX21zZyhjb25zdCBzdHJ1Y3QgdmRlY192cHVfaXBpX2lu aXRfYWNrICptc2cpDQo+ID4gIHsNCj4gPiBAQCAtMTgsNyArMTksOCBAQCBzdGF0aWMgdm9pZCBo YW5kbGVfaW5pdF9hY2tfbXNnKGNvbnN0IHN0cnVjdCB2ZGVjX3ZwdV9pcGlfaW5pdF9hY2sgKm1z ZykNCj4gPiAgDQo+ID4gIAkvKiBtYXBwaW5nIFZQVSBhZGRyZXNzIHRvIGtlcm5lbCB2aXJ0dWFs IGFkZHJlc3MgKi8NCj4gPiAgCS8qIHRoZSBjb250ZW50IGluIHZzaSBpcyBpbml0aWFsaXplZCB0 byAwIGluIFZQVSAqLw0KPiA+IC0JdnB1LT52c2kgPSB2cHVfbWFwcGluZ19kbV9hZGRyKHZwdS0+ ZGV2LCBtc2ctPnZwdV9pbnN0X2FkZHIpOw0KPiA+ICsJdnB1LT52c2kgPSBtdGtfdmNvZGVjX2Z3 X21hcF9kbV9hZGRyKHZwdS0+Y3R4LT5kZXYtPmZ3X2hhbmRsZXIsDQo+ID4gKwkJCQkJICAgICBt c2ctPnZwdV9pbnN0X2FkZHIpOw0KPiA+ICAJdnB1LT5pbnN0X2FkZHIgPSBtc2ctPnZwdV9pbnN0 X2FkZHI7DQo+ID4gIA0KPiA+ICAJbXRrX3Zjb2RlY19kZWJ1Zyh2cHUsICItIHZwdV9pbnN0X2Fk ZHIgPSAweCV4IiwgdnB1LT5pbnN0X2FkZHIpOw0KPiA+IEBAIC0zNCw3ICszNiw3IEBAIHN0YXRp YyB2b2lkIGhhbmRsZV9pbml0X2Fja19tc2coY29uc3Qgc3RydWN0IHZkZWNfdnB1X2lwaV9pbml0 X2FjayAqbXNnKQ0KPiA+ICAgKiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gaW50ZXJydXB0IGNvbnRl eHQgYW5kIGl0IG1lYW5zIHRoZXJlJ3MgYW4gSVBJIE1TRw0KPiA+ICAgKiBmcm9tIFZQVS4NCj4g PiAgICovDQo+ID4gLXN0YXRpYyB2b2lkIHZwdV9kZWNfaXBpX2hhbmRsZXIoY29uc3Qgdm9pZCAq ZGF0YSwgdW5zaWduZWQgaW50IGxlbiwgdm9pZCAqcHJpdikNCj4gPiArc3RhdGljIHZvaWQgdnB1 X2RlY19pcGlfaGFuZGxlcih2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLCB2b2lkICpwcml2 KQ0KPiA+ICB7DQo+ID4gIAljb25zdCBzdHJ1Y3QgdmRlY192cHVfaXBpX2FjayAqbXNnID0gZGF0 YTsNCj4gPiAgCXN0cnVjdCB2ZGVjX3ZwdV9pbnN0ICp2cHUgPSAoc3RydWN0IHZkZWNfdnB1X2lu c3QgKikNCj4gPiBAQCAtNzQsNyArNzYsOCBAQCBzdGF0aWMgaW50IHZjb2RlY192cHVfc2VuZF9t c2coc3RydWN0IHZkZWNfdnB1X2luc3QgKnZwdSwgdm9pZCAqbXNnLCBpbnQgbGVuKQ0KPiA+ICAJ dnB1LT5mYWlsdXJlID0gMDsNCj4gPiAgCXZwdS0+c2lnbmFsZWQgPSAwOw0KPiA+ICANCj4gPiAt CWVyciA9IHZwdV9pcGlfc2VuZCh2cHUtPmRldiwgdnB1LT5pZCwgbXNnLCBsZW4pOw0KPiA+ICsJ ZXJyID0gbXRrX3Zjb2RlY19md19pcGlfc2VuZCh2cHUtPmN0eC0+ZGV2LT5md19oYW5kbGVyLCB2 cHUtPmlkLCBtc2csDQo+ID4gKwkJCQkgICAgIGxlbiwgMjAwMCk7DQo+ID4gIAlpZiAoZXJyKSB7 DQo+ID4gIAkJbXRrX3Zjb2RlY19lcnIodnB1LCAic2VuZCBmYWlsIHZwdV9pZD0lZCBtc2dfaWQ9 JVggc3RhdHVzPSVkIiwNCj4gPiAgCQkJICAgICAgIHZwdS0+aWQsICoodWludDMyX3QgKiltc2cs IGVycik7DQo+ID4gQEAgLTExMCw3ICsxMTMsOCBAQCBpbnQgdnB1X2RlY19pbml0KHN0cnVjdCB2 ZGVjX3ZwdV9pbnN0ICp2cHUpDQo+ID4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ2cHUtPndxKTsN Cj4gPiAgCXZwdS0+aGFuZGxlciA9IHZwdV9kZWNfaXBpX2hhbmRsZXI7DQo+ID4gIA0KPiA+IC0J ZXJyID0gdnB1X2lwaV9yZWdpc3Rlcih2cHUtPmRldiwgdnB1LT5pZCwgdnB1LT5oYW5kbGVyLCAi dmRlYyIsIE5VTEwpOw0KPiA+ICsJZXJyID0gbXRrX3Zjb2RlY19md19pcGlfcmVnaXN0ZXIodnB1 LT5jdHgtPmRldi0+ZndfaGFuZGxlciwgdnB1LT5pZCwNCj4gPiArCQkJCQkgdnB1LT5oYW5kbGVy LCAidmRlYyIsIE5VTEwpOw0KPiA+ICAJaWYgKGVyciAhPSAwKSB7DQo+ID4gIAkJbXRrX3Zjb2Rl Y19lcnIodnB1LCAidnB1X2lwaV9yZWdpc3RlciBmYWlsIHN0YXR1cz0lZCIsIGVycik7DQo+ID4g IAkJcmV0dXJuIGVycjsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstdmNvZGVjL3ZkZWNfdnB1X2lmLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29k ZWMvdmRlY192cHVfaWYuaA0KPiA+IGluZGV4IGY3NzliMDY3NmZiZC4uODUyMjRlYjdlMzRiIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX3Zw dV9pZi5oDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNf dnB1X2lmLmgNCj4gPiBAQCAtNywxMSArNywxMyBAQA0KPiA+ICAjaWZuZGVmIF9WREVDX1ZQVV9J Rl9IXw0KPiA+ICAjZGVmaW5lIF9WREVDX1ZQVV9JRl9IXw0KPiA+ICANCj4gPiAtI2luY2x1ZGUg Im10a192cHUuaCINCj4gPiArI2luY2x1ZGUgIm10a192Y29kZWNfZncuaCINCj4gPiArDQo+ID4g K3N0cnVjdCBtdGtfdmNvZGVjX2N0eDsNCj4gPiAgDQo+ID4gIC8qKg0KPiA+ICAgKiBzdHJ1Y3Qg dmRlY192cHVfaW5zdCAtIFZQVSBpbnN0YW5jZSBmb3IgdmlkZW8gY29kZWMNCj4gPiAtICogQGlw aV9pZCAgICAgIDogaXBpIGlkIGZvciBlYWNoIGRlY29kZXINCj4gPiArICogQGlkICAgICAgICAg IDogaXBpIG1zZyBpZCBmb3IgZWFjaCBkZWNvZGVyDQo+ID4gICAqIEB2c2kgICAgICAgICA6IGRy aXZlciBzdHJ1Y3R1cmUgYWxsb2NhdGVkIGJ5IFZQVSBzaWRlIGFuZCBzaGFyZWQgdG8gQVAgc2lk ZQ0KPiA+ICAgKiAgICAgICAgICAgICAgICBmb3IgY29udHJvbCBhbmQgaW5mbyBzaGFyZQ0KPiA+ ICAgKiBAZmFpbHVyZSAgICAgOiBWUFUgZXhlY3V0aW9uIHJlc3VsdCBzdGF0dXMsIDA6IHN1Y2Nl c3MsIG90aGVyczogZmFpbA0KPiA+IEBAIC0yMywxNSArMjUsMTQgQEANCj4gPiAgICogQGhhbmRs ZXIgICAgIDogaXBpIGhhbmRsZXIgZm9yIGVhY2ggZGVjb2Rlcg0KPiA+ICAgKi8NCj4gPiAgc3Ry dWN0IHZkZWNfdnB1X2luc3Qgew0KPiA+IC0JZW51bSBpcGlfaWQgaWQ7DQo+ID4gKwlpbnQgaWQ7 DQo+ID4gIAl2b2lkICp2c2k7DQo+ID4gIAlpbnQzMl90IGZhaWx1cmU7DQo+ID4gIAl1aW50MzJf dCBpbnN0X2FkZHI7DQo+ID4gIAl1bnNpZ25lZCBpbnQgc2lnbmFsZWQ7DQo+ID4gIAlzdHJ1Y3Qg bXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gPiAtCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldjsN Cj4gPiAgCXdhaXRfcXVldWVfaGVhZF90IHdxOw0KPiA+IC0JaXBpX2hhbmRsZXJfdCBoYW5kbGVy Ow0KPiA+ICsJbXRrX3Zjb2RlY19pcGlfaGFuZGxlciBoYW5kbGVyOw0KPiA+ICB9Ow0KPiA+ICAN Cj4gPiAgLyoqDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZj b2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNv ZGVjL3ZlbmMvdmVuY19oMjY0X2lmLmMNCj4gPiBpbmRleCBiOTYyNGY4ZGYwZTkuLjdhMDBmMDUw ZWMzNiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMv dmVuYy92ZW5jX2gyNjRfaWYuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jDQo+ID4gQEAgLTE4LDcgKzE4LDYgQEANCj4gPiAg I2luY2x1ZGUgIi4uL3ZlbmNfZHJ2X2Jhc2UuaCINCj4gPiAgI2luY2x1ZGUgIi4uL3ZlbmNfaXBp X21zZy5oIg0KPiA+ICAjaW5jbHVkZSAiLi4vdmVuY192cHVfaWYuaCINCj4gPiAtI2luY2x1ZGUg Im10a192cHUuaCINCj4gPiAgDQo+ID4gIHN0YXRpYyBjb25zdCBjaGFyIGgyNjRfZmlsbGVyX21h cmtlcltdID0gezB4MCwgMHgwLCAweDAsIDB4MSwgMHhjfTsNCj4gPiAgDQo+ID4gQEAgLTI1Nyw4 ICsyNTYsMTEgQEAgc3RhdGljIGludCBoMjY0X2VuY19hbGxvY193b3JrX2J1ZihzdHJ1Y3QgdmVu Y19oMjY0X2luc3QgKmluc3QpDQo+ID4gIAkJICovDQo+ID4gIAkJaW5zdC0+d29ya19idWZzW2ld LnNpemUgPSB3YltpXS5zaXplOw0KPiA+ICAJCWlmIChpID09IFZFTkNfSDI2NF9WUFVfV09SS19C VUZfU0tJUF9GUkFNRSkgew0KPiA+IC0JCQlpbnN0LT53b3JrX2J1ZnNbaV0udmEgPSB2cHVfbWFw cGluZ19kbV9hZGRyKA0KPiA+IC0JCQkJaW5zdC0+dnB1X2luc3QuZGV2LCB3YltpXS52cHVhKTsN Cj4gPiArCQkJc3RydWN0IG10a192Y29kZWNfZncgKmhhbmRsZXI7DQo+ID4gKw0KPiA+ICsJCQlo YW5kbGVyID0gaW5zdC0+dnB1X2luc3QuY3R4LT5kZXYtPmZ3X2hhbmRsZXI7DQo+ID4gKwkJCWlu c3QtPndvcmtfYnVmc1tpXS52YSA9DQo+ID4gKwkJCQltdGtfdmNvZGVjX2Z3X21hcF9kbV9hZGRy KGhhbmRsZXIsIHdiW2ldLnZwdWEpOw0KPiA+ICAJCQlpbnN0LT53b3JrX2J1ZnNbaV0uZG1hX2Fk ZHIgPSAwOw0KPiA+ICAJCX0gZWxzZSB7DQo+ID4gIAkJCXJldCA9IG10a192Y29kZWNfbWVtX2Fs bG9jKGluc3QtPmN0eCwNCj4gPiBAQCAtMjc1LDEwICsyNzcsMTIgQEAgc3RhdGljIGludCBoMjY0 X2VuY19hbGxvY193b3JrX2J1ZihzdHJ1Y3QgdmVuY19oMjY0X2luc3QgKmluc3QpDQo+ID4gIAkJ CSAqIHNldHRpbmcgaW4gVlBVIHNpZGUuDQo+ID4gIAkJCSAqLw0KPiA+ICAJCQlpZiAoaSA9PSBW RU5DX0gyNjRfVlBVX1dPUktfQlVGX1JDX0NPREUpIHsNCj4gPiArCQkJCXN0cnVjdCBtdGtfdmNv ZGVjX2Z3ICpoYW5kbGVyOw0KPiA+ICAJCQkJdm9pZCAqdG1wX3ZhOw0KPiA+ICANCj4gPiAtCQkJ CXRtcF92YSA9IHZwdV9tYXBwaW5nX2RtX2FkZHIoaW5zdC0+dnB1X2luc3QuZGV2LA0KPiA+IC0J CQkJCQkJICAgICB3YltpXS52cHVhKTsNCj4gPiArCQkJCWhhbmRsZXIgPSBpbnN0LT52cHVfaW5z dC5jdHgtPmRldi0+ZndfaGFuZGxlcjsNCj4gPiArCQkJCXRtcF92YSA9IG10a192Y29kZWNfZndf bWFwX2RtX2FkZHIoaGFuZGxlciwNCj4gPiArCQkJCQkJCQkgICB3YltpXS52cHVhKTsNCj4gPiAg CQkJCW1lbWNweShpbnN0LT53b3JrX2J1ZnNbaV0udmEsIHRtcF92YSwNCj4gPiAgCQkJCSAgICAg ICB3YltpXS5zaXplKTsNCj4gPiAgCQkJfQ0KPiA+IEBAIC00NjksNyArNDczLDYgQEAgc3RhdGlj IGludCBoMjY0X2VuY19pbml0KHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0KPiA+ICANCj4g PiAgCWluc3QtPmN0eCA9IGN0eDsNCj4gPiAgCWluc3QtPnZwdV9pbnN0LmN0eCA9IGN0eDsNCj4g PiAtCWluc3QtPnZwdV9pbnN0LmRldiA9IGN0eC0+ZGV2LT52cHVfcGxhdF9kZXY7DQo+ID4gIAlp bnN0LT52cHVfaW5zdC5pZCA9IElQSV9WRU5DX0gyNjQ7DQo+ID4gIAlpbnN0LT5od19iYXNlID0g bXRrX3Zjb2RlY19nZXRfcmVnX2FkZHIoaW5zdC0+Y3R4LCBWRU5DX1NZUyk7DQo+ID4gIA0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuYy92ZW5j X3ZwOF9pZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY192 cDhfaWYuYw0KPiA+IGluZGV4IDhkMzZmMDM2MmVmZS4uNjQyNmFmNTE0NTI2IDEwMDY0NA0KPiA+ IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfdnA4X2lm LmMNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuYy92ZW5j X3ZwOF9pZi5jDQo+ID4gQEAgLTE3LDcgKzE3LDYgQEANCj4gPiAgI2luY2x1ZGUgIi4uL3ZlbmNf ZHJ2X2Jhc2UuaCINCj4gPiAgI2luY2x1ZGUgIi4uL3ZlbmNfaXBpX21zZy5oIg0KPiA+ICAjaW5j bHVkZSAiLi4vdmVuY192cHVfaWYuaCINCj4gPiAtI2luY2x1ZGUgIm10a192cHUuaCINCj4gPiAg DQo+ID4gICNkZWZpbmUgVkVOQ19CSVRTVFJFQU1fRlJBTUVfU0laRSAweDAwOTgNCj4gPiAgI2Rl ZmluZSBWRU5DX0JJVFNUUkVBTV9IRUFERVJfTEVOIDB4MDBlOA0KPiA+IEBAIC0xOTAsMTAgKzE4 OSwxMiBAQCBzdGF0aWMgaW50IHZwOF9lbmNfYWxsb2Nfd29ya19idWYoc3RydWN0IHZlbmNfdnA4 X2luc3QgKmluc3QpDQo+ID4gIAkJaWYgKGkgPT0gVkVOQ19WUDhfVlBVX1dPUktfQlVGX1JDX0NP REUgfHwNCj4gPiAgCQkgICAgaSA9PSBWRU5DX1ZQOF9WUFVfV09SS19CVUZfUkNfQ09ERTIgfHwN Cj4gPiAgCQkgICAgaSA9PSBWRU5DX1ZQOF9WUFVfV09SS19CVUZfUkNfQ09ERTMpIHsNCj4gPiAr CQkJc3RydWN0IG10a192Y29kZWNfZncgKmhhbmRsZXI7DQo+ID4gIAkJCXZvaWQgKnRtcF92YTsN Cj4gPiAgDQo+ID4gLQkJCXRtcF92YSA9IHZwdV9tYXBwaW5nX2RtX2FkZHIoaW5zdC0+dnB1X2lu c3QuZGV2LA0KPiA+IC0JCQkJCQkgICAgIHdiW2ldLnZwdWEpOw0KPiA+ICsJCQloYW5kbGVyID0g aW5zdC0+dnB1X2luc3QuY3R4LT5kZXYtPmZ3X2hhbmRsZXI7DQo+ID4gKwkJCXRtcF92YSA9IG10 a192Y29kZWNfZndfbWFwX2RtX2FkZHIoaGFuZGxlciwNCj4gPiArCQkJCQkJCSAgIHdiW2ldLnZw dWEpOw0KPiA+ICAJCQltZW1jcHkoaW5zdC0+d29ya19idWZzW2ldLnZhLCB0bXBfdmEsIHdiW2ld LnNpemUpOw0KPiA+ICAJCX0NCj4gPiAgCQl3YltpXS5pb3ZhID0gaW5zdC0+d29ya19idWZzW2ld LmRtYV9hZGRyOw0KPiA+IEBAIC0zMzQsNyArMzM1LDYgQEAgc3RhdGljIGludCB2cDhfZW5jX2lu aXQoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgpDQo+ID4gIA0KPiA+ICAJaW5zdC0+Y3R4ID0g Y3R4Ow0KPiA+ICAJaW5zdC0+dnB1X2luc3QuY3R4ID0gY3R4Ow0KPiA+IC0JaW5zdC0+dnB1X2lu c3QuZGV2ID0gY3R4LT5kZXYtPnZwdV9wbGF0X2RldjsNCj4gPiAgCWluc3QtPnZwdV9pbnN0Lmlk ID0gSVBJX1ZFTkNfVlA4Ow0KPiA+ICAJaW5zdC0+aHdfYmFzZSA9IG10a192Y29kZWNfZ2V0X3Jl Z19hZGRyKGluc3QtPmN0eCwgVkVOQ19MVF9TWVMpOw0KPiA+ICANCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfZHJ2X2lmLmMgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY19kcnZfaWYuYw0KPiA+IGluZGV4IGM2YmI4 MmFjMmRjZC4uY2UwYmNlODExNjE1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZW5jX2Rydl9pZi5jDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfZHJ2X2lmLmMNCj4gPiBAQCAtMTUsNyArMTUsNiBAQA0K PiA+ICANCj4gPiAgI2luY2x1ZGUgIm10a192Y29kZWNfZW5jLmgiDQo+ID4gICNpbmNsdWRlICJt dGtfdmNvZGVjX2VuY19wbS5oIg0KPiA+IC0jaW5jbHVkZSAibXRrX3ZwdS5oIg0KPiA+ICANCj4g PiAgaW50IHZlbmNfaWZfaW5pdChzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCwgdW5zaWduZWQg aW50IGZvdXJjYykNCj4gPiAgew0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LXZjb2RlYy92ZW5jX3ZwdV9pZi5jDQo+ID4gaW5kZXggOTU0MDcwOWMxOTA1Li41Mzg1NDEyNzgx NGIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3Zl bmNfdnB1X2lmLmMNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMv dmVuY192cHVfaWYuYw0KPiA+IEBAIC00LDcgKzQsNyBAQA0KPiA+ICAgKiBBdXRob3I6IFBvQ2h1 biBMaW4gPHBvY2h1bi5saW5AbWVkaWF0ZWsuY29tPg0KPiA+ICAgKi8NCj4gPiAgDQo+ID4gLSNp bmNsdWRlICJtdGtfdnB1LmgiDQo+ID4gKyNpbmNsdWRlICJtdGtfdmNvZGVjX2Z3LmgiDQo+ID4g ICNpbmNsdWRlICJ2ZW5jX2lwaV9tc2cuaCINCj4gPiAgI2luY2x1ZGUgInZlbmNfdnB1X2lmLmgi DQo+ID4gIA0KPiA+IEBAIC0xMyw3ICsxMyw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lbmNfaW5p dF9tc2coc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwgY29uc3Qgdm9pZCAqZGF0YSkNCj4gPiAg CWNvbnN0IHN0cnVjdCB2ZW5jX3ZwdV9pcGlfbXNnX2luaXQgKm1zZyA9IGRhdGE7DQo+ID4gIA0K PiA+ICAJdnB1LT5pbnN0X2FkZHIgPSBtc2ctPnZwdV9pbnN0X2FkZHI7DQo+ID4gLQl2cHUtPnZz aSA9IHZwdV9tYXBwaW5nX2RtX2FkZHIodnB1LT5kZXYsIG1zZy0+dnB1X2luc3RfYWRkcik7DQo+ ID4gKwl2cHUtPnZzaSA9IG10a192Y29kZWNfZndfbWFwX2RtX2FkZHIodnB1LT5jdHgtPmRldi0+ ZndfaGFuZGxlciwNCj4gPiArCQkJCQkgICAgIG1zZy0+dnB1X2luc3RfYWRkcik7DQo+ID4gIH0N Cj4gPiAgDQo+ID4gIHN0YXRpYyB2b2lkIGhhbmRsZV9lbmNfZW5jb2RlX21zZyhzdHJ1Y3QgdmVu Y192cHVfaW5zdCAqdnB1LCBjb25zdCB2b2lkICpkYXRhKQ0KPiA+IEBAIC0yNSw3ICsyNiw3IEBA IHN0YXRpYyB2b2lkIGhhbmRsZV9lbmNfZW5jb2RlX21zZyhzdHJ1Y3QgdmVuY192cHVfaW5zdCAq dnB1LCBjb25zdCB2b2lkICpkYXRhKQ0KPiA+ICAJdnB1LT5pc19rZXlfZnJtID0gbXNnLT5pc19r ZXlfZnJtOw0KPiA+ICB9DQo+ID4gIA0KPiA+IC1zdGF0aWMgdm9pZCB2cHVfZW5jX2lwaV9oYW5k bGVyKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBsZW4sIHZvaWQgKnByaXYpDQo+ID4g K3N0YXRpYyB2b2lkIHZwdV9lbmNfaXBpX2hhbmRsZXIodm9pZCAqZGF0YSwgdW5zaWduZWQgaW50 IGxlbiwgdm9pZCAqcHJpdikNCj4gPiAgew0KPiA+ICAJY29uc3Qgc3RydWN0IHZlbmNfdnB1X2lw aV9tc2dfY29tbW9uICptc2cgPSBkYXRhOw0KPiA+ICAJc3RydWN0IHZlbmNfdnB1X2luc3QgKnZw dSA9DQo+ID4gQEAgLTYzLDEyICs2NCwxMyBAQCBzdGF0aWMgaW50IHZwdV9lbmNfc2VuZF9tc2co c3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwgdm9pZCAqbXNnLA0KPiA+ICANCj4gPiAgCW10a192 Y29kZWNfZGVidWdfZW50ZXIodnB1KTsNCj4gPiAgDQo+ID4gLQlpZiAoIXZwdS0+ZGV2KSB7DQo+ ID4gKwlpZiAoIXZwdS0+Y3R4LT5kZXYtPmZ3X2hhbmRsZXIpIHsNCj4gPiAgCQltdGtfdmNvZGVj X2Vycih2cHUsICJpbnN0IGRldiBpcyBOVUxMIik7DQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4gIAl9DQo+ID4gIA0KPiA+IC0Jc3RhdHVzID0gdnB1X2lwaV9zZW5kKHZwdS0+ZGV2LCB2cHUt PmlkLCBtc2csIGxlbik7DQo+ID4gKwlzdGF0dXMgPSBtdGtfdmNvZGVjX2Z3X2lwaV9zZW5kKHZw dS0+Y3R4LT5kZXYtPmZ3X2hhbmRsZXIsIHZwdS0+aWQsIG1zZywNCj4gPiArCQkJCQlsZW4sIDIw MDApOw0KPiA+ICAJaWYgKHN0YXR1cykgew0KPiA+ICAJCW10a192Y29kZWNfZXJyKHZwdSwgInZw dV9pcGlfc2VuZCBtc2dfaWQgJXggbGVuICVkIGZhaWwgJWQiLA0KPiA+ICAJCQkgICAgICAgKih1 aW50MzJfdCAqKW1zZywgbGVuLCBzdGF0dXMpOw0KPiA+IEBAIC05Myw4ICs5NSw5IEBAIGludCB2 cHVfZW5jX2luaXQoc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSkNCj4gPiAgCXZwdS0+c2lnbmFs ZWQgPSAwOw0KPiA+ICAJdnB1LT5mYWlsdXJlID0gMDsNCj4gPiAgDQo+ID4gLQlzdGF0dXMgPSB2 cHVfaXBpX3JlZ2lzdGVyKHZwdS0+ZGV2LCB2cHUtPmlkLCB2cHVfZW5jX2lwaV9oYW5kbGVyLA0K PiA+IC0JCQkJICBOVUxMLCBOVUxMKTsNCj4gPiArCXN0YXR1cyA9IG10a192Y29kZWNfZndfaXBp X3JlZ2lzdGVyKHZwdS0+Y3R4LT5kZXYtPmZ3X2hhbmRsZXIsIHZwdS0+aWQsDQo+ID4gKwkJdnB1 X2VuY19pcGlfaGFuZGxlciwgInZlbmMiLCBOVUxMKTsNCj4gPiArDQo+ID4gIAlpZiAoc3RhdHVz KSB7DQo+ID4gIAkJbXRrX3Zjb2RlY19lcnIodnB1LCAidnB1X2lwaV9yZWdpc3RlciBmYWlsICVk Iiwgc3RhdHVzKTsNCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfdnB1X2lmLmggYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuaA0KPiA+IGluZGV4IGJhMzAxYTEz OGE1YS4uZWRkNDExNjIxYjY4IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLXZjb2RlYy92ZW5jX3ZwdV9pZi5oDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstdmNvZGVjL3ZlbmNfdnB1X2lmLmgNCj4gPiBAQCAtNyw3ICs3LDcgQEANCj4gPiAg I2lmbmRlZiBfVkVOQ19WUFVfSUZfSF8NCj4gPiAgI2RlZmluZSBfVkVOQ19WUFVfSUZfSF8NCj4g PiAgDQo+ID4gLSNpbmNsdWRlICJtdGtfdnB1LmgiDQo+ID4gKyNpbmNsdWRlICJtdGtfdmNvZGVj X2Z3LmgiDQo+ID4gICNpbmNsdWRlICJ2ZW5jX2Rydl9pZi5oIg0KPiA+ICANCj4gPiAgLyoNCj4g PiBAQCAtMzQsOSArMzQsOCBAQCBzdHJ1Y3QgdmVuY192cHVfaW5zdCB7DQo+ID4gIAlpbnQgaXNf a2V5X2ZybTsNCj4gPiAgCXVuc2lnbmVkIGludCBpbnN0X2FkZHI7DQo+ID4gIAl2b2lkICp2c2k7 DQo+ID4gLQllbnVtIGlwaV9pZCBpZDsNCj4gPiArCWludCBpZDsNCj4gPiAgCXN0cnVjdCBtdGtf dmNvZGVjX2N0eCAqY3R4Ow0KPiA+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2Ow0KPiA+ ICB9Ow0KPiA+ICANCj4gPiAgaW50IHZwdV9lbmNfaW5pdChzdHJ1Y3QgdmVuY192cHVfaW5zdCAq dnB1KTsNCj4gDQoNCg==