From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v2 1/6] drm: Add SCDC helpers Date: Wed, 8 Feb 2017 18:29:04 +0530 Message-ID: <8607dd2c-4699-4706-b784-024b98918321@intel.com> References: <1486389566-28613-1-git-send-email-shashank.sharma@intel.com> <1486389566-28613-2-git-send-email-shashank.sharma@intel.com> <5f5041ce-206e-fe62-6dd3-68f9f41c0f2b@synopsys.com> <24a57255-ac2d-3be0-215a-2e6214961bbd@intel.com> <11f7038c-7c60-4893-97af-dbd35afc14ab@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <11f7038c-7c60-4893-97af-dbd35afc14ab@synopsys.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jose Abreu , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com, treding@nvidia.com Cc: daniel.vetter@intel.com List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiAyLzgvMjAxNyA0OjU3IFBNLCBKb3NlIEFicmV1IHdyb3Rl Ogo+IEhpIFNoYXNoYW5rLAo+Cj4KPgo+IE9uIDA3LTAyLTIwMTcgMTY6MDksIFNoYXJtYSwgU2hh c2hhbmsgd3JvdGU6Cj4+IFRoYW5rcyBmb3IgdGhlIHJldmlldyBKb3NlLCBteSBjb21tZW50cyBp bmxpbmUuCj4+Cj4+Cj4+IFJlZ2FyZHMKPj4KPj4gU2hhc2hhbmsKPj4KPj4KPj4gT24gMi83LzIw MTcgNDoyNCBQTSwgSm9zZSBBYnJldSB3cm90ZToKPj4+IEhpIFNoYXNoYW5rLAo+Pj4KPj4+Cj4+ PiBTb3JyeSBmb3IgdGhlIGxhdGUgcmV2aWV3Lgo+Pj4KPj4+Cj4+PiBPbiAwNi0wMi0yMDE3IDEz OjU5LCBTaGFzaGFuayBTaGFybWEgd3JvdGU6Cj4+Pj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRy ZWRpbmdAbnZpZGlhLmNvbT4KPj4+Pgo+Pj4+IFNDREMgaXMgYSBtZWNoYW5pc20gZGVmaW5lZCBp biB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbgo+Pj4+IHRoYXQgYWxsb3dzCj4+Pj4gdGhlIHNv dXJjZSBhbmQgc2luayBkZXZpY2VzIHRvIGNvbW11bmljYXRlLgo+Pj4+Cj4+Pj4gVGhpcyBjb21t aXQgaW50cm9kdWNlcyBoZWxwZXJzIHRvIGFjY2VzcyB0aGUgU0NEQyBhbmQKPj4+PiBwcm92aWRl cyB0aGUKPj4+PiBzeW1ib2xpYyBuYW1lcyBmb3IgdGhlIHZhcmlvdXMgcmVnaXN0ZXJzIGRlZmlu ZWQgaW4gdGhlCj4+Pj4gc3BlY2lmaWNhdGlvbi4KPj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6IFRo aWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogU2hh c2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+Pj4+IC0tLQo+Pj4+ICAg IERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwo+Pj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDMgKy0KPj4+PiAgICBk cml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMgICAgIHwgMTExCj4+Pj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5o ICAgICAgICAgfCAxMzIKPj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ Pj4gICAgNCBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVy LmMKPj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVy LmgKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBl cnMucnN0Cj4+Pj4gYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cj4+Pj4g aW5kZXggMDMwNDBhYS4uNzU5Mjc1NiAxMDA2NDQKPj4+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dw dS9kcm0ta21zLWhlbHBlcnMucnN0Cj4+Pj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWtt cy1oZWxwZXJzLnJzdAo+Pj4+IEBAIC0yMTcsNiArMjE3LDE4IEBAIEVESUQgSGVscGVyIEZ1bmN0 aW9ucyBSZWZlcmVuY2UKPj4+PiAgICAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMKPj4+PiAgICAgICA6ZXhwb3J0Ogo+Pj4+ICAgICtTQ0RDIEhlbHBlciBGdW5jdGlv bnMgUmVmZXJlbmNlCj4+Pj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPj4+PiAr Cj4+Pj4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMK Pj4+PiArICAgOmRvYzogc2NkYyBoZWxwZXJzCj4+Pj4gKwo+Pj4+ICsuLiBrZXJuZWwtZG9jOjog aW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPj4+PiArICAgOmludGVybmFsOgo+Pj4+ICsK Pj4+PiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+ Pj4+ICsgICA6ZXhwb3J0Ogo+Pj4+ICsKPj4+PiAgICBSZWN0YW5nbGUgVXRpbGl0aWVzIFJlZmVy ZW5jZQo+Pj4+ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4+Pj4gICAgZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL01h a2VmaWxlCj4+Pj4gaW5kZXggOTJkZTM5OS4uYWQ5MWNkOSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUK Pj4+PiBAQCAtMzEsNyArMzEsOCBAQCBkcm0tJChDT05GSUdfREVCVUdfRlMpICs9IGRybV9kZWJ1 Z2ZzLm8KPj4+PiBkcm1fZGVidWdmc19jcmMubwo+Pj4+ICAgIGRybV9rbXNfaGVscGVyLXkgOj0g ZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vCj4+Pj4gZHJtX3Byb2JlX2hlbHBlci5v IFwKPj4+PiAgICAgICAgICAgIGRybV9wbGFuZV9oZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5 Lm8KPj4+PiBkcm1fYXRvbWljX2hlbHBlci5vIFwKPj4+PiAgICAgICAgICAgIGRybV9rbXNfaGVs cGVyX2NvbW1vbi5vIGRybV9kcF9kdWFsX21vZGVfaGVscGVyLm8gXAo+Pj4+IC0gICAgICAgIGRy bV9zaW1wbGVfa21zX2hlbHBlci5vIGRybV9tb2Rlc2V0X2hlbHBlci5vCj4+Pj4gKyAgICAgICAg ZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAo+Pj4+ICsgICAg ICAgIGRybV9zY2RjX2hlbHBlci5vCj4+Pj4gICAgICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19E Uk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPQo+Pj4+IGRybV9lZGlkX2xvYWQubwo+Pj4+ICAgIGRy bV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9Cj4+Pj4gZHJtX2Zi X2hlbHBlci5vCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxw ZXIuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4+Pj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwLi5mZTBlMTIxCj4+Pj4gLS0tIC9kZXYv bnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+Pj4+IEBA IC0wLDAgKzEsMTExIEBACj4+Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklE SUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkKPj4+PiBw ZXJzb24gb2J0YWluaW5nIGEKPj4+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKPj4+PiAodGhlICJTb2Z0d2FyZSIpLAo+Pj4+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcK Pj4+PiB3aXRob3V0IGxpbWl0YXRpb24KPj4+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4+Pj4gZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCj4+ Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucwo+Pj4+IHRvIHdob20gdGhlCj4+Pj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nCj4+Pj4gY29uZGl0aW9uczoKPj4+PiAr ICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2UKPj4+PiAoaW5jbHVkaW5nIHRoZQo+Pj4+ICsgKiBuZXh0IHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvcgo+Pj4+IHN1YnN0YW50aWFsIHBvcnRpb25z Cj4+Pj4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPj4+PiArICoKPj4+PiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCj4+Pj4gS0lORCwg RVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+ICsgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4KPj4+PiBO TyBFVkVOVCBTSEFMTAo+Pj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPj4+PiBEQU1BR0VTIE9SIE9USEVSCj4+Pj4gKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKPj4+PiBP VEhFUldJU0UsIEFSSVNJTkcKPj4+PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCj4+Pj4gVVNFIE9SIE9USEVSCj4+Pj4gKyAqIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4K Pj4+PiArCj4+Pj4gKy8qKgo+Pj4+ICsgKiBET0M6IHNjZGMgaGVscGVycwo+Pj4+ICsgKgo+Pj4+ ICsgKiBTdGF0dXMgYW5kIENvbnRyb2wgRGF0YSBDaGFubmVsIChTQ0RDKSBpcyBhIG1lY2hhbmlz bQo+Pj4+IGludHJvZHVjZWQgYnkgdGhlCj4+Pj4gKyAqIEhETUkgMi4wIHNwZWNpZmljYXRpb24u IEl0IGlzIGEgcG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wKPj4+PiB0aGF0IGFsbG93cyB0aGUKPj4+ PiArICogSERNSSBzb3VyY2UgYW5kIEhETUkgc2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUgc2Ft ZSBJMkMKPj4+PiBpbnRlcmZhY2UgdGhhdAo+Pj4+ICsgKiBpcyB1c2VkIHRvIGFjY2VzcyBFRElE IHNlcnZlcyBhcyB0aGUgdHJhbnNwb3J0IG1lY2hhbmlzbQo+Pj4+IGZvciBTQ0RDLgo+Pj4+ICsg Ki8KPj4+PiArCj4+Pj4gKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAweDU0Cj4+Pj4g Kwo+Pj4+ICsvKioKPj4+PiArICogZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRh IGZyb20gU0NEQwo+Pj4+ICsgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKPj4+PiArICogQG9m ZnNldDogc3RhcnQgb2Zmc2V0IG9mIGJsb2NrIHRvIHJlYWQKPj4+PiArICogQGJ1ZmZlcjogcmV0 dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8gcmVhZAo+Pj4+ICsgKiBAc2l6ZTogc2l6ZSBv ZiB0aGUgYmxvY2sgdG8gcmVhZAo+Pj4+ICsgKgo+Pj4+ICsgKiBSZWFkcyBhIGJsb2NrIG9mIGRh dGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KPj4+PiArICoKPj4+PiAr ICogUmV0dXJuczoKPj4+PiArICogVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gU0NEQyBv ciBhIG5lZ2F0aXZlIGVycm9yCj4+Pj4gY29kZSBvbiBmYWlsdXJlLgo+Pj4+ICsgKi8KPj4+PiAr c3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTgKPj4+ PiBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwKPj4+PiArICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkK Pj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGkyY19tc2cgbXNnc1syXSA9IHsKPj4+PiArICAgICAg ICB7Cj4+Pj4gKyAgICAgICAgICAgIC5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKPj4+ PiArICAgICAgICAgICAgLmZsYWdzID0gMCwKPj4+PiArICAgICAgICAgICAgLmxlbiA9IDEsCj4+ PiAubGVuID0gc2l6ZW9mKG9mZnNldCkgPwo+PiBUZWNobmljYWxseSBjb3JyZWN0LCBidXQgd291 bGRuJ3QgdGhhdCBtZWFuIHRoYXQgd2UgYXJlCj4+IGV4cGVjdGluZyB0byBoYXZlIEkyQyBvZmZz ZXRzIHdpdGggbGVuZ3RoIG1vcmUgdGhhbiBvbmUgYnl0ZSA/Cj4gSSBqdXN0IGNvbW1lbnRlZCB0 aGlzIGJlY2F1c2UgaXQgd291bGQgYmUgbW9yZSBjb25zaXN0ZW50IGJ1dAo+IGluZGVlZCB5b3Ug YXJlIGNvcnJlY3QuIFlvdSBjYW4gZGlzcmVnYXJkIG15IGNvbW1lbnQgOikKPgo+IEJlc3QgcmVn YXJkcywKPiBKb3NlIE1pZ3VlbCBBYnJldQpUaGFua3MsIGlzIGV2ZXJ5dGhpbmcgZWxzZSB3b3Jr cyBmb3IgeW91LCB3b3VsZCB5b3UgbWluZCBhIHItYiA/Ci0gU2hhc2hhbmsKPj4+PiArICAgICAg ICAgICAgLmJ1ZiA9ICZvZmZzZXQsCj4+Pj4gKyAgICAgICAgfSwgewo+Pj4+ICsgICAgICAgICAg ICAuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCj4+Pj4gKyAgICAgICAgICAgIC5mbGFn cyA9IEkyQ19NX1JELAo+Pj4+ICsgICAgICAgICAgICAubGVuID0gc2l6ZSwKPj4+PiArICAgICAg ICAgICAgLmJ1ZiA9IGJ1ZmZlciwKPj4+PiArICAgICAgICB9Cj4+Pj4gKyAgICB9Owo+Pj4+ICsK Pj4+PiArICAgIHJldHVybiBpMmNfdHJhbnNmZXIoYWRhcHRlciwgbXNncywgQVJSQVlfU0laRSht c2dzKSk7Cj4+Pj4gK30KPj4+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY19yZWFkKTsKPj4+PiAr Cj4+Pj4gKy8qKgo+Pj4+ICsgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRlIGEgYmxvY2sgb2YgZGF0 YSB0byBTQ0RDCj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgo+Pj4+ICsgKiBAb2Zm c2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gd3JpdGUKPj4+PiArICogQGJ1ZmZlcjogYmxv Y2sgb2YgZGF0YSB0byB3cml0ZQo+Pj4+ICsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sgdG8g d3JpdGUKPj4+PiArICoKPj4+PiArICogV3JpdGVzIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDLCBz dGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KPj4+PiArICoKPj4+PiArICogUmV0dXJuczoKPj4+ PiArICogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIFNDREMgb3IgYSBuZWdhdGl2ZSBl cnJvcgo+Pj4+IGNvZGUgb24gZmFpbHVyZS4KPj4+PiArICovCj4+Pj4gK3NzaXplX3QgZHJtX3Nj ZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCj4+Pj4gKyAg ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCj4+Pj4gK3sKPj4+ PiArICAgIHN0cnVjdCBpMmNfbXNnIG1zZyA9IHsKPj4+PiArICAgICAgICAuYWRkciA9IFNDRENf STJDX1NMQVZFX0FERFJFU1MsCj4+Pj4gKyAgICAgICAgLmZsYWdzID0gMCwKPj4+PiArICAgICAg ICAubGVuID0gMSArIHNpemUsCj4+PiAubGVuID0gc2l6ZW9mKG9mZnNldCkgKyBzaXplID8KPj4g U2FtZSBhcyBhYm92ZS4KPj4+PiArICAgICAgICAuYnVmID0gTlVMTCwKPj4+PiArICAgIH07Cj4+ Pj4gKyAgICB2b2lkICpkYXRhOwo+Pj4+ICsgICAgaW50IGVycjsKPj4+PiArCj4+Pj4gKyAgICBk YXRhID0ga21hbGxvYygxICsgc2l6ZSwgR0ZQX1RFTVBPUkFSWSk7Cj4+PiBTYW1lIGFzIGFib3Zl Lgo+PiBTbyBvbiAuLi4KPj4+PiArICAgIGlmICghZGF0YSkKPj4+PiArICAgICAgICByZXR1cm4g LUVOT01FTTsKPj4+PiArCj4+Pj4gKyAgICBtc2cuYnVmID0gZGF0YTsKPj4+PiArCj4+Pj4gKyAg ICBtZW1jcHkoZGF0YSwgJm9mZnNldCwgc2l6ZW9mKG9mZnNldCkpOwo+Pj4+ICsgICAgbWVtY3B5 KGRhdGEgKyAxLCBidWZmZXIsIHNpemUpOwo+Pj4gU2FtZSBhcyBhYm92ZS4KPj4+Cj4+IFNvIG9u IC4uCj4+PiBCZXN0IHJlZ2FyZHMsCj4+PiBKb3NlIE1pZ3VlbCBBYnJldQo+PiAtIFNoYXNoYW5r Cj4+Pj4gKwo+Pj4+ICsgICAgZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOwo+ Pj4+ICsKPj4+PiArICAgIGtmcmVlKGRhdGEpOwo+Pj4+ICsKPj4+PiArICAgIHJldHVybiBlcnI7 Cj4+Pj4gK30KPj4+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY193cml0ZSk7Cj4+Pj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4+Pj4gYi9pbmNsdWRlL2RybS9k cm1fc2NkY19oZWxwZXIuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAw MDAwMC4uOTNiMDdiYwo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9pbmNsdWRlL2RybS9k cm1fc2NkY19oZWxwZXIuaAo+Pj4+IEBAIC0wLDAgKzEsMTMyIEBACj4+Pj4gKy8qCj4+Pj4gKyAq IENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkKPj4+PiBwZXJzb24gb2J0YWluaW5nIGEKPj4+PiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKPj4+PiAo dGhlICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKPj4+PiB3aXRob3V0IGxpbWl0YXRpb24KPj4+PiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCj4+Pj4gZGlz dHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCj4+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucwo+Pj4+IHRvIHdob20gdGhlCj4+Pj4gKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n Cj4+Pj4gY29uZGl0aW9uczoKPj4+PiArICoKPj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKPj4+PiAoaW5jbHVkaW5nIHRoZQo+Pj4+ ICsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvcgo+ Pj4+IHN1YnN0YW50aWFsIHBvcnRpb25zCj4+Pj4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPj4+PiAr ICoKPj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZCj4+Pj4gS0lORCwgRVhQUkVTUyBPUgo+Pj4+ICsgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+Pj4gTUVSQ0hBTlRB QklMSVRZLAo+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O LUlORlJJTkdFTUVOVC4gSU4KPj4+PiBOTyBFVkVOVCBTSEFMTAo+Pj4+ICsgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPj4+PiBEQU1B R0VTIE9SIE9USEVSCj4+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IKPj4+PiBPVEhFUldJU0UsIEFSSVNJTkcKPj4+PiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCj4+Pj4gVVNF IE9SIE9USEVSCj4+Pj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+PiArICovCj4+ Pj4gKwo+Pj4+ICsjaWZuZGVmIERSTV9TQ0RDX0hFTFBFUl9ICj4+Pj4gKyNkZWZpbmUgRFJNX1ND RENfSEVMUEVSX0gKPj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPj4+PiArI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIFNDRENfU0lOS19WRVJT SU9OIDB4MDEKPj4+PiArCj4+Pj4gKyNkZWZpbmUgU0NEQ19TT1VSQ0VfVkVSU0lPTiAweDAyCj4+ Pj4gKwo+Pj4+ICsjZGVmaW5lIFNDRENfVVBEQVRFXzAgMHgxMAo+Pj4+ICsjZGVmaW5lICBTQ0RD X1JFQURfUkVRVUVTVF9URVNUICgxIDw8IDIpCj4+Pj4gKyNkZWZpbmUgIFNDRENfQ0VEX1VQREFU RSAoMSA8PCAxKQo+Pj4+ICsjZGVmaW5lICBTQ0RDX1NUQVRVU19VUERBVEUgKDEgPDwgMCkKPj4+ PiArCj4+Pj4gKyNkZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCj4+Pj4gKwo+Pj4+ICsjZGVmaW5l IFNDRENfVE1EU19DT05GSUcgMHgyMAo+Pj4+ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NL X1JBVElPX0JZXzQwICgxIDw8IDEpCj4+Pj4gKyNkZWZpbmUgIFNDRENfVE1EU19CSVRfQ0xPQ0tf UkFUSU9fQllfMTAgKDAgPDwgMSkKPj4+PiArI2RlZmluZSAgU0NEQ19TQ1JBTUJMSU5HX0VOQUJM RSAoMSA8PCAwKQo+Pj4+ICsKPj4+PiArI2RlZmluZSBTQ0RDX1NDUkFNQkxFUl9TVEFUVVMgMHgy MQo+Pj4+ICsjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfU1RBVFVTICgxIDw8IDApCj4+Pj4gKwo+ Pj4+ICsjZGVmaW5lIFNDRENfQ09ORklHXzAgMHgzMAo+Pj4+ICsjZGVmaW5lICBTQ0RDX1JFQURf UkVRVUVTVF9FTkFCTEUgKDEgPDwgMCkKPj4+PiArCj4+Pj4gKyNkZWZpbmUgU0NEQ19TVEFUVVNf RkxBR1NfMCAweDQwCj4+Pj4gKyNkZWZpbmUgIFNDRENfQ0gyX0xPQ0sgKDEgPCAzKQo+Pj4+ICsj ZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKPj4+PiArI2RlZmluZSAgU0NEQ19DSDBfTE9D SyAoMSA8IDEpCj4+Pj4gKyNkZWZpbmUgIFNDRENfQ0hfTE9DS19NQVNLIChTQ0RDX0NIMl9MT0NL IHwgU0NEQ19DSDFfTE9DSyB8Cj4+Pj4gU0NEQ19DSDBfTE9DSykKPj4+PiArI2RlZmluZSAgU0NE Q19DTE9DS19ERVRFQ1QgKDEgPDwgMCkKPj4+PiArCj4+Pj4gKyNkZWZpbmUgU0NEQ19TVEFUVVNf RkxBR1NfMSAweDQxCj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0wgMHg1MAo+ Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQo+Pj4+ICsjZGVmaW5lIFNDRENfRVJS X0RFVF8xX0wgMHg1Mgo+Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0ggMHg1Mwo+Pj4+ICsj ZGVmaW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAo+Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8y X0ggMHg1NQo+Pj4+ICsjZGVmaW5lICBTQ0RDX0NIQU5ORUxfVkFMSUQgKDEgPDwgNykKPj4+PiAr Cj4+Pj4gKyNkZWZpbmUgU0NEQ19FUlJfREVUX0NIRUNLU1VNIDB4NTYKPj4+PiArCj4+Pj4gKyNk ZWZpbmUgU0NEQ19URVNUX0NPTkZJR18wIDB4YzAKPj4+PiArI2RlZmluZSAgU0NEQ19URVNUX1JF QURfUkVRVUVTVCAoMSA8PCA3KQo+Pj4+ICsjZGVmaW5lICBTQ0RDX1RFU1RfUkVBRF9SRVFVRVNU X0RFTEFZKHgpICgoeCkgJiAweDdmKQo+Pj4+ICsKPj4+PiArI2RlZmluZSBTQ0RDX01BTlVGQUNU VVJFUl9JRUVFX09VSSAweGQwCj4+Pj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9P VUlfU0laRSAzCj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIFNDRENfREVWSUNFX0lEIDB4ZDMKPj4+PiAr I2RlZmluZSBTQ0RDX0RFVklDRV9JRF9TSVpFIDgKPj4+PiArCj4+Pj4gKyNkZWZpbmUgU0NEQ19E RVZJQ0VfSEFSRFdBUkVfUkVWSVNJT04gMHhkYgo+Pj4+ICsjZGVmaW5lICBTQ0RDX0RFVklDRV9I QVJEV0FSRV9SRVZJU0lPTl9NQUpPUih4KSAoKCh4KSA+PiA0KQo+Pj4+ICYgMHhmKQo+Pj4+ICsj ZGVmaW5lICBTQ0RDX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTl9NSU5PUih4KSAoKCh4KSA+PiAw KQo+Pj4+ICYgMHhmKQo+Pj4+ICsKPj4+PiArI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9N QUpPUl9SRVZJU0lPTiAweGRjCj4+Pj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUlO T1JfUkVWSVNJT04gMHhkZAo+Pj4+ICsKPj4+PiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9T UEVDSUZJQyAweGRlCj4+Pj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUNfU0la RSAzNAo+Pj4+ICsKPj4+PiArc3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRl ciAqYWRhcHRlciwgdTgKPj4+PiBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwKPj4+PiArICAgICAgICAg ICAgICBzaXplX3Qgc2l6ZSk7Cj4+Pj4gK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGky Y19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCj4+Pj4gKyAgICAgICAgICAgICAgIGNvbnN0 IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+Pj4+ICsKPj4+PiArLyoqCj4+Pj4gKyAqIGRy bV9zY2RjX3JlYWRiIC0gcmVhZCBhIHNpbmdsZSBieXRlIGZyb20gU0NEQwo+Pj4+ICsgKiBAYWRh cHRlcjogSTJDIGFkYXB0ZXIKPj4+PiArICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRv IHJlYWQKPj4+PiArICogQHZhbHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2 YWx1ZQo+Pj4+ICsgKgo+Pj4+ICsgKiBSZWFkcyBhIHNpbmdsZSBieXRlIGZyb20gU0NEQy4gVGhp cyBpcyBhIGNvbnZlbmllbmNlCj4+Pj4gd3JhcHBlciBhcm91bmQgdGhlCj4+Pj4gKyAqIGRybV9z Y2RjX3JlYWQoKSBmdW5jdGlvbi4KPj4+PiArICoKPj4+PiArICogUmV0dXJuczoKPj4+PiArICog MCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+Pj4+ICsg Ki8KPj4+PiArc3RhdGljIGlubGluZSBpbnQgZHJtX3NjZGNfcmVhZGIoc3RydWN0IGkyY19hZGFw dGVyCj4+Pj4gKmFkYXB0ZXIsIHU4IG9mZnNldCwKPj4+PiArICAgICAgICAgICAgICAgICB1OCAq dmFsdWUpCj4+Pj4gK3sKPj4+PiArICAgIHJldHVybiBkcm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9m ZnNldCwgdmFsdWUsCj4+Pj4gc2l6ZW9mKCp2YWx1ZSkpOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICsv KioKPj4+PiArICogZHJtX3NjZGNfd3JpdGViIC0gd3JpdGUgYSBzaW5nbGUgYnl0ZSB0byBTQ0RD Cj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgo+Pj4+ICsgKiBAb2Zmc2V0OiBvZmZzZXQg b2YgcmVnaXN0ZXIgdG8gcmVhZAo+Pj4+ICsgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3Ig dGhlIHJlZ2lzdGVyIHZhbHVlCj4+Pj4gKyAqCj4+Pj4gKyAqIFdyaXRlcyBhIHNpbmdsZSBieXRl IHRvIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZQo+Pj4+IHdyYXBwZXIgYXJvdW5kIHRoZQo+ Pj4+ICsgKiBkcm1fc2NkY193cml0ZSgpIGZ1bmN0aW9uLgo+Pj4+ICsgKgo+Pj4+ICsgKiBSZXR1 cm5zOgo+Pj4+ICsgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCj4+Pj4gKyAqLwo+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY193cml0ZWIo c3RydWN0IGkyY19hZGFwdGVyCj4+Pj4gKmFkYXB0ZXIsIHU4IG9mZnNldCwKPj4+PiArICAgICAg ICAgICAgICAgICAgdTggdmFsdWUpCj4+Pj4gK3sKPj4+PiArICAgIHJldHVybiBkcm1fc2NkY193 cml0ZShhZGFwdGVyLCBvZmZzZXQsICZ2YWx1ZSwKPj4+PiBzaXplb2YodmFsdWUpKTsKPj4+PiAr fQo+Pj4+ICsKPj4+PiArI2VuZGlmCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK