From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v2 1/6] drm: Add SCDC helpers Date: Mon, 6 Feb 2017 19:29:21 +0530 Message-ID: <1486389566-28613-2-git-send-email-shashank.sharma@intel.com> References: <1486389566-28613-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: <1486389566-28613-1-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: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com, treding@nvidia.com Cc: jose.abreu@synopsys.com, daniel.vetter@intel.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlh LmNvbT4KU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50 ZWwuY29tPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgMTIg KysrKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMyArLQogZHJp dmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jICAgICB8IDExMSArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCAgICAgICAgIHwgMTMy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjU3 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2Ry bS9kcm1fc2NkY19oZWxwZXIuaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1r bXMtaGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cmlu ZGV4IDAzMDQwYWEuLjc1OTI3NTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1r bXMtaGVscGVycy5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJz dApAQCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCiAu LiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKICAgIDpleHBvcnQ6CiAK K1NDREMgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxw ZXIuYworICAgOmRvYzogc2NkYyBoZWxwZXJzCisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2Ry bS9kcm1fc2NkY19oZWxwZXIuaAorICAgOmludGVybmFsOgorCisuLiBrZXJuZWwtZG9jOjogZHJp dmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCisgICA6ZXhwb3J0OgorCiBSZWN0YW5nbGUg VXRpbGl0aWVzIFJlZmVyZW5jZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCmluZGV4IDkyZGUzOTkuLmFkOTFjZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTMxLDcgKzMxLDggQEAg ZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdmcy5vIGRybV9kZWJ1Z2ZzX2NyYy5v CiBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBk cm1fcHJvYmVfaGVscGVyLm8gXAogCQlkcm1fcGxhbmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3Bv bG9neS5vIGRybV9hdG9taWNfaGVscGVyLm8gXAogCQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBk cm1fZHBfZHVhbF9tb2RlX2hlbHBlci5vIFwKLQkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJt X21vZGVzZXRfaGVscGVyLm8KKwkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRf aGVscGVyLm8gXAorCQlkcm1fc2NkY19oZWxwZXIubwogCiBkcm1fa21zX2hlbHBlci0kKENPTkZJ R19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8KIGRybV9rbXNfaGVs cGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9oZWxwZXIubwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9zY2RjX2hlbHBlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmZlMGUxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVs cGVyLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgTlZJRElB IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K KworI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KKworLyoqCisgKiBET0M6IHNjZGMg aGVscGVycworICoKKyAqIFN0YXR1cyBhbmQgQ29udHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlz IGEgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgdGhlCisgKiBIRE1JIDIuMCBzcGVjaWZpY2F0aW9u LiBJdCBpcyBhIHBvaW50LXRvLXBvaW50IHByb3RvY29sIHRoYXQgYWxsb3dzIHRoZQorICogSERN SSBzb3VyY2UgYW5kIEhETUkgc2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUgc2FtZSBJMkMgaW50 ZXJmYWNlIHRoYXQKKyAqIGlzIHVzZWQgdG8gYWNjZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFu c3BvcnQgbWVjaGFuaXNtIGZvciBTQ0RDLgorICovCisKKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVf QUREUkVTUyAweDU0CisKKy8qKgorICogZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBk YXRhIGZyb20gU0NEQworICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCisgKiBAb2Zmc2V0OiBz dGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gcmVhZAorICogQGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9u IGZvciB0aGUgYmxvY2sgdG8gcmVhZAorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHJl YWQKKyAqCisgKiBSZWFkcyBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBh IGdpdmVuIG9mZnNldC4KKyAqCisgKiBSZXR1cm5zOgorICogVGhlIG51bWJlciBvZiBieXRlcyBy ZWFkIGZyb20gU0NEQyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLwor c3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zm c2V0LCB2b2lkICpidWZmZXIsCisJCSAgICAgIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpMmNf bXNnIG1zZ3NbMl0gPSB7CisJCXsKKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywK KwkJCS5mbGFncyA9IDAsCisJCQkubGVuID0gMSwKKwkJCS5idWYgPSAmb2Zmc2V0LAorCQl9LCB7 CisJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJCQkuZmxhZ3MgPSBJMkNfTV9S RCwKKwkJCS5sZW4gPSBzaXplLAorCQkJLmJ1ZiA9IGJ1ZmZlciwKKwkJfQorCX07CisKKwlyZXR1 cm4gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncykpOworfQorRVhQ T1JUX1NZTUJPTChkcm1fc2NkY19yZWFkKTsKKworLyoqCisgKiBkcm1fc2NkY193cml0ZSAtIHdy aXRlIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIK KyAqIEBvZmZzZXQ6IHN0YXJ0IG9mZnNldCBvZiBibG9jayB0byB3cml0ZQorICogQGJ1ZmZlcjog YmxvY2sgb2YgZGF0YSB0byB3cml0ZQorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHdy aXRlCisgKgorICogV3JpdGVzIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDLCBzdGFydGluZyBhdCBh IGdpdmVuIG9mZnNldC4KKyAqCisgKiBSZXR1cm5zOgorICogVGhlIG51bWJlciBvZiBieXRlcyB3 cml0dGVuIHRvIFNDREMgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8K K3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBv ZmZzZXQsCisJCSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQoreworCXN0 cnVjdCBpMmNfbXNnIG1zZyA9IHsKKwkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAor CQkuZmxhZ3MgPSAwLAorCQkubGVuID0gMSArIHNpemUsCisJCS5idWYgPSBOVUxMLAorCX07CisJ dm9pZCAqZGF0YTsKKwlpbnQgZXJyOworCisJZGF0YSA9IGttYWxsb2MoMSArIHNpemUsIEdGUF9U RU1QT1JBUlkpOworCWlmICghZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltc2cuYnVmID0g ZGF0YTsKKworCW1lbWNweShkYXRhLCAmb2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSk7CisJbWVtY3B5 KGRhdGEgKyAxLCBidWZmZXIsIHNpemUpOworCisJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIs ICZtc2csIDEpOworCisJa2ZyZWUoZGF0YSk7CisKKwlyZXR1cm4gZXJyOworfQorRVhQT1JUX1NZ TUJPTChkcm1fc2NkY193cml0ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19o ZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjkzYjA3YmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2Ry bS9kcm1fc2NkY19oZWxwZXIuaApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIERS TV9TQ0RDX0hFTFBFUl9ICisjZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9ICisKKyNpbmNsdWRlIDxs aW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIFNDRENfU0lO S19WRVJTSU9OIDB4MDEKKworI2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJTSU9OIDB4MDIKKworI2Rl ZmluZSBTQ0RDX1VQREFURV8wIDB4MTAKKyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX1RFU1Qg KDEgPDwgMikKKyNkZWZpbmUgIFNDRENfQ0VEX1VQREFURSAoMSA8PCAxKQorI2RlZmluZSAgU0NE Q19TVEFUVVNfVVBEQVRFICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCisK KyNkZWZpbmUgU0NEQ19UTURTX0NPTkZJRyAweDIwCisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NM T0NLX1JBVElPX0JZXzQwICgxIDw8IDEpCisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JB VElPX0JZXzEwICgwIDw8IDEpCisjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8 IDApCisKKyNkZWZpbmUgU0NEQ19TQ1JBTUJMRVJfU1RBVFVTIDB4MjEKKyNkZWZpbmUgIFNDRENf U0NSQU1CTElOR19TVEFUVVMgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX0NPTkZJR18wIDB4MzAK KyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQorCisjZGVmaW5lIFND RENfU1RBVFVTX0ZMQUdTXzAgMHg0MAorI2RlZmluZSAgU0NEQ19DSDJfTE9DSyAoMSA8IDMpCisj ZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKKyNkZWZpbmUgIFNDRENfQ0gwX0xPQ0sgKDEg PCAxKQorI2RlZmluZSAgU0NEQ19DSF9MT0NLX01BU0sgKFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NI MV9MT0NLIHwgU0NEQ19DSDBfTE9DSykKKyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8 IDApCisKKyNkZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMSAweDQxCisKKyNkZWZpbmUgU0NEQ19F UlJfREVUXzBfTCAweDUwCisjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQorI2RlZmluZSBT Q0RDX0VSUl9ERVRfMV9MIDB4NTIKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzFfSCAweDUzCisjZGVm aW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9IIDB4NTUK KyNkZWZpbmUgIFNDRENfQ0hBTk5FTF9WQUxJRCAoMSA8PCA3KQorCisjZGVmaW5lIFNDRENfRVJS X0RFVF9DSEVDS1NVTSAweDU2CisKKyNkZWZpbmUgU0NEQ19URVNUX0NPTkZJR18wIDB4YzAKKyNk ZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1QgKDEgPDwgNykKKyNkZWZpbmUgIFNDRENfVEVT VF9SRUFEX1JFUVVFU1RfREVMQVkoeCkgKCh4KSAmIDB4N2YpCisKKyNkZWZpbmUgU0NEQ19NQU5V RkFDVFVSRVJfSUVFRV9PVUkgMHhkMAorI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09V SV9TSVpFIDMKKworI2RlZmluZSBTQ0RDX0RFVklDRV9JRCAweGQzCisjZGVmaW5lIFNDRENfREVW SUNFX0lEX1NJWkUgOAorCisjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4 ZGIKKyNkZWZpbmUgIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01BSk9SKHgpICgoKHgp ID4+IDQpICYgMHhmKQorI2RlZmluZSAgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlO T1IoeCkgKCgoeCkgPj4gMCkgJiAweGYpCisKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVf TUFKT1JfUkVWSVNJT04gMHhkYworI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9S RVZJU0lPTiAweGRkCisKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUMgMHhkZQor I2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0CisKK3NzaXplX3QgZHJt X3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwgdm9pZCAq YnVmZmVyLAorCQkgICAgICBzaXplX3Qgc2l6ZSk7Citzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAorCQkgICAgICAgY29uc3Qgdm9p ZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7CisKKy8qKgorICogZHJtX3NjZGNfcmVhZGIgLSByZWFk IGEgc2luZ2xlIGJ5dGUgZnJvbSBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKKyAqIEBv ZmZzZXQ6IG9mZnNldCBvZiByZWdpc3RlciB0byByZWFkCisgKiBAdmFsdWU6IHJldHVybiBsb2Nh dGlvbiBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVlCisgKgorICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBm cm9tIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKKyAqIGRy bV9zY2RjX3JlYWQoKSBmdW5jdGlvbi4KKyAqCisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNz IG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgaW5saW5l IGludCBkcm1fc2NkY19yZWFkYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNl dCwKKwkJCQkgdTggKnZhbHVlKQoreworCXJldHVybiBkcm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9m ZnNldCwgdmFsdWUsIHNpemVvZigqdmFsdWUpKTsKK30KKworLyoqCisgKiBkcm1fc2NkY193cml0 ZWIgLSB3cml0ZSBhIHNpbmdsZSBieXRlIHRvIFNDREMKKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRl cgorICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKKyAqIEB2YWx1ZTogcmV0 dXJuIGxvY2F0aW9uIGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUKKyAqCisgKiBXcml0ZXMgYSBzaW5n bGUgYnl0ZSB0byBTQ0RDLiBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhl CisgKiBkcm1fc2NkY193cml0ZSgpIGZ1bmN0aW9uLgorICoKKyAqIFJldHVybnM6CisgKiAwIG9u IHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRp YyBpbmxpbmUgaW50IGRybV9zY2RjX3dyaXRlYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIs IHU4IG9mZnNldCwKKwkJCQkgIHU4IHZhbHVlKQoreworCXJldHVybiBkcm1fc2NkY193cml0ZShh ZGFwdGVyLCBvZmZzZXQsICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKKyNlbmRpZgotLSAK MS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=