From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B982AC433E0 for ; Wed, 1 Jul 2020 03:19:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 78D6F20724 for ; Wed, 1 Jul 2020 03:19:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="sYBniqlE" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726669AbgGADTz (ORCPT ); Tue, 30 Jun 2020 23:19:55 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:18830 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725862AbgGADTy (ORCPT ); Tue, 30 Jun 2020 23:19:54 -0400 X-UUID: 8b48a9728fcd4527ad2f67357b460906-20200701 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=dODy0gP0LumE7l8zcuBFKmEwPZKUc+odjQQldsI4Os8=; b=sYBniqlEbNZl0XfaqBdH54dus5kXc3dvM/sP65PzM6P8FZaJt+Zht3lVbTZqu6b1CIIBf5gxmpBGiQN/QnBArxSEz+AljMlsnmvmiLdyBj9qsQptoo61iLh/USD+efAeZeWM70M+n7QAwbDtQ/dUCUGs87SFGt1uyTS+oLaHjcc=; X-UUID: 8b48a9728fcd4527ad2f67357b460906-20200701 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1158378005; Wed, 01 Jul 2020 11:19:40 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 1 Jul 2020 11:19:37 +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; Wed, 1 Jul 2020 11:19:37 +0800 Message-ID: <1593573578.8209.2.camel@mtksdaap41> Subject: Re: [PATCH v2 01/18] 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: Wed, 1 Jul 2020 11:19:38 +0800 In-Reply-To: <20200626080442.292309-2-acourbot@chromium.org> References: <20200626080442.292309-1-acourbot@chromium.org> <20200626080442.292309-2-acourbot@chromium.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 03FE1F50DAF3DC21D8F42D528CC813A9508CD11F42DEE481DDD30BB5AB73EA832000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gRnJpLCAyMDIwLTA2LTI2IGF0IDE3OjA0ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90 ZToNCj4gRnJvbTogWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlhdGVrLmNvbT4NCj4gDQo+ IE1UODE4MydzIGNvZGVjIGZpcndtYXJlIGlzIHJ1biBieSBhIGRpZmZlcmVudCByZW1vdGUgcHJv Y2Vzc29yIGZyb20NCj4gTVQ4MTczLiBXaGlsZSB0aGUgZmlybXdhcmUgaW50ZXJmYWNlIGlzIGJh c2ljYWxseSB0aGUgc2FtZSwgdGhlIHdheSB0bw0KPiBpbnZva2UgaXQgZGlmZmVycy4gQWJzdHJh Y3QgYWxsIGZpcm13YXJlIGNhbGxzIHVuZGVyIGEgbGF5ZXIgdGhhdCB3aWxsDQo+IGFsbG93IHVz IHRvIGhhbmRsZSBib3RoIGZpcm13YXJlIHR5cGVzIHRyYW5zcGFyZW50bHkuDQo+IA0KDQpBY2tl ZC1ieTogVGlmZmFueSBMaW4gPHRpZmZhbnkubGluQG1lZGlhdGVrLmNvbT4NCg0KPiBTaWduZWQt b2ZmLWJ5OiBZdW5mZWkgRG9uZyA8eXVuZmVpLmRvbmdAbWVkaWF0ZWsuY29tPg0KPiBbYWNvdXJi b3Q6IHJlZmFjdG9yLCBjbGVhbnVwIGFuZCBzcGxpdF0NCj4gQ28tZGV2ZWxvcGVkLWJ5OiBBbGV4 YW5kcmUgQ291cmJvdCA8YWNvdXJib3RAY2hyb21pdW0ub3JnPg0KPiBTaWduZWQtb2ZmLWJ5OiBB bGV4YW5kcmUgQ291cmJvdCA8YWNvdXJib3RAY2hyb21pdW0ub3JnPg0KPiBbcGloc3VuOiBmaXgg ZXJyb3IgcGF0aCBhbmQgYWRkIG10a192Y29kZWNfZndfcmVsZWFzZV0NCj4gU2lnbmVkLW9mZi1i eTogUGktSHN1biBTaGloIDxwaWhzdW5AY2hyb21pdW0ub3JnPg0KPiBSZXZpZXdlZC1ieTogVGlm ZmFueSBMaW4gPHRpZmZhbnkubGluQG1lZGlhdGVrLmNvbT4NCj4gLS0tDQo+ICBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay12Y29kZWMvTWFrZWZpbGUgICAgfCAgIDQgKy0NCj4gIC4uLi9wbGF0 Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5jICB8ICA1MCArKy0tLQ0KPiAgLi4u L3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19kZWNfcG0uYyAgIHwgICAxIC0NCj4gIC4u Li9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZHJ2LmggICAgICB8ICAgNSArLQ0KPiAg Li4uL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMgIHwgIDQ3ICsrLS0t DQo+ICAuLi4vcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19wbS5jICAgfCAgIDIg LQ0KPiAgLi4uL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jIHwgMTcy ICsrKysrKysrKysrKysrKysrKw0KPiAgLi4uL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRr X3Zjb2RlY19mdy5oIHwgIDM2ICsrKysNCj4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192 Y29kZWNfdXRpbC5jICAgICB8ICAgMSAtDQo+ICAuLi4vcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVj L3ZkZWNfaDI2NF9pZi5jICAgfCAgIDEgLQ0KPiAgLi4uL3BsYXRmb3JtL210ay12Y29kZWMvdmRl Yy92ZGVjX3ZwOF9pZi5jICAgIHwgICAxIC0NCj4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL3Zk ZWMvdmRlY192cDlfaWYuYyAgICB8ICAgMSAtDQo+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLXZj b2RlYy92ZGVjX2Rydl9iYXNlLmggfCAgIDIgLQ0KPiAgLi4uL21lZGlhL3BsYXRmb3JtL210ay12 Y29kZWMvdmRlY19kcnZfaWYuYyAgIHwgICAxIC0NCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZkZWNfdnB1X2lmLmMgICB8ICAxMiArLQ0KPiAgLi4uL21lZGlhL3BsYXRmb3JtL210 ay12Y29kZWMvdmRlY192cHVfaWYuaCAgIHwgIDExICstDQo+ICAuLi4vcGxhdGZvcm0vbXRrLXZj b2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jICAgfCAgMTUgKy0NCj4gIC4uLi9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZlbmMvdmVuY192cDhfaWYuYyAgICB8ICAgOCArLQ0KPiAgLi4uL21lZGlhL3BsYXRm b3JtL210ay12Y29kZWMvdmVuY19kcnZfaWYuYyAgIHwgICAxIC0NCj4gIC4uLi9tZWRpYS9wbGF0 Zm9ybS9tdGstdmNvZGVjL3ZlbmNfdnB1X2lmLmMgICB8ICAxNyArLQ0KPiAgLi4uL21lZGlhL3Bs YXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuaCAgIHwgICA1ICstDQo+ICAyMSBmaWxlcyBj aGFuZ2VkLCAyOTAgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQ0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3 LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29k ZWMvbXRrX3Zjb2RlY19mdy5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstdmNvZGVjL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNv ZGVjL01ha2VmaWxlDQo+IGluZGV4IDM3Yjk0YjU1NWZhMS4uYjg2MzYxMTllZDBhIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvTWFrZWZpbGUNCj4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL01ha2VmaWxlDQo+IEBAIC0xMiw3 ICsxMiw3IEBAIG10ay12Y29kZWMtZGVjLXkgOj0gdmRlYy92ZGVjX2gyNjRfaWYubyBcDQo+ICAJ CXZkZWNfdnB1X2lmLm8gXA0KPiAgCQltdGtfdmNvZGVjX2RlYy5vIFwNCj4gIAkJbXRrX3Zjb2Rl Y19kZWNfcG0ubyBcDQo+IC0NCj4gKwkJbXRrX3Zjb2RlY19mdy5vDQo+ICANCj4gIG10ay12Y29k ZWMtZW5jLXkgOj0gdmVuYy92ZW5jX3ZwOF9pZi5vIFwNCj4gIAkJdmVuYy92ZW5jX2gyNjRfaWYu byBcDQo+IEBAIC0yNSw1ICsyNSwzIEBAIG10ay12Y29kZWMtZW5jLXkgOj0gdmVuYy92ZW5jX3Zw OF9pZi5vIFwNCj4gIA0KPiAgbXRrLXZjb2RlYy1jb21tb24teSA6PSBtdGtfdmNvZGVjX2ludHIu byBcDQo+ICAJCW10a192Y29kZWNfdXRpbC5vXA0KPiAtDQo+IC1jY2ZsYWdzLXkgKz0gLUkkKHNy Y3RyZWUpL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZwdQ0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5jIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5jDQo+IGlu ZGV4IDk3YTFiNjY2NGMyMC4uNGYwN2E1ZmNjZTdmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19kZWNfZHJ2LmMNCj4gKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5jDQo+IEBA IC0yMCw3ICsyMCw3IEBADQo+ICAjaW5jbHVkZSAibXRrX3Zjb2RlY19kZWNfcG0uaCINCj4gICNp bmNsdWRlICJtdGtfdmNvZGVjX2ludHIuaCINCj4gICNpbmNsdWRlICJtdGtfdmNvZGVjX3V0aWwu aCINCj4gLSNpbmNsdWRlICJtdGtfdnB1LmgiDQo+ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19mdy5o Ig0KPiAgDQo+ICAjZGVmaW5lIFZERUNfSFdfQUNUSVZFCTB4MTANCj4gICNkZWZpbmUgVkRFQ19J UlFfQ0ZHCTB4MTENCj4gQEAgLTc3LDIyICs3Nyw2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdGtf dmNvZGVjX2RlY19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQ0KPiAgCXJldHVybiBJ UlFfSEFORExFRDsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIHZvaWQgbXRrX3Zjb2RlY19kZWNfcmVz ZXRfaGFuZGxlcih2b2lkICpwcml2KQ0KPiAtew0KPiAtCXN0cnVjdCBtdGtfdmNvZGVjX2RldiAq ZGV2ID0gcHJpdjsNCj4gLQlzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gLQ0KPiAtCW10 a192NGwyX2VycigiV2F0Y2hkb2cgdGltZW91dCEhIik7DQo+IC0NCj4gLQltdXRleF9sb2NrKCZk ZXYtPmRldl9tdXRleCk7DQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXYtPmN0eF9s aXN0LCBsaXN0KSB7DQo+IC0JCWN0eC0+c3RhdGUgPSBNVEtfU1RBVEVfQUJPUlQ7DQo+IC0JCW10 a192NGwyX2RlYnVnKDAsICJbJWRdIENoYW5nZSB0byBzdGF0ZSBNVEtfU1RBVEVfRVJST1IiLA0K PiAtCQkJCWN0eC0+aWQpOw0KPiAtCX0NCj4gLQltdXRleF91bmxvY2soJmRldi0+ZGV2X211dGV4 KTsNCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGludCBmb3BzX3Zjb2RlY19vcGVuKHN0cnVjdCBmaWxl ICpmaWxlKQ0KPiAgew0KPiAgCXN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2ID0gdmlkZW9fZHJ2 ZGF0YShmaWxlKTsNCj4gQEAgLTE0NCwyMSArMTI4LDIwIEBAIHN0YXRpYyBpbnQgZm9wc192Y29k ZWNfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gIAlpZiAodjRsMl9maF9pc19zaW5ndWxhcigm Y3R4LT5maCkpIHsNCj4gIAkJbXRrX3Zjb2RlY19kZWNfcHdfb24oJmRldi0+cG0pOw0KPiAgCQkv Kg0KPiAtCQkgKiB2cHVfbG9hZF9maXJtd2FyZSBjaGVja3MgaWYgaXQgd2FzIGxvYWRlZCBhbHJl YWR5IGFuZA0KPiAtCQkgKiBkb2VzIG5vdGhpbmcgaW4gdGhhdCBjYXNlDQo+ICsJCSAqIERvZXMg bm90aGluZyBpZiBmaXJtd2FyZSB3YXMgYWxyZWFkeSBsb2FkZWQuDQo+ICAJCSAqLw0KPiAtCQly ZXQgPSB2cHVfbG9hZF9maXJtd2FyZShkZXYtPnZwdV9wbGF0X2Rldik7DQo+ICsJCXJldCA9IG10 a192Y29kZWNfZndfbG9hZF9maXJtd2FyZShkZXYtPmZ3X2hhbmRsZXIpOw0KPiAgCQlpZiAocmV0 IDwgMCkgew0KPiAgCQkJLyoNCj4gIAkJCSAqIFJldHVybiAwIGlmIGRvd25sb2FkaW5nIGZpcm13 YXJlIHN1Y2Nlc3NmdWxseSwNCj4gIAkJCSAqIG90aGVyd2lzZSBpdCBpcyBmYWlsZWQNCj4gIAkJ CSAqLw0KPiAtCQkJbXRrX3Y0bDJfZXJyKCJ2cHVfbG9hZF9maXJtd2FyZSBmYWlsZWQhIik7DQo+ ICsJCQltdGtfdjRsMl9lcnIoImZhaWxlZCB0byBsb2FkIGZpcm13YXJlISIpOw0KPiAgCQkJZ290 byBlcnJfbG9hZF9mdzsNCj4gIAkJfQ0KPiAgDQo+ICAJCWRldi0+ZGVjX2NhcGFiaWxpdHkgPQ0K PiAtCQkJdnB1X2dldF92ZGVjX2h3X2NhcGEoZGV2LT52cHVfcGxhdF9kZXYpOw0KPiArCQkJbXRr X3Zjb2RlY19md19nZXRfdmRlY19jYXBhKGRldi0+ZndfaGFuZGxlcik7DQo+ICAJCW10a192NGwy X2RlYnVnKDAsICJkZWNvZGVyIGNhcGFiaWxpdHkgJXgiLCBkZXYtPmRlY19jYXBhYmlsaXR5KTsN Cj4gIAl9DQo+ICANCj4gQEAgLTIyOCw2ICsyMTEsOCBAQCBzdGF0aWMgaW50IG10a192Y29kZWNf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAlzdHJ1Y3QgbXRrX3Zjb2Rl Y19kZXYgKmRldjsNCj4gIAlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZmRfZGVjOw0KPiAgCXN0cnVj dCByZXNvdXJjZSAqcmVzOw0KPiArCXBoYW5kbGUgcnByb2NfcGhhbmRsZTsNCj4gKwllbnVtIG10 a192Y29kZWNfZndfdHlwZSBmd190eXBlOw0KPiAgCWludCBpLCByZXQ7DQo+ICANCj4gIAlkZXYg PSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpkZXYpLCBHRlBfS0VSTkVMKTsNCj4g QEAgLTIzNywxOSArMjIyLDIxIEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCUlOSVRfTElTVF9IRUFEKCZkZXYtPmN0eF9saXN0 KTsNCj4gIAlkZXYtPnBsYXRfZGV2ID0gcGRldjsNCj4gIA0KPiAtCWRldi0+dnB1X3BsYXRfZGV2 ID0gdnB1X2dldF9wbGF0X2RldmljZShkZXYtPnBsYXRfZGV2KTsNCj4gLQlpZiAoZGV2LT52cHVf cGxhdF9kZXYgPT0gTlVMTCkgew0KPiAtCQltdGtfdjRsMl9lcnIoIltWUFVdIHZwdSBkZXZpY2Ug aW4gbm90IHJlYWR5Iik7DQo+IC0JCXJldHVybiAtRVBST0JFX0RFRkVSOw0KPiArCWlmICghb2Zf cHJvcGVydHlfcmVhZF91MzIocGRldi0+ZGV2Lm9mX25vZGUsICJtZWRpYXRlayx2cHUiLA0KPiAr CQkJCSAgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ICsJCWZ3X3R5cGUgPSBWUFU7DQo+ICsJfSBlbHNl IHsNCj4gKwkJbXRrX3Y0bDJfZXJyKCJDb3VsZCBub3QgZ2V0IHZkZWMgSVBJIGRldmljZSIpOw0K PiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gIAl9DQo+IC0NCj4gLQl2cHVfd2R0X3JlZ19oYW5kbGVy KGRldi0+dnB1X3BsYXRfZGV2LCBtdGtfdmNvZGVjX2RlY19yZXNldF9oYW5kbGVyLA0KPiAtCQkJ ZGV2LCBWUFVfUlNUX0RFQyk7DQo+ICsJZGV2LT5md19oYW5kbGVyID0gbXRrX3Zjb2RlY19md19z ZWxlY3QoZGV2LCBmd190eXBlLCBWUFVfUlNUX0RFQyk7DQo+ICsJaWYgKElTX0VSUihkZXYtPmZ3 X2hhbmRsZXIpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihkZXYtPmZ3X2hhbmRsZXIpOw0KPiAgDQo+ ICAJcmV0ID0gbXRrX3Zjb2RlY19pbml0X2RlY19wbShkZXYpOw0KPiAgCWlmIChyZXQgPCAwKSB7 DQo+ICAJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgbXQgdmNvZGVjIGNsb2Nr IHNvdXJjZSIpOw0KPiAtCQlyZXR1cm4gcmV0Ow0KPiArCQlnb3RvIGVycl9kZWNfcG07DQo+ICAJ fQ0KPiAgDQo+ICAJZm9yIChpID0gMDsgaSA8IE5VTV9NQVhfVkRFQ19SRUdfQkFTRTsgaSsrKSB7 DQo+IEBAIC0zNTIsNiArMzM5LDggQEAgc3RhdGljIGludCBtdGtfdmNvZGVjX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmZGV2 LT52NGwyX2Rldik7DQo+ICBlcnJfcmVzOg0KPiAgCW10a192Y29kZWNfcmVsZWFzZV9kZWNfcG0o ZGV2KTsNCj4gK2Vycl9kZWNfcG06DQo+ICsJbXRrX3Zjb2RlY19md19yZWxlYXNlKGRldi0+Zndf aGFuZGxlcik7DQo+ICAJcmV0dXJuIHJldDsNCj4gIH0NCj4gIA0KPiBAQCAtMzc2LDYgKzM2NSw3 IEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19kZWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ICANCj4gIAl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZkZXYtPnY0bDJfZGV2 KTsNCj4gIAltdGtfdmNvZGVjX3JlbGVhc2VfZGVjX3BtKGRldik7DQo+ICsJbXRrX3Zjb2RlY19m d19yZWxlYXNlKGRldi0+ZndfaGFuZGxlcik7DQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+ICANCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVj X2RlY19wbS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZGVjX3BtLmMNCj4gaW5kZXggNWE2ZWM4ZmI1MmRhLi4zNmRmZTNmYzA1NmEgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2RlY19wbS5j DQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Rl Y19wbS5jDQo+IEBAIC0xMiw3ICsxMiw2IEBADQo+ICANCj4gICNpbmNsdWRlICJtdGtfdmNvZGVj X2RlY19wbS5oIg0KPiAgI2luY2x1ZGUgIm10a192Y29kZWNfdXRpbC5oIg0KPiAtI2luY2x1ZGUg Im10a192cHUuaCINCj4gIA0KPiAgaW50IG10a192Y29kZWNfaW5pdF9kZWNfcG0oc3RydWN0IG10 a192Y29kZWNfZGV2ICptdGtkZXYpDQo+ICB7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19kcnYuaCBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Rydi5oDQo+IGluZGV4IDlmZDU2ZGVlN2ZkMS4u ZTEzMmM0ZWM0NjNhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12 Y29kZWMvbXRrX3Zjb2RlY19kcnYuaA0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay12Y29kZWMvbXRrX3Zjb2RlY19kcnYuaA0KPiBAQCAtMzA5LDEzICszMDksMTMgQEAgc3RydWN0 IG10a192Y29kZWNfY3R4IHsNCj4gICAqIEBtMm1fZGV2X2RlYzogbTJtIGRldmljZSBmb3IgZGVj b2Rlcg0KPiAgICogQG0ybV9kZXZfZW5jOiBtMm0gZGV2aWNlIGZvciBlbmNvZGVyLg0KPiAgICog QHBsYXRfZGV2OiBwbGF0Zm9ybSBkZXZpY2UNCj4gLSAqIEB2cHVfcGxhdF9kZXY6IG10ayB2cHUg cGxhdGZvcm0gZGV2aWNlDQo+ICAgKiBAY3R4X2xpc3Q6IGxpc3Qgb2Ygc3RydWN0IG10a192Y29k ZWNfY3R4DQo+ICAgKiBAaXJxbG9jazogcHJvdGVjdCBkYXRhIGFjY2VzcyBieSBpcnEgaGFuZGxl ciBhbmQgd29yayB0aHJlYWQNCj4gICAqIEBjdXJyX2N0eDogVGhlIGNvbnRleHQgdGhhdCBpcyB3 YWl0aW5nIGZvciBjb2RlYyBoYXJkd2FyZQ0KPiAgICoNCj4gICAqIEByZWdfYmFzZTogTWFwcGVk IGFkZHJlc3Mgb2YgTVRLIFZjb2RlYyByZWdpc3RlcnMuDQo+ICAgKg0KPiArICogQGZ3X2hhbmRs ZXI6IHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZmlybXdhcmUuDQo+ICAgKiBAaWRfY291 bnRlcjogdXNlZCB0byBpZGVudGlmeSBjdXJyZW50IG9wZW5lZCBpbnN0YW5jZQ0KPiAgICoNCj4g ICAqIEBlbmNvZGVfd29ya3F1ZXVlOiBlbmNvZGUgd29yayBxdWV1ZQ0KPiBAQCAtMzQ0LDEyICsz NDQsMTMgQEAgc3RydWN0IG10a192Y29kZWNfZGV2IHsNCj4gIAlzdHJ1Y3QgdjRsMl9tMm1fZGV2 ICptMm1fZGV2X2RlYzsNCj4gIAlzdHJ1Y3QgdjRsMl9tMm1fZGV2ICptMm1fZGV2X2VuYzsNCj4g IAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0X2RldjsNCj4gLQlzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICp2cHVfcGxhdF9kZXY7DQo+ICAJc3RydWN0IGxpc3RfaGVhZCBjdHhfbGlzdDsNCj4g IAlzcGlubG9ja190IGlycWxvY2s7DQo+ICAJc3RydWN0IG10a192Y29kZWNfY3R4ICpjdXJyX2N0 eDsNCj4gIAl2b2lkIF9faW9tZW0gKnJlZ19iYXNlW05VTV9NQVhfVkNPREVDX1JFR19CQVNFXTsN Cj4gIA0KPiArCXN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmd19oYW5kbGVyOw0KPiArDQo+ICAJdW5z aWduZWQgbG9uZyBpZF9jb3VudGVyOw0KPiAgDQo+ICAJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3Qg KmRlY29kZV93b3JrcXVldWU7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMNCj4gaW5kZXggNGQzMWYxZWQxMTNmLi40 MzQwZWExMGFmZDAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZj b2RlYy9tdGtfdmNvZGVjX2VuY19kcnYuYw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMNCj4gQEAgLTIxLDcgKzIxLDcgQEANCj4g ICNpbmNsdWRlICJtdGtfdmNvZGVjX2VuY19wbS5oIg0KPiAgI2luY2x1ZGUgIm10a192Y29kZWNf aW50ci5oIg0KPiAgI2luY2x1ZGUgIm10a192Y29kZWNfdXRpbC5oIg0KPiAtI2luY2x1ZGUgIm10 a192cHUuaCINCj4gKyNpbmNsdWRlICJtdGtfdmNvZGVjX2Z3LmgiDQo+ICANCj4gIG1vZHVsZV9w YXJhbShtdGtfdjRsMl9kYmdfbGV2ZWwsIGludCwgU19JUlVHTyB8IFNfSVdVU1IpOw0KPiAgbW9k dWxlX3BhcmFtKG10a192Y29kZWNfZGJnLCBib29sLCBTX0lSVUdPIHwgU19JV1VTUik7DQo+IEBA IC0xMDEsMjIgKzEwMSw2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdGtfdmNvZGVjX2VuY19sdF9p cnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwcml2KQ0KPiAgCXJldHVybiBJUlFfSEFORExFRDsN Cj4gIH0NCj4gIA0KPiAtc3RhdGljIHZvaWQgbXRrX3Zjb2RlY19lbmNfcmVzZXRfaGFuZGxlcih2 b2lkICpwcml2KQ0KPiAtew0KPiAtCXN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2ID0gcHJpdjsN Cj4gLQlzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gLQ0KPiAtCW10a192NGwyX2RlYnVn KDAsICJXYXRjaGRvZyB0aW1lb3V0ISEiKTsNCj4gLQ0KPiAtCW11dGV4X2xvY2soJmRldi0+ZGV2 X211dGV4KTsNCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldi0+Y3R4X2xpc3QsIGxp c3QpIHsNCj4gLQkJY3R4LT5zdGF0ZSA9IE1US19TVEFURV9BQk9SVDsNCj4gLQkJbXRrX3Y0bDJf ZGVidWcoMCwgIlslZF0gQ2hhbmdlIHRvIHN0YXRlIE1US19TVEFURV9BQk9SVCIsDQo+IC0JCQkJ Y3R4LT5pZCk7DQo+IC0JfQ0KPiAtCW11dGV4X3VubG9jaygmZGV2LT5kZXZfbXV0ZXgpOw0KPiAt fQ0KPiAtDQo+ICBzdGF0aWMgaW50IGZvcHNfdmNvZGVjX29wZW4oc3RydWN0IGZpbGUgKmZpbGUp DQo+ICB7DQo+ICAJc3RydWN0IG10a192Y29kZWNfZGV2ICpkZXYgPSB2aWRlb19kcnZkYXRhKGZp bGUpOw0KPiBAQCAtMTU5LDEwICsxNDMsMTAgQEAgc3RhdGljIGludCBmb3BzX3Zjb2RlY19vcGVu KHN0cnVjdCBmaWxlICpmaWxlKQ0KPiAgDQo+ICAJaWYgKHY0bDJfZmhfaXNfc2luZ3VsYXIoJmN0 eC0+ZmgpKSB7DQo+ICAJCS8qDQo+IC0JCSAqIHZwdV9sb2FkX2Zpcm13YXJlIGNoZWNrcyBpZiBp dCB3YXMgbG9hZGVkIGFscmVhZHkgYW5kDQo+ICsJCSAqIGxvYWQgZmlyZXdhcmUgdG8gY2hlY2tz IGlmIGl0IHdhcyBsb2FkZWQgYWxyZWFkeSBhbmQNCj4gIAkJICogZG9lcyBub3RoaW5nIGluIHRo YXQgY2FzZQ0KPiAgCQkgKi8NCj4gLQkJcmV0ID0gdnB1X2xvYWRfZmlybXdhcmUoZGV2LT52cHVf cGxhdF9kZXYpOw0KPiArCQlyZXQgPSBtdGtfdmNvZGVjX2Z3X2xvYWRfZmlybXdhcmUoZGV2LT5m d19oYW5kbGVyKTsNCj4gIAkJaWYgKHJldCA8IDApIHsNCj4gIAkJCS8qDQo+ICAJCQkgKiBSZXR1 cm4gMCBpZiBkb3dubG9hZGluZyBmaXJtd2FyZSBzdWNjZXNzZnVsbHksDQo+IEBAIC0xNzMsNyAr MTU3LDcgQEAgc3RhdGljIGludCBmb3BzX3Zjb2RlY19vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQ0K PiAgCQl9DQo+ICANCj4gIAkJZGV2LT5lbmNfY2FwYWJpbGl0eSA9DQo+IC0JCQl2cHVfZ2V0X3Zl bmNfaHdfY2FwYShkZXYtPnZwdV9wbGF0X2Rldik7DQo+ICsJCQltdGtfdmNvZGVjX2Z3X2dldF92 ZW5jX2NhcGEoZGV2LT5md19oYW5kbGVyKTsNCj4gIAkJbXRrX3Y0bDJfZGVidWcoMCwgImVuY29k ZXIgY2FwYWJpbGl0eSAleCIsIGRldi0+ZW5jX2NhcGFiaWxpdHkpOw0KPiAgCX0NCj4gIA0KPiBA QCAtMjM1LDYgKzIxOSw4IEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCXN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2Ow0KPiAg CXN0cnVjdCB2aWRlb19kZXZpY2UgKnZmZF9lbmM7DQo+ICAJc3RydWN0IHJlc291cmNlICpyZXM7 DQo+ICsJcGhhbmRsZSBycHJvY19waGFuZGxlOw0KPiArCWVudW0gbXRrX3Zjb2RlY19md190eXBl IGZ3X3R5cGU7DQo+ICAJaW50IGksIGosIHJldDsNCj4gIA0KPiAgCWRldiA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOw0KPiBAQCAtMjQ0LDE5ICsy MzAsMjEgQEAgc3RhdGljIGludCBtdGtfdmNvZGVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldi0+Y3R4X2xpc3QpOw0KPiAgCWRldi0+ cGxhdF9kZXYgPSBwZGV2Ow0KPiAgDQo+IC0JZGV2LT52cHVfcGxhdF9kZXYgPSB2cHVfZ2V0X3Bs YXRfZGV2aWNlKGRldi0+cGxhdF9kZXYpOw0KPiAtCWlmIChkZXYtPnZwdV9wbGF0X2RldiA9PSBO VUxMKSB7DQo+IC0JCW10a192NGwyX2VycigiW1ZQVV0gdnB1IGRldmljZSBpbiBub3QgcmVhZHki KTsNCj4gLQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7DQo+ICsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFk X3UzMihwZGV2LT5kZXYub2Zfbm9kZSwgIm1lZGlhdGVrLHZwdSIsDQo+ICsJCQkJICAmcnByb2Nf cGhhbmRsZSkpIHsNCj4gKwkJZndfdHlwZSA9IFZQVTsNCj4gKwl9IGVsc2Ugew0KPiArCQltdGtf djRsMl9lcnIoIkNvdWxkIG5vdCBnZXQgdmVuYyBJUEkgZGV2aWNlIik7DQo+ICsJCXJldHVybiAt RU5PREVWOw0KPiAgCX0NCj4gLQ0KPiAtCXZwdV93ZHRfcmVnX2hhbmRsZXIoZGV2LT52cHVfcGxh dF9kZXYsIG10a192Y29kZWNfZW5jX3Jlc2V0X2hhbmRsZXIsDQo+IC0JCQkJZGV2LCBWUFVfUlNU X0VOQyk7DQo+ICsJZGV2LT5md19oYW5kbGVyID0gbXRrX3Zjb2RlY19md19zZWxlY3QoZGV2LCBm d190eXBlLCBWUFVfUlNUX0VOQyk7DQo+ICsJaWYgKElTX0VSUihkZXYtPmZ3X2hhbmRsZXIpKQ0K PiArCQlyZXR1cm4gUFRSX0VSUihkZXYtPmZ3X2hhbmRsZXIpOw0KPiAgDQo+ICAJcmV0ID0gbXRr X3Zjb2RlY19pbml0X2VuY19wbShkZXYpOw0KPiAgCWlmIChyZXQgPCAwKSB7DQo+ICAJCWRldl9l cnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgbXQgdmNvZGVjIGNsb2NrIHNvdXJjZSEiKTsN Cj4gLQkJcmV0dXJuIHJldDsNCj4gKwkJZ290byBlcnJfZW5jX3BtOw0KPiAgCX0NCj4gIA0KPiAg CWZvciAoaSA9IFZFTkNfU1lTLCBqID0gMDsgaSA8IE5VTV9NQVhfVkNPREVDX1JFR19CQVNFOyBp KyssIGorKykgew0KPiBAQCAtMzc3LDYgKzM2NSw4IEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCXY0bDJfZGV2aWNlX3VucmVn aXN0ZXIoJmRldi0+djRsMl9kZXYpOw0KPiAgZXJyX3JlczoNCj4gIAltdGtfdmNvZGVjX3JlbGVh c2VfZW5jX3BtKGRldik7DQo+ICtlcnJfZW5jX3BtOg0KPiArCW10a192Y29kZWNfZndfcmVsZWFz ZShkZXYtPmZ3X2hhbmRsZXIpOw0KPiAgCXJldHVybiByZXQ7DQo+ICB9DQo+ICANCj4gQEAgLTQw MSw2ICszOTEsNyBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfZW5jX3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgDQo+ICAJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmZGV2 LT52NGwyX2Rldik7DQo+ICAJbXRrX3Zjb2RlY19yZWxlYXNlX2VuY19wbShkZXYpOw0KPiArCW10 a192Y29kZWNfZndfcmVsZWFzZShkZXYtPmZ3X2hhbmRsZXIpOw0KPiAgCXJldHVybiAwOw0KPiAg fQ0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMv bXRrX3Zjb2RlY19lbmNfcG0uYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9t dGtfdmNvZGVjX2VuY19wbS5jDQo+IGluZGV4IDNlMmJmZGVkNzlhNi4uZWUyMjkwMmFhYTcxIDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2Rl Y19lbmNfcG0uYw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRr X3Zjb2RlY19lbmNfcG0uYw0KPiBAQCAtMTIsOCArMTIsNiBAQA0KPiAgDQo+ICAjaW5jbHVkZSAi bXRrX3Zjb2RlY19lbmNfcG0uaCINCj4gICNpbmNsdWRlICJtdGtfdmNvZGVjX3V0aWwuaCINCj4g LSNpbmNsdWRlICJtdGtfdnB1LmgiDQo+IC0NCj4gIA0KPiAgaW50IG10a192Y29kZWNfaW5pdF9l bmNfcG0oc3RydWN0IG10a192Y29kZWNfZGV2ICptdGtkZXYpDQo+ICB7DQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZncuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjk2N2JiMTAwYTk5MA0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtf dmNvZGVjX2Z3LmMNCj4gQEAgLTAsMCArMSwxNzIgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wDQo+ICsNCj4gKyNpbmNsdWRlICJtdGtfdmNvZGVjX2Z3LmgiDQo+ICsj aW5jbHVkZSAibXRrX3Zjb2RlY191dGlsLmgiDQo+ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19kcnYu aCINCj4gKw0KPiArc3RydWN0IG10a192Y29kZWNfZndfb3BzIHsNCj4gKwlpbnQgKCpsb2FkX2Zp cm13YXJlKShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpOw0KPiArCXVuc2lnbmVkIGludCAoKmdl dF92ZGVjX2NhcGEpKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdyk7DQo+ICsJdW5zaWduZWQgaW50 ICgqZ2V0X3ZlbmNfY2FwYSkoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KTsNCj4gKwl2b2lkICog KCptYXBfZG1fYWRkcikoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LCB1MzIgZHRjbV9kbWVtX2Fk ZHIpOw0KPiArCWludCAoKmlwaV9yZWdpc3Rlcikoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LCBp bnQgaWQsDQo+ICsJCW10a192Y29kZWNfaXBpX2hhbmRsZXIgaGFuZGxlciwgY29uc3QgY2hhciAq bmFtZSwgdm9pZCAqcHJpdik7DQo+ICsJaW50ICgqaXBpX3NlbmQpKHN0cnVjdCBtdGtfdmNvZGVj X2Z3ICpmdywgaW50IGlkLCB2b2lkICpidWYsDQo+ICsJCXVuc2lnbmVkIGludCBsZW4sIHVuc2ln bmVkIGludCB3YWl0KTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtdGtfdmNvZGVjX2Z3IHsNCj4g KwllbnVtIG10a192Y29kZWNfZndfdHlwZSB0eXBlOw0KPiArCWNvbnN0IHN0cnVjdCBtdGtfdmNv ZGVjX2Z3X29wcyAqb3BzOw0KPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7DQo+ICt9 Ow0KPiArDQo+ICtzdGF0aWMgaW50IG10a192Y29kZWNfdnB1X2xvYWRfZmlybXdhcmUoc3RydWN0 IG10a192Y29kZWNfZncgKmZ3KQ0KPiArew0KPiArCXJldHVybiB2cHVfbG9hZF9maXJtd2FyZShm dy0+cGRldik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbXRrX3Zjb2RlY192 cHVfZ2V0X3ZkZWNfY2FwYShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpDQo+ICt7DQo+ICsJcmV0 dXJuIHZwdV9nZXRfdmRlY19od19jYXBhKGZ3LT5wZGV2KTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IHVuc2lnbmVkIGludCBtdGtfdmNvZGVjX3ZwdV9nZXRfdmVuY19jYXBhKHN0cnVjdCBtdGtfdmNv ZGVjX2Z3ICpmdykNCj4gK3sNCj4gKwlyZXR1cm4gdnB1X2dldF92ZW5jX2h3X2NhcGEoZnctPnBk ZXYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCAqbXRrX3Zjb2RlY192cHVfbWFwX2RtX2Fk ZHIoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LA0KPiArCQkJCQl1MzIgZHRjbV9kbWVtX2FkZHIp DQo+ICt7DQo+ICsJcmV0dXJuIHZwdV9tYXBwaW5nX2RtX2FkZHIoZnctPnBkZXYsIGR0Y21fZG1l bV9hZGRyKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtdGtfdmNvZGVjX3ZwdV9zZXRfaXBp X3JlZ2lzdGVyKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywgaW50IGlkLA0KPiArCQltdGtfdmNv ZGVjX2lwaV9oYW5kbGVyIGhhbmRsZXIsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnByaXYpDQo+ ICt7DQo+ICsJLyoNCj4gKwkgKiBUaGUgaGFuZGxlciB3ZSByZWNlaXZlIHRha2VzIGEgdm9pZCAq IGFzIGl0cyBmaXJzdCBhcmd1bWVudC4gV2UNCj4gKwkgKiBjYW5ub3QgY2hhbmdlIHRoaXMgYmVj YXVzZSBpdCBuZWVkcyB0byBiZSBwYXNzZWQgZG93biB0byB0aGUgcnByb2MNCj4gKwkgKiBzdWJz eXN0ZW0gd2hlbiBTQ1AgaXMgdXNlZC4gVlBVIHRha2VzIGEgY29uc3QgYXJndW1lbnQsIHdoaWNo IGlzDQo+ICsJICogbW9yZSBjb25zdHJhaW5lZCwgc28gdGhlIGNvbnZlcnNpb24gYmVsb3cgaXMg c2FmZS4NCj4gKwkgKi8NCj4gKwlpcGlfaGFuZGxlcl90IGhhbmRsZXJfY29uc3QgPSAoaXBpX2hh bmRsZXJfdCloYW5kbGVyOw0KPiArDQo+ICsJcmV0dXJuIHZwdV9pcGlfcmVnaXN0ZXIoZnctPnBk ZXYsIGlkLCBoYW5kbGVyX2NvbnN0LCBuYW1lLCBwcml2KTsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBtdGtfdmNvZGVjX3ZwdV9pcGlfc2VuZChzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncsIGlu dCBpZCwgdm9pZCAqYnVmLA0KPiArCQl1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgd2Fp dCkNCj4gK3sNCj4gKwlyZXR1cm4gdnB1X2lwaV9zZW5kKGZ3LT5wZGV2LCBpZCwgYnVmLCBsZW4p Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a192Y29kZWNfZndfb3BzIG10 a192Y29kZWNfdnB1X21zZyA9IHsNCj4gKwkubG9hZF9maXJtd2FyZSA9IG10a192Y29kZWNfdnB1 X2xvYWRfZmlybXdhcmUsDQo+ICsJLmdldF92ZGVjX2NhcGEgPSBtdGtfdmNvZGVjX3ZwdV9nZXRf dmRlY19jYXBhLA0KPiArCS5nZXRfdmVuY19jYXBhID0gbXRrX3Zjb2RlY192cHVfZ2V0X3ZlbmNf Y2FwYSwNCj4gKwkubWFwX2RtX2FkZHIgPSBtdGtfdmNvZGVjX3ZwdV9tYXBfZG1fYWRkciwNCj4g KwkuaXBpX3JlZ2lzdGVyID0gbXRrX3Zjb2RlY192cHVfc2V0X2lwaV9yZWdpc3RlciwNCj4gKwku aXBpX3NlbmQgPSBtdGtfdmNvZGVjX3ZwdV9pcGlfc2VuZCwNCj4gK307DQo+ICsNCj4gK3N0YXRp YyB2b2lkIG10a192Y29kZWNfcmVzZXRfaGFuZGxlcih2b2lkICpwcml2KQ0KPiArew0KPiArCXN0 cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2ID0gcHJpdjsNCj4gKwlzdHJ1Y3QgbXRrX3Zjb2RlY19j dHggKmN0eDsNCj4gKw0KPiArCW10a192NGwyX2VycigiV2F0Y2hkb2cgdGltZW91dCEhIik7DQo+ ICsNCj4gKwltdXRleF9sb2NrKCZkZXYtPmRldl9tdXRleCk7DQo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjdHgsICZkZXYtPmN0eF9saXN0LCBsaXN0KSB7DQo+ICsJCWN0eC0+c3RhdGUgPSBNVEtf U1RBVEVfQUJPUlQ7DQo+ICsJCW10a192NGwyX2RlYnVnKDAsICJbJWRdIENoYW5nZSB0byBzdGF0 ZSBNVEtfU1RBVEVfQUJPUlQiLA0KPiArCQkJCWN0eC0+aWQpOw0KPiArCX0NCj4gKwltdXRleF91 bmxvY2soJmRldi0+ZGV2X211dGV4KTsNCj4gK30NCj4gKw0KPiArc3RydWN0IG10a192Y29kZWNf ZncgKm10a192Y29kZWNfZndfc2VsZWN0KHN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2LA0KPiAr CQkJCQkgICBlbnVtIG10a192Y29kZWNfZndfdHlwZSB0eXBlLA0KPiArCQkJCQkgICBlbnVtIHJz dF9pZCByc3RfaWQpDQo+ICt7DQo+ICsJY29uc3Qgc3RydWN0IG10a192Y29kZWNfZndfb3BzICpv cHM7DQo+ICsJc3RydWN0IG10a192Y29kZWNfZncgKmZ3Ow0KPiArCXN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKmZ3X3BkZXYgPSBOVUxMOw0KPiArDQo+ICsJc3dpdGNoICh0eXBlKSB7DQo+ICsJY2Fz ZSBWUFU6DQo+ICsJCW9wcyA9ICZtdGtfdmNvZGVjX3ZwdV9tc2c7DQo+ICsJCWZ3X3BkZXYgPSB2 cHVfZ2V0X3BsYXRfZGV2aWNlKGRldi0+cGxhdF9kZXYpOw0KPiArCQlpZiAoIWZ3X3BkZXYpIHsN Cj4gKwkJCW10a192NGwyX2VycigiZmlybXdhcmUgZGV2aWNlIGlzIG5vdCByZWFkeSIpOw0KPiAr CQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7DQo+ICsJCX0NCj4gKwkJdnB1X3dkdF9yZWdfaGFu ZGxlcihmd19wZGV2LCBtdGtfdmNvZGVjX3Jlc2V0X2hhbmRsZXIsDQo+ICsJCQkJICAgIGRldiwg cnN0X2lkKTsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJbXRrX3Y0bDJfZXJyKCJp bnZhbGlkIHZjb2RlYyBmdyB0eXBlIik7DQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOw0K PiArCX0NCj4gKw0KPiArCWZ3ID0gZGV2bV9remFsbG9jKCZkZXYtPnBsYXRfZGV2LT5kZXYsIHNp emVvZigqZncpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIWZ3KQ0KPiArCQlyZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsNCj4gKw0KPiArCWZ3LT50eXBlID0gdHlwZTsNCj4gKwlmdy0+b3BzID0gb3Bz Ow0KPiArCWZ3LT5wZGV2ID0gZndfcGRldjsNCj4gKw0KPiArCXJldHVybiBmdzsNCj4gK30NCj4g K0VYUE9SVF9TWU1CT0xfR1BMKG10a192Y29kZWNfZndfc2VsZWN0KTsNCj4gKw0KPiArdm9pZCBt dGtfdmNvZGVjX2Z3X3JlbGVhc2Uoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KQ0KPiArew0KPiAr CXN3aXRjaCAoZnctPnR5cGUpIHsNCj4gKwljYXNlIFZQVToNCj4gKwkJcHV0X2RldmljZSgmZnct PnBkZXYtPmRldik7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xf R1BMKG10a192Y29kZWNfZndfcmVsZWFzZSk7DQo+ICsNCj4gK2ludCBtdGtfdmNvZGVjX2Z3X2xv YWRfZmlybXdhcmUoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KQ0KPiArew0KPiArCXJldHVybiBm dy0+b3BzLT5sb2FkX2Zpcm13YXJlKGZ3KTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKG10 a192Y29kZWNfZndfbG9hZF9maXJtd2FyZSk7DQo+ICsNCj4gK3Vuc2lnbmVkIGludCBtdGtfdmNv ZGVjX2Z3X2dldF92ZGVjX2NhcGEoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KQ0KPiArew0KPiAr CXJldHVybiBmdy0+b3BzLT5nZXRfdmRlY19jYXBhKGZ3KTsNCj4gK30NCj4gK0VYUE9SVF9TWU1C T0xfR1BMKG10a192Y29kZWNfZndfZ2V0X3ZkZWNfY2FwYSk7DQo+ICsNCj4gK3Vuc2lnbmVkIGlu dCBtdGtfdmNvZGVjX2Z3X2dldF92ZW5jX2NhcGEoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KQ0K PiArew0KPiArCXJldHVybiBmdy0+b3BzLT5nZXRfdmVuY19jYXBhKGZ3KTsNCj4gK30NCj4gK0VY UE9SVF9TWU1CT0xfR1BMKG10a192Y29kZWNfZndfZ2V0X3ZlbmNfY2FwYSk7DQo+ICsNCj4gK3Zv aWQgKm10a192Y29kZWNfZndfbWFwX2RtX2FkZHIoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LCB1 MzIgbWVtX2FkZHIpDQo+ICt7DQo+ICsJcmV0dXJuIGZ3LT5vcHMtPm1hcF9kbV9hZGRyKGZ3LCBt ZW1fYWRkcik7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChtdGtfdmNvZGVjX2Z3X21hcF9k bV9hZGRyKTsNCj4gKw0KPiAraW50IG10a192Y29kZWNfZndfaXBpX3JlZ2lzdGVyKHN0cnVjdCBt dGtfdmNvZGVjX2Z3ICpmdywgaW50IGlkLA0KPiArCW10a192Y29kZWNfaXBpX2hhbmRsZXIgaGFu ZGxlciwgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqcHJpdikNCj4gK3sNCj4gKwlyZXR1cm4gZnct Pm9wcy0+aXBpX3JlZ2lzdGVyKGZ3LCBpZCwgaGFuZGxlciwgbmFtZSwgcHJpdik7DQo+ICt9DQo+ ICtFWFBPUlRfU1lNQk9MX0dQTChtdGtfdmNvZGVjX2Z3X2lwaV9yZWdpc3Rlcik7DQo+ICsNCj4g K2ludCBtdGtfdmNvZGVjX2Z3X2lwaV9zZW5kKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywNCj4g KwlpbnQgaWQsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgaW50IHdhaXQp DQo+ICt7DQo+ICsJcmV0dXJuIGZ3LT5vcHMtPmlwaV9zZW5kKGZ3LCBpZCwgYnVmLCBsZW4sIHdh aXQpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwobXRrX3Zjb2RlY19md19pcGlfc2VuZCk7 DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zj b2RlY19mdy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZncuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmZmMjVi MGMxOWY3NA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3LmgNCj4gQEAgLTAsMCArMSwzNiBAQA0KPiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKw0KPiArI2lmbmRlZiBfTVRLX1ZD T0RFQ19GV19IXw0KPiArI2RlZmluZSBfTVRLX1ZDT0RFQ19GV19IXw0KPiArDQo+ICsjaW5jbHVk ZSA8bGludXgvcmVtb3RlcHJvYy5oPg0KPiArDQo+ICsjaW5jbHVkZSAiLi4vbXRrLXZwdS9tdGtf dnB1LmgiDQo+ICsNCj4gK3N0cnVjdCBtdGtfdmNvZGVjX2RldjsNCj4gKw0KPiArZW51bSBtdGtf dmNvZGVjX2Z3X3R5cGUgew0KPiArCVZQVSwNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtdGtfdmNv ZGVjX2Z3Ow0KPiArDQo+ICt0eXBlZGVmIHZvaWQgKCptdGtfdmNvZGVjX2lwaV9oYW5kbGVyKSAo dm9pZCAqZGF0YSwNCj4gKwl1bnNpZ25lZCBpbnQgbGVuLCB2b2lkICpwcml2KTsNCj4gKw0KPiAr c3RydWN0IG10a192Y29kZWNfZncgKm10a192Y29kZWNfZndfc2VsZWN0KHN0cnVjdCBtdGtfdmNv ZGVjX2RldiAqZGV2LA0KPiArCQkJCQkgICBlbnVtIG10a192Y29kZWNfZndfdHlwZSB0eXBlLA0K PiArCQkJCQkgICBlbnVtIHJzdF9pZCByc3RfaWQpOw0KPiArdm9pZCBtdGtfdmNvZGVjX2Z3X3Jl bGVhc2Uoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KTsNCj4gKw0KPiAraW50IG10a192Y29kZWNf ZndfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpOw0KPiArdW5zaWduZWQg aW50IG10a192Y29kZWNfZndfZ2V0X3ZkZWNfY2FwYShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncp Ow0KPiArdW5zaWduZWQgaW50IG10a192Y29kZWNfZndfZ2V0X3ZlbmNfY2FwYShzdHJ1Y3QgbXRr X3Zjb2RlY19mdyAqZncpOw0KPiArdm9pZCAqbXRrX3Zjb2RlY19md19tYXBfZG1fYWRkcihzdHJ1 Y3QgbXRrX3Zjb2RlY19mdyAqZncsIHUzMiBtZW1fYWRkcik7DQo+ICtpbnQgbXRrX3Zjb2RlY19m d19pcGlfcmVnaXN0ZXIoc3RydWN0IG10a192Y29kZWNfZncgKmZ3LCBpbnQgaWQsDQo+ICsJbXRr X3Zjb2RlY19pcGlfaGFuZGxlciBoYW5kbGVyLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpwcml2 KTsNCj4gK2ludCBtdGtfdmNvZGVjX2Z3X2lwaV9zZW5kKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpm dywNCj4gKwlpbnQgaWQsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgaW50 IHdhaXQpOw0KPiArDQo+ICsjZW5kaWYgLyogX01US19WQ09ERUNfRldfSF8gKi8NCj4gKw0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf dXRpbC5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfdXRp bC5jDQo+IGluZGV4IGQ0OGY1NDJkYjFhOS4uYWM1OTczYjY3MzVmIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY191dGlsLmMNCj4gKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfdXRpbC5jDQo+ IEBAIC05LDcgKzksNiBAQA0KPiAgDQo+ICAjaW5jbHVkZSAibXRrX3Zjb2RlY19kcnYuaCINCj4g ICNpbmNsdWRlICJtdGtfdmNvZGVjX3V0aWwuaCINCj4gLSNpbmNsdWRlICJtdGtfdnB1LmgiDQo+ ICANCj4gIC8qIEZvciBlbmNvZGVyLCB0aGlzIHdpbGwgZW5hYmxlIGxvZ3MgaW4gdmVuYy8qLw0K PiAgYm9vbCBtdGtfdmNvZGVjX2RiZzsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfaDI2NF9pZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY19oMjY0X2lmLmMNCj4gaW5kZXggNTAwNDhjMTcwYjk5 Li40MGQ2ZTZjNWFjN2EgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRr LXZjb2RlYy92ZGVjL3ZkZWNfaDI2NF9pZi5jDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfaDI2NF9pZi5jDQo+IEBAIC0yODEsNyArMjgxLDYgQEAg c3RhdGljIGludCB2ZGVjX2gyNjRfaW5pdChzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4g IAlpbnN0LT5jdHggPSBjdHg7DQo+ICANCj4gIAlpbnN0LT52cHUuaWQgPSBJUElfVkRFQ19IMjY0 Ow0KPiAtCWluc3QtPnZwdS5kZXYgPSBjdHgtPmRldi0+dnB1X3BsYXRfZGV2Ow0KPiAgCWluc3Qt PnZwdS5jdHggPSBjdHg7DQo+ICANCj4gIAllcnIgPSB2cHVfZGVjX2luaXQoJmluc3QtPnZwdSk7 DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlYy92 ZGVjX3ZwOF9pZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRl Y192cDhfaWYuYw0KPiBpbmRleCA2MDExZmRkNjBhMjIuLmU1MzkzZjg0MTA4MCAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY192cDhfaWYu Yw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlYy92ZGVjX3Zw OF9pZi5jDQo+IEBAIC00MDAsNyArNDAwLDYgQEAgc3RhdGljIGludCB2ZGVjX3ZwOF9pbml0KHN0 cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4KQ0KPiAgCWluc3QtPmN0eCA9IGN0eDsNCj4gIA0KPiAg CWluc3QtPnZwdS5pZCA9IElQSV9WREVDX1ZQODsNCj4gLQlpbnN0LT52cHUuZGV2ID0gY3R4LT5k ZXYtPnZwdV9wbGF0X2RldjsNCj4gIAlpbnN0LT52cHUuY3R4ID0gY3R4Ow0KPiAgDQo+ICAJZXJy ID0gdnB1X2RlY19pbml0KCZpbnN0LT52cHUpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY192cDlfaWYuYyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjL3ZkZWNfdnA5X2lmLmMNCj4gaW5kZXggMjU3YTViNWFk MjEyLi44ZTA5OWI4NTlmMjEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLXZjb2RlYy92ZGVjL3ZkZWNfdnA5X2lmLmMNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstdmNvZGVjL3ZkZWMvdmRlY192cDlfaWYuYw0KPiBAQCAtNzk1LDcgKzc5NSw2IEBA IHN0YXRpYyBpbnQgdmRlY192cDlfaW5pdChzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4g IAlpbnN0LT5jdHggPSBjdHg7DQo+ICANCj4gIAlpbnN0LT52cHUuaWQgPSBJUElfVkRFQ19WUDk7 DQo+IC0JaW5zdC0+dnB1LmRldiA9IGN0eC0+ZGV2LT52cHVfcGxhdF9kZXY7DQo+ICAJaW5zdC0+ dnB1LmN0eCA9IGN0eDsNCj4gIA0KPiAgCWlmICh2cHVfZGVjX2luaXQoJmluc3QtPnZwdSkpIHsN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX2Ry dl9iYXNlLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlY19kcnZfYmFz ZS5oDQo+IGluZGV4IGNlYjRkYjRjYjNiZS4uZTkxM2Y5NjNiN2RiIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlY19kcnZfYmFzZS5oDQo+ICsrKyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX2Rydl9iYXNlLmgNCj4gQEAg LTcsOCArNyw2IEBADQo+ICAjaWZuZGVmIF9WREVDX0RSVl9CQVNFXw0KPiAgI2RlZmluZSBfVkRF Q19EUlZfQkFTRV8NCj4gIA0KPiAtI2luY2x1ZGUgIm10a192Y29kZWNfZHJ2LmgiDQo+IC0NCj4g ICNpbmNsdWRlICJ2ZGVjX2Rydl9pZi5oIg0KPiAgDQo+ICBzdHJ1Y3QgdmRlY19jb21tb25faWYg ew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNf ZHJ2X2lmLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmRlY19kcnZfaWYu Yw0KPiBpbmRleCAyZTQzZGQ0NDg2ZTAuLmIxODc0M2I5MDZlYSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNfZHJ2X2lmLmMNCj4gKysrIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNfZHJ2X2lmLmMNCj4gQEAgLTEzLDcg KzEzLDYgQEANCj4gICNpbmNsdWRlICJtdGtfdmNvZGVjX2RlYy5oIg0KPiAgI2luY2x1ZGUgInZk ZWNfZHJ2X2Jhc2UuaCINCj4gICNpbmNsdWRlICJtdGtfdmNvZGVjX2RlY19wbS5oIg0KPiAtI2lu Y2x1ZGUgIm10a192cHUuaCINCj4gIA0KPiAgaW50IHZkZWNfaWZfaW5pdChzdHJ1Y3QgbXRrX3Zj b2RlY19jdHggKmN0eCwgdW5zaWduZWQgaW50IGZvdXJjYykNCj4gIHsNCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5jIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNfdnB1X2lmLmMNCj4gaW5kZXggOTQ4YTEy ZmQ5ZDQ2Li41OGIwZTZmYThmZDIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5jDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5jDQo+IEBAIC04LDYgKzgsNyBAQA0KPiAgI2luY2x1 ZGUgIm10a192Y29kZWNfdXRpbC5oIg0KPiAgI2luY2x1ZGUgInZkZWNfaXBpX21zZy5oIg0KPiAg I2luY2x1ZGUgInZkZWNfdnB1X2lmLmgiDQo+ICsjaW5jbHVkZSAibXRrX3Zjb2RlY19mdy5oIg0K PiAgDQo+ICBzdGF0aWMgdm9pZCBoYW5kbGVfaW5pdF9hY2tfbXNnKGNvbnN0IHN0cnVjdCB2ZGVj X3ZwdV9pcGlfaW5pdF9hY2sgKm1zZykNCj4gIHsNCj4gQEAgLTE4LDcgKzE5LDggQEAgc3RhdGlj IHZvaWQgaGFuZGxlX2luaXRfYWNrX21zZyhjb25zdCBzdHJ1Y3QgdmRlY192cHVfaXBpX2luaXRf YWNrICptc2cpDQo+ICANCj4gIAkvKiBtYXBwaW5nIFZQVSBhZGRyZXNzIHRvIGtlcm5lbCB2aXJ0 dWFsIGFkZHJlc3MgKi8NCj4gIAkvKiB0aGUgY29udGVudCBpbiB2c2kgaXMgaW5pdGlhbGl6ZWQg dG8gMCBpbiBWUFUgKi8NCj4gLQl2cHUtPnZzaSA9IHZwdV9tYXBwaW5nX2RtX2FkZHIodnB1LT5k ZXYsIG1zZy0+dnB1X2luc3RfYWRkcik7DQo+ICsJdnB1LT52c2kgPSBtdGtfdmNvZGVjX2Z3X21h cF9kbV9hZGRyKHZwdS0+Y3R4LT5kZXYtPmZ3X2hhbmRsZXIsDQo+ICsJCQkJCSAgICAgbXNnLT52 cHVfaW5zdF9hZGRyKTsNCj4gIAl2cHUtPmluc3RfYWRkciA9IG1zZy0+dnB1X2luc3RfYWRkcjsN Cj4gIA0KPiAgCW10a192Y29kZWNfZGVidWcodnB1LCAiLSB2cHVfaW5zdF9hZGRyID0gMHgleCIs IHZwdS0+aW5zdF9hZGRyKTsNCj4gQEAgLTM0LDcgKzM2LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxl X2luaXRfYWNrX21zZyhjb25zdCBzdHJ1Y3QgdmRlY192cHVfaXBpX2luaXRfYWNrICptc2cpDQo+ ICAgKiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gaW50ZXJydXB0IGNvbnRleHQgYW5kIGl0IG1lYW5z IHRoZXJlJ3MgYW4gSVBJIE1TRw0KPiAgICogZnJvbSBWUFUuDQo+ICAgKi8NCj4gLXN0YXRpYyB2 b2lkIHZwdV9kZWNfaXBpX2hhbmRsZXIoY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxl biwgdm9pZCAqcHJpdikNCj4gK3N0YXRpYyB2b2lkIHZwdV9kZWNfaXBpX2hhbmRsZXIodm9pZCAq ZGF0YSwgdW5zaWduZWQgaW50IGxlbiwgdm9pZCAqcHJpdikNCj4gIHsNCj4gIAljb25zdCBzdHJ1 Y3QgdmRlY192cHVfaXBpX2FjayAqbXNnID0gZGF0YTsNCj4gIAlzdHJ1Y3QgdmRlY192cHVfaW5z dCAqdnB1ID0gKHN0cnVjdCB2ZGVjX3ZwdV9pbnN0ICopDQo+IEBAIC03NCw3ICs3Niw4IEBAIHN0 YXRpYyBpbnQgdmNvZGVjX3ZwdV9zZW5kX21zZyhzdHJ1Y3QgdmRlY192cHVfaW5zdCAqdnB1LCB2 b2lkICptc2csIGludCBsZW4pDQo+ICAJdnB1LT5mYWlsdXJlID0gMDsNCj4gIAl2cHUtPnNpZ25h bGVkID0gMDsNCj4gIA0KPiAtCWVyciA9IHZwdV9pcGlfc2VuZCh2cHUtPmRldiwgdnB1LT5pZCwg bXNnLCBsZW4pOw0KPiArCWVyciA9IG10a192Y29kZWNfZndfaXBpX3NlbmQodnB1LT5jdHgtPmRl di0+ZndfaGFuZGxlciwgdnB1LT5pZCwgbXNnLA0KPiArCQkJCSAgICAgbGVuLCAyMDAwKTsNCj4g IAlpZiAoZXJyKSB7DQo+ICAJCW10a192Y29kZWNfZXJyKHZwdSwgInNlbmQgZmFpbCB2cHVfaWQ9 JWQgbXNnX2lkPSVYIHN0YXR1cz0lZCIsDQo+ICAJCQkgICAgICAgdnB1LT5pZCwgKih1aW50MzJf dCAqKW1zZywgZXJyKTsNCj4gQEAgLTExMCw3ICsxMTMsOCBAQCBpbnQgdnB1X2RlY19pbml0KHN0 cnVjdCB2ZGVjX3ZwdV9pbnN0ICp2cHUpDQo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmdnB1LT53 cSk7DQo+ICAJdnB1LT5oYW5kbGVyID0gdnB1X2RlY19pcGlfaGFuZGxlcjsNCj4gIA0KPiAtCWVy ciA9IHZwdV9pcGlfcmVnaXN0ZXIodnB1LT5kZXYsIHZwdS0+aWQsIHZwdS0+aGFuZGxlciwgInZk ZWMiLCBOVUxMKTsNCj4gKwllcnIgPSBtdGtfdmNvZGVjX2Z3X2lwaV9yZWdpc3Rlcih2cHUtPmN0 eC0+ZGV2LT5md19oYW5kbGVyLCB2cHUtPmlkLA0KPiArCQkJCQkgdnB1LT5oYW5kbGVyLCAidmRl YyIsIE5VTEwpOw0KPiAgCWlmIChlcnIgIT0gMCkgew0KPiAgCQltdGtfdmNvZGVjX2Vycih2cHUs ICJ2cHVfaXBpX3JlZ2lzdGVyIGZhaWwgc3RhdHVzPSVkIiwgZXJyKTsNCj4gIAkJcmV0dXJuIGVy cjsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVj X3ZwdV9pZi5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZkZWNfdnB1X2lm LmgNCj4gaW5kZXggZjc3OWIwNjc2ZmJkLi44NTIyNGViN2UzNGIgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5oDQo+ICsrKyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZGVjX3ZwdV9pZi5oDQo+IEBAIC03LDEx ICs3LDEzIEBADQo+ICAjaWZuZGVmIF9WREVDX1ZQVV9JRl9IXw0KPiAgI2RlZmluZSBfVkRFQ19W UFVfSUZfSF8NCj4gIA0KPiAtI2luY2x1ZGUgIm10a192cHUuaCINCj4gKyNpbmNsdWRlICJtdGtf dmNvZGVjX2Z3LmgiDQo+ICsNCj4gK3N0cnVjdCBtdGtfdmNvZGVjX2N0eDsNCj4gIA0KPiAgLyoq DQo+ICAgKiBzdHJ1Y3QgdmRlY192cHVfaW5zdCAtIFZQVSBpbnN0YW5jZSBmb3IgdmlkZW8gY29k ZWMNCj4gLSAqIEBpcGlfaWQgICAgICA6IGlwaSBpZCBmb3IgZWFjaCBkZWNvZGVyDQo+ICsgKiBA aWQgICAgICAgICAgOiBpcGkgbXNnIGlkIGZvciBlYWNoIGRlY29kZXINCj4gICAqIEB2c2kgICAg ICAgICA6IGRyaXZlciBzdHJ1Y3R1cmUgYWxsb2NhdGVkIGJ5IFZQVSBzaWRlIGFuZCBzaGFyZWQg dG8gQVAgc2lkZQ0KPiAgICogICAgICAgICAgICAgICAgZm9yIGNvbnRyb2wgYW5kIGluZm8gc2hh cmUNCj4gICAqIEBmYWlsdXJlICAgICA6IFZQVSBleGVjdXRpb24gcmVzdWx0IHN0YXR1cywgMDog c3VjY2Vzcywgb3RoZXJzOiBmYWlsDQo+IEBAIC0yMywxNSArMjUsMTQgQEANCj4gICAqIEBoYW5k bGVyICAgICA6IGlwaSBoYW5kbGVyIGZvciBlYWNoIGRlY29kZXINCj4gICAqLw0KPiAgc3RydWN0 IHZkZWNfdnB1X2luc3Qgew0KPiAtCWVudW0gaXBpX2lkIGlkOw0KPiArCWludCBpZDsNCj4gIAl2 b2lkICp2c2k7DQo+ICAJaW50MzJfdCBmYWlsdXJlOw0KPiAgCXVpbnQzMl90IGluc3RfYWRkcjsN Cj4gIAl1bnNpZ25lZCBpbnQgc2lnbmFsZWQ7DQo+ICAJc3RydWN0IG10a192Y29kZWNfY3R4ICpj dHg7DQo+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2Ow0KPiAgCXdhaXRfcXVldWVfaGVh ZF90IHdxOw0KPiAtCWlwaV9oYW5kbGVyX3QgaGFuZGxlcjsNCj4gKwltdGtfdmNvZGVjX2lwaV9o YW5kbGVyIGhhbmRsZXI7DQo+ICB9Ow0KPiAgDQo+ICAvKioNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY19oMjY0X2lmLmMNCj4gaW5kZXgg Yjk2MjRmOGRmMGU5Li43YTAwZjA1MGVjMzYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jDQo+ICsrKyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jDQo+IEBAIC0xOCw3 ICsxOCw2IEBADQo+ICAjaW5jbHVkZSAiLi4vdmVuY19kcnZfYmFzZS5oIg0KPiAgI2luY2x1ZGUg Ii4uL3ZlbmNfaXBpX21zZy5oIg0KPiAgI2luY2x1ZGUgIi4uL3ZlbmNfdnB1X2lmLmgiDQo+IC0j aW5jbHVkZSAibXRrX3ZwdS5oIg0KPiAgDQo+ICBzdGF0aWMgY29uc3QgY2hhciBoMjY0X2ZpbGxl cl9tYXJrZXJbXSA9IHsweDAsIDB4MCwgMHgwLCAweDEsIDB4Y307DQo+ICANCj4gQEAgLTI1Nyw4 ICsyNTYsMTEgQEAgc3RhdGljIGludCBoMjY0X2VuY19hbGxvY193b3JrX2J1ZihzdHJ1Y3QgdmVu Y19oMjY0X2luc3QgKmluc3QpDQo+ICAJCSAqLw0KPiAgCQlpbnN0LT53b3JrX2J1ZnNbaV0uc2l6 ZSA9IHdiW2ldLnNpemU7DQo+ICAJCWlmIChpID09IFZFTkNfSDI2NF9WUFVfV09SS19CVUZfU0tJ UF9GUkFNRSkgew0KPiAtCQkJaW5zdC0+d29ya19idWZzW2ldLnZhID0gdnB1X21hcHBpbmdfZG1f YWRkcigNCj4gLQkJCQlpbnN0LT52cHVfaW5zdC5kZXYsIHdiW2ldLnZwdWEpOw0KPiArCQkJc3Ry dWN0IG10a192Y29kZWNfZncgKmhhbmRsZXI7DQo+ICsNCj4gKwkJCWhhbmRsZXIgPSBpbnN0LT52 cHVfaW5zdC5jdHgtPmRldi0+ZndfaGFuZGxlcjsNCj4gKwkJCWluc3QtPndvcmtfYnVmc1tpXS52 YSA9DQo+ICsJCQkJbXRrX3Zjb2RlY19md19tYXBfZG1fYWRkcihoYW5kbGVyLCB3YltpXS52cHVh KTsNCj4gIAkJCWluc3QtPndvcmtfYnVmc1tpXS5kbWFfYWRkciA9IDA7DQo+ICAJCX0gZWxzZSB7 DQo+ICAJCQlyZXQgPSBtdGtfdmNvZGVjX21lbV9hbGxvYyhpbnN0LT5jdHgsDQo+IEBAIC0yNzUs MTAgKzI3NywxMiBAQCBzdGF0aWMgaW50IGgyNjRfZW5jX2FsbG9jX3dvcmtfYnVmKHN0cnVjdCB2 ZW5jX2gyNjRfaW5zdCAqaW5zdCkNCj4gIAkJCSAqIHNldHRpbmcgaW4gVlBVIHNpZGUuDQo+ICAJ CQkgKi8NCj4gIAkJCWlmIChpID09IFZFTkNfSDI2NF9WUFVfV09SS19CVUZfUkNfQ09ERSkgew0K PiArCQkJCXN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpoYW5kbGVyOw0KPiAgCQkJCXZvaWQgKnRtcF92 YTsNCj4gIA0KPiAtCQkJCXRtcF92YSA9IHZwdV9tYXBwaW5nX2RtX2FkZHIoaW5zdC0+dnB1X2lu c3QuZGV2LA0KPiAtCQkJCQkJCSAgICAgd2JbaV0udnB1YSk7DQo+ICsJCQkJaGFuZGxlciA9IGlu c3QtPnZwdV9pbnN0LmN0eC0+ZGV2LT5md19oYW5kbGVyOw0KPiArCQkJCXRtcF92YSA9IG10a192 Y29kZWNfZndfbWFwX2RtX2FkZHIoaGFuZGxlciwNCj4gKwkJCQkJCQkJICAgd2JbaV0udnB1YSk7 DQo+ICAJCQkJbWVtY3B5KGluc3QtPndvcmtfYnVmc1tpXS52YSwgdG1wX3ZhLA0KPiAgCQkJCSAg ICAgICB3YltpXS5zaXplKTsNCj4gIAkJCX0NCj4gQEAgLTQ2OSw3ICs0NzMsNiBAQCBzdGF0aWMg aW50IGgyNjRfZW5jX2luaXQoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgpDQo+ICANCj4gIAlp bnN0LT5jdHggPSBjdHg7DQo+ICAJaW5zdC0+dnB1X2luc3QuY3R4ID0gY3R4Ow0KPiAtCWluc3Qt PnZwdV9pbnN0LmRldiA9IGN0eC0+ZGV2LT52cHVfcGxhdF9kZXY7DQo+ICAJaW5zdC0+dnB1X2lu c3QuaWQgPSBJUElfVkVOQ19IMjY0Ow0KPiAgCWluc3QtPmh3X2Jhc2UgPSBtdGtfdmNvZGVjX2dl dF9yZWdfYWRkcihpbnN0LT5jdHgsIFZFTkNfU1lTKTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY192cDhfaWYuYyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfdnA4X2lmLmMNCj4gaW5kZXgg OGQzNmYwMzYyZWZlLi42NDI2YWY1MTQ1MjYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfdnA4X2lmLmMNCj4gKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY192cDhfaWYuYw0KPiBAQCAtMTcsNyAr MTcsNiBAQA0KPiAgI2luY2x1ZGUgIi4uL3ZlbmNfZHJ2X2Jhc2UuaCINCj4gICNpbmNsdWRlICIu Li92ZW5jX2lwaV9tc2cuaCINCj4gICNpbmNsdWRlICIuLi92ZW5jX3ZwdV9pZi5oIg0KPiAtI2lu Y2x1ZGUgIm10a192cHUuaCINCj4gIA0KPiAgI2RlZmluZSBWRU5DX0JJVFNUUkVBTV9GUkFNRV9T SVpFIDB4MDA5OA0KPiAgI2RlZmluZSBWRU5DX0JJVFNUUkVBTV9IRUFERVJfTEVOIDB4MDBlOA0K PiBAQCAtMTkwLDEwICsxODksMTIgQEAgc3RhdGljIGludCB2cDhfZW5jX2FsbG9jX3dvcmtfYnVm KHN0cnVjdCB2ZW5jX3ZwOF9pbnN0ICppbnN0KQ0KPiAgCQlpZiAoaSA9PSBWRU5DX1ZQOF9WUFVf V09SS19CVUZfUkNfQ09ERSB8fA0KPiAgCQkgICAgaSA9PSBWRU5DX1ZQOF9WUFVfV09SS19CVUZf UkNfQ09ERTIgfHwNCj4gIAkJICAgIGkgPT0gVkVOQ19WUDhfVlBVX1dPUktfQlVGX1JDX0NPREUz KSB7DQo+ICsJCQlzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqaGFuZGxlcjsNCj4gIAkJCXZvaWQgKnRt cF92YTsNCj4gIA0KPiAtCQkJdG1wX3ZhID0gdnB1X21hcHBpbmdfZG1fYWRkcihpbnN0LT52cHVf aW5zdC5kZXYsDQo+IC0JCQkJCQkgICAgIHdiW2ldLnZwdWEpOw0KPiArCQkJaGFuZGxlciA9IGlu c3QtPnZwdV9pbnN0LmN0eC0+ZGV2LT5md19oYW5kbGVyOw0KPiArCQkJdG1wX3ZhID0gbXRrX3Zj b2RlY19md19tYXBfZG1fYWRkcihoYW5kbGVyLA0KPiArCQkJCQkJCSAgIHdiW2ldLnZwdWEpOw0K PiAgCQkJbWVtY3B5KGluc3QtPndvcmtfYnVmc1tpXS52YSwgdG1wX3ZhLCB3YltpXS5zaXplKTsN Cj4gIAkJfQ0KPiAgCQl3YltpXS5pb3ZhID0gaW5zdC0+d29ya19idWZzW2ldLmRtYV9hZGRyOw0K PiBAQCAtMzM0LDcgKzMzNSw2IEBAIHN0YXRpYyBpbnQgdnA4X2VuY19pbml0KHN0cnVjdCBtdGtf dmNvZGVjX2N0eCAqY3R4KQ0KPiAgDQo+ICAJaW5zdC0+Y3R4ID0gY3R4Ow0KPiAgCWluc3QtPnZw dV9pbnN0LmN0eCA9IGN0eDsNCj4gLQlpbnN0LT52cHVfaW5zdC5kZXYgPSBjdHgtPmRldi0+dnB1 X3BsYXRfZGV2Ow0KPiAgCWluc3QtPnZwdV9pbnN0LmlkID0gSVBJX1ZFTkNfVlA4Ow0KPiAgCWlu c3QtPmh3X2Jhc2UgPSBtdGtfdmNvZGVjX2dldF9yZWdfYWRkcihpbnN0LT5jdHgsIFZFTkNfTFRf U1lTKTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNv ZGVjL3ZlbmNfZHJ2X2lmLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVu Y19kcnZfaWYuYw0KPiBpbmRleCBjNmJiODJhYzJkY2QuLmNlMGJjZTgxMTYxNSAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfZHJ2X2lmLmMNCj4g KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfZHJ2X2lmLmMNCj4g QEAgLTE1LDcgKzE1LDYgQEANCj4gIA0KPiAgI2luY2x1ZGUgIm10a192Y29kZWNfZW5jLmgiDQo+ ICAjaW5jbHVkZSAibXRrX3Zjb2RlY19lbmNfcG0uaCINCj4gLSNpbmNsdWRlICJtdGtfdnB1Lmgi DQo+ICANCj4gIGludCB2ZW5jX2lmX2luaXQoc3RydWN0IG10a192Y29kZWNfY3R4ICpjdHgsIHVu c2lnbmVkIGludCBmb3VyY2MpDQo+ICB7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLXZjb2RlYy92ZW5jX3ZwdV9pZi5jDQo+IGluZGV4IDk1NDA3MDljMTkwNS4uNTM4NTQxMjc4 MTRiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVu Y192cHVfaWYuYw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVu Y192cHVfaWYuYw0KPiBAQCAtNCw3ICs0LDcgQEANCj4gICAqIEF1dGhvcjogUG9DaHVuIExpbiA8 cG9jaHVuLmxpbkBtZWRpYXRlay5jb20+DQo+ICAgKi8NCj4gIA0KPiAtI2luY2x1ZGUgIm10a192 cHUuaCINCj4gKyNpbmNsdWRlICJtdGtfdmNvZGVjX2Z3LmgiDQo+ICAjaW5jbHVkZSAidmVuY19p cGlfbXNnLmgiDQo+ICAjaW5jbHVkZSAidmVuY192cHVfaWYuaCINCj4gIA0KPiBAQCAtMTMsNyAr MTMsOCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZW5jX2luaXRfbXNnKHN0cnVjdCB2ZW5jX3ZwdV9p bnN0ICp2cHUsIGNvbnN0IHZvaWQgKmRhdGEpDQo+ICAJY29uc3Qgc3RydWN0IHZlbmNfdnB1X2lw aV9tc2dfaW5pdCAqbXNnID0gZGF0YTsNCj4gIA0KPiAgCXZwdS0+aW5zdF9hZGRyID0gbXNnLT52 cHVfaW5zdF9hZGRyOw0KPiAtCXZwdS0+dnNpID0gdnB1X21hcHBpbmdfZG1fYWRkcih2cHUtPmRl diwgbXNnLT52cHVfaW5zdF9hZGRyKTsNCj4gKwl2cHUtPnZzaSA9IG10a192Y29kZWNfZndfbWFw X2RtX2FkZHIodnB1LT5jdHgtPmRldi0+ZndfaGFuZGxlciwNCj4gKwkJCQkJICAgICBtc2ctPnZw dV9pbnN0X2FkZHIpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBoYW5kbGVfZW5jX2VuY29k ZV9tc2coc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwgY29uc3Qgdm9pZCAqZGF0YSkNCj4gQEAg LTI1LDcgKzI2LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2VuY19lbmNvZGVfbXNnKHN0cnVjdCB2 ZW5jX3ZwdV9pbnN0ICp2cHUsIGNvbnN0IHZvaWQgKmRhdGEpDQo+ICAJdnB1LT5pc19rZXlfZnJt ID0gbXNnLT5pc19rZXlfZnJtOw0KPiAgfQ0KPiAgDQo+IC1zdGF0aWMgdm9pZCB2cHVfZW5jX2lw aV9oYW5kbGVyKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBsZW4sIHZvaWQgKnByaXYp DQo+ICtzdGF0aWMgdm9pZCB2cHVfZW5jX2lwaV9oYW5kbGVyKHZvaWQgKmRhdGEsIHVuc2lnbmVk IGludCBsZW4sIHZvaWQgKnByaXYpDQo+ICB7DQo+ICAJY29uc3Qgc3RydWN0IHZlbmNfdnB1X2lw aV9tc2dfY29tbW9uICptc2cgPSBkYXRhOw0KPiAgCXN0cnVjdCB2ZW5jX3ZwdV9pbnN0ICp2cHUg PQ0KPiBAQCAtNjMsMTIgKzY0LDEzIEBAIHN0YXRpYyBpbnQgdnB1X2VuY19zZW5kX21zZyhzdHJ1 Y3QgdmVuY192cHVfaW5zdCAqdnB1LCB2b2lkICptc2csDQo+ICANCj4gIAltdGtfdmNvZGVjX2Rl YnVnX2VudGVyKHZwdSk7DQo+ICANCj4gLQlpZiAoIXZwdS0+ZGV2KSB7DQo+ICsJaWYgKCF2cHUt PmN0eC0+ZGV2LT5md19oYW5kbGVyKSB7DQo+ICAJCW10a192Y29kZWNfZXJyKHZwdSwgImluc3Qg ZGV2IGlzIE5VTEwiKTsNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAJfQ0KPiAgDQo+IC0Jc3Rh dHVzID0gdnB1X2lwaV9zZW5kKHZwdS0+ZGV2LCB2cHUtPmlkLCBtc2csIGxlbik7DQo+ICsJc3Rh dHVzID0gbXRrX3Zjb2RlY19md19pcGlfc2VuZCh2cHUtPmN0eC0+ZGV2LT5md19oYW5kbGVyLCB2 cHUtPmlkLCBtc2csDQo+ICsJCQkJCWxlbiwgMjAwMCk7DQo+ICAJaWYgKHN0YXR1cykgew0KPiAg CQltdGtfdmNvZGVjX2Vycih2cHUsICJ2cHVfaXBpX3NlbmQgbXNnX2lkICV4IGxlbiAlZCBmYWls ICVkIiwNCj4gIAkJCSAgICAgICAqKHVpbnQzMl90ICopbXNnLCBsZW4sIHN0YXR1cyk7DQo+IEBA IC05Myw4ICs5NSw5IEBAIGludCB2cHVfZW5jX2luaXQoc3RydWN0IHZlbmNfdnB1X2luc3QgKnZw dSkNCj4gIAl2cHUtPnNpZ25hbGVkID0gMDsNCj4gIAl2cHUtPmZhaWx1cmUgPSAwOw0KPiAgDQo+ IC0Jc3RhdHVzID0gdnB1X2lwaV9yZWdpc3Rlcih2cHUtPmRldiwgdnB1LT5pZCwgdnB1X2VuY19p cGlfaGFuZGxlciwNCj4gLQkJCQkgIE5VTEwsIE5VTEwpOw0KPiArCXN0YXR1cyA9IG10a192Y29k ZWNfZndfaXBpX3JlZ2lzdGVyKHZwdS0+Y3R4LT5kZXYtPmZ3X2hhbmRsZXIsIHZwdS0+aWQsDQo+ ICsJCXZwdV9lbmNfaXBpX2hhbmRsZXIsICJ2ZW5jIiwgTlVMTCk7DQo+ICsNCj4gIAlpZiAoc3Rh dHVzKSB7DQo+ICAJCW10a192Y29kZWNfZXJyKHZwdSwgInZwdV9pcGlfcmVnaXN0ZXIgZmFpbCAl ZCIsIHN0YXR1cyk7DQo+ICAJCXJldHVybiAtRUlOVkFMOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfdnB1X2lmLmggYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuaA0KPiBpbmRleCBiYTMwMWExMzhhNWEu LmVkZDQxMTYyMWI2OCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZlbmNfdnB1X2lmLmgNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZlbmNfdnB1X2lmLmgNCj4gQEAgLTcsNyArNyw3IEBADQo+ICAjaWZuZGVmIF9WRU5D X1ZQVV9JRl9IXw0KPiAgI2RlZmluZSBfVkVOQ19WUFVfSUZfSF8NCj4gIA0KPiAtI2luY2x1ZGUg Im10a192cHUuaCINCj4gKyNpbmNsdWRlICJtdGtfdmNvZGVjX2Z3LmgiDQo+ICAjaW5jbHVkZSAi dmVuY19kcnZfaWYuaCINCj4gIA0KPiAgLyoNCj4gQEAgLTM0LDkgKzM0LDggQEAgc3RydWN0IHZl bmNfdnB1X2luc3Qgew0KPiAgCWludCBpc19rZXlfZnJtOw0KPiAgCXVuc2lnbmVkIGludCBpbnN0 X2FkZHI7DQo+ICAJdm9pZCAqdnNpOw0KPiAtCWVudW0gaXBpX2lkIGlkOw0KPiArCWludCBpZDsN Cj4gIAlzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eDsNCj4gLQlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpkZXY7DQo+ICB9Ow0KPiAgDQo+ICBpbnQgdnB1X2VuY19pbml0KHN0cnVjdCB2ZW5jX3Zw dV9pbnN0ICp2cHUpOw0KDQo=