From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/2] drm: Add SCDC helpers Date: Fri, 25 Sep 2015 14:46:16 +0300 Message-ID: <20150925114616.GQ26517@intel.com> References: <1443113495-32491-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id B2A0E6F040 for ; Fri, 25 Sep 2015 04:46:25 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1443113495-32491-1-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBTZXAgMjQsIDIwMTUgYXQgMDY6NTE6MzRQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBT Q0RDIGlzIGEgbWVjaGFuaXNtIGRlZmluZWQgaW4gdGhlIEhETUkgMi4wIHNwZWNpZmljYXRpb24g dGhhdCBhbGxvd3MKPiB0aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUu Cj4gCj4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBoZWxwZXJzIHRvIGFjY2VzcyB0aGUgU0NEQyBh bmQgcHJvdmlkZXMgdGhlCj4gc3ltYm9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVy cyBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFRoaWVy cnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gLS0tCj4gIERvY3VtZW50YXRpb24vRG9j Qm9vay9kcm0udG1wbCAgICB8ICAgNiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAg ICAgICAgfCAgIDQgKysKPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgIHwgICAx ICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIHwgMTExICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgg ICAgIHwgMTI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDUgZmls ZXMgY2hhbmdlZCwgMjQ2IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVk ZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9E b2NCb29rL2RybS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4gaW5kZXgg YjRjYzZiNzdkMzgyLi4zMDQ1YmU0OTIxMjUgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9E b2NCb29rL2RybS50bXBsCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4g QEAgLTI0MTAsNiArMjQxMCwxMiBAQCB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gICFFZHJpdmVycy9ncHUvZHJtL2RybV9oZGNwX2hlbHBlci5jCj4gICAgICA8 L3NlY3QyPgo+ICAgICAgPHNlY3QyPgo+ICsgICAgICA8dGl0bGU+U0NEQyBIZWxwZXIgRnVuY3Rp b25zIFJlZmVyZW5jZTwvdGl0bGU+Cj4gKyFQZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBl ci5jIHNjZGMgaGVscGVycwo+ICshSWluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4gKyFF ZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gKyAgICA8L3NlY3QyPgo+ICsgICAg PHNlY3QyPgo+ICAgICAgICA8dGl0bGU+RURJRCBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZTwv dGl0bGU+Cj4gICFFZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiAgICAgIDwvc2VjdDI+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tj b25maWcKPiBpbmRleCBmYjNhODE1YjUzZjYuLjVkYzIzMjc4YmUyNyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4g QEAgLTY0LDYgKzY0LDEwIEBAIGNvbmZpZyBEUk1fSERDUAo+ICAJYm9vbAo+ICAJZGVwZW5kcyBv biBEUk1fS01TX0hFTFBFUgo+ICAKPiArY29uZmlnIERSTV9TQ0RDCj4gKwlib29sCj4gKwlkZXBl bmRzIG9uIERSTV9LTVNfSEVMUEVSCj4gKwo+ICBjb25maWcgRFJNX0xPQURfRURJRF9GSVJNV0FS RQo+ICAJYm9vbCAiQWxsb3cgdG8gc3BlY2lmeSBhbiBFRElEIGRhdGEgc2V0IGluc3RlYWQgb2Yg cHJvYmluZyBmb3IgaXQiCj4gIAlkZXBlbmRzIG9uIERSTV9LTVNfSEVMUEVSCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ IGluZGV4IGM0YTAyYTE4MTExNS4uZTIyYzNkZmY0YWU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0y Myw2ICsyMyw3IEBAIGRybS0kKENPTkZJR19PRikgKz0gZHJtX29mLm8KPiAgZHJtX2ttc19oZWxw ZXIteSA6PSBkcm1fY3J0Y19oZWxwZXIubyBkcm1fZHBfaGVscGVyLm8gZHJtX3Byb2JlX2hlbHBl ci5vIFwKPiAgCQlkcm1fcGxhbmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vIGRybV9h dG9taWNfaGVscGVyLm8KPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0hEQ1ApICs9IGRy bV9oZGNwX2hlbHBlci5vCj4gK2RybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9TQ0RDKSArPSBk cm1fc2NkY19oZWxwZXIubwo+ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElE X0ZJUk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8KPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdf RFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vCj4gIGRybV9rbXNfaGVscGVy LSQoQ09ORklHX0RSTV9LTVNfQ01BX0hFTFBFUikgKz0gZHJtX2ZiX2NtYV9oZWxwZXIubwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMC4uZGJjOWM3NzBmNWI0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwo+IEBAIC0wLDAgKzEsMTExIEBACj4gKy8qCj4gKyAq IENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4g KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAo+ICsgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPiArICogbmV4 dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMKPiArICogb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zY2RjX2hlbHBlci5oPgo+ICsK PiArLyoqCj4gKyAqIERPQzogc2NkYyBoZWxwZXJzCj4gKyAqCj4gKyAqIFN0YXR1cyBhbmQgQ29u dHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgdGhl Cj4gKyAqIEhETUkgMi4wIHNwZWNpZmljYXRpb24uIEl0IGlzIGEgcG9pbnQtdG8tcG9pbnQgcHJv dG9jb2wgdGhhdCBhbGxvd3MgdGhlCj4gKyAqIEhETUkgc291cmNlIGFuZCBIRE1JIHNpbmsgdG8g ZXhjaGFuZ2UgZGF0YS4gVGhlIHNhbWUgSTJDIGludGVyZmFjZSB0aGF0Cj4gKyAqIGlzIHVzZWQg dG8gYWNjZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciBTQ0RD Lgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAweDU0Cj4gKwo+ ICsvKioKPiArICogZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGZyb20gU0NE Qwo+ICsgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKPiArICogQG9mZnNldDogc3RhcnQgb2Zm c2V0IG9mIGJsb2NrIHRvIHJlYWQKPiArICogQGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0 aGUgYmxvY2sgdG8gcmVhZAo+ICsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sgdG8gcmVhZAo+ ICsgKgo+ICsgKiBSZWFkcyBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBh IGdpdmVuIG9mZnNldC4KPiArICoKPiArICogUmV0dXJuczoKPiArICogVGhlIG51bWJlciBvZiBi eXRlcyByZWFkIGZyb20gU0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4K PiArICovCj4gK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVmZmVyLAo+ICsJCSAgICAgIHNpemVfdCBzaXplKQo+ICt7 Cj4gKwlzdHJ1Y3QgaTJjX21zZyBtc2dzWzJdID0gewo+ICsJCXsKPiArCQkJLmFkZHIgPSBTQ0RD X0kyQ19TTEFWRV9BRERSRVNTLAo+ICsJCQkuZmxhZ3MgPSAwLAo+ICsJCQkubGVuID0gMSwKPiAr CQkJLmJ1ZiA9ICZvZmZzZXQsCj4gKwkJfSwgewo+ICsJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZF X0FERFJFU1MsCj4gKwkJCS5mbGFncyA9IEkyQ19NX1JELAo+ICsJCQkubGVuID0gc2l6ZSwKPiAr CQkJLmJ1ZiA9IGJ1ZmZlciwKPiArCQl9Cj4gKwl9Owo+ICsKPiArCXJldHVybiBpMmNfdHJhbnNm ZXIoYWRhcHRlciwgbXNncywgQVJSQVlfU0laRShtc2dzKSk7Cj4gK30KPiArRVhQT1JUX1NZTUJP TChkcm1fc2NkY19yZWFkKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRl IGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDCj4gKyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgo+ ICsgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gd3JpdGUKPiArICogQGJ1ZmZl cjogYmxvY2sgb2YgZGF0YSB0byB3cml0ZQo+ICsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sg dG8gd3JpdGUKPiArICoKPiArICogV3JpdGVzIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDLCBzdGFy dGluZyBhdCBhIGdpdmVuIG9mZnNldC4KPiArICoKPiArICogUmV0dXJuczoKPiArICogVGhlIG51 bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIFNDREMgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9u IGZhaWx1cmUuCj4gKyAqLwo+ICtzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRh cHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAo+ICsJCSAgICAgICBjb25zdCB2b2lkICpidWZmZXIs IHNpemVfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7Cj4gKwkJLmFkZHIg PSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAo+ICsJCS5mbGFncyA9IDAsCj4gKwkJLmxlbiA9IDEg KyBzaXplLAo+ICsJCS5idWYgPSBOVUxMLAo+ICsJfTsKPiArCXZvaWQgKmRhdGE7Cj4gKwlpbnQg ZXJyOwo+ICsKPiArCWRhdGEgPSBrbWFsbG9jKDEgKyBzaXplLCBHRlBfS0VSTkVMKTsKPiArCWlm ICghZGF0YSkKPiArCQlyZXR1cm4gLUVOT01FTTsKCkkgd2FzIHdvbmRlcmluZyBpZiB3ZSBjb3Vs ZCB1c2UgdGhlIE5PU1RBUlQgZmxhZyB0byBkbyB0aGlzIHdpdGhvdXQgdGhlCmV4dHJhIG1hbGxv Yytjb3B5LiBCdXQgSSBkb24ndCBzdXBwb3NlIHdlIGNvdWxkbid0IHJlbHkgb24gTk9TVEFSVCBi ZWluZwpzdXBwb3J0ZWQgYnkgdGhlIGFsZ28sIHNvIHdlJ2QgbmVlZCB0byBjaGVjayBmb3IgaXQu CgpBbnl3YXksIGp1c3QgYSByYW5kb20gdGhvdWdodCwgcHJvYmFibHkgbm90IHdvcnRoIHRoZSBo YXNzbGUuCgo+ICsKPiArCW1zZy5idWYgPSBkYXRhOwo+ICsKPiArCW1lbWNweShkYXRhLCAmb2Zm c2V0LCBzaXplb2Yob2Zmc2V0KSk7Cj4gKwltZW1jcHkoZGF0YSArIDEsIGJ1ZmZlciwgc2l6ZSk7 Cj4gKwo+ICsJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOwo+ICsKPiArCWtm cmVlKGRhdGEpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1f c2NkY193cml0ZSk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5o IGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMzY0Y2YyYWE5YjI1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4gQEAgLTAsMCArMSwxMjQgQEAKPiArLyoK PiArICogQ29weXJpZ2h0IChjKSAyMDE1IE5WSURJQSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCj4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQo+ICsg KiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucwo+ICsgKiBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwK PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2lmbmRl ZiBEUk1fU0NEQ19IRUxQRVJfSAo+ICsjZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9ICj4gKwo+ICsj aW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiAr I2RlZmluZSBTQ0RDX1NJTktfVkVSU0lPTiAweDAxCj4gKyNkZWZpbmUgU0NEQ19TT1VSQ0VfVkVS U0lPTiAweDAyCj4gKwo+ICsjZGVmaW5lIFNDRENfVVBEQVRFXzAgMHgxMAo+ICsjZGVmaW5lIFND RENfUkVBRF9SRVFVRVNUX1RFU1QgKDEgPDwgMikKPiArI2RlZmluZSBTQ0RDX0NFRF9VUERBVEUg KDEgPDwgMSkKPiArI2RlZmluZSBTQ0RDX1NUQVRVU19VUERBVEUgKDEgPDwgMCkKCkhvdyBhYm91 dCBpbmRlbnRpbmcgdGhlIGJpdCBkZWZpbmVzIGEgYml0LCBvciB1c2Ugc29tZSBvdGhlciB3YXkg dG8gbWFrZQp0aGVtIHN0YW5kIG91dCBmcm9tIHRoZSBvZmZzZXQgZGVmaW5lcyBzbGlnaHRseT8g V2UgdXNlIHRoZSBpbmRlbnQgdHJpY2sKaW4gaTkxNV9yZWcuaCwgYW5kIEkndmUgY29tZSB0byBs aWtlIGl0LgoKVW5mb3J0dW50ZWx5IEkgZG9uJ3QgaGF2ZSB0aGUgSERNSSAyLjAgc3BlYyBvbiBt ZSAoaG9wZWZ1bGx5IEkgY2FuIGRpZwppdCB1cCBmcm9tIHNvbWV3aGVyZSBzb29uaXNoKSBzbyBj YW4ndCByZXZpZXcgdGhlIG1hZ2ljIG51bWJlcnMgYW5kCndoYXRub3QuIEJ1dCBmcm9tIGEgdGVj aG5pY2FsIHBvaW50IG9mIHZpZXcgdGhlIHBhdGNoZXMgbG9vayBnb29kIHRvIG1lLgoKPiArI2Rl ZmluZSBTQ0RDX1VQREFURV8xIDB4MTEKPiArCj4gKyNkZWZpbmUgU0NEQ19UTURTX0NPTkZJRyAw eDIwCj4gKyNkZWZpbmUgU0NEQ19UTURTX0JJVF9DTE9DS19SQVRJT19CWV80MCAoMSA8PCAxKQo+ ICsjZGVmaW5lIFNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfMTAgKDAgPDwgMSkKPiArI2Rl ZmluZSBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8IDApCj4gKyNkZWZpbmUgU0NEQ19TQ1JB TUJMRVJfU1RBVFVTIDB4MjEKPiArI2RlZmluZSBTQ0RDX1NDUkFNQkxJTkdfU1RBVFVTICgxIDw8 IDApCj4gKwo+ICsjZGVmaW5lIFNDRENfQ09ORklHXzAgMHgzMAo+ICsjZGVmaW5lIFNDRENfUkVB RF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQo+ICsKPiArI2RlZmluZSBTQ0RDX1NUQVRVU19GTEFH U18wIDB4NDAKPiArI2RlZmluZSBTQ0RDX0NIMl9MT0NLICgxIDwgMykKPiArI2RlZmluZSBTQ0RD X0NIMV9MT0NLICgxIDwgMikKPiArI2RlZmluZSBTQ0RDX0NIMF9MT0NLICgxIDwgMSkKPiArI2Rl ZmluZSBTQ0RDX0NIX0xPQ0tfTUFTSyAoU0NEQ19DSDJfTE9DSyB8IFNDRENfQ0gxX0xPQ0sgfCBT Q0RDX0NIMF9MT0NLKQo+ICsjZGVmaW5lIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8IDApCj4gKyNk ZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMSAweDQxCj4gKwo+ICsjZGVmaW5lIFNDRENfRVJSX0RF VF8wX0wgMHg1MAo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQo+ICsjZGVmaW5lIFND RENfRVJSX0RFVF8xX0wgMHg1Mgo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0ggMHg1Mwo+ICsj ZGVmaW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF8yX0gg MHg1NQo+ICsjZGVmaW5lIFNDRENfQ0hBTk5FTF9WQUxJRCAoMSA8PCA3KQo+ICsjZGVmaW5lIFND RENfRVJSX0RFVF9DSEVDS1NVTSAweDU2Cj4gKwo+ICsjZGVmaW5lIFNDRENfVEVTVF9DT05GSUdf MCAweGMwCj4gKyNkZWZpbmUgU0NEQ19URVNUX1JFQURfUkVRVUVTVCAoMSA8PCA3KQo+ICsjZGVm aW5lIFNDRENfVEVTVF9SRUFEX1JFUVVFU1RfREVMQVkoeCkgKCh4KSAmIDB4N2YpCj4gKwo+ICsj ZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX0lFRUVfT1VJIDB4ZDAKPiArI2RlZmluZSBTQ0RDX01B TlVGQUNUVVJFUl9JRUVFX09VSV9TSVpFIDMKPiArI2RlZmluZSBTQ0RDX0RFVklDRV9JRCAweGQz Cj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSURfU0laRSA4Cj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0Vf SEFSRFdBUkVfUkVWSVNJT04gMHhkYgo+ICsjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JF VklTSU9OX01BSk9SKHgpICgoKHgpID4+IDQpICYgMHhmKQo+ICsjZGVmaW5lIFNDRENfREVWSUNF X0hBUkRXQVJFX1JFVklTSU9OX01JTk9SKHgpICgoKHgpID4+IDApICYgMHhmKQo+ICsjZGVmaW5l IFNDRENfREVWSUNFX1NPRlRXQVJFX01BSk9SX1JFVklTSU9OIDB4ZGMKPiArI2RlZmluZSBTQ0RD X0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9SRVZJU0lPTiAweGRkCj4gKwo+ICsjZGVmaW5lIFNDRENf TUFOVUZBQ1RVUkVSX1NQRUNJRklDIDB4ZGUKPiArI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9T UEVDSUZJQ19TSVpFIDM0Cj4gKwo+ICtzc2l6ZV90IGRybV9zY2RjX3JlYWQoc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwKPiArCQkgICAgICBzaXpl X3Qgc2l6ZSk7Cj4gK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICph ZGFwdGVyLCB1OCBvZmZzZXQsCj4gKwkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90 IHNpemUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9zY2RjX3JlYWRiIC0gcmVhZCBhIHNpbmdsZSBi eXRlIGZyb20gU0NEQwo+ICsgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKPiArICogQG9mZnNldDog b2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKPiArICogQHZhbHVlOiByZXR1cm4gbG9jYXRpb24g Zm9yIHRoZSByZWdpc3RlciB2YWx1ZQo+ICsgKgo+ICsgKiBSZWFkcyBhIHNpbmdsZSBieXRlIGZy b20gU0NEQy4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZQo+ICsgKiBk cm1fc2NkY19yZWFkKCkgZnVuY3Rpb24uCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIDAgb24g c3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3N0 YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3JlYWRiKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRl ciwgdTggb2Zmc2V0LAo+ICsJCQkJIHU4ICp2YWx1ZSkKPiArewo+ICsJcmV0dXJuIGRybV9zY2Rj X3JlYWQoYWRhcHRlciwgb2Zmc2V0LCB2YWx1ZSwgc2l6ZW9mKCp2YWx1ZSkpOwo+ICt9Cj4gKwo+ ICsvKioKPiArICogZHJtX3NjZGNfd3JpdGViIC0gd3JpdGUgYSBzaW5nbGUgYnl0ZSB0byBTQ0RD Cj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgo+ICsgKiBAb2Zmc2V0OiBvZmZzZXQgb2YgcmVn aXN0ZXIgdG8gcmVhZAo+ICsgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHJlZ2lz dGVyIHZhbHVlCj4gKyAqCj4gKyAqIFdyaXRlcyBhIHNpbmdsZSBieXRlIHRvIFNDREMuIFRoaXMg aXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKPiArICogZHJtX3NjZGNfd3JpdGUo KSBmdW5jdGlvbi4KPiArICoKPiArICogUmV0dXJuczoKPiArICogMCBvbiBzdWNjZXNzIG9yIGEg bmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBp bnQgZHJtX3NjZGNfd3JpdGViKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0 LAo+ICsJCQkJICB1OCB2YWx1ZSkKPiArewo+ICsJcmV0dXJuIGRybV9zY2RjX3dyaXRlKGFkYXB0 ZXIsIG9mZnNldCwgJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKPiArfQo+ICsKPiArI2VuZGlmCj4g LS0gCj4gMi41LjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK