From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v2 1/6] drm: Add SCDC helpers Date: Tue, 7 Feb 2017 21:39:50 +0530 Message-ID: <24a57255-ac2d-3be0-215a-2e6214961bbd@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5f5041ce-206e-fe62-6dd3-68f9f41c0f2b@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 VGhhbmtzIGZvciB0aGUgcmV2aWV3IEpvc2UsIG15IGNvbW1lbnRzIGlubGluZS4KCgpSZWdhcmRz CgpTaGFzaGFuawoKCk9uIDIvNy8yMDE3IDQ6MjQgUE0sIEpvc2UgQWJyZXUgd3JvdGU6Cj4gSGkg U2hhc2hhbmssCj4KPgo+IFNvcnJ5IGZvciB0aGUgbGF0ZSByZXZpZXcuCj4KPgo+IE9uIDA2LTAy LTIwMTcgMTM6NTksIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPj4gRnJvbTogVGhpZXJyeSBSZWRp bmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPj4KPj4gU0NEQyBpcyBhIG1lY2hhbmlzbSBkZWZpbmVk IGluIHRoZSBIRE1JIDIuMCBzcGVjaWZpY2F0aW9uIHRoYXQgYWxsb3dzCj4+IHRoZSBzb3VyY2Ug YW5kIHNpbmsgZGV2aWNlcyB0byBjb21tdW5pY2F0ZS4KPj4KPj4gVGhpcyBjb21taXQgaW50cm9k dWNlcyBoZWxwZXJzIHRvIGFjY2VzcyB0aGUgU0NEQyBhbmQgcHJvdmlkZXMgdGhlCj4+IHN5bWJv bGljIG5hbWVzIGZvciB0aGUgdmFyaW91cyByZWdpc3RlcnMgZGVmaW5lZCBpbiB0aGUgc3BlY2lm aWNhdGlvbi4KPj4KPj4gU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZp ZGlhLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFy bWFAaW50ZWwuY29tPgo+PiAtLS0KPj4gICBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBl cnMucnN0IHwgIDEyICsrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAg ICAgIHwgICAzICstCj4+ICAgZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jICAgICB8 IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgaW5jbHVkZS9kcm0vZHJtX3Nj ZGNfaGVscGVyLmggICAgICAgICB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVy LmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgK Pj4KPj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3Qg Yi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cj4+IGluZGV4IDAzMDQwYWEu Ljc1OTI3NTYgMTAwNjQ0Cj4+IC0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVy cy5yc3QKPj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+PiBA QCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCj4+ICAg Li4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4+ICAgICAgOmV4cG9y dDoKPj4gICAKPj4gK1NDREMgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKPj4gKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KPj4gKwo+PiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMv Z3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+PiArICAgOmRvYzogc2NkYyBoZWxwZXJzCj4+ICsK Pj4gKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+PiArICAg OmludGVybmFsOgo+PiArCj4+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9z Y2RjX2hlbHBlci5jCj4+ICsgICA6ZXhwb3J0Ogo+PiArCj4+ICAgUmVjdGFuZ2xlIFV0aWxpdGll cyBSZWZlcmVuY2UKPj4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+PiAgIAo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01h a2VmaWxlCj4+IGluZGV4IDkyZGUzOTkuLmFkOTFjZDkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPj4gQEAg LTMxLDcgKzMxLDggQEAgZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdmcy5vIGRy bV9kZWJ1Z2ZzX2NyYy5vCj4+ICAgZHJtX2ttc19oZWxwZXIteSA6PSBkcm1fY3J0Y19oZWxwZXIu byBkcm1fZHBfaGVscGVyLm8gZHJtX3Byb2JlX2hlbHBlci5vIFwKPj4gICAJCWRybV9wbGFuZV9o ZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0b21pY19oZWxwZXIubyBcCj4+ICAg CQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5vIFwKPj4g LQkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8KPj4gKwkJZHJt X3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAo+PiArCQlkcm1fc2Nk Y19oZWxwZXIubwo+PiAgIAo+PiAgIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VE SURfRklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQubwo+PiAgIGRybV9rbXNfaGVscGVyLSQoQ09O RklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9oZWxwZXIubwo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9zY2RjX2hlbHBlci5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAu LmZlMGUxMjEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Nj ZGNfaGVscGVyLmMKPj4gQEAgLTAsMCArMSwxMTEgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICoK Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+PiArICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Cj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4+ICsgKiBuZXh0 IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucwo+PiArICogb2YgdGhlIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAo+ PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSCj4+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4+ICsgKi8KPj4gKwo+PiAr I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4gKwo+PiArI2luY2x1ZGUgPGRybS9kcm1fc2NkY19o ZWxwZXIuaD4KPj4gKwo+PiArLyoqCj4+ICsgKiBET0M6IHNjZGMgaGVscGVycwo+PiArICoKPj4g KyAqIFN0YXR1cyBhbmQgQ29udHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNt IGludHJvZHVjZWQgYnkgdGhlCj4+ICsgKiBIRE1JIDIuMCBzcGVjaWZpY2F0aW9uLiBJdCBpcyBh IHBvaW50LXRvLXBvaW50IHByb3RvY29sIHRoYXQgYWxsb3dzIHRoZQo+PiArICogSERNSSBzb3Vy Y2UgYW5kIEhETUkgc2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUgc2FtZSBJMkMgaW50ZXJmYWNl IHRoYXQKPj4gKyAqIGlzIHVzZWQgdG8gYWNjZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3Bv cnQgbWVjaGFuaXNtIGZvciBTQ0RDLgo+PiArICovCj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19JMkNf U0xBVkVfQUREUkVTUyAweDU0Cj4+ICsKPj4gKy8qKgo+PiArICogZHJtX3NjZGNfcmVhZCAtIHJl YWQgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQwo+PiArICogQGFkYXB0ZXI6IEkyQyBjb250cm9s bGVyCj4+ICsgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gcmVhZAo+PiArICog QGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8gcmVhZAo+PiArICogQHNp emU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHJlYWQKPj4gKyAqCj4+ICsgKiBSZWFkcyBhIGJsb2Nr IG9mIGRhdGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KPj4gKyAqCj4+ ICsgKiBSZXR1cm5zOgo+PiArICogVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gU0NEQyBv ciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPj4gKyAqLwo+PiArc3NpemVfdCBk cm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LCB2b2lk ICpidWZmZXIsCj4+ICsJCSAgICAgIHNpemVfdCBzaXplKQo+PiArewo+PiArCXN0cnVjdCBpMmNf bXNnIG1zZ3NbMl0gPSB7Cj4+ICsJCXsKPj4gKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQURE UkVTUywKPj4gKwkJCS5mbGFncyA9IDAsCj4+ICsJCQkubGVuID0gMSwKPiAubGVuID0gc2l6ZW9m KG9mZnNldCkgPwpUZWNobmljYWxseSBjb3JyZWN0LCBidXQgd291bGRuJ3QgdGhhdCBtZWFuIHRo YXQgd2UgYXJlIGV4cGVjdGluZyB0byAKaGF2ZSBJMkMgb2Zmc2V0cyB3aXRoIGxlbmd0aCBtb3Jl IHRoYW4gb25lIGJ5dGUgPwo+Cj4+ICsJCQkuYnVmID0gJm9mZnNldCwKPj4gKwkJfSwgewo+PiAr CQkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAo+PiArCQkJLmZsYWdzID0gSTJDX01f UkQsCj4+ICsJCQkubGVuID0gc2l6ZSwKPj4gKwkJCS5idWYgPSBidWZmZXIsCj4+ICsJCX0KPj4g Kwl9Owo+PiArCj4+ICsJcmV0dXJuIGkyY190cmFuc2ZlcihhZGFwdGVyLCBtc2dzLCBBUlJBWV9T SVpFKG1zZ3MpKTsKPj4gK30KPj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfcmVhZCk7Cj4+ICsK Pj4gKy8qKgo+PiArICogZHJtX3NjZGNfd3JpdGUgLSB3cml0ZSBhIGJsb2NrIG9mIGRhdGEgdG8g U0NEQwo+PiArICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCj4+ICsgKiBAb2Zmc2V0OiBzdGFy dCBvZmZzZXQgb2YgYmxvY2sgdG8gd3JpdGUKPj4gKyAqIEBidWZmZXI6IGJsb2NrIG9mIGRhdGEg dG8gd3JpdGUKPj4gKyAqIEBzaXplOiBzaXplIG9mIHRoZSBibG9jayB0byB3cml0ZQo+PiArICoK Pj4gKyAqIFdyaXRlcyBhIGJsb2NrIG9mIGRhdGEgdG8gU0NEQywgc3RhcnRpbmcgYXQgYSBnaXZl biBvZmZzZXQuCj4+ICsgKgo+PiArICogUmV0dXJuczoKPj4gKyAqIFRoZSBudW1iZXIgb2YgYnl0 ZXMgd3JpdHRlbiB0byBTQ0RDIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ PiArICovCj4+ICtzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciwgdTggb2Zmc2V0LAo+PiArCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qg c2l6ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7Cj4+ICsJCS5hZGRyID0gU0NE Q19JMkNfU0xBVkVfQUREUkVTUywKPj4gKwkJLmZsYWdzID0gMCwKPj4gKwkJLmxlbiA9IDEgKyBz aXplLAo+IC5sZW4gPSBzaXplb2Yob2Zmc2V0KSArIHNpemUgPwpTYW1lIGFzIGFib3ZlLgo+Cj4+ ICsJCS5idWYgPSBOVUxMLAo+PiArCX07Cj4+ICsJdm9pZCAqZGF0YTsKPj4gKwlpbnQgZXJyOwo+ PiArCj4+ICsJZGF0YSA9IGttYWxsb2MoMSArIHNpemUsIEdGUF9URU1QT1JBUlkpOwo+IFNhbWUg YXMgYWJvdmUuClNvIG9uIC4uLgo+PiArCWlmICghZGF0YSkKPj4gKwkJcmV0dXJuIC1FTk9NRU07 Cj4+ICsKPj4gKwltc2cuYnVmID0gZGF0YTsKPj4gKwo+PiArCW1lbWNweShkYXRhLCAmb2Zmc2V0 LCBzaXplb2Yob2Zmc2V0KSk7Cj4+ICsJbWVtY3B5KGRhdGEgKyAxLCBidWZmZXIsIHNpemUpOwo+ IFNhbWUgYXMgYWJvdmUuCj4KU28gb24gLi4KPiBCZXN0IHJlZ2FyZHMsCj4gSm9zZSBNaWd1ZWwg QWJyZXUKLSBTaGFzaGFuawo+PiArCj4+ICsJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZt c2csIDEpOwo+PiArCj4+ICsJa2ZyZWUoZGF0YSk7Cj4+ICsKPj4gKwlyZXR1cm4gZXJyOwo+PiAr fQo+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NkY193cml0ZSk7Cj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5o Cj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjkzYjA3YmMKPj4gLS0t IC9kZXYvbnVsbAo+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+PiBAQCAt MCwwICsxLDEzMiBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKPj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4+ICsg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3ViIGxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPj4gKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCj4+ICsgKiBv ZiB0aGUgU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPj4gKyAqIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIERSTV9TQ0RDX0hF TFBFUl9ICj4+ICsjZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9ICj4+ICsKPj4gKyNpbmNsdWRlIDxs aW51eC9pMmMuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+PiArCj4+ICsjZGVmaW5l IFNDRENfU0lOS19WRVJTSU9OIDB4MDEKPj4gKwo+PiArI2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJT SU9OIDB4MDIKPj4gKwo+PiArI2RlZmluZSBTQ0RDX1VQREFURV8wIDB4MTAKPj4gKyNkZWZpbmUg IFNDRENfUkVBRF9SRVFVRVNUX1RFU1QgKDEgPDwgMikKPj4gKyNkZWZpbmUgIFNDRENfQ0VEX1VQ REFURSAoMSA8PCAxKQo+PiArI2RlZmluZSAgU0NEQ19TVEFUVVNfVVBEQVRFICgxIDw8IDApCj4+ ICsKPj4gKyNkZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19U TURTX0NPTkZJRyAweDIwCj4+ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZ XzQwICgxIDw8IDEpCj4+ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzEw ICgwIDw8IDEpCj4+ICsjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8IDApCj4+ ICsKPj4gKyNkZWZpbmUgU0NEQ19TQ1JBTUJMRVJfU1RBVFVTIDB4MjEKPj4gKyNkZWZpbmUgIFND RENfU0NSQU1CTElOR19TVEFUVVMgKDEgPDwgMCkKPj4gKwo+PiArI2RlZmluZSBTQ0RDX0NPTkZJ R18wIDB4MzAKPj4gKyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQo+ PiArCj4+ICsjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzAgMHg0MAo+PiArI2RlZmluZSAgU0NE Q19DSDJfTE9DSyAoMSA8IDMpCj4+ICsjZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKPj4g KyNkZWZpbmUgIFNDRENfQ0gwX0xPQ0sgKDEgPCAxKQo+PiArI2RlZmluZSAgU0NEQ19DSF9MT0NL X01BU0sgKFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NIMV9MT0NLIHwgU0NEQ19DSDBfTE9DSykKPj4g KyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8IDApCj4+ICsKPj4gKyNkZWZpbmUgU0NE Q19TVEFUVVNfRkxBR1NfMSAweDQxCj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19FUlJfREVUXzBfTCAw eDUwCj4+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQo+PiArI2RlZmluZSBTQ0RDX0VS Ul9ERVRfMV9MIDB4NTIKPj4gKyNkZWZpbmUgU0NEQ19FUlJfREVUXzFfSCAweDUzCj4+ICsjZGVm aW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAo+PiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9IIDB4 NTUKPj4gKyNkZWZpbmUgIFNDRENfQ0hBTk5FTF9WQUxJRCAoMSA8PCA3KQo+PiArCj4+ICsjZGVm aW5lIFNDRENfRVJSX0RFVF9DSEVDS1NVTSAweDU2Cj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19URVNU X0NPTkZJR18wIDB4YzAKPj4gKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1QgKDEgPDwg NykKPj4gKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1RfREVMQVkoeCkgKCh4KSAmIDB4 N2YpCj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUkgMHhkMAo+PiAr I2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSV9TSVpFIDMKPj4gKwo+PiArI2RlZmlu ZSBTQ0RDX0RFVklDRV9JRCAweGQzCj4+ICsjZGVmaW5lIFNDRENfREVWSUNFX0lEX1NJWkUgOAo+ PiArCj4+ICsjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4ZGIKPj4gKyNk ZWZpbmUgIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01BSk9SKHgpICgoKHgpID4+IDQp ICYgMHhmKQo+PiArI2RlZmluZSAgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlOT1Io eCkgKCgoeCkgPj4gMCkgJiAweGYpCj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdB UkVfTUFKT1JfUkVWSVNJT04gMHhkYwo+PiArI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9N SU5PUl9SRVZJU0lPTiAweGRkCj4+ICsKPj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BF Q0lGSUMgMHhkZQo+PiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0 Cj4+ICsKPj4gK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVmZmVyLAo+PiArCQkgICAgICBzaXplX3Qgc2l6ZSk7Cj4+ ICtzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTgg b2Zmc2V0LAo+PiArCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7Cj4+ ICsKPj4gKy8qKgo+PiArICogZHJtX3NjZGNfcmVhZGIgLSByZWFkIGEgc2luZ2xlIGJ5dGUgZnJv bSBTQ0RDCj4+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKPj4gKyAqIEBvZmZzZXQ6IG9mZnNl dCBvZiByZWdpc3RlciB0byByZWFkCj4+ICsgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3Ig dGhlIHJlZ2lzdGVyIHZhbHVlCj4+ICsgKgo+PiArICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBmcm9t IFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKPj4gKyAqIGRy bV9zY2RjX3JlYWQoKSBmdW5jdGlvbi4KPj4gKyAqCj4+ICsgKiBSZXR1cm5zOgo+PiArICogMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+PiArICovCj4+ ICtzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY19yZWFkYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFk YXB0ZXIsIHU4IG9mZnNldCwKPj4gKwkJCQkgdTggKnZhbHVlKQo+PiArewo+PiArCXJldHVybiBk cm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9mZnNldCwgdmFsdWUsIHNpemVvZigqdmFsdWUpKTsKPj4g K30KPj4gKwo+PiArLyoqCj4+ICsgKiBkcm1fc2NkY193cml0ZWIgLSB3cml0ZSBhIHNpbmdsZSBi eXRlIHRvIFNDREMKPj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgo+PiArICogQG9mZnNldDog b2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKPj4gKyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9u IGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUKPj4gKyAqCj4+ICsgKiBXcml0ZXMgYSBzaW5nbGUgYnl0 ZSB0byBTQ0RDLiBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlCj4+ICsg KiBkcm1fc2NkY193cml0ZSgpIGZ1bmN0aW9uLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsg KiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4+ICsg Ki8KPj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3dyaXRlYihzdHJ1Y3QgaTJjX2FkYXB0 ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKPj4gKwkJCQkgIHU4IHZhbHVlKQo+PiArewo+PiArCXJl dHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZzZXQsICZ2YWx1ZSwgc2l6ZW9mKHZhbHVl KSk7Cj4+ICt9Cj4+ICsKPj4gKyNlbmRpZgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==