From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jose Abreu Subject: Re: [PATCH v2 1/6] drm: Add SCDC helpers Date: Tue, 7 Feb 2017 10:54:03 +0000 Message-ID: <5f5041ce-206e-fe62-6dd3-68f9f41c0f2b@synopsys.com> References: <1486389566-28613-1-git-send-email-shashank.sharma@intel.com> <1486389566-28613-2-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1486389566-28613-2-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Shashank Sharma , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com, treding@nvidia.com Cc: jose.abreu@synopsys.com, daniel.vetter@intel.com List-Id: dri-devel@lists.freedesktop.org SGkgU2hhc2hhbmssCgoKU29ycnkgZm9yIHRoZSBsYXRlIHJldmlldy4KCgpPbiAwNi0wMi0yMDE3 IDEzOjU5LCBTaGFzaGFuayBTaGFybWEgd3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRy ZWRpbmdAbnZpZGlhLmNvbT4KPgo+IFNDREMgaXMgYSBtZWNoYW5pc20gZGVmaW5lZCBpbiB0aGUg SERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwo+IHRoZSBzb3VyY2UgYW5kIHNpbmsg ZGV2aWNlcyB0byBjb21tdW5pY2F0ZS4KPgo+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgaGVscGVy cyB0byBhY2Nlc3MgdGhlIFNDREMgYW5kIHByb3ZpZGVzIHRoZQo+IHN5bWJvbGljIG5hbWVzIGZv ciB0aGUgdmFyaW91cyByZWdpc3RlcnMgZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KPgo+ IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gU2ln bmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+ IC0tLQo+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IHwgIDEyICsrKysK PiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMyArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMgICAgIHwgMTExICsrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmggICAgICAgICB8IDEz MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwg MjU3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPgo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxw ZXJzLnJzdAo+IGluZGV4IDAzMDQwYWEuLjc1OTI3NTYgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRh dGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2Ry bS1rbXMtaGVscGVycy5yc3QKPiBAQCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhlbHBlciBGdW5j dGlvbnMgUmVmZXJlbmNlCj4gIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2Vk aWQuYwo+ICAgICA6ZXhwb3J0Ogo+ICAKPiArU0NEQyBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5j ZQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICsuLiBrZXJuZWwtZG9j OjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gKyAgIDpkb2M6IHNjZGMgaGVs cGVycwo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5o Cj4gKyAgIDppbnRlcm5hbDoKPiArCj4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0v ZHJtX3NjZGNfaGVscGVyLmMKPiArICAgOmV4cG9ydDoKPiArCj4gIFJlY3RhbmdsZSBVdGlsaXRp ZXMgUmVmZXJlbmNlCj4gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUKPiBpbmRleCA5MmRlMzk5Li5hZDkxY2Q5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0zMSw3ICsz MSw4IEBAIGRybS0kKENPTkZJR19ERUJVR19GUykgKz0gZHJtX2RlYnVnZnMubyBkcm1fZGVidWdm c19jcmMubwo+ICBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9o ZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAo+ICAJCWRybV9wbGFuZV9oZWxwZXIubyBkcm1f ZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0b21pY19oZWxwZXIubyBcCj4gIAkJZHJtX2ttc19oZWxw ZXJfY29tbW9uLm8gZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIubyBcCj4gLQkJZHJtX3NpbXBsZV9r bXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8KPiArCQlkcm1fc2ltcGxlX2ttc19oZWxw ZXIubyBkcm1fbW9kZXNldF9oZWxwZXIubyBcCj4gKwkJZHJtX3NjZGNfaGVscGVyLm8KPiAgCj4g IGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUpICs9IGRybV9l ZGlkX2xvYWQubwo+ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9O KSArPSBkcm1fZmJfaGVscGVyLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9z Y2RjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5mZTBlMTIxCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+IEBAIC0wLDAgKzEsMTEx IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUKPiArICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKPiArICogb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVW RU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zY2Rj X2hlbHBlci5oPgo+ICsKPiArLyoqCj4gKyAqIERPQzogc2NkYyBoZWxwZXJzCj4gKyAqCj4gKyAq IFN0YXR1cyBhbmQgQ29udHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGlu dHJvZHVjZWQgYnkgdGhlCj4gKyAqIEhETUkgMi4wIHNwZWNpZmljYXRpb24uIEl0IGlzIGEgcG9p bnQtdG8tcG9pbnQgcHJvdG9jb2wgdGhhdCBhbGxvd3MgdGhlCj4gKyAqIEhETUkgc291cmNlIGFu ZCBIRE1JIHNpbmsgdG8gZXhjaGFuZ2UgZGF0YS4gVGhlIHNhbWUgSTJDIGludGVyZmFjZSB0aGF0 Cj4gKyAqIGlzIHVzZWQgdG8gYWNjZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVj aGFuaXNtIGZvciBTQ0RDLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQURE UkVTUyAweDU0Cj4gKwo+ICsvKioKPiArICogZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBv ZiBkYXRhIGZyb20gU0NEQwo+ICsgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKPiArICogQG9m ZnNldDogc3RhcnQgb2Zmc2V0IG9mIGJsb2NrIHRvIHJlYWQKPiArICogQGJ1ZmZlcjogcmV0dXJu IGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8gcmVhZAo+ICsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUg YmxvY2sgdG8gcmVhZAo+ICsgKgo+ICsgKiBSZWFkcyBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RD LCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KPiArICoKPiArICogUmV0dXJuczoKPiArICog VGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gU0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVmZmVyLAo+ICsJCSAgICAgIHNp emVfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3QgaTJjX21zZyBtc2dzWzJdID0gewo+ICsJCXsKPiAr CQkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAo+ICsJCQkuZmxhZ3MgPSAwLAo+ICsJ CQkubGVuID0gMSwKCi5sZW4gPSBzaXplb2Yob2Zmc2V0KSA/Cgo+ICsJCQkuYnVmID0gJm9mZnNl dCwKPiArCQl9LCB7Cj4gKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKPiArCQkJ LmZsYWdzID0gSTJDX01fUkQsCj4gKwkJCS5sZW4gPSBzaXplLAo+ICsJCQkuYnVmID0gYnVmZmVy LAo+ICsJCX0KPiArCX07Cj4gKwo+ICsJcmV0dXJuIGkyY190cmFuc2ZlcihhZGFwdGVyLCBtc2dz LCBBUlJBWV9TSVpFKG1zZ3MpKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3JlYWQp Owo+ICsKPiArLyoqCj4gKyAqIGRybV9zY2RjX3dyaXRlIC0gd3JpdGUgYSBibG9jayBvZiBkYXRh IHRvIFNDREMKPiArICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCj4gKyAqIEBvZmZzZXQ6IHN0 YXJ0IG9mZnNldCBvZiBibG9jayB0byB3cml0ZQo+ICsgKiBAYnVmZmVyOiBibG9jayBvZiBkYXRh IHRvIHdyaXRlCj4gKyAqIEBzaXplOiBzaXplIG9mIHRoZSBibG9jayB0byB3cml0ZQo+ICsgKgo+ ICsgKiBXcml0ZXMgYSBibG9jayBvZiBkYXRhIHRvIFNDREMsIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4g b2Zmc2V0Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdy aXR0ZW4gdG8gU0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICov Cj4gK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1 OCBvZmZzZXQsCj4gKwkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCj4g K3sKPiArCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsKPiArCQkuYWRkciA9IFNDRENfSTJDX1NMQVZF X0FERFJFU1MsCj4gKwkJLmZsYWdzID0gMCwKPiArCQkubGVuID0gMSArIHNpemUsCgoubGVuID0g c2l6ZW9mKG9mZnNldCkgKyBzaXplID8KCj4gKwkJLmJ1ZiA9IE5VTEwsCj4gKwl9Owo+ICsJdm9p ZCAqZGF0YTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZGF0YSA9IGttYWxsb2MoMSArIHNpemUsIEdG UF9URU1QT1JBUlkpOwoKU2FtZSBhcyBhYm92ZS4KCj4gKwlpZiAoIWRhdGEpCj4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gKwo+ICsJbXNnLmJ1ZiA9IGRhdGE7Cj4gKwo+ICsJbWVtY3B5KGRhdGEsICZv ZmZzZXQsIHNpemVvZihvZmZzZXQpKTsKPiArCW1lbWNweShkYXRhICsgMSwgYnVmZmVyLCBzaXpl KTsKClNhbWUgYXMgYWJvdmUuCgoKQmVzdCByZWdhcmRzLApKb3NlIE1pZ3VlbCBBYnJldQoKPiAr Cj4gKwllcnIgPSBpMmNfdHJhbnNmZXIoYWRhcHRlciwgJm1zZywgMSk7Cj4gKwo+ICsJa2ZyZWUo ZGF0YSk7Cj4gKwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2Rj X3dyaXRlKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmggYi9p bmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uOTNiMDdiYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2RybS9k cm1fc2NkY19oZWxwZXIuaAo+IEBAIC0wLDAgKzEsMTMyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdo dCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAq Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPiArICogbmV4dCBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMKPiArICogb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVB TElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgRFJNX1NDRENfSEVM UEVSX0gKPiArI2RlZmluZSBEUk1fU0NEQ19IRUxQRVJfSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4 L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiArCj4gKyNkZWZpbmUgU0NEQ19T SU5LX1ZFUlNJT04gMHgwMQo+ICsKPiArI2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJTSU9OIDB4MDIK PiArCj4gKyNkZWZpbmUgU0NEQ19VUERBVEVfMCAweDEwCj4gKyNkZWZpbmUgIFNDRENfUkVBRF9S RVFVRVNUX1RFU1QgKDEgPDwgMikKPiArI2RlZmluZSAgU0NEQ19DRURfVVBEQVRFICgxIDw8IDEp Cj4gKyNkZWZpbmUgIFNDRENfU1RBVFVTX1VQREFURSAoMSA8PCAwKQo+ICsKPiArI2RlZmluZSBT Q0RDX1VQREFURV8xIDB4MTEKPiArCj4gKyNkZWZpbmUgU0NEQ19UTURTX0NPTkZJRyAweDIwCj4g KyNkZWZpbmUgIFNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfNDAgKDEgPDwgMSkKPiArI2Rl ZmluZSAgU0NEQ19UTURTX0JJVF9DTE9DS19SQVRJT19CWV8xMCAoMCA8PCAxKQo+ICsjZGVmaW5l ICBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8IDApCj4gKwo+ICsjZGVmaW5lIFNDRENfU0NS QU1CTEVSX1NUQVRVUyAweDIxCj4gKyNkZWZpbmUgIFNDRENfU0NSQU1CTElOR19TVEFUVVMgKDEg PDwgMCkKPiArCj4gKyNkZWZpbmUgU0NEQ19DT05GSUdfMCAweDMwCj4gKyNkZWZpbmUgIFNDRENf UkVBRF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQo+ICsKPiArI2RlZmluZSBTQ0RDX1NUQVRVU19G TEFHU18wIDB4NDAKPiArI2RlZmluZSAgU0NEQ19DSDJfTE9DSyAoMSA8IDMpCj4gKyNkZWZpbmUg IFNDRENfQ0gxX0xPQ0sgKDEgPCAyKQo+ICsjZGVmaW5lICBTQ0RDX0NIMF9MT0NLICgxIDwgMSkK PiArI2RlZmluZSAgU0NEQ19DSF9MT0NLX01BU0sgKFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NIMV9M T0NLIHwgU0NEQ19DSDBfTE9DSykKPiArI2RlZmluZSAgU0NEQ19DTE9DS19ERVRFQ1QgKDEgPDwg MCkKPiArCj4gKyNkZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMSAweDQxCj4gKwo+ICsjZGVmaW5l IFNDRENfRVJSX0RFVF8wX0wgMHg1MAo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQo+ ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0wgMHg1Mgo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8x X0ggMHg1Mwo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAo+ICsjZGVmaW5lIFNDRENf RVJSX0RFVF8yX0ggMHg1NQo+ICsjZGVmaW5lICBTQ0RDX0NIQU5ORUxfVkFMSUQgKDEgPDwgNykK PiArCj4gKyNkZWZpbmUgU0NEQ19FUlJfREVUX0NIRUNLU1VNIDB4NTYKPiArCj4gKyNkZWZpbmUg U0NEQ19URVNUX0NPTkZJR18wIDB4YzAKPiArI2RlZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVT VCAoMSA8PCA3KQo+ICsjZGVmaW5lICBTQ0RDX1RFU1RfUkVBRF9SRVFVRVNUX0RFTEFZKHgpICgo eCkgJiAweDdmKQo+ICsKPiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSSAweGQw Cj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUlfU0laRSAzCj4gKwo+ICsjZGVm aW5lIFNDRENfREVWSUNFX0lEIDB4ZDMKPiArI2RlZmluZSBTQ0RDX0RFVklDRV9JRF9TSVpFIDgK PiArCj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT04gMHhkYgo+ICsjZGVm aW5lICBTQ0RDX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTl9NQUpPUih4KSAoKCh4KSA+PiA0KSAm IDB4ZikKPiArI2RlZmluZSAgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlOT1IoeCkg KCgoeCkgPj4gMCkgJiAweGYpCj4gKwo+ICsjZGVmaW5lIFNDRENfREVWSUNFX1NPRlRXQVJFX01B Sk9SX1JFVklTSU9OIDB4ZGMKPiArI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9S RVZJU0lPTiAweGRkCj4gKwo+ICsjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX1NQRUNJRklDIDB4 ZGUKPiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0Cj4gKwo+ICtz c2l6ZV90IGRybV9zY2RjX3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZz ZXQsIHZvaWQgKmJ1ZmZlciwKPiArCQkgICAgICBzaXplX3Qgc2l6ZSk7Cj4gK3NzaXplX3QgZHJt X3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCj4gKwkJ ICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+ICsKPiArLyoqCj4gKyAq IGRybV9zY2RjX3JlYWRiIC0gcmVhZCBhIHNpbmdsZSBieXRlIGZyb20gU0NEQwo+ICsgKiBAYWRh cHRlcjogSTJDIGFkYXB0ZXIKPiArICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJl YWQKPiArICogQHZhbHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1ZQo+ ICsgKgo+ICsgKiBSZWFkcyBhIHNpbmdsZSBieXRlIGZyb20gU0NEQy4gVGhpcyBpcyBhIGNvbnZl bmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZQo+ICsgKiBkcm1fc2NkY19yZWFkKCkgZnVuY3Rpb24u Cj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2Rj X3JlYWRiKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAo+ICsJCQkJIHU4 ICp2YWx1ZSkKPiArewo+ICsJcmV0dXJuIGRybV9zY2RjX3JlYWQoYWRhcHRlciwgb2Zmc2V0LCB2 YWx1ZSwgc2l6ZW9mKCp2YWx1ZSkpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX3NjZGNfd3Jp dGViIC0gd3JpdGUgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDCj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRh cHRlcgo+ICsgKiBAb2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0ZXIgdG8gcmVhZAo+ICsgKiBAdmFs dWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVlCj4gKyAqCj4gKyAqIFdy aXRlcyBhIHNpbmdsZSBieXRlIHRvIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVy IGFyb3VuZCB0aGUKPiArICogZHJtX3NjZGNfd3JpdGUoKSBmdW5jdGlvbi4KPiArICoKPiArICog UmV0dXJuczoKPiArICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBm YWlsdXJlLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBpbnQgZHJtX3NjZGNfd3JpdGViKHN0cnVj dCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAo+ICsJCQkJICB1OCB2YWx1ZSkKPiAr ewo+ICsJcmV0dXJuIGRybV9zY2RjX3dyaXRlKGFkYXB0ZXIsIG9mZnNldCwgJnZhbHVlLCBzaXpl b2YodmFsdWUpKTsKPiArfQo+ICsKPiArI2VuZGlmCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK