From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v4 1/6] drm: Add SCDC helpers Date: Wed, 22 Feb 2017 18:48:26 +0530 Message-ID: <1487769511-17359-2-git-send-email-shashank.sharma@intel.com> References: <1487769511-17359-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: <1487769511-17359-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, maarten.lankhorst@linux.intel.com, ville.syrjala@linux.intel.com Cc: daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKVjI6IFJlYmFzZS4KVjM6IEFkZGVkIFItQiBmcm9tIEpvc2UuClY0OiBSZWJh c2UKClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+ClNp Z25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4K UmV2aWV3ZWQtYnk6IEpvc2UgQWJyZXUgPGpvYWJyZXVAc3lub3BzeXMuY29tPgotLS0KIERvY3Vt ZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgMTIgKysrKwogZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2RybV9z Y2RjX2hlbHBlci5jICAgICB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNs dWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNf aGVscGVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIu aAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9E b2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CmluZGV4IDAzMDQwYWEuLjc1OTI3 NTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKKysr IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdApAQCAtMjE3LDYgKzIxNywx OCBAQCBFRElEIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCiAuLiBrZXJuZWwtZG9jOjogZHJp dmVycy9ncHUvZHJtL2RybV9lZGlkLmMKICAgIDpleHBvcnQ6CiAKK1NDREMgSGVscGVyIEZ1bmN0 aW9ucyBSZWZlcmVuY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2Vy bmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYworICAgOmRvYzogc2Nk YyBoZWxwZXJzCisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIu aAorICAgOmludGVybmFsOgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9z Y2RjX2hlbHBlci5jCisgICA6ZXhwb3J0OgorCiBSZWN0YW5nbGUgVXRpbGl0aWVzIFJlZmVyZW5j ZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDkyZGUzOTku LmFkOTFjZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTMxLDcgKzMxLDggQEAgZHJtLSQoQ09ORklHX0RFQlVH X0ZTKSArPSBkcm1fZGVidWdmcy5vIGRybV9kZWJ1Z2ZzX2NyYy5vCiBkcm1fa21zX2hlbHBlci15 IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8g XAogCQlkcm1fcGxhbmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vIGRybV9hdG9taWNf aGVscGVyLm8gXAogCQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hl bHBlci5vIFwKLQkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8K KwkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAorCQlkcm1f c2NkY19oZWxwZXIubwogCiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJ Uk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8KIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9G QkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9oZWxwZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBl ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMGUxMjEKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKQEAgLTAsMCArMSwx MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YiBsaWNlbnNlLAorICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09G VFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUgPGRybS9k cm1fc2NkY19oZWxwZXIuaD4KKworLyoqCisgKiBET0M6IHNjZGMgaGVscGVycworICoKKyAqIFN0 YXR1cyBhbmQgQ29udHJvbCBEYXRhIENoYW5uZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGludHJv ZHVjZWQgYnkgdGhlCisgKiBIRE1JIDIuMCBzcGVjaWZpY2F0aW9uLiBJdCBpcyBhIHBvaW50LXRv LXBvaW50IHByb3RvY29sIHRoYXQgYWxsb3dzIHRoZQorICogSERNSSBzb3VyY2UgYW5kIEhETUkg c2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUgc2FtZSBJMkMgaW50ZXJmYWNlIHRoYXQKKyAqIGlz IHVzZWQgdG8gYWNjZXNzIEVESUQgc2VydmVzIGFzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZv ciBTQ0RDLgorICovCisKKyNkZWZpbmUgU0NEQ19JMkNfU0xBVkVfQUREUkVTUyAweDU0CisKKy8q KgorICogZHJtX3NjZGNfcmVhZCAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQworICog QGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCisgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxv Y2sgdG8gcmVhZAorICogQGJ1ZmZlcjogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8g cmVhZAorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHJlYWQKKyAqCisgKiBSZWFkcyBh IGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAq CisgKiBSZXR1cm5zOgorICogVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gU0NEQyBvciBh IG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3NpemVfdCBkcm1fc2NkY19y ZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LCB2b2lkICpidWZmZXIs CisJCSAgICAgIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpMmNfbXNnIG1zZ3NbMl0gPSB7CisJ CXsKKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKKwkJCS5mbGFncyA9IDAsCisJ CQkubGVuID0gMSwKKwkJCS5idWYgPSAmb2Zmc2V0LAorCQl9LCB7CisJCQkuYWRkciA9IFNDRENf STJDX1NMQVZFX0FERFJFU1MsCisJCQkuZmxhZ3MgPSBJMkNfTV9SRCwKKwkJCS5sZW4gPSBzaXpl LAorCQkJLmJ1ZiA9IGJ1ZmZlciwKKwkJfQorCX07CisKKwlyZXR1cm4gaTJjX3RyYW5zZmVyKGFk YXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncykpOworfQorRVhQT1JUX1NZTUJPTChkcm1fc2Nk Y19yZWFkKTsKKworLyoqCisgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRlIGEgYmxvY2sgb2YgZGF0 YSB0byBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKKyAqIEBvZmZzZXQ6IHN0YXJ0 IG9mZnNldCBvZiBibG9jayB0byB3cml0ZQorICogQGJ1ZmZlcjogYmxvY2sgb2YgZGF0YSB0byB3 cml0ZQorICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHdyaXRlCisgKgorICogV3JpdGVz IGEgYmxvY2sgb2YgZGF0YSB0byBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAq CisgKiBSZXR1cm5zOgorICogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIFNDREMgb3Ig YSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3NzaXplX3QgZHJtX3NjZGNf d3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCSAgICAgICBj b25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpMmNfbXNnIG1zZyA9 IHsKKwkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAorCQkuZmxhZ3MgPSAwLAorCQku bGVuID0gMSArIHNpemUsCisJCS5idWYgPSBOVUxMLAorCX07CisJdm9pZCAqZGF0YTsKKwlpbnQg ZXJyOworCisJZGF0YSA9IGttYWxsb2MoMSArIHNpemUsIEdGUF9URU1QT1JBUlkpOworCWlmICgh ZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltc2cuYnVmID0gZGF0YTsKKworCW1lbWNweShk YXRhLCAmb2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSk7CisJbWVtY3B5KGRhdGEgKyAxLCBidWZmZXIs IHNpemUpOworCisJZXJyID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpOworCisJa2Zy ZWUoZGF0YSk7CisKKwlyZXR1cm4gZXJyOworfQorRVhQT1JUX1NZTUJPTChkcm1fc2NkY193cml0 ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBiL2luY2x1ZGUv ZHJtL2RybV9zY2RjX2hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjkzYjA3YmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIu aApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUK KyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIERSTV9TQ0RDX0hFTFBFUl9ICisj ZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9ICisKKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIFNDRENfU0lOS19WRVJTSU9OIDB4MDEKKwor I2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJTSU9OIDB4MDIKKworI2RlZmluZSBTQ0RDX1VQREFURV8w IDB4MTAKKyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX1RFU1QgKDEgPDwgMikKKyNkZWZpbmUg IFNDRENfQ0VEX1VQREFURSAoMSA8PCAxKQorI2RlZmluZSAgU0NEQ19TVEFUVVNfVVBEQVRFICgx IDw8IDApCisKKyNkZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCisKKyNkZWZpbmUgU0NEQ19UTURT X0NPTkZJRyAweDIwCisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzQwICgx IDw8IDEpCisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzEwICgwIDw8IDEp CisjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8IDApCisKKyNkZWZpbmUgU0NE Q19TQ1JBTUJMRVJfU1RBVFVTIDB4MjEKKyNkZWZpbmUgIFNDRENfU0NSQU1CTElOR19TVEFUVVMg KDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX0NPTkZJR18wIDB4MzAKKyNkZWZpbmUgIFNDRENfUkVB RF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzAg MHg0MAorI2RlZmluZSAgU0NEQ19DSDJfTE9DSyAoMSA8IDMpCisjZGVmaW5lICBTQ0RDX0NIMV9M T0NLICgxIDwgMikKKyNkZWZpbmUgIFNDRENfQ0gwX0xPQ0sgKDEgPCAxKQorI2RlZmluZSAgU0NE Q19DSF9MT0NLX01BU0sgKFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NIMV9MT0NLIHwgU0NEQ19DSDBf TE9DSykKKyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8IDApCisKKyNkZWZpbmUgU0NE Q19TVEFUVVNfRkxBR1NfMSAweDQxCisKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzBfTCAweDUwCisj ZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMV9MIDB4 NTIKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzFfSCAweDUzCisjZGVmaW5lIFNDRENfRVJSX0RFVF8y X0wgMHg1NAorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9IIDB4NTUKKyNkZWZpbmUgIFNDRENfQ0hB Tk5FTF9WQUxJRCAoMSA8PCA3KQorCisjZGVmaW5lIFNDRENfRVJSX0RFVF9DSEVDS1NVTSAweDU2 CisKKyNkZWZpbmUgU0NEQ19URVNUX0NPTkZJR18wIDB4YzAKKyNkZWZpbmUgIFNDRENfVEVTVF9S RUFEX1JFUVVFU1QgKDEgPDwgNykKKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1RfREVM QVkoeCkgKCh4KSAmIDB4N2YpCisKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUkg MHhkMAorI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSV9TSVpFIDMKKworI2RlZmlu ZSBTQ0RDX0RFVklDRV9JRCAweGQzCisjZGVmaW5lIFNDRENfREVWSUNFX0lEX1NJWkUgOAorCisj ZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4ZGIKKyNkZWZpbmUgIFNDRENf REVWSUNFX0hBUkRXQVJFX1JFVklTSU9OX01BSk9SKHgpICgoKHgpID4+IDQpICYgMHhmKQorI2Rl ZmluZSAgU0NEQ19ERVZJQ0VfSEFSRFdBUkVfUkVWSVNJT05fTUlOT1IoeCkgKCgoeCkgPj4gMCkg JiAweGYpCisKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfU09GVFdBUkVfTUFKT1JfUkVWSVNJT04gMHhk YworI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NSU5PUl9SRVZJU0lPTiAweGRkCisKKyNk ZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUMgMHhkZQorI2RlZmluZSBTQ0RDX01BTlVG QUNUVVJFUl9TUEVDSUZJQ19TSVpFIDM0CisKK3NzaXplX3QgZHJtX3NjZGNfcmVhZChzdHJ1Y3Qg aTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVmZmVyLAorCQkgICAgICBz aXplX3Qgc2l6ZSk7Citzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAq YWRhcHRlciwgdTggb2Zmc2V0LAorCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qg c2l6ZSk7CisKKy8qKgorICogZHJtX3NjZGNfcmVhZGIgLSByZWFkIGEgc2luZ2xlIGJ5dGUgZnJv bSBTQ0RDCisgKiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKKyAqIEBvZmZzZXQ6IG9mZnNldCBvZiBy ZWdpc3RlciB0byByZWFkCisgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHJlZ2lz dGVyIHZhbHVlCisgKgorICogUmVhZHMgYSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMuIFRoaXMgaXMg YSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKKyAqIGRybV9zY2RjX3JlYWQoKSBmdW5j dGlvbi4KKyAqCisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJy b3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY19yZWFk YihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJCQkgdTggKnZhbHVl KQoreworCXJldHVybiBkcm1fc2NkY19yZWFkKGFkYXB0ZXIsIG9mZnNldCwgdmFsdWUsIHNpemVv ZigqdmFsdWUpKTsKK30KKworLyoqCisgKiBkcm1fc2NkY193cml0ZWIgLSB3cml0ZSBhIHNpbmds ZSBieXRlIHRvIFNDREMKKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgorICogQG9mZnNldDogb2Zm c2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKKyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9uIGZvciB0 aGUgcmVnaXN0ZXIgdmFsdWUKKyAqCisgKiBXcml0ZXMgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDLiBU aGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgdGhlCisgKiBkcm1fc2NkY193cml0 ZSgpIGZ1bmN0aW9uLgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdh dGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGRybV9z Y2RjX3dyaXRlYihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwKKwkJCQkg IHU4IHZhbHVlKQoreworCXJldHVybiBkcm1fc2NkY193cml0ZShhZGFwdGVyLCBvZmZzZXQsICZ2 YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKKyNlbmRpZgotLSAKMS45LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=