From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v6 1/2] drm/i915/gen9: Fix PCODE polling during CDCLK change notification Date: Mon, 5 Dec 2016 18:27:37 +0200 Message-ID: <1480955258-26311-1-git-send-email-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9A3856E15F for ; Mon, 5 Dec 2016 16:27:42 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Art Runyan List-Id: intel-gfx@lists.freedesktop.org Y29tbWl0IDg0ODQ5NmU1OTAyODMzNjAwZjc5OTJmNGZhYTgyZGMxNTQ2MDUxYmEKQXV0aG9yOiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpEYXRlOiAgIFdl ZCBKdWwgMTMgMTY6MzI6MDMgMjAxNiArMDMwMAoKICAgIGRybS9pOTE1OiBXYWl0IHVwIHRvIDNt cyBmb3IgdGhlIHBjdSB0byBhY2sgdGhlIGNkY2xrIGNoYW5nZSByZXF1ZXN0IG9uIFNLTAoKaW5j cmVhc2VkIHRoZSB0aW1lb3V0IHRvIG1hdGNoIHRoZSBzcGVjLCBidXQgd2Ugc3RpbGwgc2VlIGEg dGltZW91dCBvbgphdCBsZWFzdCBvbmUgU0tMLiBBIENEQ0xLIGNoYW5nZSByZXF1ZXN0IGZvbGxv d2luZyB0aGUgZmFpbGVkIG9uZSB3aWxsCnN1Y2NlZWQgbmV2ZXJ0aGVsZXNzLgoKSSBjb3VsZCBy ZXByb2R1Y2UgdGhpcyBwcm9ibGVtIGVhc2lseSBieSBydW5uaW5nIGttc19waXBlX2NyY19iYXNp YyBpbiBhCmxvb3AuIEluIGFsbCBmYWlsdXJlIGNhc2VzIF93YWl0X2ZvcigpIHdhcyBwcmUtZW1w dGVkIGZvciA+M21zIGFuZCBzbyBpbgp0aGUgd29yc3QgY2FzZSAtIHdoZW4gdGhlIHByZS1lbXB0 aW9uIGhhcHBlbmVkIHJpZ2h0IGFmdGVyIGNhbGN1bGF0aW5nCnRpbWVvdXRfXyBpbiBfd2FpdF9m b3IoKSAtIHdlIGNhbGxlZCBza2xfY2RjbGtfd2FpdF9mb3JfcGN1X3JlYWR5KCkgb25seQpvbmNl IHdoaWNoIGZhaWxlZCBhbmQgc28gX3dhaXRfZm9yKCkgdGltZWQgb3V0LiBBcyBvcHBvc2VkIHRv IHRoaXMgdGhlCnNwZWMgc2F5cyB0byBrZWVwIHJldHJ5aW5nIHRoZSByZXF1ZXN0IGZvciBhdCBt b3N0IGEgM21zIHBlcmlvZC4KClRvIGZpeCB0aGlzIHNlbmQgdGhlIGZpcnN0IHJlcXVlc3QgZXhw bGljaXRseSB0byBndWFyYW50ZWUgdGhhdCB0aGVyZSBpcwozbXMgYmV0d2VlbiB0aGUgZmlyc3Qg YW5kIGxhc3QgcmVxdWVzdC4gVGhvdWdoIHRoaXMgbWF0Y2hlcyB0aGUgc3BlYywgSQpub3RpY2Vk IHRoYXQgaW4gcmFyZSBjYXNlcyB0aGlzIGNhbiBzdGlsbCB0aW1lIG91dCBpZiB3ZSBzZW50IG9u bHkgYSBmZXcKcmVxdWVzdHMgKGluIHRoZSB3b3JzdCBjYXNlIDIpIF9hbmRfIFBDT0RFIGlzIGJ1 c3kgZm9yIHNvbWUgcmVhc29uIGV2ZW4KYWZ0ZXIgYSBwcmV2aW91cyByZXF1ZXN0IGFuZCBhIDNt cyBkZWxheS4gVG8gd29yayBhcm91bmQgdGhpcyByZXRyeSB0aGUKcG9sbGluZyB3aXRoIHByZS1l bXB0aW9uIGRpc2FibGVkIHRvIG1heGltaXplIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMuCkFsc28g aW5jcmVhc2UgdGhlIHRpbWVvdXQgdG8gMTBtcyB0byBhY2NvdW50IGZvciBpbnRlcnJ1cHRzIHRo YXQgY291bGQKcmVkdWNlIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMuIFdpdGggdGhpcyBjaGFuZ2Ug SSBjb3VsZG4ndCB0cmlnZ2VyCnRoZSBwcm9ibGVtLgoKdjI6Ci0gVXNlIDFtcyBwb2xsIHBlcmlv ZCBpbnN0ZWFkIG9mIDEwdXMuIChDaHJpcykKdjM6Ci0gUG9sbCB3aXRoIHByZS1lbXB0aW9uIGRp c2FibGVkIHRvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgcmVxdWVzdAogIGF0dGVtcHRzLiAoVmls bGUsIENocmlzKQotIEZhY3RvciBvdXQgYSBoZWxwZXIgdG8gcG9sbCwgaXQncyBhbHNvIG5lZWRl ZCBieSB0aGUgbmV4dCBwYXRjaC4KdjQ6Ci0gUGFzcyByZXBseV9tYXNrLCByZXBseSB0byBza2xf cGNvZGVfcmVxdWVzdCgpLCBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoZQogIHJlcGx5IGlzIGdlbmVy aWMuIChWaWxsZSkKdjU6Ci0gTGlzdCB0aGUgcmVxdWVzdCBzcGVjaWZpYyB0aW1lb3V0IHZhbHVl cyBhcyBjb2RlIGNvbW1lbnQuIChWaWxsZSkKdjY6Ci0gVHJ5IHRoZSBwb2xsIGZpcnN0IHdpdGgg cHJlZW1wdGlvbiBlbmFibGVkLgotIEFkZCBjb2RlIGNvbW1lbnQgYWJvdXQgZmlyc3QgcmVxdWVz dCBiZWluZyBxdWV1ZWQgYnkgUENPREUuIChBcnQpCi0gQWRkIHRpbWVvdXRfYmFzZV9tcyBhcmd1 bWVudC4gKFZpbGxlKQoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6 IEFydCBSdW55YW4gPGFydGh1ci5qLnJ1bnlhbkBpbnRlbC5jb20+ClJlZmVyZW5jZTogaHR0cHM6 Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc5MjkKVGVzdGNhc2U6IGln dC9rbXNfcGlwZV9jcmNfYmFzaWMvc3VzcGVuZC1yZWFkLWNyYy1waXBlLUIKU2lnbmVkLW9mZi1i eTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyB8IDMxICsrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyAgICAgIHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IGNhOTc4NmMuLmEyNDYyYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaApAQCAtMzU5Nyw2ICszNTk3LDggQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZGlzcGxheV9wcmlu dF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAogCiBpbnQg c2FuZHlicmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiBtYm94LCB1MzIgKnZhbCk7CiBpbnQgc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJveCwgdTMyIHZhbCk7CitpbnQgc2ts X3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWJv eCwgdTMyIHJlcXVlc3QsCisJCSAgICAgIHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHksIGludCB0 aW1lb3V0X2Jhc2VfbXMpOwogCiAvKiBpbnRlbF9zaWRlYmFuZC5jICovCiB1MzIgdmx2X3B1bml0 X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMWZhZmNjZS4uNGVmNzM5MiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNjI4MCwzNSArNjI4MCwyNCBAQCBza2xf ZHBsbDBfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZGV2X3By aXYtPmNkY2xrX3BsbC52Y28gPSAwOwogfQogCi1zdGF0aWMgYm9vbCBza2xfY2RjbGtfcGN1X3Jl YWR5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlpbnQgcmV0OwotCXUz MiB2YWw7Ci0KLQkvKiBpbmZvcm0gUENVIHdlIHdhbnQgdG8gY2hhbmdlIENEQ0xLICovCi0JdmFs ID0gU0tMX0NEQ0xLX1BSRVBBUkVfRk9SX0NIQU5HRTsKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOwotCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2X3ByaXYsIFNL TF9QQ09ERV9DRENMS19DT05UUk9MLCAmdmFsKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5y cHMuaHdfbG9jayk7Ci0KLQlyZXR1cm4gcmV0ID09IDAgJiYgKHZhbCAmIFNLTF9DRENMS19SRUFE WV9GT1JfQ0hBTkdFKTsKLX0KLQotc3RhdGljIGJvb2wgc2tsX2NkY2xrX3dhaXRfZm9yX3BjdV9y ZWFkeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0JcmV0dXJuIF93YWl0 X2Zvcihza2xfY2RjbGtfcGN1X3JlYWR5KGRldl9wcml2KSwgMzAwMCwgMTApID09IDA7Ci19Ci0K IHN0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgY2RjbGssIGludCB2Y28pCiB7CiAJdTMyIGZyZXFfc2VsZWN0LCBwY3VfYWNrOwor CWludCByZXQ7CiAKIAlXQVJOX09OKChjZGNsayA9PSAyNDAwMCkgIT0gKHZjbyA9PSAwKSk7CiAK IAlEUk1fREVCVUdfRFJJVkVSKCJDaGFuZ2luZyBDRENMSyB0byAlZCBrSHogKFZDTyAlZCBrSHop XG4iLCBjZGNsaywgdmNvKTsKIAotCWlmICghc2tsX2NkY2xrX3dhaXRfZm9yX3BjdV9yZWFkeShk ZXZfcHJpdikpIHsKLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaW5mb3JtIFBDVSBhYm91dCBjZGNs ayBjaGFuZ2VcbiIpOworCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CisJcmV0 ID0gc2tsX3Bjb2RlX3JlcXVlc3QoZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9MLAor CQkJCVNLTF9DRENMS19QUkVQQVJFX0ZPUl9DSEFOR0UsCisJCQkJU0tMX0NEQ0xLX1JFQURZX0ZP Ul9DSEFOR0UsCisJCQkJU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFOR0UsIDMpOworCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigi RmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJvdXQgY2RjbGsgY2hhbmdlICglZClcbiIsCisJCQkgIHJl dCk7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDU5YTg4ZGUu LjZjMmZhMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNzg2NCw2ICs3ODY0LDgxIEBA IGludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBib29sIHNrbF9wY29kZV90cnlfcmVxdWVz dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LAorCQkJCSAgdTMy IHJlcXVlc3QsIHUzMiByZXBseV9tYXNrLCB1MzIgcmVwbHksCisJCQkJICB1MzIgKnN0YXR1cykK K3sKKwl1MzIgdmFsID0gcmVxdWVzdDsKKworCSpzdGF0dXMgPSBzYW5keWJyaWRnZV9wY29kZV9y ZWFkKGRldl9wcml2LCBtYm94LCAmdmFsKTsKKworCXJldHVybiAqc3RhdHVzIHx8ICgodmFsICYg cmVwbHlfbWFzaykgPT0gcmVwbHkpOworfQorCisvKioKKyAqIHNrbF9wY29kZV9yZXF1ZXN0IC0g c2VuZCBQQ09ERSByZXF1ZXN0IHVudGlsIGFja25vd2xlZGdtZW50CisgKiBAZGV2X3ByaXY6IGRl dmljZSBwcml2YXRlCisgKiBAbWJveDogUENPREUgbWFpbGJveCBJRCB0aGUgcmVxdWVzdCBpcyB0 YXJnZXRlZCBmb3IKKyAqIEByZXF1ZXN0OiByZXF1ZXN0IElECisgKiBAcmVwbHlfbWFzazogbWFz ayB1c2VkIHRvIGNoZWNrIGZvciByZXF1ZXN0IGFja25vd2xlZGdtZW50CisgKiBAcmVwbHk6IHZh bHVlIHVzZWQgdG8gY2hlY2sgZm9yIHJlcXVlc3QgYWNrbm93bGVkZ2VtZW50CisgKiBAdGltZW91 dF9iYXNlX21zOiB0aW1lb3V0IGZvciBwb2xsaW5nIHdpdGggcHJlZW1wdGlvbiBlbmFibGVkCisg KgorICogS2VlcCByZXNlbmRpbmcgdGhlIEByZXF1ZXN0IHRvIEBtYm94IHVudGlsIFBDT0RFIGFj a25vd2xlZGdlcyBpdCwgUENPREUKKyAqIHJlcG9ydHMgYW4gZXJyb3Igb3IgYW4gb3ZlcmFsbCB0 aW1lb3V0IG9mIEB0aW1lb3V0X2Jhc2VfbXMrMTAgbXMgZXhwaXJlcy4KKyAqIFRoZSByZXF1ZXN0 IGlzIGFja25vd2xlZGdlZCBvbmNlIHRoZSBQQ09ERSByZXBseSBkd29yZCBlcXVhbHMgQHJlcGx5 IGFmdGVyCisgKiBhcHBseWluZyBAcmVwbHlfbWFzay4gUG9sbGluZyBpcyBmaXJzdCBhdHRlbXB0 ZWQgd2l0aCBwcmVlbXB0aW9uIGVuYWJsZWQKKyAqIGZvciBAdGltZW91dF9iYXNlX21zIGFuZCBp ZiB0aGlzIHRpbWVzIG91dCBmb3IgYW5vdGhlciAxMCBtcyB3aXRoCisgKiBwcmVlbXB0aW9uIGRp c2FibGVkLgorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAlLUVUSU1FRE9VVCBpbiBjYXNl IG9mIGEgdGltZW91dCwgPDAgaW4gY2FzZSBvZiBzb21lCisgKiBvdGhlciBlcnJvciBhcyByZXBv cnRlZCBieSBQQ09ERS4KKyAqLworaW50IHNrbF9wY29kZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiByZXF1ZXN0LAorCQkgICAgICB1MzIg cmVwbHlfbWFzaywgdTMyIHJlcGx5LCBpbnQgdGltZW91dF9iYXNlX21zKQoreworCXUzMiBzdGF0 dXM7CisJaW50IHJldDsKKworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPnJw cy5od19sb2NrKSk7CisKKyNkZWZpbmUgQ09ORCBza2xfcGNvZGVfdHJ5X3JlcXVlc3QoZGV2X3By aXYsIG1ib3gsIHJlcXVlc3QsIHJlcGx5X21hc2ssIHJlcGx5LCBcCisJCQkJICAgJnN0YXR1cykK KworCS8qCisJICogVGhlIGZpcnN0IHJlcXVlc3QgaXMgcXVldWVkIGJ5IFBDT0RFLCB3aGljaCBu b3JtYWxseSBndWFyYW50ZWVzCisJICogdGhhdCBhIHN1YnNlcXVlbnQgcmVxdWVzdCBhdCBtb3N0 IEB0aW1lb3V0X2Jhc2VfbXMgbGF0ZXIgc3VjY2VlZHMuCisJICogX3dhaXRfZm9yKCkgZG9lc24n dCBndWFyYW50ZWUgd2hlbiBpdHMgcGFzc2VkIGNvbmRpdGlvbiBpcyBldmFsdWF0ZWQKKwkgKiBm aXJzdCwgc28gc2VuZCB0aGUgZmlyc3QgcmVxdWVzdCBleHBsaWNpdGx5LgorCSAqLworCWlmIChD T05EKSB7CisJCXJldCA9IDA7CisJCWdvdG8gb3V0OworCX0KKwlyZXQgPSBfd2FpdF9mb3IoQ09O RCwgdGltZW91dF9iYXNlX21zICogMTAwMCwgMTApOworCWlmICghcmV0KQorCQlnb3RvIG91dDsK KworCS8qCisJICogVGhlIGFib3ZlIGNhbiB0aW1lIG91dCBpZiB0aGUgbnVtYmVyIG9mIHJlcXVl c3RzIHdhcyBsb3cgKDIgaW4gdGhlCisJICogd29yc3QgY2FzZSkgX2FuZF8gUENPREUgd2FzIGJ1 c3kgZm9yIHNvbWUgcmVhc29uIGV2ZW4gYWZ0ZXIgYQorCSAqIChxdWV1ZWQpIHJlcXVlc3QgYW5k IEB0aW1lb3V0X2Jhc2VfbXMgZGVsYXkuIEFzIGEgd29ya2Fyb3VuZCByZXRyeQorCSAqIHRoZSBw b2xsIHdpdGggcHJlZW1wdGlvbiBkaXNhYmxlZCB0byBtYXhpbWl6ZSB0aGUgbnVtYmVyIG9mCisJ ICogcmVxdWVzdHMuIEluY3JlYXNlIHRoZSB0aW1lb3V0IGZyb20gQHRpbWVvdXRfYmFzZV9tcyB0 byAxMG1zIHRvCisJICogYWNjb3VudCBmb3IgaW50ZXJydXB0cyB0aGF0IGNvdWxkIHJlZHVjZSB0 aGUgbnVtYmVyIG9mIHRoZXNlCisJICogcmVxdWVzdHMuCisJICovCisJRFJNX0RFQlVHX0tNUygi UENPREUgdGltZW91dCwgcmV0cnlpbmcgd2l0aCBwcmVlbXB0aW9uIGRpc2FibGVkXG4iKTsKKwlX QVJOX09OX09OQ0UodGltZW91dF9iYXNlX21zID4gMyk7CisJcHJlZW1wdF9kaXNhYmxlKCk7CisJ cmV0ID0gd2FpdF9mb3JfYXRvbWljKENPTkQsIDEwKTsKKwlwcmVlbXB0X2VuYWJsZSgpOworCitv dXQ6CisJcmV0dXJuIHJldCA/IHJldCA6IHN0YXR1czsKKyN1bmRlZiBDT05ECit9CisKIHN0YXRp YyBpbnQgYnl0X2dwdV9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50 IHZhbCkKIHsKIAkvKgotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=