From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v3 1/6] drm: Add SCDC helpers Date: Fri, 10 Feb 2017 21:59:23 +0530 Message-ID: <1486744168-7857-2-git-send-email-shashank.sharma@intel.com> References: <1486744168-7857-1-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: <1486744168-7857-1-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, jose.abreu@synopsys.com, jani.nikula@linux.intel.com Cc: daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKVjI6IFJlYmFzZS4KVjM6IEFkZGVkIFItQiBmcm9tIEpvc2UuClNpZ25lZC1v ZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+ClNpZ25lZC1vZmYtYnk6 IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IEpvc2UgQWJyZXUgPGpvYWJyZXVAc3lub3BzeXMuY29tPgotLS0KIERvY3VtZW50YXRpb24vZ3B1 L2RybS1rbXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl ICAgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5j ICAgICB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1f c2NkY19oZWxwZXIuaCAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAoKZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9u L2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CmluZGV4IDAzMDQwYWEuLjc1OTI3NTYgMTAwNjQ0Ci0t LSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKKysrIGIvRG9jdW1lbnRh dGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdApAQCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhl bHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2RybV9lZGlkLmMKICAgIDpleHBvcnQ6CiAKK1NDREMgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVu Y2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYworICAgOmRvYzogc2NkYyBoZWxwZXJzCisK Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAorICAgOmludGVy bmFsOgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5j CisgICA6ZXhwb3J0OgorCiBSZWN0YW5nbGUgVXRpbGl0aWVzIFJlZmVyZW5jZQogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDkyZGUzOTkuLmFkOTFjZDkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUKQEAgLTMxLDcgKzMxLDggQEAgZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1f ZGVidWdmcy5vIGRybV9kZWJ1Z2ZzX2NyYy5vCiBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRj X2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAogCQlkcm1fcGxh bmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vIGRybV9hdG9taWNfaGVscGVyLm8gXAog CQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5vIFwKLQkJ ZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8KKwkJZHJtX3NpbXBs ZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAorCQlkcm1fc2NkY19oZWxwZXIu bwogCiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBk cm1fZWRpZF9sb2FkLm8KIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJ T04pICs9IGRybV9mYl9oZWxwZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9z Y2RjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMGUxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2Yg dGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VN RU5ULiBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxw ZXIuaD4KKworLyoqCisgKiBET0M6IHNjZGMgaGVscGVycworICoKKyAqIFN0YXR1cyBhbmQgQ29u dHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgdGhl CisgKiBIRE1JIDIuMCBzcGVjaWZpY2F0aW9uLiBJdCBpcyBhIHBvaW50LXRvLXBvaW50IHByb3Rv Y29sIHRoYXQgYWxsb3dzIHRoZQorICogSERNSSBzb3VyY2UgYW5kIEhETUkgc2luayB0byBleGNo YW5nZSBkYXRhLiBUaGUgc2FtZSBJMkMgaW50ZXJmYWNlIHRoYXQKKyAqIGlzIHVzZWQgdG8gYWNj ZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciBTQ0RDLgorICov CisKKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAweDU0CisKKy8qKgorICogZHJtX3Nj ZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQworICogQGFkYXB0ZXI6IEky QyBjb250cm9sbGVyCisgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gcmVhZAor ICogQGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8gcmVhZAorICogQHNp emU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHJlYWQKKyAqCisgKiBSZWFkcyBhIGJsb2NrIG9mIGRh dGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAqCisgKiBSZXR1cm5z OgorICogVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gU0NEQyBvciBhIG5lZ2F0aXZlIGVy cm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBp MmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LCB2b2lkICpidWZmZXIsCisJCSAgICAgIHNp emVfdCBzaXplKQoreworCXN0cnVjdCBpMmNfbXNnIG1zZ3NbMl0gPSB7CisJCXsKKwkJCS5hZGRy ID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKKwkJCS5mbGFncyA9IDAsCisJCQkubGVuID0gMSwK KwkJCS5idWYgPSAmb2Zmc2V0LAorCQl9LCB7CisJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FE RFJFU1MsCisJCQkuZmxhZ3MgPSBJMkNfTV9SRCwKKwkJCS5sZW4gPSBzaXplLAorCQkJLmJ1ZiA9 IGJ1ZmZlciwKKwkJfQorCX07CisKKwlyZXR1cm4gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsIG1zZ3Ms IEFSUkFZX1NJWkUobXNncykpOworfQorRVhQT1JUX1NZTUJPTChkcm1fc2NkY19yZWFkKTsKKwor LyoqCisgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRlIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDCisg KiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKKyAqIEBvZmZzZXQ6IHN0YXJ0IG9mZnNldCBvZiBi bG9jayB0byB3cml0ZQorICogQGJ1ZmZlcjogYmxvY2sgb2YgZGF0YSB0byB3cml0ZQorICogQHNp emU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHdyaXRlCisgKgorICogV3JpdGVzIGEgYmxvY2sgb2Yg ZGF0YSB0byBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAqCisgKiBSZXR1cm5z OgorICogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIFNDREMgb3IgYSBuZWdhdGl2ZSBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0 IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCSAgICAgICBjb25zdCB2b2lkICpi dWZmZXIsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsKKwkJLmFkZHIg PSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAorCQkuZmxhZ3MgPSAwLAorCQkubGVuID0gMSArIHNp emUsCisJCS5idWYgPSBOVUxMLAorCX07CisJdm9pZCAqZGF0YTsKKwlpbnQgZXJyOworCisJZGF0 YSA9IGttYWxsb2MoMSArIHNpemUsIEdGUF9URU1QT1JBUlkpOworCWlmICghZGF0YSkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwltc2cuYnVmID0gZGF0YTsKKworCW1lbWNweShkYXRhLCAmb2Zmc2V0 LCBzaXplb2Yob2Zmc2V0KSk7CisJbWVtY3B5KGRhdGEgKyAxLCBidWZmZXIsIHNpemUpOworCisJ ZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOworCisJa2ZyZWUoZGF0YSk7CisK KwlyZXR1cm4gZXJyOworfQorRVhQT1JUX1NZTUJPTChkcm1fc2NkY193cml0ZSk7CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zY2Rj X2hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYjA3YmMKLS0t IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaApAQCAtMCwwICsx LDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCisgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIERSTV9TQ0RDX0hFTFBFUl9ICisjZGVmaW5lIERSTV9T Q0RDX0hFTFBFUl9ICisKKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgorCisjZGVmaW5lIFNDRENfU0lOS19WRVJTSU9OIDB4MDEKKworI2RlZmluZSBTQ0RD X1NPVVJDRV9WRVJTSU9OIDB4MDIKKworI2RlZmluZSBTQ0RDX1VQREFURV8wIDB4MTAKKyNkZWZp bmUgIFNDRENfUkVBRF9SRVFVRVNUX1RFU1QgKDEgPDwgMikKKyNkZWZpbmUgIFNDRENfQ0VEX1VQ REFURSAoMSA8PCAxKQorI2RlZmluZSAgU0NEQ19TVEFUVVNfVVBEQVRFICgxIDw8IDApCisKKyNk ZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCisKKyNkZWZpbmUgU0NEQ19UTURTX0NPTkZJRyAweDIw CisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzQwICgxIDw8IDEpCisjZGVm aW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzEwICgwIDw8IDEpCisjZGVmaW5lICBT Q0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19TQ1JBTUJMRVJf U1RBVFVTIDB4MjEKKyNkZWZpbmUgIFNDRENfU0NSQU1CTElOR19TVEFUVVMgKDEgPDwgMCkKKwor I2RlZmluZSBTQ0RDX0NPTkZJR18wIDB4MzAKKyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX0VO QUJMRSAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzAgMHg0MAorI2RlZmlu ZSAgU0NEQ19DSDJfTE9DSyAoMSA8IDMpCisjZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikK KyNkZWZpbmUgIFNDRENfQ0gwX0xPQ0sgKDEgPCAxKQorI2RlZmluZSAgU0NEQ19DSF9MT0NLX01B U0sgKFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NIMV9MT0NLIHwgU0NEQ19DSDBfTE9DSykKKyNkZWZp bmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19TVEFUVVNfRkxB R1NfMSAweDQxCisKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzBfTCAweDUwCisjZGVmaW5lIFNDRENf RVJSX0RFVF8wX0ggMHg1MQorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMV9MIDB4NTIKKyNkZWZpbmUg U0NEQ19FUlJfREVUXzFfSCAweDUzCisjZGVmaW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAorI2Rl ZmluZSBTQ0RDX0VSUl9ERVRfMl9IIDB4NTUKKyNkZWZpbmUgIFNDRENfQ0hBTk5FTF9WQUxJRCAo MSA8PCA3KQorCisjZGVmaW5lIFNDRENfRVJSX0RFVF9DSEVDS1NVTSAweDU2CisKKyNkZWZpbmUg U0NEQ19URVNUX0NPTkZJR18wIDB4YzAKKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1Qg KDEgPDwgNykKKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1RfREVMQVkoeCkgKCh4KSAm IDB4N2YpCisKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUkgMHhkMAorI2RlZmlu ZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSV9TSVpFIDMKKworI2RlZmluZSBTQ0RDX0RFVklD RV9JRCAweGQzCisjZGVmaW5lIFNDRENfREVWSUNFX0lEX1NJWkUgOAorCisjZGVmaW5lIFNDRENf REVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4ZGIKKyNkZWZpbmUgIFNDRENfREVWSUNFX0hBUkRX QVJFX1JFVklTSU9OX01BSk9SKHgpICgoKHgpID4+IDQpICYgMHhmKQorI2RlZmluZSAgU0NEQ19E RVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlOT1IoeCkgKCgoeCkgPj4gMCkgJiAweGYpCisKKyNk ZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUFKT1JfUkVWSVNJT04gMHhkYworI2RlZmluZSBT Q0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9SRVZJU0lPTiAweGRkCisKKyNkZWZpbmUgU0NEQ19N QU5VRkFDVFVSRVJfU1BFQ0lGSUMgMHhkZQorI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVD SUZJQ19TSVpFIDM0CisKK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVmZmVyLAorCQkgICAgICBzaXplX3Qgc2l6ZSk7 Citzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTgg b2Zmc2V0LAorCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7CisKKy8q KgorICogZHJtX3NjZGNfcmVhZGIgLSByZWFkIGEgc2luZ2xlIGJ5dGUgZnJvbSBTQ0RDCisgKiBA YWRhcHRlcjogSTJDIGFkYXB0ZXIKKyAqIEBvZmZzZXQ6IG9mZnNldCBvZiByZWdpc3RlciB0byBy ZWFkCisgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVlCisg KgorICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5j ZSB3cmFwcGVyIGFyb3VuZCB0aGUKKyAqIGRybV9zY2RjX3JlYWQoKSBmdW5jdGlvbi4KKyAqCisg KiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBm YWlsdXJlLgorICovCitzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY19yZWFkYihzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJCQkgdTggKnZhbHVlKQoreworCXJldHVy biBkcm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9mZnNldCwgdmFsdWUsIHNpemVvZigqdmFsdWUpKTsK K30KKworLyoqCisgKiBkcm1fc2NkY193cml0ZWIgLSB3cml0ZSBhIHNpbmdsZSBieXRlIHRvIFND REMKKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgorICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lz dGVyIHRvIHJlYWQKKyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgcmVnaXN0ZXIg dmFsdWUKKyAqCisgKiBXcml0ZXMgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDLiBUaGlzIGlzIGEgY29u dmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlCisgKiBkcm1fc2NkY193cml0ZSgpIGZ1bmN0aW9u LgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBj b2RlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3dyaXRlYihz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJCQkgIHU4IHZhbHVlKQor eworCXJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZzZXQsICZ2YWx1ZSwgc2l6ZW9m KHZhbHVlKSk7Cit9CisKKyNlbmRpZgotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=