From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: set proper N/M in modeset Date: Thu, 4 Aug 2016 09:36:05 +0300 Message-ID: <20160804063605.GV4329@intel.com> References: <1470101710-57552-1-git-send-email-libin.yang@linux.intel.com> <20160802104715.GQ4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F7E20@SHSMSX103.ccr.corp.intel.com> <96A12704CE18D347B625EE2D4A099D19119F8A8E@SHSMSX103.ccr.corp.intel.com> <20160804053904.GQ4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F8B72@SHSMSX103.ccr.corp.intel.com> <20160804062340.GT4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F8BD1@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 821CD6E428 for ; Thu, 4 Aug 2016 06:36:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F8BD1@SHSMSX103.ccr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Yang, Libin" Cc: "'tiwai@suse.de'" , "Vetter, Daniel" , "'libin.yang@linux.intel.com'" , "'intel-gfx@lists.freedesktop.org'" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBdWcgMDQsIDIwMTYgYXQgMDY6MzE6MTlBTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gSGkgVmlsbGUsCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJv bTogVmlsbGUgU3lyasOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21d Cj4gPiBTZW50OiBUaHVyc2RheSwgQXVndXN0IDQsIDIwMTYgMjoyNCBQTQo+ID4gVG86IFlhbmcs IExpYmluIDxsaWJpbi55YW5nQGludGVsLmNvbT4KPiA+IENjOiAnbGliaW4ueWFuZ0BsaW51eC5p bnRlbC5jb20nIDxsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbT47ICdpbnRlbC0KPiA+IGdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcnIDxpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPjsK PiA+ICdqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20nIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRl bC5jb20+OyBWZXR0ZXIsIERhbmllbAo+ID4gPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPjsgJ3Rp d2FpQHN1c2UuZGUnIDx0aXdhaUBzdXNlLmRlPgo+ID4gU3ViamVjdDogUmU6IFtQQVRDSF0gZHJt L2k5MTU6IHNldCBwcm9wZXIgTi9NIGluIG1vZGVzZXQKPiA+IAo+ID4gT24gVGh1LCBBdWcgMDQs IDIwMTYgYXQgMDY6MDQ6MTBBTSArMDAwMCwgWWFuZywgTGliaW4gd3JvdGU6Cj4gPiA+IEhpIFZp bGxlLAo+ID4gPgo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gRnJv bTogVmlsbGUgU3lyasOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21d Cj4gPiA+ID4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCA0LCAyMDE2IDE6MzkgUE0KPiA+ID4gPiBU bzogWWFuZywgTGliaW4gPGxpYmluLnlhbmdAaW50ZWwuY29tPgo+ID4gPiA+IENjOiAnbGliaW4u eWFuZ0BsaW51eC5pbnRlbC5jb20nIDxsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbT47Cj4gPiA+ ID4gJ2ludGVsLSBnZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnJwo+ID4gPiA+IDxpbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnPjsKPiA+ID4gPiAnamFuaS5uaWt1bGFAbGludXguaW50ZWwu Y29tJyA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPjsgVmV0dGVyLAo+ID4gPiA+IERhbmll bCA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+OyAndGl3YWlAc3VzZS5kZScgPHRpd2FpQHN1c2Uu ZGU+Cj4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSF0gZHJtL2k5MTU6IHNldCBwcm9wZXIgTi9N IGluIG1vZGVzZXQKPiA+ID4gPgo+ID4gPiA+IE9uIFRodSwgQXVnIDA0LCAyMDE2IGF0IDAyOjQ4 OjU0QU0gKzAwMDAsIFlhbmcsIExpYmluIHdyb3RlOgo+ID4gPiA+ID4gSGkgVmlsbGUsCj4gPiA+ ID4gPgo+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gPiA+ID4gPiBG cm9tOiBZYW5nLCBMaWJpbgo+ID4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMiwgMjAx NiA5OjU5IFBNCj4gPiA+ID4gPiA+IFRvOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPjsKPiA+ID4gPiA+ID4gbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20K PiA+ID4gPiA+ID4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiA+ID4g PiA+IGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbTsgVmV0dGVyLCBEYW5pZWwKPiA+ID4gPiA+ ID4gPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPjsgdGl3YWlAc3VzZS5kZQo+ID4gPiA+ID4gPiBT dWJqZWN0OiBSRTogW1BBVENIXSBkcm0vaTkxNTogc2V0IHByb3BlciBOL00gaW4gbW9kZXNldAo+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBIaSBWaWxsZQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gPiA+ID4gRnJvbTogVmlsbGUgU3ly asOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiA+ID4gPiA+ ID4gU2VudDogVHVlc2RheSwgQXVndXN0IDIsIDIwMTYgNjo0NyBQTQo+ID4gPiA+ID4gPiA+IFRv OiBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gPiA+ID4gPiA+IENjOiBpbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnOwo+ID4gPiA+ID4gPiA+IGphbmkubmlrdWxhQGxpbnV4Lmlu dGVsLmNvbTsgVmV0dGVyLCBEYW5pZWwKPiA+ID4gPiA+ID4gPiA8ZGFuaWVsLnZldHRlckBpbnRl bC5jb20+OyB0aXdhaUBzdXNlLmRlOyBZYW5nLCBMaWJpbgo+ID4gPiA+ID4gPiA+IDxsaWJpbi55 YW5nQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIXSBkcm0vaTkx NTogc2V0IHByb3BlciBOL00gaW4gbW9kZXNldAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g T24gVHVlLCBBdWcgMDIsIDIwMTYgYXQgMDk6MzU6MTBBTSArMDgwMCwKPiA+ID4gPiA+ID4gPiBs aWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gPiA+ID4gPiB3cm90ZToKPiA+ID4gPiA+ID4g PiA+IEZyb206IExpYmluIFlhbmcgPGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tPgo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IFdoZW4gbW9kZXNldCBvY2N1cnMgYW5kIHRoZSBMU19D TEsgaXMgc2V0IHRvIHNvbWUgc3BlY2lhbAo+ID4gPiA+ID4gPiA+ID4gdmFsdWVzIGluIERQIG1v ZGUsIHRoZSBOL00gbmVlZCB0byBiZSBzZXQgbWFudWFsbHkgaWYgYXVkaW8gaXMKPiA+IHBsYXlp bmcuCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gVGhlIHJlbGF0aW9uc2hpcCBvZiBN YXVkIGFuZCBOYXVkIGlzIGV4cHJlc3NlZCBpbiB0aGUKPiA+ID4gPiA+ID4gPiA+IGZvbGxvd2lu Zwo+ID4gPiA+ID4gPiA+ID4gZXF1YXRpb246Cj4gPiA+ID4gPiA+ID4gPiBNYXVkL05hdWQgPSA1 MTIgKiBmcyAvIGZfTFNfQ2xrCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gUGxlYXNl IHJlZmVyIFZFU0EgRGlzcGxheVBvcnQgU3RhbmRhcmQgc3BlYyBmb3IgZGV0YWlscy4KPiA+ID4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBBbHNvLCB0aGUgcGF0Y2ggYXBwbGllcwo+ID4gPiA+ ID4gPiA+ID4gY29tbWl0IDdlODI3NWMyZjJiYiAoImRybS9pOTE1OiBzZXQgcHJvcGVyIE4vQ1RT IGluCj4gPiA+ID4gPiA+ID4gPiBtb2Rlc2V0IikgdG8gQVBMIHBsYXRmb3JtLgo+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IExpYmluIFlhbmcgPGxpYmluLnlh bmdAbGludXguaW50ZWwuY29tPgo+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAgNiArKwo+ID4gPiA+ID4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgfCAxMjIKPiA+ID4gPiA+ID4g PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiA+ID4gPiA+ID4gPiA+ ICAyIGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiA+ ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oIGluZGV4IDhiZmRlNzUuLjJmOWQwMGUKPiA+ID4gPiA+ID4gPiA+IDEwMDY0NAo+ ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4g PiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ ID4gPiA+ID4gQEAgLTczNTEsNiArNzM1MSwxMiBAQCBlbnVtIHsKPiA+ID4gPiA+ID4gPiA+ICAj ZGVmaW5lIF9IU1dfQVVEX0NPTkZJR19CCQkweDY1MTAwCj4gPiA+ID4gPiA+ID4gPiAgI2RlZmlu ZSBIU1dfQVVEX0NGRyhwaXBlKQkJX01NSU9fUElQRShwaXBlLAo+ID4gPiA+ID4gPiA+IF9IU1df QVVEX0NPTkZJR19BLCBfSFNXX0FVRF9DT05GSUdfQikKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gPiArI2RlZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQQkJMHg2NTAyOAo+ID4gPiA+ ID4gPiA+ID4gKyNkZWZpbmUgX0hTV19BVURfTV9DVFNfRU5BQkxFX0IJCTB4NjUxMjgKPiA+ID4g PiA+ID4gPiA+ICsjZGVmaW5lIEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpCj4gPiA+ID4gCV9N TUlPX1BJUEUocGlwZSwKPiA+ID4gPiA+ID4gPiBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hT V19BVURfTV9DVFNfRU5BQkxFX0IpCj4gPiA+ID4gPiA+ID4gPiArI2RlZmluZSAgIEFVRF9NX0NU U19NX1ZBTFVFX0lOREVYCSgxIDw8IDIxKQo+ID4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgICBBVURf TV9DVFNfTV9QUk9HX0VOQUJMRQkoMSA8PCAyMCkKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ICAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RSTF9BCQkweDY1MDEwCj4gPiA+ID4gPiA+ ID4gPiAgI2RlZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQgkJMHg2NTExMAo+ID4gPiA+ID4gPiA+ ID4gICNkZWZpbmUgSFNXX0FVRF9NSVNDX0NUUkwocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwKPiA+ ID4gPiA+ID4gPiBfSFNXX0FVRF9NSVNDX0NUUkxfQSwgX0hTV19BVURfTUlTQ19DVFJMX0IpCj4g PiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVk aW8uYwo+ID4gPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j Cj4gPiA+ID4gPiA+ID4gPiBpbmRleCA2NzAwYTdiLi5kZTU1ZWNmIDEwMDY0NAo+ID4gPiA+ID4g PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiA+ID4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiA+ID4g PiA+ID4gQEAgLTk4LDYgKzk4LDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gPiA+ID4g PiA+ID4gIAl7IDE5MjAwMCwgVE1EU18yOTdNLCAyMDQ4MCwgMjQ3NTAwIH0sICB9Owo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIExDXzU0ME0gNTQwMDAwCj4gPiA+ID4g PiA+ID4gPiArI2RlZmluZSBMQ18xNjJNIDE2MjAwMAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gRG8gd2UgaGF2ZSBzb21lIGV4cGxhbmF0aW9uIHdoeSAyLjcgZG9lc24ndCBuZWVkIE0vTgo+ ID4gPiA+ID4gPiA+IHByb2dyYW1taW5nLCBidXQKPiA+ID4gPiA+ID4gPiAxLjYyIGFuZCA1LjQg ZG8/Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEkgZGlkbid0IHVzZSAyLjcgYmVjYXVzZSBJIGNh bid0IGZpbmQgYSBtb2RlIHVzaW5nIDIuNy4gU28gSSBjYW4ndCBkbyB0aGUKPiA+IHRlc3QuCj4g PiA+ID4gPiA+IDUuNCBpcyBmb3IgNEsgYW5kIDEuNjIgaXMgZm9yIDEwODBwLgo+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gQW5kIEkgc2VlIHlvdSdyZSBvbmx5IGRvaW5n IHRoaXMgb24gSFNXKy4gRWFybGllciBwbGF0Zm9ybXMKPiA+ID4gPiA+ID4gPiBkb24ndCBuZWVk Cj4gPiA+ID4gdGhpcz8KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gV2UgYXJlIG5vdCBzdXBwb3J0 aW5nIGVhcmxpZXIgcGxhdGZvcm1zIGFuZCBJJ20gbm90IHN1cmUgd2hldGhlcgo+ID4gPiA+ID4g PiB0aGUgb2xkIHBsYXRmb3JtcyBzdXBwb3J0cyA0SyBEUCBvciBub3QuCj4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiA+ID4g PiA+ID4gPiA+ICsJaW50IHNhbXBsZV9yYXRlOwo+ID4gPiA+ID4gPiA+ID4gKwlpbnQgY2xvY2s7 Cj4gPiA+ID4gPiA+ID4gPiArCWludCBuOwo+ID4gPiA+ID4gPiA+ID4gKwlpbnQgbTsKPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+IENhbiBzYXZlIGEgYml0IG9mIHNwYWNlIGJ5IHVzaW5nIHUx NiBmb3IgbSBhbmQgbi4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gT0ssIEkgd2lsbCBkbyBpdCBp biBuZXh0IHZlcnNpb24uCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ ICt9IGF1ZF9ubVtdID0gewo+ID4gPiA+ID4gPiA+ID4gKwl7NDgwMDAsIExDXzU0ME0sIDU2MjUs IDI1Nn0sYAo+ID4gPiA+ID4gPiA+ID4gKwl7NDQxMDAsIExDXzU0ME0sIDkzNzUsIDM5Mn0sCj4g PiA+ID4gPiA+ID4gPiArCXszMjAwMCwgTENfNTQwTSwgMTY4NzUsIDUxMn0sCj4gPiA+ID4gPiA+ ID4gPiArCXs0ODAwMCwgTENfMTYyTSwgMzM3NSwgNTEyfSwKPiA+ID4gPiA+ID4gPiA+ICsJezQ0 MTAwLCBMQ18xNjJNLCA1NjI1LCA3ODR9LAo+ID4gPiA+ID4gPiA+ID4gKwl7MzIwMDAsIExDXzE2 Mk0sIDEwMTI1LCAxMDI0IH07Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBUaGUgbnVtYmVy cyBsb29rIGdvb2QsIGJ1dCB3aGF0IGFib3V0IG90aGVyIHNhbXBsZSByYXRlcz8gRm9yCj4gPiA+ ID4gPiA+ID4gSERNSSB3ZSBnbyB1cCB0byAxOTJrSHosIHdoeSBub3QgZm9yIERQPwo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiBPdXIgdGVzdCBvbmx5IGluY2x1ZGVzIDMySywgNDQuMUsgYW5kIDQ4 SyA6KSBJIHdpbGwgYWRkIHRoZQo+ID4gPiA+ID4gPiBzdXBwb3J0IGlmIHlvdSB0aGluayB3ZSBz aG91bGQuCj4gPiA+ID4gPgo+ID4gPiA+ID4gSSB3aWxsIG5vdCBhZGQgMTkyS0h6LCA5NktIeiBh bmQgZXRjIHJhdGUgc3VwcG9ydCBhcyBiYXNlZCBvbiBteQo+ID4gPiA+ID4gdGVzdCB0aGVzZSBy YXRlIHdpbGwgYmUgbm90IHVzZWQgaW4gRFAuIEl0IHdpbGwgYmUgY29udmVydGVkIHRvIDQ4S0h6 Lgo+ID4gPiA+Cj4gPiA+ID4gSG93IGFib3V0IGJhc2luZyB0aGF0IGRlY2lzaW9uIG9uIHdoYXQn cyBhY3R1YWxseSBhbGxvd2VkIGJ5IHRoZSBkcml2ZXI/Cj4gPiA+ID4gSSBjYW4gZG8gOTZrSHog RFAgYXVkaW8gb24gbXkgSFNXIGp1c3QgZmluZSBoZXJlLiBTbyBjbGVhcmx5IGlmIHRoZQo+ID4g PiA+IGRpc3BsYXkgc3VwcG9ydHMgaXQsIHRoZXJlIGlzIG5vdGhpbmcgb24gdGhlIEFMU0Egc2lk ZSB0aGF0IHdvdWxkCj4gPiA+ID4gcHJldmVudCBpdCBmcm9tIGJlaW5nIHVzZWQuCj4gPiA+Cj4g PiA+IEZvciA5NktIeiwgYXVkaW8gd2lsbCBjb252ZXJ0IHRvIDQ4S0h6LiBZb3UgY2FuIHRyeSB0 byBwcmludCB0aGUKPiA+ID4gc2FtcGxlIHJhdGUgaW4gaTkxNV9hdWRpb19jb21wb25lbnRfc3lu Y19hdWRpb19yYXRlKCkuIFNvIHdlIGNhbid0Cj4gPiA+IHRlc3QgaXQgZm9yIHRoZSByZWFsIDk2 a0h6Lgo+ID4gCj4gPiBXcm9uZy4KPiA+IAo+ID4gIyBncmVwIHJhdGUgL3Byb2MvYXNvdW5kL0hE TUkvZWxkIzAuMAo+ID4gc2FkMF9yYXRlcwkJWzB4NGUwXSAzMjAwMCA0NDEwMCA0ODAwMCA5NjAw MAo+ID4gCj4gPiAjIGdyZXAgcmF0ZSAvcHJvYy9hc291bmQvSERNSS9wY20zcC9zdWIwL2h3X3Bh cmFtcwo+ID4gcmF0ZTogOTYwMDAgKDk2MDAwLzEpCj4gPiAKPiA+IFtkcm06aTkxNV9hdWRpb19j b21wb25lbnRfc3luY19hdWRpb19yYXRlXSBzYW1wbGUgcmF0ZSA5NjAwMCBrSHoKPiAKPiBJbnRl cmVzdGluZywgbWF5YmUgbXkgbW9uaXRvciBkb2Vzbid0IHN1cHBvcnQuIEFuZCBteSBkcml2ZXIg d2lsbCBjb252ZXJ0Cj4gaXQgdG8gNDhLSHouCj4gCj4gPiAKPiA+ID4KPiA+ID4gSW4gRFAgc3Bl YywgdGFibGUgMi01MCBvbmx5IHNheXMgNDhrSHosIDMya0h6LCA0NC4xa0h6LCAzODRrSHogYW5k IDc2OGtIei4KPiA+IAo+ID4gVGhhdCB0YWJsZSBpcyBqdXN0IGZvciBpbmZvcm1hdGl2ZSBwdXJw b3Nlcy4gVGhlIHZhbHVlcyBhcmUgdGhlIG9uZXMgeW91IGdldAo+ID4gZnJvbSB0aGUgZm9ybXVs YS4gQW5kIHRoZSBFTEQgY2FuIGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBTQURzIGFzIHdpdGgK PiA+IEhETUksIHNvIGFsbCB0aGUgc2FtZSBzYW1wbGUgcmF0ZXMgY2FuIGJlIHVzZWQuCj4gCj4g WWVzLiBJIHdpbGwgYWRkIHRoZSBvdGhlciBzYW1wbGUgcmF0ZXMgc3VwcG9ydC4gQnV0IHRoZXNl IGRhdGUgd2lsbCBub3QgYmUgCj4gdGVzdCBhcyBJIGNhbid0IHBsYXkgOTZLSHogYXVkaW8gd2l0 aCBoYXJkd2FyZSBzdXBwb3J0IGhlcmUuCgpZZWFoLCB3ZSBjYW4ndCBhbHdheXMgdGVzdCBhbGwg dGhlIGNvbWJpbmF0aW9ucy4gSnVzdCBoYXZlIHRvIGdvIG9uCmZhaXRoIHRoYXQgaXQgd29ya3Mg b3V0IDspCgo+IAo+IFJlZ2FyZHMsCj4gTGliaW4KPiAKPiA+IAo+ID4gPiBIb3dldmVyLCB0aGUg bGF0dGVyIHR3byBzYW1wbGUgcmF0ZXMgaXMgbm90IHN1cHBvcnRlZCBpbiBhdWRpbyBkcml2ZXIK PiA+ID4gYW5kIGNhbid0IGJlIHRlc3RlZCBzbyBmYXIuIDg4a0h6LCA5NmtIeiBhbmQgMTkya0h6 IGNhbm5vdCBiZSB0ZXN0ZWQsIGVpdGhlci4KPiA+ID4KPiA+ID4gUmVnYXJkcywKPiA+ID4gTGli aW4KPiA+ID4KPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gIC8qIGdldCBBVURfQ09ORklHX1BJWEVMX0NM T0NLX0hETUlfKiB2YWx1ZSBmb3IgbW9kZSAqLwo+ID4gPiA+ID4gPiA+ID4gc3RhdGljCj4gPiA+ ID4gPiA+ID4gPiB1MzIgYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxfY2xvY2soY29uc3Qgc3RydWN0 Cj4gPiA+ID4gPiA+ID4gPiBkcm1fZGlzcGxheV9tb2RlCj4gPiA+ID4gPiA+ID4gPiAqYWRqdXN0 ZWRfbW9kZSkgIHsgQEAgLTEyMSwyMCArMTM3LDUwIEBAIHN0YXRpYyB1MzIKPiA+ID4gPiA+ID4g PiA+IGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlCj4gPiA+ID4gKmFkanVzdGVkCj4gPiA+ID4gPiA+ID4gPiAgCXJldHVybiBoZG1pX2F1 ZGlvX2Nsb2NrW2ldLmNvbmZpZzsgIH0KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAt c3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X24oY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUKPiA+ID4gPiA+ID4gPiA+ICptb2RlLCBpbnQgcmF0ZSkKPiA+ID4gPiA+ID4gPiA+ICtzdGF0 aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4g PiA+ID4gPiA+ICsJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZQo+ID4gPiA+ ICphZGp1c3RlZF9tb2RlLAo+ID4gPiA+ID4gPiA+ID4gKwkJCSAgICAgIGludCByYXRlKQo+ID4g PiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+ICsJaW50IGk7Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywg SU5URUxfT1VUUFVUX0hETUkpKSB7Cj4gPiA+ID4gPiA+ID4gPiArCQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewo+ID4gPiA+ID4gPiA+ID4gKwkJCWlmICgocmF0 ZSA9PSBhdWRfbmN0c1tpXS5zYW1wbGVfcmF0ZSkgJiYKPiA+ID4gPiA+ID4gPiA+ICsJCQkJKGFk anVzdGVkX21vZGUtPmNsb2NrID09Cj4gPiA+ID4gYXVkX25jdHNbaV0uY2xvY2spKSB7Cj4gPiA+ ID4gPiA+ID4gPiArCQkJCXJldHVybiBhdWRfbmN0c1tpXS5uOwo+ID4gPiA+ID4gPiA+ID4gKwkJ CX0KPiA+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25m aWcsIElOVEVMX09VVFBVVF9EUCkpIHsKPiA+ID4gPiA+ID4gPiA+ICsJCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGF1ZF9ubSk7IGkrKykgewo+ID4gPiA+ID4gPiA+ID4gKwkJCWlmICgocmF0 ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUpICYmCj4gPiA+ID4gPiA+ID4gPiArCQkJCShjcnRj LT5jb25maWctPnBvcnRfY2xvY2sgPT0KPiA+ID4gPiBhdWRfbm1baV0uY2xvY2spKQo+ID4gPiA+ ID4gPiA+IHsKPiA+ID4gPiA+ID4gPiA+ICsJCQkJcmV0dXJuIGF1ZF9ubVtpXS5uOwo+ID4gPiA+ ID4gPiA+ID4gKwkJCX0KPiA+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X20oc3Ry dWN0IGludGVsX2NydGMgKmNydGMsIGludAo+ID4gPiA+ID4gPiA+ID4gK3JhdGUpCj4gPiA+ID4g PiA+ID4gPiAgewo+ID4gPiA+ID4gPiA+ID4gIAlpbnQgaTsKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7 Cj4gPiA+ID4gPiA+ID4gPiAtCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUp ICYmCj4gPiA+ID4gPiA+ID4gPiAtCQkJKG1vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2Nr KSkgewo+ID4gPiA+ID4gPiA+ID4gLQkJCXJldHVybiBhdWRfbmN0c1tpXS5uOwo+ID4gPiA+ID4g PiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBV VF9EUCkpIHsKPiA+ID4gPiA+ID4gPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1 ZF9ubSk7IGkrKykgewo+ID4gPiA+ID4gPiA+ID4gKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0u c2FtcGxlX3JhdGUpICYmCj4gPiA+ID4gPiA+ID4gPiArCQkJCShjcnRjLT5jb25maWctPnBvcnRf Y2xvY2sgPT0KPiA+ID4gPiBhdWRfbm1baV0uY2xvY2spKQo+ID4gPiA+ID4gPiA+IHsKPiA+ID4g PiA+ID4gPiA+ICsJCQkJcmV0dXJuIGF1ZF9ubVtpXS5tOwo+ID4gPiA+ID4gPiA+ID4gKwkJCX0K PiA+ID4gPiA+ID4gPiA+ICAJCX0KPiA+ID4gPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gLXN0YXRpYyB1aW50MzJfdCBhdWRpb19jb25maWdfc2V0 dXBfbl9yZWcoaW50IG4sIHVpbnQzMl90Cj4gPiA+ID4gPiA+ID4gPiB2YWwpCj4gPiA+ID4gPiA+ ID4gPiArc3RhdGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4gPiA+ICsJCQkJCSBpbnQgbiwgdWludDMyX3QgdmFs KQo+ID4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiA+ICAJaW50IG5fbG93LCBuX3VwOwo+ ID4gPiA+ID4gPiA+ID4gIAl1aW50MzJfdCB0bXAgPSB2YWw7Cj4gPiA+ID4gPiA+ID4gPiBAQCAt MTQ1LDE3ICsxOTEsMzggQEAgc3RhdGljIHVpbnQzMl90Cj4gPiA+ID4gPiA+ID4gPiBhdWRpb19j b25maWdfc2V0dXBfbl9yZWcoaW50IG4sCj4gPiA+ID4gPiA+ID4gdWludDMyX3QgdmFsKQo+ID4g PiA+ID4gPiA+ID4gIAl0bXAgfD0gKChuX3VwIDw8IEFVRF9DT05GSUdfVVBQRVJfTl9TSElGVCkg fAo+ID4gPiA+ID4gPiA+ID4gIAkJCShuX2xvdyA8PCBBVURfQ09ORklHX0xPV0VSX05fU0hJRlQp IHwKPiA+ID4gPiA+ID4gPiA+ICAJCQlBVURfQ09ORklHX05fUFJPR19FTkFCTEUpOwo+ID4gPiA+ ID4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09V VFBVVF9EUCkpCj4gPiA+ID4gPiA+ID4gPiArCQl0bXAgfD0gQVVEX0NPTkZJR19OX1ZBTFVFX0lO REVYOwo+ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gdG1wOwo+ID4gPiA+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgdWludDMyX3QgYXVkaW9fY29u ZmlnX3NldHVwX21fcmVnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gPiA+ID4gPiA+ID4g KwkJCQkJIGludCBtLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4g PiA+ID4gKwl1aW50MzJfdCB0bXAgPSB2YWw7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ID4gPiArCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBV VF9EUCkpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ICsJdG1wIHw9IG07Cj4gPiA+ID4gPiA+ID4gPiArCXRtcCB8PSBBVURfTV9D VFNfTV9WQUxVRV9JTkRFWDsKPiA+ID4gPiA+ID4gPiA+ICsJdG1wIHw9IEFVRF9NX0NUU19NX1BS T0dfRU5BQkxFOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gIAlyZXR1cm4gdG1w Owo+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAgLyog Y2hlY2sgd2hldGhlciBOL0NUUy9NIG5lZWQgYmUgc2V0IG1hbnVhbGx5ICovICBzdGF0aWMKPiA+ ID4gPiA+ID4gPiA+IGJvb2wgYXVkaW9fcmF0ZV9uZWVkX3Byb2coc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gPiA+ID4gPiA+ID4gPiAtCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZQo+ID4gKm1vZGUpCj4gPiA+ID4gPiA+ID4gPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZQo+ID4gPiA+ID4gPiA+ICphZGp1c3RlZF9tb2RlKQo+ID4gPiA+ID4gPiA+ID4gIHsK PiA+ID4gPiA+ID4gPiA+IC0JaWYgKCgobW9kZS0+Y2xvY2sgPT0gVE1EU18yOTdNKSB8fAo+ID4g PiA+ID4gPiA+ID4gLQkJIChtb2RlLT5jbG9jayA9PSBUTURTXzI5Nk0pKSAmJgo+ID4gPiA+ID4g PiA+ID4gKwlpZiAoKChhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBUTURTXzI5N00pIHx8Cj4gPiA+ ID4gPiA+ID4gPiArCQkgKGFkanVzdGVkX21vZGUtPmNsb2NrID09IFRNRFNfMjk2TSkpICYmCj4g PiA+ID4gPiA+ID4gPiAgCQlpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywKPiA+IElO VEVMX09VVFBVVF9IRE1JKSkKPiA+ID4gPiA+ID4gPiA+ICAJCXJldHVybiB0cnVlOwo+ID4gPiA+ ID4gPiA+ID4gKwllbHNlIGlmICgoKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ181NDBN KSB8fAo+ID4gPiA+ID4gPiA+ID4gKwkJICAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBM Q18xNjJNKSkgJiYKPiA+ID4gPiA+ID4gPiA+ICsJCSAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj LT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gdHJ1 ZTsKPiA+ID4gPiA+ID4gPiA+ICAJZWxzZQo+ID4gPiA+ID4gPiA+ID4gIAkJcmV0dXJuIGZhbHNl Owo+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+IEBAIC0yODcsNyArMzU0LDcgQEAg c3RhdGljIHZvaWQKPiA+ID4gPiA+ID4gPiA+IGhzd19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0 Cj4gPiA+ID4gPiA+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ID4gPiA+ID4g IAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9Cj4gPiA+ID4gPiA+ ID4gPiAgCQllbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ID4gPiA+ID4gPiA+ID4g IAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ID4gPiA+ID4gPiA+ID4g LQl1aW50MzJfdCB0bXA7Cj4gPiA+ID4gPiA+ID4gPiArCXVpbnQzMl90IHRtcCwgbTsKPiA+ID4g PiA+ID4gPiA+ICAJaW50IGxlbiwgaTsKPiA+ID4gPiA+ID4gPiA+ICAJaW50IG4sIHJhdGU7Cj4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gQEAgLTM0MywxNSArNDEwLDI1IEBAIHN0YXRp YyB2b2lkCj4gPiA+ID4gPiA+ID4gPiBoc3dfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdAo+ID4g PiA+ID4gPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiA+ID4gPiA+ICAJCQlE Uk1fRVJST1IoImludmFsaWQgcG9ydDogJWRcbiIsIHBvcnQpOwo+ID4gPiA+ID4gPiA+ID4gIAkJ CXJhdGUgPSAwOwo+ID4gPiA+ID4gPiA+ID4gIAkJfQo+ID4gPiA+ID4gPiA+ID4gLQkJbiA9IGF1 ZGlvX2NvbmZpZ19nZXRfbihhZGp1c3RlZF9tb2RlLCByYXRlKTsKPiA+ID4gPiA+ID4gPiA+ICsJ CW4gPSBhdWRpb19jb25maWdfZ2V0X24oaW50ZWxfY3J0YywgYWRqdXN0ZWRfbW9kZSwKPiA+ID4g PiByYXRlKTsKPiA+ID4gPiA+ID4gPiA+ICAJCWlmIChuICE9IDApCj4gPiA+ID4gPiA+ID4gPiAt CQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7Cj4gPiA+ID4gPiA+ID4g PiArCQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGludGVsX2NydGMsIG4sCj4gPiA+ ID4gdG1wKTsKPiA+ID4gPiA+ID4gPiA+ICAJCWVsc2UKPiA+ID4gPiA+ID4gPiA+ICAJCQlEUk1f REVCVUdfS01TKCJubyBzdWl0YWJsZSBOIHZhbHVlIGlzCj4gPiBmb3VuZFxuIik7Cj4gPiA+ID4g PiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAgCUk5MTVfV1JJVEUo SFNXX0FVRF9DRkcocGlwZSksIHRtcCk7Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g KwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoaW50ZWxf Y3J0Y19oYXNfdHlwZShpbnRlbF9jcnRjLT5jb25maWcsCj4gPiA+ID4gPiA+ID4gPiArSU5URUxf T1VUUFVUX0RQKSkKPiA+ID4gPiB7Cj4gPiA+ID4gPiA+ID4gPiArCQltID0gYXVkaW9fY29uZmln X2dldF9tKGludGVsX2NydGMsIHJhdGUpOwo+ID4gPiA+ID4gPiA+ID4gKwkJaWYgKG0gIT0gMCkg ewo+ID4gPiA+ID4gPiA+ID4gKwkJCXRtcCA9Cj4gPiA+ID4gSTkxNV9SRUFEKEhTV19BVURfTV9D VFNfRU5BQkxFKHBpcGUpKTsKPiA+ID4gPiA+ID4gPiA+ICsJCQl0bXAgPSBhdWRpb19jb25maWdf c2V0dXBfbV9yZWcoaW50ZWxfY3J0YywKPiA+ID4gPiBtLCB0bXApOwo+ID4gPiA+ID4gPiA+ID4g KwkJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlwZSksCj4gPiA+ID4gdG1wKTsK PiA+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4g PiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEBAIC02Mzcs NyArNzE0LDcgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50 X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiAgCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4gPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaTkx NV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtCj4gPiA+YXVkaW9fY29tcG9uZW50 Owo+ID4gPiA+ID4gPiA+ID4gIAllbnVtIHBpcGUgcGlwZSA9IElOVkFMSURfUElQRTsKPiA+ID4g PiA+ID4gPiA+IC0JdTMyIHRtcDsKPiA+ID4gPiA+ID4gPiA+ICsJdTMyIHRtcCwgbTsKPiA+ID4g PiA+ID4gPiA+ICAJaW50IG47Cj4gPiA+ID4gPiA+ID4gPiAgCWludCBlcnIgPSAwOwo+ID4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEBAIC02NDUsNyArNzIyLDggQEAgc3RhdGljIGludAo+ ID4gPiA+ID4gPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiAgCWlmICghSVNfU0tZTEFLRShkZXZfcHJpdikg JiYKPiA+ID4gPiA+ID4gPiA+ICAJICAgICFJU19LQUJZTEFLRShkZXZfcHJpdikgJiYKPiA+ID4g PiA+ID4gPiA+ICAJICAgICFJU19CUk9BRFdFTEwoZGV2X3ByaXYpICYmCj4gPiA+ID4gPiA+ID4g PiAtCSAgICAhSVNfSEFTV0VMTChkZXZfcHJpdikpCj4gPiA+ID4gPiA+ID4gPiArCSAgICAhSVNf SEFTV0VMTChkZXZfcHJpdikgJiYKPiA+ID4gPiA+ID4gPiA+ICsJICAgICFJU19CUk9YVE9OKGRl dl9wcml2KSkKPiA+ID4gPiA+ID4gPiA+ICAJCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gSEFTX0RESSBwZXJoYXBzPwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBEbyB5b3Ug bWVhbiB3ZSBzaG91bGQgYWRkICImJiBIQVNfRERJIj8KPiA+ID4gPiA+ID4gQ291bGQgeW91IHBs ZWFzZSBnaXZlIG1lIG1vcmUgZGV0YWlscz8KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gUmVnYXJk cywKPiA+ID4gPiA+ID4gTGliaW4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsg QEAgLTY1Myw3ICs3MzEsOCBAQAo+ID4gPiA+ID4gPiA+ID4gc3RhdGljIGludAo+ID4gPiA+ID4g PiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gPiA+ID4gPiA+ID4gPiAgCWludGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRf bWFwW3BvcnRdOwo+ID4gPiA+ID4gPiA+ID4gIAkvKiBpbnRlbF9lbmNvZGVyIG1pZ2h0IGJlIE5V TEwgZm9yIERQIE1TVCAqLwo+ID4gPiA+ID4gPiA+ID4gIAlpZiAoIWludGVsX2VuY29kZXIgfHwg IWludGVsX2VuY29kZXItPmJhc2UuY3J0YyB8fAo+ID4gPiA+ID4gPiA+ID4gLQkgICAgaW50ZWxf ZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ID4gPiA+ID4gPiA+ID4gKwkg ICAgKChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSAmJgo+ID4gPiA+ ID4gPiA+ID4gKwkgICAgIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9EUCkp KSB7Cj4gPiA+ID4gPiA+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJubyB2YWxpZCBwb3J0ICVjXG4i LAo+ID4gcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gPiA+ID4gPiA+ICAJCWVyciA9IC1FTk9ERVY7 Cj4gPiA+ID4gPiA+ID4gPiAgCQlnb3RvIHVubG9jazsKPiA+ID4gPiA+ID4gPiA+IEBAIC02ODEs NyArNzYwLDcgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50 X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ID4gPiAgCQln b3RvIHVubG9jazsKPiA+ID4gPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+IC0JbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihtb2RlLCByYXRlKTsKPiA+ID4gPiA+ID4g PiA+ICsJbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihjcnRjLCBtb2RlLCByYXRlKTsKPiA+ID4gPiA+ ID4gPiA+ICAJaWYgKG4gPT0gMCkgewo+ID4gPiA+ID4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygi VXNpbmcgYXV0b21hdGljIG1vZGUgZm9yIE4KPiA+IHZhbHVlIG9uCj4gPiA+ID4gPiA+ID4gcG9y dCAlY1xuIiwKPiA+ID4gPiA+ID4gPiA+ICAJCQkJCSAgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4g PiA+ID4gPiA+IEBAIC02OTMsOCArNzcyLDE3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4gPiA+ IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gIAkvKiAzLiBzZXQgdGhlIE4vQ1RTL00g Ki8KPiA+ID4gPiA+ID4gPiA+ICAJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfQ0ZHKHBpcGUpKTsK PiA+ID4gPiA+ID4gPiA+IC0JdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7 Cj4gPiA+ID4gPiA+ID4gPiArCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhjcnRjLCBu LCB0bXApOwo+ID4gPiA+ID4gPiA+ID4gIAlJOTE1X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0 bXApOwo+ID4gPiA+ID4gPiA+ID4gKwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ID4gPiA+ ID4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09V VFBVVF9EUCkpIHsKPiA+ID4gPiA+ID4gPiA+ICsJCW0gPSBhdWRpb19jb25maWdfZ2V0X20oY3J0 YywgcmF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiArCQlpZiAobSA9PSAwKQo+ID4gPiA+ID4gPiA+ID4g KwkJCWdvdG8gdW5sb2NrOwo+ID4gPiA+ID4gPiA+ID4gKwkJdG1wID0gSTkxNV9SRUFEKEhTV19B VURfTV9DVFNfRU5BQkxFKHBpcGUpKTsKPiA+ID4gPiA+ID4gPiA+ICsJCXRtcCA9IGF1ZGlvX2Nv bmZpZ19zZXR1cF9tX3JlZyhjcnRjLCBtLCB0bXApOwo+ID4gPiA+ID4gPiA+ID4gKwkJSTkxNV9X UklURShIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSwgdG1wKTsKPiA+ID4gPiA+ID4gPiA+ICsJ fQo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ICAgdW5sb2NrOgo+ID4gPiA+ID4gPiA+ ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gPiA+ID4gPiA+ID4gPiAt LQo+ID4gPiA+ID4gPiA+ID4gMS45LjEKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IC0tCj4g PiA+ID4gPiA+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiA+ID4gPiA+ID4gSW50ZWwgT1RDCj4gPiA+ ID4KPiA+ID4gPiAtLQo+ID4gPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gPiA+IEludGVsIE9UQwo+ ID4gCj4gPiAtLQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJbnRlbCBPVEMKCi0tIApWaWxsZSBT eXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=