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 10:16:49 +0300 Message-ID: <20160805071649.GQ4329@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id D98046E042 for ; Fri, 5 Aug 2016 07:17:04 +0000 (UTC) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F9544@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 T24gRnJpLCBBdWcgMDUsIDIwMTYgYXQgMDY6NDA6NDVBTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogVmlsbGUg U3lyasOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiBTZW50 OiBGcmlkYXksIEF1Z3VzdCA1LCAyMDE2IDI6MzYgUE0KPiA+IFRvOiBZYW5nLCBMaWJpbiA8bGli aW4ueWFuZ0BpbnRlbC5jb20+Cj4gPiBDYzogbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb207IGlu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiBqYW5pLm5pa3VsYUBsaW51eC5pbnRl bC5jb207IFZldHRlciwgRGFuaWVsIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT47Cj4gPiB0aXdh aUBzdXNlLmRlCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gZHJtL2k5MTU6IHNldCBw cm9wZXIgTi9NIGluIG1vZGVzZXQKPiA+IAo+ID4gT24gRnJpLCBBdWcgMDUsIDIwMTYgYXQgMDY6 MTY6NTlBTSArMDAwMCwgWWFuZywgTGliaW4gd3JvdGU6Cj4gPiA+IEhpIFZpbGxlLAo+ID4gPgo+ ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gRnJvbTogVmlsbGUgU3ly asOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiA+ID4gU2Vu dDogRnJpZGF5LCBBdWd1c3QgNSwgMjAxNiAxOjU3IFBNCj4gPiA+ID4gVG86IFlhbmcsIExpYmlu IDxsaWJpbi55YW5nQGludGVsLmNvbT4KPiA+ID4gPiBDYzogbGliaW4ueWFuZ0BsaW51eC5pbnRl bC5jb207IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiA+ID4gamFuaS5uaWt1 bGFAbGludXguaW50ZWwuY29tOyBWZXR0ZXIsIERhbmllbAo+ID4gPiA+IDxkYW5pZWwudmV0dGVy QGludGVsLmNvbT47IHRpd2FpQHN1c2UuZGUKPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYz IDEvM10gZHJtL2k5MTU6IHNldCBwcm9wZXIgTi9NIGluIG1vZGVzZXQKPiA+ID4gPgo+ID4gPiA+ IE9uIEZyaSwgQXVnIDA1LCAyMDE2IGF0IDA1OjM5OjE5QU0gKzAwMDAsIFlhbmcsIExpYmluIHdy b3RlOgo+ID4gPiA+ID4gSGkgVmlsbGUsCj4gPiA+ID4gPgo+ID4gPiA+ID4gU29ycnkgZm9yIGRl bGF5IHJlcGx5LiBQbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGJlbG93Lgo+ID4gPiA+ID4KPiA+ID4g PiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiA+ID4gRnJvbTogVmlsbGUg U3lyasOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21dCj4gPiA+ID4g PiA+IFNlbnQ6IFRodXJzZGF5LCBBdWd1c3QgNCwgMjAxNiA0OjUzIFBNCj4gPiA+ID4gPiA+IFRv OiBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gPiA+ID4gPiBDYzogaW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsKPiA+ID4gPiA+ID4gamFuaS5uaWt1bGFAbGludXguaW50ZWwu Y29tOyBWZXR0ZXIsIERhbmllbAo+ID4gPiA+ID4gPiA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+ OyB0aXdhaUBzdXNlLmRlOyBZYW5nLCBMaWJpbgo+ID4gPiA+ID4gPiA8bGliaW4ueWFuZ0BpbnRl bC5jb20+Cj4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMS8zXSBkcm0vaTkxNTog c2V0IHByb3BlciBOL00gaW4gbW9kZXNldAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBPbiBUaHUs IEF1ZyAwNCwgMjAxNiBhdCAwMzo1ODowMlBNICswODAwLAo+ID4gPiA+ID4gPiBsaWJpbi55YW5n QGxpbnV4LmludGVsLmNvbQo+ID4gPiA+IHdyb3RlOgo+ID4gPiA+ID4gPiA+IEZyb206IExpYmlu IFlhbmcgPGxpYmluLnlhbmdAbGludXguaW50ZWwuY29tPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gV2hlbiBtb2Rlc2V0IG9jY3VycyBhbmQgdGhlIExTX0NMSyBpcyBzZXQgdG8gc29tZSBz cGVjaWFsCj4gPiA+ID4gPiA+ID4gdmFsdWVzIGluIERQIG1vZGUsIHRoZSBOL00gbmVlZCB0byBi ZSBzZXQgbWFudWFsbHkgaWYgYXVkaW8gaXMKPiA+IHBsYXlpbmcuCj4gPiA+ID4gPiA+ID4gT3Ro ZXJ3aXNlIHRoZSBmaXJzdCBzZXZlcmFsIHNlY29uZHMgbWF5IGJlIHNpbGVudCBpbiBhdWRpbyBw bGF5YmFjay4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFRoZSByZWxhdGlvbnNoaXAgb2Yg TWF1ZCBhbmQgTmF1ZCBpcyBleHByZXNzZWQgaW4gdGhlCj4gPiA+ID4gPiA+ID4gZm9sbG93aW5n Cj4gPiA+ID4gPiA+ID4gZXF1YXRpb246Cj4gPiA+ID4gPiA+ID4gTWF1ZC9OYXVkID0gNTEyICog ZnMgLyBmX0xTX0Nsawo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gUGxlYXNlIHJlZmVyIFZF U0EgRGlzcGxheVBvcnQgU3RhbmRhcmQgc3BlYyBmb3IgZGV0YWlscy4KPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gUGxlYXMgaW5jbHVkZSBhIHNtYWxsIGNoYW5nZWxvZyBoZXJlIHNvIHRoYXQgSSBr bm93IHdoYXQgaGFzCj4gPiA+ID4gPiA+IGNoYW5nZWQgd2l0aCBlYWNoIHJldmlzaW9uIG9mIHRo ZSBwYXRjaC4gRWc6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IHYyOiBibGFoCj4gPiA+ID4gPiA+ IHYzOiB3aGF0ZXZlcgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gU2ln bmVkLW9mZi1ieTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20+Cj4gPiA+ ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmggICAgfCAgIDYgKysKPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYyB8IDEzMwo+ID4gPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0KPiA+ID4gPiA+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygr KSwgMTYgZGVsZXRpb25zKC0pCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBpbmRleCA4YmZkZTc1Li4yZjlkMDBlCj4gPiA+ID4g PiA+ID4gMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKPiA+ID4gPiA+ID4gPiBAQCAtNzM1MSw2ICs3MzUxLDEyIEBAIGVudW0gewo+ID4gPiA+ID4g PiA+ICAjZGVmaW5lIF9IU1dfQVVEX0NPTkZJR19CCQkweDY1MTAwCj4gPiA+ID4gPiA+ID4gICNk ZWZpbmUgSFNXX0FVRF9DRkcocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwKPiA+ID4gPiA+ID4gX0hT V19BVURfQ09ORklHX0EsIF9IU1dfQVVEX0NPTkZJR19CKQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gKyNkZWZpbmUgX0hTV19BVURfTV9DVFNfRU5BQkxFX0EJCTB4NjUwMjgKPiA+ID4gPiA+ ID4gPiArI2RlZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQgkJMHg2NTEyOAo+ID4gPiA+ID4g PiA+ICsjZGVmaW5lIEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpCj4gPiA+ID4gCV9NTUlPX1BJ UEUocGlwZSwKPiA+ID4gPiA+ID4gX0hTV19BVURfTV9DVFNfRU5BQkxFX0EsIF9IU1dfQVVEX01f Q1RTX0VOQUJMRV9CKQo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lICAgQVVEX01fQ1RTX01fVkFMVUVf SU5ERVgJKDEgPDwgMjEpCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgICBBVURfTV9DVFNfTV9QUk9H X0VOQUJMRQkoMSA8PCAyMCkKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gUGxlYXNlIHRyeSB0byBr ZWVwIHRoZSByZWdpc3RlciBkZWZpbmVzIGluIG9yZGVyIGJ5IHRoZSByZWdpc3RlciBvZmZzZXQu Cj4gPiA+ID4gPiA+IEllLiB0aGVzZSByZWdpc3RlcnMgc2hvdWxkIGJlIHBsYWNlZCBqdXN0IGFm dGVyIEhTV19BVURfTUlTQ19DVFJMLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gPiAgI2RlZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQQkJMHg2NTAxMAo+ID4gPiA+ID4g PiA+ICAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RSTF9CCQkweDY1MTEwCj4gPiA+ID4gPiA+ID4g ICNkZWZpbmUgSFNXX0FVRF9NSVNDX0NUUkwocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwKPiA+ID4g PiA+ID4gX0hTV19BVURfTUlTQ19DVFJMX0EsIF9IU1dfQVVEX01JU0NfQ1RSTF9CKQo+ID4gPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4g PiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ID4g PiA+ID4gaW5kZXggNjcwMGE3Yi4uMDRlNzM1OCAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiA+ID4gPiA+IEBAIC05OCw2ICs5 OCwzNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiA+ID4gPiA+ID4gPiAgCXsgMTkyMDAwLCBU TURTXzI5N00sIDIwNDgwLCAyNDc1MDAgfSwgIH07Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g PiArI2RlZmluZSBMQ181NDBNIDU0MDAwMAo+ID4gPiA+ID4gPiA+ICsjZGVmaW5lIExDXzI3ME0g MjcwMDAwCj4gPiA+ID4gPiA+ID4gKyNkZWZpbmUgTENfMTYyTSAxNjIwMDAKPiA+ID4gPiA+ID4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gPiA+ID4gPiA+ID4gKwlpbnQgc2FtcGxlX3JhdGU7 Cj4gPiA+ID4gPiA+ID4gKwlpbnQgY2xvY2s7Cj4gPiA+ID4gPiA+ID4gKwl1MTYgbjsKPiA+ID4g PiA+ID4gPiArCXUxNiBtOwo+ID4gPiA+ID4gPiA+ICt9IGF1ZF9ubVtdID0gewo+ID4gPiA+ID4g PiA+ICsJezE5MjAwMCwgTENfNTQwTSwgNTYyNSwgMTAyNH0sCj4gPiA+ID4gPiA+ICAgICAgICAg IF4gICAgICAgICAgICAgICAgICAgICAgICAgIF4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gU3R5 bGUgbml0OiBwbGVhc2UgYWRkIHNwYWNlcyBoZXJlCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g Kwl7OTYwMDAsIExDXzU0ME0sIDU2MjUsIDUxMn0sCj4gPiA+ID4gPiA+ID4gKwl7ODgyMDAsIExD XzU0ME0sIDkzNzUsIDc4NH0sCj4gPiA+ID4gPiA+ID4gKwl7NDgwMDAsIExDXzU0ME0sIDU2MjUs IDI1Nn0sCj4gPiA+ID4gPiA+ID4gKwl7NDQxMDAsIExDXzU0ME0sIDkzNzUsIDM5Mn0sCj4gPiA+ ID4gPiA+ID4gKwl7MzIwMDAsIExDXzU0ME0sIDE2ODc1LCA1MTJ9LAo+ID4gPiA+ID4gPiA+ICsJ ezE5MjAwMCwgTENfMjcwTSwgNTYyNSwgMjA0OH0sCj4gPiA+ID4gPiA+ID4gKwl7OTYwMDAsIExD XzI3ME0sIDU2MjUsIDEwMjR9LAo+ID4gPiA+ID4gPiA+ICsJezg4MjAwLCBMQ18yNzBNLCA5Mzc1 LCAxNTY4fSwKPiA+ID4gPiA+ID4gPiArCXs0ODAwMCwgTENfMjcwTSwgNTYyNSwgNTEyfSwKPiA+ ID4gPiA+ID4gPiArCXs0NDEwMCwgTENfMjcwTSwgOTM3NSwgNzg0fSwKPiA+ID4gPiA+ID4gPiAr CXszMjAwMCwgTENfMjcwTSwgMTY4NzUsIDEwMjR9LAo+ID4gPiA+ID4gPiA+ICsJezE5MjAwMCwg TENfMTYyTSwgMzM3NSwgMjA0OH0sCj4gPiA+ID4gPiA+ID4gKwl7OTYwMDAsIExDXzE2Mk0sIDMz NzUsIDEwMjR9LAo+ID4gPiA+ID4gPiA+ICsJezg4MjAwLCBMQ18xNjJNLCA1NjI1LCAxNTY4fSwK PiA+ID4gPiA+ID4gPiArCXs0ODAwMCwgTENfMTYyTSwgMzM3NSwgNTEyfSwKPiA+ID4gPiA+ID4g PiArCXs0NDEwMCwgTENfMTYyTSwgNTYyNSwgNzg0fSwKPiA+ID4gPiA+ID4gPiArCXszMjAwMCwg TENfMTYyTSwgMTAxMjUsIDEwMjR9LAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBUaGUgbnVtYmVy cyBsb29rcyBnb29kLiBCdXQgbG9va3MgbGlrZSB5b3UgZm9yZ290IGFib3V0IDE3Ni40IGtIej8K PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ID4gIC8qIGdldCBBVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfKiB2YWx1ZSBmb3IgbW9kZSAq Lwo+ID4gPiA+ID4gPiA+IHN0YXRpYwo+ID4gPiA+ID4gPiA+IHUzMiBhdWRpb19jb25maWdfaGRt aV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiBkcm1fZGlzcGxheV9tb2Rl Cj4gPiA+ID4gPiA+ID4gKmFkanVzdGVkX21vZGUpICB7IEBAIC0xMjEsMjAgKzE1MCw1MCBAQCBz dGF0aWMgdTMyCj4gPiA+ID4gPiA+ID4gYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxfY2xvY2soY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ID4gPiAqYWRqdXN0ZWQKPiA+ID4gPiA+ID4g PiAgCXJldHVybiBoZG1pX2F1ZGlvX2Nsb2NrW2ldLmNvbmZpZzsgIH0KPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+IC1zdGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbihjb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZQo+ID4gPiA+ID4gPiA+ICptb2RlLCBpbnQgcmF0ZSkKPiA+ID4gPiA+ ID4gPiArc3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X24oc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gPiA+ID4gPiA+ID4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl Cj4gPiAqYWRqdXN0ZWRfbW9kZSwKPiA+ID4gPiA+ID4gPiArCQkJICAgICAgaW50IHJhdGUpCj4g PiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiAgCWludCBpOwo+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewo+ ID4gPiA+ID4gPiA+IC0JCWlmICgocmF0ZSA9PSBhdWRfbmN0c1tpXS5zYW1wbGVfcmF0ZSkgJiYK PiA+ID4gPiA+ID4gPiAtCQkJKG1vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2NrKSkgewo+ ID4gPiA+ID4gPiA+IC0JCQlyZXR1cm4gYXVkX25jdHNbaV0ubjsKPiA+ID4gPiA+ID4gPiArCWlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0hETUkpKSB7 Cj4gPiA+ID4gPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25jdHMpOyBp KyspIHsKPiA+ID4gPiA+ID4gPiArCQkJaWYgKChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9y YXRlKSAmJgo+ID4gPiA+ID4gPiA+ICsJCQkJKGFkanVzdGVkX21vZGUtPmNsb2NrID09Cj4gPiBh dWRfbmN0c1tpXS5jbG9jaykpIHsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSW5kZW50IGZhaWws IGFuZCBhIGJpdCB0b28gbWFueSBwYXJlbnMgZm9yIG15IHRhc3RlLiBTaG91bGQgbG9vayBsaWtl Ogo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAJCWlmIChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBs ZV9yYXRlICYmCj4gPiA+ID4gPiA+IAkJICAgIGFkanVzdGVkX21vZGUtPmNsb2NrID09IGF1ZF9u Y3RzW2ldLmNsb2NrKSB7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gKwkJ CQlyZXR1cm4gYXVkX25jdHNbaV0ubjsKPiA+ID4gPiA+ID4gPiArCQkJfQo+ID4gPiA+ID4gPiA+ ICAJCX0KPiA+ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gKwlp ZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsK PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gaW50ZWxfaGFzX2RwX2VuY29kZXIoKSB3aWxsIG1ha2Ug dGhpcyB3b3JrIGZvciBNU1QgYXMgd2VsbC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gIkluIE1T VCBtb2RlLCB0aGUgU2luayBkZXZpY2UgbXVzdCBpZ25vcmUgdGhlIE1hdWQgYW5kIE12aWQKPiA+ ID4gPiA+ID4gdmFsdWVzIHNlbnQgYnkgYW4gTVNUIFNvdXJjZSBkZXZpY2UgdW5sZXNzIHRoZSBN U1QgU2luayBkZXZpY2UKPiA+ID4gPiA+ID4gaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBN U1QgU291cmNlIGRldmljZSB2aWEgYSBzaW5nbGUgbGluawo+ID4gPiA+ID4gPiBhcyB0aGUgU291 cmNlIGRldmljZSBnZW5lcmF0ZXMgdGhvc2UgdmFsdWVzIGJhc2VkIG9uIHRoZSBMU19DbGsKPiA+ ID4gPiA+ID4gb2YgdGhlIGxpbmsgaXQgaXMgZHJpdmluZy4gQW4gTVNUIFNpbmsgZGV2aWNlIG11 c3QgYmUgYWJsZSB0bwo+ID4gPiA+ID4gPiByZWdlbmVyYXRlIGEgc3RyZWFtIGNsb2NrIHdpdGhv dXQgZGVwZW5kaW5nIG9uIE12aWQgYW5kIE12aWQKPiA+ID4gPiA+ID4gdGltZSBzdGFtcCB2YWx1 ZXMgYmVjYXVzZSB0aGUgTVNUIFNpbmsgZGV2aWNlIG1pZ2h0IGJlIHBsdWdnZWQKPiA+ID4gPiA+ ID4gaW50byBhbiBNU1QgQnJhbmNoIGRldmljZSwgbm90IGFuCj4gPiA+ID4gTVNUIFNvdXJjZSBk ZXZpY2UuIgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBTbyBpZiBJJ20gcmVhZGluZyB0aGF0IHJp Z2h0LCBhbiBNU1Qgc2luayBjYW4gc3RpbGwgdXNlIHRoZSBNL04KPiA+ID4gPiA+ID4gdmFsdWVz IGlmIGl0J3MgZGlyZWNsdHkgaG9va2VkIHVwIHRvIGEgTVNUIHNvdXJjZS4gSGVuY2Ugd2UKPiA+ ID4gPiA+ID4gcHJvYmFibHkgd2FudCB0byBmaWxsIG91dCB0aGUgTS9OIGV2ZW4gZm9yIE1TVC4K PiA+ID4gPiA+Cj4gPiA+ID4gPiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoaXMgaXMgdGhlIHJlcXVp cmVtZW50IGZvciBzaW5rIGRldmljZS4KPiA+ID4gPiA+IE5vbi1tc3QgYW5kIE1TVCwgc291cmNl IHdpbGwgc2VuZCB0aGUgTi9NIHZhbHVlLCBhbmQgaWYgaXQgaXMKPiA+ID4gPiA+IE5vbi1tc3Qv c2luZ2xlIGxpbmssIHNpbmsgZGV2aWNlIHNob3VsZCB1c2UgdGhlc2UgZGF0YSB0byBnZW5lcmF0 ZQo+ID4gPiA+ID4gdGhlIGNsb2NrLiBJZiBpdCBpcyBpbiBNU1QsIHNpbmsgZGV2aWNlIHNob3Vs ZCBpZ25vcmUgdGhlIGRhdGEgYW5kCj4gPiA+ID4gPiByZWdlbmVyYXRlIHRoZSBjbG9jayB3aXRo b3V0IGRlcGVuZGluZyBvbiBOL00gdmFsdWUuCj4gPiA+ID4gPgo+ID4gPiA+ID4gU28gdGhpcyBj b2RlIHNob3VsZCBPSyBiZSBmb3IgYm90aCBub24tbXN0IGFuZCBNU1QuIElmIG5vdCwgSQo+ID4g PiA+ID4gdGhpbmsgd2UgY2FuIG1ha2UgYSBzZXBhcmF0ZSBwYXRjaCBmb3IgRFAgTVNULgo+ID4g PiA+Cj4gPiA+ID4gSXQncyBvbmx5IE9LIGZvciBTU1QuIFdlIGNvdWxkIG9mIGNvdXJzZSBkZWxh eSBkZWFsaW5nIHdpdGggTVNULCBidXQKPiA+ID4gPiB0aGF0IHNlZW1zIGxpa2UgdW5uZWNlc3Nh cnkgY2h1cm4uIFlvdSdyZSB0b3VjaGluZyBhbGwgdGhlc2UgcGxhY2VzCj4gPiA+ID4gaW4gdGhp cyBwYXRjaCwgc28gbWlnaHQgYXMgd2VsbCB1c2UgaW50ZWxfZHBfZW5jb2RlcigpIGZyb20gdGhl Cj4gPiA+ID4gc3RhcnQuIEl0IHdpbGwgbWFrZSB0aGUgTVNUIHBhdGNoIHNtYWxsZXIgdG9vLCB3 aGljaCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvCj4gPiByZXZpZXcuCj4gPiA+Cj4gPiA+IE9LLCBJ IHdpbGwgdXNlIGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIoKS4gSG9wZSBpdCBzdGlsbCB3b3Jr cyBmb3IgRFAKPiA+ID4gTVNUIDopCj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25tKTsgaSsr KSB7Cj4gPiA+ID4gPiA+ID4gKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUp ICYmCj4gPiA+ID4gPiA+ID4gKwkJCQkoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09Cj4gPiBh dWRfbm1baV0uY2xvY2spKQo+ID4gPiA+ID4gPiB7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IGlu ZGVudCArIHBhcmVucwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ICsJCQkJcmV0dXJuIGF1ZF9u bVtpXS5uOwo+ID4gPiA+ID4gPiA+ICsJCQl9Cj4gPiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4g PiA+ICsJfQo+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gK30KPiA+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9tKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBpbnQgcmF0ZSkgewo+ID4gPiA+ID4gPiA+ICsJaW50IGk7 Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUo Y3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFApKSB7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IGludGVsX2hhc19kcF9lbmNvZGVyKCkKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiArCQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbm0pOyBpKyspIHsKPiA+ID4gPiA+ID4gPiArCQkJ aWYgKChyYXRlID09IGF1ZF9ubVtpXS5zYW1wbGVfcmF0ZSkgJiYKPiA+ID4gPiA+ID4gPiArCQkJ CShjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0KPiA+IGF1ZF9ubVtpXS5jbG9jaykpCj4gPiA+ ID4gPiA+IHsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gaW5kZW50ICsgcGFyZW5zCj4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gKwkJCQlyZXR1cm4gYXVkX25tW2ldLm07Cj4gPiA+ID4gPiA+ID4g KwkJCX0KPiA+ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+IC1zdGF0aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3NldHVwX25fcmVn KGludCBuLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBhdWRp b19jb25maWdfc2V0dXBfbl9yZWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ID4gPiA+ ID4gKwkJCQkJIGludCBuLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ ID4gPiAgCWludCBuX2xvdywgbl91cDsKPiA+ID4gPiA+ID4gPiAgCXVpbnQzMl90IHRtcCA9IHZh bDsKPiA+ID4gPiA+ID4gPiBAQCAtMTQ1LDE3ICsyMDQsMzkgQEAgc3RhdGljIHVpbnQzMl90Cj4g PiA+ID4gPiA+ID4gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGludCBuLAo+ID4gPiA+ID4gPiB1 aW50MzJfdCB2YWwpCj4gPiA+ID4gPiA+ID4gIAl0bXAgfD0gKChuX3VwIDw8IEFVRF9DT05GSUdf VVBQRVJfTl9TSElGVCkgfAo+ID4gPiA+ID4gPiA+ICAJCQkobl9sb3cgPDwgQVVEX0NPTkZJR19M T1dFUl9OX1NISUZUKSB8Cj4gPiA+ID4gPiA+ID4gIAkJCUFVRF9DT05GSUdfTl9QUk9HX0VOQUJM RSk7Cj4gPiA+ID4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcs IElOVEVMX09VVFBVVF9EUCkpCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IGludGVsX2hhc19kcF9l bmNvZGVyKCkKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiArCQl0bXAgfD0gQVVEX0NPTkZJR19O X1ZBTFVFX0lOREVYOwo+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIHRtcDsKPiA+ID4gPiA+ID4gPiAr fQo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArc3RhdGljIHVpbnQzMl90IGF1ZGlvX2Nv bmZpZ19zZXR1cF9tX3JlZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4gPiAr CQkJCQkgaW50IG0sIHVpbnQzMl90IHZhbCkKPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ ICsJdWludDMyX3QgdG1wID0gdmFsOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCWlm ICghaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCj4g PiA+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFRoZSBjYWxs ZXIgYWxyZWFkeSBjaGVja2VkIHRoYXQuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiA+ICsJdG1wIHw9IG07Cj4gPiA+ID4gPiA+ID4gKwl0bXAgfD0gQVVEX01fQ1RTX01f VkFMVUVfSU5ERVg7Cj4gPiA+ID4gPiA+ID4gKwl0bXAgfD0gQVVEX01fQ1RTX01fUFJPR19FTkFC TEU7Cj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICAJcmV0dXJuIHRtcDsKPiA+ID4gPiA+ ID4gPiAgfQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gIC8qIGNoZWNrIHdoZXRoZXIgTi9D VFMvTSBuZWVkIGJlIHNldCBtYW51YWxseSAqLyAgc3RhdGljIGJvb2wKPiA+ID4gPiA+ID4gPiBh dWRpb19yYXRlX25lZWRfcHJvZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4g PiAtCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZQo+ID4gKm1vZGUpCj4gPiA+ID4g PiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ID4gPiA+ID4gKmFk anVzdGVkX21vZGUpCj4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiAtCWlmICgoKG1vZGUt PmNsb2NrID09IFRNRFNfMjk3TSkgfHwKPiA+ID4gPiA+ID4gPiAtCQkgKG1vZGUtPmNsb2NrID09 IFRNRFNfMjk2TSkpICYmCj4gPiA+ID4gPiA+ID4gKwlpZiAoKChhZGp1c3RlZF9tb2RlLT5jbG9j ayA9PSBUTURTXzI5N00pIHx8Cj4gPiA+ID4gPiA+ID4gKwkJIChhZGp1c3RlZF9tb2RlLT5jbG9j ayA9PSBUTURTXzI5Nk0pKSAmJgo+ID4gPiA+ID4gPiA+ICAJCWludGVsX2NydGNfaGFzX3R5cGUo Y3J0Yy0+Y29uZmlnLAo+ID4gSU5URUxfT1VUUFVUX0hETUkpKQo+ID4gPiA+ID4gPiA+ICAJCXJl dHVybiB0cnVlOwo+ID4gPiA+ID4gPiA+ICsJZWxzZSBpZiAoKChjcnRjLT5jb25maWctPnBvcnRf Y2xvY2sgPT0gTENfNTQwTSkgfHwKPiA+ID4gPiA+ID4gPiArCQkgIChjcnRjLT5jb25maWctPnBv cnRfY2xvY2sgPT0gTENfMjcwTSkgfHwKPiA+ID4gPiA+ID4gPiArCQkgIChjcnRjLT5jb25maWct PnBvcnRfY2xvY2sgPT0gTENfMTYyTSkpICYmCj4gPiA+ID4gPiA+ID4gKwkJICBpbnRlbF9jcnRj X2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gaW50ZWxfaGFzX2RwX2VuY29kZXIoKQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ ICsJCXJldHVybiB0cnVlOwo+ID4gPiA+ID4gPiA+ICAJZWxzZQo+ID4gPiA+ID4gPiA+ICAJCXJl dHVybiBmYWxzZTsKPiA+ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+IEBAIC0yODcsNyArMzY4 LDcgQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QKPiA+ID4gPiA+ ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ID4gPiA+ICAJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQo+ID4gPiA+ID4gPiA+ICAJCWVuY190b19k aWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiA+ID4gPiA+ID4gIAllbnVtIHBvcnQgcG9ydCA9 IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ID4gPiA+ID4gPiA+IC0JdWludDMyX3QgdG1wOwo+ID4g PiA+ID4gPiA+ICsJdWludDMyX3QgdG1wLCBtOwo+ID4gPiA+ID4gPiA+ICAJaW50IGxlbiwgaTsK PiA+ID4gPiA+ID4gPiAgCWludCBuLCByYXRlOwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g QEAgLTM0MywxNSArNDI0LDI1IEBAIHN0YXRpYyB2b2lkCj4gPiA+ID4gPiA+ID4gaHN3X2F1ZGlv X2NvZGVjX2VuYWJsZShzdHJ1Y3QKPiA+ID4gPiA+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gPiA+ID4gPiA+ICAJCQlEUk1fRVJST1IoImludmFsaWQgcG9ydDogJWRcbiIsIHBvcnQp Owo+ID4gPiA+ID4gPiA+ICAJCQlyYXRlID0gMDsKPiA+ID4gPiA+ID4gPiAgCQl9Cj4gPiA+ID4g PiA+ID4gLQkJbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihhZGp1c3RlZF9tb2RlLCByYXRlKTsKPiA+ ID4gPiA+ID4gPiArCQluID0gYXVkaW9fY29uZmlnX2dldF9uKGludGVsX2NydGMsIGFkanVzdGVk X21vZGUsCj4gPiByYXRlKTsKPiA+ID4gPiA+ID4gPiAgCQlpZiAobiAhPSAwKQo+ID4gPiA+ID4g PiA+IC0JCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKPiA+ID4gPiA+ ID4gPiArCQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGludGVsX2NydGMsIG4sCj4g PiB0bXApOwo+ID4gPiA+ID4gPiA+ICAJCWVsc2UKPiA+ID4gPiA+ID4gPiAgCQkJRFJNX0RFQlVH X0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBpcwo+ID4gZm91bmRcbiIpOwo+ID4gPiA+ID4gPiA+ ICAJfQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gIAlJOTE1X1dSSVRFKEhTV19BVURfQ0ZH KHBpcGUpLCB0bXApOwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gKwkvKiBzZXR1cCBtIHZh bHVlIGZvciBEUCAqLwo+ID4gPiA+ID4gPiA+ICsJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoaW50 ZWxfY3J0Yy0+Y29uZmlnLAo+ID4gPiA+ID4gPiA+ICtJTlRFTF9PVVRQVVRfRFApKSB7Cj4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+IGludGVsX2hhc19kcF9lbmNvZGVyKCkKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gPiArCQltID0gYXVkaW9fY29uZmlnX2dldF9tKGludGVsX2NydGMsIHJhdGUpOwo+ ID4gPiA+ID4gPiA+ICsJCWlmIChtICE9IDApIHsKPiA+ID4gPiA+ID4gPiArCQkJdG1wID0KPiA+ IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gPiA+ID4gPiA+ID4gKwkJ CXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3JlZyhpbnRlbF9jcnRjLAo+ID4gbSwgdG1wKTsK PiA+ID4gPiA+ID4gPiArCQkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSwK PiA+IHRtcCk7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IFdlIHNob3VsZCBwcm9ncmFtIHRoaXMg cmVnaXN0ZXIgZXZlbiBmb3IgSERNSSwgc28gdGhhdCB3ZSBkb24ndAo+ID4gPiA+ID4gPiBsZWFr IGludmFsaWQgcmVnaXN0ZXIgdmFsdWVzIGVnLiB3aGVuIGNoYW5naW5nIGZyb20gRFAtPkhETUku Cj4gPiA+ID4gPgo+ID4gPiA+ID4gSERNSSBkb2Vzbid0IG5lZWQgc2V0IHRoZXNlIHZhbHVlcyBi YXNlZCBvbiBvdXIgdGVzdC4gSXQgc2VlbXMKPiA+ID4gPiA+IHNpbGljb24gY2FuIGhhbmRsZSBz bW9vdGhseSBmb3IgSERNSS4KPiA+ID4gPgo+ID4gPiA+IFllcywgYnV0IHdlIG5lZSB0byBtYWtl IHN1cmUgd2UgY2xlYXIgd2hhdGV2ZXIgd2UgcHJvZ3JhbW1lZCBpbiBmb3IKPiA+ID4gPiBEUCBw cmV2aW91c2x5Lgo+ID4gPgo+ID4gPiBUaGUgc2lsaWNvbiBzZWVtcyB0byBiZSBhYmxlIHRvIGhh bmRsZSB0aGUgc2l0dWF0aW9uIG9mIERQIC0+IEhETUkgYW5kCj4gPiA+IEhETUkgLT4gRFAuCj4g PiAKPiA+IERpZCB5b3UgbWFrZSBzdXJlIGVnLiB0aGF0IHRoZSBwb3dlciB3ZWxsIGRpZG4ndCBn ZXQgdG9nZ2xlZCBpbiBiZXR3ZWVuPwo+ID4gVGhhdCB3b3VsZCByZXNldCB0aGUgcmVnaXN0ZXIg YW55d2F5Lgo+IAo+IFdlIGhhdmUgZG9uZSB0aGUgdGVzdCBmb3IgdGhpcyBjYXNlLiBTbyBmYXIg aXQgaXMgT0suCgpUZXN0IHdoYXQ/IENoZWNraW5nIHRoYXQgdGhlIHJlZ2lzdGVyIGdldHMgcmVz ZXQgdy9vIGFueSBwb3dlciB3ZWxsCnRvZ2dsaW5nIGFuZCB0aGUgbGlrZT8gU28gd2hhdCBldmVu dCBkb2VzIHJlc2V0IHRoYXQgcmVnaXN0ZXI/Cgo+IAo+IFJlZ2FyZHMsCj4gTGliaW4KPiAKPiA+ IAo+ID4gPiBXaGF0J3MgbW9yZSBpdCBjYW4gaGFuZGxlIHNhbXBsZSByYXRlL3RtZHMgY2hhbmdl cy4KPiA+ID4KPiA+ID4gUmVnYXJkcywKPiA+ID4gTGliaW4KPiA+ID4KPiA+ID4gPgo+ID4gPiA+ ID4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0 ZXgpOwo+ID4gPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBAQCAtNjM3 LDcgKzcyOCw3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4gaTkxNV9hdWRpb19jb21wb25lbnRf c3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gPiAgCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4gPiA+ID4gPiA+ICAJc3RydWN0IGk5MTVfYXVk aW9fY29tcG9uZW50ICphY29tcCA9IGRldl9wcml2LQo+ID4gPmF1ZGlvX2NvbXBvbmVudDsKPiA+ ID4gPiA+ID4gPiAgCWVudW0gcGlwZSBwaXBlID0gSU5WQUxJRF9QSVBFOwo+ID4gPiA+ID4gPiA+ IC0JdTMyIHRtcDsKPiA+ID4gPiA+ID4gPiArCXUzMiB0bXAsIG07Cj4gPiA+ID4gPiA+ID4gIAlp bnQgbjsKPiA+ID4gPiA+ID4gPiAgCWludCBlcnIgPSAwOwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gQEAgLTY1Myw3ICs3NDQsOCBAQCBzdGF0aWMgaW50Cj4gPiA+ID4gPiA+IGk5MTVfYXVk aW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4g PiA+ID4gIAlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsKPiA+ ID4gPiA+ID4gPiAgCS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICov Cj4gPiA+ID4gPiA+ID4gIAlpZiAoIWludGVsX2VuY29kZXIgfHwgIWludGVsX2VuY29kZXItPmJh c2UuY3J0YyB8fAo+ID4gPiA+ID4gPiA+IC0JICAgIGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5U RUxfT1VUUFVUX0hETUkpIHsKPiA+ID4gPiA+ID4gPiArCSAgICAoKGludGVsX2VuY29kZXItPnR5 cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpICYmCj4gPiA+ID4gPiA+ID4gKwkgICAgIChpbnRlbF9l bmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9EUCkpKSB7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IEhtbS4gU2hvdWxkIHByb2JhYmx0IG1vdmUgdGhpcyBzdHVmZiBsYXRlciBzbyB0aGF0IHdl IGNhbiB1c2UKPiA+ID4gPiA+ID4gY2hlY2sKPiA+ID4gPiA+ID4gY3J0Yy0+Y29uZmlnLT5vdXRw dXRfdHlwZXMgaW5zdGVhZC4gQnV0IEkgZ3Vlc3MgdGhhdCdzIG1vcmUKPiA+ID4gPiA+ID4gYXBw cm9wcmlhdGVseSBsZWZ0IHRvIGFueSBNU1QgcGF0Y2guCj4gPiA+ID4gPgo+ID4gPiA+ID4gVGhl IHNhbWUgcmVhc29uIGFzIGludGVsX2hhc19kcF9lbmNvZGVyKCkuIEFuZCBpZiBpdCBpcyB3cm9u ZyBmb3IKPiA+ID4gPiA+IERQIE1TVCwgbGV0J3MgaGF2ZSBhIHNlcGFyYXRlIHBhdGNoIHdoZW4g d2Ugc3VwcG9ydCBEUCBNU1QuCj4gPiA+ID4gPiBBdCB0aGF0IHRpbWUsIHdlIGNhbiBkbyBhIGZ1 bGwgdGVzdCBvbiBEUCBNU1QuCj4gPiA+ID4KPiA+ID4gPiBZZWFoIHRoaXMgcGFydCB3ZSBjYW4g bGVhdmUgZm9yIHRoZSBNU1QgcGF0Y2ggYXMgaXQnbGwgaW52b2x2ZSBhIGJpdAo+ID4gPiA+IG1v cmUgdGhhbiBqdXN0IGFkZGluZyBhbm90aGVyIGNoZWNrIHRvIHRoZSBpZiBzdGF0ZW1lbnQuCj4g PiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBSZWdhcmRzLAo+ID4gPiA+ID4gTGliaW4KPiA+ID4g PiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygibm8gdmFsaWQg cG9ydCAlY1xuIiwKPiA+IHBvcnRfbmFtZShwb3J0KSk7Cj4gPiA+ID4gPiA+ID4gIAkJZXJyID0g LUVOT0RFVjsKPiA+ID4gPiA+ID4gPiAgCQlnb3RvIHVubG9jazsKPiA+ID4gPiA+ID4gPiBAQCAt NjgxLDcgKzc3Myw3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4gaTkxNV9hdWRpb19jb21wb25l bnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiA+ID4gPiAgCQln b3RvIHVubG9jazsKPiA+ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ IC0JbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihtb2RlLCByYXRlKTsKPiA+ID4gPiA+ID4gPiArCW4g PSBhdWRpb19jb25maWdfZ2V0X24oY3J0YywgbW9kZSwgcmF0ZSk7Cj4gPiA+ID4gPiA+ID4gIAlp ZiAobiA9PSAwKSB7Cj4gPiA+ID4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygiVXNpbmcgYXV0b21h dGljIG1vZGUgZm9yIE4KPiA+IHZhbHVlIG9uCj4gPiA+ID4gPiA+IHBvcnQgJWNcbiIsCj4gPiA+ ID4gPiA+ID4gIAkJCQkJICBwb3J0X25hbWUocG9ydCkpOwo+ID4gPiA+ID4gPiA+IEBAIC02OTMs OCArNzg1LDE3IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiA+ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVu dF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gIAkvKiAzLiBzZXQgdGhlIE4vQ1RTL00gKi8KPiA+ID4gPiA+ID4gPiAgCXRtcCA9 IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhwaXBlKSk7Cj4gPiA+ID4gPiA+ID4gLQl0bXAgPSBhdWRp b19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKPiA+ID4gPiA+ID4gPiArCXRtcCA9IGF1ZGlv X2NvbmZpZ19zZXR1cF9uX3JlZyhjcnRjLCBuLCB0bXApOwo+ID4gPiA+ID4gPiA+ICAJSTkxNV9X UklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPiA+ID4gPiA+ID4gPiArCS8qIHNldHVwIG0g dmFsdWUgZm9yIERQICovCj4gPiA+ID4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShj cnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g aW50ZWxfaGFzX2RwX2VuY29kZXIoKQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ICsJCW0gPSBh dWRpb19jb25maWdfZ2V0X20oY3J0YywgcmF0ZSk7Cj4gPiA+ID4gPiA+ID4gKwkJaWYgKG0gPT0g MCkKPiA+ID4gPiA+ID4gPiArCQkJZ290byB1bmxvY2s7Cj4gPiA+ID4gPiA+ID4gKwkJdG1wID0g STkxNV9SRUFEKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpKTsKPiA+ID4gPiA+ID4gPiArCQl0 bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbV9yZWcoY3J0YywgbSwgdG1wKTsKPiA+ID4gPiA+ID4g PiArCQlJOTE1X1dSSVRFKEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpLCB0bXApOwo+ID4gPiA+ ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gICB1bmxvY2s6Cj4gPiA+ID4g PiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gPiA+ID4gPiA+ID4g LS0KPiA+ID4gPiA+ID4gPiAxLjkuMQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ ID4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ID4gPiA+ID4gSW50ZWwgT1RDCj4gPiA+ID4KPiA+ID4g PiAtLQo+ID4gPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gPiA+IEludGVsIE9UQwo+ID4gCj4gPiAt LQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJbnRlbCBPVEMKCi0tIApWaWxsZSBTeXJqw6Rsw6QK SW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=