From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 1/6] drm: Add SCDC helpers Date: Wed, 22 Feb 2017 19:09:37 +0200 Message-ID: <20170222170937.GK31595@intel.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-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: Content-Disposition: inline In-Reply-To: <1487769511-17359-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 Cc: jose.abreu@synopsys.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjIsIDIwMTcgYXQgMDY6NDg6MjZQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1h IHdyb3RlOgo+IEZyb206IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gCj4g U0NEQyBpcyBhIG1lY2hhbmlzbSBkZWZpbmVkIGluIHRoZSBIRE1JIDIuMCBzcGVjaWZpY2F0aW9u IHRoYXQgYWxsb3dzCj4gdGhlIHNvdXJjZSBhbmQgc2luayBkZXZpY2VzIHRvIGNvbW11bmljYXRl Lgo+IAo+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgaGVscGVycyB0byBhY2Nlc3MgdGhlIFNDREMg YW5kIHByb3ZpZGVzIHRoZQo+IHN5bWJvbGljIG5hbWVzIGZvciB0aGUgdmFyaW91cyByZWdpc3Rl cnMgZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KPiAKPiBWMjogUmViYXNlLgo+IFYzOiBB ZGRlZCBSLUIgZnJvbSBKb3NlLgo+IFY0OiBSZWJhc2UKPiAKPiBTaWduZWQtb2ZmLWJ5OiBUaGll cnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5r IFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogSm9zZSBB YnJldSA8am9hYnJldUBzeW5vcHN5cy5jb20+Cj4gLS0tCj4gIERvY3VtZW50YXRpb24vZ3B1L2Ry bS1rbXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIu YyAgICAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9k cm1fc2NkY19oZWxwZXIuaCAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBl ci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAo+ IAo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IGIv RG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+IGluZGV4IDAzMDQwYWEuLjc1 OTI3NTYgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJz dAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKPiBAQCAtMjE3 LDYgKzIxNywxOCBAQCBFRElEIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCj4gIC4uIGtlcm5l bC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+ICAgICA6ZXhwb3J0Ogo+ICAKPiAr U0NEQyBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQo+ICs9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2Rj X2hlbHBlci5jCj4gKyAgIDpkb2M6IHNjZGMgaGVscGVycwo+ICsKPiArLi4ga2VybmVsLWRvYzo6 IGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCj4gKyAgIDppbnRlcm5hbDoKPiArCj4gKy4u IGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKPiArICAgOmV4 cG9ydDoKPiArCj4gIFJlY3RhbmdsZSBVdGlsaXRpZXMgUmVmZXJlbmNlCj4gID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCA5MmRlMzk5Li5hZDkxY2Q5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQo+IEBAIC0zMSw3ICszMSw4IEBAIGRybS0kKENPTkZJR19ERUJVR19G UykgKz0gZHJtX2RlYnVnZnMubyBkcm1fZGVidWdmc19jcmMubwo+ICBkcm1fa21zX2hlbHBlci15 IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8g XAo+ICAJCWRybV9wbGFuZV9oZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0b21p Y19oZWxwZXIubyBcCj4gIAkJZHJtX2ttc19oZWxwZXJfY29tbW9uLm8gZHJtX2RwX2R1YWxfbW9k ZV9oZWxwZXIubyBcCj4gLQkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVs cGVyLm8KPiArCQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIubyBc Cj4gKwkJZHJtX3NjZGNfaGVscGVyLm8KPiAgCj4gIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RS TV9MT0FEX0VESURfRklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQubwo+ICBkcm1fa21zX2hlbHBl ci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm8KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9zY2RjX2hlbHBlci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwLi5mZTBlMTIxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f c2NkY19oZWxwZXIuYwo+IEBAIC0wLDAgKzEsMTExIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAo YykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKPiArICogbmV4dCBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMK PiArICogb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElO R1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zY2RjX2hlbHBlci5oPgo+ICsKPiArLyoqCj4gKyAq IERPQzogc2NkYyBoZWxwZXJzCj4gKyAqCj4gKyAqIFN0YXR1cyBhbmQgQ29udHJvbCBEYXRhIENo YW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgdGhlCj4gKyAqIEhETUkg Mi4wIHNwZWNpZmljYXRpb24uIEl0IGlzIGEgcG9pbnQtdG8tcG9pbnQgcHJvdG9jb2wgdGhhdCBh bGxvd3MgdGhlCj4gKyAqIEhETUkgc291cmNlIGFuZCBIRE1JIHNpbmsgdG8gZXhjaGFuZ2UgZGF0 YS4gVGhlIHNhbWUgSTJDIGludGVyZmFjZSB0aGF0Cj4gKyAqIGlzIHVzZWQgdG8gYWNjZXNzIEVE SUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciBTQ0RDLgo+ICsgKi8KPiAr Cj4gKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAweDU0Cj4gKwo+ICsvKioKPiArICog ZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQwo+ICsgKiBAYWRh cHRlcjogSTJDIGNvbnRyb2xsZXIKPiArICogQG9mZnNldDogc3RhcnQgb2Zmc2V0IG9mIGJsb2Nr IHRvIHJlYWQKPiArICogQGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8g cmVhZAo+ICsgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sgdG8gcmVhZAo+ICsgKgo+ICsgKiBS ZWFkcyBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNl dC4KPiArICoKPiArICogUmV0dXJuczoKPiArICogVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZy b20gU0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3Nz aXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNl dCwgdm9pZCAqYnVmZmVyLAo+ICsJCSAgICAgIHNpemVfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3Qg aTJjX21zZyBtc2dzWzJdID0gewo+ICsJCXsKPiArCQkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9B RERSRVNTLAo+ICsJCQkuZmxhZ3MgPSAwLAo+ICsJCQkubGVuID0gMSwKPiArCQkJLmJ1ZiA9ICZv ZmZzZXQsCj4gKwkJfSwgewo+ICsJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCj4g KwkJCS5mbGFncyA9IEkyQ19NX1JELAo+ICsJCQkubGVuID0gc2l6ZSwKPiArCQkJLmJ1ZiA9IGJ1 ZmZlciwKPiArCQl9Cj4gKwl9Owo+ICsKPiArCXJldHVybiBpMmNfdHJhbnNmZXIoYWRhcHRlciwg bXNncywgQVJSQVlfU0laRShtc2dzKSk7CgpUaGF0IHN0aWxsIGRpc2FncmVlcyB3aXRoIHRoZSBk b2N1bWVudGF0aW9uLiBJIHdvdWxkIHN1Z2dlc3QgZG9pbmcgd2hhdAp0aGUgRFAgZHVhbCBtb2Rl IGhlbHBlciBkb2VzLgoKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3JlYWQpOwo+ICsK PiArLyoqCj4gKyAqIGRybV9zY2RjX3dyaXRlIC0gd3JpdGUgYSBibG9jayBvZiBkYXRhIHRvIFND REMKPiArICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCj4gKyAqIEBvZmZzZXQ6IHN0YXJ0IG9m ZnNldCBvZiBibG9jayB0byB3cml0ZQo+ICsgKiBAYnVmZmVyOiBibG9jayBvZiBkYXRhIHRvIHdy aXRlCj4gKyAqIEBzaXplOiBzaXplIG9mIHRoZSBibG9jayB0byB3cml0ZQo+ICsgKgo+ICsgKiBX cml0ZXMgYSBibG9jayBvZiBkYXRhIHRvIFNDREMsIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gb2Zmc2V0 Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4g dG8gU0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK3Nz aXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZz ZXQsCj4gKwkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCj4gK3sKPiAr CXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsKPiArCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJF U1MsCj4gKwkJLmZsYWdzID0gMCwKPiArCQkubGVuID0gMSArIHNpemUsCj4gKwkJLmJ1ZiA9IE5V TEwsCj4gKwl9Owo+ICsJdm9pZCAqZGF0YTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZGF0YSA9IGtt YWxsb2MoMSArIHNpemUsIEdGUF9URU1QT1JBUlkpOwo+ICsJaWYgKCFkYXRhKQo+ICsJCXJldHVy biAtRU5PTUVNOwo+ICsKPiArCW1zZy5idWYgPSBkYXRhOwo+ICsKPiArCW1lbWNweShkYXRhLCAm b2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSk7Cj4gKwltZW1jcHkoZGF0YSArIDEsIGJ1ZmZlciwgc2l6 ZSk7Cj4gKwo+ICsJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOwo+ICsKPiAr CWtmcmVlKGRhdGEpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChk cm1fc2NkY193cml0ZSk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBl ci5oIGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAuLjkzYjA3YmMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKPiBAQCAtMCwwICsxLDEzMiBAQAo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk Lgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwKPiArICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4gKyAqIG5leHQg cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zCj4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4g KyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIERSTV9T Q0RDX0hFTFBFUl9ICj4gKyNkZWZpbmUgRFJNX1NDRENfSEVMUEVSX0gKPiArCj4gKyNpbmNsdWRl IDxsaW51eC9pMmMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICsjZGVmaW5l IFNDRENfU0lOS19WRVJTSU9OIDB4MDEKPiArCj4gKyNkZWZpbmUgU0NEQ19TT1VSQ0VfVkVSU0lP TiAweDAyCj4gKwo+ICsjZGVmaW5lIFNDRENfVVBEQVRFXzAgMHgxMAo+ICsjZGVmaW5lICBTQ0RD X1JFQURfUkVRVUVTVF9URVNUICgxIDw8IDIpCj4gKyNkZWZpbmUgIFNDRENfQ0VEX1VQREFURSAo MSA8PCAxKQo+ICsjZGVmaW5lICBTQ0RDX1NUQVRVU19VUERBVEUgKDEgPDwgMCkKPiArCj4gKyNk ZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCj4gKwo+ICsjZGVmaW5lIFNDRENfVE1EU19DT05GSUcg MHgyMAo+ICsjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzQwICgxIDw8IDEp Cj4gKyNkZWZpbmUgIFNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfMTAgKDAgPDwgMSkKPiAr I2RlZmluZSAgU0NEQ19TQ1JBTUJMSU5HX0VOQUJMRSAoMSA8PCAwKQo+ICsKPiArI2RlZmluZSBT Q0RDX1NDUkFNQkxFUl9TVEFUVVMgMHgyMQo+ICsjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfU1RB VFVTICgxIDw8IDApCj4gKwo+ICsjZGVmaW5lIFNDRENfQ09ORklHXzAgMHgzMAo+ICsjZGVmaW5l ICBTQ0RDX1JFQURfUkVRVUVTVF9FTkFCTEUgKDEgPDwgMCkKPiArCj4gKyNkZWZpbmUgU0NEQ19T VEFUVVNfRkxBR1NfMCAweDQwCj4gKyNkZWZpbmUgIFNDRENfQ0gyX0xPQ0sgKDEgPCAzKQo+ICsj ZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKPiArI2RlZmluZSAgU0NEQ19DSDBfTE9DSyAo MSA8IDEpCj4gKyNkZWZpbmUgIFNDRENfQ0hfTE9DS19NQVNLIChTQ0RDX0NIMl9MT0NLIHwgU0NE Q19DSDFfTE9DSyB8IFNDRENfQ0gwX0xPQ0spCj4gKyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNU ICgxIDw8IDApCj4gKwo+ICsjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzEgMHg0MQo+ICsKPiAr I2RlZmluZSBTQ0RDX0VSUl9ERVRfMF9MIDB4NTAKPiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMF9I IDB4NTEKPiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMV9MIDB4NTIKPiArI2RlZmluZSBTQ0RDX0VS Ul9ERVRfMV9IIDB4NTMKPiArI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9MIDB4NTQKPiArI2RlZmlu ZSBTQ0RDX0VSUl9ERVRfMl9IIDB4NTUKPiArI2RlZmluZSAgU0NEQ19DSEFOTkVMX1ZBTElEICgx IDw8IDcpCj4gKwo+ICsjZGVmaW5lIFNDRENfRVJSX0RFVF9DSEVDS1NVTSAweDU2Cj4gKwo+ICsj ZGVmaW5lIFNDRENfVEVTVF9DT05GSUdfMCAweGMwCj4gKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFE X1JFUVVFU1QgKDEgPDwgNykKPiArI2RlZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVTVF9ERUxB WSh4KSAoKHgpICYgMHg3ZikKPiArCj4gKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9P VUkgMHhkMAo+ICsjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX0lFRUVfT1VJX1NJWkUgMwo+ICsK PiArI2RlZmluZSBTQ0RDX0RFVklDRV9JRCAweGQzCj4gKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSURf U0laRSA4Cj4gKwo+ICsjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4ZGIK PiArI2RlZmluZSAgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUFKT1IoeCkgKCgoeCkg Pj4gNCkgJiAweGYpCj4gKyNkZWZpbmUgIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01J Tk9SKHgpICgoKHgpID4+IDApICYgMHhmKQoKV2UgZG9uJ3QgdXN1YWxseSBkZWZpbmUgbWFjcm9z IGxpa2UgdGhpcyB0byBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlCnJlZ2lzdGVyLiBJdCdz IGVhc3kgdG8gY29uZnVzZSB0aGVtIHdpdGggdGhlIG5vcm1hbCBtYWNyb3MgZm9yIHNldHRpbmcK Yml0cy4KCj4gKwo+ICsjZGVmaW5lIFNDRENfREVWSUNFX1NPRlRXQVJFX01BSk9SX1JFVklTSU9O IDB4ZGMKPiArI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9SRVZJU0lPTiAweGRk Cj4gKwo+ICsjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX1NQRUNJRklDIDB4ZGUKPiArI2RlZmlu ZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0Cj4gKwo+ICtzc2l6ZV90IGRybV9z Y2RjX3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsIHZvaWQgKmJ1 ZmZlciwKPiArCQkgICAgICBzaXplX3Qgc2l6ZSk7Cj4gK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUo c3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCj4gKwkJICAgICAgIGNvbnN0 IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9zY2RjX3Jl YWRiIC0gcmVhZCBhIHNpbmdsZSBieXRlIGZyb20gU0NEQwo+ICsgKiBAYWRhcHRlcjogSTJDIGFk YXB0ZXIKPiArICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKPiArICogQHZh bHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1ZQo+ICsgKgo+ICsgKiBS ZWFkcyBhIHNpbmdsZSBieXRlIGZyb20gU0NEQy4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBw ZXIgYXJvdW5kIHRoZQo+ICsgKiBkcm1fc2NkY19yZWFkKCkgZnVuY3Rpb24uCj4gKyAqCj4gKyAq IFJldHVybnM6Cj4gKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24g ZmFpbHVyZS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3JlYWRiKHN0cnVj dCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAo+ICsJCQkJIHU4ICp2YWx1ZSkKPiAr ewo+ICsJcmV0dXJuIGRybV9zY2RjX3JlYWQoYWRhcHRlciwgb2Zmc2V0LCB2YWx1ZSwgc2l6ZW9m KCp2YWx1ZSkpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX3NjZGNfd3JpdGViIC0gd3JpdGUg YSBzaW5nbGUgYnl0ZSB0byBTQ0RDCj4gKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgo+ICsgKiBA b2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0ZXIgdG8gcmVhZAo+ICsgKiBAdmFsdWU6IHJldHVybiBs b2NhdGlvbiBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVlCj4gKyAqCj4gKyAqIFdyaXRlcyBhIHNpbmds ZSBieXRlIHRvIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUK PiArICogZHJtX3NjZGNfd3JpdGUoKSBmdW5jdGlvbi4KPiArICoKPiArICogUmV0dXJuczoKPiAr ICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ICsg Ki8KPiArc3RhdGljIGlubGluZSBpbnQgZHJtX3NjZGNfd3JpdGViKHN0cnVjdCBpMmNfYWRhcHRl ciAqYWRhcHRlciwgdTggb2Zmc2V0LAo+ICsJCQkJICB1OCB2YWx1ZSkKPiArewo+ICsJcmV0dXJu IGRybV9zY2RjX3dyaXRlKGFkYXB0ZXIsIG9mZnNldCwgJnZhbHVlLCBzaXplb2YodmFsdWUpKTsK PiArfQo+ICsKPiArI2VuZGlmCj4gLS0gCj4gMS45LjEKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50 ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=