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=unavailable 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 3E3E97D04D for ; Wed, 10 Jun 2020 07:23:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726341AbgFJHW4 (ORCPT ); Wed, 10 Jun 2020 03:22:56 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:55332 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726121AbgFJHW4 (ORCPT ); Wed, 10 Jun 2020 03:22:56 -0400 X-UUID: 008e6c61000c48faac9aee6d502cdbe2-20200610 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=yxZyzQ4N4/uG8IYK4Zubs37Msgse0LpyCm7ATH5DYgw=; b=XxFv/go/1A8NV0PbUInAZXPHv2Nwrz0dzMkBe1YcuN5erHiO16NRjSwYXXTD+ddnQBdjAAkTvWREOlKZXsyxlvC7XwKSdwNsyKtDPWVP3pNw/FCt3CjOaSOiT1GVc1vwT4hoTpuvSMNJ3ikAdtF3tfA/DlbE9gW/I6bN+ZboteE=; X-UUID: 008e6c61000c48faac9aee6d502cdbe2-20200610 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 2065413307; Wed, 10 Jun 2020 15:22:44 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 10 Jun 2020 15:22:41 +0800 Received: from [172.21.77.4] (172.21.77.4) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 10 Jun 2020 15:22:42 +0800 Message-ID: <1591773763.21260.2.camel@mtksdaap41> Subject: Re: [PATCH 03/10] media: mtk-vcodec: venc: support SCP firmware From: Tiffany Lin To: Alexandre Courbot CC: Andrew-CT Chen , Rui Wang , Yunfei Dong , "Pi-Hsun Shih" , Maoguang Meng , , , Date: Wed, 10 Jun 2020 15:22:43 +0800 In-Reply-To: <20200520082723.96136-4-acourbot@chromium.org> References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-4-acourbot@chromium.org> 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: T24gV2VkLCAyMDIwLTA1LTIwIGF0IDE3OjI3ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90 ZToNCj4gRnJvbTogWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlhdGVrLmNvbT4NCj4gDQo+ IFN1cHBvcnQgdGhlIG5ldyBleHRlbmRlZCBmaXJtd2FyZSB1c2VkIGJ5IE1UODE4MydzIGVuY29k ZXIuDQo+IA0KDQpBY2tlZC1ieTogVGlmZmFueSBMaW4gPHRpZmZhbnkubGluQG1lZGlhdGVrLmNv bT4NCg0KPiBTaWduZWQtb2ZmLWJ5OiBZdW5mZWkgRG9uZyA8eXVuZmVpLmRvbmdAbWVkaWF0ZWsu Y29tPg0KPiBbYWNvdXJib3Q6IHJlZmFjdG9yLCBjbGVhbnVwIGFuZCBzcGxpdF0NCj4gQ28tZGV2 ZWxvcGVkLWJ5OiBBbGV4YW5kcmUgQ291cmJvdCA8YWNvdXJib3RAY2hyb21pdW0ub3JnPg0KPiBT aWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQ291cmJvdCA8YWNvdXJib3RAY2hyb21pdW0ub3JnPg0K PiAtLS0NCj4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZHJ2LmggICAgICB8 IDEyICsrKw0KPiAgLi4uL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMg IHwgMzQgKysrKy0tLQ0KPiAgLi4uL3BsYXRmb3JtL210ay12Y29kZWMvdmVuYy92ZW5jX2gyNjRf aWYuYyAgIHwgNjUgKysrKysrKysrKystLQ0KPiAgLi4uL3BsYXRmb3JtL210ay12Y29kZWMvdmVu Yy92ZW5jX3ZwOF9pZi5jICAgIHwgIDMgKy0NCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstdmNv ZGVjL3ZlbmNfZHJ2X2lmLmggICB8ICA2ICsrDQo+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLXZj b2RlYy92ZW5jX2lwaV9tc2cuaCAgfCAxNSArKy0NCj4gIC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZlbmNfdnB1X2lmLmMgICB8IDk3ICsrKysrKysrKysrKystLS0tLS0NCj4gIC4uLi9t ZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNfdnB1X2lmLmggICB8ICAzICstDQo+ICA4IGZp bGVzIGNoYW5nZWQsIDE4MSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkNCj4gDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19k cnYuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Rydi5o DQo+IGluZGV4IGUxMzJjNGVjNDYzYS4uNDVjOGFkZmM2YTBjIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19kcnYuaA0KPiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19kcnYuaA0KPiBAQCAt MzAwLDYgKzMwMCwxNyBAQCBzdHJ1Y3QgbXRrX3Zjb2RlY19jdHggew0KPiAgDQo+ICB9Ow0KPiAg DQo+ICsvKioNCj4gKyAqIHN0cnVjdCBtdGtfdmNvZGVjX2VuY19wZGF0YSAtIGNvbXBhdGlibGUg ZGF0YSBmb3IgZWFjaCBJQw0KPiArICoNCj4gKyAqIEB1c2VzX2V4dDogd2hldGhlciB0aGUgZW5j b2RlciB1c2VzIHRoZSBleHRlbmRlZCBmaXJtd2FyZSBtZXNzYWdpbmcgZm9ybWF0DQo+ICsgKiBA aGFzX2x0X2lycTogd2hldGhlciB0aGUgZW5jb2RlciB1c2VzIHRoZSBMVCBpcnENCj4gKyAqLw0K PiArc3RydWN0IG10a192Y29kZWNfZW5jX3BkYXRhIHsNCj4gKwlib29sIHVzZXNfZXh0Ow0KPiAr CWJvb2wgaGFzX2x0X2lycTsNCj4gK307DQo+ICsNCj4gIC8qKg0KPiAgICogc3RydWN0IG10a192 Y29kZWNfZGV2IC0gZHJpdmVyIGRhdGENCj4gICAqIEB2NGwyX2RldjogVjRMMiBkZXZpY2UgdG8g cmVnaXN0ZXIgdmlkZW8gZGV2aWNlcyBmb3IuDQo+IEBAIC0zNDgsNiArMzU5LDcgQEAgc3RydWN0 IG10a192Y29kZWNfZGV2IHsNCj4gIAlzcGlubG9ja190IGlycWxvY2s7DQo+ICAJc3RydWN0IG10 a192Y29kZWNfY3R4ICpjdXJyX2N0eDsNCj4gIAl2b2lkIF9faW9tZW0gKnJlZ19iYXNlW05VTV9N QVhfVkNPREVDX1JFR19CQVNFXTsNCj4gKwljb25zdCBzdHJ1Y3QgbXRrX3Zjb2RlY19lbmNfcGRh dGEgKnZlbmNfcGRhdGE7DQo+ICANCj4gIAlzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZndfaGFuZGxl cjsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVj L210a192Y29kZWNfZW5jX2Rydi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVj L210a192Y29kZWNfZW5jX2Rydi5jDQo+IGluZGV4IDQyNTMwY2QwMWEzMC4uOTIyYmM4ODgzODEx IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zj b2RlY19lbmNfZHJ2LmMNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVj L210a192Y29kZWNfZW5jX2Rydi5jDQo+IEBAIC0yNDQsNiArMjQ0LDcgQEAgc3RhdGljIGludCBt dGtfdmNvZGVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJaWYgKElT X0VSUihkZXYtPmZ3X2hhbmRsZXIpKQ0KPiAgCQlyZXR1cm4gUFRSX0VSUihkZXYtPmZ3X2hhbmRs ZXIpOw0KPiAgDQo+ICsJZGV2LT52ZW5jX3BkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRh KCZwZGV2LT5kZXYpOw0KPiAgCXJldCA9IG10a192Y29kZWNfaW5pdF9lbmNfcG0oZGV2KTsNCj4g IAlpZiAocmV0IDwgMCkgew0KPiAgCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0 IG10IHZjb2RlYyBjbG9jayBzb3VyY2UhIik7DQo+IEBAIC0yNzgsMjEgKzI3OSwyNCBAQCBzdGF0 aWMgaW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4g IAkJcmV0ID0gLUVJTlZBTDsNCj4gIAkJZ290byBlcnJfcmVzOw0KPiAgCX0NCj4gKwlkaXNhYmxl X2lycShkZXYtPmVuY19pcnEpOw0KPiAgDQo+IC0JZGV2LT5lbmNfbHRfaXJxID0gcGxhdGZvcm1f Z2V0X2lycShwZGV2LCAxKTsNCj4gLQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYs DQo+IC0JCQkgICAgICAgZGV2LT5lbmNfbHRfaXJxLCBtdGtfdmNvZGVjX2VuY19sdF9pcnFfaGFu ZGxlciwNCj4gLQkJCSAgICAgICAwLCBwZGV2LT5uYW1lLCBkZXYpOw0KPiAtCWlmIChyZXQpIHsN Cj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LA0KPiAtCQkJIkZhaWxlZCB0byBpbnN0YWxsIGRldi0+ ZW5jX2x0X2lycSAlZCAoJWQpIiwNCj4gLQkJCWRldi0+ZW5jX2x0X2lycSwgcmV0KTsNCj4gLQkJ cmV0ID0gLUVJTlZBTDsNCj4gLQkJZ290byBlcnJfcmVzOw0KPiArCWlmIChkZXYtPnZlbmNfcGRh dGEtPmhhc19sdF9pcnEpIHsNCj4gKwkJZGV2LT5lbmNfbHRfaXJxID0gcGxhdGZvcm1fZ2V0X2ly cShwZGV2LCAxKTsNCj4gKwkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LA0KPiAr CQkJCSAgICAgICBkZXYtPmVuY19sdF9pcnEsDQo+ICsJCQkJICAgICAgIG10a192Y29kZWNfZW5j X2x0X2lycV9oYW5kbGVyLA0KPiArCQkJCSAgICAgICAwLCBwZGV2LT5uYW1lLCBkZXYpOw0KPiAr CQlpZiAocmV0KSB7DQo+ICsJCQlkZXZfZXJyKCZwZGV2LT5kZXYsDQo+ICsJCQkJIkZhaWxlZCB0 byBpbnN0YWxsIGRldi0+ZW5jX2x0X2lycSAlZCAoJWQpIiwNCj4gKwkJCQlkZXYtPmVuY19sdF9p cnEsIHJldCk7DQo+ICsJCQlyZXQgPSAtRUlOVkFMOw0KPiArCQkJZ290byBlcnJfcmVzOw0KPiAr CQl9DQo+ICsJCWRpc2FibGVfaXJxKGRldi0+ZW5jX2x0X2lycSk7IC8qIFZFTkNfTFQgKi8NCj4g IAl9DQo+ICANCj4gLQlkaXNhYmxlX2lycShkZXYtPmVuY19pcnEpOw0KPiAtCWRpc2FibGVfaXJx KGRldi0+ZW5jX2x0X2lycSk7IC8qIFZFTkNfTFQgKi8NCj4gIAltdXRleF9pbml0KCZkZXYtPmVu Y19tdXRleCk7DQo+ICAJbXV0ZXhfaW5pdCgmZGV2LT5kZXZfbXV0ZXgpOw0KPiAgCXNwaW5fbG9j a19pbml0KCZkZXYtPmlycWxvY2spOw0KPiBAQCAtMzczLDggKzM3NywxMiBAQCBzdGF0aWMgaW50 IG10a192Y29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gIAlyZXR1 cm4gcmV0Ow0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a192Y29kZWNfZW5j X3BkYXRhIG10ODE3M19wZGF0YSA9IHsNCj4gKwkuaGFzX2x0X2lycSA9IHRydWUsDQo+ICt9Ow0K PiArDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfdmNvZGVjX2VuY19t YXRjaFtdID0gew0KPiAtCXsuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtdmNvZGVjLWVu YyIsfSwNCj4gKwl7LmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLXZjb2RlYy1lbmMiLCAu ZGF0YSA9ICZtdDgxNzNfcGRhdGF9LA0KPiAgCXt9LA0KPiAgfTsNCj4gIE1PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIG10a192Y29kZWNfZW5jX21hdGNoKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY19oMjY0X2lmLmMNCj4gaW5kZXggN2Ew MGYwNTBlYzM2Li4wNTA3ODdiMjg5NmMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jDQo+ICsrKyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jL3ZlbmNfaDI2NF9pZi5jDQo+IEBAIC0yNCw2ICsy NCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBoMjY0X2ZpbGxlcl9tYXJrZXJbXSA9IHsweDAsIDB4 MCwgMHgwLCAweDEsIDB4Y307DQo+ICAjZGVmaW5lIEgyNjRfRklMTEVSX01BUktFUl9TSVpFIEFS UkFZX1NJWkUoaDI2NF9maWxsZXJfbWFya2VyKQ0KPiAgI2RlZmluZSBWRU5DX1BJQ19CSVRTVFJF QU1fQllURV9DTlQgMHgwMDk4DQo+ICANCj4gKy8qDQo+ICsgKiBlbnVtIHZlbmNfaDI2NF9mcmFt ZV90eXBlIC0gaDI2NCBlbmNvZGVyIG91dHB1dCBiaXRzdHJlYW0gZnJhbWUgdHlwZQ0KPiArICov DQo+ICtlbnVtIHZlbmNfaDI2NF9mcmFtZV90eXBlIHsNCj4gKwlWRU5DX0gyNjRfSURSX0ZSTSwN Cj4gKwlWRU5DX0gyNjRfSV9GUk0sDQo+ICsJVkVOQ19IMjY0X1BfRlJNLA0KPiArCVZFTkNfSDI2 NF9CX0ZSTSwNCj4gK307DQo+ICsNCj4gIC8qDQo+ICAgKiBlbnVtIHZlbmNfaDI2NF92cHVfd29y a19idWYgLSBoMjY0IGVuY29kZXIgYnVmZmVyIGluZGV4DQo+ICAgKi8NCj4gQEAgLTEzNyw3ICsx NDcsOCBAQCBzdHJ1Y3QgdmVuY19oMjY0X2luc3Qgew0KPiAgCXN0cnVjdCBtdGtfdmNvZGVjX21l bSB3b3JrX2J1ZnNbVkVOQ19IMjY0X1ZQVV9XT1JLX0JVRl9NQVhdOw0KPiAgCXN0cnVjdCBtdGtf dmNvZGVjX21lbSBwcHNfYnVmOw0KPiAgCWJvb2wgd29ya19idWZfYWxsb2NhdGVkOw0KPiAtCXVu c2lnbmVkIGludCBmcm1fY250Ow0KPiArCXUzMiBmcm1fY250OwkvKiBkZWNsYXJlZCBhcyB1MzIg dG8gcHJvcGVybHkgb3ZlcmZsb3cgKi8NCj4gKwl1bnNpZ25lZCBpbnQgc2tpcF9mcm1fY250Ow0K PiAgCXVuc2lnbmVkIGludCBwcmVwZW5kX2hkcjsNCj4gIAlzdHJ1Y3QgdmVuY192cHVfaW5zdCB2 cHVfaW5zdDsNCj4gIAlzdHJ1Y3QgdmVuY19oMjY0X3ZzaSAqdnNpOw0KPiBAQCAtMzI3LDYgKzMz OCwyMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGgyNjRfZW5jX3dhaXRfdmVuY19kb25lKHN0cnVj dCB2ZW5jX2gyNjRfaW5zdCAqaW5zdCkNCj4gIAlyZXR1cm4gaXJxX3N0YXR1czsNCj4gIH0NCj4g IA0KPiArc3RhdGljIGludCBoMjY0X2ZyYW1lX3R5cGUoc3RydWN0IHZlbmNfaDI2NF9pbnN0ICpp bnN0KQ0KPiArew0KPiArCWlmICgoaW5zdC0+dnNpLT5jb25maWcuZ29wX3NpemUgIT0gMCAmJg0K PiArCQkoaW5zdC0+ZnJtX2NudCAlIGluc3QtPnZzaS0+Y29uZmlnLmdvcF9zaXplKSA9PSAwKSB8 fA0KPiArCQkoaW5zdC0+ZnJtX2NudCA9PSAwICYmIGluc3QtPnZzaS0+Y29uZmlnLmdvcF9zaXpl ID09IDApKSB7DQo+ICsJCS8qIElEUiBmcmFtZSAqLw0KPiArCQlyZXR1cm4gVkVOQ19IMjY0X0lE Ul9GUk07DQo+ICsJfSBlbHNlIGlmICgoaW5zdC0+dnNpLT5jb25maWcuaW50cmFfcGVyaW9kICE9 IDAgJiYNCj4gKwkJKGluc3QtPmZybV9jbnQgJSBpbnN0LT52c2ktPmNvbmZpZy5pbnRyYV9wZXJp b2QpID09IDApIHx8DQo+ICsJCShpbnN0LT5mcm1fY250ID09IDAgJiYgaW5zdC0+dnNpLT5jb25m aWcuaW50cmFfcGVyaW9kID09IDApKSB7DQo+ICsJCS8qIEkgZnJhbWUgKi8NCj4gKwkJcmV0dXJu IFZFTkNfSDI2NF9JX0ZSTTsNCj4gKwl9IGVsc2Ugew0KPiArCQlyZXR1cm4gVkVOQ19IMjY0X1Bf RlJNOyAgLyogTm90ZTogQiBmcmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQgKi8NCj4gKwl9DQo+ICt9 DQo+ICBzdGF0aWMgaW50IGgyNjRfZW5jb2RlX3NwcyhzdHJ1Y3QgdmVuY19oMjY0X2luc3QgKmlu c3QsDQo+ICAJCQkgICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKmJzX2J1ZiwNCj4gIAkJCSAgIHVu c2lnbmVkIGludCAqYnNfc2l6ZSkNCj4gQEAgLTMzNyw3ICszNjQsNyBAQCBzdGF0aWMgaW50IGgy NjRfZW5jb2RlX3NwcyhzdHJ1Y3QgdmVuY19oMjY0X2luc3QgKmluc3QsDQo+ICAJbXRrX3Zjb2Rl Y19kZWJ1Z19lbnRlcihpbnN0KTsNCj4gIA0KPiAgCXJldCA9IHZwdV9lbmNfZW5jb2RlKCZpbnN0 LT52cHVfaW5zdCwgSDI2NF9CU19NT0RFX1NQUywgTlVMTCwNCj4gLQkJCSAgICAgYnNfYnVmLCBi c19zaXplKTsNCj4gKwkJCSAgICAgYnNfYnVmLCBic19zaXplLCBOVUxMKTsNCj4gIAlpZiAocmV0 KQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgDQo+IEBAIC0zNjQsNyArMzkxLDcgQEAgc3RhdGljIGlu dCBoMjY0X2VuY29kZV9wcHMoc3RydWN0IHZlbmNfaDI2NF9pbnN0ICppbnN0LA0KPiAgCW10a192 Y29kZWNfZGVidWdfZW50ZXIoaW5zdCk7DQo+ICANCj4gIAlyZXQgPSB2cHVfZW5jX2VuY29kZSgm aW5zdC0+dnB1X2luc3QsIEgyNjRfQlNfTU9ERV9QUFMsIE5VTEwsDQo+IC0JCQkgICAgIGJzX2J1 ZiwgYnNfc2l6ZSk7DQo+ICsJCQkgICAgIGJzX2J1ZiwgYnNfc2l6ZSwgTlVMTCk7DQo+ICAJaWYg KHJldCkNCj4gIAkJcmV0dXJuIHJldDsNCj4gIA0KPiBAQCAtNDEwLDEzICs0MzcsMjQgQEAgc3Rh dGljIGludCBoMjY0X2VuY29kZV9mcmFtZShzdHJ1Y3QgdmVuY19oMjY0X2luc3QgKmluc3QsDQo+ ICB7DQo+ICAJaW50IHJldCA9IDA7DQo+ICAJdW5zaWduZWQgaW50IGlycV9zdGF0dXM7DQo+ICsJ c3RydWN0IHZlbmNfZnJhbWVfaW5mbyBmcmFtZV9pbmZvOw0KPiAgDQo+ICAJbXRrX3Zjb2RlY19k ZWJ1Z19lbnRlcihpbnN0KTsNCj4gLQ0KPiArCS8qIE92ZXJmbG93aW5nIGJhY2sgdG8gMCBpcyBv ayBhbmQgZXhwZWN0ZWQgaGVyZSAqLw0KPiArCWluc3QtPmZybV9jbnQrKzsNCj4gKwltdGtfdmNv ZGVjX2RlYnVnKGluc3QsICJmcm1fY250KysgPSAlZFxuICIsIGluc3QtPmZybV9jbnQpOw0KPiAr CWZyYW1lX2luZm8uZnJtX2NudCA9IGluc3QtPmZybV9jbnQ7DQo+ICsJZnJhbWVfaW5mby5za2lw X2ZybV9jbnQgPSBpbnN0LT5za2lwX2ZybV9jbnQ7DQo+ICsJZnJhbWVfaW5mby5mcm1fdHlwZSA9 IGgyNjRfZnJhbWVfdHlwZShpbnN0KTsNCj4gKwltdGtfdmNvZGVjX2RlYnVnKGluc3QsICJmcm1f Y250KysgPSAlZCxza2lwX2ZybV9jbnQgPSVkLGZybV90eXBlPSVkLlxuIiwNCj4gKwkJZnJhbWVf aW5mby5mcm1fY250LCBmcmFtZV9pbmZvLnNraXBfZnJtX2NudCwNCj4gKwkJZnJhbWVfaW5mby5m cm1fdHlwZSk7DQo+ICAJcmV0ID0gdnB1X2VuY19lbmNvZGUoJmluc3QtPnZwdV9pbnN0LCBIMjY0 X0JTX01PREVfRlJBTUUsIGZybV9idWYsDQo+IC0JCQkgICAgIGJzX2J1ZiwgYnNfc2l6ZSk7DQo+ IC0JaWYgKHJldCkNCj4gKwkJCSAgICAgYnNfYnVmLCBic19zaXplLCAmZnJhbWVfaW5mbyk7DQo+ ICsJaWYgKHJldCkgew0KPiArCQlpbnN0LT5mcm1fY250LS07DQo+ICAJCXJldHVybiByZXQ7DQo+ ICsJfQ0KPiAgDQo+ICAJLyoNCj4gIAkgKiBza2lwIGZyYW1lIGNhc2U6IFRoZSBza2lwIGZyYW1l IGJ1ZmZlciBpcyBjb21wb3NlZCBieSB2cHUgc2lkZSBvbmx5LA0KPiBAQCAtNDI3LDE5ICs0NjUs MTkgQEAgc3RhdGljIGludCBoMjY0X2VuY29kZV9mcmFtZShzdHJ1Y3QgdmVuY19oMjY0X2luc3Qg Kmluc3QsDQo+ICAJCW1lbWNweShic19idWYtPnZhLA0KPiAgCQkgICAgICAgaW5zdC0+d29ya19i dWZzW1ZFTkNfSDI2NF9WUFVfV09SS19CVUZfU0tJUF9GUkFNRV0udmEsDQo+ICAJCSAgICAgICAq YnNfc2l6ZSk7DQo+IC0JCSsraW5zdC0+ZnJtX2NudDsNCj4gKwkJKytpbnN0LT5za2lwX2ZybV9j bnQ7DQo+ICAJCXJldHVybiByZXQ7DQo+ICAJfQ0KPiAgDQo+ICAJaXJxX3N0YXR1cyA9IGgyNjRf ZW5jX3dhaXRfdmVuY19kb25lKGluc3QpOw0KPiAgCWlmIChpcnFfc3RhdHVzICE9IE1US19WRU5D X0lSUV9TVEFUVVNfRlJNKSB7DQo+ICAJCW10a192Y29kZWNfZXJyKGluc3QsICJpcnFfc3RhdHVz PSVkIGZhaWxlZCIsIGlycV9zdGF0dXMpOw0KPiArCQlpbnN0LT5mcm1fY250LS07DQo+ICAJCXJl dHVybiAtRUlPOw0KPiAgCX0NCj4gIA0KPiAgCSpic19zaXplID0gaDI2NF9yZWFkX3JlZyhpbnN0 LCBWRU5DX1BJQ19CSVRTVFJFQU1fQllURV9DTlQpOw0KPiAgDQo+IC0JKytpbnN0LT5mcm1fY250 Ow0KPiAgCW10a192Y29kZWNfZGVidWcoaW5zdCwgImZybSAlZCBic19zaXplICVkIGtleV9mcm0g JWQgPC0iLA0KPiAgCQkJIGluc3QtPmZybV9jbnQsICpic19zaXplLCBpbnN0LT52cHVfaW5zdC5p c19rZXlfZnJtKTsNCj4gIA0KPiBAQCAtNDY0LDYgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIGgyNjRf ZW5jb2RlX2ZpbGxlcihzdHJ1Y3QgdmVuY19oMjY0X2luc3QgKmluc3QsIHZvaWQgKmJ1ZiwNCj4g IA0KPiAgc3RhdGljIGludCBoMjY0X2VuY19pbml0KHN0cnVjdCBtdGtfdmNvZGVjX2N0eCAqY3R4 KQ0KPiAgew0KPiArCWNvbnN0IGJvb2wgaXNfZXh0ID0gY3R4LT5kZXYtPnZlbmNfcGRhdGEtPnVz ZXNfZXh0Ow0KPiAgCWludCByZXQgPSAwOw0KPiAgCXN0cnVjdCB2ZW5jX2gyNjRfaW5zdCAqaW5z dDsNCj4gIA0KPiBAQCAtNDczLDggKzUxMiw5IEBAIHN0YXRpYyBpbnQgaDI2NF9lbmNfaW5pdChz dHJ1Y3QgbXRrX3Zjb2RlY19jdHggKmN0eCkNCj4gIA0KPiAgCWluc3QtPmN0eCA9IGN0eDsNCj4g IAlpbnN0LT52cHVfaW5zdC5jdHggPSBjdHg7DQo+IC0JaW5zdC0+dnB1X2luc3QuaWQgPSBJUElf VkVOQ19IMjY0Ow0KPiArCWluc3QtPnZwdV9pbnN0LmlkID0gaXNfZXh0ID8gU0NQX0lQSV9WRU5D X0gyNjQgOiBJUElfVkVOQ19IMjY0Ow0KPiAgCWluc3QtPmh3X2Jhc2UgPSBtdGtfdmNvZGVjX2dl dF9yZWdfYWRkcihpbnN0LT5jdHgsIFZFTkNfU1lTKTsNCj4gKwlpbnN0LT5mcm1fY250ID0gMHhm ZmZmZmZmZjsNCj4gIA0KPiAgCW10a192Y29kZWNfZGVidWdfZW50ZXIoaW5zdCk7DQo+ICANCj4g QEAgLTYyOSw3ICs2NjksMTIgQEAgc3RhdGljIGludCBoMjY0X2VuY19zZXRfcGFyYW0odm9pZCAq aGFuZGxlLA0KPiAgCQlpbnN0LT5wcmVwZW5kX2hkciA9IDE7DQo+ICAJCW10a192Y29kZWNfZGVi dWcoaW5zdCwgInNldCBwcmVwZW5kIGhlYWRlciBtb2RlIik7DQo+ICAJCWJyZWFrOw0KPiAtDQo+ ICsJY2FzZSBWRU5DX1NFVF9QQVJBTV9GT1JDRV9JTlRSQToNCj4gKwljYXNlIFZFTkNfU0VUX1BB UkFNX0dPUF9TSVpFOg0KPiArCWNhc2UgVkVOQ19TRVRfUEFSQU1fSU5UUkFfUEVSSU9EOg0KPiAr CQlpbnN0LT5mcm1fY250ID0gMHhmZmZmZmZmZjsNCj4gKwkJaW5zdC0+c2tpcF9mcm1fY250ID0g MDsNCj4gKwkJZmFsbHRocm91Z2g7DQo+ICAJZGVmYXVsdDoNCj4gIAkJcmV0ID0gdnB1X2VuY19z ZXRfcGFyYW0oJmluc3QtPnZwdV9pbnN0LCB0eXBlLCBlbmNfcHJtKTsNCj4gIAkJYnJlYWs7DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuYy92ZW5j X3ZwOF9pZi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY192 cDhfaWYuYw0KPiBpbmRleCA2NDI2YWY1MTQ1MjYuLjExYWJiMTkxYWRhNSAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmMvdmVuY192cDhfaWYuYw0K PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuYy92ZW5jX3ZwOF9p Zi5jDQo+IEBAIC0zMDIsNyArMzAyLDggQEAgc3RhdGljIGludCB2cDhfZW5jX2VuY29kZV9mcmFt ZShzdHJ1Y3QgdmVuY192cDhfaW5zdCAqaW5zdCwNCj4gIA0KPiAgCW10a192Y29kZWNfZGVidWco aW5zdCwgIi0+ZnJtX2NudD0lZCIsIGluc3QtPmZybV9jbnQpOw0KPiAgDQo+IC0JcmV0ID0gdnB1 X2VuY19lbmNvZGUoJmluc3QtPnZwdV9pbnN0LCAwLCBmcm1fYnVmLCBic19idWYsIGJzX3NpemUp Ow0KPiArCXJldCA9IHZwdV9lbmNfZW5jb2RlKCZpbnN0LT52cHVfaW5zdCwgMCwgZnJtX2J1Ziwg YnNfYnVmLCBic19zaXplLA0KPiArCQkJICAgICBOVUxMKTsNCj4gIAlpZiAocmV0KQ0KPiAgCQly ZXR1cm4gcmV0Ow0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210 ay12Y29kZWMvdmVuY19kcnZfaWYuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2Rl Yy92ZW5jX2Rydl9pZi5oDQo+IGluZGV4IDUyZmM5Y2M4MTJmYy4uNTFiNTI2MjVjYTIyIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY19kcnZfaWYu aA0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY19kcnZfaWYu aA0KPiBAQCAtOTIsNiArOTIsMTIgQEAgc3RydWN0IHZlbmNfZW5jX3BhcmFtIHsNCj4gIAl1bnNp Z25lZCBpbnQgZ29wX3NpemU7DQo+ICB9Ow0KPiAgDQo+ICtzdHJ1Y3QgdmVuY19mcmFtZV9pbmZv IHsNCj4gKwl1bnNpZ25lZCBpbnQgZnJtX2NudDsJCS8qIHBlciBmcmFtZSB1cGRhdGUgKi8NCj4g Kwl1bnNpZ25lZCBpbnQgc2tpcF9mcm1fY250OwkvKiBwZXIgZnJhbWUgdXBkYXRlICovDQo+ICsJ dW5zaWduZWQgaW50IGZybV90eXBlOwkJLyogcGVyIGZyYW1lIHVwZGF0ZSAqLw0KPiArfTsNCj4g Kw0KPiAgLyoNCj4gICAqIHN0cnVjdCB2ZW5jX2ZybV9idWYgLSBmcmFtZSBidWZmZXIgaW5mb3Jt YXRpb24gdXNlZCBpbiB2ZW5jX2lmX2VuY29kZSgpDQo+ICAgKiBAZmJfYWRkcjogcGxhbmUgZnJh bWUgYnVmZmVyIGFkZHJlc3Nlcw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tdGstdmNvZGVjL3ZlbmNfaXBpX21zZy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst dmNvZGVjL3ZlbmNfaXBpX21zZy5oDQo+IGluZGV4IDI4ZWUwNGNhNjI0MS4uNGNhZmJmOTJkOWNk IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY19p cGlfbXNnLmgNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL3ZlbmNf aXBpX21zZy5oDQo+IEBAIC01MSwxNyArNTEsMjIgQEAgc3RydWN0IHZlbmNfYXBfaXBpX21zZ19p bml0IHsNCj4gICAqIEB2cHVfaW5zdF9hZGRyOglWUFUgZW5jb2RlciBpbnN0YW5jZSBhZGRyDQo+ ICAgKgkJCShzdHJ1Y3QgdmVuY192cDhfdnNpL3ZlbmNfaDI2NF92c2kgKikNCj4gICAqIEBwYXJh bV9pZDoJcGFyYW1ldGVyIGlkICh2ZW5jX3NldF9wYXJhbV90eXBlKQ0KPiAtICogQGRhdGFfaXRl bToJbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkYXRhIGFycmF5DQo+ICsgKiBAbnVtX2RhdGE6CW51 bWJlciBvZiBpdGVtcyBpbiB0aGUgZGF0YSBhcnJheQ0KPiAgICogQGRhdGFbOF06CWRhdGEgYXJy YXkgdG8gc3RvcmUgdGhlIHNldCBwYXJhbWV0ZXJzDQo+ICAgKi8NCj4gIHN0cnVjdCB2ZW5jX2Fw X2lwaV9tc2dfc2V0X3BhcmFtIHsNCj4gIAl1aW50MzJfdCBtc2dfaWQ7DQo+ICAJdWludDMyX3Qg dnB1X2luc3RfYWRkcjsNCj4gIAl1aW50MzJfdCBwYXJhbV9pZDsNCj4gLQl1aW50MzJfdCBkYXRh X2l0ZW07DQo+ICsJdWludDMyX3QgbnVtX2RhdGE7DQo+ICAJdWludDMyX3QgZGF0YVs4XTsNCj4g IH07DQo+ICANCj4gK3N0cnVjdCB2ZW5jX2FwX2lwaV9tc2dfc2V0X3BhcmFtX2V4dCB7DQo+ICsJ c3RydWN0IHZlbmNfYXBfaXBpX21zZ19zZXRfcGFyYW0gYmFzZTsNCj4gKwl1aW50MzJfdCBkYXRh X2V4dFsyNF07DQo+ICt9Ow0KPiArDQo+ICAvKioNCj4gICAqIHN0cnVjdCB2ZW5jX2FwX2lwaV9t c2dfZW5jIC0gQVAgdG8gVlBVIGVuYyBjbWQgc3RydWN0dXJlDQo+ICAgKiBAbXNnX2lkOgltZXNz YWdlIGlkIChBUF9JUElNU0dfWFhYX0VOQ19FTkNPREUpDQo+IEBAIC04Miw2ICs4NywxMiBAQCBz dHJ1Y3QgdmVuY19hcF9pcGlfbXNnX2VuYyB7DQo+ICAJdWludDMyX3QgYnNfc2l6ZTsNCj4gIH07 DQo+ICANCj4gK3N0cnVjdCB2ZW5jX2FwX2lwaV9tc2dfZW5jX2V4dCB7DQo+ICsJc3RydWN0IHZl bmNfYXBfaXBpX21zZ19lbmMgYmFzZTsNCj4gKwl1aW50MzJfdCBkYXRhX2l0ZW07DQo+ICsJdWlu dDMyX3QgZGF0YVszMl07DQo+ICt9Ow0KPiArDQo+ICAvKioNCj4gICAqIHN0cnVjdCB2ZW5jX2Fw X2lwaV9tc2dfZGVpbml0IC0gQVAgdG8gVlBVIGRlaW5pdCBjbWQgc3RydWN0dXJlDQo+ICAgKiBA bXNnX2lkOgltZXNzYWdlIGlkIChBUF9JUElNU0dfWFhYX0VOQ19ERUlOSVQpDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy92ZW5jX3ZwdV9pZi5jDQo+IGluZGV4IDUz ODU0MTI3ODE0Yi4uNmM3N2JmMDI1MTcyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYw0KPiArKysgYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuYw0KPiBAQCAtMTE2LDQ5ICsxMTYsODEgQEAg aW50IHZwdV9lbmNfaW5pdChzdHJ1Y3QgdmVuY192cHVfaW5zdCAqdnB1KQ0KPiAgCXJldHVybiAw Ow0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHZlbmNfZW5jX3BhcmFtX2Nyb3Bf cmlnaHQoc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwNCj4gKwkJCQkJICAgICAgc3RydWN0IHZl bmNfZW5jX3BhcmFtICplbmNfcHJtKQ0KPiArew0KPiArCXVuc2lnbmVkIGludCBpbWdfY3JvcF9y aWdodCA9IGVuY19wcm0tPmJ1Zl93aWR0aCAtIGVuY19wcm0tPndpZHRoOw0KPiArDQo+ICsJcmV0 dXJuIGltZ19jcm9wX3JpZ2h0ICUgMTY7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBp bnQgdmVuY19lbmNfcGFyYW1fY3JvcF9ib3R0b20oc3RydWN0IHZlbmNfZW5jX3BhcmFtICplbmNf cHJtKQ0KPiArew0KPiArCXJldHVybiByb3VuZF91cChlbmNfcHJtLT5oZWlnaHQsIDE2KSAtIGVu Y19wcm0tPmhlaWdodDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHVuc2lnbmVkIGludCB2ZW5jX2Vu Y19wYXJhbV9udW1fbWIoc3RydWN0IHZlbmNfZW5jX3BhcmFtICplbmNfcHJtKQ0KPiArew0KPiAr CXJldHVybiBESVZfUk9VTkRfVVAoZW5jX3BybS0+d2lkdGgsIDE2KSAqDQo+ICsJICAgICAgIERJ Vl9ST1VORF9VUChlbmNfcHJtLT5oZWlnaHQsIDE2KTsNCj4gK30NCj4gKw0KPiAgaW50IHZwdV9l bmNfc2V0X3BhcmFtKHN0cnVjdCB2ZW5jX3ZwdV9pbnN0ICp2cHUsDQo+ICAJCSAgICAgIGVudW0g dmVuY19zZXRfcGFyYW1fdHlwZSBpZCwNCj4gIAkJICAgICAgc3RydWN0IHZlbmNfZW5jX3BhcmFt ICplbmNfcGFyYW0pDQo+ICB7DQo+IC0Jc3RydWN0IHZlbmNfYXBfaXBpX21zZ19zZXRfcGFyYW0g b3V0Ow0KPiArCWNvbnN0IGJvb2wgaXNfZXh0ID0gdnB1LT5jdHgtPmRldi0+dmVuY19wZGF0YS0+ dXNlc19leHQ7DQo+ICsJc2l6ZV90IG1zZ19zaXplID0gaXNfZXh0ID8NCj4gKwkJc2l6ZW9mKHN0 cnVjdCB2ZW5jX2FwX2lwaV9tc2dfc2V0X3BhcmFtX2V4dCkgOg0KPiArCQlzaXplb2Yoc3RydWN0 IHZlbmNfYXBfaXBpX21zZ19zZXRfcGFyYW0pOw0KPiArCXN0cnVjdCB2ZW5jX2FwX2lwaV9tc2df c2V0X3BhcmFtX2V4dCBvdXQ7DQo+ICANCj4gIAltdGtfdmNvZGVjX2RlYnVnKHZwdSwgImlkICVk IC0+IiwgaWQpOw0KPiAgDQo+ICAJbWVtc2V0KCZvdXQsIDAsIHNpemVvZihvdXQpKTsNCj4gLQlv dXQubXNnX2lkID0gQVBfSVBJTVNHX0VOQ19TRVRfUEFSQU07DQo+IC0Jb3V0LnZwdV9pbnN0X2Fk ZHIgPSB2cHUtPmluc3RfYWRkcjsNCj4gLQlvdXQucGFyYW1faWQgPSBpZDsNCj4gKwlvdXQuYmFz ZS5tc2dfaWQgPSBBUF9JUElNU0dfRU5DX1NFVF9QQVJBTTsNCj4gKwlvdXQuYmFzZS52cHVfaW5z dF9hZGRyID0gdnB1LT5pbnN0X2FkZHI7DQo+ICsJb3V0LmJhc2UucGFyYW1faWQgPSBpZDsNCj4g IAlzd2l0Y2ggKGlkKSB7DQo+ICAJY2FzZSBWRU5DX1NFVF9QQVJBTV9FTkM6DQo+IC0JCW91dC5k YXRhX2l0ZW0gPSAwOw0KPiArCQlpZiAoaXNfZXh0KSB7DQo+ICsJCQlvdXQuYmFzZS5udW1fZGF0 YSA9IDM7DQo+ICsJCQlvdXQuYmFzZS5kYXRhWzBdID0NCj4gKwkJCQl2ZW5jX2VuY19wYXJhbV9j cm9wX3JpZ2h0KHZwdSwgZW5jX3BhcmFtKTsNCj4gKwkJCW91dC5iYXNlLmRhdGFbMV0gPQ0KPiAr CQkJCXZlbmNfZW5jX3BhcmFtX2Nyb3BfYm90dG9tKGVuY19wYXJhbSk7DQo+ICsJCQlvdXQuYmFz ZS5kYXRhWzJdID0gdmVuY19lbmNfcGFyYW1fbnVtX21iKGVuY19wYXJhbSk7DQo+ICsJCX0gZWxz ZSB7DQo+ICsJCQlvdXQuYmFzZS5udW1fZGF0YSA9IDA7DQo+ICsJCX0NCj4gIAkJYnJlYWs7DQo+ ICAJY2FzZSBWRU5DX1NFVF9QQVJBTV9GT1JDRV9JTlRSQToNCj4gLQkJb3V0LmRhdGFfaXRlbSA9 IDA7DQo+ICsJCW91dC5iYXNlLm51bV9kYXRhID0gMDsNCj4gIAkJYnJlYWs7DQo+ICAJY2FzZSBW RU5DX1NFVF9QQVJBTV9BREpVU1RfQklUUkFURToNCj4gLQkJb3V0LmRhdGFfaXRlbSA9IDE7DQo+ IC0JCW91dC5kYXRhWzBdID0gZW5jX3BhcmFtLT5iaXRyYXRlOw0KPiArCQlvdXQuYmFzZS5udW1f ZGF0YSA9IDE7DQo+ICsJCW91dC5iYXNlLmRhdGFbMF0gPSBlbmNfcGFyYW0tPmJpdHJhdGU7DQo+ ICAJCWJyZWFrOw0KPiAgCWNhc2UgVkVOQ19TRVRfUEFSQU1fQURKVVNUX0ZSQU1FUkFURToNCj4g LQkJb3V0LmRhdGFfaXRlbSA9IDE7DQo+IC0JCW91dC5kYXRhWzBdID0gZW5jX3BhcmFtLT5mcm1f cmF0ZTsNCj4gKwkJb3V0LmJhc2UubnVtX2RhdGEgPSAxOw0KPiArCQlvdXQuYmFzZS5kYXRhWzBd ID0gZW5jX3BhcmFtLT5mcm1fcmF0ZTsNCj4gIAkJYnJlYWs7DQo+ICAJY2FzZSBWRU5DX1NFVF9Q QVJBTV9HT1BfU0laRToNCj4gLQkJb3V0LmRhdGFfaXRlbSA9IDE7DQo+IC0JCW91dC5kYXRhWzBd ID0gZW5jX3BhcmFtLT5nb3Bfc2l6ZTsNCj4gKwkJb3V0LmJhc2UubnVtX2RhdGEgPSAxOw0KPiAr CQlvdXQuYmFzZS5kYXRhWzBdID0gZW5jX3BhcmFtLT5nb3Bfc2l6ZTsNCj4gIAkJYnJlYWs7DQo+ ICAJY2FzZSBWRU5DX1NFVF9QQVJBTV9JTlRSQV9QRVJJT0Q6DQo+IC0JCW91dC5kYXRhX2l0ZW0g PSAxOw0KPiAtCQlvdXQuZGF0YVswXSA9IGVuY19wYXJhbS0+aW50cmFfcGVyaW9kOw0KPiArCQlv dXQuYmFzZS5udW1fZGF0YSA9IDE7DQo+ICsJCW91dC5iYXNlLmRhdGFbMF0gPSBlbmNfcGFyYW0t PmludHJhX3BlcmlvZDsNCj4gIAkJYnJlYWs7DQo+ICAJY2FzZSBWRU5DX1NFVF9QQVJBTV9TS0lQ X0ZSQU1FOg0KPiAtCQlvdXQuZGF0YV9pdGVtID0gMDsNCj4gKwkJb3V0LmJhc2UubnVtX2RhdGEg PSAwOw0KPiAgCQlicmVhazsNCj4gIAlkZWZhdWx0Og0KPiAgCQltdGtfdmNvZGVjX2Vycih2cHUs ICJpZCAlZCBub3Qgc3VwcG9ydGVkIiwgaWQpOw0KPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gIAl9 DQo+IC0JaWYgKHZwdV9lbmNfc2VuZF9tc2codnB1LCAmb3V0LCBzaXplb2Yob3V0KSkpIHsNCj4g KwlpZiAodnB1X2VuY19zZW5kX21zZyh2cHUsICZvdXQsIG1zZ19zaXplKSkgew0KPiAgCQltdGtf dmNvZGVjX2Vycih2cHUsDQo+ICAJCQkgICAgICAgIkFQX0lQSU1TR19FTkNfU0VUX1BBUkFNICVk IGZhaWwiLCBpZCk7DQo+ICAJCXJldHVybiAtRUlOVkFMOw0KPiBAQCAtMTcyLDMzICsyMDQsNDQg QEAgaW50IHZwdV9lbmNfc2V0X3BhcmFtKHN0cnVjdCB2ZW5jX3ZwdV9pbnN0ICp2cHUsDQo+ICBp bnQgdnB1X2VuY19lbmNvZGUoc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwgdW5zaWduZWQgaW50 IGJzX21vZGUsDQo+ICAJCSAgIHN0cnVjdCB2ZW5jX2ZybV9idWYgKmZybV9idWYsDQo+ICAJCSAg IHN0cnVjdCBtdGtfdmNvZGVjX21lbSAqYnNfYnVmLA0KPiAtCQkgICB1bnNpZ25lZCBpbnQgKmJz X3NpemUpDQo+ICsJCSAgIHVuc2lnbmVkIGludCAqYnNfc2l6ZSwNCj4gKwkJICAgc3RydWN0IHZl bmNfZnJhbWVfaW5mbyAqZnJhbWVfaW5mbykNCj4gIHsNCj4gLQlzdHJ1Y3QgdmVuY19hcF9pcGlf bXNnX2VuYyBvdXQ7DQo+ICsJY29uc3QgYm9vbCBpc19leHQgPSB2cHUtPmN0eC0+ZGV2LT52ZW5j X3BkYXRhLT51c2VzX2V4dDsNCj4gKwlzaXplX3QgbXNnX3NpemUgPSBpc19leHQgPw0KPiArCQlz aXplb2Yoc3RydWN0IHZlbmNfYXBfaXBpX21zZ19lbmNfZXh0KSA6DQo+ICsJCXNpemVvZihzdHJ1 Y3QgdmVuY19hcF9pcGlfbXNnX2VuYyk7DQo+ICsJc3RydWN0IHZlbmNfYXBfaXBpX21zZ19lbmNf ZXh0IG91dDsNCj4gIA0KPiAgCW10a192Y29kZWNfZGVidWcodnB1LCAiYnNfbW9kZSAlZCAtPiIs IGJzX21vZGUpOw0KPiAgDQo+ICAJbWVtc2V0KCZvdXQsIDAsIHNpemVvZihvdXQpKTsNCj4gLQlv dXQubXNnX2lkID0gQVBfSVBJTVNHX0VOQ19FTkNPREU7DQo+IC0Jb3V0LnZwdV9pbnN0X2FkZHIg PSB2cHUtPmluc3RfYWRkcjsNCj4gLQlvdXQuYnNfbW9kZSA9IGJzX21vZGU7DQo+ICsJb3V0LmJh c2UubXNnX2lkID0gQVBfSVBJTVNHX0VOQ19FTkNPREU7DQo+ICsJb3V0LmJhc2UudnB1X2luc3Rf YWRkciA9IHZwdS0+aW5zdF9hZGRyOw0KPiArCW91dC5iYXNlLmJzX21vZGUgPSBic19tb2RlOw0K PiAgCWlmIChmcm1fYnVmKSB7DQo+ICAJCWlmICgoZnJtX2J1Zi0+ZmJfYWRkclswXS5kbWFfYWRk ciAlIDE2ID09IDApICYmDQo+ICAJCSAgICAoZnJtX2J1Zi0+ZmJfYWRkclsxXS5kbWFfYWRkciAl IDE2ID09IDApICYmDQo+ICAJCSAgICAoZnJtX2J1Zi0+ZmJfYWRkclsyXS5kbWFfYWRkciAlIDE2 ID09IDApKSB7DQo+IC0JCQlvdXQuaW5wdXRfYWRkclswXSA9IGZybV9idWYtPmZiX2FkZHJbMF0u ZG1hX2FkZHI7DQo+IC0JCQlvdXQuaW5wdXRfYWRkclsxXSA9IGZybV9idWYtPmZiX2FkZHJbMV0u ZG1hX2FkZHI7DQo+IC0JCQlvdXQuaW5wdXRfYWRkclsyXSA9IGZybV9idWYtPmZiX2FkZHJbMl0u ZG1hX2FkZHI7DQo+ICsJCQlvdXQuYmFzZS5pbnB1dF9hZGRyWzBdID0gZnJtX2J1Zi0+ZmJfYWRk clswXS5kbWFfYWRkcjsNCj4gKwkJCW91dC5iYXNlLmlucHV0X2FkZHJbMV0gPSBmcm1fYnVmLT5m Yl9hZGRyWzFdLmRtYV9hZGRyOw0KPiArCQkJb3V0LmJhc2UuaW5wdXRfYWRkclsyXSA9IGZybV9i dWYtPmZiX2FkZHJbMl0uZG1hX2FkZHI7DQo+ICAJCX0gZWxzZSB7DQo+ICAJCQltdGtfdmNvZGVj X2Vycih2cHUsICJkbWFfYWRkciBub3QgYWxpZ24gdG8gMTYiKTsNCj4gIAkJCXJldHVybiAtRUlO VkFMOw0KPiAgCQl9DQo+ICAJfQ0KPiAgCWlmIChic19idWYpIHsNCj4gLQkJb3V0LmJzX2FkZHIg PSBic19idWYtPmRtYV9hZGRyOw0KPiAtCQlvdXQuYnNfc2l6ZSA9IGJzX2J1Zi0+c2l6ZTsNCj4g KwkJb3V0LmJhc2UuYnNfYWRkciA9IGJzX2J1Zi0+ZG1hX2FkZHI7DQo+ICsJCW91dC5iYXNlLmJz X3NpemUgPSBic19idWYtPnNpemU7DQo+ICAJfQ0KPiAtCWlmICh2cHVfZW5jX3NlbmRfbXNnKHZw dSwgJm91dCwgc2l6ZW9mKG91dCkpKSB7DQo+ICsJaWYgKGlzX2V4dCAmJiBmcmFtZV9pbmZvKSB7 DQo+ICsJCW91dC5kYXRhX2l0ZW0gPSAzOw0KPiArCQlvdXQuZGF0YVswXSA9IGZyYW1lX2luZm8t PmZybV9jbnQ7DQo+ICsJCW91dC5kYXRhWzFdID0gZnJhbWVfaW5mby0+c2tpcF9mcm1fY250Ow0K PiArCQlvdXQuZGF0YVsyXSA9IGZyYW1lX2luZm8tPmZybV90eXBlOw0KPiArCX0NCj4gKwlpZiAo dnB1X2VuY19zZW5kX21zZyh2cHUsICZvdXQsIG1zZ19zaXplKSkgew0KPiAgCQltdGtfdmNvZGVj X2Vycih2cHUsICJBUF9JUElNU0dfRU5DX0VOQ09ERSAlZCBmYWlsIiwNCj4gIAkJCSAgICAgICBi c19tb2RlKTsNCj4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay12Y29kZWMvdmVuY192cHVfaWYuaCBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLXZjb2RlYy92ZW5jX3ZwdV9pZi5oDQo+IGluZGV4IGVkZDQxMTYyMWI2OC4uZjli ZTljYWI3ZmY3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29k ZWMvdmVuY192cHVfaWYuaA0KPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29k ZWMvdmVuY192cHVfaWYuaA0KPiBAQCAtNDUsNyArNDUsOCBAQCBpbnQgdnB1X2VuY19zZXRfcGFy YW0oc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSwNCj4gIGludCB2cHVfZW5jX2VuY29kZShzdHJ1 Y3QgdmVuY192cHVfaW5zdCAqdnB1LCB1bnNpZ25lZCBpbnQgYnNfbW9kZSwNCj4gIAkJICAgc3Ry dWN0IHZlbmNfZnJtX2J1ZiAqZnJtX2J1ZiwNCj4gIAkJICAgc3RydWN0IG10a192Y29kZWNfbWVt ICpic19idWYsDQo+IC0JCSAgIHVuc2lnbmVkIGludCAqYnNfc2l6ZSk7DQo+ICsJCSAgIHVuc2ln bmVkIGludCAqYnNfc2l6ZSwNCj4gKwkJICAgc3RydWN0IHZlbmNfZnJhbWVfaW5mbyAqZnJhbWVf aW5mbyk7DQo+ICBpbnQgdnB1X2VuY19kZWluaXQoc3RydWN0IHZlbmNfdnB1X2luc3QgKnZwdSk7 DQo+ICANCj4gICNlbmRpZg0KDQo=