From mboxrd@z Thu Jan 1 00:00:00 1970 From: tom.orourke@intel.com Subject: [PATCH 14/26] drm/i915/slpc: Notification of Display mode change Date: Tue, 8 Mar 2016 16:34:17 -0800 Message-ID: <1457483669-155235-15-git-send-email-tom.orourke@intel.com> References: <1457483669-155235-1-git-send-email-tom.orourke@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id BB2556E6DC for ; Wed, 9 Mar 2016 00:35:07 +0000 (UTC) In-Reply-To: <1457483669-155235-1-git-send-email-tom.orourke@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 Cc: paulo.r.zanoni@intel.com, Tom O'Rourke List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KCkd1QyBT TFBDIG5lZWQgdG8gYmUgc2VudCBkYXRhIHJlbGF0ZWQgdG8gQWN0aXZlIHBpcGVzLCByZWZyZXNo IHJhdGVzLAp3aWRpIHBpcGVzLCBmdWxsc2NyZWVuIHBpcGVzIHJlbGF0ZWQgdmlhIGhvc3QgdG8g R3VDIGRpc3BsYXkgbW9kZQpjaGFuZ2UgZXZlbnQuIEJhc2VkIG9uIHRoaXMsIFNMUEMgd2lsbCB0 cmFjayBGUFMgb24gYWN0aXZlIHBpcGVzLgpUaGlzIHBhdGNoIGRlZmluZXMgdGhlIGV2ZW50IGFu ZCBpbXBsZW1lbnRzIHRyaWdnZXIgb2YgdGhlIGV2ZW50LgoKdjI6IEFkZHJlc3NlZCByZXZpZXcg Y29tbWVudHMgZnJvbSBQYXVsbyBhbmQgVmlsbGUuIENoYW5nZWQgdGhlIHdheQpkaXNwbGF5IG1v ZGUgaW5mb3JtYXRpb24gaXMgY29sbGVjdGVkIGluIGludGVsX2F0b21pY19jb21taXQuIENvdXBs ZWQKZGlzcGxheSBtb2RlIGNoYW5nZSBldmVudCB3aXRoIFNMUEMgZW5hYmxlL3Jlc2V0IGV2ZW50 LiBVcGRhdGVkIGluYWN0aXZlCmNydGMgc3RhdGUgaW4gZGlzcGxheSBtb2RlIGRhdGEuIFVwZGF0 ZWQgcmVmcmVzaCByYXRlIGFuZCB2c3luY19mdF91c2VjCmNhbGN1bGF0aW9ucyB0byBnZXQgbW9y ZSBhY2N1cmF0ZSB2YWx1ZS4gKFBhdWxvKQp2Mih0b3JvdXJrZSk6IFVwZGF0ZXMgc3VnZ2VzdGVk IGJ5IFBhdWxvOiByZXBsYWNlIEhBU19TTFBDIHdpdGgKaW50ZWxfc2xwY19hY3RpdmUuIHJldHVy biB2b2lkIGluc3RlYWQgb2YgaWdub3JlZCBlcnJvciBjb2RlLgoKU2lnbmVkLW9mZi1ieTogU2Fn YXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTog VG9tIE8nUm91cmtlIDxUb20uTydSb3Vya2VAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zbHBjLmMgICAgfCAxNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NscGMuaCAgICB8ICAgMyArCiAzIGZpbGVzIGNoYW5n ZWQsIDE0NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IDYyZDM2YTcuLmFjMzk4ZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTEzODIwLDYgKzEzODIwLDggQEAgc3RhdGljIGludCBpbnRlbF9h dG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKGh3X2NoZWNrKQogCQlp bnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKGRldiwgc3RhdGUpOwogCisJaW50ZWxfc2xwY191cGRh dGVfYXRvbWljX2NvbW1pdF9pbmZvKGRldiwgc3RhdGUpOworCiAJZHJtX2F0b21pY19zdGF0ZV9m cmVlKHN0YXRlKTsKIAogCS8qIEFzIG9uZSBvZiB0aGUgcHJpbWFyeSBtbWlvIGFjY2Vzc29ycywg S01TIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc2xwYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2xwYy5jCmluZGV4 IGI2YmEwNzEuLjU4ZjkwYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3NscGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zbHBjLmMKQEAgLTczLDYg KzczLDIxIEBAIHN0YXRpYyB2b2lkIGhvc3QyZ3VjX3NscGNfc2h1dGRvd24oc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAlob3N0Mmd1Y19zbHBjKGRldl9wcml2LCBkYXRhLCA0KTsKIH0KIAorc3Rh dGljIHZvaWQgaG9zdDJndWNfc2xwY19kaXNwbGF5X21vZGVfY2hhbmdlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKwl1MzIgZGF0YVs3XTsKKwlpbnQgaTsKKworCWRhdGFbMF0gPSBIT1NUMkdV Q19BQ1RJT05fU0xQQ19SRVFVRVNUOworCWRhdGFbMV0gPSBTTFBDX0VWRU5UKFNMUENfRVZFTlRf RElTUExBWV9NT0RFX0NIQU5HRSwgU0xQQ19NQVhfTlVNX09GX1BJUEVTICsgMSk7CisJZGF0YVsy XSA9IGRldl9wcml2LT5ndWMuc2xwYy5kaXNwbGF5X21vZGVfcGFyYW1zLmdsb2JhbF9kYXRhOwor CWZvcihpID0gMDsgaSA8IFNMUENfTUFYX05VTV9PRl9QSVBFUzsgKytpKQorCQlkYXRhWzMraV0g PSBkZXZfcHJpdi0+Z3VjLnNscGMuZGlzcGxheV9tb2RlX3BhcmFtcy5wZXJfcGlwZV9pbmZvW2ld LmRhdGE7CisKKwlob3N0Mmd1Y19zbHBjKGRldl9wcml2LCBkYXRhLCA3KTsKK30KKwogc3RhdGlj IHU4IHNscGNfZ2V0X3BsYXRmb3JtX3NrdShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwpAQCAtMTgxLDgg KzE5NiwxMCBAQCB2b2lkIGludGVsX3NscGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCiB2b2lkIGludGVsX3NscGNfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7Ci0J aWYgKGludGVsX3NscGNfYWN0aXZlKGRldikpCisJaWYgKGludGVsX3NscGNfYWN0aXZlKGRldikp IHsKIAkJaG9zdDJndWNfc2xwY19yZXNldChkZXYpOworCQlpbnRlbF9zbHBjX3VwZGF0ZV9kaXNw bGF5X21vZGVfaW5mbyhkZXYpOworCX0KIH0KIAogdm9pZCBpbnRlbF9zbHBjX3Jlc2V0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCkBAIC0xOTIsMyArMjA5LDEyNiBAQCB2b2lkIGludGVsX3NscGNf cmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJaG9zdDJndWNfc2xwY19yZXNldChkZXYp OwogCX0KIH0KKwordm9pZCBpbnRlbF9zbHBjX3VwZGF0ZV9kaXNwbGF5X21vZGVfaW5mbyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CisJ c3RydWN0IGludGVsX2Rpc3BsYXlfcGlwZV9pbmZvICpwZXJfcGlwZV9pbmZvOworCXN0cnVjdCBp bnRlbF9zbHBjX2Rpc3BsYXlfbW9kZV9ldmVudF9wYXJhbXMgKmN1cl9wYXJhbXMsIG9sZF9wYXJh bXM7CisJYm9vbCBub3RpZnkgPSBmYWxzZTsKKworCWlmICghaW50ZWxfc2xwY19hY3RpdmUoZGV2 KSkKKwkJcmV0dXJuOworCisJLyogQ29weSBkaXNwbGF5IG1vZGUgcGFyYW1ldGVycyBmb3IgY29t cGFyaXNvbiAqLworCWN1cl9wYXJhbXMgPSAmZGV2X3ByaXYtPmd1Yy5zbHBjLmRpc3BsYXlfbW9k ZV9wYXJhbXM7CisJb2xkX3BhcmFtcy5nbG9iYWxfZGF0YSAgPSBjdXJfcGFyYW1zLT5nbG9iYWxf ZGF0YTsKKwljdXJfcGFyYW1zLT5nbG9iYWxfZGF0YSA9IDA7CisKKwlpbnRlbF9ydW50aW1lX3Bt X2dldChkZXZfcHJpdik7CisJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKKworCWZvcl9lYWNo X2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7CisJCXBlcl9waXBlX2luZm8gPSAmY3VyX3Bh cmFtcy0+cGVyX3BpcGVfaW5mb1tpbnRlbF9jcnRjLT5waXBlXTsKKwkJb2xkX3BhcmFtcy5wZXJf cGlwZV9pbmZvW2ludGVsX2NydGMtPnBpcGVdLmRhdGEgPSBwZXJfcGlwZV9pbmZvLT5kYXRhOwor CQlwZXJfcGlwZV9pbmZvLT5kYXRhID0gMDsKKworCQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7 CisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZpbnRlbF9jcnRjLT5iYXNlLm1v ZGU7CisJCQkvKiBGSVhNRTogVXBkYXRlIGlzX3dpZGkgYmFzZWQgb24gZW5jb2RlciAqLworCQkJ cGVyX3BpcGVfaW5mby0+aXNfd2lkaSA9IDA7CisJCQlwZXJfcGlwZV9pbmZvLT5yZWZyZXNoX3Jh dGUgPQorCQkJCQkJKG1vZGUtPmNsb2NrICogMTAwMCkvIChtb2RlLT5odG90YWwgKiBtb2RlLT52 dG90YWwpOworCQkJaWYgKCFwZXJfcGlwZV9pbmZvLT5yZWZyZXNoX3JhdGUpIHsKKwkJCQlEUk1f RVJST1IoIkludmFsaWQgbW9kZSByZWZyZXNoIHJhdGVcbiIpOworCQkJCWRybV9tb2Rlc2V0X3Vu bG9ja19hbGwoZGV2KTsKKwkJCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJCQkJ cmV0dXJuOworCQkJfQorCQkJcGVyX3BpcGVfaW5mby0+dnN5bmNfZnRfdXNlYyA9CisJCQkJCQko bW9kZS0+aHRvdGFsICogbW9kZS0+dnRvdGFsICogMTAwMCkgLyBtb2RlLT5jbG9jazsKKwkJCWN1 cl9wYXJhbXMtPmFjdGl2ZV9waXBlc19iaXRtYXNrIHw9ICgxIDw8IGludGVsX2NydGMtPnBpcGUp OworCQkJY3VyX3BhcmFtcy0+dmJpX3N5bmNfb25fcGlwZXMgfD0gKDEgPDwgaW50ZWxfY3J0Yy0+ cGlwZSk7CisJCX0gZWxzZSB7CisJCQljdXJfcGFyYW1zLT5hY3RpdmVfcGlwZXNfYml0bWFzayAm PSAoMCA8PCBpbnRlbF9jcnRjLT5waXBlKTsKKwkJCWN1cl9wYXJhbXMtPnZiaV9zeW5jX29uX3Bp cGVzICY9ICgwIDw8IGludGVsX2NydGMtPnBpcGUpOworCQl9CisKKwkJaWYgKG9sZF9wYXJhbXMu cGVyX3BpcGVfaW5mb1tpbnRlbF9jcnRjLT5waXBlXS5kYXRhICE9IHBlcl9waXBlX2luZm8tPmRh dGEpCisJCQlub3RpZnkgPSB0cnVlOworCX0KKworCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2 KTsKKworCWN1cl9wYXJhbXMtPm51bV9hY3RpdmVfcGlwZXMgPSBod2VpZ2h0MzIoY3VyX3BhcmFt cy0+YWN0aXZlX3BpcGVzX2JpdG1hc2spOworCisJLyogQ29tcGFyZSBvbGQgZGlzcGxheSBtb2Rl IHdpdGggY3VycmVudCBtb2RlLiBOb3RpZnkgU0xQQyBpZiBpdCBpcyBjaGFuZ2VkLiAqLworCWlm IChjdXJfcGFyYW1zLT5nbG9iYWxfZGF0YSAhPSBvbGRfcGFyYW1zLmdsb2JhbF9kYXRhKQorCQlu b3RpZnkgPSB0cnVlOworCisJaWYgKG5vdGlmeSkgeworCQlob3N0Mmd1Y19zbHBjX2Rpc3BsYXlf bW9kZV9jaGFuZ2UoZGV2KTsKKwl9CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7 Cit9CisKK3ZvaWQgaW50ZWxfc2xwY191cGRhdGVfYXRvbWljX2NvbW1pdF9pbmZvKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCisJCQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZGlzcGxheV9waXBlX2luZm8gKnBlcl9waXBlX2luZm87CisJ c3RydWN0IGludGVsX3NscGNfZGlzcGxheV9tb2RlX2V2ZW50X3BhcmFtcyAqY3VyX3BhcmFtcywg b2xkX3BhcmFtczsKKwlib29sIG5vdGlmeSA9IGZhbHNlOworCWludCBpOworCisJaWYgKCFpbnRl bF9zbHBjX2FjdGl2ZShkZXYpKQorCQlyZXR1cm47CisKKwkvKiBDb3B5IGRpc3BsYXkgbW9kZSBw YXJhbWV0ZXJzIGZvciBjb21wYXJpc29uICovCisJY3VyX3BhcmFtcyA9ICZkZXZfcHJpdi0+Z3Vj LnNscGMuZGlzcGxheV9tb2RlX3BhcmFtczsKKwlvbGRfcGFyYW1zLmdsb2JhbF9kYXRhICA9IGN1 cl9wYXJhbXMtPmdsb2JhbF9kYXRhOworCisJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0YywgY3J0Y19zdGF0ZSwgaSkgeworCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7CisKKwkJcGVyX3BpcGVfaW5mbyA9ICZjdXJfcGFyYW1zLT5w ZXJfcGlwZV9pbmZvW2ludGVsX2NydGMtPnBpcGVdOworCQlvbGRfcGFyYW1zLnBlcl9waXBlX2lu Zm9baW50ZWxfY3J0Yy0+cGlwZV0uZGF0YSA9IHBlcl9waXBlX2luZm8tPmRhdGE7CisKKwkJcGVy X3BpcGVfaW5mby0+ZGF0YSA9IDA7CisJCWN1cl9wYXJhbXMtPmFjdGl2ZV9waXBlc19iaXRtYXNr ICY9ICgwIDw8IGludGVsX2NydGMtPnBpcGUpOworCQljdXJfcGFyYW1zLT52Ymlfc3luY19vbl9w aXBlcyAmPSAoMCA8PCBpbnRlbF9jcnRjLT5waXBlKTsKKworCQlpZiAoY3J0Y19zdGF0ZS0+YWN0 aXZlKSB7CisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5tb2RlOwor CQkJLyogRklYTUU6IFVwZGF0ZSBpc193aWRpIGJhc2VkIG9uIGVuY29kZXIgKi8KKwkJCXBlcl9w aXBlX2luZm8tPmlzX3dpZGkgPSAwOworCQkJcGVyX3BpcGVfaW5mby0+cmVmcmVzaF9yYXRlID0K KwkJCQkJCShtb2RlLT5jbG9jayAqIDEwMDApLyAobW9kZS0+aHRvdGFsICogbW9kZS0+dnRvdGFs KTsKKwkJCWlmICghcGVyX3BpcGVfaW5mby0+cmVmcmVzaF9yYXRlKSB7CisJCQkJRFJNX0VSUk9S KCJJbnZhbGlkIG1vZGUgcmVmcmVzaCByYXRlXG4iKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQlw ZXJfcGlwZV9pbmZvLT52c3luY19mdF91c2VjID0KKwkJCQkJCShtb2RlLT5odG90YWwgKiBtb2Rl LT52dG90YWwgKiAxMDAwKSAvIG1vZGUtPmNsb2NrOworCQkJY3VyX3BhcmFtcy0+YWN0aXZlX3Bp cGVzX2JpdG1hc2sgfD0gKDEgPDwgaW50ZWxfY3J0Yy0+cGlwZSk7CisJCQljdXJfcGFyYW1zLT52 Ymlfc3luY19vbl9waXBlcyB8PSAoMSA8PCBpbnRlbF9jcnRjLT5waXBlKTsKKwkJfQorCisJCWlm IChvbGRfcGFyYW1zLnBlcl9waXBlX2luZm9baW50ZWxfY3J0Yy0+cGlwZV0uZGF0YSAhPSBwZXJf cGlwZV9pbmZvLT5kYXRhKQorCQkJbm90aWZ5ID0gdHJ1ZTsKKwl9CisKKwljdXJfcGFyYW1zLT5u dW1fYWN0aXZlX3BpcGVzID0gaHdlaWdodDMyKGN1cl9wYXJhbXMtPmFjdGl2ZV9waXBlc19iaXRt YXNrKTsKKworCS8qIENvbXBhcmUgb2xkIGRpc3BsYXkgbW9kZSB3aXRoIGN1cnJlbnQgbW9kZS4g Tm90aWZ5IFNMUEMgaWYgaXQgaXMgY2hhbmdlZC4gKi8KKwlpZiAoY3VyX3BhcmFtcy0+Z2xvYmFs X2RhdGEgIT0gb2xkX3BhcmFtcy5nbG9iYWxfZGF0YSkKKwkJbm90aWZ5ID0gdHJ1ZTsKKworCWlm IChub3RpZnkpIHsKKwkJaG9zdDJndWNfc2xwY19kaXNwbGF5X21vZGVfY2hhbmdlKGRldik7CisJ fQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2xwYy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2xwYy5oCmluZGV4IGI5NjNmZTcuLmQ1NjBkODYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NscGMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zbHBjLmgKQEAgLTE0OSw1ICsxNDksOCBAQCB2b2lkIGludGVs X3NscGNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaW50ZWxfc2xwY19k aXNhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbnRlbF9zbHBjX2VuYWJsZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaW50ZWxfc2xwY19yZXNldChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKK3ZvaWQgaW50ZWxfc2xwY191cGRhdGVfZGlzcGxheV9tb2RlX2luZm8o c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIGludGVsX3NscGNfdXBkYXRlX2F0b21pY19j b21taXRfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQkgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSk7CiAKICNlbmRpZgotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=