From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/3] drm/i915: set proper N/M in modeset Date: Fri, 5 Aug 2016 11:45:02 +0300 Message-ID: <20160805084502.GR4329@intel.com> References: <1470297484-82178-1-git-send-email-libin.yang@linux.intel.com> <20160804085257.GA4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F943F@SHSMSX103.ccr.corp.intel.com> <20160805055633.GM4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F94EB@SHSMSX103.ccr.corp.intel.com> <20160805063601.GN4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F9544@SHSMSX103.ccr.corp.intel.com> <20160805071649.GQ4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F95E9@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 639C96E0EA for ; Fri, 5 Aug 2016 08:45:22 +0000 (UTC) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F95E9@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 T24gRnJpLCBBdWcgMDUsIDIwMTYgYXQgMDc6MjQ6MTRBTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogVmlsbGUgU3ly asOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiBTZW50OiBG cmlkYXksIEF1Z3VzdCA1LCAyMDE2IDM6MTcgUE0KPiA+IFRvOiBZYW5nLCBMaWJpbiA8bGliaW4u eWFuZ0BpbnRlbC5jb20+Cj4gPiBDYzogbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb207IGludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiBqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5j b207IFZldHRlciwgRGFuaWVsIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT47Cj4gPiB0aXdhaUBz dXNlLmRlCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gZHJtL2k5MTU6IHNldCBwcm9w ZXIgTi9NIGluIG1vZGVzZXQKPiA+IAo+ID4gT24gRnJpLCBBdWcgMDUsIDIwMTYgYXQgMDY6NDA6 NDVBTSArMDAwMCwgWWFuZywgTGliaW4gd3JvdGU6Cj4gPiA+Cj4gPiA+Cj4gPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgW21haWx0 bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+ID4gPiBTZW50OiBGcmlkYXksIEF1 Z3VzdCA1LCAyMDE2IDI6MzYgUE0KPiA+ID4gPiBUbzogWWFuZywgTGliaW4gPGxpYmluLnlhbmdA aW50ZWwuY29tPgo+ID4gPiA+IENjOiBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbTsgaW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsKPiA+ID4gPiBqYW5pLm5pa3VsYUBsaW51eC5pbnRl bC5jb207IFZldHRlciwgRGFuaWVsCj4gPiA+ID4gPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPjsg dGl3YWlAc3VzZS5kZQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8zXSBkcm0vaTkx NTogc2V0IHByb3BlciBOL00gaW4gbW9kZXNldAo+ID4gPiA+Cj4gPiA+ID4gT24gRnJpLCBBdWcg MDUsIDIwMTYgYXQgMDY6MTY6NTlBTSArMDAwMCwgWWFuZywgTGliaW4gd3JvdGU6Cj4gPiA+ID4g PiBIaSBWaWxsZSwKPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tCj4gPiA+ID4gPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tXQo+ID4gPiA+ID4gPiBTZW50OiBGcmlkYXksIEF1Z3VzdCA1LCAy MDE2IDE6NTcgUE0KPiA+ID4gPiA+ID4gVG86IFlhbmcsIExpYmluIDxsaWJpbi55YW5nQGludGVs LmNvbT4KPiA+ID4gPiA+ID4gQ2M6IGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tOyBpbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOwo+ID4gPiA+ID4gPiBqYW5pLm5pa3VsYUBsaW51eC5p bnRlbC5jb207IFZldHRlciwgRGFuaWVsCj4gPiA+ID4gPiA+IDxkYW5pZWwudmV0dGVyQGludGVs LmNvbT47IHRpd2FpQHN1c2UuZGUKPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAx LzNdIGRybS9pOTE1OiBzZXQgcHJvcGVyIE4vTSBpbiBtb2Rlc2V0Cj4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+IE9uIEZyaSwgQXVnIDA1LCAyMDE2IGF0IDA1OjM5OjE5QU0gKzAwMDAsIFlhbmcsIExp YmluIHdyb3RlOgo+ID4gPiA+ID4gPiA+IEhpIFZpbGxlLAo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gU29ycnkgZm9yIGRlbGF5IHJlcGx5LiBQbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGJlbG93 Lgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQo+ID4gPiA+ID4gPiA+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIFttYWlsdG86dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiA+ID4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgQXVn dXN0IDQsIDIwMTYgNDo1MyBQTQo+ID4gPiA+ID4gPiA+ID4gVG86IGxpYmluLnlhbmdAbGludXgu aW50ZWwuY29tCj4gPiA+ID4gPiA+ID4gPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZzsKPiA+ID4gPiA+ID4gPiA+IGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbTsgVmV0dGVy LCBEYW5pZWwKPiA+ID4gPiA+ID4gPiA+IDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT47IHRpd2Fp QHN1c2UuZGU7IFlhbmcsIExpYmluCj4gPiA+ID4gPiA+ID4gPiA8bGliaW4ueWFuZ0BpbnRlbC5j b20+Cj4gPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gZHJtL2k5MTU6 IHNldCBwcm9wZXIgTi9NIGluCj4gPiA+ID4gPiA+ID4gPiBtb2Rlc2V0Cj4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gT24gVGh1LCBBdWcgMDQsIDIwMTYgYXQgMDM6NTg6MDJQTSArMDgw MCwKPiA+ID4gPiA+ID4gPiA+IGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tCj4gPiA+ID4gPiA+ IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiBGcm9tOiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGxp bnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gV2hlbiBt b2Rlc2V0IG9jY3VycyBhbmQgdGhlIExTX0NMSyBpcyBzZXQgdG8gc29tZSBzcGVjaWFsCj4gPiA+ ID4gPiA+ID4gPiA+IHZhbHVlcyBpbiBEUCBtb2RlLCB0aGUgTi9NIG5lZWQgdG8gYmUgc2V0IG1h bnVhbGx5IGlmCj4gPiA+ID4gPiA+ID4gPiA+IGF1ZGlvIGlzCj4gPiA+ID4gcGxheWluZy4KPiA+ ID4gPiA+ID4gPiA+ID4gT3RoZXJ3aXNlIHRoZSBmaXJzdCBzZXZlcmFsIHNlY29uZHMgbWF5IGJl IHNpbGVudCBpbiBhdWRpbwo+ID4gcGxheWJhY2suCj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gPiA+IFRoZSByZWxhdGlvbnNoaXAgb2YgTWF1ZCBhbmQgTmF1ZCBpcyBleHByZXNzZWQg aW4gdGhlCj4gPiA+ID4gPiA+ID4gPiA+IGZvbGxvd2luZwo+ID4gPiA+ID4gPiA+ID4gPiBlcXVh dGlvbjoKPiA+ID4gPiA+ID4gPiA+ID4gTWF1ZC9OYXVkID0gNTEyICogZnMgLyBmX0xTX0Nsawo+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBQbGVhc2UgcmVmZXIgVkVTQSBEaXNw bGF5UG9ydCBTdGFuZGFyZCBzcGVjIGZvciBkZXRhaWxzLgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiA+IFBsZWFzIGluY2x1ZGUgYSBzbWFsbCBjaGFuZ2Vsb2cgaGVyZSBzbyB0aGF0IEkg a25vdyB3aGF0IGhhcwo+ID4gPiA+ID4gPiA+ID4gY2hhbmdlZCB3aXRoIGVhY2ggcmV2aXNpb24g b2YgdGhlIHBhdGNoLiBFZzoKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiB2MjogYmxh aAo+ID4gPiA+ID4gPiA+ID4gdjM6IHdoYXRldmVyCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMaWJpbiBZYW5nIDxsaWJp bi55YW5nQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgIHwgICA2ICsrCj4gPiA+ ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgMTMzCj4g PiA+ID4gPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiA+ ID4gPiA+ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4gPiA+ID4gPiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggaW5kZXggOGJmZGU3NS4uMmY5ZDAwZQo+ID4g PiA+ID4gPiA+ID4gPiAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gPiA+ID4gPiA+IEBAIC03MzUxLDYgKzczNTEsMTIg QEAgZW51bSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIF9IU1dfQVVEX0NPTkZJR19CCQkw eDY1MTAwCj4gPiA+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIEhTV19BVURfQ0ZHKHBpcGUpCQlfTU1J T19QSVBFKHBpcGUsCj4gPiA+ID4gPiA+ID4gPiBfSFNXX0FVRF9DT05GSUdfQSwgX0hTV19BVURf Q09ORklHX0IpCj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIF9I U1dfQVVEX01fQ1RTX0VOQUJMRV9BCQkweDY1MDI4Cj4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5l IF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9CCQkweDY1MTI4Cj4gPiA+ID4gPiA+ID4gPiA+ICsjZGVm aW5lIEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpCj4gPiA+ID4gPiA+IAlfTU1JT19QSVBFKHBp cGUsCj4gPiA+ID4gPiA+ID4gPiBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hTV19BVURfTV9D VFNfRU5BQkxFX0IpCj4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lICAgQVVEX01fQ1RTX01fVkFM VUVfSU5ERVgJKDEgPDwgMjEpCj4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lICAgQVVEX01fQ1RT X01fUFJPR19FTkFCTEUJKDEgPDwgMjApCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g UGxlYXNlIHRyeSB0byBrZWVwIHRoZSByZWdpc3RlciBkZWZpbmVzIGluIG9yZGVyIGJ5IHRoZSBy ZWdpc3RlciBvZmZzZXQuCj4gPiA+ID4gPiA+ID4gPiBJZS4gdGhlc2UgcmVnaXN0ZXJzIHNob3Vs ZCBiZSBwbGFjZWQganVzdCBhZnRlciBIU1dfQVVEX01JU0NfQ1RSTC4KPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gICNkZWZpbmUgX0hTV19BVURf TUlTQ19DVFJMX0EJCTB4NjUwMTAKPiA+ID4gPiA+ID4gPiA+ID4gICNkZWZpbmUgX0hTV19BVURf TUlTQ19DVFJMX0IJCTB4NjUxMTAKPiA+ID4gPiA+ID4gPiA+ID4gICNkZWZpbmUgSFNXX0FVRF9N SVNDX0NUUkwocGlwZSkKPiA+IAlfTU1JT19QSVBFKHBpcGUsCj4gPiA+ID4gPiA+ID4gPiBfSFNX X0FVRF9NSVNDX0NUUkxfQSwgX0hTV19BVURfTUlTQ19DVFJMX0IpCj4gPiA+ID4gPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ID4g PiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiA+ID4g PiA+ID4gPiBpbmRleCA2NzAwYTdiLi4wNGU3MzU4IDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ID4gPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ID4gPiA+ID4gPiA+ ID4gQEAgLTk4LDYgKzk4LDM1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ID4gPiA+ID4gPiA+ ID4gPiAgCXsgMTkyMDAwLCBUTURTXzI5N00sIDIwNDgwLCAyNDc1MDAgfSwgIH07Cj4gPiA+ID4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIExDXzU0ME0gNTQwMDAwCj4gPiA+ ID4gPiA+ID4gPiA+ICsjZGVmaW5lIExDXzI3ME0gMjcwMDAwCj4gPiA+ID4gPiA+ID4gPiA+ICsj ZGVmaW5lIExDXzE2Mk0gMTYyMDAwCj4gPiA+ID4gPiA+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKPiA+ID4gPiA+ID4gPiA+ID4gKwlpbnQgc2FtcGxlX3JhdGU7Cj4gPiA+ID4gPiA+ID4g PiA+ICsJaW50IGNsb2NrOwo+ID4gPiA+ID4gPiA+ID4gPiArCXUxNiBuOwo+ID4gPiA+ID4gPiA+ ID4gPiArCXUxNiBtOwo+ID4gPiA+ID4gPiA+ID4gPiArfSBhdWRfbm1bXSA9IHsKPiA+ID4gPiA+ ID4gPiA+ID4gKwl7MTkyMDAwLCBMQ181NDBNLCA1NjI1LCAxMDI0fSwKPiA+ID4gPiA+ID4gPiA+ ICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgIF4KPiA+ID4gPiA+ID4gPiA+Cj4g PiA+ID4gPiA+ID4gPiBTdHlsZSBuaXQ6IHBsZWFzZSBhZGQgc3BhY2VzIGhlcmUKPiA+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICsJezk2MDAwLCBMQ181NDBNLCA1NjI1LCA1MTJ9LAo+ ID4gPiA+ID4gPiA+ID4gPiArCXs4ODIwMCwgTENfNTQwTSwgOTM3NSwgNzg0fSwKPiA+ID4gPiA+ ID4gPiA+ID4gKwl7NDgwMDAsIExDXzU0ME0sIDU2MjUsIDI1Nn0sCj4gPiA+ID4gPiA+ID4gPiA+ ICsJezQ0MTAwLCBMQ181NDBNLCA5Mzc1LCAzOTJ9LAo+ID4gPiA+ID4gPiA+ID4gPiArCXszMjAw MCwgTENfNTQwTSwgMTY4NzUsIDUxMn0sCj4gPiA+ID4gPiA+ID4gPiA+ICsJezE5MjAwMCwgTENf MjcwTSwgNTYyNSwgMjA0OH0sCj4gPiA+ID4gPiA+ID4gPiA+ICsJezk2MDAwLCBMQ18yNzBNLCA1 NjI1LCAxMDI0fSwKPiA+ID4gPiA+ID4gPiA+ID4gKwl7ODgyMDAsIExDXzI3ME0sIDkzNzUsIDE1 Njh9LAo+ID4gPiA+ID4gPiA+ID4gPiArCXs0ODAwMCwgTENfMjcwTSwgNTYyNSwgNTEyfSwKPiA+ ID4gPiA+ID4gPiA+ID4gKwl7NDQxMDAsIExDXzI3ME0sIDkzNzUsIDc4NH0sCj4gPiA+ID4gPiA+ ID4gPiA+ICsJezMyMDAwLCBMQ18yNzBNLCAxNjg3NSwgMTAyNH0sCj4gPiA+ID4gPiA+ID4gPiA+ ICsJezE5MjAwMCwgTENfMTYyTSwgMzM3NSwgMjA0OH0sCj4gPiA+ID4gPiA+ID4gPiA+ICsJezk2 MDAwLCBMQ18xNjJNLCAzMzc1LCAxMDI0fSwKPiA+ID4gPiA+ID4gPiA+ID4gKwl7ODgyMDAsIExD XzE2Mk0sIDU2MjUsIDE1Njh9LAo+ID4gPiA+ID4gPiA+ID4gPiArCXs0ODAwMCwgTENfMTYyTSwg MzM3NSwgNTEyfSwKPiA+ID4gPiA+ID4gPiA+ID4gKwl7NDQxMDAsIExDXzE2Mk0sIDU2MjUsIDc4 NH0sCj4gPiA+ID4gPiA+ID4gPiA+ICsJezMyMDAwLCBMQ18xNjJNLCAxMDEyNSwgMTAyNH0sCj4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gVGhlIG51bWJlcnMgbG9va3MgZ29vZC4gQnV0 IGxvb2tzIGxpa2UgeW91IGZvcmdvdCBhYm91dCAxNzYuNCBrSHo/Cj4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4g PiAgLyogZ2V0IEFVRF9DT05GSUdfUElYRUxfQ0xPQ0tfSERNSV8qIHZhbHVlIGZvciBtb2RlICov Cj4gPiA+ID4gPiA+ID4gPiA+IHN0YXRpYwo+ID4gPiA+ID4gPiA+ID4gPiB1MzIgYXVkaW9fY29u ZmlnX2hkbWlfcGl4ZWxfY2xvY2soY29uc3Qgc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiA+IGRybV9k aXNwbGF5X21vZGUKPiA+ID4gPiA+ID4gPiA+ID4gKmFkanVzdGVkX21vZGUpICB7IEBAIC0xMjEs MjAgKzE1MCw1MCBAQCBzdGF0aWMgdTMyCj4gPiA+ID4gPiA+ID4gPiA+IGF1ZGlvX2NvbmZpZ19o ZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gPiBkcm1fZGlzcGxh eV9tb2RlCj4gPiA+ID4gPiA+ICphZGp1c3RlZAo+ID4gPiA+ID4gPiA+ID4gPiAgCXJldHVybiBo ZG1pX2F1ZGlvX2Nsb2NrW2ldLmNvbmZpZzsgIH0KPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+ID4gLXN0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9uKGNvbnN0IHN0cnVjdAo+ID4g PiA+ID4gPiA+ID4gPiBkcm1fZGlzcGxheV9tb2RlICptb2RlLCBpbnQgcmF0ZSkKPiA+ID4gPiA+ ID4gPiA+ID4gK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9uKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ID4gPiA+ID4gPiA+ID4gPiArCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUKPiA+ID4gPiAqYWRqdXN0ZWRfbW9kZSwKPiA+ID4gPiA+ID4gPiA+ID4gKwkJCSAg ICAgIGludCByYXRlKQo+ID4gPiA+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4gPiA+ID4gPiAgCWlu dCBpOwo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAtCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7Cj4gPiA+ID4gPiA+ID4gPiA+IC0JCWlmICgo cmF0ZSA9PSBhdWRfbmN0c1tpXS5zYW1wbGVfcmF0ZSkgJiYKPiA+ID4gPiA+ID4gPiA+ID4gLQkJ CShtb2RlLT5jbG9jayA9PSBhdWRfbmN0c1tpXS5jbG9jaykpIHsKPiA+ID4gPiA+ID4gPiA+ID4g LQkJCXJldHVybiBhdWRfbmN0c1tpXS5uOwo+ID4gPiA+ID4gPiA+ID4gPiArCWlmIChpbnRlbF9j cnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0hETUkpKSB7Cj4gPiA+ID4g PiA+ID4gPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7 Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3Jh dGUpICYmCj4gPiA+ID4gPiA+ID4gPiA+ICsJCQkJKGFkanVzdGVkX21vZGUtPmNsb2NrID09Cj4g PiA+ID4gYXVkX25jdHNbaV0uY2xvY2spKSB7Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ ID4gSW5kZW50IGZhaWwsIGFuZCBhIGJpdCB0b28gbWFueSBwYXJlbnMgZm9yIG15IHRhc3RlLiBT aG91bGQgbG9vayBsaWtlOgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IAkJaWYgKHJh dGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUgJiYKPiA+ID4gPiA+ID4gPiA+IAkJICAgIGFk anVzdGVkX21vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2NrKSB7Cj4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gKwkJCQlyZXR1cm4gYXVkX25jdHNb aV0ubjsKPiA+ID4gPiA+ID4gPiA+ID4gKwkJCX0KPiA+ID4gPiA+ID4gPiA+ID4gIAkJfQo+ID4g PiA+ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiAr CWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkK PiA+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBpbnRl bF9oYXNfZHBfZW5jb2RlcigpIHdpbGwgbWFrZSB0aGlzIHdvcmsgZm9yIE1TVCBhcyB3ZWxsLgo+ ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ICJJbiBNU1QgbW9kZSwgdGhlIFNpbmsgZGV2 aWNlIG11c3QgaWdub3JlIHRoZSBNYXVkIGFuZCBNdmlkCj4gPiA+ID4gPiA+ID4gPiB2YWx1ZXMg c2VudCBieSBhbiBNU1QgU291cmNlIGRldmljZSB1bmxlc3MgdGhlIE1TVCBTaW5rCj4gPiA+ID4g PiA+ID4gPiBkZXZpY2UgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBNU1QgU291cmNlIGRl dmljZSB2aWEgYQo+ID4gPiA+ID4gPiA+ID4gc2luZ2xlIGxpbmsgYXMgdGhlIFNvdXJjZSBkZXZp Y2UgZ2VuZXJhdGVzIHRob3NlIHZhbHVlcwo+ID4gPiA+ID4gPiA+ID4gYmFzZWQgb24gdGhlIExT X0NsayBvZiB0aGUgbGluayBpdCBpcyBkcml2aW5nLiBBbiBNU1QgU2luawo+ID4gPiA+ID4gPiA+ ID4gZGV2aWNlIG11c3QgYmUgYWJsZSB0byByZWdlbmVyYXRlIGEgc3RyZWFtIGNsb2NrIHdpdGhv dXQKPiA+ID4gPiA+ID4gPiA+IGRlcGVuZGluZyBvbiBNdmlkIGFuZCBNdmlkIHRpbWUgc3RhbXAg dmFsdWVzIGJlY2F1c2UgdGhlIE1TVAo+ID4gPiA+ID4gPiA+ID4gU2luayBkZXZpY2UgbWlnaHQg YmUgcGx1Z2dlZCBpbnRvIGFuIE1TVCBCcmFuY2ggZGV2aWNlLCBub3QKPiA+ID4gPiA+ID4gPiA+ IGFuCj4gPiA+ID4gPiA+IE1TVCBTb3VyY2UgZGV2aWNlLiIKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiBTbyBpZiBJJ20gcmVhZGluZyB0aGF0IHJpZ2h0LCBhbiBNU1Qgc2luayBjYW4g c3RpbGwgdXNlIHRoZQo+ID4gPiA+ID4gPiA+ID4gTS9OIHZhbHVlcyBpZiBpdCdzIGRpcmVjbHR5 IGhvb2tlZCB1cCB0byBhIE1TVCBzb3VyY2UuIEhlbmNlCj4gPiA+ID4gPiA+ID4gPiB3ZSBwcm9i YWJseSB3YW50IHRvIGZpbGwgb3V0IHRoZSBNL04gZXZlbiBmb3IgTVNULgo+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGlzIGlzIHRoZSByZXF1aXJlbWVu dCBmb3Igc2luayBkZXZpY2UuCj4gPiA+ID4gPiA+ID4gTm9uLW1zdCBhbmQgTVNULCBzb3VyY2Ug d2lsbCBzZW5kIHRoZSBOL00gdmFsdWUsIGFuZCBpZiBpdCBpcwo+ID4gPiA+ID4gPiA+IE5vbi1t c3Qvc2luZ2xlIGxpbmssIHNpbmsgZGV2aWNlIHNob3VsZCB1c2UgdGhlc2UgZGF0YSB0bwo+ID4g PiA+ID4gPiA+IGdlbmVyYXRlIHRoZSBjbG9jay4gSWYgaXQgaXMgaW4gTVNULCBzaW5rIGRldmlj ZSBzaG91bGQgaWdub3JlCj4gPiA+ID4gPiA+ID4gdGhlIGRhdGEgYW5kIHJlZ2VuZXJhdGUgdGhl IGNsb2NrIHdpdGhvdXQgZGVwZW5kaW5nIG9uIE4vTSB2YWx1ZS4KPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+IFNvIHRoaXMgY29kZSBzaG91bGQgT0sgYmUgZm9yIGJvdGggbm9uLW1zdCBhbmQg TVNULiBJZiBub3QsIEkKPiA+ID4gPiA+ID4gPiB0aGluayB3ZSBjYW4gbWFrZSBhIHNlcGFyYXRl IHBhdGNoIGZvciBEUCBNU1QuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEl0J3Mgb25seSBPSyBm b3IgU1NULiBXZSBjb3VsZCBvZiBjb3Vyc2UgZGVsYXkgZGVhbGluZyB3aXRoIE1TVCwKPiA+ID4g PiA+ID4gYnV0IHRoYXQgc2VlbXMgbGlrZSB1bm5lY2Vzc2FyeSBjaHVybi4gWW91J3JlIHRvdWNo aW5nIGFsbCB0aGVzZQo+ID4gPiA+ID4gPiBwbGFjZXMgaW4gdGhpcyBwYXRjaCwgc28gbWlnaHQg YXMgd2VsbCB1c2UgaW50ZWxfZHBfZW5jb2RlcigpCj4gPiA+ID4gPiA+IGZyb20gdGhlIHN0YXJ0 LiBJdCB3aWxsIG1ha2UgdGhlIE1TVCBwYXRjaCBzbWFsbGVyIHRvbywgd2hpY2gKPiA+ID4gPiA+ ID4gd2lsbCBtYWtlIGl0IGVhc2llciB0bwo+ID4gPiA+IHJldmlldy4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBPSywgSSB3aWxsIHVzZSBpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKCkuIEhvcGUgaXQg c3RpbGwgd29ya3MKPiA+ID4gPiA+IGZvciBEUCBNU1QgOikKPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9ubSk7IGkrKykgewo+ID4gPiA+ID4gPiA+ID4gPiAr CQkJaWYgKChyYXRlID09IGF1ZF9ubVtpXS5zYW1wbGVfcmF0ZSkgJiYKPiA+ID4gPiA+ID4gPiA+ ID4gKwkJCQkoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09Cj4gPiA+ID4gYXVkX25tW2ldLmNs b2NrKSkKPiA+ID4gPiA+ID4gPiA+IHsKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBp bmRlbnQgKyBwYXJlbnMKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCQkJcmV0 dXJuIGF1ZF9ubVtpXS5uOwo+ID4gPiA+ID4gPiA+ID4gPiArCQkJfQo+ID4gPiA+ID4gPiA+ID4g PiArCQl9Cj4gPiA+ID4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ID4gPiArCXJldHVybiAw Owo+ID4gPiA+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4g PiA+ICtzdGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywgaW50IHJhdGUpIHsKPiA+ID4gPiA+ID4gPiA+ID4gKwlpbnQgaTsKPiA+ID4gPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNv bmZpZywgSU5URUxfT1VUUFVUX0RQKSkKPiA+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gPiBpbnRlbF9oYXNfZHBfZW5jb2RlcigpCj4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gPiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbm0p OyBpKyspIHsKPiA+ID4gPiA+ID4gPiA+ID4gKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0uc2Ft cGxlX3JhdGUpICYmCj4gPiA+ID4gPiA+ID4gPiA+ICsJCQkJKGNydGMtPmNvbmZpZy0+cG9ydF9j bG9jayA9PQo+ID4gPiA+IGF1ZF9ubVtpXS5jbG9jaykpCj4gPiA+ID4gPiA+ID4gPiB7Cj4gPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gaW5kZW50ICsgcGFyZW5zCj4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gPiArCQkJCXJldHVybiBhdWRfbm1baV0ubTsKPiA+ID4gPiA+ID4g PiA+ID4gKwkJCX0KPiA+ID4gPiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiA+ID4gPiArCX0K PiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+ ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAtc3RhdGlj IHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnQgbiwgdWludDMyX3QKPiA+ID4g PiA+ID4gPiA+ID4gdmFsKQo+ID4gPiA+ID4gPiA+ID4gPiArc3RhdGljIHVpbnQzMl90IGF1ZGlv X2NvbmZpZ19zZXR1cF9uX3JlZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4g PiA+ID4gKwkJCQkJIGludCBuLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gPiA+ID4gPiA+ICB7Cj4g PiA+ID4gPiA+ID4gPiA+ICAJaW50IG5fbG93LCBuX3VwOwo+ID4gPiA+ID4gPiA+ID4gPiAgCXVp bnQzMl90IHRtcCA9IHZhbDsKPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTE0NSwxNyArMjA0LDM5IEBA IHN0YXRpYyB1aW50MzJfdAo+ID4gPiA+ID4gPiA+ID4gPiBhdWRpb19jb25maWdfc2V0dXBfbl9y ZWcoaW50IG4sCj4gPiA+ID4gPiA+ID4gPiB1aW50MzJfdCB2YWwpCj4gPiA+ID4gPiA+ID4gPiA+ ICAJdG1wIHw9ICgobl91cCA8PCBBVURfQ09ORklHX1VQUEVSX05fU0hJRlQpIHwKPiA+ID4gPiA+ ID4gPiA+ID4gIAkJCShuX2xvdyA8PCBBVURfQ09ORklHX0xPV0VSX05fU0hJRlQpIHwKPiA+ID4g PiA+ID4gPiA+ID4gIAkJCUFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRSk7Cj4gPiA+ID4gPiA+ID4g PiA+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRf RFApKQo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IGludGVsX2hhc19kcF9lbmNvZGVy KCkKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCXRtcCB8PSBBVURfQ09ORklH X05fVkFMVUVfSU5ERVg7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIHRtcDsKPiA+ID4gPiA+ ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArc3RhdGlj IHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiA+ID4gPiA+ID4gPiA+ID4gKwkJCQkJIGludCBtLCB1aW50MzJfdCB2YWwpIHsKPiA+ID4g PiA+ID4gPiA+ID4gKwl1aW50MzJfdCB0bXAgPSB2YWw7Cj4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ID4gKwlpZiAoIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJ TlRFTF9PVVRQVVRfRFApKQo+ID4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGUgY2FsbGVyIGFscmVhZHkgY2hlY2tlZCB0aGF0Lgo+ ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gPiArCXRt cCB8PSBtOwo+ID4gPiA+ID4gPiA+ID4gPiArCXRtcCB8PSBBVURfTV9DVFNfTV9WQUxVRV9JTkRF WDsKPiA+ID4gPiA+ID4gPiA+ID4gKwl0bXAgfD0gQVVEX01fQ1RTX01fUFJPR19FTkFCTEU7Cj4g PiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ID4gIAlyZXR1cm4gdG1wOwo+ID4gPiA+ ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiAgLyogY2hl Y2sgd2hldGhlciBOL0NUUy9NIG5lZWQgYmUgc2V0IG1hbnVhbGx5ICovICBzdGF0aWMKPiA+ID4g PiA+ID4gPiA+ID4gYm9vbCBhdWRpb19yYXRlX25lZWRfcHJvZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiA+ID4gPiA+ID4gPiA+ID4gLQkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUKPiA+ID4gPiAqbW9kZSkKPiA+ID4gPiA+ID4gPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUKPiA+ID4gPiA+ID4gPiA+ICphZGp1c3RlZF9tb2RlKQo+ID4gPiA+ID4g PiA+ID4gPiAgewo+ID4gPiA+ID4gPiA+ID4gPiAtCWlmICgoKG1vZGUtPmNsb2NrID09IFRNRFNf Mjk3TSkgfHwKPiA+ID4gPiA+ID4gPiA+ID4gLQkJIChtb2RlLT5jbG9jayA9PSBUTURTXzI5Nk0p KSAmJgo+ID4gPiA+ID4gPiA+ID4gPiArCWlmICgoKGFkanVzdGVkX21vZGUtPmNsb2NrID09IFRN RFNfMjk3TSkgfHwKPiA+ID4gPiA+ID4gPiA+ID4gKwkJIChhZGp1c3RlZF9tb2RlLT5jbG9jayA9 PSBUTURTXzI5Nk0pKSAmJgo+ID4gPiA+ID4gPiA+ID4gPiAgCQlpbnRlbF9jcnRjX2hhc190eXBl KGNydGMtPmNvbmZpZywKPiA+ID4gPiBJTlRFTF9PVVRQVVRfSERNSSkpCj4gPiA+ID4gPiA+ID4g PiA+ICAJCXJldHVybiB0cnVlOwo+ID4gPiA+ID4gPiA+ID4gPiArCWVsc2UgaWYgKCgoY3J0Yy0+ Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzU0ME0pIHx8Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCSAg KGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ18yNzBNKSB8fAo+ID4gPiA+ID4gPiA+ID4g PiArCQkgIChjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0gTENfMTYyTSkpICYmCj4gPiA+ID4g PiA+ID4gPiA+ICsJCSAgaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09V VFBVVF9EUCkpCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gaW50ZWxfaGFzX2RwX2Vu Y29kZXIoKQo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gKwkJcmV0dXJuIHRydWU7 Cj4gPiA+ID4gPiA+ID4gPiA+ICAJZWxzZQo+ID4gPiA+ID4gPiA+ID4gPiAgCQlyZXR1cm4gZmFs c2U7Cj4gPiA+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiA+IEBAIC0yODcsNyArMzY4 LDcgQEAgc3RhdGljIHZvaWQKPiA+ID4gPiA+ID4gPiA+ID4gaHN3X2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4g PiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9 Cj4gPiA+ID4gPiA+ID4gPiA+ICAJCWVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4g PiA+ID4gPiA+ID4gPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsK PiA+ID4gPiA+ID4gPiA+ID4gLQl1aW50MzJfdCB0bXA7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJdWlu dDMyX3QgdG1wLCBtOwo+ID4gPiA+ID4gPiA+ID4gPiAgCWludCBsZW4sIGk7Cj4gPiA+ID4gPiA+ ID4gPiA+ICAJaW50IG4sIHJhdGU7Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ IEBAIC0zNDMsMTUgKzQyNCwyNSBAQCBzdGF0aWMgdm9pZAo+ID4gPiA+ID4gPiA+ID4gPiBoc3df YXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4gPiA+ID4gPiA+ID4gPiAgCQkJRFJNX0VSUk9SKCJpbnZhbGlkIHBvcnQ6 ICVkXG4iLCBwb3J0KTsKPiA+ID4gPiA+ID4gPiA+ID4gIAkJCXJhdGUgPSAwOwo+ID4gPiA+ID4g PiA+ID4gPiAgCQl9Cj4gPiA+ID4gPiA+ID4gPiA+IC0JCW4gPSBhdWRpb19jb25maWdfZ2V0X24o YWRqdXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCW4gPSBhdWRpb19jb25m aWdfZ2V0X24oaW50ZWxfY3J0YywgYWRqdXN0ZWRfbW9kZSwKPiA+ID4gPiByYXRlKTsKPiA+ID4g PiA+ID4gPiA+ID4gIAkJaWYgKG4gIT0gMCkKPiA+ID4gPiA+ID4gPiA+ID4gLQkJCXRtcCA9IGF1 ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhuLCB0bXApOwo+ID4gPiA+ID4gPiA+ID4gPiArCQkJdG1w ID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGludGVsX2NydGMsIG4sCj4gPiA+ID4gdG1wKTsK PiA+ID4gPiA+ID4gPiA+ID4gIAkJZWxzZQo+ID4gPiA+ID4gPiA+ID4gPiAgCQkJRFJNX0RFQlVH X0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBpcwo+ID4gPiA+IGZvdW5kXG4iKTsKPiA+ID4gPiA+ ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ICAJSTkxNV9X UklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiA+ID4gKwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ID4gPiA+ID4gPiA+ID4gPiAr CWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywKPiA+ID4gPiA+ID4g PiA+ID4gK0lOVEVMX09VVFBVVF9EUCkpIHsKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g PiBpbnRlbF9oYXNfZHBfZW5jb2RlcigpCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g PiArCQltID0gYXVkaW9fY29uZmlnX2dldF9tKGludGVsX2NydGMsIHJhdGUpOwo+ID4gPiA+ID4g PiA+ID4gPiArCQlpZiAobSAhPSAwKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJCQl0bXAgPQo+ID4g PiA+IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gPiA+ID4gPiA+ID4g PiA+ICsJCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbV9yZWcoaW50ZWxfY3J0YywKPiA+ID4g PiBtLCB0bXApOwo+ID4gPiA+ID4gPiA+ID4gPiArCQkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RT X0VOQUJMRShwaXBlKSwKPiA+ID4gPiB0bXApOwo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiA+IFdlIHNob3VsZCBwcm9ncmFtIHRoaXMgcmVnaXN0ZXIgZXZlbiBmb3IgSERNSSwgc28gdGhh dCB3ZQo+ID4gPiA+ID4gPiA+ID4gZG9uJ3QgbGVhayBpbnZhbGlkIHJlZ2lzdGVyIHZhbHVlcyBl Zy4gd2hlbiBjaGFuZ2luZyBmcm9tIERQLT5IRE1JLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gSERNSSBkb2Vzbid0IG5lZWQgc2V0IHRoZXNlIHZhbHVlcyBiYXNlZCBvbiBvdXIgdGVzdC4g SXQgc2VlbXMKPiA+ID4gPiA+ID4gPiBzaWxpY29uIGNhbiBoYW5kbGUgc21vb3RobHkgZm9yIEhE TUkuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFllcywgYnV0IHdlIG5lZSB0byBtYWtlIHN1cmUg d2UgY2xlYXIgd2hhdGV2ZXIgd2UgcHJvZ3JhbW1lZCBpbgo+ID4gPiA+ID4gPiBmb3IgRFAgcHJl dmlvdXNseS4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBUaGUgc2lsaWNvbiBzZWVtcyB0byBiZSBhYmxl IHRvIGhhbmRsZSB0aGUgc2l0dWF0aW9uIG9mIERQIC0+IEhETUkgPiA+ID4gPiA+IGFuZCBIRE1J IC0+IERQLgo+ID4gPiA+Cj4gPiA+ID4gRGlkIHlvdSBtYWtlIHN1cmUgZWcuIHRoYXQgdGhlIHBv d2VyIHdlbGwgZGlkbid0IGdldCB0b2dnbGVkIGluIGJldHdlZW4/Cj4gPiA+ID4gVGhhdCB3b3Vs ZCByZXNldCB0aGUgcmVnaXN0ZXIgYW55d2F5Lgo+ID4gPgo+ID4gPiBXZSBoYXZlIGRvbmUgdGhl IHRlc3QgZm9yIHRoaXMgY2FzZS4gU28gZmFyIGl0IGlzIE9LLgo+ID4gCj4gPiBUZXN0IHdoYXQ/ IENoZWNraW5nIHRoYXQgdGhlIHJlZ2lzdGVyIGdldHMgcmVzZXQgdy9vIGFueSBwb3dlciB3ZWxs IHRvZ2dsaW5nCj4gPiBhbmQgdGhlIGxpa2U/IFNvIHdoYXQgZXZlbnQgZG9lcyByZXNldCB0aGF0 IHJlZ2lzdGVyPwo+IAo+IFRoZSByZWdpc3RlciBpcyB1c2VkIHRvIHNldCBtL2N0cywgd2hpY2gg d2lsbCBpbXBhY3RzIHRoZSBhdWRpbyBjbG9jayBzeW5jLiBXZSAKPiBkaWRuJ3QgY2hlY2sgdGhl IHJlZ2lzdGVyIHJlc2V0IG9yIG5vdC4gQnV0IHRoZSBIRE1JIGF1ZGlvIGFuZCBEUCB3aWxsIGJv dGgKPiB3b3JrcyBzbW9vdGhseS4gQW5kIGZvciB5b3VyIGNvbnNpZGVyYXRpb24sIGl0IGlzIGZv ciBIRE1JLiBMZXQncyBtYWtlCj4gYW5vdGhlciBwYXRjaCBmb3IgdGhpcyBpc3N1ZSBpZiB3ZSBy ZWFsbHkgbWV0IHRoZSBpc3N1ZSB0aGF0IGhkbWkgY2FuJ3QKPiBzeW5jIHRoZSBjbG9jay4gV2hh dCBkbyB5b3UgdGhpbms/CgpIb3cgYWJvdXQgd2UganVzdCBhbHdheXMgd3JpdGUgdGhlIHJlZ2lz dGVyIHRvIG1ha2Ugc3VyZSB3ZSB3b24ndApnZXQgYW55IHN0dXBpZCBidWdzIGJlY2F1c2Ugb2Yg dGhpcy4KCj4gCj4gPiAKPiA+ID4KPiA+ID4gUmVnYXJkcywKPiA+ID4gTGliaW4KPiA+ID4KPiA+ ID4gPgo+ID4gPiA+ID4gV2hhdCdzIG1vcmUgaXQgY2FuIGhhbmRsZSBzYW1wbGUgcmF0ZS90bWRz IGNoYW5nZXMuCj4gPiA+ID4gPgo+ID4gPiA+ID4gUmVnYXJkcywKPiA+ID4gPiA+IExpYmluCj4g PiA+ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ ID4gPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBA QCAtNjM3LDcgKzcyOCw3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4gPiA+IGk5MTVfYXVkaW9f Y29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ ID4gPiA+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gPiA+ID4gPiA+ID4gPiA+ ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRldl9wcml2LQo+ID4gPiA+ ID5hdWRpb19jb21wb25lbnQ7Cj4gPiA+ID4gPiA+ID4gPiA+ICAJZW51bSBwaXBlIHBpcGUgPSBJ TlZBTElEX1BJUEU7Cj4gPiA+ID4gPiA+ID4gPiA+IC0JdTMyIHRtcDsKPiA+ID4gPiA+ID4gPiA+ ID4gKwl1MzIgdG1wLCBtOwo+ID4gPiA+ID4gPiA+ID4gPiAgCWludCBuOwo+ID4gPiA+ID4gPiA+ ID4gPiAgCWludCBlcnIgPSAwOwo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiBA QCAtNjUzLDcgKzc0NCw4IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4gPiA+IGk5MTVfYXVkaW9f Y29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+ ID4gPiA+ICAJaW50ZWxfZW5jb2RlciA9IGRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF07Cj4g PiA+ID4gPiA+ID4gPiA+ICAJLyogaW50ZWxfZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBN U1QgKi8KPiA+ID4gPiA+ID4gPiA+ID4gIAlpZiAoIWludGVsX2VuY29kZXIgfHwgIWludGVsX2Vu Y29kZXItPmJhc2UuY3J0YyB8fAo+ID4gPiA+ID4gPiA+ID4gPiAtCSAgICBpbnRlbF9lbmNvZGVy LT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ICsJICAgICgo aW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgJiYKPiA+ID4gPiA+ID4g PiA+ID4gKwkgICAgIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9EUCkpKSB7 Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gSG1tLiBTaG91bGQgcHJvYmFibHQgbW92 ZSB0aGlzIHN0dWZmIGxhdGVyIHNvIHRoYXQgd2UgY2FuCj4gPiA+ID4gPiA+ID4gPiB1c2UgY2hl Y2sKPiA+ID4gPiA+ID4gPiA+IGNydGMtPmNvbmZpZy0+b3V0cHV0X3R5cGVzIGluc3RlYWQuIEJ1 dCBJIGd1ZXNzIHRoYXQncyBtb3JlCj4gPiA+ID4gPiA+ID4gPiBhcHByb3ByaWF0ZWx5IGxlZnQg dG8gYW55IE1TVCBwYXRjaC4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRoZSBzYW1lIHJl YXNvbiBhcyBpbnRlbF9oYXNfZHBfZW5jb2RlcigpLiBBbmQgaWYgaXQgaXMgd3JvbmcKPiA+ID4g PiA+ID4gPiBmb3IgRFAgTVNULCBsZXQncyBoYXZlIGEgc2VwYXJhdGUgcGF0Y2ggd2hlbiB3ZSBz dXBwb3J0IERQIE1TVC4KPiA+ID4gPiA+ID4gPiBBdCB0aGF0IHRpbWUsIHdlIGNhbiBkbyBhIGZ1 bGwgdGVzdCBvbiBEUCBNU1QuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFllYWggdGhpcyBwYXJ0 IHdlIGNhbiBsZWF2ZSBmb3IgdGhlIE1TVCBwYXRjaCBhcyBpdCdsbCBpbnZvbHZlIGEKPiA+ID4g PiA+ID4gYml0IG1vcmUgdGhhbiBqdXN0IGFkZGluZyBhbm90aGVyIGNoZWNrIHRvIHRoZSBpZiBz dGF0ZW1lbnQuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBSZWdhcmRz LAo+ID4gPiA+ID4gPiA+IExpYmluCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiA+ICAJCURSTV9ERUJVR19LTVMoIm5vIHZhbGlkIHBvcnQgJWNcbiIsCj4gPiA+ ID4gcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gPiA+ID4gPiA+ID4gIAkJZXJyID0gLUVOT0RFVjsK PiA+ID4gPiA+ID4gPiA+ID4gIAkJZ290byB1bmxvY2s7Cj4gPiA+ID4gPiA+ID4gPiA+IEBAIC02 ODEsNyArNzczLDcgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+ID4gaTkxNV9hdWRpb19jb21w b25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gPiA+ ID4gIAkJZ290byB1bmxvY2s7Cj4gPiA+ID4gPiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gPiAtCW4gPSBhdWRpb19jb25maWdfZ2V0X24obW9kZSwgcmF0ZSk7 Cj4gPiA+ID4gPiA+ID4gPiA+ICsJbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihjcnRjLCBtb2RlLCBy YXRlKTsKPiA+ID4gPiA+ID4gPiA+ID4gIAlpZiAobiA9PSAwKSB7Cj4gPiA+ID4gPiA+ID4gPiA+ ICAJCURSTV9ERUJVR19LTVMoIlVzaW5nIGF1dG9tYXRpYyBtb2RlIGZvciBOCj4gPiA+ID4gdmFs dWUgb24KPiA+ID4gPiA+ID4gPiA+IHBvcnQgJWNcbiIsCj4gPiA+ID4gPiA+ID4gPiA+ICAJCQkJ CSAgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTY5Myw4ICs3ODUsMTcg QEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5j X2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPiA+ID4gPiAgCS8qIDMuIHNldCB0aGUgTi9DVFMvTSAqLwo+ID4gPiA+ID4gPiA+ID4gPiAg CXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhwaXBlKSk7Cj4gPiA+ID4gPiA+ID4gPiA+IC0J dG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7Cj4gPiA+ID4gPiA+ID4gPiA+ ICsJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGNydGMsIG4sIHRtcCk7Cj4gPiA+ID4g PiA+ID4gPiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiA+ID4gPiA+ ID4gPiA+ID4gKwkvKiBzZXR1cCBtIHZhbHVlIGZvciBEUCAqLwo+ID4gPiA+ID4gPiA+ID4gPiAr CWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkK PiA+ID4gPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBpbnRl bF9oYXNfZHBfZW5jb2RlcigpCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiArCQlt ID0gYXVkaW9fY29uZmlnX2dldF9tKGNydGMsIHJhdGUpOwo+ID4gPiA+ID4gPiA+ID4gPiArCQlp ZiAobSA9PSAwKQo+ID4gPiA+ID4gPiA+ID4gPiArCQkJZ290byB1bmxvY2s7Cj4gPiA+ID4gPiA+ ID4gPiA+ICsJCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4g PiA+ID4gPiA+ID4gPiA+ICsJCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhjcnRjLCBt LCB0bXApOwo+ID4gPiA+ID4gPiA+ID4gPiArCQlJOTE1X1dSSVRFKEhTV19BVURfTV9DVFNfRU5B QkxFKHBpcGUpLCB0bXApOwo+ID4gPiA+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+ID4gICB1bmxvY2s6Cj4gPiA+ID4gPiA+ID4gPiA+ICAJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4g PiA+ID4gPiAxLjkuMQo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IC0tCj4gPiA+ID4g PiA+ID4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gPiA+ID4gPiA+IEludGVsIE9UQwo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gPiA+ ID4gSW50ZWwgT1RDCj4gPiA+ID4KPiA+ID4gPiAtLQo+ID4gPiA+IFZpbGxlIFN5cmrDpGzDpAo+ ID4gPiA+IEludGVsIE9UQwo+ID4gCj4gPiAtLQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJbnRl bCBPVEMKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=