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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 02608C433EF for ; Tue, 30 Nov 2021 13:21:47 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 249686E976; Tue, 30 Nov 2021 13:21:47 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id ED1FB6E981 for ; Tue, 30 Nov 2021 13:21:45 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10183"; a="236441152" X-IronPort-AV: E=Sophos;i="5.87,275,1631602800"; d="scan'208";a="236441152" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2021 05:21:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,275,1631602800"; d="scan'208";a="477110420" Received: from irsmsx602.ger.corp.intel.com ([163.33.146.8]) by orsmga002.jf.intel.com with ESMTP; 30 Nov 2021 05:21:44 -0800 Received: from irsmsx605.ger.corp.intel.com (163.33.146.138) by irsmsx602.ger.corp.intel.com (163.33.146.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 30 Nov 2021 13:21:43 +0000 Received: from irsmsx605.ger.corp.intel.com ([163.33.146.138]) by IRSMSX605.ger.corp.intel.com ([163.33.146.138]) with mapi id 15.01.2308.020; Tue, 30 Nov 2021 13:21:43 +0000 From: "Kahola, Mika" To: Ville Syrjala , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH 03/20] drm/i915/fbc: Nuke lots of crap from intel_fbc_state_cache Thread-Index: AQHX4Se0w918uR4+T0uAItkWsokRy6wcGAwA Date: Tue, 30 Nov 2021 13:21:43 +0000 Message-ID: <031cf12e60cf48929f2174bca6b122b7@intel.com> References: <20211124113652.22090-1-ville.syrjala@linux.intel.com> <20211124113652.22090-4-ville.syrjala@linux.intel.com> In-Reply-To: <20211124113652.22090-4-ville.syrjala@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.253.164] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 03/20] drm/i915/fbc: Nuke lots of crap from intel_fbc_state_cache 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: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJbnRlbC1nZnggPGludGVsLWdm eC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmIE9mIFZpbGxlDQo+IFN5 cmphbGENCj4gU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAyNCwgMjAyMSAxOjM3IFBNDQo+IFRv OiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IFN1YmplY3Q6IFtJbnRlbC1nZnhd IFtQQVRDSCAwMy8yMF0gZHJtL2k5MTUvZmJjOiBOdWtlIGxvdHMgb2YgY3JhcCBmcm9tDQo+IGlu dGVsX2ZiY19zdGF0ZV9jYWNoZQ0KPiANCj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4NCj4gDQo+IFRoZXJlJ3Mgbm8gbmVlZCB0byBzdG9yZSBh bGwgdGhpcyBzdHVmZiBpbiBpbnRlbF9mYmNfc3RhdGVfY2FjaGUuDQo+IEp1c3QgY2hlY2sgaXQg YWxsIGFnYWluc3QgdGhlIHBsYW5lL2NydGMgc3RhdGVzIGFuZCBzdG9yZSBvbmx5IHdoYXQgd2Ug bmVlZC4NCj4gUHJvYmFibHkgbW9yZSBzaG91bGQgZ2V0IG51a2VkIHN0aWxsLCBidXQgdGhpcyBp cyBhIHN0YXJ0Lg0KPiANCj4gU28gd2hhdCB3ZSdsbCBkbyBpczoNCj4gLSBlYWNoIHBsYW5lIHdp bGwgY2hlY2sgaXRzIG93biBzdGF0ZSBhbmQgdXBkYXRlIGl0cyBsb2NhbA0KPiAgIG5vX2ZiY19y ZWFzb24NCj4gLSB0aGUgcGVyLXBsYW5lIG5vX2ZiY19yZWFzb24gKGlmIGFueSkgdGhlbiBnZXRz IHByb3BhZ2F0ZWQNCj4gICB0byB0aGUgY2FjaGUtPm5vX2ZiY19yZWFzb24gd2hpbGUgZG9pbmcg dGhlIGFjdHVhbCB1cGRhdGUNCj4gLSBmYmMtPm5vX2ZiY19yZWFzb24gZ2V0cyB1cGRhdGVkIGlu IHRoZSBlbmQgd2l0aCBlaXRoZXINCj4gICB0aGUgdmFsdWUgZnJvbSB0aGUgY2FjaGUgb3IgZGly ZWN0bHkgZnJvbSBmcm9udGJ1ZmZlcg0KPiAgIHRyYWNraW5nDQo+IA0KPiBJdCdzIHN0aWxsIGEg Yml0IG1lc3N5LCBidXQgc2hvdWxkIGhvcGVmdWx5IGdldCBjbGVhbmVkIHVwIG1vcmUgaW4gdGhl IGZ1dHVyZS4gQXQNCj4gbGVhc3Qgbm93IHdlIGNhbiBvYnNlcnZlIGVhY2ggcGxhbmUncyByZWFz b25zIGZvciByZWplY3RpbmcgRkJDIG5vdyBtb3JlDQo+IGNvbnNpc3RlbnRseSwgYW5kIHdlIGRv bid0IGhhdmUgc28gbWN1aCByZWR1bmRhbnQgc3RhdGUgc3RvcmUgYWxsIG92ZXIgdGhlDQo+IHBs YWNlLg0KPiANCj4gdjI6IHN0b3JlIG5vX2ZiY19yZWFzb24gcGVyLXBsYW5lIGluc3RlYWQgb2Yg cGVyLXBpcGUNCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+DQoNClJldmlld2VkLWJ5OiBNaWthIEthaG9sYSA8bWlrYS5r YWhvbGFAaW50ZWwuY29tPg0KDQo+IC0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMgIHwgICA1ICstDQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3R5cGVzLmggICAgfCAgIDQgKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZmJjLmMgICAgICB8IDM0MSArKysrKysrKy0tLS0tLS0tLS0NCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmggICAgICB8ICAgMyArLQ0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDIwICstDQo+ICA1 IGZpbGVzIGNoYW5nZWQsIDE2NiBpbnNlcnRpb25zKCspLCAyMDcgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBp bmRleCBiMmQ1MWNkNzlkNmMuLjUyMGE4N2M4MTRhNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gQEAgLTgwMzksNyArODAzOSw2IEBA IHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+ ICAJaWYgKHJldCkNCj4gIAkJZ290byBmYWlsOw0KPiANCj4gLQlpbnRlbF9mYmNfY2hvb3NlX2Ny dGMoZGV2X3ByaXYsIHN0YXRlKTsNCj4gIAlyZXQgPSBpbnRlbF9jb21wdXRlX2dsb2JhbF93YXRl cm1hcmtzKHN0YXRlKTsNCj4gIAlpZiAocmV0KQ0KPiAgCQlnb3RvIGZhaWw7DQo+IEBAIC04MDcx LDYgKzgwNzAsMTAgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9k ZXZpY2UNCj4gKmRldiwNCj4gIAlpZiAocmV0KQ0KPiAgCQlnb3RvIGZhaWw7DQo+IA0KPiArCXJl dCA9IGludGVsX2ZiY19hdG9taWNfY2hlY2soc3RhdGUpOw0KPiArCWlmIChyZXQpDQo+ICsJCWdv dG8gZmFpbDsNCj4gKw0KPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwNCj4gIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBp KSB7DQo+ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5hc3luY19mbGlwKSB7IGRpZmYgLS1n aXQNCj4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMu aA0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5o DQo+IGluZGV4IGVhMWU4YTZlMTBiMC4uNWRmNDc3ZGZiOGNkIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaA0KPiBAQCAt Njg3LDYgKzY4Nyw4IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7DQo+IA0KPiAgCS8qIENs ZWFyIENvbG9yIFZhbHVlICovDQo+ICAJdTY0IGNjdmFsOw0KPiArDQo+ICsJY29uc3QgY2hhciAq bm9fZmJjX3JlYXNvbjsNCj4gIH07DQo+IA0KPiAgc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVf Y29uZmlnIHsNCj4gQEAgLTExMTcsOCArMTExOSw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl IHsNCj4gDQo+ICAJYm9vbCBjcmNfZW5hYmxlZDsNCj4gDQo+IC0JYm9vbCBlbmFibGVfZmJjOw0K PiAtDQo+ICAJYm9vbCBkb3VibGVfd2lkZTsNCj4gDQo+ICAJaW50IHBibjsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMNCj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jDQo+IGluZGV4IDA4M2MwY2FiNDg0Ny4u OGJkZTM2ODFiOTZlIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2ZiYy5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZmJjLmMNCj4gQEAgLTQzLDYgKzQzLDcgQEANCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIg0KPiAg I2luY2x1ZGUgImk5MTVfdHJhY2UuaCINCj4gICNpbmNsdWRlICJpOTE1X3ZncHUuaCINCj4gKyNp bmNsdWRlICJpbnRlbF9jZGNsay5oIg0KPiAgI2luY2x1ZGUgImludGVsX2RlLmgiDQo+ICAjaW5j bHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5oIg0KPiAgI2luY2x1ZGUgImludGVsX2ZiYy5oIg0K PiBAQCAtNTgsMjAgKzU5LDYgQEAgc3RydWN0IGludGVsX2ZiY19mdW5jcyB7DQo+ICAJdm9pZCAo KnNldF9mYWxzZV9jb2xvcikoc3RydWN0IGludGVsX2ZiYyAqZmJjLCBib29sIGVuYWJsZSk7ICB9 Ow0KPiANCj4gLS8qDQo+IC0gKiBGb3IgU0tMKywgdGhlIHBsYW5lIHNvdXJjZSBzaXplIHVzZWQg YnkgdGhlIGhhcmR3YXJlIGlzIGJhc2VkIG9uIHRoZSB2YWx1ZQ0KPiB3ZQ0KPiAtICogd3JpdGUg dG8gdGhlIFBMQU5FX1NJWkUgcmVnaXN0ZXIuIEZvciBCRFctLCB0aGUgaGFyZHdhcmUgbG9va3Mg YXQgdGhlIHZhbHVlDQo+IC0gKiB3ZSB3cm90ZSB0byBQSVBFU1JDLg0KPiAtICovDQo+IC1zdGF0 aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKGNvbnN0IHN0cnVjdCBpbnRl bF9mYmNfc3RhdGVfY2FjaGUNCj4gKmNhY2hlLA0KPiAtCQkJCQkgICAgaW50ICp3aWR0aCwgaW50 ICpoZWlnaHQpDQo+IC17DQo+IC0JaWYgKHdpZHRoKQ0KPiAtCQkqd2lkdGggPSBjYWNoZS0+cGxh bmUuc3JjX3c7DQo+IC0JaWYgKGhlaWdodCkNCj4gLQkJKmhlaWdodCA9IGNhY2hlLT5wbGFuZS5z cmNfaDsNCj4gLX0NCj4gLQ0KPiAgLyogcGxhbmUgc3RyaWRlIGluIHBpeGVscyAqLw0KPiAgc3Rh dGljIHVuc2lnbmVkIGludCBpbnRlbF9mYmNfcGxhbmVfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZQ0KPiAqcGxhbmVfc3RhdGUpICB7IEBAIC03OTYsOSArNzgzLDEzIEBAIHZv aWQgaW50ZWxfZmJjX2NsZWFudXAoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpDQo+ ICAJbXV0ZXhfdW5sb2NrKCZmYmMtPmxvY2spOw0KPiAgfQ0KPiANCj4gLXN0YXRpYyBib29sIHN0 cmlkZV9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwNCj4gLQkJCSAgICB1 NjQgbW9kaWZpZXIsIHVuc2lnbmVkIGludCBzdHJpZGUpDQo+ICtzdGF0aWMgYm9vbCBzdHJpZGVf aXNfdmFsaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlDQo+ICsqcGxhbmVfc3RhdGUp DQo+ICB7DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOw0KPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOw0KPiArCXVuc2lnbmVkIGludCBzdHJpZGUgPSBp bnRlbF9mYmNfcGxhbmVfc3RyaWRlKHBsYW5lX3N0YXRlKSAqDQo+ICsJCWZiLT5mb3JtYXQtPmNw cFswXTsNCj4gKw0KPiAgCS8qIFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBjYXVnaHQgZWFybGllci4g Ki8NCj4gIAlpZiAoZHJtX1dBUk5fT05fT05DRSgmaTkxNS0+ZHJtLCAoc3RyaWRlICYgKDY0IC0g MSkpICE9IDApKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IEBAIC04MTUsNyArODA2LDcgQEAgc3Rh dGljIGJvb2wgc3RyaWRlX2lzX3ZhbGlkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICppOTE1 LA0KPiANCj4gIAkvKiBEaXNwbGF5IFdBICMxMTA1OiBza2wsYnh0LGtibCxjZmwsZ2xrICovDQo+ ICAJaWYgKChESVNQTEFZX1ZFUihpOTE1KSA9PSA5IHx8IElTX0dFTUlOSUxBS0UoaTkxNSkpICYm DQo+IC0JICAgIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiAmJiBzdHJpZGUgJiA1 MTEpDQo+ICsJICAgIGZiLT5tb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgJiYgc3Ry aWRlICYgNTExKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAgCWlmIChzdHJpZGUgPiAxNjM4 NCkNCj4gQEAgLTgyNCwxMCArODE1LDEyIEBAIHN0YXRpYyBib29sIHN0cmlkZV9pc192YWxpZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqaTkxNSwNCj4gIAlyZXR1cm4gdHJ1ZTsNCj4gIH0N Cj4gDQo+IC1zdGF0aWMgYm9vbCBwaXhlbF9mb3JtYXRfaXNfdmFsaWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsDQo+IC0JCQkJICB1MzIgcGl4ZWxfZm9ybWF0KQ0KPiArc3RhdGljIGJv b2wgcGl4ZWxfZm9ybWF0X2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZQ0K PiArKnBsYW5lX3N0YXRlKQ0KPiAgew0KPiAtCXN3aXRjaCAocGl4ZWxfZm9ybWF0KSB7DQo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lLT5kZXYpOw0KPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOw0KPiArDQo+ICsJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsN Cj4gIAljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6DQo+ICAJY2FzZSBEUk1fRk9STUFUX1hCR1I4 ODg4Og0KPiAgCQlyZXR1cm4gdHJ1ZTsNCj4gQEAgLTg0NSwxMCArODM4LDEzIEBAIHN0YXRpYyBi b29sIHBpeGVsX2Zvcm1hdF9pc192YWxpZChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwNCj4gIAl9DQo+ICB9DQo+IA0KPiAtc3RhdGljIGJvb2wgcm90YXRpb25faXNfdmFsaWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsDQo+IC0JCQkgICAgICB1MzIgcGl4ZWxfZm9ybWF0 LCB1bnNpZ25lZCBpbnQgcm90YXRpb24pDQo+ICtzdGF0aWMgYm9vbCByb3RhdGlvbl9pc192YWxp ZChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUNCj4gKypwbGFuZV9zdGF0ZSkNCj4gIHsN Cj4gLQlpZiAoRElTUExBWV9WRVIoaTkxNSkgPj0gOSAmJiBwaXhlbF9mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9SR0I1NjUNCj4gJiYNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRv X2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7DQo+ICsJY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7DQo+ICsJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOw0KPiArDQo+ICsJaWYgKERJU1BM QVlfVkVSKGk5MTUpID49IDkgJiYgZmItPmZvcm1hdC0+Zm9ybWF0ID09DQo+IERSTV9GT1JNQVRf UkdCNTY1DQo+ICsmJg0KPiAgCSAgICBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkN Cj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCWVsc2UgaWYgKERJU1BMQVlfVkVSKGk5MTUpIDw9IDQg JiYgIUlTX0c0WChpOTE1KSAmJiBAQCAtODY0LDEwDQo+ICs4NjAsOSBAQCBzdGF0aWMgYm9vbCBy b3RhdGlvbl9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwNCj4gICAqIHRo ZSBYIGFuZCBZIG9mZnNldCByZWdpc3RlcnMuIFRoYXQncyB3aHkgd2UgaW5jbHVkZSB0aGUgc3Jj IHgveSBvZmZzZXRzDQo+ICAgKiBpbnN0ZWFkIG9mIGp1c3QgbG9va2luZyBhdCB0aGUgcGxhbmUg c2l6ZS4NCj4gICAqLw0KPiAtc3RhdGljIGJvb2wgaW50ZWxfZmJjX2h3X3RyYWNraW5nX2NvdmVy c19zY3JlZW4oc3RydWN0IGludGVsX2ZiYyAqZmJjLA0KPiAtCQkJCQkJc3RydWN0IGludGVsX2Ny dGMgKmNydGMpDQo+ICtzdGF0aWMgYm9vbCBpbnRlbF9mYmNfaHdfdHJhY2tpbmdfY292ZXJzX3Nj cmVlbihjb25zdCBzdHJ1Y3QNCj4gK2ludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkNCj4g IHsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGZiYy0+aTkxNTsNCj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGku cGxhbmUtPmRldik7DQo+ICAJdW5zaWduZWQgaW50IGVmZmVjdGl2ZV93LCBlZmZlY3RpdmVfaCwg bWF4X3csIG1heF9oOw0KPiANCj4gIAlpZiAoRElTUExBWV9WRVIoaTkxNSkgPj0gMTApIHsNCj4g QEAgLTg4NCwxOCArODc5LDIwIEBAIHN0YXRpYyBib29sDQo+IGludGVsX2ZiY19od190cmFja2lu Z19jb3ZlcnNfc2NyZWVuKHN0cnVjdCBpbnRlbF9mYmMgKmZiYywNCj4gIAkJbWF4X2ggPSAxNTM2 Ow0KPiAgCX0NCj4gDQo+IC0JaW50ZWxfZmJjX2dldF9wbGFuZV9zb3VyY2Vfc2l6ZSgmZmJjLT5z dGF0ZV9jYWNoZSwgJmVmZmVjdGl2ZV93LA0KPiAtCQkJCQkmZWZmZWN0aXZlX2gpOw0KPiAtCWVm ZmVjdGl2ZV93ICs9IGZiYy0+c3RhdGVfY2FjaGUucGxhbmUuYWRqdXN0ZWRfeDsNCj4gLQllZmZl Y3RpdmVfaCArPSBmYmMtPnN0YXRlX2NhY2hlLnBsYW5lLmFkanVzdGVkX3k7DQo+ICsJZWZmZWN0 aXZlX3cgPSBwbGFuZV9zdGF0ZS0+dmlldy5jb2xvcl9wbGFuZVswXS54ICsNCj4gKwkJKGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2KTsNCj4gKwllZmZlY3RpdmVf aCA9IHBsYW5lX3N0YXRlLT52aWV3LmNvbG9yX3BsYW5lWzBdLnkgKw0KPiArCQkoZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2KTsNCj4gDQo+ICAJcmV0dXJuIGVm ZmVjdGl2ZV93IDw9IG1heF93ICYmIGVmZmVjdGl2ZV9oIDw9IG1heF9oOyAgfQ0KPiANCj4gLXN0 YXRpYyBib29sIHRpbGluZ19pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwN Cj4gLQkJCSAgICB1NjQgbW9kaWZpZXIpDQo+ICtzdGF0aWMgYm9vbCB0aWxpbmdfaXNfdmFsaWQo Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlDQo+ICsqcGxhbmVfc3RhdGUpDQo+ICB7DQo+ IC0Jc3dpdGNoIChtb2RpZmllcikgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsNCj4gKwljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsNCj4gKw0KPiArCXN3 aXRjaCAoZmItPm1vZGlmaWVyKSB7DQo+ICAJY2FzZSBEUk1fRk9STUFUX01PRF9MSU5FQVI6DQo+ ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoNCj4gIAljYXNlIEk5MTVfRk9STUFUX01P RF9ZZl9USUxFRDoNCj4gQEAgLTkxNiwxNSArOTEzLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2Zi Y191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICAJc3Ry dWN0IGludGVsX2ZiY19zdGF0ZV9jYWNoZSAqY2FjaGUgPSAmZmJjLT5zdGF0ZV9jYWNoZTsNCj4g IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsNCj4gDQo+ IC0JY2FjaGUtPnBsYW5lLnZpc2libGUgPSBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOw0KPiAt CWlmICghY2FjaGUtPnBsYW5lLnZpc2libGUpDQo+ICsJY2FjaGUtPm5vX2ZiY19yZWFzb24gPSBw bGFuZV9zdGF0ZS0+bm9fZmJjX3JlYXNvbjsNCj4gKwlpZiAoY2FjaGUtPm5vX2ZiY19yZWFzb24p DQo+ICAJCXJldHVybjsNCj4gDQo+IC0JY2FjaGUtPmNydGMubW9kZV9mbGFncyA9IGNydGNfc3Rh dGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3M7DQo+IC0JaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwg SVNfQlJPQURXRUxMKGk5MTUpKQ0KPiAtCQljYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3JhdGUg PSBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOw0KPiAtDQo+IC0JY2FjaGUtPnBsYW5lLnJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOw0KPiAgCS8qDQo+ICAJICogU3JjIGNvb3JkaW5h dGVzIGFyZSBhbHJlYWR5IHJvdGF0ZWQgYnkgMjcwIGRlZ3JlZXMgZm9yDQo+ICAJICogdGhlIDkw LzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1hdGNoIHRoZSBAQCAtOTMyLDEw DQo+ICs5MjQsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCSAqLw0KPiAgCWNhY2hlLT5wbGFuZS5zcmNfdyA9 IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Ow0KPiAgCWNhY2hl LT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsNCj4gLQljYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeCA9IHBsYW5lX3N0YXRlLT52aWV3LmNv bG9yX3BsYW5lWzBdLng7DQo+IC0JY2FjaGUtPnBsYW5lLmFkanVzdGVkX3kgPSBwbGFuZV9zdGF0 ZS0+dmlldy5jb2xvcl9wbGFuZVswXS55Ow0KPiAtDQo+IC0JY2FjaGUtPnBsYW5lLnBpeGVsX2Js ZW5kX21vZGUgPSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZTsNCj4gDQo+ICAJY2Fj aGUtPmZiLmZvcm1hdCA9IGZiLT5mb3JtYXQ7DQo+ICAJY2FjaGUtPmZiLm1vZGlmaWVyID0gZmIt Pm1vZGlmaWVyOw0KPiBAQCAtOTU0LDggKzk0Miw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY191 cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICAJCWNhY2hl LT5mZW5jZV9pZCA9IHBsYW5lX3N0YXRlLT5nZ3R0X3ZtYS0+ZmVuY2UtPmlkOw0KPiAgCWVsc2UN Cj4gIAkJY2FjaGUtPmZlbmNlX2lkID0gLTE7DQo+IC0NCj4gLQljYWNoZS0+cHNyMl9hY3RpdmUg PSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9m YmNfY2ZiX3NpemVfY2hhbmdlZChzdHJ1Y3QgaW50ZWxfZmJjICpmYmMpIEBAIC0xMDA3LDYNCj4g Kzk5MywxMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nhbl9lbmFibGUoc3RydWN0IGludGVs X2ZiYyAqZmJjKQ0KPiAgCXJldHVybiB0cnVlOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyBpbnQgaW50 ZWxfZmJjX2NoZWNrX3BsYW5lKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiAr CQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQ0KPiArew0KPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOw0KPiArCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQ0KPiArCQlpbnRlbF9hdG9taWNfZ2V0X25l d19wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOw0KPiArCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0ZS0+dWFwaS5jcnRjKTsNCj4gKwljb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsNCj4gKwlzdHJ1Y3QgaW50ZWxfZmJj ICpmYmMgPSBwbGFuZS0+ZmJjOw0KPiArDQo+ICsJaWYgKCFmYmMpDQo+ICsJCXJldHVybiAwOw0K PiArDQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7DQo+ICsJCXBsYW5lX3N0 YXRlLT5ub19mYmNfcmVhc29uID0gInBsYW5lIG5vdCB2aXNpYmxlIjsNCj4gKwkJcmV0dXJuIDA7 DQo+ICsJfQ0KPiArDQo+ICsJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfbmV3X2NydGNf c3RhdGUoc3RhdGUsIGNydGMpOw0KPiArDQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUuZmxhZ3MgJg0KPiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgew0KPiArCQlwbGFuZV9z dGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJpbnRlcmxhY2VkIG1vZGUgbm90DQo+IHN1cHBvcnRlZCI7 DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKw0KPiArCS8qDQo+ICsJICogRGlzcGxheSAxMisg aXMgbm90IHN1cHBvcnRpbmcgRkJDIHdpdGggUFNSMi4NCj4gKwkgKiBSZWNvbW1lbmRhdGlvbiBp cyB0byBrZWVwIHRoaXMgY29tYmluYXRpb24gZGlzYWJsZWQNCj4gKwkgKiBCc3BlYzogNTA0MjIg SFNEOiAxNDAxMDI2MDAwMg0KPiArCSAqLw0KPiArCWlmIChESVNQTEFZX1ZFUihpOTE1KSA+PSAx MiAmJiBjcnRjX3N0YXRlLT5oYXNfcHNyMikgew0KPiArCQlwbGFuZV9zdGF0ZS0+bm9fZmJjX3Jl YXNvbiA9ICJQU1IyIGVuYWJsZWQiOw0KPiArCQlyZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiArDQo+ ICsJaWYgKCFwaXhlbF9mb3JtYXRfaXNfdmFsaWQocGxhbmVfc3RhdGUpKSB7DQo+ICsJCXBsYW5l X3N0YXRlLT5ub19mYmNfcmVhc29uID0gInBpeGVsIGZvcm1hdCBub3Qgc3VwcG9ydGVkIjsNCj4g KwkJcmV0dXJuIDA7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCF0aWxpbmdfaXNfdmFsaWQocGxhbmVf c3RhdGUpKSB7DQo+ICsJCXBsYW5lX3N0YXRlLT5ub19mYmNfcmVhc29uID0gInRpbGluZyBub3Qg c3VwcG9ydGVkIjsNCj4gKwkJcmV0dXJuIDA7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFyb3RhdGlv bl9pc192YWxpZChwbGFuZV9zdGF0ZSkpIHsNCj4gKwkJcGxhbmVfc3RhdGUtPm5vX2ZiY19yZWFz b24gPSAicm90YXRpb24gbm90IHN1cHBvcnRlZCI7DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4g Kw0KPiArCWlmICghc3RyaWRlX2lzX3ZhbGlkKHBsYW5lX3N0YXRlKSkgew0KPiArCQlwbGFuZV9z dGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJzdHJpZGUgbm90IHN1cHBvcnRlZCI7DQo+ICsJCXJldHVy biAwOw0KPiArCX0NCj4gKw0KPiArCWlmIChwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9k ZSAhPQ0KPiBEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FICYmDQo+ICsJICAgIGZiLT5mb3JtYXQt Pmhhc19hbHBoYSkgew0KPiArCQlwbGFuZV9zdGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJwZXItcGl4 ZWwgYWxwaGEgbm90IHN1cHBvcnRlZCI7DQo+ICsJCXJldHVybiBmYWxzZTsNCj4gKwl9DQo+ICsN Cj4gKwlpZiAoIWludGVsX2ZiY19od190cmFja2luZ19jb3ZlcnNfc2NyZWVuKHBsYW5lX3N0YXRl KSkgew0KPiArCQlwbGFuZV9zdGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJwbGFuZSBzaXplIHRvbyBi aWciOw0KPiArCQlyZXR1cm4gMDsNCj4gKwl9DQo+ICsNCj4gKwkvKg0KPiArCSAqIFdvcmsgYXJv dW5kIGEgcHJvYmxlbSBvbiBHRU45KyBIVywgd2hlcmUgZW5hYmxpbmcgRkJDIG9uIGENCj4gcGxh bmUNCj4gKwkgKiBoYXZpbmcgYSBZIG9mZnNldCB0aGF0IGlzbid0IGRpdmlzaWJsZSBieSA0IGNh dXNlcyBGSUZPIHVuZGVycnVuDQo+ICsJICogYW5kIHNjcmVlbiBmbGlja2VyLg0KPiArCSAqLw0K PiArCWlmIChESVNQTEFZX1ZFUihpOTE1KSA+PSA5ICYmDQo+ICsJICAgIHBsYW5lX3N0YXRlLT52 aWV3LmNvbG9yX3BsYW5lWzBdLnkgJiAzKSB7DQo+ICsJCXBsYW5lX3N0YXRlLT5ub19mYmNfcmVh c29uID0gInBsYW5lIHN0YXJ0IFkgb2Zmc2V0IG1pc2FsaWduZWQiOw0KPiArCQlyZXR1cm4gZmFs c2U7DQo+ICsJfQ0KPiArDQo+ICsJLyogV2FfMjIwMTA3NTExNjY6IGljbCwgZWhsLCB0Z2wsIGRn MSwgcmtsICovDQo+ICsJaWYgKERJU1BMQVlfVkVSKGk5MTUpID49IDExICYmDQo+ICsJICAgIChw bGFuZV9zdGF0ZS0+dmlldy5jb2xvcl9wbGFuZVswXS55ICsNCj4gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+dWFwaS5zcmMpKSAmIDMpIHsNCj4gKwkJcGxhbmVfc3RhdGUtPm5vX2ZiY19y ZWFzb24gPSAicGxhbmUgZW5kIFkgb2Zmc2V0IG1pc2FsaWduZWQiOw0KPiArCQlyZXR1cm4gZmFs c2U7DQo+ICsJfQ0KPiArDQo+ICsJLyogV2FGYmNFeGNlZWRDZENsb2NrVGhyZXNob2xkOmhzdyxi ZHcgKi8NCj4gKwlpZiAoSVNfSEFTV0VMTChpOTE1KSB8fCBJU19CUk9BRFdFTEwoaTkxNSkpIHsN Cj4gKwkJY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZTsNCj4gKw0K PiArCQljZGNsa19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY2RjbGtfc3RhdGUoc3RhdGUpOw0K PiArCQlpZiAoSVNfRVJSKGNkY2xrX3N0YXRlKSkNCj4gKwkJCXJldHVybiBQVFJfRVJSKGNkY2xr X3N0YXRlKTsNCj4gKw0KPiArCQlpZiAoY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSA+PSBjZGNsa19z dGF0ZS0+bG9naWNhbC5jZGNsayAqIDk1IC8NCj4gMTAwKSB7DQo+ICsJCQlwbGFuZV9zdGF0ZS0+ bm9fZmJjX3JlYXNvbiA9ICJwaXhlbCByYXRlIHRvbyBoaWdoIjsNCj4gKwkJCXJldHVybiAwOw0K PiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJcGxhbmVfc3RhdGUtPm5vX2ZiY19yZWFzb24gPSBOVUxM Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBib29sIGludGVsX2Zi Y19jYW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpICB7DQo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsgQEAgLTEwMTYs OA0KPiArMTEwNiw4IEBAIHN0YXRpYyBib29sIGludGVsX2ZiY19jYW5fYWN0aXZhdGUoc3RydWN0 IGludGVsX2NydGMgKmNydGMpDQo+ICAJaWYgKCFpbnRlbF9mYmNfY2FuX2VuYWJsZShmYmMpKQ0K PiAgCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAtCWlmICghY2FjaGUtPnBsYW5lLnZpc2libGUpIHsN Cj4gLQkJZmJjLT5ub19mYmNfcmVhc29uID0gInByaW1hcnkgcGxhbmUgbm90IHZpc2libGUiOw0K PiArCWlmIChjYWNoZS0+bm9fZmJjX3JlYXNvbikgew0KPiArCQlmYmMtPm5vX2ZiY19yZWFzb24g PSBjYWNoZS0+bm9fZmJjX3JlYXNvbjsNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4gDQo+ IEBAIC0xMDI5LDE2ICsxMTE5LDYgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nhbl9hY3RpdmF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Yw0KPiAqY3J0YykNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0N Cj4gDQo+IC0JaWYgKGNhY2hlLT5jcnRjLm1vZGVfZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVS TEFDRSkgew0KPiAtCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAiaW5jb21wYXRpYmxlIG1vZGUiOw0K PiAtCQlyZXR1cm4gZmFsc2U7DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKCFpbnRlbF9mYmNfaHdfdHJh Y2tpbmdfY292ZXJzX3NjcmVlbihmYmMsIGNydGMpKSB7DQo+IC0JCWZiYy0+bm9fZmJjX3JlYXNv biA9ICJtb2RlIHRvbyBsYXJnZSBmb3IgY29tcHJlc3Npb24iOw0KPiAtCQlyZXR1cm4gZmFsc2U7 DQo+IC0JfQ0KPiAtDQo+ICAJLyogVGhlIHVzZSBvZiBhIENQVSBmZW5jZSBpcyBvbmUgb2YgdHdv IHdheXMgdG8gZGV0ZWN0IHdyaXRlcyBieSB0aGUNCj4gIAkgKiBDUFUgdG8gdGhlIHNjYW5vdXQg YW5kIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgRkJDLg0KPiAgCSAqDQo+IEBAIC0xMDYxLDQyICsx MTQxLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nhbl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxf Y3J0Yw0KPiAqY3J0YykNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4gDQo+IC0JaWYgKCFw aXhlbF9mb3JtYXRfaXNfdmFsaWQoaTkxNSwgY2FjaGUtPmZiLmZvcm1hdC0+Zm9ybWF0KSkgew0K PiAtCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicGl4ZWwgZm9ybWF0IGlzIGludmFsaWQiOw0KPiAt CQlyZXR1cm4gZmFsc2U7DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKCFyb3RhdGlvbl9pc192YWxpZChp OTE1LCBjYWNoZS0+ZmIuZm9ybWF0LT5mb3JtYXQsDQo+IC0JCQkgICAgICAgY2FjaGUtPnBsYW5l LnJvdGF0aW9uKSkgew0KPiAtCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicm90YXRpb24gdW5zdXBw b3J0ZWQiOw0KPiAtCQlyZXR1cm4gZmFsc2U7DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKCF0aWxpbmdf aXNfdmFsaWQoaTkxNSwgY2FjaGUtPmZiLm1vZGlmaWVyKSkgew0KPiAtCQlmYmMtPm5vX2ZiY19y ZWFzb24gPSAidGlsaW5nIHVuc3VwcG9ydGVkIjsNCj4gLQkJcmV0dXJuIGZhbHNlOw0KPiAtCX0N Cj4gLQ0KPiAtCWlmICghc3RyaWRlX2lzX3ZhbGlkKGk5MTUsIGNhY2hlLT5mYi5tb2RpZmllciwN Cj4gLQkJCSAgICAgY2FjaGUtPmZiLnN0cmlkZSAqIGNhY2hlLT5mYi5mb3JtYXQtPmNwcFswXSkp IHsNCj4gLQkJZmJjLT5ub19mYmNfcmVhc29uID0gImZyYW1lYnVmZmVyIHN0cmlkZSBub3Qgc3Vw cG9ydGVkIjsNCj4gLQkJcmV0dXJuIGZhbHNlOw0KPiAtCX0NCj4gLQ0KPiAtCWlmIChjYWNoZS0+ cGxhbmUucGl4ZWxfYmxlbmRfbW9kZSAhPQ0KPiBEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FICYm DQo+IC0JICAgIGNhY2hlLT5mYi5mb3JtYXQtPmhhc19hbHBoYSkgew0KPiAtCQlmYmMtPm5vX2Zi Y19yZWFzb24gPSAicGVyLXBpeGVsIGFscGhhIGJsZW5kaW5nIGlzIGluY29tcGF0aWJsZQ0KPiB3 aXRoIEZCQyI7DQo+IC0JCXJldHVybiBmYWxzZTsNCj4gLQl9DQo+IC0NCj4gLQkvKiBXYUZiY0V4 Y2VlZENkQ2xvY2tUaHJlc2hvbGQ6aHN3LGJkdyAqLw0KPiAtCWlmICgoSVNfSEFTV0VMTChpOTE1 KSB8fCBJU19CUk9BRFdFTEwoaTkxNSkpICYmDQo+IC0JICAgIGNhY2hlLT5jcnRjLmhzd19iZHdf cGl4ZWxfcmF0ZSA+PSBpOTE1LT5jZGNsay5ody5jZGNsayAqIDk1IC8gMTAwKSB7DQo+IC0JCWZi Yy0+bm9fZmJjX3JlYXNvbiA9ICJwaXhlbCByYXRlIGlzIHRvbyBiaWciOw0KPiAtCQlyZXR1cm4g ZmFsc2U7DQo+IC0JfQ0KPiAtDQo+IC0JLyogSXQgaXMgcG9zc2libGUgZm9yIHRoZSByZXF1aXJl ZCBDRkIgc2l6ZSBjaGFuZ2Ugd2l0aG91dCBhDQo+ICsJLyoNCj4gKwkgKiBJdCBpcyBwb3NzaWJs ZSBmb3IgdGhlIHJlcXVpcmVkIENGQiBzaXplIGNoYW5nZSB3aXRob3V0IGENCj4gIAkgKiBjcnRj LT5kaXNhYmxlICsgY3J0Yy0+ZW5hYmxlIHNpbmNlIGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0 aGUNCj4gIAkgKiBzdHJpZGUgd2l0aG91dCB0cmlnZ2VyaW5nIGEgZnVsbCBtb2Rlc2V0LiBTaW5j ZSB3ZSB0cnkgdG8NCj4gIAkgKiBvdmVyLWFsbG9jYXRlIHRoZSBDRkIsIHRoZXJlJ3MgYSBjaGFu Y2Ugd2UgbWF5IGtlZXAgRkJDIGVuYWJsZWQNCj4gZXZlbiBAQCAtMTEwNSw0MCArMTE1MSwxMyBA QCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdA0KPiBpbnRlbF9jcnRj ICpjcnRjKQ0KPiAgCSAqIGZvciBhIGZyYW1lLCBmcmVlIHRoZSBzdG9sZW4gbm9kZSwgdGhlbiB0 cnkgdG8gcmVlbmFibGUgRkJDIGluIGNhc2UNCj4gIAkgKiB3ZSBkaWRuJ3QgZ2V0IGFueSBpbnZh bGlkYXRlL2RlYWN0aXZhdGUgY2FsbHMsIGJ1dCB0aGlzIHdvdWxkIHJlcXVpcmUNCj4gIAkgKiBh IGxvdCBvZiB0cmFja2luZyBqdXN0IGZvciBhIHNwZWNpZmljIGNhc2UuIElmIHdlIGNvbmNsdWRl IGl0J3MgYW4NCj4gLQkgKiBpbXBvcnRhbnQgY2FzZSwgd2UgY2FuIGltcGxlbWVudCBpdCBsYXRl ci4gKi8NCj4gKwkgKiBpbXBvcnRhbnQgY2FzZSwgd2UgY2FuIGltcGxlbWVudCBpdCBsYXRlci4N Cj4gKwkgKi8NCj4gIAlpZiAoaW50ZWxfZmJjX2NmYl9zaXplX2NoYW5nZWQoZmJjKSkgew0KPiAg CQlmYmMtPm5vX2ZiY19yZWFzb24gPSAiQ0ZCIHJlcXVpcmVtZW50cyBjaGFuZ2VkIjsNCj4gIAkJ cmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4gDQo+IC0JLyoNCj4gLQkgKiBXb3JrIGFyb3VuZCBhIHBy b2JsZW0gb24gR0VOOSsgSFcsIHdoZXJlIGVuYWJsaW5nIEZCQyBvbiBhDQo+IHBsYW5lDQo+IC0J ICogaGF2aW5nIGEgWSBvZmZzZXQgdGhhdCBpc24ndCBkaXZpc2libGUgYnkgNCBjYXVzZXMgRklG TyB1bmRlcnJ1bg0KPiAtCSAqIGFuZCBzY3JlZW4gZmxpY2tlci4NCj4gLQkgKi8NCj4gLQlpZiAo RElTUExBWV9WRVIoaTkxNSkgPj0gOSAmJg0KPiAtCSAgICAoZmJjLT5zdGF0ZV9jYWNoZS5wbGFu ZS5hZGp1c3RlZF95ICYgMykpIHsNCj4gLQkJZmJjLT5ub19mYmNfcmVhc29uID0gInBsYW5lIFkg b2Zmc2V0IGlzIG1pc2FsaWduZWQiOw0KPiAtCQlyZXR1cm4gZmFsc2U7DQo+IC0JfQ0KPiAtDQo+ IC0JLyogV2FfMjIwMTA3NTExNjY6IGljbCwgZWhsLCB0Z2wsIGRnMSwgcmtsICovDQo+IC0JaWYg KERJU1BMQVlfVkVSKGk5MTUpID49IDExICYmDQo+IC0JICAgIChjYWNoZS0+cGxhbmUuc3JjX2gg KyBjYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeSkgJSA0KSB7DQo+IC0JCWZiYy0+bm9fZmJjX3JlYXNv biA9ICJwbGFuZSBoZWlnaHQgKyBvZmZzZXQgaXMgbm9uLW1vZHVsbyBvZg0KPiA0IjsNCj4gLQkJ cmV0dXJuIGZhbHNlOw0KPiAtCX0NCj4gLQ0KPiAtCS8qDQo+IC0JICogRGlzcGxheSAxMisgaXMg bm90IHN1cHBvcnRpbmcgRkJDIHdpdGggUFNSMi4NCj4gLQkgKiBSZWNvbW1lbmRhdGlvbiBpcyB0 byBrZWVwIHRoaXMgY29tYmluYXRpb24gZGlzYWJsZWQNCj4gLQkgKiBCc3BlYzogNTA0MjIgSFNE OiAxNDAxMDI2MDAwMg0KPiAtCSAqLw0KPiAtCWlmIChmYmMtPnN0YXRlX2NhY2hlLnBzcjJfYWN0 aXZlICYmIERJU1BMQVlfVkVSKGk5MTUpID49IDEyKSB7DQo+IC0JCWZiYy0+bm9fZmJjX3JlYXNv biA9ICJub3Qgc3VwcG9ydGVkIHdpdGggUFNSMiI7DQo+IC0JCXJldHVybiBmYWxzZTsNCj4gLQl9 DQo+IC0NCj4gIAlyZXR1cm4gdHJ1ZTsNCj4gIH0NCj4gDQo+IEBAIC0xMTU3LDggKzExNzYsNiBA QCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3JlZ19wYXJhbXMoc3RydWN0IGludGVsX2ZiYw0K PiAqZmJjLA0KPiAgCXBhcmFtcy0+ZmVuY2VfeV9vZmZzZXQgPSBjYWNoZS0+ZmVuY2VfeV9vZmZz ZXQ7DQo+IA0KPiAgCXBhcmFtcy0+aW50ZXJ2YWwgPSBjYWNoZS0+aW50ZXJ2YWw7DQo+IC0NCj4g LQlwYXJhbXMtPmNydGMucGlwZSA9IGNydGMtPnBpcGU7DQo+ICAJcGFyYW1zLT5jcnRjLmk5eHhf cGxhbmUgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpLQ0KPiA+aTl4eF9wbGFu ZTsNCj4gDQo+ICAJcGFyYW1zLT5mYi5mb3JtYXQgPSBjYWNoZS0+ZmIuZm9ybWF0Ow0KPiBAQCAt MTE2OCw4ICsxMTg1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX2dldF9yZWdfcGFyYW1zKHN0 cnVjdCBpbnRlbF9mYmMNCj4gKmZiYywNCj4gIAlwYXJhbXMtPmNmYl9zdHJpZGUgPSBpbnRlbF9m YmNfY2ZiX3N0cmlkZShmYmMsIGNhY2hlKTsNCj4gIAlwYXJhbXMtPmNmYl9zaXplID0gaW50ZWxf ZmJjX2NmYl9zaXplKGZiYywgY2FjaGUpOw0KPiAgCXBhcmFtcy0+b3ZlcnJpZGVfY2ZiX3N0cmlk ZSA9IGludGVsX2ZiY19vdmVycmlkZV9jZmJfc3RyaWRlKGZiYywNCj4gY2FjaGUpOw0KPiAtDQo+ IC0JcGFyYW1zLT5wbGFuZV92aXNpYmxlID0gY2FjaGUtPnBsYW5lLnZpc2libGU7DQo+ICB9DQo+ IA0KPiAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nhbl9mbGlwX251a2UoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+IEBAIC0xMTgzLDkgKzExOTgsNiBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2ZsaXBfbnVrZShjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkNCj4gIAlpZiAoZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVz ZXQoJmNydGNfc3RhdGUtPnVhcGkpKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAtCWlmICgh cGFyYW1zLT5wbGFuZV92aXNpYmxlKQ0KPiAtCQlyZXR1cm4gZmFsc2U7DQo+IC0NCj4gIAlpZiAo IWludGVsX2ZiY19jYW5fYWN0aXZhdGUoY3J0YykpDQo+ICAJCXJldHVybiBmYWxzZTsNCj4gDQo+ IEBAIC0xMzgxLDYzICsxMzkzLDIxIEBAIHZvaWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LA0KPiAgCW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsNCj4gIH0N Cj4gDQo+IC0vKioNCj4gLSAqIGludGVsX2ZiY19jaG9vc2VfY3J0YyAtIHNlbGVjdCBhIENSVEMg dG8gZW5hYmxlIEZCQyBvbg0KPiAtICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlDQo+IC0g KiBAc3RhdGU6IHRoZSBhdG9taWMgc3RhdGUgc3RydWN0dXJlDQo+IC0gKg0KPiAtICogVGhpcyBm dW5jdGlvbiBsb29rcyBhdCB0aGUgcHJvcG9zZWQgc3RhdGUgZm9yIENSVENzIGFuZCBwbGFuZXMs IHRoZW4gY2hvb3Nlcw0KPiAtICogd2hpY2ggcGlwZSBpcyBnb2luZyB0byBoYXZlIEZCQyBieSBz ZXR0aW5nIGludGVsX2NydGNfc3RhdGUtPmVuYWJsZV9mYmMgdG8NCj4gLSAqIHRydWUuDQo+IC0g Kg0KPiAtICogTGF0ZXIsIGludGVsX2ZiY19lbmFibGUgaXMgZ29pbmcgdG8gbG9vayBmb3Igc3Rh dGUtPmVuYWJsZV9mYmMgYW5kIHRoZW4NCj4gbWF5YmUNCj4gLSAqIGVuYWJsZSBGQkMgZm9yIHRo ZSBjaG9zZW4gQ1JUQy4gSWYgaXQgZG9lcywgaXQgd2lsbCBzZXQgaTkxNS0+ZmJjLmNydGMuDQo+ IC0gKi8NCj4gLXZvaWQgaW50ZWxfZmJjX2Nob29zZV9jcnRjKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LA0KPiAtCQkJICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+ ICtpbnQgaW50ZWxfZmJjX2F0b21pY19jaGVjayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkNCj4gIHsNCj4gLQlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmaTkxNS0+ZmJjOw0KPiAt CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7DQo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZTsNCj4gLQlib29sIGNydGNfY2hvc2VuID0gZmFsc2U7DQo+ICsJc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZTsNCj4gIAlpbnQgaTsNCj4gDQo+IC0JbXV0ZXhfbG9jaygmZmJj LT5sb2NrKTsNCj4gLQ0KPiAtCS8qIERvZXMgdGhpcyBhdG9taWMgY29tbWl0IGludm9sdmUgdGhl IENSVEMgY3VycmVudGx5IHRpZWQgdG8gRkJDPyAqLw0KPiAtCWlmIChmYmMtPmNydGMgJiYNCj4g LQkgICAgIWludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGZiYy0+Y3J0Yykp DQo+IC0JCWdvdG8gb3V0Ow0KPiAtDQo+IC0JaWYgKCFpbnRlbF9mYmNfY2FuX2VuYWJsZShmYmMp KQ0KPiAtCQlnb3RvIG91dDsNCj4gLQ0KPiAtCS8qIFNpbXBseSBjaG9vc2UgdGhlIGZpcnN0IENS VEMgdGhhdCBpcyBjb21wYXRpYmxlIGFuZCBoYXMgYSB2aXNpYmxlDQo+IC0JICogcGxhbmUuIFdl IGNvdWxkIGdvIGZvciBmYW5jaWVyIHNjaGVtZXMgc3VjaCBhcyBjaGVja2luZyB0aGUgcGxhbmUN Cj4gLQkgKiBzaXplLCBidXQgdGhpcyB3b3VsZCBqdXN0IGFmZmVjdCB0aGUgZmV3IHBsYXRmb3Jt cyB0aGF0IGRvbid0IHRpZSBGQkMNCj4gLQkgKiB0byBwaXBlIG9yIHBsYW5lIEEuICovDQo+ICAJ Zm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3Rh dGUsIGkpIHsNCj4gLQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7DQo+IC0J CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0ZS0+aHcu Y3J0Yyk7DQo+ICsJCWludCByZXQ7DQo+IA0KPiAtCQlpZiAocGxhbmUtPmZiYyAhPSBmYmMpDQo+ IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUp DQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dl dF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7DQo+IC0NCj4gLQkJY3J0Y19zdGF0ZS0+ZW5h YmxlX2ZiYyA9IHRydWU7DQo+IC0JCWNydGNfY2hvc2VuID0gdHJ1ZTsNCj4gLQkJYnJlYWs7DQo+ ICsJCXJldCA9IGludGVsX2ZiY19jaGVja19wbGFuZShzdGF0ZSwgcGxhbmUpOw0KPiArCQlpZiAo cmV0KQ0KPiArCQkJcmV0dXJuIHJldDsNCj4gIAl9DQo+IA0KPiAtCWlmICghY3J0Y19jaG9zZW4p DQo+IC0JCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJubyBzdWl0YWJsZSBDUlRDIGZvciBGQkMiOw0K PiAtDQo+IC1vdXQ6DQo+IC0JbXV0ZXhfdW5sb2NrKCZmYmMtPmxvY2spOw0KPiArCXJldHVybiAw Ow0KPiAgfQ0KPiANCj4gIC8qKg0KPiBAQCAtMTQ4NywxMiArMTQ1NywxMCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9mYmNfZW5hYmxlKHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0K PiANCj4gIAlpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKGNydGMsIGNydGNfc3RhdGUsIHBs YW5lX3N0YXRlKTsNCj4gDQo+IC0JLyogRklYTUUgY3J0Y19zdGF0ZS0+ZW5hYmxlX2ZiYyBsaWVz IDooICovDQo+IC0JaWYgKCFjYWNoZS0+cGxhbmUudmlzaWJsZSkNCj4gKwlpZiAoY2FjaGUtPm5v X2ZiY19yZWFzb24pDQo+ICAJCWdvdG8gb3V0Ow0KPiANCj4gIAlpZiAoaW50ZWxfZmJjX2FsbG9j X2NmYihmYmMsIGludGVsX2ZiY19jZmJfc2l6ZShmYmMsIGNhY2hlKSwgbWluX2xpbWl0KSkgew0K PiAtCQljYWNoZS0+cGxhbmUudmlzaWJsZSA9IGZhbHNlOw0KPiAgCQlmYmMtPm5vX2ZiY19yZWFz b24gPSAibm90IGVub3VnaCBzdG9sZW4gbWVtb3J5IjsNCj4gIAkJZ290byBvdXQ7DQo+ICAJfQ0K PiBAQCAtMTU0MSwxMCArMTUwOSwxNyBAQCB2b2lkIGludGVsX2ZiY19kaXNhYmxlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKSAgdm9pZA0KPiBpbnRlbF9mYmNfdXBkYXRlKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLA0KPiAgCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykN Cj4gIHsNCj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoY3J0 Yy0+YmFzZS5wcmltYXJ5KTsNCj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSA9DQo+ICAJCWludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNy dGMpOw0KPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQ0K PiArCQlpbnRlbF9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPiAr CXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9IHBsYW5lLT5mYmM7DQo+IA0KPiAtCWlmIChjcnRjX3N0 YXRlLT51cGRhdGVfcGlwZSAmJiAhY3J0Y19zdGF0ZS0+ZW5hYmxlX2ZiYykNCj4gKwlpZiAoIWZi YyB8fCAhcGxhbmVfc3RhdGUpDQo+ICsJCXJldHVybjsNCj4gKw0KPiArCWlmIChjcnRjX3N0YXRl LT51cGRhdGVfcGlwZSAmJiBwbGFuZV9zdGF0ZS0+bm9fZmJjX3JlYXNvbikNCj4gIAkJaW50ZWxf ZmJjX2Rpc2FibGUoY3J0Yyk7DQo+ICAJZWxzZQ0KPiAgCQlpbnRlbF9mYmNfZW5hYmxlKHN0YXRl LCBjcnRjKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZmJjLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5oDQo+ IGluZGV4IGNlNDhhMjJjNWU5ZS4uNzQ0OTJlMDVhMWM5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmgNCj4gQEAgLTE3LDggKzE3LDcgQEAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGU7ICBzdHJ1Y3QgaW50ZWxfZmJjOyAgc3RydWN0DQo+IGludGVsX3BsYW5l X3N0YXRlOw0KPiANCj4gLXZvaWQgaW50ZWxfZmJjX2Nob29zZV9jcnRjKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwNCj4gLQkJCSAgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKTsNCj4gK2ludCBpbnRlbF9mYmNfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlKTsNCj4gIGJvb2wgaW50ZWxfZmJjX2lzX2FjdGl2ZShzdHJ1Y3QgaW50 ZWxfZmJjICpmYmMpOyAgYm9vbA0KPiBpbnRlbF9mYmNfaXNfY29tcHJlc3Npbmcoc3RydWN0IGlu dGVsX2ZiYyAqZmJjKTsgIGJvb2wNCj4gaW50ZWxfZmJjX3ByZV91cGRhdGUoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUsIGRpZmYgLS1naXQNCj4gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBpbmRleA0KPiAx YmZhZGQ5MTI3ZmMuLmQ3OWFhODI3ZDkzNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o DQo+IEBAIC00MzQsMjYgKzQzNCwxMSBAQCBzdHJ1Y3QgaW50ZWxfZmJjIHsNCj4gIAkgKiB0aGVz ZSBwcm9ibGVtcy4NCj4gIAkgKi8NCj4gIAlzdHJ1Y3QgaW50ZWxfZmJjX3N0YXRlX2NhY2hlIHsN Cj4gLQkJc3RydWN0IHsNCj4gLQkJCXVuc2lnbmVkIGludCBtb2RlX2ZsYWdzOw0KPiAtCQkJdTMy IGhzd19iZHdfcGl4ZWxfcmF0ZTsNCj4gLQkJfSBjcnRjOw0KPiArCQljb25zdCBjaGFyICpub19m YmNfcmVhc29uOw0KPiANCj4gIAkJc3RydWN0IHsNCj4gLQkJCXVuc2lnbmVkIGludCByb3RhdGlv bjsNCj4gIAkJCWludCBzcmNfdzsNCj4gIAkJCWludCBzcmNfaDsNCj4gLQkJCWJvb2wgdmlzaWJs ZTsNCj4gLQkJCS8qDQo+IC0JCQkgKiBEaXNwbGF5IHN1cmZhY2UgYmFzZSBhZGRyZXNzIGFkanVz dGVtZW50IGZvcg0KPiAtCQkJICogcGFnZWZsaXBzLiBOb3RlIHRoYXQgb24gZ2VuNCsgdGhpcyBv bmx5IGFkanVzdHMgdXANCj4gLQkJCSAqIHRvIGEgdGlsZSwgb2Zmc2V0cyB3aXRoaW4gYSB0aWxl IGFyZSBoYW5kbGVkIGluDQo+IC0JCQkgKiB0aGUgaHcgaXRzZWxmICh3aXRoIHRoZSBUSUxFT0ZG IHJlZ2lzdGVyKS4NCj4gLQkJCSAqLw0KPiAtCQkJaW50IGFkanVzdGVkX3g7DQo+IC0JCQlpbnQg YWRqdXN0ZWRfeTsNCj4gLQ0KPiAtCQkJdTE2IHBpeGVsX2JsZW5kX21vZGU7DQo+ICAJCX0gcGxh bmU7DQo+IA0KPiAgCQlzdHJ1Y3Qgew0KPiBAQCAtNDY1LDcgKzQ1MCw2IEBAIHN0cnVjdCBpbnRl bF9mYmMgew0KPiAgCQl1bnNpZ25lZCBpbnQgZmVuY2VfeV9vZmZzZXQ7DQo+ICAJCXUxNiBpbnRl cnZhbDsNCj4gIAkJczggZmVuY2VfaWQ7DQo+IC0JCWJvb2wgcHNyMl9hY3RpdmU7DQo+ICAJfSBz dGF0ZV9jYWNoZTsNCj4gDQo+ICAJLyoNCj4gQEAgLTQ3Nyw3ICs0NjEsNiBAQCBzdHJ1Y3QgaW50 ZWxfZmJjIHsNCj4gIAkgKi8NCj4gIAlzdHJ1Y3QgaW50ZWxfZmJjX3JlZ19wYXJhbXMgew0KPiAg CQlzdHJ1Y3Qgew0KPiAtCQkJZW51bSBwaXBlIHBpcGU7DQo+ICAJCQllbnVtIGk5eHhfcGxhbmVf aWQgaTl4eF9wbGFuZTsNCj4gIAkJfSBjcnRjOw0KPiANCj4gQEAgLTQ5Myw3ICs0NzYsNiBAQCBz dHJ1Y3QgaW50ZWxfZmJjIHsNCj4gIAkJdTE2IG92ZXJyaWRlX2NmYl9zdHJpZGU7DQo+ICAJCXUx NiBpbnRlcnZhbDsNCj4gIAkJczggZmVuY2VfaWQ7DQo+IC0JCWJvb2wgcGxhbmVfdmlzaWJsZTsN Cj4gIAl9IHBhcmFtczsNCj4gDQo+ICAJY29uc3QgY2hhciAqbm9fZmJjX3JlYXNvbjsNCj4gLS0N Cj4gMi4zMi4wDQoNCg==