From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jose Abreu Subject: Re: [PATCH v2 1/6] drm: Add SCDC helpers Date: Wed, 8 Feb 2017 14:26:30 +0000 Message-ID: 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> <8607dd2c-4699-4706-b784-024b98918321@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <8607dd2c-4699-4706-b784-024b98918321@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" , 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: dri-devel@lists.freedesktop.org SGkgU2hhc2hhbmssCgoKT24gMDgtMDItMjAxNyAxMjo1OSwgU2hhcm1hLCBTaGFzaGFuayB3cm90 ZToKPiBSZWdhcmRzCj4KPiBTaGFzaGFuawo+Cj4KPiBPbiAyLzgvMjAxNyA0OjU3IFBNLCBKb3Nl IEFicmV1IHdyb3RlOgo+PiBIaSBTaGFzaGFuaywKPj4KPj4KPj4KPj4gT24gMDctMDItMjAxNyAx NjowOSwgU2hhcm1hLCBTaGFzaGFuayB3cm90ZToKPj4+IFRoYW5rcyBmb3IgdGhlIHJldmlldyBK b3NlLCBteSBjb21tZW50cyBpbmxpbmUuCj4+Pgo+Pj4KPj4+IFJlZ2FyZHMKPj4+Cj4+PiBTaGFz aGFuawo+Pj4KPj4+Cj4+PiBPbiAyLzcvMjAxNyA0OjI0IFBNLCBKb3NlIEFicmV1IHdyb3RlOgo+ Pj4+IEhpIFNoYXNoYW5rLAo+Pj4+Cj4+Pj4KPj4+PiBTb3JyeSBmb3IgdGhlIGxhdGUgcmV2aWV3 Lgo+Pj4+Cj4+Pj4KPj4+PiBPbiAwNi0wMi0yMDE3IDEzOjU5LCBTaGFzaGFuayBTaGFybWEgd3Jv dGU6Cj4+Pj4+IEZyb206IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+Pj4+ Cj4+Pj4+IFNDREMgaXMgYSBtZWNoYW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lm aWNhdGlvbgo+Pj4+PiB0aGF0IGFsbG93cwo+Pj4+PiB0aGUgc291cmNlIGFuZCBzaW5rIGRldmlj ZXMgdG8gY29tbXVuaWNhdGUuCj4+Pj4+Cj4+Pj4+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgaGVs cGVycyB0byBhY2Nlc3MgdGhlIFNDREMgYW5kCj4+Pj4+IHByb3ZpZGVzIHRoZQo+Pj4+PiBzeW1i b2xpYyBuYW1lcyBmb3IgdGhlIHZhcmlvdXMgcmVnaXN0ZXJzIGRlZmluZWQgaW4gdGhlCj4+Pj4+ IHNwZWNpZmljYXRpb24uCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5n IDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJt YSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+ICAgIERvY3VtZW50 YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwo+Pj4+PiAgICBkcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCj4+Pj4+ICAgIGRyaXZlcnMv Z3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyAgICAgfCAxMTEKPj4+Pj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+Pj4+PiAgICBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCAgICAg ICAgIHwgMTMyCj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+Pj4g ICAgNCBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4+ PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5j Cj4+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIu aAo+Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxw ZXJzLnJzdAo+Pj4+PiBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKPj4+ Pj4gaW5kZXggMDMwNDBhYS4uNzU5Mjc1NiAxMDA2NDQKPj4+Pj4gLS0tIGEvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+Pj4+PiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9k cm0ta21zLWhlbHBlcnMucnN0Cj4+Pj4+IEBAIC0yMTcsNiArMjE3LDE4IEBAIEVESUQgSGVscGVy IEZ1bmN0aW9ucyBSZWZlcmVuY2UKPj4+Pj4gICAgLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1 L2RybS9kcm1fZWRpZC5jCj4+Pj4+ICAgICAgIDpleHBvcnQ6Cj4+Pj4+ICAgICtTQ0RDIEhlbHBl ciBGdW5jdGlvbnMgUmVmZXJlbmNlCj4+Pj4+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Cj4+Pj4+ICsKPj4+Pj4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Nj ZGNfaGVscGVyLmMKPj4+Pj4gKyAgIDpkb2M6IHNjZGMgaGVscGVycwo+Pj4+PiArCj4+Pj4+ICsu LiBrZXJuZWwtZG9jOjogaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPj4+Pj4gKyAgIDpp bnRlcm5hbDoKPj4+Pj4gKwo+Pj4+PiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9k cm1fc2NkY19oZWxwZXIuYwo+Pj4+PiArICAgOmV4cG9ydDoKPj4+Pj4gKwo+Pj4+PiAgICBSZWN0 YW5nbGUgVXRpbGl0aWVzIFJlZmVyZW5jZQo+Pj4+PiAgICA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+Pj4+PiAgICBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4+ Pj4+IGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4+Pj4+IGluZGV4IDkyZGUzOTkuLmFkOTFj ZDkgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPj4+Pj4gQEAgLTMxLDcgKzMxLDggQEAgZHJtLSQo Q09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdmcy5vCj4+Pj4+IGRybV9kZWJ1Z2ZzX2NyYy5v Cj4+Pj4+ICAgIGRybV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hl bHBlci5vCj4+Pj4+IGRybV9wcm9iZV9oZWxwZXIubyBcCj4+Pj4+ICAgICAgICAgICAgZHJtX3Bs YW5lX2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubwo+Pj4+PiBkcm1fYXRvbWljX2hlbHBl ci5vIFwKPj4+Pj4gICAgICAgICAgICBkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVh bF9tb2RlX2hlbHBlci5vIFwKPj4+Pj4gLSAgICAgICAgZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8g ZHJtX21vZGVzZXRfaGVscGVyLm8KPj4+Pj4gKyAgICAgICAgZHJtX3NpbXBsZV9rbXNfaGVscGVy Lm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAo+Pj4+PiArICAgICAgICBkcm1fc2NkY19oZWxwZXIu bwo+Pj4+PiAgICAgIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdB UkUpICs9Cj4+Pj4+IGRybV9lZGlkX2xvYWQubwo+Pj4+PiAgICBkcm1fa21zX2hlbHBlci0kKENP TkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPQo+Pj4+PiBkcm1fZmJfaGVscGVyLm8KPj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+Pj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+Pj4+PiBpbmRleCAwMDAwMDAwLi5mZTBlMTIxCj4+Pj4+IC0tLSAvZGV2L251bGwKPj4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4+Pj4+IEBAIC0wLDAgKzEs MTExIEBACj4+Pj4+ICsvKgo+Pj4+PiArICogQ29weXJpZ2h0IChjKSAyMDE1IE5WSURJQSBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cwo+Pj4+PiByZXNlcnZlZC4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55Cj4+Pj4+ IHBlcnNvbiBvYnRhaW5pbmcgYQo+Pj4+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKPj4+Pj4gKHRoZSAiU29mdHdhcmUiKSwKPj4+ Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZwo+Pj4+PiB3aXRob3V0IGxpbWl0YXRpb24KPj4+Pj4gKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAo+Pj4+PiBkaXN0cmlidXRlLCBzdWIgbGlj ZW5zZSwKPj4+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucwo+Pj4+PiB0byB3aG9tIHRoZQo+Pj4+PiArICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKPj4+Pj4gY29uZGl0 aW9uczoKPj4+Pj4gKyAqCj4+Pj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZQo+Pj4+PiAoaW5jbHVkaW5nIHRoZQo+Pj4+PiArICogbmV4 dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3IKPj4+Pj4gc3Vi c3RhbnRpYWwgcG9ydGlvbnMKPj4+Pj4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPj4+Pj4gKyAqCj4+ Pj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkKPj4+Pj4gS0lORCwgRVhQUkVTUyBPUgo+Pj4+PiArICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+Pj4+PiBNRVJDSEFOVEFC SUxJVFksCj4+Pj4+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O LUlORlJJTkdFTUVOVC4gSU4KPj4+Pj4gTk8gRVZFTlQgU0hBTEwKPj4+Pj4gKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+Pj4+PiBE QU1BR0VTIE9SIE9USEVSCj4+Pj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SCj4+Pj4+IE9USEVSV0lTRSwgQVJJU0lORwo+Pj4+PiArICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCj4+ Pj4+IFVTRSBPUiBPVEhFUgo+Pj4+PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+Pj4+ PiArICovCj4+Pj4+ICsKPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+Pj4+ICsKPj4+ Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+Cj4+Pj4+ICsKPj4+Pj4gKy8qKgo+ Pj4+PiArICogRE9DOiBzY2RjIGhlbHBlcnMKPj4+Pj4gKyAqCj4+Pj4+ICsgKiBTdGF0dXMgYW5k IENvbnRyb2wgRGF0YSBDaGFubmVsIChTQ0RDKSBpcyBhIG1lY2hhbmlzbQo+Pj4+PiBpbnRyb2R1 Y2VkIGJ5IHRoZQo+Pj4+PiArICogSERNSSAyLjAgc3BlY2lmaWNhdGlvbi4gSXQgaXMgYSBwb2lu dC10by1wb2ludCBwcm90b2NvbAo+Pj4+PiB0aGF0IGFsbG93cyB0aGUKPj4+Pj4gKyAqIEhETUkg c291cmNlIGFuZCBIRE1JIHNpbmsgdG8gZXhjaGFuZ2UgZGF0YS4gVGhlIHNhbWUgSTJDCj4+Pj4+ IGludGVyZmFjZSB0aGF0Cj4+Pj4+ICsgKiBpcyB1c2VkIHRvIGFjY2VzcyBFRElEIHNlcnZlcyBh cyB0aGUgdHJhbnNwb3J0IG1lY2hhbmlzbQo+Pj4+PiBmb3IgU0NEQy4KPj4+Pj4gKyAqLwo+Pj4+ PiArCj4+Pj4+ICsjZGVmaW5lIFNDRENfSTJDX1NMQVZFX0FERFJFU1MgMHg1NAo+Pj4+PiArCj4+ Pj4+ICsvKioKPj4+Pj4gKyAqIGRybV9zY2RjX3JlYWQgLSByZWFkIGEgYmxvY2sgb2YgZGF0YSBm cm9tIFNDREMKPj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgo+Pj4+PiArICogQG9m ZnNldDogc3RhcnQgb2Zmc2V0IG9mIGJsb2NrIHRvIHJlYWQKPj4+Pj4gKyAqIEBidWZmZXI6IHJl dHVybiBsb2NhdGlvbiBmb3IgdGhlIGJsb2NrIHRvIHJlYWQKPj4+Pj4gKyAqIEBzaXplOiBzaXpl IG9mIHRoZSBibG9jayB0byByZWFkCj4+Pj4+ICsgKgo+Pj4+PiArICogUmVhZHMgYSBibG9jayBv ZiBkYXRhIGZyb20gU0NEQywgc3RhcnRpbmcgYXQgYSBnaXZlbgo+Pj4+PiBvZmZzZXQuCj4+Pj4+ ICsgKgo+Pj4+PiArICogUmV0dXJuczoKPj4+Pj4gKyAqIFRoZSBudW1iZXIgb2YgYnl0ZXMgcmVh ZCBmcm9tIFNDREMgb3IgYSBuZWdhdGl2ZSBlcnJvcgo+Pj4+PiBjb2RlIG9uIGZhaWx1cmUuCj4+ Pj4+ICsgKi8KPj4+Pj4gK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXIsIHU4Cj4+Pj4+IG9mZnNldCwgdm9pZCAqYnVmZmVyLAo+Pj4+PiArICAgICAgICAg ICAgICBzaXplX3Qgc2l6ZSkKPj4+Pj4gK3sKPj4+Pj4gKyAgICBzdHJ1Y3QgaTJjX21zZyBtc2dz WzJdID0gewo+Pj4+PiArICAgICAgICB7Cj4+Pj4+ICsgICAgICAgICAgICAuYWRkciA9IFNDRENf STJDX1NMQVZFX0FERFJFU1MsCj4+Pj4+ICsgICAgICAgICAgICAuZmxhZ3MgPSAwLAo+Pj4+PiAr ICAgICAgICAgICAgLmxlbiA9IDEsCj4+Pj4gLmxlbiA9IHNpemVvZihvZmZzZXQpID8KPj4+IFRl Y2huaWNhbGx5IGNvcnJlY3QsIGJ1dCB3b3VsZG4ndCB0aGF0IG1lYW4gdGhhdCB3ZSBhcmUKPj4+ IGV4cGVjdGluZyB0byBoYXZlIEkyQyBvZmZzZXRzIHdpdGggbGVuZ3RoIG1vcmUgdGhhbiBvbmUg Ynl0ZSA/Cj4+IEkganVzdCBjb21tZW50ZWQgdGhpcyBiZWNhdXNlIGl0IHdvdWxkIGJlIG1vcmUg Y29uc2lzdGVudCBidXQKPj4gaW5kZWVkIHlvdSBhcmUgY29ycmVjdC4gWW91IGNhbiBkaXNyZWdh cmQgbXkgY29tbWVudCA6KQo+Pgo+PiBCZXN0IHJlZ2FyZHMsCj4+IEpvc2UgTWlndWVsIEFicmV1 Cj4gVGhhbmtzLCBpcyBldmVyeXRoaW5nIGVsc2Ugd29ya3MgZm9yIHlvdSwgd291bGQgeW91IG1p bmQgYSByLWIgPwo+IC0gU2hhc2hhbmsKClN1cmUsIGV2ZXJ5dGhpbmcgbG9va3MgbmljZSBieSBt ZS4gTWF5YmUgd2FpdCBmb3IgbW9yZSBjb21tZW50cy4KCllvdSBjYW4gYWRkOiBSZXZpZXdlZC1i eTogSm9zZSBBYnJldSA8am9hYnJldUBzeW5vcHN5cy5jb20+CgpCZXN0IHJlZ2FyZHMsCkpvc2Ug TWlndWVsIEFicmV1Cgo+Pj4+PiArICAgICAgICAgICAgLmJ1ZiA9ICZvZmZzZXQsCj4+Pj4+ICsg ICAgICAgIH0sIHsKPj4+Pj4gKyAgICAgICAgICAgIC5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQURE UkVTUywKPj4+Pj4gKyAgICAgICAgICAgIC5mbGFncyA9IEkyQ19NX1JELAo+Pj4+PiArICAgICAg ICAgICAgLmxlbiA9IHNpemUsCj4+Pj4+ICsgICAgICAgICAgICAuYnVmID0gYnVmZmVyLAo+Pj4+ PiArICAgICAgICB9Cj4+Pj4+ICsgICAgfTsKPj4+Pj4gKwo+Pj4+PiArICAgIHJldHVybiBpMmNf dHJhbnNmZXIoYWRhcHRlciwgbXNncywgQVJSQVlfU0laRShtc2dzKSk7Cj4+Pj4+ICt9Cj4+Pj4+ ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3JlYWQpOwo+Pj4+PiArCj4+Pj4+ICsvKioKPj4+Pj4g KyAqIGRybV9zY2RjX3dyaXRlIC0gd3JpdGUgYSBibG9jayBvZiBkYXRhIHRvIFNDREMKPj4+Pj4g KyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgo+Pj4+PiArICogQG9mZnNldDogc3RhcnQgb2Zm c2V0IG9mIGJsb2NrIHRvIHdyaXRlCj4+Pj4+ICsgKiBAYnVmZmVyOiBibG9jayBvZiBkYXRhIHRv IHdyaXRlCj4+Pj4+ICsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sgdG8gd3JpdGUKPj4+Pj4g KyAqCj4+Pj4+ICsgKiBXcml0ZXMgYSBibG9jayBvZiBkYXRhIHRvIFNDREMsIHN0YXJ0aW5nIGF0 IGEgZ2l2ZW4KPj4+Pj4gb2Zmc2V0Lgo+Pj4+PiArICoKPj4+Pj4gKyAqIFJldHVybnM6Cj4+Pj4+ ICsgKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gU0NEQyBvciBhIG5lZ2F0aXZlIGVy cm9yCj4+Pj4+IGNvZGUgb24gZmFpbHVyZS4KPj4+Pj4gKyAqLwo+Pj4+PiArc3NpemVfdCBkcm1f c2NkY193cml0ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4Cj4+Pj4+IG9mZnNldCwK Pj4+Pj4gKyAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCj4+ Pj4+ICt7Cj4+Pj4+ICsgICAgc3RydWN0IGkyY19tc2cgbXNnID0gewo+Pj4+PiArICAgICAgICAu YWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCj4+Pj4+ICsgICAgICAgIC5mbGFncyA9IDAs Cj4+Pj4+ICsgICAgICAgIC5sZW4gPSAxICsgc2l6ZSwKPj4+PiAubGVuID0gc2l6ZW9mKG9mZnNl dCkgKyBzaXplID8KPj4+IFNhbWUgYXMgYWJvdmUuCj4+Pj4+ICsgICAgICAgIC5idWYgPSBOVUxM LAo+Pj4+PiArICAgIH07Cj4+Pj4+ICsgICAgdm9pZCAqZGF0YTsKPj4+Pj4gKyAgICBpbnQgZXJy Owo+Pj4+PiArCj4+Pj4+ICsgICAgZGF0YSA9IGttYWxsb2MoMSArIHNpemUsIEdGUF9URU1QT1JB UlkpOwo+Pj4+IFNhbWUgYXMgYWJvdmUuCj4+PiBTbyBvbiAuLi4KPj4+Pj4gKyAgICBpZiAoIWRh dGEpCj4+Pj4+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Pj4+PiArCj4+Pj4+ICsgICAgbXNn LmJ1ZiA9IGRhdGE7Cj4+Pj4+ICsKPj4+Pj4gKyAgICBtZW1jcHkoZGF0YSwgJm9mZnNldCwgc2l6 ZW9mKG9mZnNldCkpOwo+Pj4+PiArICAgIG1lbWNweShkYXRhICsgMSwgYnVmZmVyLCBzaXplKTsK Pj4+PiBTYW1lIGFzIGFib3ZlLgo+Pj4+Cj4+PiBTbyBvbiAuLgo+Pj4+IEJlc3QgcmVnYXJkcywK Pj4+PiBKb3NlIE1pZ3VlbCBBYnJldQo+Pj4gLSBTaGFzaGFuawo+Pj4+PiArCj4+Pj4+ICsgICAg ZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOwo+Pj4+PiArCj4+Pj4+ICsgICAg a2ZyZWUoZGF0YSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICByZXR1cm4gZXJyOwo+Pj4+PiArfQo+Pj4+ PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY193cml0ZSk7Cj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+Pj4+PiBiL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hl bHBlci5oCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+IGluZGV4IDAwMDAwMDAuLjkz YjA3YmMKPj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fc2Nk Y19oZWxwZXIuaAo+Pj4+PiBAQCAtMCwwICsxLDEzMiBAQAo+Pj4+PiArLyoKPj4+Pj4gKyAqIENv cHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMKPj4+Pj4gcmVz ZXJ2ZWQuCj4+Pj4+ICsgKgo+Pj4+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueQo+Pj4+PiBwZXJzb24gb2J0YWluaW5nIGEKPj4+Pj4gKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz Cj4+Pj4+ICh0aGUgIlNvZnR3YXJlIiksCj4+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKPj4+Pj4gd2l0aG91dCBsaW1pdGF0aW9u Cj4+Pj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwKPj4+Pj4gZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCj4+Pj4+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMKPj4+Pj4gdG8gd2hv bSB0aGUKPj4+Pj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nCj4+Pj4+IGNvbmRpdGlvbnM6Cj4+Pj4+ICsgKgo+Pj4+PiArICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKPj4+Pj4g KGluY2x1ZGluZyB0aGUKPj4+Pj4gKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yCj4+Pj4+IHN1YnN0YW50aWFsIHBvcnRpb25zCj4+Pj4+ICsgKiBv ZiB0aGUgU29mdHdhcmUuCj4+Pj4+ICsgKgo+Pj4+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCj4+Pj4+IEtJTkQsIEVYUFJFU1Mg T1IKPj4+Pj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YKPj4+Pj4gTUVSQ0hBTlRBQklMSVRZLAo+Pj4+PiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOCj4+Pj4+IE5PIEVW RU5UIFNIQUxMCj4+Pj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwKPj4+Pj4gREFNQUdFUyBPUiBPVEhFUgo+Pj4+PiArICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgo+Pj4+PiBP VEhFUldJU0UsIEFSSVNJTkcKPj4+Pj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQo+Pj4+PiBVU0UgT1IgT1RIRVIKPj4+Pj4gKyAqIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+Pj4gKyAqLwo+Pj4+PiArCj4+Pj4+ICsjaWZuZGVm IERSTV9TQ0RDX0hFTFBFUl9ICj4+Pj4+ICsjZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9ICj4+Pj4+ ICsKPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIFNDRENfU0lOS19WRVJTSU9OIDB4MDEKPj4+ Pj4gKwo+Pj4+PiArI2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJTSU9OIDB4MDIKPj4+Pj4gKwo+Pj4+ PiArI2RlZmluZSBTQ0RDX1VQREFURV8wIDB4MTAKPj4+Pj4gKyNkZWZpbmUgIFNDRENfUkVBRF9S RVFVRVNUX1RFU1QgKDEgPDwgMikKPj4+Pj4gKyNkZWZpbmUgIFNDRENfQ0VEX1VQREFURSAoMSA8 PCAxKQo+Pj4+PiArI2RlZmluZSAgU0NEQ19TVEFUVVNfVVBEQVRFICgxIDw8IDApCj4+Pj4+ICsK Pj4+Pj4gKyNkZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUg U0NEQ19UTURTX0NPTkZJRyAweDIwCj4+Pj4+ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NL X1JBVElPX0JZXzQwICgxIDw8IDEpCj4+Pj4+ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NL X1JBVElPX0JZXzEwICgwIDw8IDEpCj4+Pj4+ICsjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfRU5B QkxFICgxIDw8IDApCj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgU0NEQ19TQ1JBTUJMRVJfU1RBVFVT IDB4MjEKPj4+Pj4gKyNkZWZpbmUgIFNDRENfU0NSQU1CTElOR19TVEFUVVMgKDEgPDwgMCkKPj4+ Pj4gKwo+Pj4+PiArI2RlZmluZSBTQ0RDX0NPTkZJR18wIDB4MzAKPj4+Pj4gKyNkZWZpbmUgIFND RENfUkVBRF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIFND RENfU1RBVFVTX0ZMQUdTXzAgMHg0MAo+Pj4+PiArI2RlZmluZSAgU0NEQ19DSDJfTE9DSyAoMSA8 IDMpCj4+Pj4+ICsjZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKPj4+Pj4gKyNkZWZpbmUg IFNDRENfQ0gwX0xPQ0sgKDEgPCAxKQo+Pj4+PiArI2RlZmluZSAgU0NEQ19DSF9MT0NLX01BU0sg KFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NIMV9MT0NLIHwKPj4+Pj4gU0NEQ19DSDBfTE9DSykKPj4+ Pj4gKyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8IDApCj4+Pj4+ICsKPj4+Pj4gKyNk ZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMSAweDQxCj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgU0NE Q19FUlJfREVUXzBfTCAweDUwCj4+Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQo+ Pj4+PiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMV9MIDB4NTIKPj4+Pj4gKyNkZWZpbmUgU0NEQ19F UlJfREVUXzFfSCAweDUzCj4+Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAo+Pj4+ PiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9IIDB4NTUKPj4+Pj4gKyNkZWZpbmUgIFNDRENfQ0hB Tk5FTF9WQUxJRCAoMSA8PCA3KQo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF9D SEVDS1NVTSAweDU2Cj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgU0NEQ19URVNUX0NPTkZJR18wIDB4 YzAKPj4+Pj4gKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1QgKDEgPDwgNykKPj4+Pj4g KyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1RfREVMQVkoeCkgKCh4KSAmIDB4N2YpCj4+ Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUkgMHhkMAo+Pj4+ PiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSV9TSVpFIDMKPj4+Pj4gKwo+Pj4+ PiArI2RlZmluZSBTQ0RDX0RFVklDRV9JRCAweGQzCj4+Pj4+ICsjZGVmaW5lIFNDRENfREVWSUNF X0lEX1NJWkUgOAo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JF VklTSU9OIDB4ZGIKPj4+Pj4gKyNkZWZpbmUgIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9O X01BSk9SKHgpICgoKHgpID4+IDQpCj4+Pj4+ICYgMHhmKQo+Pj4+PiArI2RlZmluZSAgU0NEQ19E RVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlOT1IoeCkgKCgoeCkgPj4gMCkKPj4+Pj4gJiAweGYp Cj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUFKT1JfUkVWSVNJ T04gMHhkYwo+Pj4+PiArI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9SRVZJU0lP TiAweGRkCj4+Pj4+ICsKPj4+Pj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUMg MHhkZQo+Pj4+PiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0Cj4+ Pj4+ICsKPj4+Pj4gK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFk YXB0ZXIsIHU4Cj4+Pj4+IG9mZnNldCwgdm9pZCAqYnVmZmVyLAo+Pj4+PiArICAgICAgICAgICAg ICBzaXplX3Qgc2l6ZSk7Cj4+Pj4+ICtzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcHRlciwgdTgKPj4+Pj4gb2Zmc2V0LAo+Pj4+PiArICAgICAgICAgICAgICAg Y29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7Cj4+Pj4+ICsKPj4+Pj4gKy8qKgo+Pj4+ PiArICogZHJtX3NjZGNfcmVhZGIgLSByZWFkIGEgc2luZ2xlIGJ5dGUgZnJvbSBTQ0RDCj4+Pj4+ ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKPj4+Pj4gKyAqIEBvZmZzZXQ6IG9mZnNldCBvZiBy ZWdpc3RlciB0byByZWFkCj4+Pj4+ICsgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhl IHJlZ2lzdGVyIHZhbHVlCj4+Pj4+ICsgKgo+Pj4+PiArICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBm cm9tIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZQo+Pj4+PiB3cmFwcGVyIGFyb3VuZCB0aGUK Pj4+Pj4gKyAqIGRybV9zY2RjX3JlYWQoKSBmdW5jdGlvbi4KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBS ZXR1cm5zOgo+Pj4+PiArICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBv biBmYWlsdXJlLgo+Pj4+PiArICovCj4+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY19y ZWFkYihzdHJ1Y3QgaTJjX2FkYXB0ZXIKPj4+Pj4gKmFkYXB0ZXIsIHU4IG9mZnNldCwKPj4+Pj4g KyAgICAgICAgICAgICAgICAgdTggKnZhbHVlKQo+Pj4+PiArewo+Pj4+PiArICAgIHJldHVybiBk cm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9mZnNldCwgdmFsdWUsCj4+Pj4+IHNpemVvZigqdmFsdWUp KTsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiArLyoqCj4+Pj4+ICsgKiBkcm1fc2NkY193cml0ZWIg LSB3cml0ZSBhIHNpbmdsZSBieXRlIHRvIFNDREMKPj4+Pj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRh cHRlcgo+Pj4+PiArICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKPj4+Pj4g KyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUKPj4+Pj4g KyAqCj4+Pj4+ICsgKiBXcml0ZXMgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDLiBUaGlzIGlzIGEgY29u dmVuaWVuY2UKPj4+Pj4gd3JhcHBlciBhcm91bmQgdGhlCj4+Pj4+ICsgKiBkcm1fc2NkY193cml0 ZSgpIGZ1bmN0aW9uLgo+Pj4+PiArICoKPj4+Pj4gKyAqIFJldHVybnM6Cj4+Pj4+ICsgKiAwIG9u IHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4+Pj4+ICsgKi8K Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3dyaXRlYihzdHJ1Y3QgaTJjX2FkYXB0 ZXIKPj4+Pj4gKmFkYXB0ZXIsIHU4IG9mZnNldCwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgIHU4 IHZhbHVlKQo+Pj4+PiArewo+Pj4+PiArICAgIHJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVy LCBvZmZzZXQsICZ2YWx1ZSwKPj4+Pj4gc2l6ZW9mKHZhbHVlKSk7Cj4+Pj4+ICt9Cj4+Pj4+ICsK Pj4+Pj4gKyNlbmRpZgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK