From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sripada, Radhakrishna" Subject: Re: [PATCH v3 2/2] drm/i915: Make sure we have enough memory bandwidth on ICL Date: Wed, 8 May 2019 21:05:06 +0000 Message-ID: <5824e3c4eea47fbbef262a9fdbfe90c7012eacb0.camel@intel.com> References: <20190503190831.1759-1-ville.syrjala@linux.intel.com> <20190503190831.1759-2-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3CC589973 for ; Wed, 8 May 2019 21:05:20 +0000 (UTC) In-Reply-To: <20190503190831.1759-2-ville.syrjala@linux.intel.com> Content-Language: en-US Content-ID: <199CDED64D081A44B36558659366D9E5@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE5LTA1LTAzIGF0IDIyOjA4ICswMzAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOg0K PiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0K PiANCj4gSUNMIGhhcyBzbyBtYW55IHBsYW5lcyB0aGF0IGl0IGNhbiBlYXNpbHkgZXhjZWVkIHRo ZSBtYXhpbXVtDQo+IGVmZmVjdGl2ZSBtZW1vcnkgYmFuZHdpZHRoIG9mIHRoZSBzeXN0ZW0uIFdl IG11c3QgdGhlcmVmb3JlIGNoZWNrDQo+IHRoYXQgd2UgZG9uJ3QgZXhjZWVkIHRoYXQgbGltaXQu DQo+IA0KPiBUaGUgYWxnb3JpdGhtIGlzIHZlcnkgbWFnaWMgbnVtYmVyIGhlYXZ5IGFuZCBsYWNr cyBzdWZmaWNpZW50DQo+IGV4cGxhbmF0aW9uIGZvciBub3cuIFdlIGFsc28gaGF2ZSBubyBzYW5l IHdheSB0byBxdWVyeSB0aGUNCj4gbWVtb3J5IGNsb2NrIGFuZCB0aW1pbmdzLCBzbyB3ZSBtdXN0 IHJlbHkgb24gYSBjb21iaW5hdGlvbiBvZg0KPiByYXcgcmVhZG91dCBmcm9tIHRoZSBtZW1vcnkg Y29udHJvbGxlciBhbmQgaGFyZGNvZGVkIGFzc3VtcHRpb25zLg0KPiBUaGUgbWVtb3J5IGNvbnRy b2xsZXIgdmFsdWVzIG9idmlvdXNseSBjaGFuZ2UgYXMgdGhlIHN5c3RlbQ0KPiBqdW1wcyBiZXR3 ZWVuIHRoZSBkaWZmZXJlbnQgU0FHViBwb2ludHMsIHNvIHdlIHRyeSB0byBzdGFiaWxpemUNCj4g aXQgZmlyc3QgYnkgZGlzYWJsaW5nIFNBR1YgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcmVhZG91 dC4NCj4gDQo+IFRoZSB1dGlsaXplZCBiYW5kd2lkdGggaXMgdHJhY2tlZCB2aWEgYSBkZXZpY2Ug d2lkZSBhdG9taWMNCj4gcHJpdmF0ZSBvYmplY3QuIFRoYXQgaXMgYWN0dWFsbHkgbm90IHJvYnVz dCBiZWNhdXNlIHdlIGNhbid0DQo+IGFmZm9yZCB0byBlbmZvcmNlIHN0cmljdCBnbG9iYWwgb3Jk ZXJpbmcgYmV0d2VlbiB0aGUgcGlwZXMuDQo+IFRodXMgSSB0aGluayBJJ2xsIG5lZWQgdG8gY2hh bmdlIHRoaXMgdG8gc2ltcGx5IGNob3AgdXAgdGhlDQo+IGF2YWlsYWJsZSBiYW5kd2lkdGggYmV0 d2VlbiBhbGwgdGhlIGFjdGl2ZSBwaXBlcy4gRWFjaCBwaXBlDQo+IGNhbiB0aGVuIGRvIHdoYXRl dmVyIGl0IHdhbnRzIGFzIGxvbmcgYXMgaXQgZG9lc24ndCBleGNlZWQNCj4gaXRzIGJ1ZGdldC4g VGhhdCBzY2hlbWUgd2lsbCBhbHNvIHJlcXVpcmUgdGhhdCB3ZSBhc3N1bWUgdGhhdA0KPiBhbnkg bnVtYmVyIG9mIHBsYW5lcyBjb3VsZCBiZSBhY3RpdmUgYXQgYW55IHRpbWUuDQo+IA0KPiBUT0RP OiBtYWtlIGl0IHJvYnVzdCBhbmQgZGVhbCB3aXRoIGFsbCB0aGUgb3BlbiBxdWVzdGlvbnMNCj4g DQo+IHYyOiBTbGVlcCBsb25nZXIgYWZ0ZXIgZGlzYWJsaW5nIFNBR1YNCj4gdjM6IFBvbGwgZm9y IHRoZSBkY2xrIHRvIGdldCByYWlzZWQgKHNlZW4gaXQgdGFrZSAyNTBtcyEpDQo+ICAgICBJZiB0 aGUgc3lzdGVtIGhhcyAyMTMzTVQvcyBtZW1vcnkgdGhlbiB3ZSBwb2ludGxlc3NseQ0KPiAgICAg d2FpdCBvbmUgZnVsbCBzZWNvbmQgOigNCj4gdjQ6IFVzZSB0aGUgbmV3IHBjb2RlIGludGVyZmFj ZSB0byBnZXQgdGhlIHFndiBwb2ludHMgcmF0aGVyDQo+ICAgICB0aGF0IHVzaW5nIGhhcmRjb2Rl ZCBudW1iZXJzDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPg0KPiAtLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlICAgICAgICAgICAgIHwgICAxICsNCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgICAgICAgICAgIHwgMjI5DQo+ICsrKysrKysrKysrKysrKysrKysrKysNCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgIHwgIDEwICsNCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgIHwgICAzICsNCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIHwgIDIwICsrDQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuaCB8ICAgMiArDQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9idy5jICAgICAgICAgICB8IDE4MSArKysrKysrKysrKysrKysrKw0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYncuaCAgICAgICAgICAgfCAgNDYgKysrKysNCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgIDQwICsrKy0NCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgIHwgICAyICsNCj4gIDEwIGZp bGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYncuYw0KPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmgNCj4gDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQ0KPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlDQo+IGluZGV4IDY4MTA2ZmUzNWEwNC4uMTM5YTBmYzE5MzkwIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQ0KPiBAQCAtMTM4LDYgKzEzOCw3IEBAIGk5MTUteSArPSBpbnRl bF9hdWRpby5vIFwNCj4gIAkgIGludGVsX2F0b21pYy5vIFwNCj4gIAkgIGludGVsX2F0b21pY19w bGFuZS5vIFwNCj4gIAkgIGludGVsX2Jpb3MubyBcDQo+ICsJICBpbnRlbF9idy5vIFwNCj4gIAkg IGludGVsX2NkY2xrLm8gXA0KPiAgCSAgaW50ZWxfY29sb3IubyBcDQo+ICAJICBpbnRlbF9jb21i b19waHkubyBcDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j DQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYw0KPiBpbmRleCA1ZWQ4NjQ3NTJj N2IuLmI3ZmE3YjUxYzJlMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jDQo+IEBAIC03 MCw2ICs3MCw3IEBADQo+ICAjaW5jbHVkZSAiaW50ZWxfb3ZlcmxheS5oIg0KPiAgI2luY2x1ZGUg ImludGVsX3BpcGVfY3JjLmgiDQo+ICAjaW5jbHVkZSAiaW50ZWxfcG0uaCINCj4gKyNpbmNsdWRl ICJpbnRlbF9zaWRlYmFuZC5oIg0KPiAgI2luY2x1ZGUgImludGVsX3Nwcml0ZS5oIg0KPiAgI2lu Y2x1ZGUgImludGVsX3VjLmgiDQo+ICANCj4gQEAgLTE0MzUsNiArMTQzNiwyMzIgQEAgYnh0X2dl dF9kcmFtX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2KQ0KPiAgCXJl dHVybiAwOw0KPiAgfQ0KPiAgDQo+ICtzdHJ1Y3QgaW50ZWxfcWd2X3BvaW50IHsNCj4gKwl1MTYg ZGNsaywgdF9ycCwgdF9yZHByZSwgdF9yYywgdF9yYXMsIHRfcmNkOw0KPiArfTsNCj4gKw0KPiAr c3RydWN0IGludGVsX3NhZ3ZfaW5mbyB7DQo+ICsJc3RydWN0IGludGVsX3Fndl9wb2ludCBwb2lu dHNbM107DQo+ICsJdTggbnVtX3BvaW50czsNCj4gKwl1OCBudW1fY2hhbm5lbHM7DQo+ICsJdTgg dF9ibDsNCj4gKwllbnVtIGludGVsX2RyYW1fdHlwZSBkcmFtX3R5cGU7DQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgaW50IGljbF9wY29kZV9yZWFkX21lbV9nbG9iYWxfaW5mbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYsDQo+ICsJCQkJCSAgc3RydWN0IGludGVsX3NhZ3ZfaW5m byAqc2kpDQo+ICt7DQo+ICsJdTMyIHZhbCA9IDA7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJl dCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsDQo+ICsJCQkJICAgICBJQ0xfUENP REVfTUVNX1NVQlNZU1lTVEVNX0lORk8gfA0KPiArCQkJCSAgICAgSUNMX1BDT0RFX01FTV9TU19S RUFEX0dMT0JBTF9JTkZPLA0KPiArCQkJCSAgICAgJnZhbCwgTlVMTCk7DQo+ICsJaWYgKHJldCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXN3aXRjaCAodmFsICYgMHhmKSB7DQo+ICsJY2Fz ZSAwOg0KPiArCQlzaS0+ZHJhbV90eXBlID0gSU5URUxfRFJBTV9ERFI0Ow0KPiArCQlicmVhazsN Cj4gKwljYXNlIDE6DQo+ICsJCXNpLT5kcmFtX3R5cGUgPSBJTlRFTF9EUkFNX0REUjM7DQo+ICsJ CWJyZWFrOw0KPiArCWNhc2UgMjoNCj4gKwkJc2ktPmRyYW1fdHlwZSA9IElOVEVMX0RSQU1fTFBE RFIzOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDM6DQo+ICsJCXNpLT5kcmFtX3R5cGUgPSBJTlRF TF9EUkFNX0xQRERSMzsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJTUlTU0lOR19D QVNFKHZhbCAmIDB4Zik7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCXNpLT5udW1fY2hh bm5lbHMgPSAodmFsICYgMHhmMCkgPj4gNDsNCj4gKwlzaS0+bnVtX3BvaW50cyA9ICh2YWwgJiAw eGYwMCkgPj4gODsNCj4gKw0KPiArCXNpLT50X2JsID0gc2ktPmRyYW1fdHlwZSA9PSBJTlRFTF9E UkFNX0REUjQgPyA0IDogODsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IGljbF9wY29kZV9yZWFkX3Fndl9wb2ludF9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlDQo+ICpkZXZfcHJpdiwNCj4gKwkJCQkJIHN0cnVjdCBpbnRlbF9xZ3ZfcG9pbnQgKnNwLA0K PiArCQkJCQkgaW50IHBvaW50KQ0KQXJlIHdlIHRyeWluZyB0byByZXRyaWV2ZSB0aGUgZHJhbSB0 aW1pbmcgcGFyYW1ldGVycyB0byBjYWxjdWxhdGUgdGhlDQpsYXRlbmN5PyBJZiBzbyBjYW4gdGhh dCBiZSBzZXBlcmF0ZWQgYXMgbGF0ZW5jeSBjYWxjdWxhdGlvbiBpbnN0ZWFkIG9mDQp1c2luZyBp dCB1bmRlciBidyBpbmZvIGJlbG93Pw0KPiArew0KPiArCXUzMiB2YWwgPSAwLCB2YWwyOw0KPiAr CWludCByZXQ7DQo+ICsNCj4gKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2 LA0KPiArCQkJCSAgICAgSUNMX1BDT0RFX01FTV9TVUJTWVNZU1RFTV9JTkZPIHwNCj4gKwkJCQkg ICAgIElDTF9QQ09ERV9NRU1fU1NfUkVBRF9RR1ZfUE9JTlRfSU4NCj4gRk8ocG9pbnQpLA0KPiAr CQkJCSAgICAgJnZhbCwgJnZhbDIpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ ICsNCj4gKwlzcC0+ZGNsayA9IHZhbCAmIDB4ZmZmZjsNCj4gKwlzcC0+dF9ycCA9ICh2YWwgJiAw eGZmMDAwMCkgPj4gMTY7DQo+ICsJc3AtPnRfcmNkID0gKHZhbCAmIDB4ZmYwMDAwMDApID4+IDI0 Ow0KPiArDQo+ICsJc3AtPnRfcmRwcmUgPSB2YWwyICYgMHhmZjsNCj4gKwlzcC0+dF9yYXMgPSAo dmFsMiAmIDB4ZmYwMCkgPj4gODsNCj4gKw0KPiArCXNwLT50X3JjID0gc3AtPnRfcnAgKyBzcC0+ dF9yYXM7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpY2xf Z2V0X3Fndl9wb2ludHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiArCQkJ ICAgICAgc3RydWN0IGludGVsX3NhZ3ZfaW5mbyAqc2kpDQo+ICt7DQo+ICsJaW50IGksIHJldDsN Cj4gKw0KPiArCXJldCA9IGljbF9wY29kZV9yZWFkX21lbV9nbG9iYWxfaW5mbyhkZXZfcHJpdiwg c2kpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlpZiAoV0FSTl9P TihzaS0+bnVtX3BvaW50cyA+IEFSUkFZX1NJWkUoc2ktPnBvaW50cykpKQ0KPiArCQlzaS0+bnVt X3BvaW50cyA9IEFSUkFZX1NJWkUoc2ktPnBvaW50cyk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBp IDwgc2ktPm51bV9wb2ludHM7IGkrKykgew0KPiArCQlzdHJ1Y3QgaW50ZWxfcWd2X3BvaW50ICpz cCA9ICZzaS0+cG9pbnRzW2ldOw0KPiArDQo+ICsJCXJldCA9IGljbF9wY29kZV9yZWFkX3Fndl9w b2ludF9pbmZvKGRldl9wcml2LCBzcCwgaSk7DQo+ICsJCWlmIChyZXQpDQo+ICsJCQlyZXR1cm4g cmV0Ow0KPiArDQo+ICsJCURSTV9ERUJVR19LTVMoIlFHViAlZDogRENMSz0lZCB0UlA9JWQgdFJE UFJFPSVkIHRSQVM9JWQNCj4gdFJDRD0lZCB0UkM9JWRcbiIsDQo+ICsJCQkgICAgICBpLCBzcC0+ ZGNsaywgc3AtPnRfcnAsIHNwLT50X3JkcHJlLCBzcC0NCj4gPnRfcmFzLA0KPiArCQkJICAgICAg c3AtPnRfcmNkLCBzcC0+dF9yYyk7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgaWNsX2NhbGNfYncoaW50IGRjbGssIGludCBudW0sIGludCBkZW4p DQo+ICt7DQo+ICsJLyogbXVsdGlwbGVzIG9mIDE2LjY2Nk1IeiAoMTAwLzYpICovDQo+ICsJcmV0 dXJuIERJVl9ST1VORF9DTE9TRVNUKG51bSAqIGRjbGsgKiAxMDAsIGRlbiAqIDYpOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50IGljbF9zYWd2X21heF9kY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9z YWd2X2luZm8gKnNpKQ0KPiArew0KPiArCXUxNiBkY2xrID0gMDsNCj4gKwlpbnQgaTsNCj4gKw0K PiArCWZvciAoaSA9IDA7IGkgPCBzaS0+bnVtX3BvaW50czsgaSsrKQ0KPiArCQlkY2xrID0gbWF4 KGRjbGssIHNpLT5wb2ludHNbaV0uZGNsayk7DQo+ICsNCj4gKwlyZXR1cm4gZGNsazsNCj4gK30N Cj4gKw0KPiArc3RydWN0IGludGVsX3NhX2luZm8gew0KPiArCXU4IGRlYnVyc3QsIG1wYWdlc2l6 ZSwgZGVwcm9nYndsaW1pdCwgZGlzcGxheXJ0aWRzOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9zYV9pbmZvIGljbF9zYV9pbmZvID0gew0KPiArCS5kZWJ1cnN0ID0g OCwNCj4gKwkubXBhZ2VzaXplID0gMTYsDQo+ICsJLmRlcHJvZ2J3bGltaXQgPSAyNSwgLyogR0Iv cyAqLw0KPiArCS5kaXNwbGF5cnRpZHMgPSAxMjgsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50 IGljbF9nZXRfYndfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICt7 DQo+ICsJc3RydWN0IGludGVsX3NhZ3ZfaW5mbyBzaSA9IHt9Ow0KPiArCWNvbnN0IHN0cnVjdCBp bnRlbF9zYV9pbmZvICpzYSA9ICZpY2xfc2FfaW5mbzsNCj4gKwlib29sIGlzX3lfdGlsZSA9IHRy dWU7IC8qIGFzc3VtZSB5IHRpbGUgbWF5IGJlIHVzZWQgKi8NCj4gKwlpbnQgbnVtX2NoYW5uZWxz Ow0KPiArCWludCBkZWludGVybGVhdmU7DQo+ICsJaW50IGlwcWRlcHRoLCBpcHFkZXB0aHBjaDsN Cj4gKwlpbnQgZGNsa19tYXg7DQo+ICsJaW50IG1heGRlYnc7DQo+ICsJaW50IGksIHJldDsNCj4g Kw0KPiArCXJldCA9IGljbF9nZXRfcWd2X3BvaW50cyhkZXZfcHJpdiwgJnNpKTsNCj4gKwlpZiAo cmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCW51bV9jaGFubmVscyA9IHNpLm51bV9jaGFubmVs czsNCj4gKw0KPiArCWRlaW50ZXJsZWF2ZSA9IERJVl9ST1VORF9VUChudW1fY2hhbm5lbHMsIGlz X3lfdGlsZSA/IDQgOiAyKTsNCj4gKwlkY2xrX21heCA9IGljbF9zYWd2X21heF9kY2xrKCZzaSk7 DQo+ICsNCj4gKwlpcHFkZXB0aHBjaCA9IDE2Ow0KPiArDQo+ICsJbWF4ZGVidyA9IG1pbihzYS0+ ZGVwcm9nYndsaW1pdCAqIDEwMDAsDQo+ICsJCSAgICAgIGljbF9jYWxjX2J3KGRjbGtfbWF4LCAx NiwgMSkgKiA2IC8gMTApOyAvKiA2MCUgKi8NCj4gKwlpcHFkZXB0aCA9IG1pbihpcHFkZXB0aHBj aCwgc2EtPmRpc3BsYXlydGlkcyAvIG51bV9jaGFubmVscyk7DQo+ICsNCj4gKwlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShkZXZfcHJpdi0+bWF4X2J3KTsgaSsrKSB7DQo+ICsJCXN0cnVjdCBp bnRlbF9id19pbmZvICpiaSA9ICZkZXZfcHJpdi0+bWF4X2J3W2ldOw0KPiArCQlpbnQgY2xwY2hn cm91cDsNCj4gKwkJaW50IGo7DQo+ICsNCj4gKwkJY2xwY2hncm91cCA9IChzYS0+ZGVidXJzdCAq IGRlaW50ZXJsZWF2ZSAvDQo+IG51bV9jaGFubmVscykgPDwgaTsNCj4gKwkJYmktPm51bV9wbGFu ZXMgPSAoaXBxZGVwdGggLSBjbHBjaGdyb3VwKSAvIGNscGNoZ3JvdXAgKw0KPiAxOw0KPiArDQo+ ICsJCWZvciAoaiA9IDA7IGogPCBzaS5udW1fcG9pbnRzOyBqKyspIHsNCj4gKwkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9xZ3ZfcG9pbnQgKnNwID0NCj4gJnNpLnBvaW50c1tqXTsNCj4gKwkJCWludCBj dCwgYnc7DQo+ICsNCj4gKwkJCS8qDQo+ICsJCQkgKiBNYXggcm93IGN5Y2xlIHRpbWUNCj4gKwkJ CSAqDQo+ICsJCQkgKiBGSVhNRSB3aGF0IGlzIHRoZSBsb2dpYyBiZWhpbmQgdGhlDQo+ICsJCQkg KiBhc3N1bWVkIGJ1cnN0IGxlbmd0aD8NCj4gKwkJCSAqLw0KPiArCQkJY3QgPSBtYXhfdChpbnQs IHNwLT50X3JjLCBzcC0+dF9ycCArIHNwLT50X3JjZA0KPiArDQo+ICsJCQkJICAgKGNscGNoZ3Jv dXAgLSAxKSAqIHNpLnRfYmwgKyBzcC0NCj4gPnRfcmRwcmUpOw0KRm9yIGxvZ2ljYWwgZmxvdyBj YW4gd2UgbW92ZSB0aGUgYWJvdmUgdGltaW5nIHJlbGF0ZWQgY2FsY3VsYXRpb25zIHRvIGENCnNl cGVyYXRlIGZ1bmN0aW9uIGFsb25nIHdpdGggZml4bWUgdG8gZGVsaW5rIGJhbmR3aWR0aCBhbmQg bGF0ZW5jeQ0KY2FsY3VsYXRpb25zPw0KDQotIFJhZGhha3Jpc2huYShSSykgU3JpcGFkYQ0KPiAr CQkJYncgPSBpY2xfY2FsY19idyhzcC0+ZGNsaywgY2xwY2hncm91cCAqIDMyICoNCj4gbnVtX2No YW5uZWxzLCBjdCk7DQo+ICsNCj4gKwkJCWJpLT5kZXJhdGVkYndbal0gPSBtaW4obWF4ZGVidywN Cj4gKwkJCQkJICAgICAgIGJ3ICogOSAvIDEwKTsgLyogOTAlICovDQo+ICsNCj4gKwkJCURSTV9E RUJVR19LTVMoIkJXJWQgLyBRR1YgJWQ6IG51bV9wbGFuZXM9JWQNCj4gZGVyYXRlZGJ3PSVkXG4i LA0KPiArCQkJCSAgICAgIGksIGosIGJpLT5udW1fcGxhbmVzLCBiaS0NCj4gPmRlcmF0ZWRid1tq XSk7DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAoYmktPm51bV9wbGFuZXMgPT0gMSkNCj4gKwkJCWJy ZWFrOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdW5z aWduZWQgaW50IGljbF9tYXhfYncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0K PiArCQkJICAgICAgIGludCBudW1fcGxhbmVzLCBpbnQgcWd2X3BvaW50KQ0KPiArew0KPiArCWlu dCBpOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZGV2X3ByaXYtPm1heF9i dyk7IGkrKykgew0KPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfYndfaW5mbyAqYmkgPQ0KPiArCQkJ JmRldl9wcml2LT5tYXhfYndbaV07DQo+ICsNCj4gKwkJaWYgKG51bV9wbGFuZXMgPj0gYmktPm51 bV9wbGFuZXMpDQo+ICsJCQlyZXR1cm4gYmktPmRlcmF0ZWRid1txZ3ZfcG9pbnRdOw0KPiArCX0N Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICt1bnNpZ25lZCBpbnQgaW50ZWxfbWF4 X2RhdGFfcmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICsJCQkJIGlu dCBudW1fcGxhbmVzKQ0KPiArew0KPiArCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkNCj4gKwkJ LyoNCj4gKwkJICogRklYTUUgd2l0aCBTQUdWIGRpc2FibGVkIG1heWJlIHdlIGNhbiBhc3N1bWUN Cj4gKwkJICogcG9pbnQgMSB3aWxsIGFsd2F5cyBiZSB1c2VkPyBTZWVtcyB0byBtYXRjaA0KPiAr CQkgKiB0aGUgYmVoYXZpb3VyIG9ic2VydmVkIGluIHRoZSB3aWxkLg0KPiArCQkgKi8NCj4gKwkJ cmV0dXJuIG1pbjMoaWNsX21heF9idyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMCksDQo+ICsJCQkg ICAgaWNsX21heF9idyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMSksDQo+ICsJCQkgICAgaWNsX21h eF9idyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMikpOw0KPiArCWVsc2UNCj4gKwkJcmV0dXJuIFVJ TlRfTUFYOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZA0KPiAgaW50ZWxfZ2V0X2RyYW1faW5m byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICB7DQo+IEBAIC0xNjU1LDYg KzE4ODIsOCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0DQo+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgCSAqLw0KPiAgCWludGVsX2dldF9kcmFtX2luZm8o ZGV2X3ByaXYpOw0KPiAgDQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpDQo+ICsJ CWljbF9nZXRfYndfaW5mbyhkZXZfcHJpdik7DQo+ICANCj4gIAlyZXR1cm4gMDsNCj4gIA0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gaW5kZXggNjRmYTM1M2E2MmJiLi5kMWI5YzNmZTU4 MDIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiBAQCAtNTQsNiArNTQsNyBAQA0K PiAgI2luY2x1ZGUgPGRybS9kcm1fY2FjaGUuaD4NCj4gICNpbmNsdWRlIDxkcm0vZHJtX3V0aWwu aD4NCj4gICNpbmNsdWRlIDxkcm0vZHJtX2RzYy5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljLmg+DQo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4NCj4gICNpbmNsdWRlIDxk cm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4NCj4gIA0KPiBAQCAtMTgzNyw2ICsxODM4LDEz IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsNCj4gIAkJfSB0eXBlOw0KPiAgCX0gZHJhbV9p bmZvOw0KPiAgDQo+ICsJc3RydWN0IGludGVsX2J3X2luZm8gew0KPiArCQlpbnQgbnVtX3BsYW5l czsNCj4gKwkJaW50IGRlcmF0ZWRid1szXTsNCj4gKwl9IG1heF9id1s2XTsNCj4gKw0KPiArCXN0 cnVjdCBkcm1fcHJpdmF0ZV9vYmogYndfb2JqOw0KPiArDQo+ICAJc3RydWN0IGk5MTVfcnVudGlt ZV9wbSBydW50aW1lX3BtOw0KPiAgDQo+ICAJc3RydWN0IHsNCj4gQEAgLTI3MDYsNiArMjcxNCw4 IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIGk5MTVfbWNoX3ZhbChzdHJ1Y3QNCj4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOw0KPiAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaTkxNV9nZnhfdmFs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdik7DQo+ICBleHRlcm4gdm9pZCBp OTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7DQo+ ICBpbnQgdmx2X2ZvcmNlX2dmeF9jbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGJvb2wgb24pOw0KPiArdW5zaWduZWQgaW50IGludGVsX21heF9kYXRhX3JhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiArCQkJCSBpbnQgbnVtX3BsYW5lcyk7DQo+ ICANCj4gIHUzMiBpbnRlbF9jYWxjdWxhdGVfbWNyX3Nfc3Nfc2VsZWN0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlDQo+ICpkZXZfcHJpdik7DQo+ICANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o DQo+IGluZGV4IGU5N2M0N2ZjYTY0NS4uMzk5MzY2YTQxNTI0IDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgNCj4gQEAgLTg3NzQsNiArODc3NCw5IEBAIGVudW0gew0KPiAgI2RlZmluZSAg IEdFTjZfUENPREVfV1JJVEVfTUlOX0ZSRVFfVEFCTEUJMHg4DQo+ICAjZGVmaW5lICAgR0VONl9Q Q09ERV9SRUFEX01JTl9GUkVRX1RBQkxFCTB4OQ0KPiAgI2RlZmluZSAgIEdFTjZfUkVBRF9PQ19Q QVJBTVMJCQkweGMNCj4gKyNkZWZpbmUgICBJQ0xfUENPREVfTUVNX1NVQlNZU1lTVEVNX0lORk8J MHhkDQo+ICsjZGVmaW5lICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURfR0xPQkFMX0lORk8JKDB4 MCA8PCA4KQ0KPiArI2RlZmluZSAgICAgSUNMX1BDT0RFX01FTV9TU19SRUFEX1FHVl9QT0lOVF9J TkZPKHBvaW50KQkoKChwb2luDQo+IHQpIDw8IDE2KSB8ICgweDEgPDwgOCkpDQo+ICAjZGVmaW5l ICAgR0VONl9QQ09ERV9SRUFEX0RfQ09NUAkJMHgxMA0KPiAgI2RlZmluZSAgIEdFTjZfUENPREVf V1JJVEVfRF9DT01QCQkweDExDQo+ICAjZGVmaW5lICAgSFNXX1BDT0RFX0RFX1dSSVRFX0ZSRVFf UkVRCQkweDE3DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9t aWNfcGxhbmUuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j DQo+IGluZGV4IGQxMTY4MWQ3MWFkZC4uZjE0MmM1YzIyZDdlIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYw0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYw0KPiBAQCAtMTE0LDYgKzExNCwyMiBAQCBp bnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUNCj4gKnBsYW5lLA0KPiAg CWRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHN0YXRlKTsNCj4g IH0NCj4gIA0KPiArdW5zaWduZWQgaW50IGludGVsX3BsYW5lX2RhdGFfcmF0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSwNCj4gKwkJCQkgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUNCj4gKnBsYW5lX3N0YXRlKQ0KPiArew0KPiArCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7DQo+ICsJdW5z aWduZWQgaW50IGNwcCA9IDA7DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlpZiAoIXBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8 IGZiLT5mb3JtYXQtPm51bV9wbGFuZXM7IGkrKykNCj4gKwkJY3BwICs9IGZiLT5mb3JtYXQtPmNw cFtpXTsNCj4gKw0KPiArCXJldHVybiBjcHAgKiBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOw0KPiAr fQ0KPiArDQo+ICBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qg c3RydWN0DQo+IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLA0KPiAgCQkJCQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiAqbmV3X2NydGNfc3RhdGUsDQo+ICAJCQkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZQ0KPiAqb2xkX3BsYW5lX3N0YXRlLA0KPiBAQCAtMTI1LDYg KzE0MSw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdA0K PiBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfDQo+ICAJbmV3X2NydGNfc3RhdGUt PmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQpOw0KPiAgCW5ld19jcnRjX3N0YXRlLT5u djEyX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7DQo+ICAJbmV3X2NydGNfc3RhdGUtPmM4X3Bs YW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7DQo+ICsJbmV3X2NydGNfc3RhdGUtPmRhdGFfcmF0ZVtw bGFuZS0+aWRdID0gMDsNCj4gIAluZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNl Ow0KPiAgDQo+ICAJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0YyAmJiAhb2xkX3BsYW5l X3N0YXRlLT5iYXNlLmNydGMpDQo+IEBAIC0xNDksNiArMTY2LDkgQEAgaW50IGludGVsX3BsYW5l X2F0b21pY19jaGVja193aXRoX3N0YXRlKGNvbnN0DQo+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y18NCj4gIAlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgb2xk X3BsYW5lX3N0YXRlLQ0KPiA+YmFzZS52aXNpYmxlKQ0KPiAgCQluZXdfY3J0Y19zdGF0ZS0+dXBk YXRlX3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsNCj4gIA0KPiArCW5ld19jcnRjX3N0YXRlLT5k YXRhX3JhdGVbcGxhbmUtPmlkXSA9DQo+ICsJCWludGVsX3BsYW5lX2RhdGFfcmF0ZShuZXdfY3J0 Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsNCj4gKw0KPiAgCXJldHVybiBpbnRlbF9wbGFuZV9h dG9taWNfY2FsY19jaGFuZ2VzKG9sZF9jcnRjX3N0YXRlLA0KPiAgCQkJCQkgICAgICAgJm5ld19j cnRjX3N0YXRlLT5iYXNlLA0KPiAgCQkJCQkgICAgICAgb2xkX3BsYW5lX3N0YXRlLA0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmgNCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuaA0KPiBpbmRleCAxNDY3ODYy MDQ0MGYuLjBhOTY1MTM3NmQwZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljX3BsYW5lLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXRvbWljX3BsYW5lLmgNCj4gQEAgLTE1LDYgKzE1LDggQEAgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlOw0KPiAgDQo+ICBleHRlcm4gY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mg aW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzOw0KPiAgDQo+ICt1bnNpZ25lZCBpbnQgaW50ZWxfcGxh bmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ICpjcnRjX3N0YXRl LA0KPiArCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZQ0KPiAqcGxhbmVfc3Rh dGUpOw0KPiAgdm9pZCBpbnRlbF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwNCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiAg CQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7DQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9idy5jDQo+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYncuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwMDAuLjMwNGJmODdmMGEyZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2J3LmMNCj4gQEAgLTAsMCArMSwxODEgQEANCj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBNSVQNCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJ bnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Y19zdGF0ZV9oZWxwZXIuaD4NCj4gKw0KPiArI2luY2x1ZGUgImludGVsX2J3LmgiDQo+ICsjaW5j bHVkZSAiaW50ZWxfZHJ2LmgiDQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfYndf Y3J0Y19udW1fYWN0aXZlX3BsYW5lcyhjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkNCj4gK3sNCj4gKwkvKg0KPiArCSAqIFdlIGFzc3VtZSBjdXJzb3JzIGFyZSBz bWFsbCBlbm91Z2gNCj4gKwkgKiB0byBub3Qgbm90IGNhdXNlIGJhbmR3aWR0aCBwcm9ibGVtcy4N Cj4gKwkgKi8NCkNhbiB0aGlzIGFzc3VtcHRpb24gYmUgbWFkZSB3aGVuIHRoZSBjdXJzb3Igc2l6 ZXMgYXJlIDI1NngyNTYoY2hyb21lKT8NCj4gKwlyZXR1cm4gaHdlaWdodDgoY3J0Y19zdGF0ZS0+ YWN0aXZlX3BsYW5lcyAmDQo+IH5CSVQoUExBTkVfQ1VSU09SKSk7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfYndfY3J0Y19kYXRhX3JhdGUoY29uc3Qgc3RydWN0DQo+ IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ICt7DQo+ICsJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7DQo+ICsJdW5z aWduZWQgaW50IGRhdGFfcmF0ZSA9IDA7DQo+ICsJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsNCj4g Kw0KPiArCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoY3J0YywgcGxhbmVfaWQpIHsNCj4gKwkJ LyoNCj4gKwkJICogV2UgYXNzdW1lIGN1cnNvcnMgYXJlIHNtYWxsIGVub3VnaA0KPiArCQkgKiB0 byBub3Qgbm90IGNhdXNlIGJhbmR3aWR0aCBwcm9ibGVtcy4NCj4gKwkJICovDQo+ICsJCWlmIChw bGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQlkYXRh X3JhdGUgKz0gY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lX2lkXTsNCj4gKwl9DQo+ICsNCj4g KwlyZXR1cm4gZGF0YV9yYXRlOw0KPiArfQ0KPiArDQo+ICt2b2lkIGludGVsX2J3X2NydGNfdXBk YXRlKHN0cnVjdCBpbnRlbF9id19zdGF0ZSAqYndfc3RhdGUsDQo+ICsJCQkgIGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQ0KPiArew0KPiArCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOw0KPiArDQo+ ICsJYndfc3RhdGUtPmRhdGFfcmF0ZVtjcnRjLT5waXBlXSA9DQo+ICsJCWludGVsX2J3X2NydGNf ZGF0YV9yYXRlKGNydGNfc3RhdGUpOw0KPiArCWJ3X3N0YXRlLT5udW1fYWN0aXZlX3BsYW5lc1tj cnRjLT5waXBlXSA9DQo+ICsJCWludGVsX2J3X2NydGNfbnVtX2FjdGl2ZV9wbGFuZXMoY3J0Y19z dGF0ZSk7DQo+ICsNCj4gKwlEUk1fREVCVUdfS01TKCJwaXBlICVjIGRhdGEgcmF0ZSAldSBudW0g YWN0aXZlIHBsYW5lcyAldVxuIiwNCj4gKwkJICAgICAgcGlwZV9uYW1lKGNydGMtPnBpcGUpLA0K PiArCQkgICAgICBid19zdGF0ZS0+ZGF0YV9yYXRlW2NydGMtPnBpcGVdLA0KPiArCQkgICAgICBi d19zdGF0ZS0+bnVtX2FjdGl2ZV9wbGFuZXNbY3J0Yy0+cGlwZV0pOw0KPiArfQ0KPiArDQo+ICtz dGF0aWMgdW5zaWduZWQgaW50IGludGVsX2J3X251bV9hY3RpdmVfcGxhbmVzKHN0cnVjdA0KPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gKwkJCQkJICAgICAgIGNvbnN0IHN0cnVjdA0K PiBpbnRlbF9id19zdGF0ZSAqYndfc3RhdGUpDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IG51bV9h Y3RpdmVfcGxhbmVzID0gMDsNCj4gKwllbnVtIHBpcGUgcGlwZTsNCj4gKw0KPiArCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpDQo+ICsJCW51bV9hY3RpdmVfcGxhbmVzICs9IGJ3X3N0YXRl LT5udW1fYWN0aXZlX3BsYW5lc1twaXBlXTsNCj4gKw0KPiArCXJldHVybiBudW1fYWN0aXZlX3Bs YW5lczsNCj4gK30NCj4gKw0KPiArc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9id19kYXRhX3Jh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LA0KPiArCQkJCSAgICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfYndfc3RhdGUNCj4gKmJ3X3N0YXRlKQ0KPiArew0KPiArCXVuc2ln bmVkIGludCBkYXRhX3JhdGUgPSAwOw0KPiArCWVudW0gcGlwZSBwaXBlOw0KPiArDQo+ICsJZm9y X2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkNCj4gKwkJZGF0YV9yYXRlICs9IGJ3X3N0YXRlLT5k YXRhX3JhdGVbcGlwZV07DQo+ICsNCj4gKwlyZXR1cm4gZGF0YV9yYXRlOw0KPiArfQ0KPiArDQo+ ICtpbnQgaW50ZWxfYndfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlKQ0KPiArew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoc3RhdGUtPmJhc2UuZGV2KTsNCj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2Ny dGNfc3RhdGUsICpvbGRfY3J0Y19zdGF0ZTsNCj4gKwlzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKmJ3 X3N0YXRlID0gTlVMTDsNCj4gKwl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCBtYXhfZGF0YV9yYXRl Ow0KPiArCXVuc2lnbmVkIGludCBudW1fYWN0aXZlX3BsYW5lczsNCj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YzsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCS8qIEZJWE1FIGVhcmxpZXIgZ2VucyBu ZWVkIHNvbWUgY2hlY2tzIHRvbyAqLw0KPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEp DQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsDQo+IG9sZF9jcnRjX3N0YXRlLA0KPiArCQkJCQkgICAgbmV3X2Ny dGNfc3RhdGUsIGkpIHsNCj4gKwkJdW5zaWduZWQgaW50IG9sZF9kYXRhX3JhdGUgPQ0KPiArCQkJ aW50ZWxfYndfY3J0Y19kYXRhX3JhdGUob2xkX2NydGNfc3RhdGUpOw0KPiArCQl1bnNpZ25lZCBp bnQgbmV3X2RhdGFfcmF0ZSA9DQo+ICsJCQlpbnRlbF9id19jcnRjX2RhdGFfcmF0ZShuZXdfY3J0 Y19zdGF0ZSk7DQo+ICsJCXVuc2lnbmVkIGludCBvbGRfYWN0aXZlX3BsYW5lcyA9DQo+ICsJCQlp bnRlbF9id19jcnRjX251bV9hY3RpdmVfcGxhbmVzKG9sZF9jcnRjX3N0YXRlKQ0KPiA7DQo+ICsJ CXVuc2lnbmVkIGludCBuZXdfYWN0aXZlX3BsYW5lcyA9DQo+ICsJCQlpbnRlbF9id19jcnRjX251 bV9hY3RpdmVfcGxhbmVzKG5ld19jcnRjX3N0YXRlKQ0KPiA7DQo+ICsNCj4gKwkJLyoNCj4gKwkJ ICogQXZvaWQgbG9ja2luZyB0aGUgYncgc3RhdGUgd2hlbg0KPiArCQkgKiBub3RoaW5nIHNpZ25p ZmljYW50IGhhcyBjaGFuZ2VkLg0KPiArCQkgKi8NCj4gKwkJaWYgKG9sZF9kYXRhX3JhdGUgPT0g bmV3X2RhdGFfcmF0ZSAmJg0KPiArCQkgICAgb2xkX2FjdGl2ZV9wbGFuZXMgPT0gbmV3X2FjdGl2 ZV9wbGFuZXMpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQlid19zdGF0ZSAgPSBpbnRlbF9h dG9taWNfZ2V0X2J3X3N0YXRlKHN0YXRlKTsNCj4gKwkJaWYgKElTX0VSUihid19zdGF0ZSkpDQo+ ICsJCQlyZXR1cm4gUFRSX0VSUihid19zdGF0ZSk7DQo+ICsNCj4gKwkJYndfc3RhdGUtPmRhdGFf cmF0ZVtjcnRjLT5waXBlXSA9IG5ld19kYXRhX3JhdGU7DQo+ICsJCWJ3X3N0YXRlLT5udW1fYWN0 aXZlX3BsYW5lc1tjcnRjLT5waXBlXSA9DQo+IG5ld19hY3RpdmVfcGxhbmVzOw0KPiArDQo+ICsJ CURSTV9ERUJVR19LTVMoInBpcGUgJWMgZGF0YSByYXRlICV1IG51bSBhY3RpdmUgcGxhbmVzDQo+ ICV1XG4iLA0KPiArCQkJICAgICAgcGlwZV9uYW1lKGNydGMtPnBpcGUpLA0KPiArCQkJICAgICAg Yndfc3RhdGUtPmRhdGFfcmF0ZVtjcnRjLT5waXBlXSwNCj4gKwkJCSAgICAgIGJ3X3N0YXRlLT5u dW1fYWN0aXZlX3BsYW5lc1tjcnRjLT5waXBlXSk7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFid19z dGF0ZSkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlkYXRhX3JhdGUgPSBpbnRlbF9id19kYXRh X3JhdGUoZGV2X3ByaXYsIGJ3X3N0YXRlKTsNCj4gKwludW1fYWN0aXZlX3BsYW5lcyA9IGludGVs X2J3X251bV9hY3RpdmVfcGxhbmVzKGRldl9wcml2LA0KPiBid19zdGF0ZSk7DQo+ICsNCj4gKwlt YXhfZGF0YV9yYXRlID0gaW50ZWxfbWF4X2RhdGFfcmF0ZShkZXZfcHJpdiwNCj4gbnVtX2FjdGl2 ZV9wbGFuZXMpOw0KPiArDQo+ICsJZGF0YV9yYXRlID0gRElWX1JPVU5EX1VQKGRhdGFfcmF0ZSwg MTAwMCk7DQo+ICsNCj4gKwlpZiAoZGF0YV9yYXRlID4gbWF4X2RhdGFfcmF0ZSkgew0KPiArCQlE Uk1fREVCVUdfS01TKCJCYW5kd2lkdGggJXUgTUIvcyBleGNlZWRzIG1heCBhdmFpbGFibGUNCj4g JWQgTUIvcyAoJWQgYWN0aXZlIHBsYW5lcylcbiIsDQo+ICsJCQkgICAgICBkYXRhX3JhdGUsIG1h eF9kYXRhX3JhdGUsDQo+IG51bV9hY3RpdmVfcGxhbmVzKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qg ZHJtX3ByaXZhdGVfc3RhdGUgKmludGVsX2J3X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QNCj4gZHJt X3ByaXZhdGVfb2JqICpvYmopDQo+ICt7DQo+ICsJc3RydWN0IGludGVsX2J3X3N0YXRlICpzdGF0 ZTsNCj4gKw0KPiArCXN0YXRlID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2YoKnN0YXRlKSwg R0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCFzdGF0ZSkNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsNCj4g KwlfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVfb2JqX2R1cGxpY2F0ZV9zdGF0ZShvYmosICZz dGF0ZS0NCj4gPmJhc2UpOw0KPiArDQo+ICsJcmV0dXJuICZzdGF0ZS0+YmFzZTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIHZvaWQgaW50ZWxfYndfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZh dGVfb2JqICpvYmosDQo+ICsJCQkJICAgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpzdGF0ZSkN Cj4gK3sNCj4gKwlrZnJlZShzdGF0ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MgaW50ZWxfYndfZnVuY3MgPSB7DQo+ICsJLmF0b21p Y19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9id19kdXBsaWNhdGVfc3RhdGUsDQo+ICsJLmF0b21p Y19kZXN0cm95X3N0YXRlID0gaW50ZWxfYndfZGVzdHJveV9zdGF0ZSwNCj4gK307DQo+ICsNCj4g K2ludCBpbnRlbF9id19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4g K3sNCj4gKwlzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKnN0YXRlOw0KPiArDQo+ICsJc3RhdGUgPSBr emFsbG9jKHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXN0YXRlKQ0KPiAr CQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfaW5pdCgm ZGV2X3ByaXYtPmRybSwgJmRldl9wcml2LT5id19vYmosDQo+ICsJCQkJICAgICZzdGF0ZS0+YmFz ZSwgJmludGVsX2J3X2Z1bmNzKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYncuaA0KPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2J3LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwLi5jMTQyNzJjYTViNTkNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9idy5oDQo+IEBAIC0wLDAgKzEsNDYgQEANCj4gKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8NCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJ bnRlbCBDb3Jwb3JhdGlvbg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19JTlRFTF9CV19IX18N Cj4gKyNkZWZpbmUgX19JTlRFTF9CV19IX18NCj4gKw0KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIg0KPiArI2luY2x1ZGUgImludGVs X2Rpc3BsYXkuaCINCj4gKw0KPiArc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7DQo+ICtzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlOw0KPiArc3RydWN0IGludGVsX2NydGNfc3RhdGU7DQo+ICsNCj4g K3N0cnVjdCBpbnRlbF9id19zdGF0ZSB7DQo+ICsJc3RydWN0IGRybV9wcml2YXRlX3N0YXRlIGJh c2U7DQo+ICsNCj4gKwl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlW0k5MTVfTUFYX1BJUEVTXTsNCj4g Kwl1OCBudW1fYWN0aXZlX3BsYW5lc1tJOTE1X01BWF9QSVBFU107DQo+ICt9Ow0KPiArDQo+ICsj ZGVmaW5lIHRvX2ludGVsX2J3X3N0YXRlKHgpIGNvbnRhaW5lcl9vZigoeCksIHN0cnVjdA0KPiBp bnRlbF9id19zdGF0ZSwgYmFzZSkNCj4gKw0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxf Yndfc3RhdGUgKg0KPiAraW50ZWxfYXRvbWljX2dldF9id19zdGF0ZShzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7DQo+ICsJc3RydWN0IGRybV9wcml2YXRl X3N0YXRlICpid19zdGF0ZTsNCj4gKw0KPiArCWJ3X3N0YXRlID0gZHJtX2F0b21pY19nZXRfcHJp dmF0ZV9vYmpfc3RhdGUoJnN0YXRlLT5iYXNlLA0KPiArCQkJCQkJICAgICZkZXZfcHJpdi0+Yndf b2JqKTsNCj4gKwlpZiAoSVNfRVJSKGJ3X3N0YXRlKSkNCj4gKwkJcmV0dXJuIEVSUl9DQVNUKGJ3 X3N0YXRlKTsNCj4gKw0KPiArCXJldHVybiB0b19pbnRlbF9id19zdGF0ZShid19zdGF0ZSk7DQo+ ICt9DQo+ICsNCj4gK2ludCBpbnRlbF9id19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7DQo+ICtpbnQgaW50ZWxfYndfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlKTsNCj4gK3ZvaWQgaW50ZWxfYndfY3J0Y191cGRhdGUoc3RydWN0IGlu dGVsX2J3X3N0YXRlICpid19zdGF0ZSwNCj4gKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpOw0KPiArDQo+ICsjZW5kaWYgLyogX19JTlRFTF9CV19IX18gKi8N Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiBpbmRleCBkODFlYzgwZTM0 ZjYuLmE5NTU4NDBiNzNjYiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Yw0KPiBAQCAtNTAsNiArNTAsNyBAQA0KPiAgI2luY2x1ZGUgImludGVsX2FjcGkuaCINCj4gICNp bmNsdWRlICJpbnRlbF9hdG9taWMuaCINCj4gICNpbmNsdWRlICJpbnRlbF9hdG9taWNfcGxhbmUu aCINCj4gKyNpbmNsdWRlICJpbnRlbF9idy5oIg0KPiAgI2luY2x1ZGUgImludGVsX2NvbG9yLmgi DQo+ICAjaW5jbHVkZSAiaW50ZWxfY2RjbGsuaCINCj4gICNpbmNsdWRlICJpbnRlbF9jcnQuaCIN Cj4gQEAgLTI4NjMsNiArMjg2NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BsYW5lX2Rpc2FibGVf bm9hdG9taWMoc3RydWN0DQo+IGludGVsX2NydGMgKmNydGMsDQo+ICANCj4gIAlpbnRlbF9zZXRf cGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwgZmFsc2UpOw0KPiAgCWZpeHVw X2FjdGl2ZV9wbGFuZXMoY3J0Y19zdGF0ZSk7DQo+ICsJY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3Bs YW5lLT5pZF0gPSAwOw0KPiAgDQo+ICAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9QUklNQVJZKQ0K PiAgCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5X25vYXRvbWljKCZjcnRjLT5iYXNlKTsNCj4g QEAgLTY1OTAsNiArNjU5Miw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0 b21pYyhzdHJ1Y3QNCj4gZHJtX2NydGMgKmNydGMsDQo+ICAJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7DQo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOw0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+ZGV2KTsNCj4gKwlzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKmJ3X3N0YXRlID0NCj4g KwkJdG9faW50ZWxfYndfc3RhdGUoZGV2X3ByaXYtPmJ3X29iai5zdGF0ZSk7DQo+ICAJZW51bSBp bnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW47DQo+ICAJc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZTsNCj4gIAl1NjQgZG9tYWluczsNCj4gQEAgLTY2NTIsNiArNjY1Niw5IEBAIHN0YXRp YyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QNCj4gZHJtX2NydGMgKmNy dGMsDQo+ICAJZGV2X3ByaXYtPmFjdGl2ZV9jcnRjcyAmPSB+KDEgPDwgaW50ZWxfY3J0Yy0+cGlw ZSk7DQo+ICAJZGV2X3ByaXYtPm1pbl9jZGNsa1tpbnRlbF9jcnRjLT5waXBlXSA9IDA7DQo+ICAJ ZGV2X3ByaXYtPm1pbl92b2x0YWdlX2xldmVsW2ludGVsX2NydGMtPnBpcGVdID0gMDsNCj4gKw0K PiArCWJ3X3N0YXRlLT5kYXRhX3JhdGVbaW50ZWxfY3J0Yy0+cGlwZV0gPSAwOw0KPiArCWJ3X3N0 YXRlLT5udW1fYWN0aXZlX3BsYW5lc1tpbnRlbF9jcnRjLT5waXBlXSA9IDA7DQo+ICB9DQo+ICAN Cj4gIC8qDQo+IEBAIC0xMTE3Niw2ICsxMTE4Myw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNf Y2FsY19jaGFuZ2VzKGNvbnN0DQo+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0DQo+ICAJaWYgKCFpc19jcnRjX2VuYWJsZWQpIHsNCj4gIAkJcGxhbmVfc3RhdGUtPnZpc2li bGUgPSB2aXNpYmxlID0gZmFsc2U7DQo+ICAJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0 ZSktPmFjdGl2ZV9wbGFuZXMgJj0NCj4gfkJJVChwbGFuZS0+aWQpOw0KPiArCQl0b19pbnRlbF9j cnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kYXRhX3JhdGVbcGxhbmUtPmlkXSA9DQo+IDA7DQo+ICAJ fQ0KPiAgDQo+ICAJaWYgKCF3YXNfdmlzaWJsZSAmJiAhdmlzaWJsZSkNCj4gQEAgLTEzMjk2LDcg KzEzMzA0LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdA0KPiBkcm1f ZGV2aWNlICpkZXYsDQo+ICAJCXJldHVybiByZXQ7DQo+ICANCj4gIAlpbnRlbF9mYmNfY2hvb3Nl X2NydGMoZGV2X3ByaXYsIGludGVsX3N0YXRlKTsNCj4gLQlyZXR1cm4gY2FsY193YXRlcm1hcmtf ZGF0YShpbnRlbF9zdGF0ZSk7DQo+ICsJcmV0ID0gY2FsY193YXRlcm1hcmtfZGF0YShpbnRlbF9z dGF0ZSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldCA9IGlu dGVsX2J3X2F0b21pY19jaGVjayhpbnRlbF9zdGF0ZSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0 dXJuIHJldDsNCj4gKw0KPiArCXJldHVybiAwOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgaW50IGlu dGVsX2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiBAQCAt MTU2OTYsNiArMTU3MTIsMTAgQEAgaW50IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZQ0KPiAqZGV2KQ0KPiAgDQo+ICAJZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsNCj4gIA0K PiArCXJldCA9IGludGVsX2J3X2luaXQoZGV2X3ByaXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJl dHVybiByZXQ7DQo+ICsNCj4gIAlkZXYtPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDA7DQo+ICAJ ZGV2LT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsNCj4gIA0KPiBAQCAtMTYzMTgsOCArMTYz MzgsMTEgQEAgc3RhdGljIHZvaWQNCj4gaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+ICAJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfZW5kKCZj b25uX2l0ZXIpOw0KPiAgDQo+ICAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsNCj4g KwkJc3RydWN0IGludGVsX2J3X3N0YXRlICpid19zdGF0ZSA9DQo+ICsJCQl0b19pbnRlbF9id19z dGF0ZShkZXZfcHJpdi0+Yndfb2JqLnN0YXRlKTsNCj4gIAkJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUgPQ0KPiAgCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0 YXRlKTsNCj4gKwkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsNCj4gIAkJaW50IG1pbl9jZGNs ayA9IDA7DQo+ICANCj4gIAkJbWVtc2V0KCZjcnRjLT5iYXNlLm1vZGUsIDAsIHNpemVvZihjcnRj LT5iYXNlLm1vZGUpKTsNCj4gQEAgLTE2MzU4LDYgKzE2MzgxLDIxIEBAIHN0YXRpYyB2b2lkDQo+ IGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0K PiAgCQlkZXZfcHJpdi0+bWluX3ZvbHRhZ2VfbGV2ZWxbY3J0Yy0+cGlwZV0gPQ0KPiAgCQkJY3J0 Y19zdGF0ZS0+bWluX3ZvbHRhZ2VfbGV2ZWw7DQo+ICANCj4gKwkJZm9yX2VhY2hfaW50ZWxfcGxh bmVfb25fY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0YywNCj4gcGxhbmUpIHsNCj4gKwkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQ0KPiArCQkJCXRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lLQ0KPiA+YmFzZS5zdGF0ZSk7DQo+ICsNCj4gKwkJCS8qDQo+ICsJ CQkgKiBGSVhNRSBkb24ndCBoYXZlIHRoZSBmYiB5ZXQsIHNvIGNhbid0DQo+ICsJCQkgKiB1c2Ug aW50ZWxfcGxhbmVfZGF0YV9yYXRlKCkgOigNCj4gKwkJCSAqLw0KPiArCQkJaWYgKHBsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGUpDQo+ICsJCQkJY3J0Y19zdGF0ZS0+ZGF0YV9yYXRlW3BsYW5lLT5p ZF0gPQ0KPiArCQkJCQk0ICogY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsNCj4gKwkJfQ0KPiArDQo+ ICsJCWludGVsX2J3X2NydGNfdXBkYXRlKGJ3X3N0YXRlLCBjcnRjX3N0YXRlKTsNCj4gKw0KPiAg CQlpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2X3ByaXYsIGNydGNfc3RhdGUpOw0K PiAgCX0NCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4gaW5kZXggNDA0OWUw M2QyYzBkLi40N2Y1NTE2MDFhMDUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ IEBAIC04ODUsNiArODg1LDggQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgew0KPiAgDQo+ICAJ c3RydWN0IGludGVsX2NydGNfd21fc3RhdGUgd207DQo+ICANCj4gKwl1MzIgZGF0YV9yYXRlW0k5 MTVfTUFYX1BMQU5FU107DQo+ICsNCj4gIAkvKiBHYW1tYSBtb2RlIHByb2dyYW1tZWQgb24gdGhl IHBpcGUgKi8NCj4gIAl1MzIgZ2FtbWFfbW9kZTsNCj4gIA0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4