From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH 03/10] drm/i915: Add support for asynchronous display power disabling Date: Fri, 3 May 2019 02:26:41 +0300 Message-ID: <20190502232648.4450-4-imre.deak@intel.com> References: <20190502232648.4450-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3739E893EA for ; Thu, 2 May 2019 23:27:07 +0000 (UTC) In-Reply-To: <20190502232648.4450-1-imre.deak@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 QnkgZGlzYWJsaW5nIGEgcG93ZXIgZG9tYWluIGFzeW5jaHJvbm91c2x5IHdlIGNhbiByZXN0cmlj dCBob2xkaW5nIGEKcmVmZXJlbmNlIG9uIHRoYXQgcG93ZXIgZG9tYWluIHRvIHRoZSBhY3R1YWwg Y29kZSBzZXF1ZW5jZSB0aGF0CnJlcXVpcmVzIHRoZSBwb3dlciB0byBiZSBvbiBmb3IgdGhlIEhX IGFjY2VzcyBpdCdzIGRvaW5nLCBieSBhbHNvCmF2b2lkaW5nIHVubmVlZGVkIG9uLW9mZi1vbiB0 b2dnbGluZ3Mgb2YgdGhlIHBvd2VyIGRvbWFpbiAoc2luY2UgdGhlCmRpc2FibGluZyBoYXBwZW5z IHdpdGggYSBkZWxheSkuCgpPbmUgYmVuZWZpdCBpcyBwb3RlbnRpYWwgcG93ZXIgc2F2aW5nIGlm IHRoZSBkZWxheSBpcyBjaG9zZW4gcHJvcGVybHkuCgpJbiB0aGUgY2FzZSBvZiB0aGUgQVVYIHBv d2VyIGRvbWFpbiBob2xkaW5nIHRoZSByZWZlcmVuY2Ugb24gdGhlIGRvbWFpbgpmb3IgdGhlIG1p bmltYWwgYW1vdW50IG9mIHRpbWUgYXQgZGVmaW5lZCBzcG90cyBpcyBhbHNvIGEgcmVxdWlyZW1l bnQ6Cm9uIElDTCB3ZSBuZWVkIGEgc3RyaWN0ZXIgY29udHJvbCBvZiB3aGVuIGVpdGhlciBraW5k IG9mIEFVWCBwb3dlcgpkb21haW4gKFRCVC1hbHQgb3IgRFAtYWx0KSBjYW4gYmUgZW5hYmxlZCBh bmQgdGhlIGxvY2tpbmcgd2UgbmVlZCBmb3IKdGhhdCBiZWNvbWVzIHByb2JsZW1hdGljIChkdWUg dG8gZGVwZW5kZW5jaWVzIG9uIG90aGVyIGxvY2tzKSBpZiB3ZQphbGxvdyB0aGUgcmVmZXJlbmNl IHRvIGJlIGhlbGQgZm9yIGFyYml0cmFyaWx5IGxvbmcgcGVyaW9kcy9wbGFjZXMgaW4KdGhlIGNv ZGUuCgpJIGNob3NlIHRoZSBkaXNhYmxpbmcgZGVsYXkgdG8gYmUgMTAwbXNlYyBmb3Igbm93IHRv IGF2b2lkIHRoZSB1bm5lZWRlZAp0b2dnbGluZyAoYW5kIHNvIG5vdCB0byBpbnRyb2R1Y2UgZG1l c2cgc3BhbW1pbmcpIGluIHRoZSBEUCBNU1Qgc2lkZWJhbmQKc2lnbmFsaW5nIGNvZGUuIFdlIGNv dWxkIG9wdGltaXplIHRoaXMgZGVsYXkgbGF0ZXIuCgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+CkNjOiBWaWxsZSBTeXJqYWxhIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgNSArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAzMTYgKysrKysrKysrKysr KysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmggfCAg IDQgKwogMyBmaWxlcyBjaGFuZ2VkLCAzMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggOWZiMjY2MzRhNmJlLi41M2E2YjBkYTM1NzEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtODM5LDYgKzgzOSwxMSBAQCBzdHJ1Y3QgaTkx NV9wb3dlcl9kb21haW5zIHsKIAogCXN0cnVjdCBtdXRleCBsb2NrOwogCWludCBkb21haW5fdXNl X2NvdW50W1BPV0VSX0RPTUFJTl9OVU1dOworCisJc3RydWN0IGRlbGF5ZWRfd29yayBhc3luY19w dXRfd29yazsKKwlpbnRlbF93YWtlcmVmX3QgYXN5bmNfcHV0X3dha2VyZWY7CisJdTY0IGFzeW5j X3B1dF9kb21haW5zWzJdOworCiAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbHM7 CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3Bt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKaW5kZXggY2M0NWNi Y2I0M2NiLi5iYzA2OTNlMzYxNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMKQEAgLTE4ODMsNiArMTg4MywxMzAgQEAgc3RhdGljIHZvaWQgY2h2X3BpcGVfcG93ZXJf d2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAljaHZfc2V0 X3BpcGVfcG93ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCwgZmFsc2UpOwogfQogCitzdGF0 aWMgaW50ZWxfd2FrZXJlZl90CitpbnRlbF9ydW50aW1lX3BtX2dldF9yYXcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOworc3RhdGljIHZvaWQKK2ludGVsX3J1bnRpbWVfcG1fcHV0X3Jh dyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50ZWxfd2FrZXJlZl90IHdyZWYpOwor CitzdGF0aWMgdTY0IF9fYXN5bmNfcHV0X2RvbWFpbnNfbWFzayhzdHJ1Y3QgaTkxNV9wb3dlcl9k b21haW5zICpwb3dlcl9kb21haW5zKQoreworCXJldHVybiBwb3dlcl9kb21haW5zLT5hc3luY19w dXRfZG9tYWluc1swXSB8CisJICAgICAgIHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5z WzFdOworfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9Q TSkKKworc3RhdGljIGJvb2wKK2Fzc2VydF9hc3luY19wdXRfZG9tYWluX21hc2tzX2Rpc2pvaW50 KHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMpCit7CisJcmV0dXJuICFX QVJOX09OKHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzBdICYKKwkJCXBvd2VyX2Rv bWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzFdKTsKK30KKworc3RhdGljIGJvb2wKK19fYXN5bmNf cHV0X2RvbWFpbnNfc3RhdGVfb2soc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9t YWlucykKK3sKKwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKKwlib29s IGVyciA9IGZhbHNlOworCisJZXJyIHw9ICFhc3NlcnRfYXN5bmNfcHV0X2RvbWFpbl9tYXNrc19k aXNqb2ludChwb3dlcl9kb21haW5zKTsKKwllcnIgfD0gV0FSTl9PTighIXBvd2VyX2RvbWFpbnMt PmFzeW5jX3B1dF93YWtlcmVmICE9CisJCSAgICAgICAhIV9fYXN5bmNfcHV0X2RvbWFpbnNfbWFz ayhwb3dlcl9kb21haW5zKSk7CisKKwlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBfX2Fz eW5jX3B1dF9kb21haW5zX21hc2socG93ZXJfZG9tYWlucykpCisJCWVyciB8PSBXQVJOX09OKHBv d2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWluXSAhPSAxKTsKKworCXJldHVybiAh ZXJyOworfQorCitzdGF0aWMgdm9pZCBwcmludF9wb3dlcl9kb21haW5zKHN0cnVjdCBpOTE1X3Bv d2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsCisJCQkJY29uc3QgY2hhciAqcHJlZml4LCB1NjQg bWFzaykKK3sKKwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKKworCURS TV9ERUJVR19EUklWRVIoIiVzICglbHUpOlxuIiwgcHJlZml4LCBod2VpZ2h0NjQobWFzaykpOwor CWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIG1hc2spCisJCURSTV9ERUJVR19EUklWRVIo IiVzIHVzZV9jb3VudCAlZFxuIiwKKwkJCQkgaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW5fc3Ry KGRvbWFpbiksCisJCQkJIHBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWluXSk7 Cit9CisKK3N0YXRpYyB2b2lkCitwcmludF9hc3luY19wdXRfZG9tYWluc19zdGF0ZShzdHJ1Y3Qg aTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQoreworCURSTV9ERUJVR19EUklWRVIo ImFzeW5jX3B1dF93YWtlcmVmICV1XG4iLAorCQkJIHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93 YWtlcmVmKTsKKworCXByaW50X3Bvd2VyX2RvbWFpbnMocG93ZXJfZG9tYWlucywgImFzeW5jX3B1 dF9kb21haW5zWzBdIiwKKwkJCSAgICBwb3dlcl9kb21haW5zLT5hc3luY19wdXRfZG9tYWluc1sw XSk7CisJcHJpbnRfcG93ZXJfZG9tYWlucyhwb3dlcl9kb21haW5zLCAiYXN5bmNfcHV0X2RvbWFp bnNbMV0iLAorCQkJICAgIHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzFdKTsKK30K Kworc3RhdGljIHZvaWQKK3ZlcmlmeV9hc3luY19wdXRfZG9tYWluc19zdGF0ZShzdHJ1Y3QgaTkx NV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQoreworCWlmICghX19hc3luY19wdXRfZG9t YWluc19zdGF0ZV9vayhwb3dlcl9kb21haW5zKSkKKwkJcHJpbnRfYXN5bmNfcHV0X2RvbWFpbnNf c3RhdGUocG93ZXJfZG9tYWlucyk7Cit9CisKKyNlbHNlCisKK3N0YXRpYyB2b2lkCithc3NlcnRf YXN5bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNqb2ludChzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5z ICpwb3dlcl9kb21haW5zKQoreworfQorCitzdGF0aWMgdm9pZAordmVyaWZ5X2FzeW5jX3B1dF9k b21haW5zX3N0YXRlKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMpCit7 Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSAqLworCitz dGF0aWMgdTY0IGFzeW5jX3B1dF9kb21haW5zX21hc2soc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlu cyAqcG93ZXJfZG9tYWlucykKK3sKKwlhc3NlcnRfYXN5bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNq b2ludChwb3dlcl9kb21haW5zKTsKKworCXJldHVybiBfX2FzeW5jX3B1dF9kb21haW5zX21hc2so cG93ZXJfZG9tYWlucyk7Cit9CisKK3N0YXRpYyB2b2lkCithc3luY19wdXRfZG9tYWluc19jbGVh cl9kb21haW4oc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucywKKwkJCSAg ICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKK3sKKwlhc3NlcnRf YXN5bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNqb2ludChwb3dlcl9kb21haW5zKTsKKworCXBvd2Vy X2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzBdICY9IH5CSVRfVUxMKGRvbWFpbik7CisJcG93 ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFpbnNbMV0gJj0gfkJJVF9VTEwoZG9tYWluKTsKK30K Kworc3RhdGljIGJvb2wKK2ludGVsX2Rpc3BsYXlfcG93ZXJfZ3JhYl9hc3luY19wdXRfcmVmKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICAgZW51bSBpbnRlbF9k aXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCit7CisJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlu cyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKKwlib29sIHJldCA9 IGZhbHNlOworCisJaWYgKCEoYXN5bmNfcHV0X2RvbWFpbnNfbWFzayhwb3dlcl9kb21haW5zKSAm IEJJVF9VTEwoZG9tYWluKSkpCisJCWdvdG8gb3V0X3ZlcmlmeTsKKworCWFzeW5jX3B1dF9kb21h aW5zX2NsZWFyX2RvbWFpbihwb3dlcl9kb21haW5zLCBkb21haW4pOworCisJcmV0ID0gdHJ1ZTsK KworCWlmIChhc3luY19wdXRfZG9tYWluc19tYXNrKHBvd2VyX2RvbWFpbnMpKQorCQlnb3RvIG91 dF92ZXJpZnk7CisKKwljYW5jZWxfZGVsYXllZF93b3JrKCZwb3dlcl9kb21haW5zLT5hc3luY19w dXRfd29yayk7CisJaW50ZWxfcnVudGltZV9wbV9wdXRfcmF3KGRldl9wcml2LAorCQkJCSBmZXRj aF9hbmRfemVybygmcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dha2VyZWYpKTsKK291dF92ZXJp Znk6CisJdmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHBvd2VyX2RvbWFpbnMpOworCisJ cmV0dXJuIHJldDsKK30KKwogc3RhdGljIHZvaWQKIF9faW50ZWxfZGlzcGxheV9wb3dlcl9nZXRf ZG9tYWluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgZW51bSBpbnRl bF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCkBAIC0xODkwLDYgKzIwMTQsOSBAQCBfX2lu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZf cHJpdi0+cG93ZXJfZG9tYWluczsKIAlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxs OwogCisJaWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfZ3JhYl9hc3luY19wdXRfcmVmKGRldl9wcml2 LCBkb21haW4pKQorCQlyZXR1cm47CisKIAlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbChkZXZf cHJpdiwgcG93ZXJfd2VsbCwgQklUX1VMTChkb21haW4pKQogCQlpbnRlbF9wb3dlcl93ZWxsX2dl dChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7CiAKQEAgLTE5MTUsOSArMjA0Miw3IEBAIGludGVsX3dh a2VyZWZfdCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7CiAKIAltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKLQogCV9f aW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfZG9tYWluKGRldl9wcml2LCBkb21haW4pOwotCiAJbXV0 ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKIAogCXJldHVybiB3YWtlcmVmOwpAQCAt MTk2NiwyNCArMjA5MSwzNiBAQCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlyZXR1cm4gd2FrZXJlZjsKIH0KIAot c3RhdGljIHZvaWQgX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp biBkb21haW4pCitzdGF0aWMgdm9pZAorX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9kb21haW4o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSBlbnVtIGludGVsX2Rpc3Bs YXlfcG93ZXJfZG9tYWluIGRvbWFpbikKIHsKIAlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpw b3dlcl9kb21haW5zOwogCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7CisJY29u c3QgY2hhciAqbmFtZSA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3N0cihkb21haW4pOwog CiAJcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKIAotCW11dGV4X2xv Y2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwotCiAJV0FSTighcG93ZXJfZG9tYWlucy0+ZG9tYWlu X3VzZV9jb3VudFtkb21haW5dLAogCSAgICAgIlVzZSBjb3VudCBvbiBkb21haW4gJXMgaXMgYWxy ZWFkeSB6ZXJvXG4iLAotCSAgICAgaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKGRvbWFp bikpOworCSAgICAgbmFtZSk7CisJV0FSTihhc3luY19wdXRfZG9tYWluc19tYXNrKHBvd2VyX2Rv bWFpbnMpICYgQklUX1VMTChkb21haW4pLAorCSAgICAgIkFzeW5jIGRpc2FibGluZyBvZiBkb21h aW4gJXMgaXMgcGVuZGluZ1xuIiwKKwkgICAgIG5hbWUpOworCiAJcG93ZXJfZG9tYWlucy0+ZG9t YWluX3VzZV9jb3VudFtkb21haW5dLS07CiAKIAlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9y ZXZlcnNlKGRldl9wcml2LCBwb3dlcl93ZWxsLCBCSVRfVUxMKGRvbWFpbikpCiAJCWludGVsX3Bv d2VyX3dlbGxfcHV0KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKK30KIAorc3RhdGljIHZvaWQgX19p bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkJICAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCit7CisJ c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93 ZXJfZG9tYWluczsKKworCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOworCV9faW50 ZWxfZGlzcGxheV9wb3dlcl9wdXRfZG9tYWluKGRldl9wcml2LCBkb21haW4pOwogCW11dGV4X3Vu bG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CiB9CiAKQEAgLTIwMDMsNiArMjE0MCwxNTkgQEAg dm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChkZXZfcHJp dik7CiB9CiAKK3N0YXRpYyB2b2lkCitxdWV1ZV9hc3luY19wdXRfZG9tYWluc193b3JrKHN0cnVj dCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsCisJCQkgICAgIGludGVsX3dha2Vy ZWZfdCB3YWtlcmVmKQoreworCVdBUk5fT04ocG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dha2Vy ZWYpOworCXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93YWtlcmVmID0gd2FrZXJlZjsKKwlXQVJO X09OKCFxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3VuYm91bmRfd3EsCisJCQkJICAgICZwb3dl cl9kb21haW5zLT5hc3luY19wdXRfd29yaywKKwkJCQkgICAgbXNlY3NfdG9famlmZmllcygxMDAp KSk7Cit9CisKK3N0YXRpYyB2b2lkCityZWxlYXNlX2FzeW5jX3B1dF9kb21haW5zKHN0cnVjdCBp OTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsIHU2NCBtYXNrKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZihwb3dlcl9kb21haW5z LCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwKKwkJCSAgICAgcG93ZXJfZG9tYWlucyk7CisJZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW47CisJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CisKKwkvKgorCSAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIGFscmVhZHkgcmF3IHdha2Vy ZWYsIHVwZ3JhZGUgdGhhdCB0byBhIHByb3BlcgorCSAqIHdha2VyZWYgdG8gbWFrZSB0aGUgc3Rh dGUgY2hlY2tlciBoYXBweSBhYm91dCB0aGUgSFcgYWNjZXNzIGR1cmluZworCSAqIHBvd2VyIHdl bGwgZGlzYWJsaW5nLgorCSAqLworCWFzc2VydF9yYXdfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3By aXYpOworCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisKKwlmb3Jf ZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBtYXNrKSB7CisJCS8qIENsZWFyIGJlZm9yZSBwdXQs IHNvIHB1dCdzIHNhbml0eSBjaGVjayBpcyBoYXBweS4gKi8KKwkJYXN5bmNfcHV0X2RvbWFpbnNf Y2xlYXJfZG9tYWluKHBvd2VyX2RvbWFpbnMsIGRvbWFpbik7CisJCV9faW50ZWxfZGlzcGxheV9w b3dlcl9wdXRfZG9tYWluKGRldl9wcml2LCBkb21haW4pOworCX0KKworCWludGVsX3J1bnRpbWVf cG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKK30KKworc3RhdGljIHZvaWQKK2ludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0X2FzeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoreworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZih3b3JrLCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwKKwkJCSAgICAgcG93ZXJfZG9tYWlucy5hc3luY19wdXRf d29yay53b3JrKTsKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0g JmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCWludGVsX3dha2VyZWZfdCBuZXdfd29ya193YWtl cmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXRfcmF3KGRldl9wcml2KTsKKwlpbnRlbF93YWtlcmVm X3Qgb2xkX3dvcmtfd2FrZXJlZiA9IDA7CisKKwltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5s b2NrKTsKKworCS8qCisJICogQmFpbCBvdXQgaWYgYWxsIHRoZSBkb21haW4gcmVmcyBwZW5kaW5n IHRvIGJlIHJlbGVhc2VkIHdlcmUgZ3JhYmJlZAorCSAqIGJ5IHN1YnNlcXVlbnQgZ2V0cyBvciBh IGZsdXNoX3dvcmsuCisJICovCisJb2xkX3dvcmtfd2FrZXJlZiA9IGZldGNoX2FuZF96ZXJvKCZw b3dlcl9kb21haW5zLT5hc3luY19wdXRfd2FrZXJlZik7CisJaWYgKCFvbGRfd29ya193YWtlcmVm KQorCQlnb3RvIG91dF92ZXJpZnk7CisKKwlyZWxlYXNlX2FzeW5jX3B1dF9kb21haW5zKHBvd2Vy X2RvbWFpbnMsCisJCQkJICBwb3dlcl9kb21haW5zLT5hc3luY19wdXRfZG9tYWluc1swXSk7CisK KwkvKiBSZXF1ZXVlIHRoZSB3b3JrIGlmIG1vcmUgZG9tYWlucyB3ZXJlIGFzeW5jIHB1dCBtZWFu d2hpbGUuICovCisJaWYgKHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzFdKSB7CisJ CXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzBdID0KKwkJCWZldGNoX2FuZF96ZXJv KCZwb3dlcl9kb21haW5zLT5hc3luY19wdXRfZG9tYWluc1sxXSk7CisJCXF1ZXVlX2FzeW5jX3B1 dF9kb21haW5zX3dvcmsocG93ZXJfZG9tYWlucywKKwkJCQkJICAgICBmZXRjaF9hbmRfemVybygm bmV3X3dvcmtfd2FrZXJlZikpOworCX0KKworb3V0X3ZlcmlmeToKKwl2ZXJpZnlfYXN5bmNfcHV0 X2RvbWFpbnNfc3RhdGUocG93ZXJfZG9tYWlucyk7CisKKwltdXRleF91bmxvY2soJnBvd2VyX2Rv bWFpbnMtPmxvY2spOworCisJaWYgKG9sZF93b3JrX3dha2VyZWYpCisJCWludGVsX3J1bnRpbWVf cG1fcHV0X3JhdyhkZXZfcHJpdiwgb2xkX3dvcmtfd2FrZXJlZik7CisJaWYgKG5ld193b3JrX3dh a2VyZWYpCisJCWludGVsX3J1bnRpbWVfcG1fcHV0X3JhdyhkZXZfcHJpdiwgbmV3X3dvcmtfd2Fr ZXJlZik7Cit9CisKK3ZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dl cl9kb21haW4gZG9tYWluLAorCQkJCSAgIGludGVsX3dha2VyZWZfdCB3YWtlcmVmKQoreworCXN0 cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2Vy X2RvbWFpbnM7CisJaW50ZWxfd2FrZXJlZl90IHdvcmtfd2FrZXJlZiA9IGludGVsX3J1bnRpbWVf cG1fZ2V0X3JhdyhkZXZfcHJpdik7CisKKwltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2Nr KTsKKworCWlmIChwb3dlcl9kb21haW5zLT5kb21haW5fdXNlX2NvdW50W2RvbWFpbl0gPiAxKSB7 CisJCV9faW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfZG9tYWluKGRldl9wcml2LCBkb21haW4pOwor CisJCWdvdG8gb3V0X3ZlcmlmeTsKKwl9CisKKwlXQVJOX09OKHBvd2VyX2RvbWFpbnMtPmRvbWFp bl91c2VfY291bnRbZG9tYWluXSAhPSAxKTsKKworCS8qIExldCBhIHBlbmRpbmcgd29yayByZXF1 ZXVlIGl0c2VsZiBvciBxdWV1ZSBhIG5ldyBvbmUuICovCisJaWYgKHBvd2VyX2RvbWFpbnMtPmFz eW5jX3B1dF93YWtlcmVmKSB7CisJCXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzFd IHw9IEJJVF9VTEwoZG9tYWluKTsKKwl9IGVsc2UgeworCQlwb3dlcl9kb21haW5zLT5hc3luY19w dXRfZG9tYWluc1swXSB8PSBCSVRfVUxMKGRvbWFpbik7CisJCXF1ZXVlX2FzeW5jX3B1dF9kb21h aW5zX3dvcmsocG93ZXJfZG9tYWlucywKKwkJCQkJICAgICBmZXRjaF9hbmRfemVybygmd29ya193 YWtlcmVmKSk7CisJfQorCitvdXRfdmVyaWZ5OgorCXZlcmlmeV9hc3luY19wdXRfZG9tYWluc19z dGF0ZShwb3dlcl9kb21haW5zKTsKKworCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9j ayk7CisKKwlpZiAod29ya193YWtlcmVmKQorCQlpbnRlbF9ydW50aW1lX3BtX3B1dF9yYXcoZGV2 X3ByaXYsIHdvcmtfd2FrZXJlZik7CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwg d2FrZXJlZik7Cit9CisKK3ZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21h aW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCWludGVsX3dh a2VyZWZfdCB3b3JrX3dha2VyZWY7CisKKwltdXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2Nr KTsKKworCXdvcmtfd2FrZXJlZiA9IGZldGNoX2FuZF96ZXJvKCZwb3dlcl9kb21haW5zLT5hc3lu Y19wdXRfd2FrZXJlZik7CisJaWYgKCF3b3JrX3dha2VyZWYpCisJCWdvdG8gb3V0X3ZlcmlmeTsK KworCXJlbGVhc2VfYXN5bmNfcHV0X2RvbWFpbnMocG93ZXJfZG9tYWlucywKKwkJCQkgIGFzeW5j X3B1dF9kb21haW5zX21hc2socG93ZXJfZG9tYWlucykpOworCWNhbmNlbF9kZWxheWVkX3dvcmso JnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93b3JrKTsKKworb3V0X3ZlcmlmeToKKwl2ZXJpZnlf YXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUocG93ZXJfZG9tYWlucyk7CisKKwltdXRleF91bmxvY2so JnBvd2VyX2RvbWFpbnMtPmxvY2spOworCisJaWYgKHdvcmtfd2FrZXJlZikKKwkJaW50ZWxfcnVu dGltZV9wbV9wdXRfcmF3KGRldl9wcml2LCB3b3JrX3dha2VyZWYpOworfQorCitzdGF0aWMgdm9p ZAoraW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrX3N5bmMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2Rv bWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CisKKwlpbnRlbF9kaXNwbGF5X3Bvd2Vy X2ZsdXNoX3dvcmsoZGV2X3ByaXYpOworCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmcG93ZXJf ZG9tYWlucy0+YXN5bmNfcHV0X3dvcmspOworCisJdmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0 YXRlKHBvd2VyX2RvbWFpbnMpOworCisJV0FSTl9PTihwb3dlcl9kb21haW5zLT5hc3luY19wdXRf d2FrZXJlZik7Cit9CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5U SU1FX1BNKQogdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4g ZG9tYWluLApAQCAtMzQ5MSw2ICszNzgxLDkgQEAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAltdXRleF9pbml0KCZwb3dl cl9kb21haW5zLT5sb2NrKTsKIAorCUlOSVRfREVMQVlFRF9XT1JLKCZwb3dlcl9kb21haW5zLT5h c3luY19wdXRfd29yaywKKwkJCSAgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmNfd29yayk7 CisKIAkvKgogCSAqIFRoZSBlbmFibGluZyBvcmRlciB3aWxsIGJlIGZyb20gbG93ZXIgdG8gaGln aGVyIGluZGV4ZWQgd2VsbHMsCiAJICogdGhlIGRpc2FibGluZyBvcmRlciBpcyByZXZlcnNlZC4K QEAgLTQxNjgsNiArNDQ2MSw4IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWlmICghaTkxNV9tb2RwYXJhbXMuZGlzYWJs ZV9wb3dlcl93ZWxsKQogCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoaTkxNSwg UE9XRVJfRE9NQUlOX0lOSVQpOwogCisJaW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrX3N5 bmMoaTkxNSk7CisKIAlpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShpOTE1KTsKIAog CS8qIEtlZXAgdGhlIHBvd2VyIHdlbGwgZW5hYmxlZCwgYnV0IGNhbmNlbCBpdHMgcnBtIHdha2Vy ZWYuICovCkBAIC00MjQzLDYgKzQ1MzgsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3Vz cGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlpZiAoIShpOTE1LT5jc3IuYWxs b3dlZF9kY19tYXNrICYgRENfU1RBVEVfRU5fREM5KSAmJgogCSAgICBzdXNwZW5kX21vZGUgPT0g STkxNV9EUk1fU1VTUEVORF9JRExFICYmCiAJICAgIGk5MTUtPmNzci5kbWNfcGF5bG9hZCkgewor CQlpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoaTkxNSk7CiAJCWludGVsX3Bvd2VyX2Rv bWFpbnNfdmVyaWZ5X3N0YXRlKGk5MTUpOwogCQlyZXR1cm47CiAJfQpAQCAtNDI1NCw2ICs0NTUw LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCiAJaWYgKCFpOTE1X21vZHBhcmFtcy5kaXNhYmxlX3Bvd2VyX3dlbGwpCiAJ CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChpOTE1LCBQT1dFUl9ET01BSU5fSU5J VCk7CiAKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoaTkxNSk7CiAJaW50ZWxfcG93 ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoaTkxNSk7CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDExKQpAQCAtNDMzMiw2ICs0NjI5LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWlu c192ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAltdXRleF9s b2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKIAorCXZlcmlmeV9hc3luY19wdXRfZG9tYWluc19z dGF0ZShwb3dlcl9kb21haW5zKTsKKwogCWR1bXBfZG9tYWluX2luZm8gPSBmYWxzZTsKIAlmb3Jf ZWFjaF9wb3dlcl93ZWxsKGk5MTUsIHBvd2VyX3dlbGwpIHsKIAkJZW51bSBpbnRlbF9kaXNwbGF5 X3Bvd2VyX2RvbWFpbiBkb21haW47CkBAIC00NDAwLDcgKzQ2OTksNiBAQCBzdGF0aWMgdm9pZCBf X2ludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCVdB Uk5fT05DRShyZXQgPCAwLCAicG1fcnVudGltZV9nZXRfc3luYygpIGZhaWxlZDogJWRcbiIsIHJl dCk7CiB9CiAKLV9fYXR0cmlidXRlX18oKF9fdXNlZF9fKSkKIHN0YXRpYyBpbnRlbF93YWtlcmVm X3QgaW50ZWxfcnVudGltZV9wbV9nZXRfcmF3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQogewogCV9faW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CkBAIC00NTA4LDcgKzQ4MDYsNiBA QCB2b2lkIGludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIH0KIAogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JV TlRJTUVfUE0pCi1fX2F0dHJpYnV0ZV9fKChfX3VzZWRfXykpCiBzdGF0aWMgdm9pZCBpbnRlbF9y dW50aW1lX3BtX3B1dF9yYXcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJICAg ICBpbnRlbF93YWtlcmVmX3Qgd3JlZikKIHsKQEAgLTQ1MjIsNyArNDgxOSw2IEBAIHZvaWQgaW50 ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludGVsX3dh a2VyZWZfdCB3cmVmKQogCWludGVsX3J1bnRpbWVfcG1fcHV0X3VuY2hlY2tlZChpOTE1KTsKIH0K ICNlbHNlCi1fX2F0dHJpYnV0ZV9fKChfX3VzZWRfXykpCiBzdGF0aWMgdm9pZCBpbnRlbF9ydW50 aW1lX3BtX3B1dF9yYXcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkJICAgICBp bnRlbF93YWtlcmVmX3Qgd3JlZikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uaAppbmRleCA2OTIyNzc1NmRlM2UuLmNhYmY2ZjkwMDI3MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uaApAQCAtNTcsNiArNTcsMTAgQEAgaW50ZWxfZGlzcGxheV9w b3dlcl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkJICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pOwogdm9pZCBpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJCSAgICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFp bik7Cit2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbiwKKwkJCQkgICBpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZik7Cit2b2lkIGludGVsX2Rp c3BsYXlfcG93ZXJfZmx1c2hfd29yayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCiB2b2lk IGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJCSAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4sCi0tIAoy LjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==