From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v2 07/14] drm/i915: Start moving the cdclk stuff into a distinct state structure Date: Fri, 23 Dec 2016 11:09:22 +0200 Message-ID: <1482484162.2633.20.camel@gmail.com> References: <20161219172840.31842-1-ville.syrjala@linux.intel.com> <20161219172840.31842-8-ville.syrjala@linux.intel.com> <1482416080.4759.61.camel@gmail.com> <20161222143348.GO31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id A2C496F4AF for ; Fri, 23 Dec 2016 09:09:30 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id n5so1895820pgh.3 for ; Fri, 23 Dec 2016 01:09:30 -0800 (PST) In-Reply-To: <20161222143348.GO31595@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 =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE2LTEyLTIyIGF0IDE2OjMzICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 Cj4gT24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDQ6MTQ6NDBQTSArMDIwMCwgQW5kZXIgQ29uc2Vs dmFuIERlIE9saXZlaXJhIHdyb3RlOgo+ID4gCj4gPiBPbiBNb24sIDIwMTYtMTItMTkgYXQgMTk6 MjggKzAyMDAsIHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tIHdyb3RlOgo+ID4gPiAKPiA+ ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K PiA+ID4gCj4gPiA+IEludHJvZHVjZSBpbnRlbF9jZGNsayBzdGF0ZSB3aGljaCBmb3Igbm93IHdp bGwgdHJhY2sgdGhlIGNkY2xrCj4gPiA+IGZyZXF1ZW5jeSwgdGhlIHZjbyBmcmVxdWVuY3kgYW5k IHRoZSByZWZlcmVuY2UgZnJlcXVlbmN5IChub3Qgc3VyZSB3ZQo+ID4gPiB3YW50IHRoZSBsYXN0 IG9uZSwgYnV0IEkgcHV0IGl0IHRoZXJlIGFueXdheSkuIFdlJ2xsIGFsc28gbWFrZSB0aGUKPiA+ ID4gLmdldF9jZGNsaygpIGZ1bmN0aW9uIGZpbGwgb3V0IHRoaXMgc3RhdGUgc3RydWN0dXJlIHJh dGhlciB0aGFuCj4gPiA+IGp1c3QgcmV0dXJuaW5nIHRoZSBjdXJyZW50IGNkY2xrIGZyZXF1ZW5j eS4KPiA+ID4gCj4gPiA+IE9uZSBpbW1lZGlhdGUgYmVuZWZpdCBpcyB0aGF0IGNhbGxpbmcgLmdl dF9jZGNsaygpIHdpbGwgbm8gbG9uZ2VyCj4gPiA+IGNsb2JiZXIgc3RhdGUgc3RvcmVkIHVuZGVy IGRldl9wcml2IHVubGVzcyBleFtwbGljaXRseSB0b2xkIHRvIGRvCj4gPiBUeXBvOiBleFtwbGlj aXR5Cj4gPiAKPiA+ID4gCj4gPiA+IHNvLiBQcmV2aW91c2x5IGl0IGNsb2JiZXJlZCB0aGUgdmNv IGFuZCByZWZlcmVuY2UgY2xvY2tzIHN0b3JlZAo+ID4gPiB0aGVyZSBvbiBzb21lIHBsYXRmb3Jt cy4KPiA+ID4gCj4gPiA+IFdlJ2xsIGV4cGFuZCB0aGUgdXNlIG9mIHRoaXMgc3RydWN0dXJlIHRv IGFjdHVhbGx5IHByZWNvbXB1dGluZyB0aGUKPiA+ID4gc3RhdGUgYW5kIHdoYXRub3QgbGF0ZXIu Cj4gPiA+IAo+ID4gPiB2MjogQ29uc3RpZnkgaW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZSgpCj4g PiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+ID4gQSBjb3VwbGUgbW9yZSBjb21tZW50cyBiZWxvZXcsIGJ1dCBl aXRoZXIgd2F5LAo+ID4gCj4gPiBSZXZpZXdlZC1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZl aXJhIDxjb25zZWx2YW4yQGdtYWlsLmNvbT4KPiA+IAo+ID4gPiAKPiA+ID4gLS0tCj4gPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmPCoMKgwqDCoMKgfMKgwqDCoDIgKy0K PiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgwqDCoMKg fMKgwqAxNCArLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmPCoMKg wqDCoMKgwqB8wqDCoMKgMiArLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmPCoMKgwqDCoMKgwqB8IDM1OSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuY8KgwqDCoMKgfMKgwqAx OCArLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmPCoMKgwqDCoMKgwqDC oMKgwqB8wqDCoMKgMiArLQo+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o wqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmMuY8KgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMiArLQo+ID4gPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmPCoMKgwqDCoMKgwqB8wqDCoMKgNCArLQo+ID4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8wqDCoMKgNSArLQo+ID4gPiDC oDEwIGZpbGVzIGNoYW5nZWQsIDI0MCBpbnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCj4g PiA+IAoKWy4uLl0KCkBAIC02MjksMTIgKzY2OCwxMyBAQCBzdGF0aWMgaW50IHNrbF9jYWxjX2Nk Y2xrKGludCBtYXhfcGl4Y2xrLCBpbnQgdmNvKQo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gLXN0 YXRpYyB2b2lkIHNrbF9kcGxsMF91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gPiArc3RhdGljIHZvaWQgc2tsX2RwbGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICsJCQnCoMKgwqDCoMKgc3RydWN0IGludGVsX2NkY2xr X3N0YXRlICpjZGNsa19zdGF0ZSkKPiA+ID4gwqB7Cj4gPiA+IMKgCXUzMiB2YWw7Cj4gPiA+IMKg Cj4gPiA+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYgPSAyNDAwMDsKPiA+ID4gLQlkZXZfcHJp di0+Y2RjbGtfcGxsLnZjbyA9IDA7Cj4gPiA+ICsJY2RjbGtfc3RhdGUtPnJlZiA9IDI0MDAwOwo+ ID4gPiArCWNkY2xrX3N0YXRlLT52Y28gPSAwOwo+ID4gPiDCoAo+ID4gPiDCoAl2YWwgPSBJOTE1 X1JFQUQoTENQTEwxX0NUTCk7Cj4gPiA+IMKgCWlmICgodmFsICYgTENQTExfUExMX0VOQUJMRSkg PT0gMCkKPiA+ID4gQEAgLTY1NiwxMSArNjk2LDExIEBAIHN0YXRpYyB2b2lkIHNrbF9kcGxsMF91 cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiDCoAljYXNlIERQ TExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzEzNTAsIFNLTF9EUExMMCk6 Cj4gPiA+IMKgCWNhc2UgRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVf MTYyMCwgU0tMX0RQTEwwKToKPiA+ID4gwqAJY2FzZSBEUExMX0NUUkwxX0xJTktfUkFURShEUExM X0NUUkwxX0xJTktfUkFURV8yNzAwLCBTS0xfRFBMTDApOgo+ID4gPiAtCQlkZXZfcHJpdi0+Y2Rj bGtfcGxsLnZjbyA9IDgxMDAwMDA7Cj4gPiA+ICsJCWNkY2xrX3N0YXRlLT52Y28gPSA4MTAwMDAw Owo+ID4gPiDCoAkJYnJlYWs7Cj4gPiA+IMKgCWNhc2UgRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBM TF9DVFJMMV9MSU5LX1JBVEVfMTA4MCwgU0tMX0RQTEwwKToKPiA+ID4gwqAJY2FzZSBEUExMX0NU UkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8yMTYwLCBTS0xfRFBMTDApOgo+ID4g PiAtCQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9IDg2NDAwMDA7Cj4gPiA+ICsJCWNkY2xrX3N0 YXRlLT52Y28gPSA4NjQwMDAwOwo+ID4gPiDCoAkJYnJlYWs7Cj4gPiA+IMKgCWRlZmF1bHQ6Cj4g PiA+IMKgCQlNSVNTSU5HX0NBU0UodmFsICYgRFBMTF9DVFJMMV9MSU5LX1JBVEVfTUFTSyhTS0xf RFBMTDApKTsKPiA+IFRoaXMgZnVuY3Rpb24gaXMgYSBiaXQgZnVubnkgbm93LCBzaW5jZSBpdCBz ZXRzIHVwIHRoZSBjZGNsayBzdGF0ZSBiYXNlZCBvbgo+ID4gY3VycmVudCBwbGwwIHByb2dyYW1t aW5nLCBpbnN0ZWFkIG9mIGxvb2tpbmcgYXQgYW4gYXRvbWljIHN0YXRlLgo+IFdlIHNob3VsZCBw cm9iYWJseSByZW5hbWUgaXQgdG8gc29tZWh0aW5nIG1vcmUgZGVzY3JpcHRpdmUuIHNrbF9nZXRf ZHBsbDAoKQo+IG1heWJlLiBPciBtYXliZSBza2xfZHBsbDBfZ2V0X2NvbmZpZyB0byBtYXRjaCB0 aGUgLmdldF9jb25maWcoKQo+IG5vbWVuY2xhdHVyZSB1c2VkIGZvciBlZy4gZW5jb2RlcnMuCgpI bW0sIEkgdGhpbmsgdGhlIHByb2JsZW0gaXMgdGhhdCB0aGlzIGhhdmUgYSBtaXggb2YgZ2V0X2h3 X3N0YXRlKCkgYW5kCmdldF9jb25maWcoKS4gV2UgYWN0dWFsbHkgaGF2ZSBza2xfZGRpX2RwbGww X2dldF9od19zdGF0ZSgpLCBidXQgaXQgd291bGRuJ3QgYmUKdHJpdmlhbCB0byBtYWtlIHRoYXQg Y29kZSByZXVzYWJsZSBmb3IgdGhlIGNkY2xrIHN0dWZmLgoKTWF5YmUgaXQgc2hvdWxkIGJlIHR3 byBzZXBhcmF0ZSBmdW5jdGlvbnMsIG9uZSB0aGF0IGdldHMgdGhlIGhhcmR3YXJlIHN0YXRlIGFu ZAphbm90aGVyIGZvciBjaG9vc2luZyB0aGUgdmNvLiBUaGVuCgrCoCB2Y28gPSBza2xfY2RjbGtf dmNvKHNrbF9kcGxsMF9nZXRfaHdfc3RhdGUoKSk7CgpkaXJlY3RseSBpbiBza2xfZ2V0X2NkY2xr KCkgPyBJJ20gbm90IHJlYWxseSBzdXJlLCBtYXliZSBqdXN0IGxlYXZlIHRoZSB3YXkgaXQKaXMg Zm9yIG5vdy4KCj4gIFRob3VnaCBpZiB3ZSBnbyB0aGVyZSB0aGVuCj4gLmdldF9jZGNsaygpIG1p Z2h0IG5lZWQgdG8gYmUgcmVuYW1lZCB0byAuY2RjbGtfZ2V0X2NvbmZpZyBvciBzb21ldGhpbmcu CgouY2RjbGtfZ2V0X2h3X3N0YXRlKCkgPwoKCkFuZGVyCgo+IAo+ID4gCj4gPiBCdXQgc28gZmFy IGl0Cj4gPiBpcyBvbmx5IHVzZWQgdG8gcmVhZCB0aGUgY3VycmVudCBjZGNsaywgc28gdGhlcmUn cyBubyBoYXJtLgo+ID4gCj4gPiA+IAo+ID4gPiBAQCAtNjY4LDQ2ICs3MDgsNTcgQEAgc3RhdGlj IHZvaWQgc2tsX2RwbGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiA+IMKgCX0KPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IC1zdGF0aWMgaW50IHNrbF9nZXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiArc3RhdGljIHZv aWQgc2tsX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ ICsJCQnCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiA+ID4gwqB7 Cj4gPiA+IMKgCXUzMiBjZGN0bDsKPiA+ID4gwqAKPiA+ID4gLQlza2xfZHBsbDBfdXBkYXRlKGRl dl9wcml2KTsKPiA+ID4gKwlza2xfZHBsbDBfdXBkYXRlKGRldl9wcml2LCBjZGNsa19zdGF0ZSk7 Cj4gPiA+ICsKPiA+ID4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSBjZGNsa19zdGF0ZS0+cmVmOwo+ ID4gPiDCoAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9PSAwKQo+ID4gPiAt CQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7Cj4gPiA+ICsJaWYgKGNkY2xrX3N0YXRl LT52Y28gPT0gMCkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiDCoAo+ID4gPiDCoAljZGN0bCA9IEk5 MTVfUkVBRChDRENMS19DVEwpOwo+ID4gPiDCoAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtf cGxsLnZjbyA9PSA4NjQwMDAwKSB7Cj4gPiA+ICsJaWYgKGNkY2xrX3N0YXRlLT52Y28gPT0gODY0 MDAwMCkgewo+ID4gPiDCoAkJc3dpdGNoIChjZGN0bCAmIENEQ0xLX0ZSRVFfU0VMX01BU0spIHsK PiA+ID4gwqAJCWNhc2UgQ0RDTEtfRlJFUV80NTBfNDMyOgo+ID4gPiAtCQkJcmV0dXJuIDQzMjAw MDsKPiA+ID4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDQzMjAwMDsKPiA+ID4gKwkJCWJyZWFr Owo+ID4gPiDCoAkJY2FzZSBDRENMS19GUkVRXzMzN18zMDg6Cj4gPiA+IC0JCQlyZXR1cm4gMzA4 NTcxOwo+ID4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMzA4NTcxOwo+ID4gPiArCQkJYnJl YWs7Cj4gPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNTQwOgo+ID4gPiAtCQkJcmV0dXJuIDU0MDAw MDsKPiA+ID4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDU0MDAwMDsKPiA+ID4gKwkJCWJyZWFr Owo+ID4gPiDCoAkJY2FzZSBDRENMS19GUkVRXzY3NV82MTc6Cj4gPiA+IC0JCQlyZXR1cm4gNjE3 MTQzOwo+ID4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNjE3MTQzOwo+ID4gPiArCQkJYnJl YWs7Cj4gPiA+IMKgCQlkZWZhdWx0Ogo+ID4gPiDCoAkJCU1JU1NJTkdfQ0FTRShjZGN0bCAmIENE Q0xLX0ZSRVFfU0VMX01BU0spOwo+ID4gPiArCQkJYnJlYWs7Cj4gPiA+IMKgCQl9Cj4gPiA+IMKg CX0gZWxzZSB7Cj4gPiA+IMKgCQlzd2l0Y2ggKGNkY3RsICYgQ0RDTEtfRlJFUV9TRUxfTUFTSykg ewo+ID4gPiDCoAkJY2FzZSBDRENMS19GUkVRXzQ1MF80MzI6Cj4gPiA+IC0JCQlyZXR1cm4gNDUw MDAwOwo+ID4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDUwMDAwOwo+ID4gPiArCQkJYnJl YWs7Cj4gPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfMzM3XzMwODoKPiA+ID4gLQkJCXJldHVybiAz Mzc1MDA7Cj4gPiA+ICsJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAzMzc1MDA7Cj4gPiA+ICsJCQli cmVhazsKPiA+ID4gwqAJCWNhc2UgQ0RDTEtfRlJFUV81NDA6Cj4gPiA+IC0JCQlyZXR1cm4gNTQw MDAwOwo+ID4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNTQwMDAwOwo+ID4gPiArCQkJYnJl YWs7Cj4gPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNjc1XzYxNzoKPiA+ID4gLQkJCXJldHVybiA2 NzUwMDA7Cj4gPiA+ICsJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA2NzUwMDA7Cj4gPiA+ICsJCQli cmVhazsKPiA+ID4gwqAJCWRlZmF1bHQ6Cj4gPiA+IMKgCQkJTUlTU0lOR19DQVNFKGNkY3RsICYg Q0RDTEtfRlJFUV9TRUxfTUFTSyk7Cj4gPiA+ICsJCQlicmVhazsKPiA+ID4gwqAJCX0KPiA+ID4g wqAJfQo+ID4gPiAtCj4gPiA+IC0JcmV0dXJuIGRldl9wcml2LT5jZGNsa19wbGwucmVmOwo+ID4g PiDCoH0KPiA+ID4gwqAKPiA+ID4gwqAvKiBjb252ZXJ0IGZyb20ga0h6IHRvIC4xIGZpeHBvaW50 IE1IeiB3aXRoIC0xTUh6IG9mZnNldCAqLwo+ID4gPiBAQCAtNzcwLDcgKzgyMSw3IEBAIHN0YXRp YyB2b2lkIHNrbF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgdmNvKQo+ID4gPiDCoAkJCQnCoMKgwqDCoDUpKQo+ID4gPiDCoAkJRFJNX0VSUk9SKCJE UExMMCBub3QgbG9ja2VkXG4iKTsKPiA+ID4gwqAKPiA+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxs LnZjbyA9IHZjbzsKPiA+ID4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gdmNvOwo+ID4gPiDC oAo+ID4gPiDCoAkvKiBXZSdsbCB3YW50IHRvIGtlZXAgdXNpbmcgdGhlIGN1cnJlbnQgdmNvIGZy b20gbm93IG9uLiAqLwo+ID4gPiDCoAlza2xfc2V0X3ByZWZlcnJlZF9jZGNsa192Y28oZGV2X3By aXYsIHZjbyk7Cj4gPiA+IEBAIC03ODQsNyArODM1LDcgQEAgc3RhdGljIHZvaWQgc2tsX2RwbGww X2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiDCoAkJCQnC oMKgwqAxKSkKPiA+ID4gwqAJCURSTV9FUlJPUigiQ291bGRuJ3QgZGlzYWJsZSBEUExMMFxuIik7 Cj4gPiA+IMKgCj4gPiA+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+ID4gPiArCWRl dl9wcml2LT5jZGNsay5ody52Y28gPSAwOwo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gwqBzdGF0 aWMgdm9pZCBza2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ID4gQEAgLTgzNCwxMSArODg1LDExIEBAIHN0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAkJYnJlYWs7Cj4gPiA+IMKg CX0KPiA+ID4gwqAKPiA+ID4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gMCAmJgo+ ID4gPiAtCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gdmNvKQo+ID4gPiArCWlm IChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IDAgJiYKPiA+ID4gKwnCoMKgwqDCoGRldl9wcml2 LT5jZGNsay5ody52Y28gIT0gdmNvKQo+ID4gPiDCoAkJc2tsX2RwbGwwX2Rpc2FibGUoZGV2X3By aXYpOwo+ID4gPiDCoAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSB2Y28p Cj4gPiA+ICsJaWYgKGRldl9wcml2LT5jZGNsay5ody52Y28gIT0gdmNvKQo+ID4gPiDCoAkJc2ts X2RwbGwwX2VuYWJsZShkZXZfcHJpdiwgdmNvKTsKPiA+ID4gwqAKPiA+ID4gwqAJSTkxNV9XUklU RShDRENMS19DVEwsIGZyZXFfc2VsZWN0IHwgc2tsX2NkY2xrX2RlY2ltYWwoY2RjbGspKTsKPiA+ ID4gQEAgLTg2Niw4ICs5MTcsOCBAQCBzdGF0aWMgdm9pZCBza2xfc2FuaXRpemVfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiDCoAo+ID4gPiDCoAlpbnRlbF91 cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwo+ID4gPiDCoAkvKiBJcyBQTEwgZW5hYmxlZCBhbmQgbG9j a2VkID8gKi8KPiA+ID4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPT0gMCB8fAo+ID4g PiAtCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPT0gZGV2X3ByaXYtPmNkY2xrX3BsbC5y ZWYpCj4gPiA+ICsJaWYgKGRldl9wcml2LT5jZGNsay5ody52Y28gPT0gMCB8fAo+ID4gPiArCcKg wqDCoMKgZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID09IGRldl9wcml2LT5jZGNsay5ody5yZWYp Cj4gPiA+IMKgCQlnb3RvIHNhbml0aXplOwo+ID4gPiDCoAo+ID4gPiDCoAkvKiBEUExMIG9rYXk7 IHZlcmlmeSB0aGUgY2RjbG9jawo+ID4gPiBAQCAtODc4LDcgKzkyOSw3IEBAIHN0YXRpYyB2b2lk IHNrbF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiA+IMKgCcKgKi8KPiA+ID4gwqAJY2RjdGwgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RMKTsKPiA+ID4g wqAJZXhwZWN0ZWQgPSAoY2RjdGwgJiBDRENMS19GUkVRX1NFTF9NQVNLKSB8Cj4gPiA+IC0JCXNr bF9jZGNsa19kZWNpbWFsKGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiA+ID4gKwkJc2tsX2NkY2xr X2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrKTsKPiA+ID4gwqAJaWYgKGNkY3RsID09 IGV4cGVjdGVkKQo+ID4gPiDCoAkJLyogQWxsIHdlbGw7IG5vdGhpbmcgdG8gc2FuaXRpemUgKi8K PiA+ID4gwqAJCXJldHVybjsKPiA+ID4gQEAgLTg4NywxNCArOTM4LDE0IEBAIHN0YXRpYyB2b2lk IHNrbF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiA+IMKgCURSTV9ERUJVR19LTVMoIlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUt b3NcbiIpOwo+ID4gPiDCoAo+ID4gPiDCoAkvKiBmb3JjZSBjZGNsayBwcm9ncmFtbWluZyAqLwo+ ID4gPiAtCWRldl9wcml2LT5jZGNsa19mcmVxID0gMDsKPiA+ID4gKwlkZXZfcHJpdi0+Y2RjbGsu aHcuY2RjbGsgPSAwOwo+ID4gPiDCoAkvKiBmb3JjZSBmdWxsIFBMTCBkaXNhYmxlICsgZW5hYmxl ICovCj4gPiA+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAtMTsKPiA+ID4gKwlkZXZfcHJp di0+Y2RjbGsuaHcudmNvID0gLTE7Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiDCoHZvaWQgc2ts X3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKg ewo+ID4gPiAtCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsIGRldl9wcml2LT5jZGNsa19wbGwucmVm LCAwKTsKPiA+ID4gKwlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGsuaHcu cmVmLCAwKTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IMKgdm9pZCBza2xfaW5pdF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IEBAIC05MDMsMTQgKzk1NCwx NSBAQCB2b2lkIHNrbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gwqAKPiA+ID4gwqAJc2tsX3Nhbml0aXplX2NkY2xrKGRldl9wcml2KTsKPiA+ID4g wqAKPiA+ID4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX2ZyZXEgIT0gMCAmJiBkZXZfcHJpdi0+Y2Rj bGtfcGxsLnZjbyAhPSAwKSB7Cj4gPiA+ICsJaWYgKGRldl9wcml2LT5jZGNsay5ody5jZGNsayAh PSAwICYmCj4gPiA+ICsJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IDApIHsKPiA+ ID4gwqAJCS8qCj4gPiA+IMKgCQnCoCogVXNlIHRoZSBjdXJyZW50IHZjbyBhcyBvdXIgaW5pdGlh bAo+ID4gPiDCoAkJwqAqIGd1ZXNzIGFzIHRvIHdoYXQgdGhlIHByZWZlcnJlZCB2Y28gaXMuCj4g PiA+IMKgCQnCoCovCj4gPiA+IMKgCQlpZiAoZGV2X3ByaXYtPnNrbF9wcmVmZXJyZWRfdmNvX2Zy ZXEgPT0gMCkKPiA+ID4gwqAJCQlza2xfc2V0X3ByZWZlcnJlZF9jZGNsa192Y28oZGV2X3ByaXYs Cj4gPiA+IC0JCQkJCQnCoMKgwqDCoGRldl9wcml2LT5jZGNsa19wbGwudmNvKTsKPiA+ID4gKwkJ CQkJCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyk7Cj4gPiA+IMKgCQlyZXR1cm47Cj4g PiA+IMKgCX0KPiA+ID4gwqAKPiA+ID4gQEAgLTk1MCw3ICsxMDAyLDcgQEAgc3RhdGljIGludCBi eHRfZGVfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNs aykKPiA+ID4gwqB7Cj4gPiA+IMKgCWludCByYXRpbzsKPiA+ID4gwqAKPiA+ID4gLQlpZiAoY2Rj bGsgPT0gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYpCj4gPiA+ICsJaWYgKGNkY2xrID09IGRldl9w cml2LT5jZGNsay5ody5yZWYpCj4gPiA+IMKgCQlyZXR1cm4gMDsKPiA+ID4gwqAKPiA+ID4gwqAJ c3dpdGNoIChjZGNsaykgewo+ID4gPiBAQCAtOTY3LDE0ICsxMDE5LDE0IEBAIHN0YXRpYyBpbnQg Ynh0X2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgY2Rj bGspCj4gPiA+IMKgCQlicmVhazsKPiA+ID4gwqAJfQo+ID4gPiDCoAo+ID4gPiAtCXJldHVybiBk ZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiAqIHJhdGlvOwo+ID4gPiArCXJldHVybiBkZXZfcHJpdi0+ Y2RjbGsuaHcucmVmICogcmF0aW87Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ID4gPiDCoHN0YXRpYyBp bnQgZ2xrX2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQg Y2RjbGspCj4gPiA+IMKgewo+ID4gPiDCoAlpbnQgcmF0aW87Cj4gPiA+IMKgCj4gPiA+IC0JaWYg KGNkY2xrID09IGRldl9wcml2LT5jZGNsa19wbGwucmVmKQo+ID4gPiArCWlmIChjZGNsayA9PSBk ZXZfcHJpdi0+Y2RjbGsuaHcucmVmKQo+ID4gPiDCoAkJcmV0dXJuIDA7Cj4gPiA+IMKgCj4gPiA+ IMKgCXN3aXRjaCAoY2RjbGspIHsKPiA+ID4gQEAgLTk4NywxNSArMTAzOSwxNiBAQCBzdGF0aWMg aW50IGdsa19kZV9wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50 IGNkY2xrKQo+ID4gPiDCoAkJYnJlYWs7Cj4gPiA+IMKgCX0KPiA+ID4gwqAKPiA+ID4gLQlyZXR1 cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYgKiByYXRpbzsKPiA+ID4gKwlyZXR1cm4gZGV2X3By aXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlvOwo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gLXN0YXRp YyB2b2lkIGJ4dF9kZV9wbGxfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gK3N0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiA+ID4gKwkJCcKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiA+IMKgewo+ID4gPiDCoAl1MzIgdmFsOwo+ID4gPiDC oAo+ID4gPiAtCWRldl9wcml2LT5jZGNsa19wbGwucmVmID0gMTkyMDA7Cj4gPiA+IC0JZGV2X3By aXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+ID4gPiArCWNkY2xrX3N0YXRlLT5yZWYgPSAxOTIwMDsK PiA+ID4gKwljZGNsa19zdGF0ZS0+dmNvID0gMDsKPiA+ID4gwqAKPiA+ID4gwqAJdmFsID0gSTkx NV9SRUFEKEJYVF9ERV9QTExfRU5BQkxFKTsKPiA+ID4gwqAJaWYgKCh2YWwgJiBCWFRfREVfUExM X1BMTF9FTkFCTEUpID09IDApCj4gPiA+IEBAIC0xMDA1LDIwICsxMDU4LDIxIEBAIHN0YXRpYyB2 b2lkIGJ4dF9kZV9wbGxfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+ID4gwqAJCXJldHVybjsKPiA+ID4gwqAKPiA+ID4gwqAJdmFsID0gSTkxNV9SRUFEKEJYVF9E RV9QTExfQ1RMKTsKPiA+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9ICh2YWwgJiBCWFRf REVfUExMX1JBVElPX01BU0spICoKPiA+ID4gLQkJZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7Cj4g PiA+ICsJY2RjbGtfc3RhdGUtPnZjbyA9ICh2YWwgJiBCWFRfREVfUExMX1JBVElPX01BU0spICog Y2RjbGtfc3RhdGUtPnJlZjsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IC1zdGF0aWMgaW50IGJ4 dF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiArc3Rh dGljIHZvaWQgYnh0X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gPiA+ICsJCQnCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiA+ ID4gwqB7Cj4gPiA+IMKgCXUzMiBkaXZpZGVyOwo+ID4gPiAtCWludCBkaXYsIHZjbzsKPiA+ID4g KwlpbnQgZGl2Owo+ID4gPiDCoAo+ID4gPiAtCWJ4dF9kZV9wbGxfdXBkYXRlKGRldl9wcml2KTsK PiA+ID4gKwlieHRfZGVfcGxsX3VwZGF0ZShkZXZfcHJpdiwgY2RjbGtfc3RhdGUpOwo+ID4gPiDC oAo+ID4gPiAtCXZjbyA9IGRldl9wcml2LT5jZGNsa19wbGwudmNvOwo+ID4gPiAtCWlmICh2Y28g PT0gMCkKPiA+ID4gLQkJcmV0dXJuIGRldl9wcml2LT5jZGNsa19wbGwucmVmOwo+ID4gPiArCWNk Y2xrX3N0YXRlLT5jZGNsayA9IGNkY2xrX3N0YXRlLT5yZWY7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo Y2RjbGtfc3RhdGUtPnZjbyA9PSAwKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+IMKgCj4gPiA+IMKg CWRpdmlkZXIgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RMKSAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxf TUFTSzsKPiA+ID4gwqAKPiA+ID4gQEAgLTEwMzgsMTAgKzEwOTIsMTAgQEAgc3RhdGljIGludCBi eHRfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAJ CWJyZWFrOwo+ID4gPiDCoAlkZWZhdWx0Ogo+ID4gPiDCoAkJTUlTU0lOR19DQVNFKGRpdmlkZXIp Owo+ID4gPiAtCQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7Cj4gPiA+ICsJCXJldHVy bjsKPiA+ID4gwqAJfQo+ID4gPiDCoAo+ID4gPiAtCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVCh2 Y28sIGRpdik7Cj4gPiA+ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gRElWX1JPVU5EX0NMT1NFU1Qo Y2RjbGtfc3RhdGUtPnZjbywgZGl2KTsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IMKgc3RhdGlj IHZvaWQgYnh0X2RlX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gQEAgLTEwNTQsMTIgKzExMDgsMTIgQEAgc3RhdGljIHZvaWQgYnh0X2RlX3BsbF9k aXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAJCQkJwqDC oMKgwqAxKSkKPiA+ID4gwqAJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBERSBQTEwg dW5sb2NrXG4iKTsKPiA+ID4gwqAKPiA+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9IDA7 Cj4gPiA+ICsJZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9IDA7Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ ID4gPiDCoHN0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgaW50IHZjbykKPiA+ID4gwqB7Cj4gPiA+IC0JaW50IHJhdGlvID0gRElW X1JPVU5EX0NMT1NFU1QodmNvLCBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZik7Cj4gPiA+ICsJaW50 IHJhdGlvID0gRElWX1JPVU5EX0NMT1NFU1QodmNvLCBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmKTsK PiA+ID4gwqAJdTMyIHZhbDsKPiA+ID4gwqAKPiA+ID4gwqAJdmFsID0gSTkxNV9SRUFEKEJYVF9E RV9QTExfQ1RMKTsKPiA+ID4gQEAgLTEwNzcsNyArMTEzMSw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9k ZV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykK PiA+ID4gwqAJCQkJwqDCoMKgwqAxKSkKPiA+ID4gwqAJCURSTV9FUlJPUigidGltZW91dCB3YWl0 aW5nIGZvciBERSBQTEwgbG9ja1xuIik7Cj4gPiA+IMKgCj4gPiA+IC0JZGV2X3ByaXYtPmNkY2xr X3BsbC52Y28gPSB2Y287Cj4gPiA+ICsJZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9IHZjbzsKPiA+ ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IMKgc3RhdGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IEBAIC0xMTA1LDcgKzExNTksNyBAQCBz dGF0aWMgdm9pZCBieHRfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+ID4gwqAJCWRpdmlkZXIgPSBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzE7Cj4gPiA+IMKg CQlicmVhazsKPiA+ID4gwqAJZGVmYXVsdDoKPiA+ID4gLQkJV0FSTl9PTihjZGNsayAhPSBkZXZf cHJpdi0+Y2RjbGtfcGxsLnJlZik7Cj4gPiA+ICsJCVdBUk5fT04oY2RjbGsgIT0gZGV2X3ByaXYt PmNkY2xrLmh3LnJlZik7Cj4gPiA+IMKgCQlXQVJOX09OKHZjbyAhPSAwKTsKPiA+ID4gwqAKPiA+ ID4gwqAJCWRpdmlkZXIgPSBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzE7Cj4gPiA+IEBAIC0xMTI0 LDExICsxMTc4LDExIEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAkJcmV0dXJuOwo+ID4gPiDCoAl9Cj4gPiA+IMKg Cj4gPiA+IC0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IDAgJiYKPiA+ID4gLQnCoMKg wqDCoGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IHZjbykKPiA+ID4gKwlpZiAoZGV2X3ByaXYt PmNkY2xrLmh3LnZjbyAhPSAwICYmCj4gPiA+ICsJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGsuaHcu dmNvICE9IHZjbykKPiA+ID4gwqAJCWJ4dF9kZV9wbGxfZGlzYWJsZShkZXZfcHJpdik7Cj4gPiA+ IMKgCj4gPiA+IC0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IHZjbykKPiA+ID4gKwlp ZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSB2Y28pCj4gPiA+IMKgCQlieHRfZGVfcGxsX2Vu YWJsZShkZXZfcHJpdiwgdmNvKTsKPiA+ID4gwqAKPiA+ID4gwqAJdmFsID0gZGl2aWRlciB8IHNr bF9jZGNsa19kZWNpbWFsKGNkY2xrKTsKPiA+ID4gQEAgLTExNjUsOCArMTIxOSw4IEBAIHN0YXRp YyB2b2lkIGJ4dF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiA+IMKgCj4gPiA+IMKgCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7Cj4gPiA+ IMKgCj4gPiA+IC0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvID09IDAgfHwKPiA+ID4gLQnC oMKgwqDCoGRldl9wcml2LT5jZGNsa19mcmVxID09IGRldl9wcml2LT5jZGNsa19wbGwucmVmKQo+ ID4gPiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID09IDAgfHwKPiA+ID4gKwnCoMKgwqDC oGRldl9wcml2LT5jZGNsay5ody5jZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmKQo+ID4g PiDCoAkJZ290byBzYW5pdGl6ZTsKPiA+ID4gwqAKPiA+ID4gwqAJLyogRFBMTCBva2F5OyB2ZXJp ZnkgdGhlIGNkY2xvY2sKPiA+ID4gQEAgLTExODQsMTIgKzEyMzgsMTIgQEAgc3RhdGljIHZvaWQg Ynh0X3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ID4gwqAJY2RjdGwgJj0gfkJYVF9DRENMS19DRDJYX1BJUEVfTk9ORTsKPiA+ID4gwqAKPiA+ID4g wqAJZXhwZWN0ZWQgPSAoY2RjdGwgJiBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0spIHwKPiA+ ID4gLQkJwqDCoMKgc2tsX2NkY2xrX2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwo+ID4g PiArCQlza2xfY2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspOwo+ID4gPiDC oAkvKgo+ID4gPiDCoAnCoCogRGlzYWJsZSBTU0EgUHJlY2hhcmdlIHdoZW4gQ0QgY2xvY2sgZnJl cXVlbmN5IDwgNTAwIE1IeiwKPiA+ID4gwqAJwqAqIGVuYWJsZSBvdGhlcndpc2UuCj4gPiA+IMKg CcKgKi8KPiA+ID4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPj0gNTAwMDAwKQo+ID4gPiAr CWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPj0gNTAwMDAwKQo+ID4gPiDCoAkJZXhwZWN0 ZWQgfD0gQlhUX0NEQ0xLX1NTQV9QUkVDSEFSR0VfRU5BQkxFOwo+ID4gPiDCoAo+ID4gPiDCoAlp ZiAoY2RjdGwgPT0gZXhwZWN0ZWQpCj4gPiA+IEBAIC0xMjAwLDEwICsxMjU0LDEwIEBAIHN0YXRp YyB2b2lkIGJ4dF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiA+IMKgCURSTV9ERUJVR19LTVMoIlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBi eSBwcmUtb3NcbiIpOwo+ID4gPiDCoAo+ID4gPiDCoAkvKiBmb3JjZSBjZGNsayBwcm9ncmFtbWlu ZyAqLwo+ID4gPiAtCWRldl9wcml2LT5jZGNsa19mcmVxID0gMDsKPiA+ID4gKwlkZXZfcHJpdi0+ Y2RjbGsuaHcuY2RjbGsgPSAwOwo+ID4gPiDCoAo+ID4gPiDCoAkvKiBmb3JjZSBmdWxsIFBMTCBk aXNhYmxlICsgZW5hYmxlICovCj4gPiA+IC0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAtMTsK PiA+ID4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gLTE7Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ ID4gPiDCoHZvaWQgYnh0X2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gPiBAQCAtMTIxMiw3ICsxMjY2LDggQEAgdm9pZCBieHRfaW5pdF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgCj4gPiA+IMKgCWJ4dF9zYW5p dGl6ZV9jZGNsayhkZXZfcHJpdik7Cj4gPiA+IMKgCj4gPiA+IC0JaWYgKGRldl9wcml2LT5jZGNs a19mcmVxICE9IDAgJiYgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gMCkKPiA+ID4gKwlpZiAo ZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrICE9IDAgJiYKPiA+ID4gKwnCoMKgwqDCoGRldl9wcml2 LT5jZGNsay5ody52Y28gIT0gMCkKPiA+ID4gwqAJCXJldHVybjsKPiA+ID4gwqAKPiA+ID4gwqAJ LyoKPiA+ID4gQEAgLTEyMzMsNyArMTI4OCwxMyBAQCB2b2lkIGJ4dF9pbml0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAKPiA+ID4gwqB2b2lkIGJ4dF91 bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiDCoHsK PiA+ID4gLQlieHRfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiwg MCk7Cj4gPiA+ICsJYnh0X3NldF9jZGNsayhkZXZfcHJpdiwgZGV2X3ByaXYtPmNkY2xrLmh3LnJl ZiwgMCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK2Jvb2wgaW50ZWxfY2RjbGtfc3RhdGVfY29t cGFyZShjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmEsCj4gPiA+ICsJCQnCoMKgwqDC oMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqYikKPiA+ID4gK3sKPiA+ID4g KwlyZXR1cm4gbWVtY21wKGEsIGIsIHNpemVvZigqYSkpID09IDA7Cj4gPiA+IMKgfQo+ID4gPiDC oAo+ID4gPiDCoHN0YXRpYyBpbnQgYmR3X2FkanVzdF9taW5fcGlwZV9waXhlbF9yYXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gPiBAQCAtMTUzMyw3ICsxNTk0LDcg QEAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiA+ID4gwqAJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDQwMDAwMDsKPiA+ ID4gwqAJfSBlbHNlIHsKPiA+ID4gwqAJCS8qIG90aGVyd2lzZSBhc3N1bWUgY2RjbGsgaXMgZml4 ZWQgKi8KPiA+ID4gLQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYtPmNkY2xr X2ZyZXE7Cj4gPiA+ICsJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IGRldl9wcml2LT5jZGNs ay5ody5jZGNsazsKPiA+ID4gwqAJfQo+ID4gPiDCoAo+ID4gPiDCoAlkZXZfcHJpdi0+bWF4X2Rv dGNsa19mcmVxID0gaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKGRldl9wcml2KTsKPiA+ID4gQEAg LTE1NDcsMTUgKzE2MDgsMTEgQEAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAKPiA+ID4gwqB2b2lkIGludGVsX3Vw ZGF0ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgewo+ ID4gPiAtCWRldl9wcml2LT5jZGNsa19mcmVxID0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xr KGRldl9wcml2KTsKPiA+ID4gKwlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsoZGV2X3ByaXYs ICZkZXZfcHJpdi0+Y2RjbGsuaHcpOwo+ID4gPiDCoAo+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpCj4gPiA+IC0JCURSTV9ERUJVR19EUklWRVIoIkN1cnJlbnQgQ0QgY2xvY2sg cmF0ZTogJWQga0h6LCBWQ086ICVkIGtIeiwgcmVmOiAlZCBrSHpcbiIsCj4gPiA+IC0JCQkJwqBk ZXZfcHJpdi0+Y2RjbGtfZnJlcSwgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28sCj4gPiA+IC0JCQkJ wqBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZik7Cj4gPiA+IC0JZWxzZQo+ID4gPiAtCQlEUk1fREVC VUdfRFJJVkVSKCJDdXJyZW50IENEIGNsb2NrIHJhdGU6ICVkIGtIelxuIiwKPiA+ID4gLQkJCQnC oGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiA+ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJDdXJyZW50 IENEIGNsb2NrIHJhdGU6ICVkIGtIeiwgVkNPOiAlZCBrSHosIHJlZjogJWQga0h6XG4iLAo+ID4g PiArCQkJwqBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGssIGRldl9wcml2LT5jZGNsay5ody52Y28s Cj4gPiA+ICsJCQnCoGRldl9wcml2LT5jZGNsay5ody5yZWYpOwo+ID4gPiDCoAo+ID4gPiDCoAkv Kgo+ID4gPiDCoAnCoCogOTowIENNQlVTIFtzaWNdIENEQ0xLIGZyZXF1ZW5jeSAoY2RmcmVxKToK PiA+ID4gQEAgLTE1NjUsNyArMTYyMiw3IEBAIHZvaWQgaW50ZWxfdXBkYXRlX2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gwqAJwqAqLwo+ID4gPiDCoAlpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gPiA+ IMKgCQlJOTE1X1dSSVRFKEdNQlVTRlJFUV9WTFYsCj4gPiA+IC0JCQnCoMKgwqBESVZfUk9VTkRf VVAoZGV2X3ByaXYtPmNkY2xrX2ZyZXEsIDEwMDApKTsKPiA+ID4gKwkJCcKgwqDCoERJVl9ST1VO RF9VUChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGssIDEwMDApKTsKPiA+ID4gwqB9Cj4gPiA+IMKg Cj4gPiA+IMKgc3RhdGljIGludCBwY2hfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiBpbmRl eCA1MTllNWQ2NjNjNWYuLjZjMzhhYjI5OTUwNiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiBAQCAtMTM2LDcgKzEzNiw3IEBAIHN0cnVjdCBpbnRl bF9saW1pdCB7Cj4gPiA+IMKgfTsKPiA+ID4gwqAKPiA+ID4gwqAvKiByZXR1cm5zIEhQTEwgZnJl cXVlbmN5IGluIGtIeiAqLwo+ID4gPiAtc3RhdGljIGludCB2YWxsZXl2aWV3X2dldF92Y28oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAraW50IHZsdl9nZXRfaHBsbF92 Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiDCoHsKPiA+ID4gwqAJ aW50IGhwbGxfZnJlcSwgdmNvX2ZyZXFbXSA9IHsgODAwLCAxNjAwLCAyMDAwLCAyNDAwIH07Cj4g PiA+IMKgCj4gPiA+IEBAIC0xNzIsNyArMTcyLDcgQEAgaW50IHZsdl9nZXRfY2NrX2Nsb2NrX2hw bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAkJCcKgwqDCoGNv bnN0IGNoYXIgKm5hbWUsIHUzMiByZWcpCj4gPiA+IMKgewo+ID4gPiDCoAlpZiAoZGV2X3ByaXYt PmhwbGxfZnJlcSA9PSAwKQo+ID4gPiAtCQlkZXZfcHJpdi0+aHBsbF9mcmVxID0gdmFsbGV5dmll d19nZXRfdmNvKGRldl9wcml2KTsKPiA+ID4gKwkJZGV2X3ByaXYtPmhwbGxfZnJlcSA9IHZsdl9n ZXRfaHBsbF92Y28oZGV2X3ByaXYpOwo+ID4gPiDCoAo+ID4gPiDCoAlyZXR1cm4gdmx2X2dldF9j Y2tfY2xvY2soZGV2X3ByaXYsIG5hbWUsIHJlZywKPiA+ID4gwqAJCQkJwqBkZXZfcHJpdi0+aHBs bF9mcmVxKTsKPiA+ID4gQEAgLTEyNDM2LDcgKzEyNDM2LDcgQEAgc3RhdGljIGludCBpbnRlbF9t b2Rlc2V0X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+IMKgCcKg Ki8KPiA+ID4gwqAJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsaykgewo+ ID4gPiDCoAkJaWYgKCFpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbykKPiA+ID4gLQkJCWludGVs X3N0YXRlLT5jZGNsa19wbGxfdmNvID0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y287Cj4gPiA+ICsJ CQlpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbyA9IGRldl9wcml2LT5jZGNsay5ody52Y287Cj4g PiA+IMKgCQlpZiAoIWludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNvKQo+ID4gPiDCoAkJCWludGVs X3N0YXRlLT5jZGNsa19wbGxfdmNvID0gZGV2X3ByaXYtPnNrbF9wcmVmZXJyZWRfdmNvX2ZyZXE7 Cj4gPiA+IMKgCj4gPiA+IEBAIC0xMjQ1Niw4ICsxMjQ1Niw4IEBAIHN0YXRpYyBpbnQgaW50ZWxf bW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gPiDCoAkJ fQo+ID4gPiDCoAo+ID4gPiDCoAkJLyogQWxsIHBpcGVzIG11c3QgYmUgc3dpdGNoZWQgb2ZmIHdo aWxlIHdlIGNoYW5nZSB0aGUgY2RjbGsuICovCj4gPiA+IC0JCWlmIChpbnRlbF9zdGF0ZS0+ZGV2 X2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxIHx8Cj4gPiA+IC0JCcKgwqDCoMKgaW50ZWxf c3RhdGUtPmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pIHsKPiA+ID4g KwkJaWYgKGludGVsX3N0YXRlLT5kZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xr IHx8Cj4gPiA+ICsJCcKgwqDCoMKgaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gIT0gZGV2X3By aXYtPmNkY2xrLmh3LnZjbykgewo+ID4gPiDCoAkJCXJldCA9IGludGVsX21vZGVzZXRfYWxsX3Bp cGVzKHN0YXRlKTsKPiA+ID4gwqAJCQlpZiAocmV0IDwgMCkKPiA+ID4gwqAJCQkJcmV0dXJuIHJl dDsKPiA+ID4gQEAgLTEyODc0LDggKzEyODc0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWlj X2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gwqAJCWRy bV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdGF0ZS0+ZGV2LCBz dGF0ZSk7Cj4gPiA+IMKgCj4gPiA+IMKgCQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9j b21taXRfY2RjbGsgJiYKPiA+ID4gLQkJwqDCoMKgwqAoaW50ZWxfc3RhdGUtPmRldl9jZGNsayAh PSBkZXZfcHJpdi0+Y2RjbGtfZnJlcSB8fAo+ID4gPiAtCQnCoMKgwqDCoMKgaW50ZWxfc3RhdGUt PmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pKQo+ID4gPiArCQnCoMKg wqDCoChpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsay5ody5jZGNsayB8 fAo+ID4gPiArCQnCoMKgwqDCoMKgaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gIT0gZGV2X3By aXYtPmNkY2xrLmh3LnZjbykpCj4gPiA+IMKgCQkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9j b21taXRfY2RjbGsoc3RhdGUpOwo+ID4gPiDCoAo+ID4gPiDCoAkJLyoKPiA+ID4gQEAgLTE0NzI0 LDcgKzE0NzI0LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXRfaHcoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+ID4gwqAKPiA+ID4gwqAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsK PiA+ID4gwqAKPiA+ID4gLQlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+ Y2RjbGtfZnJlcTsKPiA+ID4gKwlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJp di0+Y2RjbGsuaHcuY2RjbGs7Cj4gPiA+IMKgCj4gPiA+IMKgCWludGVsX2luaXRfY2xvY2tfZ2F0 aW5nKGRldl9wcml2KTsKPiA+ID4gwqB9Cj4gPiA+IEBAIC0xNDg5Nyw3ICsxNDg5Nyw3IEBAIGlu dCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4gwqAKPiA+ ID4gwqAJaW50ZWxfdXBkYXRlX2N6Y2xrKGRldl9wcml2KTsKPiA+ID4gwqAJaW50ZWxfdXBkYXRl X2NkY2xrKGRldl9wcml2KTsKPiA+ID4gLQlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBk ZXZfcHJpdi0+Y2RjbGtfZnJlcTsKPiA+ID4gKwlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEg PSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGs7Cj4gPiA+IMKgCj4gPiA+IMKgCWludGVsX3NoYXJl ZF9kcGxsX2luaXQoZGV2KTsKPiA+ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g PiA+IGluZGV4IDQ1ZWJjOTYzMjYzMy4uNzNhNzA4YjhkODg3IDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gQEAgLTg4NSw3ICs4ODUsNyBAQCBzdGF0aWMgdWludDMy X3QgaWxrX2dldF9hdXhfY2xvY2tfZGl2aWRlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBp bnQgaW5kZXgpCj4gPiA+IMKgCcKgKiBkaXZpZGUgYnkgMjAwMCBhbmQgdXNlIHRoYXQKPiA+ID4g wqAJwqAqLwo+ID4gPiDCoAlpZiAoaW50ZWxfZGlnX3BvcnQtPnBvcnQgPT0gUE9SVF9BKQo+ID4g PiAtCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPmNkY2xrX2ZyZXEsIDIwMDAp Owo+ID4gPiArCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrLCAyMDAwKTsKPiA+ID4gwqAJZWxzZQo+ID4gPiDCoAkJcmV0dXJuIERJVl9ST1VORF9DTE9T RVNUKGRldl9wcml2LT5yYXdjbGtfZnJlcSwgMjAwMCk7Cj4gPiA+IMKgfQo+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ID4gPiBpbmRleCA4ZDkzYjdiZGEzZmYuLmNjMDEyMjI4MmE3YiAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gQEAgLTEyMjUsMTAg KzEyMjUsMTMgQEAgdm9pZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gPiA+IMKgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiA+IMKgdm9pZCBpbnRlbF91cGRh dGVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ID4gwqB2b2lk IGludGVsX3VwZGF0ZV9yYXdjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiA+ID4gK2Jvb2wgaW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgKmEsCj4gPiA+ICsJCQnCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSAqYik7Cj4gPiA+IMKgCj4gPiA+IMKgLyogaW50ZWxfZGlzcGxheS5jICov Cj4gPiA+IMKgZW51bSB0cmFuc2NvZGVyIGludGVsX2NydGNfcGNoX3RyYW5zY29kZXIoc3RydWN0 IGludGVsX2NydGMgKmNydGMpOwo+ID4gPiDCoHZvaWQgaW50ZWxfdXBkYXRlX3Jhd2NsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiAraW50IHZsdl9nZXRfaHBsbF92 Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ID4gwqBpbnQgdmx2X2dl dF9jY2tfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAkJ wqDCoMKgwqDCoMKgY29uc3QgY2hhciAqbmFtZSwgdTMyIHJlZywgaW50IHJlZl9mcmVxKTsKPiA+ ID4gwqBpbnQgdmx2X2dldF9jY2tfY2xvY2tfaHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gPiA+IGluZGV4IDQ2MzA1 NmQ4MGY5Yi4uMzg1MjUxZTQ4Yzc0IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmMuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYwo+ID4gPiBAQCAtODI5LDcgKzgyOSw3IEBAIHN0YXRpYyBib29sIGludGVsX2ZiY19jYW5f YWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiA+IMKgCj4gPiA+IMKgCS8qIFdh RmJjRXhjZWVkQ2RDbG9ja1RocmVzaG9sZDpoc3csYmR3ICovCj4gPiA+IMKgCWlmICgoSVNfSEFT V0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgJiYKPiA+ID4gLQnCoMKg wqDCoGNhY2hlLT5jcnRjLmhzd19iZHdfcGl4ZWxfcmF0ZSA+PSBkZXZfcHJpdi0+Y2RjbGtfZnJl cSAqIDk1IC8gMTAwKSB7Cj4gPiA+ICsJwqDCoMKgwqBjYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVs X3JhdGUgPj0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrICogOTUgLyAxMDApIHsKPiA+ID4gwqAJ CWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJwaXhlbCByYXRlIGlzIHRvbyBiaWciOwo+ID4gPiDCoAkJ cmV0dXJuIGZhbHNlOwo+ID4gPiDCoAl9Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu Ywo+ID4gPiBpbmRleCAxYTZmZjI2ZGVhMjAuLmNiNTBjNTI3NDAxZiAxMDA2NDQKPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiA+IEBAIC0xMzE1LDcgKzEzMTUsNyBAQCBz dGF0aWMgdTMyIGk5eHhfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgdTMyIHB3bV9mcmVxX2h6KQo+ID4gPiDCoAlpZiAoSVNfUElORVZJRVcoZGV2X3ByaXYpKQo+ ID4gPiDCoAkJY2xvY2sgPSBLSHooZGV2X3ByaXYtPnJhd2Nsa19mcmVxKTsKPiA+ID4gwqAJZWxz ZQo+ID4gPiAtCQljbG9jayA9IEtIeihkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gPiA+ICsJCWNs b2NrID0gS0h6KGRldl9wcml2LT5jZGNsay5ody5jZGNsayk7Cj4gPiA+IMKgCj4gPiA+IMKgCXJl dHVybiBESVZfUk9VTkRfQ0xPU0VTVChjbG9jaywgcHdtX2ZyZXFfaHogKiAzMik7Cj4gPiA+IMKg fQo+ID4gPiBAQCAtMTMzMyw3ICsxMzMzLDcgQEAgc3RhdGljIHUzMiBpOTY1X2h6X3RvX3B3bShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiA+ID4g wqAJaWYgKElTX0c0WChkZXZfcHJpdikpCj4gPiA+IMKgCQljbG9jayA9IEtIeihkZXZfcHJpdi0+ cmF3Y2xrX2ZyZXEpOwo+ID4gPiDCoAllbHNlCj4gPiA+IC0JCWNsb2NrID0gS0h6KGRldl9wcml2 LT5jZGNsa19mcmVxKTsKPiA+ID4gKwkJY2xvY2sgPSBLSHooZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrKTsKPiA+ID4gwqAKPiA+ID4gwqAJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGNsb2NrLCBw d21fZnJlcV9oeiAqIDEyOCk7Cj4gPiA+IMKgfQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcnVudGltZV9wbS5jCj4gPiA+IGluZGV4IDZkNWVmZWIzNTgyMy4uMTRiYmVjYzhmMmVkIDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gPiA+ IEBAIC05NjQsOSArOTY0LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjlfYXNzZXJ0X2RidWZfZW5hYmxl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgc3RhdGljIHZvaWQg Z2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gPiDCoAkJCQkJwqDCoHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dl bGwpCj4gPiA+IMKgewo+ID4gPiArCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19zdGF0 ZSA9IHt9Owo+ID4gPiArCj4gPiA+IMKgCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19T VEFURV9ESVNBQkxFKTsKPiA+ID4gwqAKPiA+ID4gLQlXQVJOX09OKGRldl9wcml2LT5jZGNsa19m cmVxICE9IGRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayhkZXZfcHJpdikpOwo+ID4gPiArCWRl dl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ID4g KwlXQVJOX09OKCFpbnRlbF9jZGNsa19zdGF0ZV9jb21wYXJlKCZkZXZfcHJpdi0+Y2RjbGsuaHcs ICZjZGNsa19zdGF0ZSkpOwo+ID4gPiDCoAo+ID4gPiDCoAlnZW45X2Fzc2VydF9kYnVmX2VuYWJs ZWQoZGV2X3ByaXYpOwo+ID4gPiDCoApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK