From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v6 1/6] drm: Add SCDC helpers Date: Fri, 3 Mar 2017 11:59:42 +0530 Message-ID: <1488522587-1657-2-git-send-email-shashank.sharma@intel.com> References: <1488522587-1657-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: <1488522587-1657-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, ville.syrjala@linux.intel.com Cc: jose.abreu@synopsys.com, ander.conselvan.de.oliveira@intel.com, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKVjI6IFJlYmFzZS4KVjM6IEFkZGVkIFItQiBmcm9tIEpvc2UuClY0OiBSZWJh c2UKVjU6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZQogLSBIYW5kbGUgdGhl IEkyYyByZXR1cm4gdmFsdWVzIGluIGEgYmV0dGVyIHdheSAoZHBfZHVhbF9tb2RlKQogLSBNYWtl IHRoZSBtYWNyb3MgZm9yIFNDREMgTWFqb3IvTWlub3IgbW9yZSByZWFkYWJsZSwgYnkgYWRkaW5n CiAgIGEgJ0dFVCcgaW4gdGhlIG1hY3JvIG5hbWVzClY2OiBSZWJhc2UKClNpZ25lZC1vZmYtYnk6 IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+ClNpZ25lZC1vZmYtYnk6IFNoYXNo YW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEpvc2Ug QWJyZXUgPGpvYWJyZXVAc3lub3BzeXMuY29tPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1r bXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAg ICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jICAgICB8 IDEyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1fc2Nk Y19oZWxwZXIuaCAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIDQgZmlsZXMgY2hhbmdlZCwgMjY5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAoKZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dw dS9kcm0ta21zLWhlbHBlcnMucnN0CmluZGV4IDAzMDQwYWEuLjc1OTI3NTYgMTAwNjQ0Ci0tLSBh L0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKKysrIGIvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdApAQCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhlbHBl ciBGdW5jdGlvbnMgUmVmZXJlbmNlCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMKICAgIDpleHBvcnQ6CiAKK1NDREMgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZl cnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYworICAgOmRvYzogc2NkYyBoZWxwZXJzCisKKy4u IGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAorICAgOmludGVybmFs OgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCisg ICA6ZXhwb3J0OgorCiBSZWN0YW5nbGUgVXRpbGl0aWVzIFJlZmVyZW5jZQogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDNlZTk1NzkuLmRhNWIwOGMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKQEAgLTMxLDcgKzMxLDggQEAgZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVi dWdmcy5vIGRybV9kZWJ1Z2ZzX2NyYy5vCiBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hl bHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAogCQlkcm1fcGxhbmVf aGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vIGRybV9hdG9taWNfaGVscGVyLm8gXAogCQlk cm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5vIFwKLQkJZHJt X3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8KKwkJZHJtX3NpbXBsZV9r bXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAorCQlkcm1fc2NkY19oZWxwZXIubwog CiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBkcm1f ZWRpZF9sb2FkLm8KIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04p ICs9IGRybV9mYl9oZWxwZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2Rj X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyZGQzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2YgdGhl IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5U LiBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKwor I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIu aD4KKworLyoqCisgKiBET0M6IHNjZGMgaGVscGVycworICoKKyAqIFN0YXR1cyBhbmQgQ29udHJv bCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgdGhlCisg KiBIRE1JIDIuMCBzcGVjaWZpY2F0aW9uLiBJdCBpcyBhIHBvaW50LXRvLXBvaW50IHByb3RvY29s IHRoYXQgYWxsb3dzIHRoZQorICogSERNSSBzb3VyY2UgYW5kIEhETUkgc2luayB0byBleGNoYW5n ZSBkYXRhLiBUaGUgc2FtZSBJMkMgaW50ZXJmYWNlIHRoYXQKKyAqIGlzIHVzZWQgdG8gYWNjZXNz IEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciBTQ0RDLgorICovCisK KyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAweDU0CisKKy8qKgorICogZHJtX3NjZGNf cmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQworICogQGFkYXB0ZXI6IEkyQyBj b250cm9sbGVyCisgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gcmVhZAorICog QGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8gcmVhZAorICogQHNpemU6 IHNpemUgb2YgdGhlIGJsb2NrIHRvIHJlYWQKKyAqCisgKiBSZWFkcyBhIGJsb2NrIG9mIGRhdGEg ZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAqCisgKiBSZXR1cm5zOgor ICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3Nz aXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNl dCwgdm9pZCAqYnVmZmVyLAorCQkgICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlpbnQgcmV0OworCXN0 cnVjdCBpMmNfbXNnIG1zZ3NbMl0gPSB7CisJCXsKKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVf QUREUkVTUywKKwkJCS5mbGFncyA9IDAsCisJCQkubGVuID0gMSwKKwkJCS5idWYgPSAmb2Zmc2V0 LAorCQl9LCB7CisJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJCQkuZmxhZ3Mg PSBJMkNfTV9SRCwKKwkJCS5sZW4gPSBzaXplLAorCQkJLmJ1ZiA9IGJ1ZmZlciwKKwkJfQorCX07 CisKKwlyZXQgPSBpMmNfdHJhbnNmZXIoYWRhcHRlciwgbXNncywgQVJSQVlfU0laRShtc2dzKSk7 CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisJaWYgKHJldCAhPSBBUlJBWV9TSVpFKG1z Z3MpKQorCQlyZXR1cm4gLUVQUk9UTzsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChk cm1fc2NkY19yZWFkKTsKKworLyoqCisgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRlIGEgYmxvY2sg b2YgZGF0YSB0byBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKKyAqIEBvZmZzZXQ6 IHN0YXJ0IG9mZnNldCBvZiBibG9jayB0byB3cml0ZQorICogQGJ1ZmZlcjogYmxvY2sgb2YgZGF0 YSB0byB3cml0ZQorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHdyaXRlCisgKgorICog V3JpdGVzIGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNl dC4KKyAqCisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2Rl IG9uIGZhaWx1cmUuCisgKi8KK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFw dGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHNp emVfdCBzaXplKQoreworCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsKKwkJLmFkZHIgPSBTQ0RDX0ky Q19TTEFWRV9BRERSRVNTLAorCQkuZmxhZ3MgPSAwLAorCQkubGVuID0gMSArIHNpemUsCisJCS5i dWYgPSBOVUxMLAorCX07CisJdm9pZCAqZGF0YTsKKwlpbnQgZXJyOworCisJZGF0YSA9IGttYWxs b2MoMSArIHNpemUsIEdGUF9URU1QT1JBUlkpOworCWlmICghZGF0YSkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwltc2cuYnVmID0gZGF0YTsKKworCW1lbWNweShkYXRhLCAmb2Zmc2V0LCBzaXplb2Yo b2Zmc2V0KSk7CisJbWVtY3B5KGRhdGEgKyAxLCBidWZmZXIsIHNpemUpOworCisJZXJyID0gaTJj X3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOworCisJa2ZyZWUoZGF0YSk7CisKKwlpZiAoZXJy IDwgMCkKKwkJcmV0dXJuIGVycjsKKwlpZiAoZXJyICE9IDEpCisJCXJldHVybiAtRVBST1RPOwor CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3dyaXRlKTsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNf aGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1MmRlYgotLS0g L2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCkBAIC0wLDAgKzEs MTMyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IE5WSURJQSBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwKKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorICovCisKKyNpZm5kZWYgRFJNX1NDRENfSEVMUEVSX0gKKyNkZWZpbmUgRFJNX1ND RENfSEVMUEVSX0gKKworI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+CisKKyNkZWZpbmUgU0NEQ19TSU5LX1ZFUlNJT04gMHgwMQorCisjZGVmaW5lIFNDRENf U09VUkNFX1ZFUlNJT04gMHgwMgorCisjZGVmaW5lIFNDRENfVVBEQVRFXzAgMHgxMAorI2RlZmlu ZSAgU0NEQ19SRUFEX1JFUVVFU1RfVEVTVCAoMSA8PCAyKQorI2RlZmluZSAgU0NEQ19DRURfVVBE QVRFICgxIDw8IDEpCisjZGVmaW5lICBTQ0RDX1NUQVRVU19VUERBVEUgKDEgPDwgMCkKKworI2Rl ZmluZSBTQ0RDX1VQREFURV8xIDB4MTEKKworI2RlZmluZSBTQ0RDX1RNRFNfQ09ORklHIDB4MjAK KyNkZWZpbmUgIFNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfNDAgKDEgPDwgMSkKKyNkZWZp bmUgIFNDRENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfMTAgKDAgPDwgMSkKKyNkZWZpbmUgIFND RENfU0NSQU1CTElOR19FTkFCTEUgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX1NDUkFNQkxFUl9T VEFUVVMgMHgyMQorI2RlZmluZSAgU0NEQ19TQ1JBTUJMSU5HX1NUQVRVUyAoMSA8PCAwKQorCisj ZGVmaW5lIFNDRENfQ09ORklHXzAgMHgzMAorI2RlZmluZSAgU0NEQ19SRUFEX1JFUVVFU1RfRU5B QkxFICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMCAweDQwCisjZGVmaW5l ICBTQ0RDX0NIMl9MT0NLICgxIDwgMykKKyNkZWZpbmUgIFNDRENfQ0gxX0xPQ0sgKDEgPCAyKQor I2RlZmluZSAgU0NEQ19DSDBfTE9DSyAoMSA8IDEpCisjZGVmaW5lICBTQ0RDX0NIX0xPQ0tfTUFT SyAoU0NEQ19DSDJfTE9DSyB8IFNDRENfQ0gxX0xPQ0sgfCBTQ0RDX0NIMF9MT0NLKQorI2RlZmlu ZSAgU0NEQ19DTE9DS19ERVRFQ1QgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX1NUQVRVU19GTEFH U18xIDB4NDEKKworI2RlZmluZSBTQ0RDX0VSUl9ERVRfMF9MIDB4NTAKKyNkZWZpbmUgU0NEQ19F UlJfREVUXzBfSCAweDUxCisjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0wgMHg1MgorI2RlZmluZSBT Q0RDX0VSUl9ERVRfMV9IIDB4NTMKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzJfTCAweDU0CisjZGVm aW5lIFNDRENfRVJSX0RFVF8yX0ggMHg1NQorI2RlZmluZSAgU0NEQ19DSEFOTkVMX1ZBTElEICgx IDw8IDcpCisKKyNkZWZpbmUgU0NEQ19FUlJfREVUX0NIRUNLU1VNIDB4NTYKKworI2RlZmluZSBT Q0RDX1RFU1RfQ09ORklHXzAgMHhjMAorI2RlZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVTVCAo MSA8PCA3KQorI2RlZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVTVF9ERUxBWSh4KSAoKHgpICYg MHg3ZikKKworI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSSAweGQwCisjZGVmaW5l IFNDRENfTUFOVUZBQ1RVUkVSX0lFRUVfT1VJX1NJWkUgMworCisjZGVmaW5lIFNDRENfREVWSUNF X0lEIDB4ZDMKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSURfU0laRSA4CisKKyNkZWZpbmUgU0NEQ19E RVZJQ0VfSEFSRFdBUkVfUkVWSVNJT04gMHhkYgorI2RlZmluZSAgU0NEQ19HRVRfREVWSUNFX0hB UkRXQVJFX1JFVklTSU9OX01BSk9SKHgpICgoKHgpID4+IDQpICYgMHhmKQorI2RlZmluZSAgU0NE Q19HRVRfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01JTk9SKHgpICgoKHgpID4+IDApICYgMHhm KQorCisjZGVmaW5lIFNDRENfREVWSUNFX1NPRlRXQVJFX01BSk9SX1JFVklTSU9OIDB4ZGMKKyNk ZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUlOT1JfUkVWSVNJT04gMHhkZAorCisjZGVmaW5l IFNDRENfTUFOVUZBQ1RVUkVSX1NQRUNJRklDIDB4ZGUKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVS RVJfU1BFQ0lGSUNfU0laRSAzNAorCitzc2l6ZV90IGRybV9zY2RjX3JlYWQoc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwKKwkJICAgICAgc2l6ZV90 IHNpemUpOworc3NpemVfdCBkcm1fc2NkY193cml0ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIsIHU4IG9mZnNldCwKKwkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUp OworCisvKioKKyAqIGRybV9zY2RjX3JlYWRiIC0gcmVhZCBhIHNpbmdsZSBieXRlIGZyb20gU0NE QworICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyCisgKiBAb2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0 ZXIgdG8gcmVhZAorICogQHZhbHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2 YWx1ZQorICoKKyAqIFJlYWRzIGEgc2luZ2xlIGJ5dGUgZnJvbSBTQ0RDLiBUaGlzIGlzIGEgY29u dmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlCisgKiBkcm1fc2NkY19yZWFkKCkgZnVuY3Rpb24u CisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQgZHJtX3NjZGNfcmVhZGIoc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCQkJIHU4ICp2YWx1ZSkKK3sK KwlyZXR1cm4gZHJtX3NjZGNfcmVhZChhZGFwdGVyLCBvZmZzZXQsIHZhbHVlLCBzaXplb2YoKnZh bHVlKSk7Cit9CisKKy8qKgorICogZHJtX3NjZGNfd3JpdGViIC0gd3JpdGUgYSBzaW5nbGUgYnl0 ZSB0byBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKKyAqIEBvZmZzZXQ6IG9mZnNldCBv ZiByZWdpc3RlciB0byByZWFkCisgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHJl Z2lzdGVyIHZhbHVlCisgKgorICogV3JpdGVzIGEgc2luZ2xlIGJ5dGUgdG8gU0NEQy4gVGhpcyBp cyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZQorICogZHJtX3NjZGNfd3JpdGUoKSBm dW5jdGlvbi4KKyAqCisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY193 cml0ZWIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCQkJICB1OCB2 YWx1ZSkKK3sKKwlyZXR1cm4gZHJtX3NjZGNfd3JpdGUoYWRhcHRlciwgb2Zmc2V0LCAmdmFsdWUs IHNpemVvZih2YWx1ZSkpOworfQorCisjZW5kaWYKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK