From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v10 1/6] drm: Add SCDC helpers Date: Mon, 13 Mar 2017 16:53:59 +0530 Message-ID: <1489404244-16608-2-git-send-email-shashank.sharma@intel.com> References: <1489404244-16608-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: <1489404244-16608-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: ville.syrjala@linux.intel.com, ander.conselvan.de.oliveira@intel.com Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, Thierry Reding , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClNDREMgaXMgYSBtZWNo YW5pc20gZGVmaW5lZCBpbiB0aGUgSERNSSAyLjAgc3BlY2lmaWNhdGlvbiB0aGF0IGFsbG93cwp0 aGUgc291cmNlIGFuZCBzaW5rIGRldmljZXMgdG8gY29tbXVuaWNhdGUuCgpUaGlzIGNvbW1pdCBp bnRyb2R1Y2VzIGhlbHBlcnMgdG8gYWNjZXNzIHRoZSBTQ0RDIGFuZCBwcm92aWRlcyB0aGUKc3lt Ym9saWMgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHJlZ2lzdGVycyBkZWZpbmVkIGluIHRoZSBzcGVj aWZpY2F0aW9uLgoKVjI6IFJlYmFzZS4KVjM6IEFkZGVkIFItQiBmcm9tIEpvc2UuClY0OiBSZWJh c2UKVjU6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZQogLSBIYW5kbGUgdGhl IEkyYyByZXR1cm4gdmFsdWVzIGluIGEgYmV0dGVyIHdheSAoZHBfZHVhbF9tb2RlKQogLSBNYWtl IHRoZSBtYWNyb3MgZm9yIFNDREMgTWFqb3IvTWlub3IgbW9yZSByZWFkYWJsZSwgYnkgYWRkaW5n CiAgIGEgJ0dFVCcgaW4gdGhlIG1hY3JvIG5hbWVzClY2OiBSZWJhc2UKVjc6IFJlYmFzZQpWODog UmViYXNlClY5OiBSZWJhc2UKVjEwOiBSZWJhc2UKClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVk aW5nIDx0cmVkaW5nQG52aWRpYS5jb20+ClNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8 c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEpvc2UgQWJyZXUgPGpvYWJy ZXVAc3lub3BzeXMuY29tPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5y c3QgfCAgMTIgKysrKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAg MyArLQogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jICAgICB8IDEyMyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCAg ICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMg Y2hhbmdlZCwgMjY5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhl bHBlcnMucnN0CmluZGV4IDAzMDQwYWEuLjc1OTI3NTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRp b24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWtt cy1oZWxwZXJzLnJzdApAQCAtMjE3LDYgKzIxNywxOCBAQCBFRElEIEhlbHBlciBGdW5jdGlvbnMg UmVmZXJlbmNlCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKICAg IDpleHBvcnQ6CiAKK1NDREMgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9k cm1fc2NkY19oZWxwZXIuYworICAgOmRvYzogc2NkYyBoZWxwZXJzCisKKy4uIGtlcm5lbC1kb2M6 OiBpbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaAorICAgOmludGVybmFsOgorCisuLiBrZXJu ZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCisgICA6ZXhwb3J0Ogor CiBSZWN0YW5nbGUgVXRpbGl0aWVzIFJlZmVyZW5jZQogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlCmluZGV4IDU5YWFlNDMuLjU5ZjBmOWIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTMx LDcgKzMxLDggQEAgZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdmcy5vIGRybV9k ZWJ1Z2ZzX2NyYy5vCiBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9k cF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAogCQlkcm1fcGxhbmVfaGVscGVyLm8gZHJt X2RwX21zdF90b3BvbG9neS5vIGRybV9hdG9taWNfaGVscGVyLm8gXAogCQlkcm1fa21zX2hlbHBl cl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5vIFwKLQkJZHJtX3NpbXBsZV9rbXNf aGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8KKwkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8g ZHJtX21vZGVzZXRfaGVscGVyLm8gXAorCQlkcm1fc2NkY19oZWxwZXIubwogCiBkcm1fa21zX2hl bHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8K IGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9o ZWxwZXIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmMyZGQzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX3NjZGNfaGVscGVyLmMKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTUgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YiBsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlCisgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucworICogb2YgdGhlIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KKworI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KKworLyoqCisg KiBET0M6IHNjZGMgaGVscGVycworICoKKyAqIFN0YXR1cyBhbmQgQ29udHJvbCBEYXRhIENoYW5u ZWwgKFNDREMpIGlzIGEgbWVjaGFuaXNtIGludHJvZHVjZWQgYnkgdGhlCisgKiBIRE1JIDIuMCBz cGVjaWZpY2F0aW9uLiBJdCBpcyBhIHBvaW50LXRvLXBvaW50IHByb3RvY29sIHRoYXQgYWxsb3dz IHRoZQorICogSERNSSBzb3VyY2UgYW5kIEhETUkgc2luayB0byBleGNoYW5nZSBkYXRhLiBUaGUg c2FtZSBJMkMgaW50ZXJmYWNlIHRoYXQKKyAqIGlzIHVzZWQgdG8gYWNjZXNzIEVESUQgc2VydmVz IGFzIHRoZSB0cmFuc3BvcnQgbWVjaGFuaXNtIGZvciBTQ0RDLgorICovCisKKyNkZWZpbmUgU0NE Q19JMkNfU0xBVkVfQUREUkVTUyAweDU0CisKKy8qKgorICogZHJtX3NjZGNfcmVhZCAtIHJlYWQg YSBibG9jayBvZiBkYXRhIGZyb20gU0NEQworICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCisg KiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gcmVhZAorICogQGJ1ZmZlcjogcmV0 dXJuIGxvY2F0aW9uIGZvciB0aGUgYmxvY2sgdG8gcmVhZAorICogQHNpemU6IHNpemUgb2YgdGhl IGJsb2NrIHRvIHJlYWQKKyAqCisgKiBSZWFkcyBhIGJsb2NrIG9mIGRhdGEgZnJvbSBTQ0RDLCBz dGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAqCisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNj ZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3NzaXplX3QgZHJtX3Nj ZGNfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNldCwgdm9pZCAqYnVm ZmVyLAorCQkgICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBpMmNfbXNn IG1zZ3NbMl0gPSB7CisJCXsKKwkJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKKwkJ CS5mbGFncyA9IDAsCisJCQkubGVuID0gMSwKKwkJCS5idWYgPSAmb2Zmc2V0LAorCQl9LCB7CisJ CQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJCQkuZmxhZ3MgPSBJMkNfTV9SRCwK KwkJCS5sZW4gPSBzaXplLAorCQkJLmJ1ZiA9IGJ1ZmZlciwKKwkJfQorCX07CisKKwlyZXQgPSBp MmNfdHJhbnNmZXIoYWRhcHRlciwgbXNncywgQVJSQVlfU0laRShtc2dzKSk7CisJaWYgKHJldCA8 IDApCisJCXJldHVybiByZXQ7CisJaWYgKHJldCAhPSBBUlJBWV9TSVpFKG1zZ3MpKQorCQlyZXR1 cm4gLUVQUk9UTzsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fc2NkY19yZWFk KTsKKworLyoqCisgKiBkcm1fc2NkY193cml0ZSAtIHdyaXRlIGEgYmxvY2sgb2YgZGF0YSB0byBT Q0RDCisgKiBAYWRhcHRlcjogSTJDIGNvbnRyb2xsZXIKKyAqIEBvZmZzZXQ6IHN0YXJ0IG9mZnNl dCBvZiBibG9jayB0byB3cml0ZQorICogQGJ1ZmZlcjogYmxvY2sgb2YgZGF0YSB0byB3cml0ZQor ICogQHNpemU6IHNpemUgb2YgdGhlIGJsb2NrIHRvIHdyaXRlCisgKgorICogV3JpdGVzIGEgYmxv Y2sgb2YgZGF0YSB0byBTQ0RDLCBzdGFydGluZyBhdCBhIGdpdmVuIG9mZnNldC4KKyAqCisgKiBS ZXR1cm5zOgorICogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUu CisgKi8KK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy LCB1OCBvZmZzZXQsCisJCSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKQor eworCXN0cnVjdCBpMmNfbXNnIG1zZyA9IHsKKwkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERS RVNTLAorCQkuZmxhZ3MgPSAwLAorCQkubGVuID0gMSArIHNpemUsCisJCS5idWYgPSBOVUxMLAor CX07CisJdm9pZCAqZGF0YTsKKwlpbnQgZXJyOworCisJZGF0YSA9IGttYWxsb2MoMSArIHNpemUs IEdGUF9URU1QT1JBUlkpOworCWlmICghZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltc2cu YnVmID0gZGF0YTsKKworCW1lbWNweShkYXRhLCAmb2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSk7CisJ bWVtY3B5KGRhdGEgKyAxLCBidWZmZXIsIHNpemUpOworCisJZXJyID0gaTJjX3RyYW5zZmVyKGFk YXB0ZXIsICZtc2csIDEpOworCisJa2ZyZWUoZGF0YSk7CisKKwlpZiAoZXJyIDwgMCkKKwkJcmV0 dXJuIGVycjsKKwlpZiAoZXJyICE9IDEpCisJCXJldHVybiAtRVBST1RPOworCisJcmV0dXJuIDA7 Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zY2RjX3dyaXRlKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9zY2RjX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM1MmRlYgotLS0gL2Rldi9udWxsCisr KyBiL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCkBAIC0wLDAgKzEsMTMyIEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDE1IE5WSURJQSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9m IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICov CisKKyNpZm5kZWYgRFJNX1NDRENfSEVMUEVSX0gKKyNkZWZpbmUgRFJNX1NDRENfSEVMUEVSX0gK KworI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNk ZWZpbmUgU0NEQ19TSU5LX1ZFUlNJT04gMHgwMQorCisjZGVmaW5lIFNDRENfU09VUkNFX1ZFUlNJ T04gMHgwMgorCisjZGVmaW5lIFNDRENfVVBEQVRFXzAgMHgxMAorI2RlZmluZSAgU0NEQ19SRUFE X1JFUVVFU1RfVEVTVCAoMSA8PCAyKQorI2RlZmluZSAgU0NEQ19DRURfVVBEQVRFICgxIDw8IDEp CisjZGVmaW5lICBTQ0RDX1NUQVRVU19VUERBVEUgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX1VQ REFURV8xIDB4MTEKKworI2RlZmluZSBTQ0RDX1RNRFNfQ09ORklHIDB4MjAKKyNkZWZpbmUgIFND RENfVE1EU19CSVRfQ0xPQ0tfUkFUSU9fQllfNDAgKDEgPDwgMSkKKyNkZWZpbmUgIFNDRENfVE1E U19CSVRfQ0xPQ0tfUkFUSU9fQllfMTAgKDAgPDwgMSkKKyNkZWZpbmUgIFNDRENfU0NSQU1CTElO R19FTkFCTEUgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX1NDUkFNQkxFUl9TVEFUVVMgMHgyMQor I2RlZmluZSAgU0NEQ19TQ1JBTUJMSU5HX1NUQVRVUyAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENf Q09ORklHXzAgMHgzMAorI2RlZmluZSAgU0NEQ19SRUFEX1JFUVVFU1RfRU5BQkxFICgxIDw8IDAp CisKKyNkZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMCAweDQwCisjZGVmaW5lICBTQ0RDX0NIMl9M T0NLICgxIDwgMykKKyNkZWZpbmUgIFNDRENfQ0gxX0xPQ0sgKDEgPCAyKQorI2RlZmluZSAgU0NE Q19DSDBfTE9DSyAoMSA8IDEpCisjZGVmaW5lICBTQ0RDX0NIX0xPQ0tfTUFTSyAoU0NEQ19DSDJf TE9DSyB8IFNDRENfQ0gxX0xPQ0sgfCBTQ0RDX0NIMF9MT0NLKQorI2RlZmluZSAgU0NEQ19DTE9D S19ERVRFQ1QgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX1NUQVRVU19GTEFHU18xIDB4NDEKKwor I2RlZmluZSBTQ0RDX0VSUl9ERVRfMF9MIDB4NTAKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzBfSCAw eDUxCisjZGVmaW5lIFNDRENfRVJSX0RFVF8xX0wgMHg1MgorI2RlZmluZSBTQ0RDX0VSUl9ERVRf MV9IIDB4NTMKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzJfTCAweDU0CisjZGVmaW5lIFNDRENfRVJS X0RFVF8yX0ggMHg1NQorI2RlZmluZSAgU0NEQ19DSEFOTkVMX1ZBTElEICgxIDw8IDcpCisKKyNk ZWZpbmUgU0NEQ19FUlJfREVUX0NIRUNLU1VNIDB4NTYKKworI2RlZmluZSBTQ0RDX1RFU1RfQ09O RklHXzAgMHhjMAorI2RlZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVTVCAoMSA8PCA3KQorI2Rl ZmluZSAgU0NEQ19URVNUX1JFQURfUkVRVUVTVF9ERUxBWSh4KSAoKHgpICYgMHg3ZikKKworI2Rl ZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSSAweGQwCisjZGVmaW5lIFNDRENfTUFOVUZB Q1RVUkVSX0lFRUVfT1VJX1NJWkUgMworCisjZGVmaW5lIFNDRENfREVWSUNFX0lEIDB4ZDMKKyNk ZWZpbmUgU0NEQ19ERVZJQ0VfSURfU0laRSA4CisKKyNkZWZpbmUgU0NEQ19ERVZJQ0VfSEFSRFdB UkVfUkVWSVNJT04gMHhkYgorI2RlZmluZSAgU0NEQ19HRVRfREVWSUNFX0hBUkRXQVJFX1JFVklT SU9OX01BSk9SKHgpICgoKHgpID4+IDQpICYgMHhmKQorI2RlZmluZSAgU0NEQ19HRVRfREVWSUNF X0hBUkRXQVJFX1JFVklTSU9OX01JTk9SKHgpICgoKHgpID4+IDApICYgMHhmKQorCisjZGVmaW5l IFNDRENfREVWSUNFX1NPRlRXQVJFX01BSk9SX1JFVklTSU9OIDB4ZGMKKyNkZWZpbmUgU0NEQ19E RVZJQ0VfU09GVFdBUkVfTUlOT1JfUkVWSVNJT04gMHhkZAorCisjZGVmaW5lIFNDRENfTUFOVUZB Q1RVUkVSX1NQRUNJRklDIDB4ZGUKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfU1BFQ0lGSUNf U0laRSAzNAorCitzc2l6ZV90IGRybV9zY2RjX3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFw dGVyLCB1OCBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwKKwkJICAgICAgc2l6ZV90IHNpemUpOworc3Np emVfdCBkcm1fc2NkY193cml0ZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IG9mZnNl dCwKKwkJICAgICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOworCisvKioKKyAq IGRybV9zY2RjX3JlYWRiIC0gcmVhZCBhIHNpbmdsZSBieXRlIGZyb20gU0NEQworICogQGFkYXB0 ZXI6IEkyQyBhZGFwdGVyCisgKiBAb2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0ZXIgdG8gcmVhZAor ICogQHZhbHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1ZQorICoKKyAq IFJlYWRzIGEgc2luZ2xlIGJ5dGUgZnJvbSBTQ0RDLiBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3Jh cHBlciBhcm91bmQgdGhlCisgKiBkcm1fc2NkY19yZWFkKCkgZnVuY3Rpb24uCisgKgorICogUmV0 dXJuczoKKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVy ZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQgZHJtX3NjZGNfcmVhZGIoc3RydWN0IGkyY19hZGFw dGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCQkJIHU4ICp2YWx1ZSkKK3sKKwlyZXR1cm4gZHJt X3NjZGNfcmVhZChhZGFwdGVyLCBvZmZzZXQsIHZhbHVlLCBzaXplb2YoKnZhbHVlKSk7Cit9CisK Ky8qKgorICogZHJtX3NjZGNfd3JpdGViIC0gd3JpdGUgYSBzaW5nbGUgYnl0ZSB0byBTQ0RDCisg KiBAYWRhcHRlcjogSTJDIGFkYXB0ZXIKKyAqIEBvZmZzZXQ6IG9mZnNldCBvZiByZWdpc3RlciB0 byByZWFkCisgKiBAdmFsdWU6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIHJlZ2lzdGVyIHZhbHVl CisgKgorICogV3JpdGVzIGEgc2luZ2xlIGJ5dGUgdG8gU0NEQy4gVGhpcyBpcyBhIGNvbnZlbmll bmNlIHdyYXBwZXIgYXJvdW5kIHRoZQorICogZHJtX3NjZGNfd3JpdGUoKSBmdW5jdGlvbi4KKyAq CisgKiBSZXR1cm5zOgorICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBv biBmYWlsdXJlLgorICovCitzdGF0aWMgaW5saW5lIGludCBkcm1fc2NkY193cml0ZWIoc3RydWN0 IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCQkJICB1OCB2YWx1ZSkKK3sKKwly ZXR1cm4gZHJtX3NjZGNfd3JpdGUoYWRhcHRlciwgb2Zmc2V0LCAmdmFsdWUsIHNpemVvZih2YWx1 ZSkpOworfQorCisjZW5kaWYKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK