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, URIBL_BLOCKED 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 B4C96C35E04 for ; Tue, 25 Feb 2020 17:43:23 +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 935EB2082F for ; Tue, 25 Feb 2020 17:43:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 935EB2082F 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 1C5B58902B; Tue, 25 Feb 2020 17:43:23 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC10B8902B for ; Tue, 25 Feb 2020 17:43:21 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Feb 2020 09:43:19 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,485,1574150400"; d="scan'208";a="438140415" Received: from irsmsx108.ger.corp.intel.com ([163.33.3.3]) by fmsmga006.fm.intel.com with ESMTP; 25 Feb 2020 09:43:18 -0800 Received: from irsmsx603.ger.corp.intel.com (163.33.146.9) by IRSMSX108.ger.corp.intel.com (163.33.3.3) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 25 Feb 2020 17:43:17 +0000 Received: from irsmsx604.ger.corp.intel.com (163.33.146.137) by irsmsx603.ger.corp.intel.com (163.33.146.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 25 Feb 2020 17:43:16 +0000 Received: from irsmsx604.ger.corp.intel.com ([163.33.146.137]) by IRSMSX604.ger.corp.intel.com ([163.33.146.137]) with mapi id 15.01.1713.004; Tue, 25 Feb 2020 17:43:16 +0000 From: "Lisovskiy, Stanislav" To: "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [PATCH v2 08/20] drm/i915: Introduce proper dbuf state Thread-Index: AQHV6/6zRp2l4eTbVk6WRTmuZsZLRKgsLUaA Date: Tue, 25 Feb 2020 17:43:16 +0000 Message-ID: <3d2f06df57d34945cb3b41b8d4009b913ee54566.camel@intel.com> References: <20200225171125.28885-1-ville.syrjala@linux.intel.com> <20200225171125.28885-9-ville.syrjala@linux.intel.com> In-Reply-To: <20200225171125.28885-9-ville.syrjala@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.237.72.89] Content-ID: MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v2 08/20] drm/i915: Introduce proper dbuf state 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVHVlLCAyMDIwLTAyLTI1IGF0IDE5OjExICswMjAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOg0K PiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0K PiANCj4gQWRkIGEgZ2xvYmFsIHN0YXRlIHRvIHRyYWNrIHRoZSBkYnVmIHNsaWNlcy4gR2V0cyBy aWQgb2YgYWxsIHRoZQ0KPiBuYXN0eQ0KPiBjb3VwbGluZyBiZXR3ZWVuIHN0YXRlLT5tb2Rlc2V0 IGFuZCBkYnVmIHJlY29tcHV0YXRpb24uIEFsc28gd2UgY2FuDQo+IG5vdw0KPiB0b3RhbGx5IG51 a2Ugc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMuDQo+IA0KPiBkZXZfcHJpdi0+d20uZGlzdHJ1 c3RfYmlvc193bSBzdGlsbCByZW1haW5zLCBidXQgdGhhdCB0b28gd2lsbCBnZXQNCj4gbnVrZWQg c29vbi4NCj4gDQo+IENjOiBTdGFuaXNsYXYgTGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5 QGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4NCj4gLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgNjcgKysrKystLQ0KPiAgLi4uL2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV9wb3dlci5jICAgIHwgICA4ICstDQo+ICAuLi4vZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggICAgfCAgMTMgLS0NCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAxMSArLQ0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgIHwgMTg5ICsrKysrKysrKysrKy0tDQo+ IC0tLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmggICAgICAgICAgICAgICB8 ICAyMiArKw0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgMTAxIGRlbGV0 aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMNCj4gaW5kZXggNjk1MmMzOThjYzQzLi42NTliOTUyYzhlMmYgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+IEBAIC03NTgx LDYgKzc1ODEsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3Ry dWN0DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICAJCXRvX2ludGVsX2J3X3N0YXRlKGRldl9wcml2 LT5id19vYmouc3RhdGUpOw0KPiAgCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3Rh dGUgPQ0KPiAgCQl0b19pbnRlbF9jZGNsa19zdGF0ZShkZXZfcHJpdi0+Y2RjbGsub2JqLnN0YXRl KTsNCj4gKwlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqZGJ1Zl9zdGF0ZSA9DQo+ICsJCXRvX2lu dGVsX2RidWZfc3RhdGUoZGV2X3ByaXYtPmRidWYub2JqLnN0YXRlKTsNCj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9DQo+ICAJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+YmFzZS5zdGF0ZSk7DQo+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21h aW47DQo+IEBAIC03NjU0LDYgKzc2NTYsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2Fi bGVfbm9hdG9taWMoc3RydWN0DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICAJY2RjbGtfc3RhdGUt Pm1pbl92b2x0YWdlX2xldmVsW3BpcGVdID0gMDsNCj4gIAljZGNsa19zdGF0ZS0+YWN0aXZlX3Bp cGVzICY9IH5CSVQocGlwZSk7DQo+ICANCj4gKwlkYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgJj0g fkJJVChwaXBlKTsNCj4gKw0KDQpTdGlsbCB3b3VsZCB2b3RlIHRvIGVuY2Fwc3VsYXRlIGFjdGl2 ZV9waXBlcyB0byBzb21lIG90aGVyIHN0YXRlLCB3aGljaA0Kd291bGQgYmUgdGhlbiB1c2VkIGJ5 IGJvdGggQ0RDTEsgYW5kIERCVUYgc3RhdGVzLCBzbyB0aGF0IHdlIGRvbid0DQpkdXBsaWNhdGUg c2FtZSBmaWVsZCBpbiBzZW1hbnRpY2FsbHkgZGlmZmVyZW50IHN0YXRlcyBhbmQgdGh1cyBpbmNy ZWFzZQ0KcHJvYmFiaWxpdHkgb2YgZm9yZ2V0dGluZyB0byBhc3NpZ24gaXQgc29tZXRoZXJlLCBs aWtlIHdlIGhhZCBhbiBpc3N1ZQ0Kd2l0aCAiYWN0aXZlX3BpcGVfY2hhbmdlcyIgd2hpY2ggd291 bGQgYmUgbm93IGVsaW1pbmF0ZWQuDQoNCkNvdWxkIGl0IGJlIGxpa2UgZ2xvYmFsX2NydGNfc3Rh dGUtPmFjdGl2ZV9waXBlcz8gUHJvYmFibHkgbmFtZSBpcw0Kbm90IHRoZSBiZXN0IGhlcmUsIGp1 c3QgdG8gcmVmbGVjdCB0aGUgaWRlYS4NCg0KV291bGQgYmUgY29vbCB0byBoYXZlIGFsbCBzdWJz eXN0ZW1zIGVuY2Fwc3VsYXRlZCBpbnRvIHRob3NlIGdsb2JhbA0Kb2JqZWN0cywgd2hpbGUgZWFj aCBpcyByZXNwb25zaWJsZSBmb3IgaXQncyBvd24gYXJlYS4NCg0KU3Rhbg0KDQoNCj4gIAlid19z dGF0ZS0+ZGF0YV9yYXRlW3BpcGVdID0gMDsNCj4gIAlid19zdGF0ZS0+bnVtX2FjdGl2ZV9wbGFu ZXNbcGlwZV0gPSAwOw0KPiAgfQ0KPiBAQCAtMTM5OTEsMTAgKzEzOTk1LDEwIEBAIHN0YXRpYyB2 b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QNCj4gaW50ZWxfY3J0YyAqY3J0YywNCj4gIAlod19l bmFibGVkX3NsaWNlcyA9IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzayhkZXZfcHJpdik7 DQo+ICANCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJg0KPiAtCSAgICBod19l bmFibGVkX3NsaWNlcyAhPSBkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrKQ0KPiAr CSAgICBod19lbmFibGVkX3NsaWNlcyAhPSBkZXZfcHJpdi0+ZGJ1Zi5lbmFibGVkX3NsaWNlcykN Cj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwNCj4gIAkJCSJtaXNtYXRjaCBpbiBEQlVGIFNs aWNlcyAoZXhwZWN0ZWQgMHgleCwgZ290DQo+IDB4JXgpXG4iLA0KPiAtCQkJZGV2X3ByaXYtPmVu YWJsZWRfZGJ1Zl9zbGljZXNfbWFzaywNCj4gKwkJCWRldl9wcml2LT5kYnVmLmVuYWJsZWRfc2xp Y2VzLA0KPiAgCQkJaHdfZW5hYmxlZF9zbGljZXMpOw0KPiAgDQo+ICAJLyogcGxhbmVzICovDQo+ IEBAIC0xNDUyOSw5ICsxNDUzMyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Mo c3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICAJc3RhdGUtPm1vZGVzZXQg PSB0cnVlOw0KPiAgCXN0YXRlLT5hY3RpdmVfcGlwZXMgPSBpbnRlbF9jYWxjX2FjdGl2ZV9waXBl cyhzdGF0ZSwgZGV2X3ByaXYtDQo+ID5hY3RpdmVfcGlwZXMpOw0KPiAgDQo+IC0Jc3RhdGUtPmFj dGl2ZV9waXBlX2NoYW5nZXMgPSBzdGF0ZS0+YWN0aXZlX3BpcGVzIF4gZGV2X3ByaXYtDQo+ID5h Y3RpdmVfcGlwZXM7DQo+IC0NCj4gLQlpZiAoc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpIHsN Cj4gKwlpZiAoc3RhdGUtPmFjdGl2ZV9waXBlcyAhPSBkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKSB7 DQo+ICAJCXJldCA9IF9pbnRlbF9hdG9taWNfbG9ja19nbG9iYWxfc3RhdGUoc3RhdGUpOw0KPiAg CQlpZiAocmV0KQ0KPiAgCQkJcmV0dXJuIHJldDsNCj4gQEAgLTE1MjkyLDIyICsxNTI5NCwzOCBA QCBzdGF0aWMgdm9pZA0KPiBpbnRlbF91cGRhdGVfdHJhbnNfcG9ydF9zeW5jX2NydGNzKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLA0KPiAgc3RhdGljIHZvaWQgaWNsX2RidWZfc2xpY2VfcHJlX3Vw ZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlDQo+ICpzdGF0ZSkNCj4gIHsNCj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7 DQo+IC0JdTggaHdfZW5hYmxlZF9zbGljZXMgPSBkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNl c19tYXNrOw0KPiAtCXU4IHJlcXVpcmVkX3NsaWNlcyA9IHN0YXRlLT5lbmFibGVkX2RidWZfc2xp Y2VzX21hc2s7DQo+IC0JdTggc2xpY2VzX3VuaW9uID0gaHdfZW5hYmxlZF9zbGljZXMgfCByZXF1 aXJlZF9zbGljZXM7DQo+ICsJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm5ld19kYnVm X3N0YXRlID0NCj4gKwkJaW50ZWxfYXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0ZShzdGF0ZSk7DQo+ ICsJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm9sZF9kYnVmX3N0YXRlID0NCj4gKwkJ aW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7DQo+ICANCj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiBzbGljZXNfdW5pb24gIT0NCj4gaHdfZW5hYmxlZF9z bGljZXMpDQo+IC0JCWdlbjlfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCBzbGljZXNfdW5p b24pOw0KPiArCWlmICghbmV3X2RidWZfc3RhdGUgfHwNCj4gKwkgICAgbmV3X2RidWZfc3RhdGUt PmVuYWJsZWRfc2xpY2VzID09IG9sZF9kYnVmX3N0YXRlLQ0KPiA+ZW5hYmxlZF9zbGljZXMpDQo+ ICsJCXJldHVybjsNCj4gKw0KPiArCVdBUk5fT04oIW5ld19kYnVmX3N0YXRlLT5iYXNlLmNoYW5n ZWQpOw0KPiArDQo+ICsJZ2VuOV9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsDQo+ICsJCQkJ b2xkX2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzIHwNCj4gKwkJCQluZXdfZGJ1Zl9zdGF0ZS0+ ZW5hYmxlZF9zbGljZXMpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9zbGlj ZV9wb3N0X3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlDQo+ICpzdGF0ZSkNCj4gIHsN Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5i YXNlLmRldik7DQo+IC0JdTggaHdfZW5hYmxlZF9zbGljZXMgPSBkZXZfcHJpdi0+ZW5hYmxlZF9k YnVmX3NsaWNlc19tYXNrOw0KPiAtCXU4IHJlcXVpcmVkX3NsaWNlcyA9IHN0YXRlLT5lbmFibGVk X2RidWZfc2xpY2VzX21hc2s7DQo+ICsJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm5l d19kYnVmX3N0YXRlID0NCj4gKwkJaW50ZWxfYXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0ZShzdGF0 ZSk7DQo+ICsJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm9sZF9kYnVmX3N0YXRlID0N Cj4gKwkJaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7DQo+ICANCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgIT0NCj4gaHdf ZW5hYmxlZF9zbGljZXMpDQo+IC0JCWdlbjlfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCBy ZXF1aXJlZF9zbGljZXMpOw0KPiArCWlmICghbmV3X2RidWZfc3RhdGUgfHwNCj4gKwkgICAgbmV3 X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzID09IG9sZF9kYnVmX3N0YXRlLQ0KPiA+ZW5hYmxl ZF9zbGljZXMpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCVdBUk5fT04oIW5ld19kYnVmX3N0YXRl LT5iYXNlLmNoYW5nZWQpOw0KPiArDQo+ICsJZ2VuOV9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3By aXYsDQo+ICsJCQkJbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzKTsNCj4gIH0NCj4gIA0K PiAgc3RhdGljIHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZQ0KPiAqc3RhdGUpDQo+IEBAIC0xNTU2Miw5ICsxNTU4MCw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSkNCj4gIAlpZiAoc3RhdGUtPm1vZGVzZXQpDQo+ICAJCWludGVsX2VuY29kZXJzX3Vw ZGF0ZV9wcmVwYXJlKHN0YXRlKTsNCj4gIA0KPiAtCS8qIEVuYWJsZSBhbGwgbmV3IHNsaWNlcywg d2UgbWlnaHQgbmVlZCAqLw0KPiAtCWlmIChzdGF0ZS0+bW9kZXNldCkNCj4gLQkJaWNsX2RidWZf c2xpY2VfcHJlX3VwZGF0ZShzdGF0ZSk7DQo+ICsJaWNsX2RidWZfc2xpY2VfcHJlX3VwZGF0ZShz dGF0ZSk7DQo+ICANCj4gIAkvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBlLCBh bmQgY29ubmVjdG9ycyB0aGF0IHdlDQo+IHNldCB1cC4gKi8NCj4gIAlkZXZfcHJpdi0+ZGlzcGxh eS5jb21taXRfbW9kZXNldF9lbmFibGVzKHN0YXRlKTsNCj4gQEAgLTE1NjE5LDkgKzE1NjM1LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdA0KPiBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlKQ0KPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0 ZXJtYXJrcyhzdGF0ZSwNCj4gY3J0Yyk7DQo+ICAJfQ0KPiAgDQo+IC0JLyogRGlzYWJsZSBhbGwg c2xpY2VzLCB3ZSBkb24ndCBuZWVkICovDQo+IC0JaWYgKHN0YXRlLT5tb2Rlc2V0KQ0KPiAtCQlp Y2xfZGJ1Zl9zbGljZV9wb3N0X3VwZGF0ZShzdGF0ZSk7DQo+ICsJaWNsX2RidWZfc2xpY2VfcG9z dF91cGRhdGUoc3RhdGUpOw0KPiAgDQo+ICAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsDQo+IG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkg ew0KPiAgCQlpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShzdGF0ZSwgY3J0Yyk7DQo+IEBAIC0xNzUw NywxMCArMTc1MjEsMTQgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXRfaHcoc3RydWN0DQo+IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpDQo+ICB7DQo+ICAJc3RydWN0IGludGVsX2NkY2xrX3N0YXRl ICpjZGNsa19zdGF0ZSA9DQo+ICAJCXRvX2ludGVsX2NkY2xrX3N0YXRlKGk5MTUtPmNkY2xrLm9i ai5zdGF0ZSk7DQo+ICsJc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRidWZfc3RhdGUgPQ0KPiAr CQl0b19pbnRlbF9kYnVmX3N0YXRlKGk5MTUtPmRidWYub2JqLnN0YXRlKTsNCj4gIA0KPiAgCWlu dGVsX3VwZGF0ZV9jZGNsayhpOTE1KTsNCj4gIAlpbnRlbF9kdW1wX2NkY2xrX2NvbmZpZygmaTkx NS0+Y2RjbGsuaHcsICJDdXJyZW50IENEQ0xLIik7DQo+ICAJY2RjbGtfc3RhdGUtPmxvZ2ljYWwg PSBjZGNsa19zdGF0ZS0+YWN0dWFsID0gaTkxNS0+Y2RjbGsuaHc7DQo+ICsNCj4gKwlkYnVmX3N0 YXRlLT5lbmFibGVkX3NsaWNlcyA9IGk5MTUtPmRidWYuZW5hYmxlZF9zbGljZXM7DQo+ICB9DQo+ ICANCj4gIHN0YXRpYyBpbnQgc2FuaXRpemVfd2F0ZXJtYXJrc19hZGRfYWZmZWN0ZWQoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUNCj4gKnN0YXRlKQ0KPiBAQCAtMTc4MDAsNiArMTc4MTgsMTAgQEAg aW50IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkN Cj4gIAlpZiAocmV0KQ0KPiAgCQlyZXR1cm4gcmV0Ow0KPiAgDQo+ICsJcmV0ID0gaW50ZWxfZGJ1 Zl9pbml0KGk5MTUpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gIAly ZXQgPSBpbnRlbF9id19pbml0KGk5MTUpOw0KPiAgCWlmIChyZXQpDQo+ICAJCXJldHVybiByZXQ7 DQo+IEBAIC0xODMwMyw2ICsxODMyNSw4IEBAIHN0YXRpYyB2b2lkDQo+IGludGVsX21vZGVzZXRf cmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsNCj4gIAlzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlID0NCj4gIAkJdG9faW50ZWxfY2RjbGtfc3RhdGUoZGV2 X3ByaXYtPmNkY2xrLm9iai5zdGF0ZSk7DQo+ICsJc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRi dWZfc3RhdGUgPQ0KPiArCQl0b19pbnRlbF9kYnVmX3N0YXRlKGRldl9wcml2LT5kYnVmLm9iai5z dGF0ZSk7DQo+ICAJZW51bSBwaXBlIHBpcGU7DQo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7 DQo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+IEBAIC0xODMzNCw3ICsxODM1 OCw4IEBAIHN0YXRpYyB2b2lkDQo+IGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiAgCQkJICAgIGVuYWJsZWRkaXNhYmxlZChjcnRjX3N0YXRl LT5ody5hY3RpdmUpKTsNCj4gIAl9DQo+ICANCj4gLQlkZXZfcHJpdi0+YWN0aXZlX3BpcGVzID0g Y2RjbGtfc3RhdGUtPmFjdGl2ZV9waXBlcyA9DQo+IGFjdGl2ZV9waXBlczsNCj4gKwlkZXZfcHJp di0+YWN0aXZlX3BpcGVzID0gY2RjbGtfc3RhdGUtPmFjdGl2ZV9waXBlcyA9DQo+ICsJCWRidWZf c3RhdGUtPmFjdGl2ZV9waXBlcyA9IGFjdGl2ZV9waXBlczsNCj4gIA0KPiAgCXJlYWRvdXRfcGxh bmVfc3RhdGUoZGV2X3ByaXYpOw0KPiAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jDQo+IGluZGV4IGNlM2JiYzRjN2EyNy4u ZGMwYzk2OTRiNzE0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfcG93ZXIuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYw0KPiBAQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3RhdGlj IGJvb2wNCj4gZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwNCj4gIHN0YXRpYyB2b2lkIGdlbjlfYXNzZXJ0X2RidWZfZW5hYmxl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ICB7DQo+ICAJdTggaHdf ZW5hYmxlZF9kYnVmX3NsaWNlcyA9DQo+IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzayhk ZXZfcHJpdik7DQo+IC0JdTggZW5hYmxlZF9kYnVmX3NsaWNlcyA9IGRldl9wcml2LT5lbmFibGVk X2RidWZfc2xpY2VzX21hc2s7DQo+ICsJdTggZW5hYmxlZF9kYnVmX3NsaWNlcyA9IGRldl9wcml2 LT5kYnVmLmVuYWJsZWRfc2xpY2VzOw0KPiAgDQo+ICAJZHJtX1dBUk4oJmRldl9wcml2LT5kcm0s DQo+ICAJCSBod19lbmFibGVkX2RidWZfc2xpY2VzICE9IGVuYWJsZWRfZGJ1Zl9zbGljZXMsDQo+ IEBAIC00NDgxLDE0ICs0NDgxLDE0IEBAIHZvaWQgZ2VuOV9kYnVmX3NsaWNlc191cGRhdGUoc3Ry dWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCWZvciAoc2xpY2UgPSBEQlVG X1MxOyBzbGljZSA8IG51bV9zbGljZXM7IHNsaWNlKyspDQo+ICAJCWdlbjlfZGJ1Zl9zbGljZV9z ZXQoZGV2X3ByaXYsIHNsaWNlLCByZXFfc2xpY2VzICYNCj4gQklUKHNsaWNlKSk7DQo+ICANCj4g LQlkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrID0gcmVxX3NsaWNlczsNCj4gKwlk ZXZfcHJpdi0+ZGJ1Zi5lbmFibGVkX3NsaWNlcyA9IHJlcV9zbGljZXM7DQo+ICANCj4gIAltdXRl eF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9p ZCBnZW45X2RidWZfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4g IHsNCj4gLQlkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrID0NCj4gKwlkZXZfcHJp di0+ZGJ1Zi5lbmFibGVkX3NsaWNlcyA9DQo+ICAJCWludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNf bWFzayhkZXZfcHJpdik7DQo+ICANCj4gIAkvKg0KPiBAQCAtNDQ5Niw3ICs0NDk2LDcgQEAgc3Rh dGljIHZvaWQgZ2VuOV9kYnVmX2VuYWJsZShzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpDQo+ICAJICogZmlndXJlIG91dCBsYXRlciB3aGljaCBzbGljZXMgd2UgaGF2ZSBhbmQg d2hhdCB3ZSBuZWVkLg0KPiAgCSAqLw0KPiAgCWdlbjlfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9w cml2LCBCSVQoREJVRl9TMSkgfA0KPiAtCQkJCWRldl9wcml2LT5lbmFibGVkX2RidWZfc2xpY2Vz X21hc2spOw0KPiArCQkJCWRldl9wcml2LT5kYnVmLmVuYWJsZWRfc2xpY2VzKTsNCj4gIH0NCj4g IA0KPiAgc3RhdGljIHZvaWQgZ2VuOV9kYnVmX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBpbmRleCAwZDhhNjQzMDU0NjQuLjE2NWVmYTAwZDg4 YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5X3R5cGVzLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmgNCj4gQEAgLTQ3MSwxNiArNDcxLDYgQEAgc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSB7DQo+ICANCj4gIAlib29sIGRwbGxfc2V0LCBtb2Rlc2V0Ow0KPiAgDQo+IC0JLyoN Cj4gLQkgKiBEb2VzIHRoaXMgdHJhbnNhY3Rpb24gY2hhbmdlIHRoZSBwaXBlcyB0aGF0IGFyZQ0K PiBhY3RpdmU/ICBUaGlzIG1hc2sNCj4gLQkgKiB0cmFja3Mgd2hpY2ggQ1JUQydzIGhhdmUgY2hh bmdlZCB0aGVpciBhY3RpdmUgc3RhdGUgYXQgdGhlDQo+IGVuZCBvZg0KPiAtCSAqIHRoZSB0cmFu c2FjdGlvbiAobm90IGNvdW50aW5nIHRoZSB0ZW1wb3JhcnkgZGlzYWJsZSBkdXJpbmcNCj4gbW9k ZXNldHMpLg0KPiAtCSAqIFRoaXMgbWFzayBzaG91bGQgb25seSBiZSBub24temVybyB3aGVuIGlu dGVsX3N0YXRlLT5tb2Rlc2V0DQo+IGlzIHRydWUsDQo+IC0JICogYnV0IHRoZSBjb252ZXJzZSBp cyBub3QgbmVjZXNzYXJpbHkgdHJ1ZTsgc2ltcGx5IGNoYW5naW5nIGENCj4gbW9kZSBtYXkNCj4g LQkgKiBub3QgZmxpcCB0aGUgZmluYWwgYWN0aXZlIHN0YXR1cyBvZiBhbnkgQ1JUQydzDQo+IC0J ICovDQo+IC0JdTggYWN0aXZlX3BpcGVfY2hhbmdlczsNCj4gLQ0KPiAgCXU4IGFjdGl2ZV9waXBl czsNCj4gIA0KPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9zdGF0ZSBzaGFyZWRfZHBsbFtJ OTE1X05VTV9QTExTXTsNCj4gQEAgLTQ5OCw5ICs0ODgsNiBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlIHsNCj4gIAkgKi8NCj4gIAlib29sIGdsb2JhbF9zdGF0ZV9jaGFuZ2VkOw0KPiAgDQo+ IC0JLyogTnVtYmVyIG9mIGVuYWJsZWQgREJ1ZiBzbGljZXMgKi8NCj4gLQl1OCBlbmFibGVkX2Ri dWZfc2xpY2VzX21hc2s7DQo+IC0NCj4gIAlzdHJ1Y3QgaTkxNV9zd19mZW5jZSBjb21taXRfcmVh ZHk7DQo+ICANCj4gIAlzdHJ1Y3QgbGxpc3Rfbm9kZSBmcmVlZDsNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oDQo+IGluZGV4IDg4ZTRmYjhhYzczOS4uZDAzYzg0ZjM3M2U2IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gQEAgLTEwMDYsNiArMTAwNiwxMyBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7DQo+ICAJCXN0cnVjdCBpbnRlbF9nbG9iYWxfb2JqIG9iajsNCj4gIAl9 IGNkY2xrOw0KPiAgDQo+ICsJc3RydWN0IHsNCj4gKwkJLyogVGhlIGN1cnJlbnQgaGFyZHdhcmUg ZGJ1ZiBjb25maWd1cmF0aW9uICovDQo+ICsJCXU4IGVuYWJsZWRfc2xpY2VzOw0KPiArDQo+ICsJ CXN0cnVjdCBpbnRlbF9nbG9iYWxfb2JqIG9iajsNCj4gKwl9IGRidWY7DQo+ICsNCj4gIAkvKioN Cj4gIAkgKiB3cSAtIERyaXZlciB3b3JrcXVldWUgZm9yIEdFTS4NCj4gIAkgKg0KPiBAQCAtMTE4 MSwxMiArMTE4OCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7DQo+ICAJCSAqIFNldCBk dXJpbmcgSFcgcmVhZG91dCBvZiB3YXRlcm1hcmtzL0REQi4gIFNvbWUNCj4gcGxhdGZvcm1zDQo+ ICAJCSAqIG5lZWQgdG8ga25vdyB3aGVuIHdlJ3JlIHN0aWxsIHVzaW5nIEJJT1MtcHJvdmlkZWQN Cj4gdmFsdWVzDQo+ICAJCSAqICh3aGljaCB3ZSBkb24ndCBmdWxseSB0cnVzdCkuDQo+ICsJCSAq DQo+ICsJCSAqIEZJWE1FIGdldCByaWQgb2YgdGhpcy4NCj4gIAkJICovDQo+ICAJCWJvb2wgZGlz dHJ1c3RfYmlvc193bTsNCj4gIAl9IHdtOw0KPiAgDQo+IC0JdTggZW5hYmxlZF9kYnVmX3NsaWNl c19tYXNrOyAvKiBHRU4xMSBoYXMgY29uZmlndXJhYmxlIDIgc2xpY2VzDQo+ICovDQo+IC0NCj4g IAlzdHJ1Y3QgZHJhbV9pbmZvIHsNCj4gIAkJYm9vbCB2YWxpZDsNCj4gIAkJYm9vbCBpc18xNmdi X2RpbW07DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiBpbmRleCA2NDBmNGM0ZmQ1MDgu LmQ0NzMwZDliNGUxYiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IEBAIC0zODQ1 LDcgKzM4NDUsNyBAQCBzdGF0aWMgdTE2IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QNCj4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICBzdGF0aWMgdTggc2tsX2NvbXB1dGVfZGJ1Zl9z bGljZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUsDQo+ICAJ CQkJICB1OCBhY3RpdmVfcGlwZXMpOw0KPiAgDQo+IC1zdGF0aWMgdm9pZA0KPiArc3RhdGljIGlu dA0KPiAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZQ0KPiAqZGV2X3ByaXYsDQo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUNCj4gKmNydGNfc3RhdGUsDQo+ICAJCQkJICAgY29uc3QgdTY0IHRvdGFsX2RhdGFfcmF0 ZSwNCj4gQEAgLTM4NTgsMzAgKzM4NTgsMjkgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9u X2xpbWl0cyhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJY29uc3Qg c3RydWN0IGludGVsX2NydGMgKmNydGM7DQo+ICAJdTMyIHBpcGVfd2lkdGggPSAwLCB0b3RhbF93 aWR0aF9pbl9yYW5nZSA9IDAsDQo+IHdpZHRoX2JlZm9yZV9waXBlX2luX3JhbmdlID0gMDsNCj4g IAllbnVtIHBpcGUgZm9yX3BpcGUgPSB0b19pbnRlbF9jcnRjKGZvcl9jcnRjKS0+cGlwZTsNCj4g KwlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2RidWZfc3RhdGUgPQ0KPiArCQlpbnRlbF9h dG9taWNfZ2V0X25ld19kYnVmX3N0YXRlKGludGVsX3N0YXRlKTsNCj4gKwljb25zdCBzdHJ1Y3Qg aW50ZWxfZGJ1Zl9zdGF0ZSAqb2xkX2RidWZfc3RhdGUgPQ0KPiArCQlpbnRlbF9hdG9taWNfZ2V0 X29sZF9kYnVmX3N0YXRlKGludGVsX3N0YXRlKTsNCj4gKwl1OCBhY3RpdmVfcGlwZXMgPSBuZXdf ZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzOw0KPiAgCXUxNiBkZGJfc2l6ZTsNCj4gIAl1MzIgZGRi X3JhbmdlX3NpemU7DQo+ICAJdTMyIGk7DQo+ICAJdTMyIGRidWZfc2xpY2VfbWFzazsNCj4gLQl1 MzIgYWN0aXZlX3BpcGVzOw0KPiAgCXUzMiBvZmZzZXQ7DQo+ICAJdTMyIHNsaWNlX3NpemU7DQo+ ICAJdTMyIHRvdGFsX3NsaWNlX21hc2s7DQo+ICAJdTMyIHN0YXJ0LCBlbmQ7DQo+ICsJaW50IHJl dDsNCj4gIA0KPiAtCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIXN0YXRlKSB8fCAh Y3J0Y19zdGF0ZS0NCj4gPmh3LmFjdGl2ZSkgew0KPiArCSpudW1fYWN0aXZlID0gaHdlaWdodDgo YWN0aXZlX3BpcGVzKTsNCj4gKw0KPiArCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7DQo+ ICAJCWFsbG9jLT5zdGFydCA9IDA7DQo+ICAJCWFsbG9jLT5lbmQgPSAwOw0KPiAtCQkqbnVtX2Fj dGl2ZSA9IGh3ZWlnaHQ4KGRldl9wcml2LT5hY3RpdmVfcGlwZXMpOw0KPiAtCQlyZXR1cm47DQo+ ICsJCXJldHVybiAwOw0KPiAgCX0NCj4gIA0KPiAtCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3Bp cGVfY2hhbmdlcykNCj4gLQkJYWN0aXZlX3BpcGVzID0gaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBl czsNCj4gLQllbHNlDQo+IC0JCWFjdGl2ZV9waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfcGlwZXM7 DQo+IC0NCj4gLQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQ4KGFjdGl2ZV9waXBlcyk7DQo+IC0NCj4g IAlkZGJfc2l6ZSA9IGludGVsX2dldF9kZGJfc2l6ZShkZXZfcHJpdik7DQo+ICANCj4gIAlzbGlj ZV9zaXplID0gZGRiX3NpemUgLyBJTlRFTF9JTkZPKGRldl9wcml2KS0NCj4gPm51bV9zdXBwb3J0 ZWRfZGJ1Zl9zbGljZXM7DQo+IEBAIC0zODk0LDEzICszODkzLDE2IEBAIHNrbF9kZGJfZ2V0X3Bp cGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LA0KPiAgCSAqIHRoYXQgY2hhbmdlcyB0aGUgYWN0aXZlIENSVEMgbGlzdCBvciBkbyBtb2Rlc2V0 IHdvdWxkIG5lZWQNCj4gdG8NCj4gIAkgKiBncmFiIF9hbGxfIGNydGMgbG9ja3MsIGluY2x1ZGlu ZyB0aGUgb25lIHdlIGN1cnJlbnRseSBob2xkLg0KPiAgCSAqLw0KPiAtCWlmICghaW50ZWxfc3Rh dGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMgJiYgIWludGVsX3N0YXRlLT5tb2Rlc2V0KSANCj4gew0K PiArCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzID09IG5ld19kYnVmX3N0YXRlLQ0K PiA+YWN0aXZlX3BpcGVzICYmDQo+ICsJICAgICFkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlvc193 bSkgew0KPiAgCQkvKg0KPiAgCQkgKiBhbGxvYyBtYXkgYmUgY2xlYXJlZCBieSBjbGVhcl9pbnRl bF9jcnRjX3N0YXRlLA0KPiAgCQkgKiBjb3B5IGZyb20gb2xkIHN0YXRlIHRvIGJlIHN1cmUNCj4g KwkJICoNCj4gKwkJICogRklYTUUgZ2V0IHJpZCBvZiB0aGlzIG1lc3MNCj4gIAkJICovDQo+ICAJ CSphbGxvYyA9IHRvX2ludGVsX2NydGNfc3RhdGUoZm9yX2NydGMtPnN0YXRlKS0NCj4gPndtLnNr bC5kZGI7DQo+IC0JCXJldHVybjsNCj4gKwkJcmV0dXJuIDA7DQo+ICAJfQ0KPiAgDQo+ICAJLyoN Cj4gQEAgLTM5NzksNyArMzk4MSwxMyBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGlt aXRzKHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gIAkgKiBGSVhNRTog Rm9yIG5vdyB3ZSBhbHdheXMgZW5hYmxlIHNsaWNlIFMxIGFzIHBlcg0KPiAgCSAqIHRoZSBCc3Bl YyBkaXNwbGF5IGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLg0KPiAgCSAqLw0KPiAtCWludGVsX3N0 YXRlLT5lbmFibGVkX2RidWZfc2xpY2VzX21hc2sgPSB0b3RhbF9zbGljZV9tYXNrIHwNCj4gQklU KERCVUZfUzEpOw0KPiArCW5ld19kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcyA9IHRvdGFsX3Ns aWNlX21hc2sgfA0KPiBCSVQoREJVRl9TMSk7DQo+ICsNCj4gKwlpZiAob2xkX2RidWZfc3RhdGUt PmVuYWJsZWRfc2xpY2VzICE9IG5ld19kYnVmX3N0YXRlLQ0KPiA+ZW5hYmxlZF9zbGljZXMpIHsN Cj4gKwkJcmV0ID0NCj4gaW50ZWxfYXRvbWljX3NlcmlhbGl6ZV9nbG9iYWxfc3RhdGUoJm5ld19k YnVmX3N0YXRlLT5iYXNlKTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJ fQ0KPiAgDQo+ICAJc3RhcnQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdpZHRoX2JlZm9yZV9waXBlX2lu X3JhbmdlIC8NCj4gdG90YWxfd2lkdGhfaW5fcmFuZ2U7DQo+ICAJZW5kID0gZGRiX3JhbmdlX3Np emUgKg0KPiBAQCAtMzk5MCw5ICszOTk4LDggQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9u X2xpbWl0cyhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICANCj4gIAlE Uk1fREVCVUdfS01TKCJQaXBlICVkIGRkYiAlZC0lZFxuIiwgZm9yX3BpcGUsDQo+ICAJCSAgICAg IGFsbG9jLT5zdGFydCwgYWxsb2MtPmVuZCk7DQo+IC0JRFJNX0RFQlVHX0tNUygiRW5hYmxlZCBk ZGIgc2xpY2VzIG1hc2sgJXggbnVtIHN1cHBvcnRlZCAlZFxuIiwNCj4gLQkJICAgICAgaW50ZWxf c3RhdGUtPmVuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzaywNCj4gLQkJICAgICAgSU5URUxfSU5GTyhk ZXZfcHJpdiktPm51bV9zdXBwb3J0ZWRfZGJ1Zl9zbGljZXMpOw0KPiArDQo+ICsJcmV0dXJuIDA7 DQo+ICB9DQo+ICANCj4gIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfd21fcGFyYW1zKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRlLA0KPiBAQCAtNDExMiw4ICs0MTE5 LDggQEAgdm9pZCBza2xfcGlwZV9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdA0KPiBpbnRlbF9jcnRj ICpjcnRjLA0KPiAgDQo+ICB2b2lkIHNrbF9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikNCj4gIHsNCj4gLQlkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3Ns aWNlc19tYXNrID0NCj4gLQkJCQlpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX21hc2soZGV2X3By aXYNCj4gKTsNCj4gKwlkZXZfcHJpdi0+ZGJ1Zi5lbmFibGVkX3NsaWNlcyA9DQo+ICsJCWludGVs X2VuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzayhkZXZfcHJpdik7DQo+ICB9DQo+ICANCj4gIC8qDQo+ IEBAIC00NTQ2LDYgKzQ1NTMsNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVs X2NydGNfc3RhdGUNCj4gKmNydGNfc3RhdGUpDQo+ICAJdTY0IHV2X3BsYW5lX2RhdGFfcmF0ZVtJ OTE1X01BWF9QTEFORVNdID0ge307DQo+ICAJdTMyIGJsb2NrczsNCj4gIAlpbnQgbGV2ZWw7DQo+ ICsJaW50IHJldDsNCj4gIA0KPiAgCS8qIENsZWFyIHRoZSBwYXJ0aXRpb25pbmcgZm9yIGRpc2Fi bGVkIHBsYW5lcy4gKi8NCj4gIAltZW1zZXQoY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95 LCAwLCBzaXplb2YoY3J0Y19zdGF0ZS0NCj4gPndtLnNrbC5wbGFuZV9kZGJfeSkpOw0KPiBAQCAt NDU2Nyw4ICs0NTc1LDEyIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSkNCj4gIAkJCQkJCQkgdXZfcGxhbmVfZGF0YV8NCj4gcmF0 ZSk7DQo+ICANCj4gIA0KPiAtCXNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoZGV2 X3ByaXYsIGNydGNfc3RhdGUsDQo+IHRvdGFsX2RhdGFfcmF0ZSwNCj4gLQkJCQkJICAgYWxsb2Ms ICZudW1fYWN0aXZlKTsNCj4gKwlyZXQgPSBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGlt aXRzKGRldl9wcml2LCBjcnRjX3N0YXRlLA0KPiArCQkJCQkJIHRvdGFsX2RhdGFfcmF0ZSwNCj4g KwkJCQkJCSBhbGxvYywgJm51bV9hY3RpdmUpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiBy ZXQ7DQo+ICsNCj4gIAlhbGxvY19zaXplID0gc2tsX2RkYl9lbnRyeV9zaXplKGFsbG9jKTsNCj4g IAlpZiAoYWxsb2Nfc2l6ZSA9PSAwKQ0KPiAgCQlyZXR1cm4gMDsNCj4gQEAgLTU0NTEsMTQgKzU0 NjMsMTEgQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKGNvbnN0IHN0cnVjdA0KPiBpbnRl bF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwNCj4gIHN0YXRpYyBpbnQNCj4gIHNrbF9jb21w dXRlX2RkYihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4gIHsNCj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7 DQo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOw0KPiAgCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsNCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YzsNCj4gIAlpbnQgcmV0LCBpOw0KPiAgDQo+IC0Jc3RhdGUtPmVuYWJsZWRfZGJ1Zl9z bGljZXNfbWFzayA9IGRldl9wcml2LQ0KPiA+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrOw0KPiAt DQo+ICAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsDQo+ IG9sZF9jcnRjX3N0YXRlLA0KPiAgCQkJCQkgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsNCj4gIAkJ cmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKG5ld19jcnRjX3N0YXRlKTsNCj4gQEAgLTU1OTgs NyArNTYwNyw4IEBAIHNrbF9wcmludF93bV9jaGFuZ2VzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUNCj4gKnN0YXRlKQ0KPiAgCX0NCj4gIH0NCj4gIA0KPiAtc3RhdGljIGludCBpbnRlbF9hZGRf YWxsX3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiArc3RhdGljIGlu dCBpbnRlbF9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZQ0KPiAq c3RhdGUsDQo+ICsJCQkJICAgIHU4IHBpcGVfbWFzaykNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7DQo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmNydGM7DQo+IEBAIC01NjA2LDYgKzU2MTYsOSBAQCBzdGF0aWMgaW50 IGludGVsX2FkZF9hbGxfcGlwZXMoc3RydWN0DQo+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp DQo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0Yykgew0KPiAgCQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsNCj4gIA0KPiArCQlpZiAoKHBpcGVf bWFzayAmIEJJVChjcnRjLT5waXBlKSkgPT0gMCkNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICAJ CWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLA0K PiBjcnRjKTsNCj4gIAkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkNCj4gIAkJCXJldHVybiBQVFJf RVJSKGNydGNfc3RhdGUpOw0KPiBAQCAtNTYxOCw0OSArNTYzMSw1NCBAQCBzdGF0aWMgaW50DQo+ ICBza2xfZGRiX2FkZF9hZmZlY3RlZF9waXBlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHN0YXRlLT5iYXNlLmRldik7DQo+IC0JaW50IHJldDsNCj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZTsNCj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsNCj4gKwlp bnQgaSwgcmV0Ow0KPiAgDQo+IC0JLyoNCj4gLQkgKiBJZiB0aGlzIGlzIG91ciBmaXJzdCBhdG9t aWMgdXBkYXRlIGZvbGxvd2luZyBoYXJkd2FyZQ0KPiByZWFkb3V0LA0KPiAtCSAqIHdlIGNhbid0 IHRydXN0IHRoZSBEREIgdGhhdCB0aGUgQklPUyBwcm9ncmFtbWVkIGZvcg0KPiB1cy4gIExldCdz DQo+IC0JICogcHJldGVuZCB0aGF0IGFsbCBwaXBlcyBzd2l0Y2hlZCBhY3RpdmUgc3RhdHVzIHNv IHRoYXQgd2UnbGwNCj4gLQkgKiBlbnN1cmUgYSBmdWxsIEREQiByZWNvbXB1dGUuDQo+IC0JICov DQo+ICAJaWYgKGRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9zX3dtKSB7DQo+IC0JCXJldCA9IGRy bV9tb2Rlc2V0X2xvY2soJmRldl9wcml2LQ0KPiA+ZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25f bXV0ZXgsDQo+IC0JCQkJICAgICAgIHN0YXRlLT5iYXNlLmFjcXVpcmVfY3R4KTsNCj4gLQkJaWYg KHJldCkNCj4gLQkJCXJldHVybiByZXQ7DQo+IC0NCj4gLQkJc3RhdGUtPmFjdGl2ZV9waXBlX2No YW5nZXMgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0NCj4gPnBpcGVfbWFzazsNCj4gLQ0KPiAgCQkv Kg0KPiAtCQkgKiBXZSB1c3VhbGx5IG9ubHkgaW5pdGlhbGl6ZSBzdGF0ZS0+YWN0aXZlX3BpcGVz IGlmIHdlDQo+IC0JCSAqIHdlJ3JlIGRvaW5nIGEgbW9kZXNldDsgbWFrZSBzdXJlIHRoaXMgZmll bGQgaXMNCj4gYWx3YXlzDQo+IC0JCSAqIGluaXRpYWxpemVkIGR1cmluZyB0aGUgc2FuaXRpemF0 aW9uIHByb2Nlc3MgdGhhdA0KPiBoYXBwZW5zDQo+IC0JCSAqIG9uIHRoZSBmaXJzdCBjb21taXQg dG9vLg0KPiArCQkgKiBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKCkgY3VycmVu dGx5DQo+IHJlcXVpcmVzDQo+ICsJCSAqIGFsbCBhY3RpdmUgcGlwZXMgdG8gYmUgaW5jbHVkZWQg aW4gdGhlIHN0YXRlIHNvIHRoYXQNCj4gKwkJICogaXQgY2FuIHJlZGlzdHJpYnV0ZSB0aGUgZGJ1 ZiBhbW9uZyB0aGVtLCBhbmQgaXQNCj4gcmVhbGx5DQo+ICsJCSAqIHdhbnRzIHRvIHJlY29tcHV0 ZSB0aGluZ3Mgd2hlbiBkaXN0cnVzdF9iaW9zX3dtIGlzDQo+IHNldA0KPiArCQkgKiBzbyB3ZSBh ZGQgYWxsIHRoZSBwaXBlcyB0byB0aGUgc3RhdGUuDQo+ICAJCSAqLw0KPiAtCQlpZiAoIXN0YXRl LT5tb2Rlc2V0KQ0KPiAtCQkJc3RhdGUtPmFjdGl2ZV9waXBlcyA9IGRldl9wcml2LT5hY3RpdmVf cGlwZXM7DQo+ICsJCXJldCA9IGludGVsX2FkZF9hZmZlY3RlZF9waXBlcyhzdGF0ZSwgfjApOw0K PiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIHJldDsNCj4gIAl9DQo+ICANCj4gLQkvKg0KPiAt CSAqIElmIHRoZSBtb2Rlc2V0IGNoYW5nZXMgd2hpY2ggQ1JUQydzIGFyZSBhY3RpdmUsIHdlIG5l ZWQgdG8NCj4gLQkgKiByZWNvbXB1dGUgdGhlIEREQiBhbGxvY2F0aW9uIGZvciAqYWxsKiBhY3Rp dmUgcGlwZXMsIGV2ZW4NCj4gLQkgKiB0aG9zZSB0aGF0IHdlcmVuJ3Qgb3RoZXJ3aXNlIGJlaW5n IG1vZGlmaWVkIGluIGFueSB3YXkgYnkNCj4gdGhpcw0KPiAtCSAqIGF0b21pYyBjb21taXQuICBE dWUgdG8gdGhlIHNocmlua2luZyBvZiB0aGUgcGVyLXBpcGUNCj4gYWxsb2NhdGlvbnMNCj4gLQkg KiB3aGVuIG5ldyBhY3RpdmUgQ1JUQydzIGFyZSBhZGRlZCwgaXQncyBwb3NzaWJsZSBmb3IgYSBw aXBlDQo+IHRoYXQNCj4gLQkgKiB3ZSB3ZXJlIGFscmVhZHkgdXNpbmcgYW5kIGFyZW4ndCBjaGFu Z2luZyBhdCBhbGwgaGVyZSB0bw0KPiBzdWRkZW5seQ0KPiAtCSAqIGJlY29tZSBpbnZhbGlkIGlm IGl0cyBEREIgbmVlZHMgZXhjZWVkcyBpdHMgbmV3IGFsbG9jYXRpb24uDQo+IC0JICoNCj4gLQkg KiBOb3RlIHRoYXQgaWYgd2Ugd2luZCB1cCBkb2luZyBhIGZ1bGwgRERCIHJlY29tcHV0ZSwgd2Ug Y2FuJ3QNCj4gbGV0DQo+IC0JICogYW55IG90aGVyIGRpc3BsYXkgdXBkYXRlcyByYWNlIHdpdGgg dGhpcyB0cmFuc2FjdGlvbiwgc28gd2UNCj4gbmVlZA0KPiAtCSAqIHRvIGdyYWIgdGhlIGxvY2sg b24gKmFsbCogQ1JUQydzLg0KPiAtCSAqLw0KPiAtCWlmIChzdGF0ZS0+YWN0aXZlX3BpcGVfY2hh bmdlcyB8fCBzdGF0ZS0+bW9kZXNldCkgew0KPiAtCQlyZXQgPSBpbnRlbF9hZGRfYWxsX3BpcGVz KHN0YXRlKTsNCj4gKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 YywgY3J0Y19zdGF0ZSwgaSkgew0KPiArCQlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2Ri dWZfc3RhdGU7DQo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9z dGF0ZTsNCj4gKw0KPiArCQluZXdfZGJ1Zl9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfZGJ1Zl9z dGF0ZShzdGF0ZSk7DQo+ICsJCWlmIChJU19FUlIobmV3X2RidWZfc3RhdGUpKQ0KPiArCQkJcmV0 dXJuIHJldDsNCj4gKw0KPiArCQlvbGRfZGJ1Zl9zdGF0ZSA9DQo+IGludGVsX2F0b21pY19nZXRf b2xkX2RidWZfc3RhdGUoc3RhdGUpOw0KPiArDQo+ICsJCW5ld19kYnVmX3N0YXRlLT5hY3RpdmVf cGlwZXMgPQ0KPiArCQkJaW50ZWxfY2FsY19hY3RpdmVfcGlwZXMoc3RhdGUsIG9sZF9kYnVmX3N0 YXRlLQ0KPiA+YWN0aXZlX3BpcGVzKTsNCj4gKw0KPiArCQlpZiAob2xkX2RidWZfc3RhdGUtPmFj dGl2ZV9waXBlcyA9PSBuZXdfZGJ1Zl9zdGF0ZS0NCj4gPmFjdGl2ZV9waXBlcykNCj4gKwkJCWJy ZWFrOw0KPiArDQo+ICsJCXJldCA9IGludGVsX2F0b21pY19sb2NrX2dsb2JhbF9zdGF0ZSgmbmV3 X2RidWZfc3RhdGUtDQo+ID5iYXNlKTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCXJldHVybiByZXQ7 DQo+ICsNCj4gKwkJLyoNCj4gKwkJICogc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0 cygpIGN1cnJlbnRseQ0KPiByZXF1aXJlcw0KPiArCQkgKiBhbGwgYWN0aXZlIHBpcGVzIHRvIGJl IGluY2x1ZGVkIGluIHRoZSBzdGF0ZSBzbyB0aGF0DQo+ICsJCSAqIGl0IGNhbiByZWRpc3RyaWJ1 dGUgdGhlIGRidWYgYW1vbmcgdGhlbS4NCj4gKwkJICovDQo+ICsJCXJldCA9IGludGVsX2FkZF9h ZmZlY3RlZF9waXBlcyhzdGF0ZSwNCj4gKwkJCQkJICAgICAgIG5ld19kYnVmX3N0YXRlLQ0KPiA+ YWN0aXZlX3BpcGVzKTsNCj4gIAkJaWYgKHJldCkNCj4gIAkJCXJldHVybiByZXQ7DQo+ICsNCj4g KwkJYnJlYWs7DQo+ICAJfQ0KPiAgDQo+ICAJcmV0dXJuIDA7DQo+IEBAIC03NDkzLDMgKzc1MTEs NTIgQEAgdm9pZCBpbnRlbF9wbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2 X3ByaXYpDQo+ICAJZGV2X3ByaXYtPnJ1bnRpbWVfcG0uc3VzcGVuZGVkID0gZmFsc2U7DQo+ICAJ YXRvbWljX3NldCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCwgMCk7DQo+ICB9 DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0YXRlICppbnRlbF9kYnVmX2R1 cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QNCj4gaW50ZWxfZ2xvYmFsX29iaiAqb2JqKQ0KPiArew0KPiAr CXN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpkYnVmX3N0YXRlOw0KPiArDQo+ICsJZGJ1Zl9zdGF0 ZSA9IGttZW1kdXAob2JqLT5zdGF0ZSwgc2l6ZW9mKCpkYnVmX3N0YXRlKSwNCj4gR0ZQX0tFUk5F TCk7DQo+ICsJaWYgKCFkYnVmX3N0YXRlKQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiArCXJl dHVybiAmZGJ1Zl9zdGF0ZS0+YmFzZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaW50ZWxf ZGJ1Zl9kZXN0cm95X3N0YXRlKHN0cnVjdCBpbnRlbF9nbG9iYWxfb2JqICpvYmosDQo+ICsJCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlrZnJlZShz dGF0ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0 YXRlX2Z1bmNzIGludGVsX2RidWZfZnVuY3MgPSB7DQo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3Rh dGUgPSBpbnRlbF9kYnVmX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUgPSBpbnRlbF9kYnVmX2Rlc3Ryb3lfc3RhdGUsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgaW50 ZWxfZGJ1Zl9zdGF0ZSAqDQo+ICtpbnRlbF9hdG9taWNfZ2V0X2RidWZfc3RhdGUoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOw0KPiArCXN0cnVjdCBpbnRl bF9nbG9iYWxfc3RhdGUgKmRidWZfc3RhdGU7DQo+ICsNCj4gKwlkYnVmX3N0YXRlID0gaW50ZWxf YXRvbWljX2dldF9nbG9iYWxfb2JqX3N0YXRlKHN0YXRlLA0KPiAmZGV2X3ByaXYtPmRidWYub2Jq KTsNCj4gKwlpZiAoSVNfRVJSKGRidWZfc3RhdGUpKQ0KPiArCQlyZXR1cm4gRVJSX0NBU1QoZGJ1 Zl9zdGF0ZSk7DQo+ICsNCj4gKwlyZXR1cm4gdG9faW50ZWxfZGJ1Zl9zdGF0ZShkYnVmX3N0YXRl KTsNCj4gK30NCj4gKw0KPiAraW50IGludGVsX2RidWZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpDQo+ICt7DQo+ICsJc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRidWZf c3RhdGU7DQo+ICsNCj4gKwlkYnVmX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKmRidWZfc3RhdGUp LCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIWRidWZfc3RhdGUpDQo+ICsJCXJldHVybiAtRU5PTUVN Ow0KPiArDQo+ICsJaW50ZWxfYXRvbWljX2dsb2JhbF9vYmpfaW5pdChkZXZfcHJpdiwgJmRldl9w cml2LT5kYnVmLm9iaiwNCj4gKwkJCQkgICAgICZkYnVmX3N0YXRlLT5iYXNlLA0KPiAmaW50ZWxf ZGJ1Zl9mdW5jcyk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5oDQo+IGluZGV4IGQ2MGE4NTQyMWM1YS4uZmFkZjdjYmM0NGM0IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmgNCj4gQEAgLTgsNiArOCw4IEBADQo+ICANCj4gICNpbmNsdWRl IDxsaW51eC90eXBlcy5oPg0KPiAgDQo+ICsjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9nbG9iYWxf c3RhdGUuaCINCj4gKw0KPiAgI2luY2x1ZGUgImk5MTVfcmVnLmgiDQo+ICANCj4gIHN0cnVjdCBk cm1fZGV2aWNlOw0KPiBAQCAtNTksNCArNjEsMjQgQEAgdm9pZCBpbnRlbF9lbmFibGVfaXBjKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdik7DQo+ICANCj4gIGJvb2wgaW50ZWxf c2V0X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbA0K PiBlbmFibGUpOw0KPiAgDQo+ICtzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSB7DQo+ICsJc3RydWN0 IGludGVsX2dsb2JhbF9zdGF0ZSBiYXNlOw0KPiArDQo+ICsJdTggZW5hYmxlZF9zbGljZXM7DQo+ ICsJdTggYWN0aXZlX3BpcGVzOw0KPiArfTsNCj4gKw0KPiAraW50IGludGVsX2RidWZfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOw0KPiArDQo+ICtzdHJ1Y3QgaW50ZWxf ZGJ1Zl9zdGF0ZSAqDQo+ICtpbnRlbF9hdG9taWNfZ2V0X2RidWZfc3RhdGUoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUpOw0KPiArDQo+ICsjZGVmaW5lIHRvX2ludGVsX2RidWZfc3Rh dGUoeCkgY29udGFpbmVyX29mKCh4KSwgc3RydWN0DQo+IGludGVsX2RidWZfc3RhdGUsIGJhc2Up DQo+ICsjZGVmaW5lIGludGVsX2F0b21pY19nZXRfb2xkX2RidWZfc3RhdGUoc3RhdGUpIFwNCj4g Kwl0b19pbnRlbF9kYnVmX3N0YXRlKGludGVsX2F0b21pY19nZXRfb2xkX2dsb2JhbF9vYmpfc3Rh dGUoc3RhdGUNCj4gLCAmdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpLT5kYnVmLm9iaikpDQo+ICsj ZGVmaW5lIGludGVsX2F0b21pY19nZXRfbmV3X2RidWZfc3RhdGUoc3RhdGUpIFwNCj4gKwl0b19p bnRlbF9kYnVmX3N0YXRlKGludGVsX2F0b21pY19nZXRfbmV3X2dsb2JhbF9vYmpfc3RhdGUoc3Rh dGUNCj4gLCAmdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpLT5kYnVmLm9iaikpDQo+ICsNCj4gK2lu dCBpbnRlbF9kYnVmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsNCj4g Kw0KPiAgI2VuZGlmIC8qIF9fSU5URUxfUE1fSF9fICovDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK