From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vivek Kasireddy Subject: [PATCH] drm/i915/ehl: Add support for DPLL4 (v8) Date: Fri, 21 Jun 2019 19:00:26 -0700 Message-ID: <20190622020026.24475-1-vivek.kasireddy@intel.com> References: <20190619124758.GN3733@ideak-desk.fi.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 7A53D6E94B for ; Sat, 22 Jun 2019 02:01:19 +0000 (UTC) In-Reply-To: <20190619124758.GN3733@ideak-desk.fi.intel.com> 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 List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQTEw0IG9uIEVITCB0aGF0IGluY2x1ZGUgdGhl CmZvbGxvd2luZyByZXN0cmljdGlvbnM6CgotIERQTEw0IGNhbm5vdCBiZSB1c2VkIHdpdGggRERJ QSAoY29tYm8gcG9ydCBBIGludGVybmFsIGVEUCB1c2FnZSkuCiAgRFBMTDQgY2FuIGJlIHVzZWQg d2l0aCBvdGhlciBERElzLCBpbmNsdWRpbmcgRERJRAogIChjb21ibyBwb3J0IEEgZXh0ZXJuYWwg dXNhZ2UpLgoKLSBEUExMNCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIERDNSBvciBEQzYgYXJlIGVu YWJsZWQuCgotIFRoZSBEUExMNCBlbmFibGUsIGxvY2ssIHBvd2VyIGVuYWJsZWQsIGFuZCBwb3dl ciBzdGF0ZSBhcmUgY29ubmVjdGVkCiAgdG8gdGhlIE1HUExMMV9FTkFCTEUgcmVnaXN0ZXIuCgp2 MjogKHN1Z2dlc3Rpb25zIGZyb20gQm9iIFBhYXV3ZSkKLSBSZXdvcmsgZWhsX2dldF9kcGxsKCkg ZnVuY3Rpb24gdG8gY2FsbCBpbnRlbF9maW5kX3NoYXJlZF9kcGxsKCkgYW5kCiAgaXRlcmF0ZSB0 d2ljZTogb25jZSBmb3IgQ29tYm8gcGxscyBhbmQgb25jZSBmb3IgTUcgcGxscy4KCi0gVXNlIE1H IHBsbCBmdW5jcyBmb3IgRFBMTDQgaW5zdGVhZCBvZiBjcmVhdGluZyBuZXcgb25lcyBhbmQgbW9k aWZ5CiAgbWdfcGxsX2VuYWJsZSB0byBpbmNsdWRlIHRoZSByZXN0cmljdGlvbnMgZm9yIEVITC4K CnYzOiBGaXggY29tcGlsYXRpb24gZXJyb3IKCnY0OiAoc3VnZ2VzdGlvbnMgZnJvbSBMdWNhcyBh bmQgVmlsbGUpCi0gVHJlYXQgRFBMTDQgYXMgYSBjb21ibyBwaHkgUExMIGFuZCBub3QgYXMgTUcg UExMCi0gRGlzYWJsZSBEQyBzdGF0ZXMgd2hlbiB0aGlzIERQTEwgaXMgYmVpbmcgZW5hYmxlZAot IFJldXNlIGljbF9nZXRfZHBsbCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgc2VwYXJhdGUgb25lIGZv ciBFSEwKCnY1OiAoc3VnZ2VzdGlvbiBmcm9tIFZpbGxlKQotIFJlZmNvdW50IHRoZSBEQyBPRkYg cG93ZXIgZG9tYWlucyBkdXJpbmcgdGhlIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcKICBvZiB0aGlz IERQTEwuCgp2NjogcmViYXNlCgp2NzogKHN1Z2dlc3Rpb24gZnJvbSBJbXJlKQotIEFkZCBhIG5l dyBwb3dlciBkb21haW4gaW5zdGVhZCBvZiBpdGVyYXRpbmcgb3ZlciB0aGUgZG9tYWlucwogIGFz c29pY2F0ZWQgd2l0aCBEQyBPRkYgcG93ZXIgd2VsbC4KCnY4OiAoVmlsbGUgYW5kIEltcmUpCi0g UmVuYW1lIFBPV0VSX0RPTUFJTl9EUExMNCBUTyBQT1dFUl9ET01BSU5fRFBMTF9EQ19PRkYKLSBH cmFiIGEgcmVmZXJlbmNlIGluIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoKSBpZiB0aGlz CiAgRFBMTCB3YXMgYWxyZWFkeSBlbmFibGVkIHBlcmhhcHMgYnkgQklPUy4KLSBDaGVjayBmb3Ig dGhlIHBvcnQgdHlwZSBpbnN0ZWFkIG9mIHRoZSBlbmNvZGVyCgpDYzogSm9zw6kgUm9iZXJ0byBk ZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVy QGludGVsLmNvbT4KQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogVml2ZWsgS2FzaXJlZGR5IDx2aXZlay5rYXNpcmVkZHlAaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8ICA2ICsrKwogLi4u L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jICAgIHwgIDMgKysKIC4uLi9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaCAgICB8ICAxICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYyB8IDQyICsrKysrKysrKysrKysr KysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuaCB8ICA2 ICsrKwogNSBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggODU5 MmE3ZDQyMmRlLi5hNWYzODdlNDg2ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jCkBAIC0xNjc3OCw2ICsxNjc3OCwxMiBAQCBpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZm9yIChpID0gMDsgaSA8 IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewogCQlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldOwogCisJCWlmIChJU19FTEtI QVJUTEFLRShkZXZfcHJpdikgJiYgcGxsLT5vbiAmJgorCQkgICAgcGxsLT5pbmZvLT5pZCA9PSBE UExMX0lEX0VITF9EUExMNCkgeworCQkJcGxsLT53YWtlcmVmID0gaW50ZWxfZGlzcGxheV9wb3dl cl9nZXQoZGV2X3ByaXYsCisJCQkJCQkJICAgICAgIFBPV0VSX0RPTUFJTl9EUExMX0RDX09GRik7 CisJCX0KKwogCQlpZiAoIXBsbC0+b24gfHwgcGxsLT5hY3RpdmVfbWFzaykKIAkJCWNvbnRpbnVl OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfcG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9w b3dlci5jCmluZGV4IGM5M2FkNTEyMDE0Yy4uMWMxMDFhODQyMzMxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwpAQCAtMTE3LDYg KzExNyw4IEBAIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3N0cihlbnVtIGludGVsX2Rpc3Bs YXlfcG93ZXJfZG9tYWluIGRvbWFpbikKIAkJcmV0dXJuICJNT0RFU0VUIjsKIAljYXNlIFBPV0VS X0RPTUFJTl9HVF9JUlE6CiAJCXJldHVybiAiR1RfSVJRIjsKKwljYXNlIFBPV0VSX0RPTUFJTl9E UExMX0RDX09GRjoKKwkJcmV0dXJuICJEUExMX0RDX09GRiI7CiAJZGVmYXVsdDoKIAkJTUlTU0lO R19DQVNFKGRvbWFpbik7CiAJCXJldHVybiAiPyI7CkBAIC0yMzYxLDYgKzIzNjMsNyBAQCB2b2lk IGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlJQ0xfUFdfMl9QT1dFUl9ET01BSU5TIHwJCQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5f TU9ERVNFVCkgfAkJCVwKIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKKwlCSVRf VUxMKFBPV0VSX0RPTUFJTl9EUExMX0RDX09GRikgfAkJCVwKIAlCSVRfVUxMKFBPV0VSX0RPTUFJ Tl9JTklUKSkKIAogI2RlZmluZSBJQ0xfRERJX0lPX0FfUE9XRVJfRE9NQUlOUyAoCQkJXApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2Vy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaApp bmRleCBmZjU3YjBhN2ZlNTkuLjhmNDNmNzA1MWExNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgKQEAgLTU5LDYgKzU5LDcgQEAg ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiB7CiAJUE9XRVJfRE9NQUlOX0dNQlVTLAog CVBPV0VSX0RPTUFJTl9NT0RFU0VULAogCVBPV0VSX0RPTUFJTl9HVF9JUlEsCisJUE9XRVJfRE9N QUlOX0RQTExfRENfT0ZGLAogCVBPV0VSX0RPTUFJTl9JTklULAogCiAJUE9XRVJfRE9NQUlOX05V TSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9t Z3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYwppbmRl eCAyZDRlN2I5YTdiOWQuLjgxZTE0NDNjYjU4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsX21nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYwpAQCAtMjgwNiw2ICsyODA2LDEwIEBAIGljbF9nZXRf ZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAoaW50ZWxfcG9y dF9pc19jb21ib3BoeShkZXZfcHJpdiwgcG9ydCkpIHsKIAkJbWluID0gRFBMTF9JRF9JQ0xfRFBM TDA7CiAJCW1heCA9IERQTExfSURfSUNMX0RQTEwxOworCisJCWlmIChJU19FTEtIQVJUTEFLRShk ZXZfcHJpdikgJiYgcG9ydCAhPSBQT1JUX0EpCisJCQltYXggPSBEUExMX0lEX0VITF9EUExMNDsK KwogCQlyZXQgPSBpY2xfY2FsY19kcGxsX3N0YXRlKGNydGNfc3RhdGUsIGVuY29kZXIpOwogCX0g ZWxzZSBpZiAoaW50ZWxfcG9ydF9pc190YyhkZXZfcHJpdiwgcG9ydCkpIHsKIAkJaWYgKGVuY29k ZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCkgewpAQCAtMjk0NSw4ICsyOTQ5LDE0IEBA IHN0YXRpYyBib29sIGNvbWJvX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkJCSAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsLAogCQkJ CSAgIHN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0ZSkKIHsKLQlyZXR1cm4gaWNs X3BsbF9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwgaHdfc3RhdGUsCi0JCQkJICAgIENOTF9E UExMX0VOQUJMRShwbGwtPmluZm8tPmlkKSk7CisJaTkxNV9yZWdfdCBlbmFibGVfcmVnID0gQ05M X0RQTExfRU5BQkxFKHBsbC0+aW5mby0+aWQpOworCisJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9w cml2KSAmJgorCSAgICBwbGwtPmluZm8tPmlkID09IERQTExfSURfRUhMX0RQTEw0KSB7CisJCWVu YWJsZV9yZWcgPSBNR19QTExfRU5BQkxFKDApOworCX0KKworCXJldHVybiBpY2xfcGxsX2dldF9o d19zdGF0ZShkZXZfcHJpdiwgcGxsLCBod19zdGF0ZSwgZW5hYmxlX3JlZyk7CiB9CiAKIHN0YXRp YyBib29sIHRidF9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKQEAgLTMwNTcsNiArMzA2NywxOSBAQCBzdGF0aWMgdm9pZCBjb21ib19wbGxfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAlpOTE1X3JlZ190IGVuYWJs ZV9yZWcgPSBDTkxfRFBMTF9FTkFCTEUocGxsLT5pbmZvLT5pZCk7CiAKKwlpZiAoSVNfRUxLSEFS VExBS0UoZGV2X3ByaXYpICYmCisJICAgIHBsbC0+aW5mby0+aWQgPT0gRFBMTF9JRF9FSExfRFBM TDQpIHsKKwkJZW5hYmxlX3JlZyA9IE1HX1BMTF9FTkFCTEUoMCk7CisKKwkJLyoKKwkJICogV2Ug bmVlZCB0byBkaXNhYmxlIERDIHN0YXRlcyB3aGVuIHRoaXMgRFBMTCBpcyBlbmFibGVkLgorCQkg KiBUaGlzIGNhbiBiZSBkb25lIGJ5IHRha2luZyBhIHJlZmVyZW5jZSBvbiBEUExMNCBwb3dlcgor CQkgKiBkb21haW4uCisJCSAqLworCQlwbGwtPndha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldChkZXZfcHJpdiwKKwkJCQkJCSAgICAgICBQT1dFUl9ET01BSU5fRFBMTF9EQ19PRkYpOwor CX0KKwogCWljbF9wbGxfcG93ZXJfZW5hYmxlKGRldl9wcml2LCBwbGwsIGVuYWJsZV9yZWcpOwog CiAJaWNsX2RwbGxfd3JpdGUoZGV2X3ByaXYsIHBsbCk7CkBAIC0zMTUyLDcgKzMxNzUsMTkgQEAg c3RhdGljIHZvaWQgaWNsX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHN0YXRpYyB2b2lkIGNvbWJvX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQog ewotCWljbF9wbGxfZGlzYWJsZShkZXZfcHJpdiwgcGxsLCBDTkxfRFBMTF9FTkFCTEUocGxsLT5p bmZvLT5pZCkpOworCWk5MTVfcmVnX3QgZW5hYmxlX3JlZyA9IENOTF9EUExMX0VOQUJMRShwbGwt PmluZm8tPmlkKTsKKworCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikgJiYKKwkgICAgcGxs LT5pbmZvLT5pZCA9PSBEUExMX0lEX0VITF9EUExMNCkgeworCQllbmFibGVfcmVnID0gTUdfUExM X0VOQUJMRSgwKTsKKwkJaWNsX3BsbF9kaXNhYmxlKGRldl9wcml2LCBwbGwsIGVuYWJsZV9yZWcp OworCisJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fRFBM TF9EQ19PRkYsCisJCQkJCXBsbC0+d2FrZXJlZik7CisJCXJldHVybjsKKwl9CisKKwlpY2xfcGxs X2Rpc2FibGUoZGV2X3ByaXYsIHBsbCwgZW5hYmxlX3JlZyk7CiB9CiAKIHN0YXRpYyB2b2lkIHRi dF9wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0zMjMw LDYgKzMyNjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RwbGxfbWdyIGljbF9wbGxf bWdyID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCBkcGxsX2luZm8gZWhsX3BsbHNbXSA9IHsKIAl7 ICJEUExMIDAiLCAmY29tYm9fcGxsX2Z1bmNzLCBEUExMX0lEX0lDTF9EUExMMCwgMCB9LAogCXsg IkRQTEwgMSIsICZjb21ib19wbGxfZnVuY3MsIERQTExfSURfSUNMX0RQTEwxLCAwIH0sCisJeyAi RFBMTCA0IiwgJmNvbWJvX3BsbF9mdW5jcywgRFBMTF9JRF9FSExfRFBMTDQsIDAgfSwKIAl7IH0s CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rw bGxfbWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmgK aW5kZXggZDA1NzA0MTRmM2QxLi4zZTJhYTEwOTk1NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgogCiAjaW5jbHVkZSAiaW50ZWxfZGlzcGxheS5oIgorI2luY2x1ZGUg ImludGVsX3dha2VyZWYuaCIKIAogLypGSVhNRTogTW92ZSB0aGlzIHRvIGEgbW9yZSBhcHByb3By aWF0ZSBwbGFjZS4gKi8KICNkZWZpbmUgYWJzX2RpZmYoYSwgYikgKHsJCQlcCkBAIC0xMTcsNiAr MTE4LDEwIEBAIGVudW0gaW50ZWxfZHBsbF9pZCB7CiAJICogQERQTExfSURfSUNMX0RQTEwxOiBJ Q0wgY29tYm8gUEhZIERQTEwxCiAJICovCiAJRFBMTF9JRF9JQ0xfRFBMTDEgPSAxLAorCS8qKgor CSAqIEBEUExMX0lEX0VITF9EUExMNDogRUhMIGNvbWJvIFBIWSBEUExMNAorCSAqLworCURQTExf SURfRUhMX0RQTEw0ID0gMiwKIAkvKioKIAkgKiBARFBMTF9JRF9JQ0xfVEJUUExMOiBJQ0wgVEJU IFBMTAogCSAqLwpAQCAtMzEyLDYgKzMxNyw3IEBAIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCB7 CiAJICogQGluZm86IHBsYXRmb3JtIHNwZWNpZmljIGluZm8KIAkgKi8KIAljb25zdCBzdHJ1Y3Qg ZHBsbF9pbmZvICppbmZvOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogfTsKIAogI2RlZmlu ZSBTS0xfRFBMTDAgMAotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZng=