From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v8 1/6] drm: Add SCDC helpers Date: Wed, 8 Mar 2017 19:07:44 +0530 Message-ID: <1488980269-13046-2-git-send-email-shashank.sharma@intel.com> References: <1488980269-13046-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: <1488980269-13046-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 CiAgIGEgJ0dFVCcgaW4gdGhlIG1hY3JvIG5hbWVzClY2OiBSZWJhc2UKVjc6IFJlYmFzZQpWODog UmViYXNlCgpTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29t PgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5j b20+ClJldmlld2VkLWJ5OiBKb3NlIEFicmV1IDxqb2FicmV1QHN5bm9wc3lzLmNvbT4KLS0tCiBE b2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IHwgIDEyICsrKysKIGRyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9k cm1fc2NkY19oZWxwZXIuYyAgICAgfCAxMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogaW5jbHVkZS9kcm0vZHJtX3NjZGNfaGVscGVyLmggICAgICAgICB8IDEzMiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI2OSBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Ry bV9zY2RjX2hlbHBlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX3NjZGNf aGVscGVyLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMu cnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAppbmRleCAwMzA0MGFh Li43NTkyNzU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMu cnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKQEAgLTIxNyw2 ICsyMTcsMTggQEAgRURJRCBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQogLi4ga2VybmVsLWRv Yzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCiAgICA6ZXhwb3J0OgogCitTQ0RDIEhlbHBl ciBGdW5jdGlvbnMgUmVmZXJlbmNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK Ky4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3NjZGNfaGVscGVyLmMKKyAgIDpk b2M6IHNjZGMgaGVscGVycworCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9kcm0vZHJtX3NjZGNf aGVscGVyLmgKKyAgIDppbnRlcm5hbDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2Ry bS9kcm1fc2NkY19oZWxwZXIuYworICAgOmV4cG9ydDoKKwogUmVjdGFuZ2xlIFV0aWxpdGllcyBS ZWZlcmVuY2UKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCAz ZWU5NTc5Li5kYTViMDhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysr IGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0zMSw3ICszMSw4IEBAIGRybS0kKENPTkZJ R19ERUJVR19GUykgKz0gZHJtX2RlYnVnZnMubyBkcm1fZGVidWdmc19jcmMubwogZHJtX2ttc19o ZWxwZXIteSA6PSBkcm1fY3J0Y19oZWxwZXIubyBkcm1fZHBfaGVscGVyLm8gZHJtX3Byb2JlX2hl bHBlci5vIFwKIAkJZHJtX3BsYW5lX2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubyBkcm1f YXRvbWljX2hlbHBlci5vIFwKIAkJZHJtX2ttc19oZWxwZXJfY29tbW9uLm8gZHJtX2RwX2R1YWxf bW9kZV9oZWxwZXIubyBcCi0JCWRybV9zaW1wbGVfa21zX2hlbHBlci5vIGRybV9tb2Rlc2V0X2hl bHBlci5vCisJCWRybV9zaW1wbGVfa21zX2hlbHBlci5vIGRybV9tb2Rlc2V0X2hlbHBlci5vIFwK KwkJZHJtX3NjZGNfaGVscGVyLm8KIAogZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0xPQURf RURJRF9GSVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5vCiBkcm1fa21zX2hlbHBlci0kKENPTkZJ R19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fc2NkY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2Nk Y19oZWxwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmRkMzNmCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zY2RjX2hlbHBlci5jCkBAIC0w LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE1IE5WSURJQSBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZQorICogbmV4 dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMKKyAqIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4g VEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisKKyNpbmNsdWRl IDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+CisKKy8qKgorICogRE9DOiBzY2RjIGhlbHBlcnMKKyAq CisgKiBTdGF0dXMgYW5kIENvbnRyb2wgRGF0YSBDaGFubmVsIChTQ0RDKSBpcyBhIG1lY2hhbmlz bSBpbnRyb2R1Y2VkIGJ5IHRoZQorICogSERNSSAyLjAgc3BlY2lmaWNhdGlvbi4gSXQgaXMgYSBw b2ludC10by1wb2ludCBwcm90b2NvbCB0aGF0IGFsbG93cyB0aGUKKyAqIEhETUkgc291cmNlIGFu ZCBIRE1JIHNpbmsgdG8gZXhjaGFuZ2UgZGF0YS4gVGhlIHNhbWUgSTJDIGludGVyZmFjZSB0aGF0 CisgKiBpcyB1c2VkIHRvIGFjY2VzcyBFRElEIHNlcnZlcyBhcyB0aGUgdHJhbnNwb3J0IG1lY2hh bmlzbSBmb3IgU0NEQy4KKyAqLworCisjZGVmaW5lIFNDRENfSTJDX1NMQVZFX0FERFJFU1MgMHg1 NAorCisvKioKKyAqIGRybV9zY2RjX3JlYWQgLSByZWFkIGEgYmxvY2sgb2YgZGF0YSBmcm9tIFND REMKKyAqIEBhZGFwdGVyOiBJMkMgY29udHJvbGxlcgorICogQG9mZnNldDogc3RhcnQgb2Zmc2V0 IG9mIGJsb2NrIHRvIHJlYWQKKyAqIEBidWZmZXI6IHJldHVybiBsb2NhdGlvbiBmb3IgdGhlIGJs b2NrIHRvIHJlYWQKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBibG9jayB0byByZWFkCisgKgorICog UmVhZHMgYSBibG9jayBvZiBkYXRhIGZyb20gU0NEQywgc3RhcnRpbmcgYXQgYSBnaXZlbiBvZmZz ZXQuCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29k ZSBvbiBmYWlsdXJlLgorICovCitzc2l6ZV90IGRybV9zY2RjX3JlYWQoc3RydWN0IGkyY19hZGFw dGVyICphZGFwdGVyLCB1OCBvZmZzZXQsIHZvaWQgKmJ1ZmZlciwKKwkJICAgICAgc2l6ZV90IHNp emUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgaTJjX21zZyBtc2dzWzJdID0geworCQl7CisJCQku YWRkciA9IFNDRENfSTJDX1NMQVZFX0FERFJFU1MsCisJCQkuZmxhZ3MgPSAwLAorCQkJLmxlbiA9 IDEsCisJCQkuYnVmID0gJm9mZnNldCwKKwkJfSwgeworCQkJLmFkZHIgPSBTQ0RDX0kyQ19TTEFW RV9BRERSRVNTLAorCQkJLmZsYWdzID0gSTJDX01fUkQsCisJCQkubGVuID0gc2l6ZSwKKwkJCS5i dWYgPSBidWZmZXIsCisJCX0KKwl9OworCisJcmV0ID0gaTJjX3RyYW5zZmVyKGFkYXB0ZXIsIG1z Z3MsIEFSUkFZX1NJWkUobXNncykpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCWlm IChyZXQgIT0gQVJSQVlfU0laRShtc2dzKSkKKwkJcmV0dXJuIC1FUFJPVE87CisKKwlyZXR1cm4g MDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3NjZGNfcmVhZCk7CisKKy8qKgorICogZHJtX3NjZGNf d3JpdGUgLSB3cml0ZSBhIGJsb2NrIG9mIGRhdGEgdG8gU0NEQworICogQGFkYXB0ZXI6IEkyQyBj b250cm9sbGVyCisgKiBAb2Zmc2V0OiBzdGFydCBvZmZzZXQgb2YgYmxvY2sgdG8gd3JpdGUKKyAq IEBidWZmZXI6IGJsb2NrIG9mIGRhdGEgdG8gd3JpdGUKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBi bG9jayB0byB3cml0ZQorICoKKyAqIFdyaXRlcyBhIGJsb2NrIG9mIGRhdGEgdG8gU0NEQywgc3Rh cnRpbmcgYXQgYSBnaXZlbiBvZmZzZXQuCisgKgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2Vz cywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzc2l6ZV90IGRybV9zY2Rj X3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LAorCQkgICAgICAg Y29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgaTJjX21zZyBtc2cg PSB7CisJCS5hZGRyID0gU0NEQ19JMkNfU0xBVkVfQUREUkVTUywKKwkJLmZsYWdzID0gMCwKKwkJ LmxlbiA9IDEgKyBzaXplLAorCQkuYnVmID0gTlVMTCwKKwl9OworCXZvaWQgKmRhdGE7CisJaW50 IGVycjsKKworCWRhdGEgPSBrbWFsbG9jKDEgKyBzaXplLCBHRlBfVEVNUE9SQVJZKTsKKwlpZiAo IWRhdGEpCisJCXJldHVybiAtRU5PTUVNOworCisJbXNnLmJ1ZiA9IGRhdGE7CisKKwltZW1jcHko ZGF0YSwgJm9mZnNldCwgc2l6ZW9mKG9mZnNldCkpOworCW1lbWNweShkYXRhICsgMSwgYnVmZmVy LCBzaXplKTsKKworCWVyciA9IGkyY190cmFuc2ZlcihhZGFwdGVyLCAmbXNnLCAxKTsKKworCWtm cmVlKGRhdGEpOworCisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisJaWYgKGVyciAhPSAx KQorCQlyZXR1cm4gLUVQUk9UTzsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1f c2NkY193cml0ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2NkY19oZWxwZXIuaCBi L2luY2x1ZGUvZHJtL2RybV9zY2RjX2hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjljNTJkZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS9kcm1fc2Nk Y19oZWxwZXIuaApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBO VklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3ViIGxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUKKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCisgKiBvZiB0aGUgU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK KyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIERSTV9TQ0RDX0hF TFBFUl9ICisjZGVmaW5lIERSTV9TQ0RDX0hFTFBFUl9ICisKKyNpbmNsdWRlIDxsaW51eC9pMmMu aD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIFNDRENfU0lOS19WRVJTSU9O IDB4MDEKKworI2RlZmluZSBTQ0RDX1NPVVJDRV9WRVJTSU9OIDB4MDIKKworI2RlZmluZSBTQ0RD X1VQREFURV8wIDB4MTAKKyNkZWZpbmUgIFNDRENfUkVBRF9SRVFVRVNUX1RFU1QgKDEgPDwgMikK KyNkZWZpbmUgIFNDRENfQ0VEX1VQREFURSAoMSA8PCAxKQorI2RlZmluZSAgU0NEQ19TVEFUVVNf VVBEQVRFICgxIDw8IDApCisKKyNkZWZpbmUgU0NEQ19VUERBVEVfMSAweDExCisKKyNkZWZpbmUg U0NEQ19UTURTX0NPTkZJRyAweDIwCisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElP X0JZXzQwICgxIDw8IDEpCisjZGVmaW5lICBTQ0RDX1RNRFNfQklUX0NMT0NLX1JBVElPX0JZXzEw ICgwIDw8IDEpCisjZGVmaW5lICBTQ0RDX1NDUkFNQkxJTkdfRU5BQkxFICgxIDw8IDApCisKKyNk ZWZpbmUgU0NEQ19TQ1JBTUJMRVJfU1RBVFVTIDB4MjEKKyNkZWZpbmUgIFNDRENfU0NSQU1CTElO R19TVEFUVVMgKDEgPDwgMCkKKworI2RlZmluZSBTQ0RDX0NPTkZJR18wIDB4MzAKKyNkZWZpbmUg IFNDRENfUkVBRF9SRVFVRVNUX0VOQUJMRSAoMSA8PCAwKQorCisjZGVmaW5lIFNDRENfU1RBVFVT X0ZMQUdTXzAgMHg0MAorI2RlZmluZSAgU0NEQ19DSDJfTE9DSyAoMSA8IDMpCisjZGVmaW5lICBT Q0RDX0NIMV9MT0NLICgxIDwgMikKKyNkZWZpbmUgIFNDRENfQ0gwX0xPQ0sgKDEgPCAxKQorI2Rl ZmluZSAgU0NEQ19DSF9MT0NLX01BU0sgKFNDRENfQ0gyX0xPQ0sgfCBTQ0RDX0NIMV9MT0NLIHwg U0NEQ19DSDBfTE9DSykKKyNkZWZpbmUgIFNDRENfQ0xPQ0tfREVURUNUICgxIDw8IDApCisKKyNk ZWZpbmUgU0NEQ19TVEFUVVNfRkxBR1NfMSAweDQxCisKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzBf TCAweDUwCisjZGVmaW5lIFNDRENfRVJSX0RFVF8wX0ggMHg1MQorI2RlZmluZSBTQ0RDX0VSUl9E RVRfMV9MIDB4NTIKKyNkZWZpbmUgU0NEQ19FUlJfREVUXzFfSCAweDUzCisjZGVmaW5lIFNDRENf RVJSX0RFVF8yX0wgMHg1NAorI2RlZmluZSBTQ0RDX0VSUl9ERVRfMl9IIDB4NTUKKyNkZWZpbmUg IFNDRENfQ0hBTk5FTF9WQUxJRCAoMSA8PCA3KQorCisjZGVmaW5lIFNDRENfRVJSX0RFVF9DSEVD S1NVTSAweDU2CisKKyNkZWZpbmUgU0NEQ19URVNUX0NPTkZJR18wIDB4YzAKKyNkZWZpbmUgIFND RENfVEVTVF9SRUFEX1JFUVVFU1QgKDEgPDwgNykKKyNkZWZpbmUgIFNDRENfVEVTVF9SRUFEX1JF UVVFU1RfREVMQVkoeCkgKCh4KSAmIDB4N2YpCisKKyNkZWZpbmUgU0NEQ19NQU5VRkFDVFVSRVJf SUVFRV9PVUkgMHhkMAorI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9JRUVFX09VSV9TSVpFIDMK KworI2RlZmluZSBTQ0RDX0RFVklDRV9JRCAweGQzCisjZGVmaW5lIFNDRENfREVWSUNFX0lEX1NJ WkUgOAorCisjZGVmaW5lIFNDRENfREVWSUNFX0hBUkRXQVJFX1JFVklTSU9OIDB4ZGIKKyNkZWZp bmUgIFNDRENfR0VUX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTl9NQUpPUih4KSAoKCh4KSA+PiA0 KSAmIDB4ZikKKyNkZWZpbmUgIFNDRENfR0VUX0RFVklDRV9IQVJEV0FSRV9SRVZJU0lPTl9NSU5P Uih4KSAoKCh4KSA+PiAwKSAmIDB4ZikKKworI2RlZmluZSBTQ0RDX0RFVklDRV9TT0ZUV0FSRV9N QUpPUl9SRVZJU0lPTiAweGRjCisjZGVmaW5lIFNDRENfREVWSUNFX1NPRlRXQVJFX01JTk9SX1JF VklTSU9OIDB4ZGQKKworI2RlZmluZSBTQ0RDX01BTlVGQUNUVVJFUl9TUEVDSUZJQyAweGRlCisj ZGVmaW5lIFNDRENfTUFOVUZBQ1RVUkVSX1NQRUNJRklDX1NJWkUgMzQKKworc3NpemVfdCBkcm1f c2NkY19yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0LCB2b2lkICpi dWZmZXIsCisJCSAgICAgIHNpemVfdCBzaXplKTsKK3NzaXplX3QgZHJtX3NjZGNfd3JpdGUoc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1OCBvZmZzZXQsCisJCSAgICAgICBjb25zdCB2b2lk ICpidWZmZXIsIHNpemVfdCBzaXplKTsKKworLyoqCisgKiBkcm1fc2NkY19yZWFkYiAtIHJlYWQg YSBzaW5nbGUgYnl0ZSBmcm9tIFNDREMKKyAqIEBhZGFwdGVyOiBJMkMgYWRhcHRlcgorICogQG9m ZnNldDogb2Zmc2V0IG9mIHJlZ2lzdGVyIHRvIHJlYWQKKyAqIEB2YWx1ZTogcmV0dXJuIGxvY2F0 aW9uIGZvciB0aGUgcmVnaXN0ZXIgdmFsdWUKKyAqCisgKiBSZWFkcyBhIHNpbmdsZSBieXRlIGZy b20gU0NEQy4gVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZQorICogZHJt X3NjZGNfcmVhZCgpIGZ1bmN0aW9uLgorICoKKyAqIFJldHVybnM6CisgKiAwIG9uIHN1Y2Nlc3Mg b3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBpbmxpbmUg aW50IGRybV9zY2RjX3JlYWRiKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTggb2Zmc2V0 LAorCQkJCSB1OCAqdmFsdWUpCit7CisJcmV0dXJuIGRybV9zY2RjX3JlYWQoYWRhcHRlciwgb2Zm c2V0LCB2YWx1ZSwgc2l6ZW9mKCp2YWx1ZSkpOworfQorCisvKioKKyAqIGRybV9zY2RjX3dyaXRl YiAtIHdyaXRlIGEgc2luZ2xlIGJ5dGUgdG8gU0NEQworICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVy CisgKiBAb2Zmc2V0OiBvZmZzZXQgb2YgcmVnaXN0ZXIgdG8gcmVhZAorICogQHZhbHVlOiByZXR1 cm4gbG9jYXRpb24gZm9yIHRoZSByZWdpc3RlciB2YWx1ZQorICoKKyAqIFdyaXRlcyBhIHNpbmds ZSBieXRlIHRvIFNDREMuIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUK KyAqIGRybV9zY2RjX3dyaXRlKCkgZnVuY3Rpb24uCisgKgorICogUmV0dXJuczoKKyAqIDAgb24g c3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3RhdGlj IGlubGluZSBpbnQgZHJtX3NjZGNfd3JpdGViKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwg dTggb2Zmc2V0LAorCQkJCSAgdTggdmFsdWUpCit7CisJcmV0dXJuIGRybV9zY2RjX3dyaXRlKGFk YXB0ZXIsIG9mZnNldCwgJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKK30KKworI2VuZGlmCi0tIAox LjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==