From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v5 1/6] drm: Add SCDC helpers Date: Tue, 28 Feb 2017 14:09:05 +0530 Message-ID: <1488271150-7423-2-git-send-email-shashank.sharma@intel.com> References: <1488271150-7423-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: <1488271150-7423-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, ander.conselvan.de.oliveira@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 CiAgIGEgJ0dFVCcgaW4gdGhlIG1hY3JvIG5hbWVzCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJl ZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEg PHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBKb3NlIEFicmV1IDxqb2Fi cmV1QHN5bm9wc3lzLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMu cnN0IHwgIDEyICsrKysKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyAgICAgfCAxMjMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgg ICAgICAgICB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDI2OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0 aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1o ZWxwZXJzLnJzdAppbmRleCAwMzA0MGFhLi43NTkyNzU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0 aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1r bXMtaGVscGVycy5yc3QKQEAgLTIxNyw2ICsyMTcsMTggQEAgRURJRCBIZWxwZXIgRnVuY3Rpb25z IFJlZmVyZW5jZQogLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCiAg ICA6ZXhwb3J0OgogCitTQ0RDIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0v ZHJtX3NjZGNfaGVscGVyLmMKKyAgIDpkb2M6IHNjZGMgaGVscGVycworCisuLiBrZXJuZWwtZG9j OjogaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmgKKyAgIDppbnRlcm5hbDoKKworLi4ga2Vy bmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYworICAgOmV4cG9ydDoK KwogUmVjdGFuZ2xlIFV0aWxpdGllcyBSZWZlcmVuY2UKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQppbmRleCAzZWU5NTc5Li5kYTViMDhjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0z MSw3ICszMSw4IEBAIGRybS0kKENPTkZJR19ERUJVR19GUykgKz0gZHJtX2RlYnVnZnMubyBkcm1f ZGVidWdmc19jcmMubwogZHJtX2ttc19oZWxwZXIteSA6PSBkcm1fY3J0Y19oZWxwZXIubyBkcm1f ZHBfaGVscGVyLm8gZHJtX3Byb2JlX2hlbHBlci5vIFwKIAkJZHJtX3BsYW5lX2hlbHBlci5vIGRy bV9kcF9tc3RfdG9wb2xvZ3kubyBkcm1fYXRvbWljX2hlbHBlci5vIFwKIAkJZHJtX2ttc19oZWxw ZXJfY29tbW9uLm8gZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIubyBcCi0JCWRybV9zaW1wbGVfa21z X2hlbHBlci5vIGRybV9tb2Rlc2V0X2hlbHBlci5vCisJCWRybV9zaW1wbGVfa21zX2hlbHBlci5v IGRybV9tb2Rlc2V0X2hlbHBlci5vIFwKKwkJZHJtX3NjZGNfaGVscGVyLm8KIAogZHJtX2ttc19o ZWxwZXItJChDT05GSUdfRFJNX0xPQURfRURJRF9GSVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5v CiBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJf aGVscGVyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5jMmRkMzNmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9zY2RjX2hlbHBlci5jCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChj KSAyMDE1IE5WSURJQSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWIgbGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZQorICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+CisKKy8qKgor ICogRE9DOiBzY2RjIGhlbHBlcnMKKyAqCisgKiBTdGF0dXMgYW5kIENvbnRyb2wgRGF0YSBDaGFu bmVsIChTQ0RDKSBpcyBhIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGJ5IHRoZQorICogSERNSSAyLjAg c3BlY2lmaWNhdGlvbi4gSXQgaXMgYSBwb2ludC10by1wb2ludCBwcm90b2NvbCB0aGF0IGFsbG93 cyB0aGUKKyAqIEhETUkgc291cmNlIGFuZCBIRE1JIHNpbmsgdG8gZXhjaGFuZ2UgZGF0YS4gVGhl IHNhbWUgSTJDIGludGVyZmFjZSB0aGF0CisgKiBpcyB1c2VkIHRvIGFjY2VzcyBFRElEIHNlcnZl cyBhcyB0aGUgdHJhbnNwb3J0IG1lY2hhbmlzbSBmb3IgU0NEQy4KKyAqLworCisjZGVmaW5lIFND RENfSTJDX1NMQVZFX0FERFJFU1MgMHg1NAorCisvKioKKyAqIGRybV9zY2RjX3JlYWQgLSByZWFk IGEgYmxvY2sgb2YgZGF0YSBmcm9tIFNDREMKKyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgor ICogQG9mZnNldDogc3RhcnQgb2Zmc2V0IG9mIGJsb2NrIHRvIHJlYWQKKyAqIEBidWZmZXI6IHJl dHVybiBsb2NhdGlvbiBmb3IgdGhlIGJsb2NrIHRvIHJlYWQKKyAqIEBzaXplOiBzaXplIG9mIHRo ZSBibG9jayB0byByZWFkCisgKgorICogUmVhZHMgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQywg c3RhcnRpbmcgYXQgYSBnaXZlbiBvZmZzZXQuCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3Vj Y2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzc2l6ZV90IGRybV9z Y2RjX3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsIHZvaWQgKmJ1 ZmZlciwKKwkJICAgICAgc2l6ZV90IHNpemUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgaTJjX21z ZyBtc2dzWzJdID0geworCQl7CisJCQkuYWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJ CQkuZmxhZ3MgPSAwLAorCQkJLmxlbiA9IDEsCisJCQkuYnVmID0gJm9mZnNldCwKKwkJfSwgewor CQkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFWRV9BRERSRVNTLAorCQkJLmZsYWdzID0gSTJDX01fUkQs CisJCQkubGVuID0gc2l6ZSwKKwkJCS5idWYgPSBidWZmZXIsCisJCX0KKwl9OworCisJcmV0ID0g aTJjX3RyYW5zZmVyKGFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncykpOworCWlmIChyZXQg PCAwKQorCQlyZXR1cm4gcmV0OworCWlmIChyZXQgIT0gQVJSQVlfU0laRShtc2dzKSkKKwkJcmV0 dXJuIC1FUFJPVE87CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfcmVh ZCk7CisKKy8qKgorICogZHJtX3NjZGNfd3JpdGUgLSB3cml0ZSBhIGJsb2NrIG9mIGRhdGEgdG8g U0NEQworICogQGFkYXB0ZXI6IEkyQyBjb250cm9sbGVyCisgKiBAb2Zmc2V0OiBzdGFydCBvZmZz ZXQgb2YgYmxvY2sgdG8gd3JpdGUKKyAqIEBidWZmZXI6IGJsb2NrIG9mIGRhdGEgdG8gd3JpdGUK KyAqIEBzaXplOiBzaXplIG9mIHRoZSBibG9jayB0byB3cml0ZQorICoKKyAqIFdyaXRlcyBhIGJs b2NrIG9mIGRhdGEgdG8gU0NEQywgc3RhcnRpbmcgYXQgYSBnaXZlbiBvZmZzZXQuCisgKgorICog UmV0dXJuczoKKyAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJl LgorICovCitzc2l6ZV90IGRybV9zY2RjX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRl ciwgdTggb2Zmc2V0LAorCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkK K3sKKwlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7CisJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQURE UkVTUywKKwkJLmZsYWdzID0gMCwKKwkJLmxlbiA9IDEgKyBzaXplLAorCQkuYnVmID0gTlVMTCwK Kwl9OworCXZvaWQgKmRhdGE7CisJaW50IGVycjsKKworCWRhdGEgPSBrbWFsbG9jKDEgKyBzaXpl LCBHRlBfVEVNUE9SQVJZKTsKKwlpZiAoIWRhdGEpCisJCXJldHVybiAtRU5PTUVNOworCisJbXNn LmJ1ZiA9IGRhdGE7CisKKwltZW1jcHkoZGF0YSwgJm9mZnNldCwgc2l6ZW9mKG9mZnNldCkpOwor CW1lbWNweShkYXRhICsgMSwgYnVmZmVyLCBzaXplKTsKKworCWVyciA9IGkyY190cmFuc2Zlcihh ZGFwdGVyLCAmbXNnLCAxKTsKKworCWtmcmVlKGRhdGEpOworCisJaWYgKGVyciA8IDApCisJCXJl dHVybiBlcnI7CisJaWYgKGVyciAhPSAxKQorCQlyZXR1cm4gLUVQUk9UTzsKKworCXJldHVybiAw OworfQorRVhQT1JUX1NZTUJPTChkcm1fc2NkY193cml0ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9kcm1fc2NkY19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNTJkZWIKLS0tIC9kZXYvbnVsbAor KysgYi9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaApAQCAtMCwwICsxLDEzMiBAQAorLyoK KyAqIENvcHlyaWdodCAoYykgMjAxNSBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3ViIGxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5H RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAq LworCisjaWZuZGVmIERSTV9TQ0RDX0hFTFBFUl9ICisjZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9I CisKKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisj ZGVmaW5lIFNDRENfU0lOS19WRVJTSU9OIDB4MDEKKworI2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJT SU9OIDB4MDIKKworI2RlZmluZSBTQ0RDX1VQREFURV8wIDB4MTAKKyNkZWZpbmUgIFNDRENfUkVB RF9SRVFVRVNUX1RFU1QgKDEgPDwgMikKKyNkZWZpbmUgIFNDRENfQ0VEX1VQREFURSAoMSA8PCAx KQorI2RlZmluZSAgU0NEQ19TVEFUVVNfVVBEQVRFICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19V UERBVEVfMSAweDExCisKKyNkZWZpbmUgU0NEQ19UTURTX0NPTkZJRyAweDIwCisjZGVmaW5lICBT Q0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzQwICgxIDw8IDEpCisjZGVmaW5lICBTQ0RDX1RN RFNfQklUX0NMT0NLX1JBVElPX0JZXzEwICgwIDw8IDEpCisjZGVmaW5lICBTQ0RDX1NDUkFNQkxJ TkdfRU5BQkxFICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19TQ1JBTUJMRVJfU1RBVFVTIDB4MjEK KyNkZWZpbmUgIFNDRENfU0NSQU1CTElOR19TVEFUVVMgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RD X0NPTkZJR18wIDB4MzAKKyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAw KQorCisjZGVmaW5lIFNDRENfU1RBVFVTX0ZMQUdTXzAgMHg0MAorI2RlZmluZSAgU0NEQ19DSDJf TE9DSyAoMSA8IDMpCisjZGVmaW5lICBTQ0RDX0NIMV9MT0NLICgxIDwgMikKKyNkZWZpbmUgIFND RENfQ0gwX0xPQ0sgKDEgPCAxKQorI2RlZmluZSAgU0NEQ19DSF9MT0NLX01BU0sgKFNDRENfQ0gy X0xPQ0sgfCBTQ0RDX0NIMV9MT0NLIHwgU0NEQ19DSDBfTE9DSykKKyNkZWZpbmUgIFNDRENfQ0xP Q0tfREVURUNUICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMSAweDQxCisK KyNkZWZpbmUgU0NEQ19FUlJfREVUXzBfTCAweDUwCisjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0gg MHg1MQorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMV9MIDB4NTIKKyNkZWZpbmUgU0NEQ19FUlJfREVU XzFfSCAweDUzCisjZGVmaW5lIFNDRENfRVJSX0RFVF8yX0wgMHg1NAorI2RlZmluZSBTQ0RDX0VS Ul9ERVRfMl9IIDB4NTUKKyNkZWZpbmUgIFNDRENfQ0hBTk5FTF9WQUxJRCAoMSA8PCA3KQorCisj ZGVmaW5lIFNDRENfRVJSX0RFVF9DSEVDS1NVTSAweDU2CisKKyNkZWZpbmUgU0NEQ19URVNUX0NP TkZJR18wIDB4YzAKKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1QgKDEgPDwgNykKKyNk ZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JFUVVFU1RfREVMQVkoeCkgKCh4KSAmIDB4N2YpCisKKyNk ZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJfSUVFRV9PVUkgMHhkMAorI2RlZmluZSBTQ0RDX01BTlVG QUNUVVJFUl9JRUVFX09VSV9TSVpFIDMKKworI2RlZmluZSBTQ0RDX0RFVklDRV9JRCAweGQzCisj ZGVmaW5lIFNDRENfREVWSUNFX0lEX1NJWkUgOAorCisjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRX QVJFX1JFVklTSU9OIDB4ZGIKKyNkZWZpbmUgIFNDRENfR0VUX0RFVklDRV9IQVJEV0FSRV9SRVZJ U0lPTl9NQUpPUih4KSAoKCh4KSA+PiA0KSAmIDB4ZikKKyNkZWZpbmUgIFNDRENfR0VUX0RFVklD RV9IQVJEV0FSRV9SRVZJU0lPTl9NSU5PUih4KSAoKCh4KSA+PiAwKSAmIDB4ZikKKworI2RlZmlu ZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9NQUpPUl9SRVZJU0lPTiAweGRjCisjZGVmaW5lIFNDRENf REVWSUNFX1NPRlRXQVJFX01JTk9SX1JFVklTSU9OIDB4ZGQKKworI2RlZmluZSBTQ0RDX01BTlVG QUNUVVJFUl9TUEVDSUZJQyAweGRlCisjZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX1NQRUNJRklD X1NJWkUgMzQKKworc3NpemVfdCBkcm1fc2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciwgdTggb2Zmc2V0LCB2b2lkICpidWZmZXIsCisJCSAgICAgIHNpemVfdCBzaXplKTsKK3Nz aXplX3QgZHJtX3NjZGNfd3JpdGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZz ZXQsCisJCSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKTsKKworLyoqCisg KiBkcm1fc2NkY19yZWFkYiAtIHJlYWQgYSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMKKyAqIEBhZGFw dGVyOiBJMkMgYWRhcHRlcgorICogQG9mZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQK KyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0aW9uIGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUKKyAqCisg KiBSZWFkcyBhIHNpbmdsZSBieXRlIGZyb20gU0NEQy4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdy YXBwZXIgYXJvdW5kIHRoZQorICogZHJtX3NjZGNfcmVhZCgpIGZ1bmN0aW9uLgorICoKKyAqIFJl dHVybnM6CisgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1 cmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGRybV9zY2RjX3JlYWRiKHN0cnVjdCBpMmNfYWRh cHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAorCQkJCSB1OCAqdmFsdWUpCit7CisJcmV0dXJuIGRy bV9zY2RjX3JlYWQoYWRhcHRlciwgb2Zmc2V0LCB2YWx1ZSwgc2l6ZW9mKCp2YWx1ZSkpOworfQor CisvKioKKyAqIGRybV9zY2RjX3dyaXRlYiAtIHdyaXRlIGEgc2luZ2xlIGJ5dGUgdG8gU0NEQwor ICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyCisgKiBAb2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0ZXIg dG8gcmVhZAorICogQHZhbHVlOiByZXR1cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1 ZQorICoKKyAqIFdyaXRlcyBhIHNpbmdsZSBieXRlIHRvIFNDREMuIFRoaXMgaXMgYSBjb252ZW5p ZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUKKyAqIGRybV9zY2RjX3dyaXRlKCkgZnVuY3Rpb24uCisg KgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQgZHJtX3NjZGNfd3JpdGViKHN0cnVj dCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAorCQkJCSAgdTggdmFsdWUpCit7CisJ cmV0dXJuIGRybV9zY2RjX3dyaXRlKGFkYXB0ZXIsIG9mZnNldCwgJnZhbHVlLCBzaXplb2YodmFs dWUpKTsKK30KKworI2VuZGlmCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==