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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 9321CC433DF for ; Fri, 12 Jun 2020 20:33:35 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6C6B1206C3 for ; Fri, 12 Jun 2020 20:33:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6C6B1206C3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id ED3B06E1D2; Fri, 12 Jun 2020 20:33:34 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 72BB86E1D2 for ; Fri, 12 Jun 2020 20:33:33 +0000 (UTC) IronPort-SDR: qFMdu1IEbucpKP5ZQkTenYtDjlT/UNMx9DIDNUDNnNzUULtKllwh04GU+hdMGegT8Kaj15Vxu9 runKIstSMLIA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2020 13:33:32 -0700 IronPort-SDR: R/lZN7NztJmGJWOo/Z5xy0n29TbvQBoBgCr2lh5i32ZubvrQayMc6Iab4a3A/VitG1SMaOSMa6 eMceSNLQK3mA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,504,1583222400"; d="scan'208";a="307349112" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 12 Jun 2020 13:33:32 -0700 Received: from fmsmsx117.amr.corp.intel.com ([169.254.3.171]) by FMSMSX103.amr.corp.intel.com ([169.254.2.18]) with mapi id 14.03.0439.000; Fri, 12 Jun 2020 13:33:31 -0700 From: "Souza, Jose" To: "ville.syrjala@linux.intel.com" Thread-Topic: [PATCH 5/6] drm/i915: Implement PSR2 selective fetch Thread-Index: AQHWM6rIJDCiaJmpbE21SgxX+uPBvKjVu5SAgABETIA= Date: Fri, 12 Jun 2020 20:33:31 +0000 Message-ID: References: <20200526221447.64110-1-jose.souza@intel.com> <20200526221447.64110-5-jose.souza@intel.com> <20200612163029.GK6112@intel.com> In-Reply-To: <20200612163029.GK6112@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.12.77] Content-ID: MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 5/6] drm/i915: Implement PSR2 selective fetch X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Pandiyan, Dhinakaran" , "intel-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gRnJpLCAyMDIwLTA2LTEyIGF0IDE5OjMwICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 DQo+IE9uIFR1ZSwgTWF5IDI2LCAyMDIwIGF0IDAzOjE0OjQ2UE0gLTA3MDAsIEpvc8OpIFJvYmVy dG8gZGUgU291emEgd3JvdGU6DQo+ID4gQWxsIEdFTjEyIHBsYXRmb3JtcyBzdXBwb3J0cyBQU1Iy IHNlbGVjdGl2ZSBmZXRjaCBidXQgbm90IGFsbCBHRU4xMg0KPiA+IHBsYXRmb3JtcyBzdXBwb3J0 cyBQU1IyIGhhcmR3YXJlIHRyYWNraW5nKGFrYSBSS0wpLg0KPiA+IA0KPiA+IFRoaXMgZmVhdHVy ZSBjb25zaXN0cyBpbiBzb2Z0d2FyZSBwcm9ncmFtIHJlZ2lzdGVycyB3aXRoIHRoZSBkYW1hZ2Vk DQo+ID4gYXJlYSBvZiBlYWNoIHBsYW5lIHRoaXMgd2F5IGhhcmR3YXJlIHdpbGwgb25seSBmZXRj aCBmcm9tIG1lbW9yeSB0aG9zZQ0KPiA+IGFyZWFzIGFuZCBzZW50IHRoZSBQU1IyIHNlbGVjdGl2 ZSB1cGRhdGUgYmxvY2tzIHRvIHBhbmVsLCBzYXZpbmcgZXZlbg0KPiA+IG1vcmUgcG93ZXIgYnV0 IHRvIGl0IGFjdHVhbGx5IGhhcHBlbiB1c2Vyc3BhY2UgbmVlZHMgdG8gc2VuZCB0aGUNCj4gPiBk YW1hZ2VkIGFyZWFzIG90aGVyd2lzZSBpdCB3aWxsIHN0aWxsIGZldGNoIHRoZSB3aG9sZSBwbGFu ZSBhcw0KPiA+IGZhbGxiYWNrLg0KPiA+IEFzIHRvZGF5IEdub21lMyBkbyBub3Qgc2VuZCBkYW1h Z2VkIGFyZWFzIGFuZCB0aGUgb25seSBjb21wb3NpdG9yIHRoYXQNCj4gPiBJJ20gYXdhcmUgdGhh dCBzZXRzIHRoZSBkYW1hZ2VkIGFyZWFzIGlzIFdlc3Rvbi4NCj4gPiBodHRwczovL2dpdGxhYi5m cmVlZGVza3RvcC5vcmcvd2F5bGFuZC93ZXN0b24vLS9tZXJnZV9yZXF1ZXN0cy8xNw0KPiA+IA0K PiA+IFNvIGhlcmUgaW1wbGVtZW50aW5nIHBhZ2UgZmxpcCBwYXJ0LCBpdCBpcyBzdGlsbCBjb21w bGV0ZWx5IG1pc3NpbmcNCj4gPiBmcm9udGJ1ZmZlciBtb2RpZmljYXRpb25zLCB0aGF0IGlzIHdo eSB0aGUgZW5hYmxlX3BzcjJfc2VsX2ZldGNoDQo+ID4gcGFyYW1ldGVyIHdhcyBhZGRlZC4NCj4g PiANCj4gPiBUaGUgcGxhbiBpcyB0byBzd2l0Y2ggYWxsIEdFTjEyIHBsYXRmb3JtcyB0byBzZWxl Y3RpdmUgZmV0Y2ggd2hlbg0KPiA+IHJlYWR5LCBpdCB3aWxsIGFsc28gZGVwZW5kIGluIGFkZCBz b21lIHRlc3RzIHNlbmRpbmcgZGFtYWdlZCBhcmVhcy4NCj4gPiBJIGhhdmUgYSBoYWNrZWQgdmVy c2lvbiBvZiBrbXNfcHNyMl9zdSB3aXRoIDMgcGxhbmVzIHRoYXQgSSBjYW4NCj4gPiBjbGVhbnVw IGFuZCBzZW5kIGluIGEgZmV3IGRheXMoOTklIG9mIFBTUjIgc2VsZWN0aXZlIGZldGNoIGNoYW5n ZXMgd2FzDQo+ID4gZG9uZSBkdXJpbmcgbXkgZnJlZSB0aW1lIHdoaWxlIGJvcmVkIGR1cmluZyBx dWFyYW50aW5lIHJhaW55IGRheXMpLg0KPiA+IA0KPiA+IEJTcGVjOiA1NTIyOQ0KPiA+IENjOiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiA+IENjOiBJ bXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+DQo+ID4gQ2M6IEd3YW4tZ3llb25nIE11biA8 Z3dhbi1neWVvbmcubXVuQGludGVsLmNvbT4NCj4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdv LnZpdmlAaW50ZWwuY29tPg0KPiA+IENjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFu LnBhbmRpeWFuQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKb3PDqSBSb2JlcnRvIGRl IFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgICA1ICsNCj4gPiAgLi4uL2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMgIHwgICAzICsNCj4gPiAgLi4uL2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgIDEwICsNCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYyAgICAgIHwgMzI5ICsrKysrKysr KysrKysrKysrLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5o ICAgICAgfCAgMTAgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nw cml0ZS5jICAgfCAgIDIgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICAgICAgICAgfCAgIDIgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFt cy5jICAgICAgICAgICAgfCAgIDUgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bh cmFtcy5oICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICA5IGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNl cnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiA+IGluZGV4IGI2OTg3ODMzNDA0MC4uOTg0 ODA5MjA4YzI5IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMNCj4gPiBAQCAtMTE3MjksNiArMTE3MjksOCBAQCBzdGF0aWMgdm9pZCBp OXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwNCj4gPiAgCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpDQo+ID4gIAkJc2tsX3dyaXRlX2N1cnNvcl93bShwbGFu ZSwgY3J0Y19zdGF0ZSk7DQo+ID4gIA0KPiA+ICsJaW50ZWxfcHNyMl9wcm9ncmFtX3BsYW5lX3Nl bF9mZXRjaChwbGFuZSwgY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOw0KPiA+ICsNCj4gPiAgCWlm IChwbGFuZS0+Y3Vyc29yLmJhc2UgIT0gYmFzZSB8fA0KPiA+ICAJICAgIHBsYW5lLT5jdXJzb3Iu c2l6ZSAhPSBmYmNfY3RsIHx8DQo+ID4gIAkgICAgcGxhbmUtPmN1cnNvci5jbnRsICE9IGNudGwp IHsNCj4gPiBAQCAtMTUxMTUsNiArMTUxMTcsOCBAQCBzdGF0aWMgdm9pZCBjb21taXRfcGlwZV9j b25maWcoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gIA0KPiA+ICAJCWlm IChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpDQo+ID4gIAkJCWludGVsX3BpcGVfZmFzdHNl dChvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOw0KPiA+ICsNCj4gPiArCQlpbnRlbF9w c3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwobmV3X2NydGNfc3RhdGUpOw0KPiA+ICAJfQ0K PiA+ICANCj4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFy a3MpDQo+ID4gQEAgLTE1MTU2LDYgKzE1MTYwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRl X2NydGMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsDQo+ID4gIAkJCWludGVsX2Nv bG9yX2xvYWRfbHV0cyhuZXdfY3J0Y19zdGF0ZSk7DQo+ID4gIA0KPiA+ICAJCWludGVsX3ByZV9w bGFuZV91cGRhdGUoc3RhdGUsIGNydGMpOw0KPiA+ICsJCWludGVsX3BzcjJfc2VsX2ZldGNoX3Vw ZGF0ZShzdGF0ZSwgY3J0Yyk7DQo+ID4gIA0KPiA+ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBk YXRlX3BpcGUpDQo+ID4gIAkJCWludGVsX2VuY29kZXJzX3VwZGF0ZV9waXBlKHN0YXRlLCBjcnRj KTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV9kZWJ1Z2ZzLmMNCj4gPiBpbmRleCA3MDUyNTYyM2JjZGYuLjBmNjAwOTc0NDYyYiAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf ZGVidWdmcy5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X2RlYnVnZnMuYw0KPiA+IEBAIC00MTcsNiArNDE3LDkgQEAgc3RhdGljIGludCBpOTE1 X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkNCj4gPiAgCQkJ c3VfYmxvY2tzID0gc3VfYmxvY2tzID4+IFBTUjJfU1VfU1RBVFVTX1NISUZUKGZyYW1lKTsNCj4g PiAgCQkJc2VxX3ByaW50ZihtLCAiJWRcdCVkXG4iLCBmcmFtZSwgc3VfYmxvY2tzKTsNCj4gPiAg CQl9DQo+ID4gKw0KPiA+ICsJCXNlcV9wcmludGYobSwgIlBTUjIgc2VsZWN0aXZlIGZldGNoOiAl c1xuIiwNCj4gPiArCQkJICAgZW5hYmxlZGRpc2FibGVkKHBzci0+cHNyMl9zZWxfZmV0Y2hfZW5h YmxlZCkpOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiAgdW5sb2NrOg0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oDQo+ID4gaW5kZXgg MzBiMjc2NzU3OGRjLi5iNzdhNTEyZTUzNjIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiA+IEBAIC01ODYs NiArNTg2LDEzIEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7DQo+ID4gIAl1MzIgcGxhbmFy X3NsYXZlOw0KPiA+ICANCj4gPiAgCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5IGNr ZXk7DQo+ID4gKw0KPiA+ICsJc3RydWN0IHsNCj4gPiArCQl1MzIgY3RsOw0KPiA+ICsJCXUzMiBw b3M7DQo+ID4gKwkJdTMyIG9mZnNldDsNCj4gPiArCQl1MzIgc2l6ZTsNCj4gPiArCX0gcHNyMl9z ZWxfZmV0Y2g7DQo+IA0KPiBEbyB3ZSByZWFsbHkgbmVlZCBhbGwgdGhhdCBoZXJlPyBXZSBkb24n dCBzdG9yZSB0aGVtIGZvciB0aGUgbm9ybWFsDQo+IHBsYW5lIHVwZGF0ZXMgZWl0aGVyLg0KDQpG b3IgY3RsIHdlIGRvLCBhbnl3YXlzIGNvdWxkIGJlIHJlbW92ZWQgaWYgd2Ugc3RvcmUgb3Zlcmxh cHBpbmcgZGFtYWdlIGFyZSBpbiBoZXJlIHNvIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxf ZmV0Y2goKSB3b3VsZCBpbmNvcnBvcmF0ZQ0KaW50ZWxfcHNyMl9wbGFuZV9zZWxfZmV0Y2hfY2Fs YygpIGNvZGUsIGJvdGggbG9va3MgZ29vZCB0byBtZS4NCg0KPiANCj4gPiAgfTsNCj4gPiAgDQo+ ID4gIHN0cnVjdCBpbnRlbF9pbml0aWFsX3BsYW5lX2NvbmZpZyB7DQo+ID4gQEAgLTkzMSw2ICs5 MzgsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7DQo+ID4gIA0KPiA+ICAJYm9vbCBoYXNf cHNyOw0KPiA+ICAJYm9vbCBoYXNfcHNyMjsNCj4gPiArCWJvb2wgZW5hYmxlX3BzcjJfc2VsX2Zl dGNoOw0KPiA+ICAJdTMyIGRjM2NvX2V4aXRsaW5lOw0KPiA+ICANCj4gPiAgCS8qDQo+ID4gQEAg LTEwNzAsNiArMTA3OCw4IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsNCj4gPiAgDQo+ID4g IAkvKiBGb3IgRFNCIHJlbGF0ZWQgaW5mbyAqLw0KPiA+ICAJc3RydWN0IGludGVsX2RzYiAqZHNi Ow0KPiA+ICsNCj4gPiArCXUzMiBwc3IyX3N3X21hbl90cmFja19jdGw7DQo+ID4gIH07DQo+ID4g IA0KPiA+ICBlbnVtIGludGVsX3BpcGVfY3JjX3NvdXJjZSB7DQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gaW5kZXggMGM4NmU5ZTM0MWEyLi5iYzJhMmU2 NGZlMmEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9wc3IuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNy LmMNCj4gPiBAQCAtNTE4LDYgKzUxOCwxNCBAQCBzdGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNy MihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ICAJZWxzZQ0KPiA+ICAJCXZhbCB8PSBF RFBfUFNSMl9UUDJfVElNRV8yNTAwdXM7DQo+ID4gIA0KPiA+ICsJaWYgKGRldl9wcml2LT5wc3Iu cHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkNCj4gPiArCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwN Cj4gPiArCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVy KSwNCj4gPiArCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVExfRU5BQkxFKTsNCj4gPiArCWVsc2Ug aWYgKEhBU19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikpDQo+ID4gKwkJaW50ZWxfZGVfd3JpdGUo ZGV2X3ByaXYsDQo+ID4gKwkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMKGRldl9wcml2LT5wc3Iu dHJhbnNjb2RlciksIDApOw0KPiA+ICsNCj4gPiAgCS8qDQo+ID4gIAkgKiBQU1IyIEhXIGlzIGlu Y29ycmVjdGx5IHVzaW5nIEVEUF9QU1JfVFAxX1RQM19TRUwgYW5kIEJTcGVjIGlzDQo+ID4gIAkg KiByZWNvbW1lbmRpbmcga2VlcCB0aGlzIGJpdCB1bnNldCB3aGlsZSBQU1IyIGlzIGVuYWJsZWQu DQo+ID4gQEAgLTYyOCw2ICs2MzYsMzggQEAgdGdsX2RjM2NvX2V4aXRsaW5lX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gIAljcnRjX3N0YXRlLT5kYzNjb19l eGl0bGluZSA9IGNydGNfdmRpc3BsYXkgLSBleGl0X3NjYW5saW5lczsNCj4gPiAgfQ0KPiA+ICAN Cj4gPiArc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9zZWxfZmV0Y2hfY29uZmlnX3ZhbGlkKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gKwkJCQkJICAgICAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPnVhcGkuc3RhdGUp Ow0KPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7DQo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOw0K PiA+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4g PiArCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzcjJfc2VsX2ZldGNoKSB7DQo+ID4gKwkJ ZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sDQo+ID4gKwkJCSAgICAiUFNSMiBzZWwgZmV0Y2gg bm90IGVuYWJsZWQsIGRpc2FibGVkIGJ5IHBhcmFtZXRlclxuIik7DQo+ID4gKwkJcmV0dXJuIGZh bHNlOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChjcnRjX3N0YXRlLT51YXBpLmFzeW5jX2Zs aXApIHsNCj4gPiArCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gPiArCQkJICAgICJQ U1IyIHNlbCBmZXRjaCBub3QgZW5hYmxlZCwgYXN5bmMgZmxpcCBlbmFibGVkXG4iKTsNCj4gPiAr CQlyZXR1cm4gZmFsc2U7DQo+ID4gKwl9DQo+IA0KPiBOb3Qgc3VwcG9ydGVkIGFueXdheS4NCj4g DQo+ID4gKw0KPiA+ICsJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBw bGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsNCj4gPiArCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkucm90 YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzApIHsNCj4gPiArCQkJZHJtX2RiZ19rbXMoJmRldl9w cml2LT5kcm0sDQo+ID4gKwkJCQkgICAgIlBTUjIgc2VsIGZldGNoIG5vdCBlbmFibGVkLCBwbGFu ZSByb3RhdGVkXG4iKTsNCj4gPiArCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJCX0NCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlyZXR1cm4gY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoID0g dHJ1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdf dmFsaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiAgCQkJCSAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gPiAgew0KPiA+IEBAIC02OTcsMjIgKzczNywx NyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLA0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgCX0NCj4gPiAgDQo+ID4gLQkv Kg0KPiA+IC0JICogU29tZSBwbGF0Zm9ybXMgbGFjayBQU1IyIEhXIHRyYWNraW5nIGFuZCBpbnN0 ZWFkIHJlcXVpcmUgbWFudWFsDQo+ID4gLQkgKiB0cmFja2luZyBieSBzb2Z0d2FyZS4gIEluIHRo aXMgY2FzZSwgdGhlIGRyaXZlciBpcyByZXF1aXJlZCB0byB0cmFjaw0KPiA+IC0JICogdGhlIGFy ZWFzIHRoYXQgbmVlZCB1cGRhdGVzIGFuZCBwcm9ncmFtIGhhcmR3YXJlIHRvIHNlbmQgc2VsZWN0 aXZlDQo+ID4gLQkgKiB1cGRhdGVzLg0KPiA+IC0JICoNCj4gPiAtCSAqIFNvIHVudGlsIHRoZSBz b2Z0d2FyZSB0cmFja2luZyBpcyBpbXBsZW1lbnRlZCwgUFNSMiBuZWVkcyB0byBiZQ0KPiA+IC0J ICogZGlzYWJsZWQgZm9yIHBsYXRmb3JtcyB3aXRob3V0IFBTUjIgSFcgdHJhY2tpbmcuDQo+ID4g LQkgKi8NCj4gPiAtCWlmICghSEFTX1BTUl9IV19UUkFDS0lORyhkZXZfcHJpdikpIHsNCj4gPiAt CQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gPiAtCQkJICAgICJObyBQU1IyIEhXIHRy YWNraW5nIGluIHRoZSBwbGF0Zm9ybVxuIik7DQo+ID4gLQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJ aWYgKEhBU19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikpIHsNCj4gPiArCQlpZiAoIWludGVsX3Bz cjJfc2VsX2ZldGNoX2NvbmZpZ192YWxpZChpbnRlbF9kcCwgY3J0Y19zdGF0ZSkgJiYNCj4gPiAr CQkgICAgIUhBU19QU1JfSFdfVFJBQ0tJTkcoZGV2X3ByaXYpKSB7DQo+ID4gKwkJCWRybV9kYmdf a21zKCZkZXZfcHJpdi0+ZHJtLA0KPiA+ICsJCQkJICAgICJQU1IyIG5vdCBlbmFibGVkLCBzZWxl Y3RpdmUgZmV0Y2ggbm90IHZhbGlkIGFuZCBubyBIVyB0cmFja2luZyBhdmFpbGFibGVcbiIpOw0K PiA+ICsJCQlyZXR1cm4gZmFsc2U7DQo+ID4gKwkJfQ0KPiA+ICAJfQ0KPiA+ICANCj4gPiAtCWlm IChjcnRjX2hkaXNwbGF5ID4gcHNyX21heF9oIHx8IGNydGNfdmRpc3BsYXkgPiBwc3JfbWF4X3Yp IHsNCj4gPiArCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoICYmDQo+ID4g KwkgICAgKGNydGNfaGRpc3BsYXkgPiBwc3JfbWF4X2ggfHwgY3J0Y192ZGlzcGxheSA+IHBzcl9t YXhfdikpIHsNCj4gPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwNCj4gPiAgCQkJICAg ICJQU1IyIG5vdCBlbmFibGVkLCByZXNvbHV0aW9uICVkeCVkID4gbWF4IHN1cHBvcnRlZCAlZHgl ZFxuIiwNCj4gPiAgCQkJICAgIGNydGNfaGRpc3BsYXksIGNydGNfdmRpc3BsYXksDQo+ID4gQEAg LTg2Myw2ICs4OTgsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiAgCQl2YWwgfD0gRVhJVExJTkVfRU5BQkxFOw0K PiA+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFWElUTElORShjcHVfdHJhbnNjb2Rlciks IHZhbCk7DQo+ID4gIAl9DQo+ID4gKw0KPiA+ICsJaWYgKEhBU19QU1JfSFdfVFJBQ0tJTkcoZGV2 X3ByaXYpKQ0KPiA+ICsJCWludGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEsIElH Tk9SRV9QU1IyX0hXX1RSQUNLSU5HLA0KPiA+ICsJCQkgICAgIGRldl9wcml2LT5wc3IucHNyMl9z ZWxfZmV0Y2hfZW5hYmxlZCA/DQo+ID4gKwkJCSAgICAgSUdOT1JFX1BTUjJfSFdfVFJBQ0tJTkcg OiAwKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9s b2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+IEBAIC04ODQsNyAr OTI0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ICAJLyogREM1L0RDNiByZXF1aXJlcyBhdCBsZWFz dCA2IGlkbGUgZnJhbWVzICovDQo+ID4gIAl2YWwgPSB1c2Vjc190b19qaWZmaWVzKGludGVsX2dl dF9mcmFtZV90aW1lX3VzKGNydGNfc3RhdGUpICogNik7DQo+ID4gIAlkZXZfcHJpdi0+cHNyLmRj M2NvX2V4aXRfZGVsYXkgPSB2YWw7DQo+ID4gLQ0KPiA+ICsJZGV2X3ByaXYtPnBzci5wc3IyX3Nl bF9mZXRjaF9lbmFibGVkID0gY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoOw0KPiA+ ICAJLyoNCj4gPiAgCSAqIElmIGEgUFNSIGVycm9yIGhhcHBlbmVkIGFuZCB0aGUgZHJpdmVyIGlz IHJlbG9hZGVkLCB0aGUgRURQX1BTUl9JSVINCj4gPiAgCSAqIHdpbGwgc3RpbGwga2VlcCB0aGUg ZXJyb3Igc2V0IGV2ZW4gYWZ0ZXIgdGhlIHJlc2V0IGRvbmUgaW4gdGhlDQo+ID4gQEAgLTEwODAs NiArMTEyMCwyNjUgQEAgc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ICAJCWludGVsX3Bzcl9leGl0KGRl dl9wcml2KTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxh bmVfc2VsX2ZldGNoKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsDQo+ID4gKwkJCQkJY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gKwkJCQkJY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkNCj4gPiArew0KPiA+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOw0K PiA+ICsJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsNCj4gPiArDQo+ID4gKwlpZiAoIUhB U19QU1IyX1NFTF9GRVRDSChkZXZfcHJpdikgfHwNCj4gPiArCSAgICAhcGxhbmVfc3RhdGUgfHwN Cj4gPiArCSAgICAhY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoKQ0KPiA+ICsJCXJl dHVybjsNCj4gPiArDQo+ID4gKwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VM X0ZFVENIX0NUTChwaXBlLCBwbGFuZS0+aWQpLA0KPiA+ICsJCQkgIHBsYW5lX3N0YXRlLT5wc3Iy X3NlbF9mZXRjaC5jdGwpOw0KPiA+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+cHNyMl9zZWxfZmV0Y2gu Y3RsIHx8IHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpDQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsN Cj4gPiArCWludGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBQTEFORV9TRUxfRkVUQ0hfUE9TKHBp cGUsIHBsYW5lLT5pZCksDQo+ID4gKwkJCSAgcGxhbmVfc3RhdGUtPnBzcjJfc2VsX2ZldGNoLnBv cyk7DQo+ID4gKwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VMX0ZFVENIX09G RlNFVChwaXBlLCBwbGFuZS0+aWQpLA0KPiA+ICsJCQkgIHBsYW5lX3N0YXRlLT5wc3IyX3NlbF9m ZXRjaC5vZmZzZXQpOw0KPiA+ICsJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYsIFBMQU5FX1NF TF9GRVRDSF9TSVpFKHBpcGUsIHBsYW5lLT5pZCksDQo+ID4gKwkJCSAgcGxhbmVfc3RhdGUtPnBz cjJfc2VsX2ZldGNoLnNpemUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGludGVsX3BzcjJf cHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7DQo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsNCj4gPiArCXN0cnVj dCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2LT5wc3I7DQo+ID4gKw0KPiA+ICsJaWYgKCFIQVNf UFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpIHx8DQo+ID4gKwkgICAgIWNydGNfc3RhdGUtPmVuYWJs ZV9wc3IyX3NlbF9mZXRjaCkNCj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJaW50ZWxfZGVf d3JpdGUoZGV2X3ByaXYsIFBTUjJfTUFOX1RSS19DVEwocHNyLT50cmFuc2NvZGVyKSwNCj4gPiAr CQkgICAgICAgY3J0Y19zdGF0ZS0+cHNyMl9zd19tYW5fdHJhY2tfY3RsKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyMl9wbGFuZV9zZWxfZmV0Y2hfY2FsYyhzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLA0KPiA+ICsJCQkJCSAgICBzdHJ1Y3Qg ZHJtX3JlY3QgKmNsaXApDQo+ID4gK3sNCj4gPiArCWludCBjb2xvcl9wbGFuZSA9IHBsYW5lX3N0 YXRlLT5wbGFuYXJfbGlua2VkX3BsYW5lICYmICFwbGFuZV9zdGF0ZS0+cGxhbmFyX3NsYXZlOw0K PiA+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT51YXBpLnBsYW5lKTsNCj4gPiArCXUzMiB2YWw7DQo+ID4gKw0KPiA+ICsJaWYgKHBsYW5l LT5pZCA9PSBQTEFORV9DVVJTT1IpDQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsNCj4gPiArCXZhbCA9 IChwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVdLnkgKyBjbGlwLT55MSkgPDwg MTY7DQo+ID4gKwl2YWwgfD0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS54 Ow0KPiA+ICsJcGxhbmVfc3RhdGUtPnBzcjJfc2VsX2ZldGNoLm9mZnNldCA9IHZhbDsNCj4gPiAr DQo+ID4gKwl2YWwgPSAoY2xpcC0+eTEgKyBwbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX3kpIDw8IDE2 Ow0KPiA+ICsJdmFsIHw9IHBsYW5lX3N0YXRlLT51YXBpLmNydGNfeDsNCj4gPiArCXBsYW5lX3N0 YXRlLT5wc3IyX3NlbF9mZXRjaC5wb3MgPSB2YWw7DQo+ID4gKw0KPiA+ICsJLyogU2l6ZXMgYXJl IDAgYmFzZWQgKi8NCj4gPiArCXZhbCA9IChjbGlwLT55MiAtIGNsaXAtPnkxIC0gMSkgPDwgMTY7 DQo+ID4gKwl2YWwgfD0gKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+ IDE2KSAtIDE7DQo+ID4gKwlwbGFuZV9zdGF0ZS0+cHNyMl9zZWxfZmV0Y2guc2l6ZSA9IHZhbDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyMl90cmFuc19tYW5fdHJr X2N0bF9jYWxjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiA+ICsJCQkJ CSAgICAgIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCwNCj4gPiArCQkJCQkgICAgICBib29sIGZ1bGxf dXBkYXRlKQ0KPiA+ICt7DQo+ID4gKwl1MzIgdmFsID0gUFNSMl9NQU5fVFJLX0NUTF9FTkFCTEU7 DQo+ID4gKw0KPiA+ICsJaWYgKGZ1bGxfdXBkYXRlKSB7DQo+ID4gKwkJdmFsIHw9IFBTUjJfTUFO X1RSS19DVExfU0lOR0xFX0ZVTExfRlJBTUU7DQo+ID4gKwkJZ290byBleGl0Ow0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCWlmIChjbGlwLT55MSA9PSAtMSkNCj4gPiArCQlnb3RvIGV4aXQ7DQo+ID4g Kw0KPiA+ICsJdmFsIHw9IFBTUjJfTUFOX1RSS19DVExfUEFSVElBTF9GUkFNRV9VUERBVEU7DQo+ ID4gKwl2YWwgfD0gUFNSMl9NQU5fVFJLX0NUTF9SRUdJT05fU1RBUlRfQUREUihjbGlwLT55MSAv IDQgKyAxKTsNCj4gPiArCXZhbCB8PSBQU1IyX01BTl9UUktfQ1RMX1JFR0lPTl9FTkRfQUREUihE SVZfUk9VTkRfVVAoY2xpcC0+eTIsIDQpICsgMSk7DQo+ID4gK2V4aXQ6DQo+ID4gKwljcnRjX3N0 YXRlLT5wc3IyX3N3X21hbl90cmFja19jdGwgPSB2YWw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyB2b2lkIGludGVsX3BzcjJfcGxhbmVfc2VsX2ZldGNoX2N0bF9jYWxjKHN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUsDQo+ID4gKwkJCQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsDQo+ID4gKwkJCQkJCWJvb2wgZW5hYmxlKQ0KPiA+ICt7DQo+ID4gKwlpZiAoIWVu YWJsZSkNCj4gPiArCQlwbGFuZV9zdGF0ZS0+cHNyMl9zZWxfZmV0Y2guY3RsID0gMDsNCj4gPiAr CWVsc2UgaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9DVVJTT1IpDQo+ID4gKwkJcGxhbmVfc3RhdGUt PnBzcjJfc2VsX2ZldGNoLmN0bCA9IHBsYW5lLT5jdXJzb3IuY250bDsNCj4gPiArCWVsc2UNCj4g PiArCQlwbGFuZV9zdGF0ZS0+cHNyMl9zZWxfZmV0Y2guY3RsID0gcGxhbmVfc3RhdGUtPmN0bDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY2xpcF91cGRhdGUoc3RydWN0IGRybV9y ZWN0ICpvdmVybGFwX2RhbWFnZV9hcmVhLA0KPiA+ICsJCQlzdHJ1Y3QgZHJtX3JlY3QgKmRhbWFn ZV9hcmVhKQ0KPiA+ICt7DQo+ID4gKwlpZiAob3ZlcmxhcF9kYW1hZ2VfYXJlYS0+eTEgPT0gLTEp IHsNCj4gPiArCQlvdmVybGFwX2RhbWFnZV9hcmVhLT55MSA9IGRhbWFnZV9hcmVhLT55MTsNCj4g PiArCQlvdmVybGFwX2RhbWFnZV9hcmVhLT55MiA9IGRhbWFnZV9hcmVhLT55MjsNCj4gPiArCQly ZXR1cm47DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGRhbWFnZV9hcmVhLT55MSA8IG92ZXJs YXBfZGFtYWdlX2FyZWEtPnkxKQ0KPiA+ICsJCW92ZXJsYXBfZGFtYWdlX2FyZWEtPnkxID0gZGFt YWdlX2FyZWEtPnkxOw0KPiA+ICsNCj4gPiArCWlmIChkYW1hZ2VfYXJlYS0+eTIgPiBvdmVybGFw X2RhbWFnZV9hcmVhLT55MikNCj4gPiArCQlvdmVybGFwX2RhbWFnZV9hcmVhLT55MiA9IGRhbWFn ZV9hcmVhLT55MjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogVXBkYXRlIHBsYW5lIGRhbWFnZSBh cmVhIGlmIHBsYW5lcyBhYm92ZSBtb3ZlZCBvciBoYXZlIGFscGhhICovDQo+ID4gK3N0YXRpYyB2 b2lkIGludGVsX3BzcjJfcGlwZV9kaXJ0eV9hcmVhc19zZXQoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSwNCj4gPiArCQkJCQkgICAgc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwNCj4gPiArCQkJCQkgICAgY29uc3Qgc3RydWN0IGRybV9yZWN0ICpwaXBlX2RpcnR5X2FyZWFz LA0KPiA+ICsJCQkJCSAgICBzdHJ1Y3QgZHJtX3JlY3QgKnBsYW5lX2NsaXApDQo+ID4gK3sNCj4g PiArCWVudW0gcGxhbmVfaWQgaTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSBQTEFORV9DVVJTT1I7 IGkgPiBwbGFuZS0+aWQ7IGktLSkgew0KPiA+ICsJCWludCBqOw0KPiA+ICsNCj4gPiArCQlmb3Ig KGogPSAwOyBqIDwgMjsgaisrKSB7DQo+ID4gKwkJCXN0cnVjdCBkcm1fcmVjdCByID0gcGlwZV9k aXJ0eV9hcmVhc1tpICogMiArIGpdOw0KPiA+ICsNCj4gPiArCQkJaWYgKCFkcm1fcmVjdF93aWR0 aCgmcikpDQo+ID4gKwkJCQljb250aW51ZTsNCj4gPiArCQkJaWYgKCFkcm1fcmVjdF9pbnRlcnNl Y3QoJnIsICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4g Kw0KPiA+ICsJCQlyLnkxIC09IHBsYW5lX3N0YXRlLT51YXBpLmNydGNfeTsNCj4gPiArCQkJci55 MiAtPSBwbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX3k7DQo+ID4gKwkJCWNsaXBfdXBkYXRlKHBsYW5l X2NsaXAsICZyKTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQg aW50ZWxfcHNyMl9zZWxfZmV0Y2hfdXBkYXRlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlLA0KPiA+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQ0KPiA+ICt7DQo+ID4gKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfbmV3 X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOw0KPiA+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpuZXdfcGxhbmVfc3RhdGUsICpvbGRfcGxhbmVfc3RhdGU7DQo+ID4gKwlzdHJ1Y3QgZHJtX3Jl Y3QgcGlwZV9kaXJ0eV9hcmVhc1tJOTE1X01BWF9QTEFORVMgKiAyXSA9IHt9Ow0KPiA+ICsJc3Ry dWN0IGRybV9yZWN0IHBpcGVfY2xpcCA9IHsgLnkxID0gLTEgfTsNCj4gPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmU7DQo+ID4gKwlib29sIGZ1bGxfdXBkYXRlID0gZmFsc2U7DQo+ID4gKwlp bnQgaTsNCj4gPiArDQo+ID4gKwlpZiAoIWNydGNfc3RhdGUtPmVuYWJsZV9wc3IyX3NlbF9mZXRj aCkNCj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAqIExvYWQgYWxsIHRo ZSBwaXBlcyBhcmVhcyB3aGVyZSB0aGVyZSBpcyBhIHBsYW5lIHdpdGggYWxwaGEgb3IgYSBwbGFu ZQ0KPiA+ICsJICogdGhhdCBtb3ZlZCBvciBwbGFuZSB0aGF0IHRoZSB2aXNpYmlsaXR5IGNoYW5n ZWQgaW4gdGhvc2UNCj4gPiArCSAqIGNhc2VzIHBsYW5lcyBiZWxsb3cgaXQgd2lsbCBuZWVkIHRv IGJlIGZldGNoZWQgaW4gdGhvc2UgaW50ZXJzZWN0aW9uDQo+ID4gKwkgKiBhcmVhcyBldmVuIGlm IHRoZXkgYXJlIG5vdCBkYW1hZ2VkIGluIHRob3NlIGFyZWFzLg0KPiA+ICsJICovDQo+ID4gKwlm b3JfZWFjaF9vbGRuZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxh bmVfc3RhdGUsDQo+ID4gKwkJCQkJICAgICBuZXdfcGxhbmVfc3RhdGUsIGkpIHsNCj4gPiArCQli b29sIGFscGhhLCBmbGlwLCBkaXJ0eTsNCj4gPiArDQo+ID4gKwkJaWYgKG5ld19wbGFuZV9zdGF0 ZS0+dWFwaS5jcnRjICE9IGNydGNfc3RhdGUtPnVhcGkuY3J0YykNCj4gPiArCQkJY29udGludWU7 DQo+ID4gKw0KPiA+ICsJCWFscGhhID0gbmV3X3BsYW5lX3N0YXRlLT51YXBpLmFscGhhICE9IFUx Nl9NQVg7DQo+ID4gKwkJYWxwaGEgfD0gb2xkX3BsYW5lX3N0YXRlLT51YXBpLmFscGhhICE9IFUx Nl9NQVg7DQo+ID4gKwkJZmxpcCA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mYiAhPSBvbGRfcGxh bmVfc3RhdGUtPnVhcGkuZmI7DQo+ID4gKwkJZGlydHkgPSBhbHBoYSAmJiBmbGlwOw0KPiA+ICsJ CWRpcnR5IHw9ICFkcm1fcmVjdF9lcXVhbHMoJm5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QsDQo+ ID4gKwkJCQkJICAmb2xkX3BsYW5lX3N0YXRlLT51YXBpLmRzdCk7DQo+ID4gKwkJZGlydHkgfD0g bmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgIT0NCj4gPiArCQkJIG9sZF9wbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlOw0KPiA+ICsJCWlmICghZGlydHkpDQo+ID4gKwkJCWNvbnRpbnVlOw0K PiA+ICsNCj4gPiArCQlpZiAob2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpDQo+ID4gKwkJ CXBpcGVfZGlydHlfYXJlYXNbcGxhbmUtPmlkICogMl0gPSBvbGRfcGxhbmVfc3RhdGUtPnVhcGku ZHN0Ow0KPiA+ICsJCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkNCj4gPiArCQkJ cGlwZV9kaXJ0eV9hcmVhc1twbGFuZS0+aWQgKiAyICsgMV0gPSBuZXdfcGxhbmVfc3RhdGUtPnVh cGkuZHN0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBJdGVyYXRlIG92ZXIg YWxsIHBsYW5lcywgY29tcHV0ZSB0aGUgZGFtYWdlZCBjbGlwIGFyZWEgYWxzbyBpbmNsdWRpbmcN Cj4gPiArCSAqIHRoZSBwaXBlX2RpcnR5X2FyZWFzLCBjb21wdXRlIHBsYW5lIHJlZ2lzdGVycyBh bmQgdXBkYXRlIHBpcGUgZGFtYWdlZA0KPiA+ICsJICogYXJlYQ0KPiA+ICsJICovDQo+ID4gKwlm b3JfZWFjaF9vbGRuZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxh bmVfc3RhdGUsDQo+ID4gKwkJCQkJICAgICBuZXdfcGxhbmVfc3RhdGUsIGkpIHsNCj4gPiArCQlz dHJ1Y3QgZHJtX3JlY3QgcGxhbmVfY2xpcCA9IHsgLnkxID0gLTEgfTsNCj4gPiArCQlzdHJ1Y3Qg ZHJtX21vZGVfcmVjdCAqY2xpcHM7DQo+ID4gKwkJdTMyIG51bV9jbGlwczsNCj4gPiArCQlpbnQg ajsNCj4gPiArDQo+ID4gKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjICE9IGNydGNf c3RhdGUtPnVhcGkuY3J0YykNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCS8qDQo+ ID4gKwkJICogVE9ETzogTm90IGNsZWFyIGhvdyB0byBoYW5kbGUgcGxhbmVzIHdpdGggbmVnYXRp dmUgcG9zaXRpb24sDQo+ID4gKwkJICogYWxzbyBwbGFuZXMgYXJlIG5vdCB1cGRhdGVkIGlmIHRo ZXkgaGF2ZSBhIG5lZ2F0aXZlIFgNCj4gPiArCQkgKiBwb3NpdGlvbiBzbyBmb3Igbm93IGRvaW5n IGEgZnVsbCB1cGRhdGUgaW4gdGhpcyBjYXNlcw0KPiA+ICsJCSAqLw0KPiA+ICsJCWlmIChuZXdf cGxhbmVfc3RhdGUtPnVhcGkuY3J0Y195IDwgMCB8fA0KPiA+ICsJCSAgICBuZXdfcGxhbmVfc3Rh dGUtPnVhcGkuY3J0Y194IDwgMCkgew0KPiA+ICsJCQlmdWxsX3VwZGF0ZSA9IHRydWU7DQo+ID4g KwkJCWJyZWFrOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJaW50ZWxfcHNyMl9wbGFuZV9zZWxf ZmV0Y2hfY3RsX2NhbGMocGxhbmUsIG5ld19wbGFuZV9zdGF0ZSwNCj4gPiArCQkJCQkJICAgIG5l d19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKTsNCj4gPiArCQlpZiAoIW5ld19wbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJY2xpcHMg PSBkcm1fcGxhbmVfZ2V0X2RhbWFnZV9jbGlwcygmbmV3X3BsYW5lX3N0YXRlLT51YXBpKTsNCj4g PiArCQludW1fY2xpcHMgPSBkcm1fcGxhbmVfZ2V0X2RhbWFnZV9jbGlwc19jb3VudCgmbmV3X3Bs YW5lX3N0YXRlLT51YXBpKTsNCj4gPiArDQo+ID4gKwkJLyoNCj4gPiArCQkgKiBJZiBwbGFuZSBt b3ZlZCBtYXJrIHRoZSB3aG9sZSBwbGFuZSBhcmVhIGFzIGRhbWFnZWQgc28gaXQNCj4gPiArCQkg KiBjYW4gYmUgY29tcGxldGUgZHJhdyBpbiB0aGUgbmV3IHBvc2l0aW9uDQo+ID4gKwkJICovDQo+ ID4gKwkJaWYgKCFkcm1fcmVjdF9lcXVhbHMoJm5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QsDQo+ ID4gKwkJCQkgICAgICZvbGRfcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSkgew0KPiA+ICsJCQludW1f Y2xpcHMgPSAwOw0KPiA+ICsJCQlwbGFuZV9jbGlwLnkxID0gbmV3X3BsYW5lX3N0YXRlLT51YXBp LnNyYy55MSA+PiAxNjsNCj4gPiArCQkJcGxhbmVfY2xpcC55MiA9IG5ld19wbGFuZV9zdGF0ZS0+ dWFwaS5zcmMueTIgPj4gMTY7DQo+ID4gKwkJfSBlbHNlIGlmICghbnVtX2NsaXBzKSB7DQo+ID4g KwkJCS8qDQo+ID4gKwkJCSAqIElmIHBsYW5lIGRvbid0IGhhdmUgZGFtYWdlIGFyZWFzIGJ1dCB0 aGUgZnJhbWVidWZmZXINCj4gPiArCQkJICogY2hhbmdlZCBtYXJrIHRoZSB3aG9sZSBwbGFuZSBh cyBkYW1hZ2VkDQo+ID4gKwkJCSAqLw0KPiA+ICsJCQlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBp LmZiID09IG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5mYikNCj4gPiArCQkJCWNvbnRpbnVlOw0KPiA+ ICsNCj4gPiArCQkJcGxhbmVfY2xpcC55MSA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEg Pj4gMTY7DQo+ID4gKwkJCXBsYW5lX2NsaXAueTIgPSBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3Jj LnkyID4+IDE2Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJZm9yIChqID0gMDsgaiA8IG51bV9j bGlwczsgaisrKSB7DQo+ID4gKwkJCXN0cnVjdCBkcm1fcmVjdCBkYW1hZ2VfYXJlYTsNCj4gPiAr DQo+ID4gKwkJCWRhbWFnZV9hcmVhLngxID0gY2xpcHNbal0ueDE7DQo+ID4gKwkJCWRhbWFnZV9h cmVhLngyID0gY2xpcHNbal0ueDI7DQo+ID4gKwkJCWRhbWFnZV9hcmVhLnkxID0gY2xpcHNbal0u eTE7DQo+ID4gKwkJCWRhbWFnZV9hcmVhLnkyID0gY2xpcHNbal0ueTI7DQo+ID4gKwkJCWNsaXBf dXBkYXRlKCZwbGFuZV9jbGlwLCAmZGFtYWdlX2FyZWEpOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4g KwkJaW50ZWxfcHNyMl9waXBlX2RpcnR5X2FyZWFzX3NldChuZXdfcGxhbmVfc3RhdGUsIHBsYW5l LA0KPiA+ICsJCQkJCQlwaXBlX2RpcnR5X2FyZWFzLCAmcGxhbmVfY2xpcCk7DQo+ID4gKwkJaW50 ZWxfcHNyMl9wbGFuZV9zZWxfZmV0Y2hfY2FsYyhuZXdfcGxhbmVfc3RhdGUsICZwbGFuZV9jbGlw KTsNCj4gPiArDQo+ID4gKwkJcGxhbmVfY2xpcC55MSArPSBuZXdfcGxhbmVfc3RhdGUtPnVhcGku Y3J0Y195Ow0KPiA+ICsJCXBsYW5lX2NsaXAueTIgKz0gbmV3X3BsYW5lX3N0YXRlLT51YXBpLmNy dGNfeTsNCj4gPiArCQljbGlwX3VwZGF0ZSgmcGlwZV9jbGlwLCAmcGxhbmVfY2xpcCk7DQo+ID4g Kwl9DQo+IA0KPiBUaGlzIHdob2xlIHRoaW5nIHNlZW1zIHJhdGhlciBjb252b2x1dGVkLiBBbHNv IHVzaW5nIGxvdHMgb2YgdWFwaSBzdGF0ZQ0KPiBpbiBwbGFjZXMgd2hlcmUgSSBkb24ndCBleHBl Y3QgdG8gc2VlIGFueS4NCg0KTm90IHN1cmUgZnJvbSB3aGVyZSBJIHNob3VsZCBnZXQgdGhpcyBp bmZvcm1hdGlvbiB0aGVuLCBpbnRlbF9wbGFuZV9zdGF0ZSBkb24ndCBoYXZlIGl0Lg0KDQo+IA0K PiBJIHdvdWxkIHN1Z2dlc3QgdGhlIGNvcnJlY3Qgd2F5IHdvdWxkIGJlIHNvbWV0aGluZyBsaWtl Og0KPiAxKSBmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZSgpDQo+IAlody5kYW1hZ2UgPSB0cmFuc2xh dGVfdG9fc29tZV9od19jb29yZF9zcGFjZSh1bmlvbih1YXBpLmRhbWFnZXMpKQ0KPiAJb3IganVz dCB1c2UgdGhlIGZ1bGwgcGxhbmUgc2l6ZSBpZiB3ZSBoYXZlIHNjYWxpbmcgaSBndWVzcw0KDQo5 OSUgb2YgdGhlIHRpbWUgdGhlIGNvb3JkaW5hdGVzIHVzZWQgYXJlIGJhc2VkIG9uIHBpcGUgY29v cmQgc3BhY2UsIG9ubHkgdG8gY2FsY3VsYXRlIHRoZSBwbGFuZSBvdmVybGFwcGluZyBkYW1hZ2Vk IGFyZWEgaXMgdXNlZCBwbGFuZSBjb29yZCBzcGFjZS4NCg0KPiANCj4gMikgbmVlZCB0byBhZGQg YWxsIGFmZmVjdGVkIHBsYW5lcyB0byB0aGUgc3RhdGUgYW5kIHNldCB0aGUgYXBwcm9wcmlhdGUN Cj4gICAgYml0bWFzaywgd2hpY2ggbWF5IG1lYW4gd2Ugd2FudCB0byB0cmFjayB0aGUgcGxhbmVz JyBwb3NpdGlvbnMgaW4gdGhlDQo+ICAgIGNydGMgc3RhdGUuIEkgdGhpbmsgYXRtIHdlIG9ubHkg aGF2ZSBpdCBpbiB0aGUgcGxhbmUgc3RhdGUNCg0KVGhpcyBsb29rcyBhICJvciIgdG8gbWUsIGhh dmUgYWxsIHRoZSBwbGFuZXMgYWRkZWQgdG8gdGhlIHN0YXRlIHdoZW4gcHNyMiBzZWwgZmV0Y2gg aXMgZW5hYmxlZCBvciBhZGQgdHJhY2sgYWxsIHRoZSBwbGFuZXMgcG9zaXRpb24gaW4gcGlwZS4N Cg0KQWx0aG91Z2ggdGhlIHNlY29uZCBvbmUgd291bGQgYXZvaWQgdXMgdG8gZG8gcGxhbmUgY2Fs Y3VsYXRpb25zIGFuZCBwbGFuZSByZWdpc3RlciBzb21ldGltZXMsIGluIHNvbWUgY2FzZXMgd2hl cmUgYSBwbGFuZSBhYm92ZSBhIG5vbi1tb2RpZmllZCBwbGFuZQ0KbW92ZXMgdGhlIG5vbi1tb2Rp ZmllZCBwbGFuZSBiZWxsb3cgd2lsbCBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBzdGF0ZSBzbyB0 aGUgcGxhbmUgc2VsX2ZldGNoIHJlZ2lzdGVycyBhcmUgd3JpdHRlbi4NCldlIGNvdWxkIGdvIHdp dGggdGhlIGVhc3kgb25lKGFkZCBhbGwgcGxhbmVzIHRvIHRoZSBzdGF0ZSkgYW5kIHRoZW4gbW92 ZSB0byB0aGUgc2Vjb25kIG9uZSBsYXR0ZXIuDQoNCj4gDQo+IDMpIHRyYW5zbGF0ZSB0aGUgZGFt YWdlIGZ1cnRoZXIgaW50byB0aGUgZmluYWwgcGxhbmUgc3JjIGNvb3JkaW5hdGUNCj4gICAgc3Bh Y2UuIER1bm5vIGlmIHdlIGhhdmUgZW5vdWdoIHN0YXRlIGFyb3VuZCBzdGlsbCB0byBkbyBpdCBj bGVhbmx5Lg0KPiAgICBJIHdhcyB0aGlua2luZyBtYXliZSBpdCBjb3VsZCBiZSBkb25lIGFsb25n c2lkZSBhbGwgdGhlIG90aGVyIHBsYW5lDQo+ICAgIHN1cmZhY2UgY2FsY3VsYXRpb25zLCBidXQg dGhlcmUgbWlnaHQgYmUgYSBjaGlja2VuIHZzLiBlZ2cgc2l0dWF0aW9uDQo+ICAgIGhlcmUgc2lu Y2Ugd2UgcHJvYmFibHkgd2FudCB0byBkbyB0aGUgcGxhbmUgY2hlY2sgc3R1ZmYgYmVmb3JlIGRv aW5nDQo+ICAgIHN0ZXAgMSwgYnV0IHBsYW5lIGNoZWNrIGlzIGFsc28gd2hlcmUgd2UgZG8gdGhl IHN1cmZhY2UgY2FsY3VsYXRpb25zLg0KPiAgICBEdW5ubyBpZiB3ZSBtYXkganVzdCB3YW50IHRv IHNwbGl0IHRoZSBwbGFuZSBjaGVjayBpbnRvIHR3byBzdGFnZXMNCg0KQXMgcmlnaHQgbm93IGl0 IGRlcGVuZHMgbW9zdGx5IGluIHVhcGkgdGhpcyBjb3VsZCBiZSBtb3ZlZCB0byB0aGUgY2hlY2sg cGhhc2UsIGRpZCBub3QgbGVmdCB0aGVyZSBiZWNhdXNlIHRoaXMgd2lsbCBuZXZlciBoYXZlIGEg ZXJyb3Igb3IgYSBjb25mbGljdA0KdGhhdCB3aWxsIGNhdXNlIHVzIHRvIHJlamVjdCB0aGUgc3Rh dGUuDQoNCj4gDQo+IFRvIGtlZXAgdGhpbmdzIHNpbXBsZSBJIGd1ZXNzIHdoYXQgSSdkIHN1Z2dl c3QgaXMgdG8gZm9yZ2V0IGFib3V0IHRoZQ0KPiBkYW1hZ2Ugc3R1ZmYgaW4gdGhlIGZpcnN0IHZl cnNpb24gb2YgdGhlIHNlcmllcyBhbmQganVzdCBkbyBmdWxsDQo+IHBsYW5lIHVwZGF0ZXMuIFRo YXQgd2F5IHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc28gbWFueSBjb29yZGluYXRlDQo+ IHNwYWNlIHRyYW5zZm9ybWF0aW9ucy4NCg0KRG8gdGhhdCB3b3VsZCBvbmx5IHNhdmUgdXMgdGhl IGZvciBiZWxsb3cgYW5kIHRoZSBpZiB0byBjaGVjayBpZiBwbGFuZSBtb3ZlZDoNCg0KZm9yIChq ID0gMDsgaiA8IG51bV9jbGlwczsgaisrKSB7DQoJc3RydWN0IGRybV9yZWN0IGRhbWFnZV9hcmVh Ow0KDQoJZGFtYWdlX2FyZWEueDEgPSBjbGlwc1tqXS54MTsNCglkYW1hZ2VfYXJlYS54MiA9IGNs aXBzW2pdLngyOw0KCWRhbWFnZV9hcmVhLnkxID0gY2xpcHNbal0ueTE7DQoJZGFtYWdlX2FyZWEu eTIgPSBjbGlwc1tqXS55MjsNCgljbGlwX3VwZGF0ZSgmcGxhbmVfY2xpcCwgJmRhbWFnZV9hcmVh KTsNCn0NCkFueXdheXMgdGhhbmtzIGZvciB0aGUgaW5pdGlhbCBmZWVkYmFjay4NCg0KPiANCj4g PiArDQo+ID4gKwlpbnRlbF9wc3IyX3RyYW5zX21hbl90cmtfY3RsX2NhbGMoY3J0Y19zdGF0ZSwg JnBpcGVfY2xpcCwgZnVsbF91cGRhdGUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAvKioNCj4gPiAg ICogaW50ZWxfcHNyX3VwZGF0ZSAtIFVwZGF0ZSBQU1Igc3RhdGUNCj4gPiAgICogQGludGVsX2Rw OiBJbnRlbCBEUA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Bzci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaA0K PiA+IGluZGV4IGI0NTE1MTg2ZDVmNC4uZDgwYmQwZTQ2YjIxIDEwMDY0NA0KPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmgNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oDQo+ID4gQEAgLTEzLDYgKzEzLDEwIEBA IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlOw0KPiA+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZTsNCj4gPiAgc3RydWN0IGludGVsX2NydGNfc3RhdGU7DQo+ID4gIHN0cnVjdCBpbnRlbF9kcDsN Cj4gPiArc3RydWN0IGludGVsX2NydGM7DQo+ID4gK3N0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGU7 DQo+ID4gK3N0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZTsNCj4gPiArc3RydWN0IGludGVsX3BsYW5l Ow0KPiA+ICANCj4gPiAgI2RlZmluZSBDQU5fUFNSKGRldl9wcml2KSAoSEFTX1BTUihkZXZfcHJp dikgJiYgZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQpDQo+ID4gIHZvaWQgaW50ZWxfcHNyX2lu aXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsNCj4gPiBAQCAtNDMsNSArNDcsMTEg QEAgdm9pZCBpbnRlbF9wc3JfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsDQo+ID4gIAkJCSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX3N0YXRl LA0KPiA+ICAJCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19zdGF0ZSk7DQo+ ID4gIHZvaWQgaW50ZWxfcHNyX3NldF9mb3JjZV9tb2RlX2NoYW5nZWQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCk7DQo+ID4gK3ZvaWQgaW50ZWxfcHNyMl9zZWxfZmV0Y2hfdXBkYXRlKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiA+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKTsNCj4gPiArdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxhbmVfc2VsX2ZldGNoKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsDQo+ID4gKwkJCQkJY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ID4gKwkJCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSk7DQo+ID4gK3ZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5z X21hbl90cmtfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsN Cj4gPiAgDQo+ID4gICNlbmRpZiAvKiBfX0lOVEVMX1BTUl9IX18gKi8NCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMNCj4gPiBpbmRleCA4YmUwNmNiMjU5 OTkuLmFmZWRlMzcyYWMwNSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Nwcml0ZS5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zcHJpdGUuYw0KPiA+IEBAIC02OTAsNiArNjkwLDggQEAgc2tsX3Byb2dyYW1f cGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwNCj4gPiAgCQlpbnRlbF9kZV93cml0ZV9m dyhkZXZfcHJpdiwgUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZV9pZCksDQo+ID4gIAkJCQkg IChwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ueSA8PCAxNikgfCBwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbMV0ueCk7DQo+ID4gIA0KPiA+ICsJaW50ZWxfcHNyMl9wcm9ncmFtX3BsYW5lX3Nl bF9mZXRjaChwbGFuZSwgY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOw0KPiA+ICsNCj4gPiAgCS8q DQo+ID4gIAkgKiBUaGUgY29udHJvbCByZWdpc3RlciBzZWxmLWFybXMgaWYgdGhlIHBsYW5lIHdh cyBwcmV2aW91c2x5DQo+ID4gIAkgKiBkaXNhYmxlZC4gVHJ5IHRvIG1ha2UgdGhlIHBsYW5lIGVu YWJsZSBhdG9taWMgYnkgd3JpdGluZw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+IGlu ZGV4IDE0NmJmZDI3NmNlNy4uYWU3ZWZjOTIyMzkzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oDQo+ID4gQEAgLTUwMyw2ICs1MDMsNyBAQCBzdHJ1Y3QgaTkxNV9wc3Igew0KPiA+ ICAJYm9vbCBsaW5rX3N0YW5kYnk7DQo+ID4gIAlib29sIGNvbG9yaW1ldHJ5X3N1cHBvcnQ7DQo+ ID4gIAlib29sIHBzcjJfZW5hYmxlZDsNCj4gPiArCWJvb2wgcHNyMl9zZWxfZmV0Y2hfZW5hYmxl ZDsNCj4gPiAgCXU4IHNpbmtfc3luY19sYXRlbmN5Ow0KPiA+ICAJa3RpbWVfdCBsYXN0X2VudHJ5 X2F0dGVtcHQ7DQo+ID4gIAlrdGltZV90IGxhc3RfZXhpdDsNCj4gPiBAQCAtMTYzNCw2ICsxNjM1 LDcgQEAgSVNfU1VCUExBVEZPUk0oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs DQo+ID4gICNkZWZpbmUgSEFTX1BTUihkZXZfcHJpdikJCSAoSU5URUxfSU5GTyhkZXZfcHJpdikt PmRpc3BsYXkuaGFzX3BzcikNCj4gPiAgI2RlZmluZSBIQVNfUFNSX0hXX1RSQUNLSU5HKGRldl9w cml2KSBcDQo+ID4gIAkoSU5URUxfSU5GTyhkZXZfcHJpdiktPmRpc3BsYXkuaGFzX3Bzcl9od190 cmFja2luZykNCj4gPiArI2RlZmluZSBIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpCSAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMikNCj4gPiAgI2RlZmluZSBIQVNfVFJBTlNDT0RFUihkZXZf cHJpdiwgdHJhbnMpCSAoKElOVEVMX0lORk8oZGV2X3ByaXYpLT5jcHVfdHJhbnNjb2Rlcl9tYXNr ICYgQklUKHRyYW5zKSkgIT0gMCkNCj4gPiAgDQo+ID4gICNkZWZpbmUgSEFTX1JDNihkZXZfcHJp dikJCSAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmhhc19yYzYpDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BhcmFtcy5jDQo+ID4gaW5kZXggYWRkMDBlYzFmNzg3Li4zMDA1NDUxYzExOTQgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYw0KPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMNCj4gPiBAQCAtODgsNiArODgsMTEg QEAgaTkxNV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX3BzciwgaW50LCAwNjAwLA0KPiA+ICAJ IigwPWRpc2FibGVkLCAxPWVuYWJsZWQpICINCj4gPiAgCSJEZWZhdWx0OiAtMSAodXNlIHBlci1j aGlwIGRlZmF1bHQpIik7DQo+ID4gIA0KPiA+ICtpOTE1X3BhcmFtX25hbWVkX3Vuc2FmZShlbmFi bGVfcHNyMl9zZWxfZmV0Y2gsIGludCwgMDQwMCwNCj4gPiArCSJFbmFibGUgUFNSMiBzZWxlY3Rp dmUgZmV0Y2ggIg0KPiA+ICsJIigwPWRpc2FibGVkLCAxPWVuYWJsZWQpICINCj4gPiArCSJEZWZh dWx0OiAwIik7DQo+ID4gKw0KPiA+ICBpOTE1X3BhcmFtX25hbWVkX3Vuc2FmZShmb3JjZV9wcm9i ZSwgY2hhcnAsIDA0MDAsDQo+ID4gIAkiRm9yY2UgcHJvYmUgdGhlIGRyaXZlciBmb3Igc3BlY2lm aWVkIGRldmljZXMuICINCj4gPiAgCSJTZWUgQ09ORklHX0RSTV9JOTE1X0ZPUkNFX1BST0JFIGZv ciBkZXRhaWxzLiIpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BhcmFtcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaA0KPiA+IGluZGV4 IDQ1MzIzNzMyZjA5OS4uNWEwYjE2OTIzMDE2IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BhcmFtcy5oDQo+ID4gQEAgLTUzLDYgKzUzLDcgQEAgc3RydWN0IGRybV9wcmludGVyOw0K PiA+ICAJcGFyYW0oaW50LCBlbmFibGVfZGMsIC0xLCAwNDAwKSBcDQo+ID4gIAlwYXJhbShpbnQs IGVuYWJsZV9mYmMsIC0xLCAwNjAwKSBcDQo+ID4gIAlwYXJhbShpbnQsIGVuYWJsZV9wc3IsIC0x LCAwNjAwKSBcDQo+ID4gKwlwYXJhbShpbnQsIGVuYWJsZV9wc3IyX3NlbF9mZXRjaCwgMCwgMDQw MCkgXA0KPiA+ICAJcGFyYW0oaW50LCBkaXNhYmxlX3Bvd2VyX3dlbGwsIC0xLCAwNDAwKSBcDQo+ ID4gIAlwYXJhbShpbnQsIGVuYWJsZV9pcHMsIDEsIDA2MDApIFwNCj4gPiAgCXBhcmFtKGludCwg aW52ZXJ0X2JyaWdodG5lc3MsIDAsIDA2MDApIFwNCj4gPiAtLSANCj4gPiAyLjI2LjINCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=