From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 1/6] drm: Add SCDC helpers Date: Thu, 02 Feb 2017 13:25:11 +0200 Message-ID: <87a8a4zvfs.fsf@intel.com> References: <1485953081-7630-1-git-send-email-shashank.sharma@intel.com> <1485953081-7630-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: <1485953081-7630-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 Cc: jose.abreu@synopsys.com, =daniel.vetter@intel.com, Thierry Reding , thierry.reding@gmail.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAwMSBGZWIgMjAxNywgU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50 ZWwuY29tPiB3cm90ZToKPiBGcm9tOiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29t Pgo+Cj4gU0NEQyBpcyBhIG1lY2hhbmlzbSBkZWZpbmVkIGluIHRoZSBIRE1JIDIuMCBzcGVjaWZp Y2F0aW9uIHRoYXQgYWxsb3dzCj4gdGhlIHNvdXJjZSBhbmQgc2luayBkZXZpY2VzIHRvIGNvbW11 bmljYXRlLgo+Cj4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBoZWxwZXJzIHRvIGFjY2VzcyB0aGUg U0NEQyBhbmQgcHJvdmlkZXMgdGhlCj4gc3ltYm9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJl Z2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTog VGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCk9uZSBwcm9jZXNzIG5vdGUsIHlv dSBuZWVkIHRvIGFkZCB5b3VyIG93biBTaWduZWQtb2ZmLWJ5IHVuZGVyIHRoZQpvcmlnaW5hbCBh dXRob3IncyBzaWduLW9mZiwgZXZlbiB3aGVuIHlvdSdyZSBwb3N0aW5nIHRoZW0gdW5jaGFuZ2Vk LgoKU2lnbmVkLW9mZi1ieSBtZWFucyBodHRwczovL2RldmVsb3BlcmNlcnRpZmljYXRlLm9yZy8K CkJSLApKYW5pLgoKCj4gLS0tCj4gIERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5y c3QgfCAgMTIgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgIHwg ICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyAgICAgfCAxMTEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIu aCAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNCBm aWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+Cj4gZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dw dS9kcm0ta21zLWhlbHBlcnMucnN0Cj4gaW5kZXggMDMwNDBhYS4uNzU5Mjc1NiAxMDA2NDQKPiAt LS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cj4gKysrIGIvRG9jdW1l bnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+IEBAIC0yMTcsNiArMjE3LDE4IEBAIEVE SUQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKPiAgLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMv Z3B1L2RybS9kcm1fZWRpZC5jCj4gICAgIDpleHBvcnQ6Cj4gIAo+ICtTQ0RDIEhlbHBlciBGdW5j dGlvbnMgUmVmZXJlbmNlCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiArCj4g Ky4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKPiArICAg OmRvYzogc2NkYyBoZWxwZXJzCj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9kcm0vZHJt X3NjZGNfaGVscGVyLmgKPiArICAgOmludGVybmFsOgo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+ICsgICA6ZXhwb3J0Ogo+ICsKPiAgUmVj dGFuZ2xlIFV0aWxpdGllcyBSZWZlcmVuY2UKPiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDkyZGUzOTkuLmFkOTFjZDkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl Cj4gQEAgLTMxLDcgKzMxLDggQEAgZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdm cy5vIGRybV9kZWJ1Z2ZzX2NyYy5vCj4gIGRybV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVs cGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9wcm9iZV9oZWxwZXIubyBcCj4gIAkJZHJtX3BsYW5l X2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubyBkcm1fYXRvbWljX2hlbHBlci5vIFwKPiAg CQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5vIFwKPiAt CQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIubwo+ICsJCWRybV9z aW1wbGVfa21zX2hlbHBlci5vIGRybV9tb2Rlc2V0X2hlbHBlci5vIFwKPiArCQlkcm1fc2NkY19o ZWxwZXIubwo+ICAKPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0xPQURfRURJRF9GSVJN V0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5vCj4gIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9G QkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9oZWxwZXIubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVs cGVyLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmZlMGUxMjEKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4g QEAgLTAsMCArMSwxMTEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE1IE5WSURJQSBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3ViIGxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsg Kgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZQo+ICsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucwo+ICsgKiBvZiB0aGUgU29m dHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+Cj4gKwo+ICsvKioKPiArICogRE9DOiBzY2RjIGhlbHBl cnMKPiArICoKPiArICogU3RhdHVzIGFuZCBDb250cm9sIERhdGEgQ2hhbm5lbCAoU0NEQykgaXMg YSBtZWNoYW5pc20gaW50cm9kdWNlZCBieSB0aGUKPiArICogSERNSSAyLjAgc3BlY2lmaWNhdGlv bi4gSXQgaXMgYSBwb2ludC10by1wb2ludCBwcm90b2NvbCB0aGF0IGFsbG93cyB0aGUKPiArICog SERNSSBzb3VyY2UgYW5kIEhETUkgc2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUgc2FtZSBJMkMg aW50ZXJmYWNlIHRoYXQKPiArICogaXMgdXNlZCB0byBhY2Nlc3MgRURJRCBzZXJ2ZXMgYXMgdGhl IHRyYW5zcG9ydCBtZWNoYW5pc20gZm9yIFNDREMuCj4gKyAqLwo+ICsKPiArI2RlZmluZSBTQ0RD X0kyQ19TTEFWRV9BRERSRVNTIDB4NTQKPiArCj4gKy8qKgo+ICsgKiBkcm1fc2NkY19yZWFkIC0g cmVhZCBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDCj4gKyAqIEBhZGFwdGVyOiBJMkMgY29udHJv bGxlcgo+ICsgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gcmVhZAo+ICsgKiBA YnVmZmVyOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSBibG9jayB0byByZWFkCj4gKyAqIEBzaXpl OiBzaXplIG9mIHRoZSBibG9jayB0byByZWFkCj4gKyAqCj4gKyAqIFJlYWRzIGEgYmxvY2sgb2Yg ZGF0YSBmcm9tIFNDREMsIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gb2Zmc2V0Lgo+ICsgKgo+ICsgKiBS ZXR1cm5zOgo+ICsgKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSBTQ0RDIG9yIGEgbmVn YXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiArc3NpemVfdCBkcm1fc2NkY19y ZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LCB2b2lkICpidWZmZXIs Cj4gKwkJICAgICAgc2l6ZV90IHNpemUpCj4gK3sKPiArCXN0cnVjdCBpMmNfbXNnIG1zZ3NbMl0g PSB7Cj4gKwkJewo+ICsJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCj4gKwkJCS5m bGFncyA9IDAsCj4gKwkJCS5sZW4gPSAxLAo+ICsJCQkuYnVmID0gJm9mZnNldCwKPiArCQl9LCB7 Cj4gKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKPiArCQkJLmZsYWdzID0gSTJD X01fUkQsCj4gKwkJCS5sZW4gPSBzaXplLAo+ICsJCQkuYnVmID0gYnVmZmVyLAo+ICsJCX0KPiAr CX07Cj4gKwo+ICsJcmV0dXJuIGkyY190cmFuc2ZlcihhZGFwdGVyLCBtc2dzLCBBUlJBWV9TSVpF KG1zZ3MpKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3JlYWQpOwo+ICsKPiArLyoq Cj4gKyAqIGRybV9zY2RjX3dyaXRlIC0gd3JpdGUgYSBibG9jayBvZiBkYXRhIHRvIFNDREMKPiAr ICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCj4gKyAqIEBvZmZzZXQ6IHN0YXJ0IG9mZnNldCBv ZiBibG9jayB0byB3cml0ZQo+ICsgKiBAYnVmZmVyOiBibG9jayBvZiBkYXRhIHRvIHdyaXRlCj4g KyAqIEBzaXplOiBzaXplIG9mIHRoZSBibG9jayB0byB3cml0ZQo+ICsgKgo+ICsgKiBXcml0ZXMg YSBibG9jayBvZiBkYXRhIHRvIFNDREMsIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gb2Zmc2V0Lgo+ICsg Kgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gU0NE QyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3NzaXplX3Qg ZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCj4g KwkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCj4gK3sKPiArCXN0cnVj dCBpMmNfbXNnIG1zZyA9IHsKPiArCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCj4g KwkJLmZsYWdzID0gMCwKPiArCQkubGVuID0gMSArIHNpemUsCj4gKwkJLmJ1ZiA9IE5VTEwsCj4g Kwl9Owo+ICsJdm9pZCAqZGF0YTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZGF0YSA9IGttYWxsb2Mo MSArIHNpemUsIEdGUF9URU1QT1JBUlkpOwo+ICsJaWYgKCFkYXRhKQo+ICsJCXJldHVybiAtRU5P TUVNOwo+ICsKPiArCW1zZy5idWYgPSBkYXRhOwo+ICsKPiArCW1lbWNweShkYXRhLCAmb2Zmc2V0 LCBzaXplb2Yob2Zmc2V0KSk7Cj4gKwltZW1jcHkoZGF0YSArIDEsIGJ1ZmZlciwgc2l6ZSk7Cj4g Kwo+ICsJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOwo+ICsKPiArCWtmcmVl KGRhdGEpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fc2Nk Y193cml0ZSk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oIGIv aW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLjkzYjA3YmMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVkZS9kcm0v ZHJtX3NjZGNfaGVscGVyLmgKPiBAQCAtMCwwICsxLDEzMiBAQAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgKGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsg Kgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4gKyAqIG5leHQgcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zCj4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERF QUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIERSTV9TQ0RDX0hF TFBFUl9ICj4gKyNkZWZpbmUgRFJNX1NDRENfSEVMUEVSX0gKPiArCj4gKyNpbmNsdWRlIDxsaW51 eC9pMmMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICsjZGVmaW5lIFNDRENf U0lOS19WRVJTSU9OIDB4MDEKPiArCj4gKyNkZWZpbmUgU0NEQ19TT1VSQ0VfVkVSU0lPTiAweDAy Cj4gKwo+ICsjZGVmaW5lIFNDRENfVVBEQVRFXzAgMHgxMAo+ICsjZGVmaW5lICBTQ0RDX1JFQURf UkVRVUVTVF9URVNUICgxIDw8IDIpCj4gKyNkZWZpbmUgIFNDRENfQ0VEX1VQREFURSAoMSA8PCAx KQo+ICsjZGVmaW5lICBTQ0RDX1NUQVRVU19VUERBVEUgKDEgPDwgMCkKPiArCj4gKyNkZWZpbmUg U0NEQ19VUERBVEVfMSAweDExCj4gKwo+ICsjZGVmaW5lIFNDRENfVE1EU19DT05GSUcgMHgyMAo+ ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzQwICgxIDw8IDEpCj4gKyNk ZWZpbmUgIFNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfMTAgKDAgPDwgMSkKPiArI2RlZmlu ZSAgU0NEQ19TQ1JBTUJMSU5HX0VOQUJMRSAoMSA8PCAwKQo+ICsKPiArI2RlZmluZSBTQ0RDX1ND UkFNQkxFUl9TVEFUVVMgMHgyMQo+ICsjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfU1RBVFVTICgx IDw8IDApCj4gKwo+ICsjZGVmaW5lIFNDRENfQ09ORklHXzAgMHgzMAo+ICsjZGVmaW5lICBTQ0RD X1JFQURfUkVRVUVTVF9FTkFCTEUgKDEgPDwgMCkKPiArCj4gKyNkZWZpbmUgU0NEQ19TVEFUVVNf RkxBR1NfMCAweDQwCj4gKyNkZWZpbmUgIFNDRENfQ0gyX0xPQ0sgKDEgPCAzKQo+ICsjZGVmaW5l ICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKPiArI2RlZmluZSAgU0NEQ19DSDBfTE9DSyAoMSA8IDEp Cj4gKyNkZWZpbmUgIFNDRENfQ0hfTE9DS19NQVNLIChTQ0RDX0NIMl9MT0NLIHwgU0NEQ19DSDFf TE9DSyB8IFNDRENfQ0gwX0xPQ0spCj4gKyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8 IDApCj4gKwo+ICsjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzEgMHg0MQo+ICsKPiArI2RlZmlu ZSBTQ0RDX0VSUl9ERVRfMF9MIDB4NTAKPiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMF9IIDB4NTEK PiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMV9MIDB4NTIKPiArI2RlZmluZSBTQ0RDX0VSUl9ERVRf MV9IIDB4NTMKPiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9MIDB4NTQKPiArI2RlZmluZSBTQ0RD X0VSUl9ERVRfMl9IIDB4NTUKPiArI2RlZmluZSAgU0NEQ19DSEFOTkVMX1ZBTElEICgxIDw8IDcp Cj4gKwo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF9DSEVDS1NVTSAweDU2Cj4gKwo+ICsjZGVmaW5l IFNDRENfVEVTVF9DT05GSUdfMCAweGMwCj4gKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVF U1QgKDEgPDwgNykKPiArI2RlZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVTVF9ERUxBWSh4KSAo KHgpICYgMHg3ZikKPiArCj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUkgMHhk MAo+ICsjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX0lFRUVfT1VJX1NJWkUgMwo+ICsKPiArI2Rl ZmluZSBTQ0RDX0RFVklDRV9JRCAweGQzCj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSURfU0laRSA4 Cj4gKwo+ICsjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4ZGIKPiArI2Rl ZmluZSAgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUFKT1IoeCkgKCgoeCkgPj4gNCkg JiAweGYpCj4gKyNkZWZpbmUgIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01JTk9SKHgp ICgoKHgpID4+IDApICYgMHhmKQo+ICsKPiArI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9N QUpPUl9SRVZJU0lPTiAweGRjCj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUlOT1Jf UkVWSVNJT04gMHhkZAo+ICsKPiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQyAw eGRlCj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUNfU0laRSAzNAo+ICsKPiAr c3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zm c2V0LCB2b2lkICpidWZmZXIsCj4gKwkJICAgICAgc2l6ZV90IHNpemUpOwo+ICtzc2l6ZV90IGRy bV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAo+ICsJ CSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKTsKPiArCj4gKy8qKgo+ICsg KiBkcm1fc2NkY19yZWFkYiAtIHJlYWQgYSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMKPiArICogQGFk YXB0ZXI6IEkyQyBhZGFwdGVyCj4gKyAqIEBvZmZzZXQ6IG9mZnNldCBvZiByZWdpc3RlciB0byBy ZWFkCj4gKyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUK PiArICoKPiArICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMuIFRoaXMgaXMgYSBjb252 ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKPiArICogZHJtX3NjZGNfcmVhZCgpIGZ1bmN0aW9u Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGludCBkcm1fc2Nk Y19yZWFkYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKPiArCQkJCSB1 OCAqdmFsdWUpCj4gK3sKPiArCXJldHVybiBkcm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9mZnNldCwg dmFsdWUsIHNpemVvZigqdmFsdWUpKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9zY2RjX3dy aXRlYiAtIHdyaXRlIGEgc2luZ2xlIGJ5dGUgdG8gU0NEQwo+ICsgKiBAYWRhcHRlcjogSTJDIGFk YXB0ZXIKPiArICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKPiArICogQHZh bHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1ZQo+ICsgKgo+ICsgKiBX cml0ZXMgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDLiBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBl ciBhcm91bmQgdGhlCj4gKyAqIGRybV9zY2RjX3dyaXRlKCkgZnVuY3Rpb24uCj4gKyAqCj4gKyAq IFJldHVybnM6Cj4gKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24g ZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3dyaXRlYihzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKPiArCQkJCSAgdTggdmFsdWUpCj4g K3sKPiArCXJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZzZXQsICZ2YWx1ZSwgc2l6 ZW9mKHZhbHVlKSk7Cj4gK30KPiArCj4gKyNlbmRpZgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBP cGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK