From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v7 1/6] drm: Add SCDC helpers Date: Fri, 3 Mar 2017 21:58:28 +0530 Message-ID: <1488558513-23534-2-git-send-email-shashank.sharma@intel.com> References: <1488558513-23534-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: <1488558513-23534-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, ander.conselvan.de.oliveira@intel.com, ville.syrjala@linux.intel.com Cc: jose.abreu@synopsys.com, daniel.vetter@intel.com, treding@nvidia.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKVjI6IFJlYmFzZS4KVjM6IEFkZGVkIFItQiBmcm9tIEpvc2UuClY0OiBSZWJh c2UKVjU6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZQogLSBIYW5kbGUgdGhl IEkyYyByZXR1cm4gdmFsdWVzIGluIGEgYmV0dGVyIHdheSAoZHBfZHVhbF9tb2RlKQogLSBNYWtl IHRoZSBtYWNyb3MgZm9yIFNDREMgTWFqb3IvTWlub3IgbW9yZSByZWFkYWJsZSwgYnkgYWRkaW5n CiAgIGEgJ0dFVCcgaW4gdGhlIG1hY3JvIG5hbWVzClY2OiBSZWJhc2UKVjc6IFJlYmFzZQoKU2ln bmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KU2lnbmVkLW9m Zi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgpSZXZpZXdl ZC1ieTogSm9zZSBBYnJldSA8am9hYnJldUBzeW5vcHN5cy5jb20+Ci0tLQogRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCB8ICAxMiArKysrCiBkcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVs cGVyLmMgICAgIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUv ZHJtL2RybV9zY2RjX2hlbHBlci5oICAgICAgICAgfCAxMzIgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxw ZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCgpk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCBiL0RvY3Vt ZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKaW5kZXggMDMwNDBhYS4uNzU5Mjc1NiAx MDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAorKysgYi9E b2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CkBAIC0yMTcsNiArMjE3LDE4IEBA IEVESUQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJz L2dwdS9kcm0vZHJtX2VkaWQuYwogICAgOmV4cG9ydDoKIAorU0NEQyBIZWxwZXIgRnVuY3Rpb25z IFJlZmVyZW5jZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBrZXJuZWwt ZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCisgICA6ZG9jOiBzY2RjIGhl bHBlcnMKKworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCisg ICA6aW50ZXJuYWw6CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNf aGVscGVyLmMKKyAgIDpleHBvcnQ6CisKIFJlY3RhbmdsZSBVdGlsaXRpZXMgUmVmZXJlbmNlCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggM2VlOTU3OS4uZGE1 YjA4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQpAQCAtMzEsNyArMzEsOCBAQCBkcm0tJChDT05GSUdfREVCVUdfRlMp ICs9IGRybV9kZWJ1Z2ZzLm8gZHJtX2RlYnVnZnNfY3JjLm8KIGRybV9rbXNfaGVscGVyLXkgOj0g ZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9wcm9iZV9oZWxwZXIubyBcCiAJ CWRybV9wbGFuZV9oZWxwZXIubyBkcm1fZHBfbXN0X3RvcG9sb2d5Lm8gZHJtX2F0b21pY19oZWxw ZXIubyBcCiAJCWRybV9rbXNfaGVscGVyX2NvbW1vbi5vIGRybV9kcF9kdWFsX21vZGVfaGVscGVy Lm8gXAotCQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIubworCQlk cm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIubyBcCisJCWRybV9zY2Rj X2hlbHBlci5vCiAKIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdB UkUpICs9IGRybV9lZGlkX2xvYWQubwogZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVW X0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX3NjZGNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJkZDMzZgotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwpAQCAtMCwwICsxLDEyMyBA QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z CisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1J TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FS RS4KKyAqLworCisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9z Y2RjX2hlbHBlci5oPgorCisvKioKKyAqIERPQzogc2NkYyBoZWxwZXJzCisgKgorICogU3RhdHVz IGFuZCBDb250cm9sIERhdGEgQ2hhbm5lbCAoU0NEQykgaXMgYSBtZWNoYW5pc20gaW50cm9kdWNl ZCBieSB0aGUKKyAqIEhETUkgMi4wIHNwZWNpZmljYXRpb24uIEl0IGlzIGEgcG9pbnQtdG8tcG9p bnQgcHJvdG9jb2wgdGhhdCBhbGxvd3MgdGhlCisgKiBIRE1JIHNvdXJjZSBhbmQgSERNSSBzaW5r IHRvIGV4Y2hhbmdlIGRhdGEuIFRoZSBzYW1lIEkyQyBpbnRlcmZhY2UgdGhhdAorICogaXMgdXNl ZCB0byBhY2Nlc3MgRURJRCBzZXJ2ZXMgYXMgdGhlIHRyYW5zcG9ydCBtZWNoYW5pc20gZm9yIFND REMuCisgKi8KKworI2RlZmluZSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTIDB4NTQKKworLyoqCisg KiBkcm1fc2NkY19yZWFkIC0gcmVhZCBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDCisgKiBAYWRh cHRlcjogSTJDIGNvbnRyb2xsZXIKKyAqIEBvZmZzZXQ6IHN0YXJ0IG9mZnNldCBvZiBibG9jayB0 byByZWFkCisgKiBAYnVmZmVyOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSBibG9jayB0byByZWFk CisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sgdG8gcmVhZAorICoKKyAqIFJlYWRzIGEgYmxv Y2sgb2YgZGF0YSBmcm9tIFNDREMsIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gb2Zmc2V0LgorICoKKyAq IFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVy ZS4KKyAqLworc3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRl ciwgdTggb2Zmc2V0LCB2b2lkICpidWZmZXIsCisJCSAgICAgIHNpemVfdCBzaXplKQoreworCWlu dCByZXQ7CisJc3RydWN0IGkyY19tc2cgbXNnc1syXSA9IHsKKwkJeworCQkJLmFkZHIgPSBTQ0RD X0kyQ19TTEFWRV9BRERSRVNTLAorCQkJLmZsYWdzID0gMCwKKwkJCS5sZW4gPSAxLAorCQkJLmJ1 ZiA9ICZvZmZzZXQsCisJCX0sIHsKKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywK KwkJCS5mbGFncyA9IEkyQ19NX1JELAorCQkJLmxlbiA9IHNpemUsCisJCQkuYnVmID0gYnVmZmVy LAorCQl9CisJfTsKKworCXJldCA9IGkyY190cmFuc2ZlcihhZGFwdGVyLCBtc2dzLCBBUlJBWV9T SVpFKG1zZ3MpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKwlpZiAocmV0ICE9IEFS UkFZX1NJWkUobXNncykpCisJCXJldHVybiAtRVBST1RPOworCisJcmV0dXJuIDA7Cit9CitFWFBP UlRfU1lNQk9MKGRybV9zY2RjX3JlYWQpOworCisvKioKKyAqIGRybV9zY2RjX3dyaXRlIC0gd3Jp dGUgYSBibG9jayBvZiBkYXRhIHRvIFNDREMKKyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgor ICogQG9mZnNldDogc3RhcnQgb2Zmc2V0IG9mIGJsb2NrIHRvIHdyaXRlCisgKiBAYnVmZmVyOiBi bG9jayBvZiBkYXRhIHRvIHdyaXRlCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmxvY2sgdG8gd3Jp dGUKKyAqCisgKiBXcml0ZXMgYSBibG9jayBvZiBkYXRhIHRvIFNDREMsIHN0YXJ0aW5nIGF0IGEg Z2l2ZW4gb2Zmc2V0LgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZl IGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3NpemVfdCBkcm1fc2NkY193cml0ZShzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJICAgICAgIGNvbnN0IHZvaWQg KmJ1ZmZlciwgc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGkyY19tc2cgbXNnID0geworCQkuYWRk ciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJCS5mbGFncyA9IDAsCisJCS5sZW4gPSAxICsg c2l6ZSwKKwkJLmJ1ZiA9IE5VTEwsCisJfTsKKwl2b2lkICpkYXRhOworCWludCBlcnI7CisKKwlk YXRhID0ga21hbGxvYygxICsgc2l6ZSwgR0ZQX1RFTVBPUkFSWSk7CisJaWYgKCFkYXRhKQorCQly ZXR1cm4gLUVOT01FTTsKKworCW1zZy5idWYgPSBkYXRhOworCisJbWVtY3B5KGRhdGEsICZvZmZz ZXQsIHNpemVvZihvZmZzZXQpKTsKKwltZW1jcHkoZGF0YSArIDEsIGJ1ZmZlciwgc2l6ZSk7CisK KwllcnIgPSBpMmNfdHJhbnNmZXIoYWRhcHRlciwgJm1zZywgMSk7CisKKwlrZnJlZShkYXRhKTsK KworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCWlmIChlcnIgIT0gMSkKKwkJcmV0dXJu IC1FUFJPVE87CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfd3JpdGUp OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmggYi9pbmNsdWRlL2Ry bS9kcm1fc2NkY19oZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45 YzUyZGViCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgK QEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgTlZJRElBIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisg KiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5H UyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBEUk1fU0NEQ19IRUxQRVJfSAorI2Rl ZmluZSBEUk1fU0NEQ19IRUxQRVJfSAorCisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KKworI2RlZmluZSBTQ0RDX1NJTktfVkVSU0lPTiAweDAxCisKKyNk ZWZpbmUgU0NEQ19TT1VSQ0VfVkVSU0lPTiAweDAyCisKKyNkZWZpbmUgU0NEQ19VUERBVEVfMCAw eDEwCisjZGVmaW5lICBTQ0RDX1JFQURfUkVRVUVTVF9URVNUICgxIDw8IDIpCisjZGVmaW5lICBT Q0RDX0NFRF9VUERBVEUgKDEgPDwgMSkKKyNkZWZpbmUgIFNDRENfU1RBVFVTX1VQREFURSAoMSA8 PCAwKQorCisjZGVmaW5lIFNDRENfVVBEQVRFXzEgMHgxMQorCisjZGVmaW5lIFNDRENfVE1EU19D T05GSUcgMHgyMAorI2RlZmluZSAgU0NEQ19UTURTX0JJVF9DTE9DS19SQVRJT19CWV80MCAoMSA8 PCAxKQorI2RlZmluZSAgU0NEQ19UTURTX0JJVF9DTE9DS19SQVRJT19CWV8xMCAoMCA8PCAxKQor I2RlZmluZSAgU0NEQ19TQ1JBTUJMSU5HX0VOQUJMRSAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENf U0NSQU1CTEVSX1NUQVRVUyAweDIxCisjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfU1RBVFVTICgx IDw8IDApCisKKyNkZWZpbmUgU0NEQ19DT05GSUdfMCAweDMwCisjZGVmaW5lICBTQ0RDX1JFQURf UkVRVUVTVF9FTkFCTEUgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX1NUQVRVU19GTEFHU18wIDB4 NDAKKyNkZWZpbmUgIFNDRENfQ0gyX0xPQ0sgKDEgPCAzKQorI2RlZmluZSAgU0NEQ19DSDFfTE9D SyAoMSA8IDIpCisjZGVmaW5lICBTQ0RDX0NIMF9MT0NLICgxIDwgMSkKKyNkZWZpbmUgIFNDRENf Q0hfTE9DS19NQVNLIChTQ0RDX0NIMl9MT0NLIHwgU0NEQ19DSDFfTE9DSyB8IFNDRENfQ0gwX0xP Q0spCisjZGVmaW5lICBTQ0RDX0NMT0NLX0RFVEVDVCAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENf U1RBVFVTX0ZMQUdTXzEgMHg0MQorCisjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0wgMHg1MAorI2Rl ZmluZSBTQ0RDX0VSUl9ERVRfMF9IIDB4NTEKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzFfTCAweDUy CisjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0ggMHg1MworI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9M IDB4NTQKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzJfSCAweDU1CisjZGVmaW5lICBTQ0RDX0NIQU5O RUxfVkFMSUQgKDEgPDwgNykKKworI2RlZmluZSBTQ0RDX0VSUl9ERVRfQ0hFQ0tTVU0gMHg1Ngor CisjZGVmaW5lIFNDRENfVEVTVF9DT05GSUdfMCAweGMwCisjZGVmaW5lICBTQ0RDX1RFU1RfUkVB RF9SRVFVRVNUICgxIDw8IDcpCisjZGVmaW5lICBTQ0RDX1RFU1RfUkVBRF9SRVFVRVNUX0RFTEFZ KHgpICgoeCkgJiAweDdmKQorCisjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX0lFRUVfT1VJIDB4 ZDAKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUlfU0laRSAzCisKKyNkZWZpbmUg U0NEQ19ERVZJQ0VfSUQgMHhkMworI2RlZmluZSBTQ0RDX0RFVklDRV9JRF9TSVpFIDgKKworI2Rl ZmluZSBTQ0RDX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTiAweGRiCisjZGVmaW5lICBTQ0RDX0dF VF9ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUFKT1IoeCkgKCgoeCkgPj4gNCkgJiAweGYpCisj ZGVmaW5lICBTQ0RDX0dFVF9ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlOT1IoeCkgKCgoeCkg Pj4gMCkgJiAweGYpCisKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUFKT1JfUkVWSVNJ T04gMHhkYworI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9SRVZJU0lPTiAweGRk CisKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUMgMHhkZQorI2RlZmluZSBTQ0RD X01BTlVGQUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0CisKK3NzaXplX3QgZHJtX3NjZGNfcmVhZChz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVmZmVyLAorCQkg ICAgICBzaXplX3Qgc2l6ZSk7Citzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRh cHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAorCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBz aXplX3Qgc2l6ZSk7CisKKy8qKgorICogZHJtX3NjZGNfcmVhZGIgLSByZWFkIGEgc2luZ2xlIGJ5 dGUgZnJvbSBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKKyAqIEBvZmZzZXQ6IG9mZnNl dCBvZiByZWdpc3RlciB0byByZWFkCisgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhl IHJlZ2lzdGVyIHZhbHVlCisgKgorICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMuIFRo aXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKKyAqIGRybV9zY2RjX3JlYWQo KSBmdW5jdGlvbi4KKyAqCisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgaW5saW5lIGludCBkcm1fc2Nk Y19yZWFkYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJCQkgdTgg KnZhbHVlKQoreworCXJldHVybiBkcm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9mZnNldCwgdmFsdWUs IHNpemVvZigqdmFsdWUpKTsKK30KKworLyoqCisgKiBkcm1fc2NkY193cml0ZWIgLSB3cml0ZSBh IHNpbmdsZSBieXRlIHRvIFNDREMKKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgorICogQG9mZnNl dDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKKyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9u IGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUKKyAqCisgKiBXcml0ZXMgYSBzaW5nbGUgYnl0ZSB0byBT Q0RDLiBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlCisgKiBkcm1fc2Nk Y193cml0ZSgpIGZ1bmN0aW9uLgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3Mgb3Ig YSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50 IGRybV9zY2RjX3dyaXRlYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwK KwkJCQkgIHU4IHZhbHVlKQoreworCXJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZz ZXQsICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKKyNlbmRpZgotLSAKMS45LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=