From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH] drm/i915: Control PSR at runtime through debugfs only Date: Wed, 14 Mar 2018 12:46:58 +0100 Message-ID: <20180314114658.61861-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9F15D6E6BB for ; Wed, 14 Mar 2018 11:47:04 +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 List-Id: intel-gfx@lists.freedesktop.org QWxsb3cgY29udHJvbGxpbmcgbGluayBzdGF0dXMgdGhyb3VnaCBpOTE1X2VkcF9wc3Jfc3RhdHVz LCBpbiB0aGUgc2FtZSB3YXkga2VybmVsIGRvZXMuClRoaXMgcmVwbGFjZXMgY2hhbmdpbmcgdGhl IG1vZHVsZSBwYXJhbWV0ZXIgYXQgcnVudGltZSwgdGhlbiBmb3JjaW5nIGEgbW9kZXNldC4KCldy aXRpbmcgLTEgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIFBTUiBtb2RlIHNldCB0aHJvdWdoIHRoZSBt b2R1bGUgcGFyYW1ldGVyLgpXcml0aW5nIDAgZGlzYWJsZXMgUFNSLgpXcml0aW5nIDEgZW5hYmxl cyBQU1Igd2l0aCBkZWZhdWx0IGxpbmsgc3RhbmRieSBtb2RlLgpXcml0aW5nIDIgZW5hYmxlcyBQ U1Igd2l0aCBsaW5rIHN0YW5kYnkuCldyaXRpbmcgMyBlbmFibGVzIFBTUiB3aXRoIGxpbmsgc3Rh bmRieSBkaXNhYmxlZC4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQpUaGlzIGJyZWFrcyBrbXNfZnJvbnRidWZm ZXJfdHJhY2tpbmcsIGFuZCBuZWVkcyB0aGUgZm9sbG93aW5nIHBhdGNoIHRvIHdvcms6Cmh0dHBz Oi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8yMDk5NTYvCgpYWFg6IE1ha2UgZ2xv YmFsX2VuYWJsZSBhIHRyaXN0YXRlLCB0byBrZWVwIG9sZGVyIHZlcnNpb25zIG9mIGttc19mcm9u dGJ1ZmZlcl90cmFja2luZyB3b3JraW5nPwoKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wYXJhbXMuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgIHwgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICB8IDEz OSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2Vy dGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK aW5kZXggNTc0ZmNmMjM0MDA3Li41MzRhM2IwNGU2YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCkBAIC0yNTQ2LDE2ICsyNTQ2LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpwc3Iy X2xpdmVfc3RhdHVzKHUzMiB2YWwpCiAKIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7CiAJdTMyIHBzcnBlcmYgPSAwOwogCXUz MiBzdGF0WzNdOwogCWVudW0gcGlwZSBwaXBlOwogCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwogCWJv b2wgc2lua19zdXBwb3J0OwogCi0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKLQkJcmV0dXJuIC1F Tk9ERVY7Ci0KIAlzaW5rX3N1cHBvcnQgPSBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydDsKIAlz ZXFfcHJpbnRmKG0sICJTaW5rX1N1cHBvcnQ6ICVzXG4iLCB5ZXNubyhzaW5rX3N1cHBvcnQpKTsK IAlpZiAoIXNpbmtfc3VwcG9ydCkKQEAgLTI2MzEsNiArMjYyOCwxODEgQEAgc3RhdGljIGludCBp OTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGJvb2wgcHNyX25lZWRzX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgYm9vbCBlbmFibGUsIGJvb2wgbGlua19zdGFu ZGJ5KQoreworCWlmICghZGV2X3ByaXYtPnBzci5nbG9iYWxfZW5hYmxlKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoIWVuYWJsZSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAoZGV2X3ByaXYtPnBz ci5saW5rX3N0YW5kYnkgIT0gbGlua19zdGFuZGJ5KQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVy biBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgcHNyX25lZWRzX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgIGJvb2wgZW5hYmxlKQoreworCWlmICghZW5h YmxlKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gIWRldl9wcml2LT5wc3IuZ2xvYmFsX2Vu YWJsZTsKK30KKworc3RhdGljIGludCBfX2k5MTVfZWRwX3Bzcl93cml0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4 ICpjdHgsCisJCQkJYm9vbCBlbmFibGUsIGJvb2wgbGlua19zdGFuZGJ5KQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXIgY29ubl9pdGVyOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJ c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlp bnQgcmV0OworCWJvb2wgbmVlZHNfZW5hYmxlLCBmb3VuZDsKKworCXJldCA9IGRybV9tb2Rlc2V0 X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgY3R4KTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKK3Jl dHJ5OgorCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7CisJCWRldl9wcml2LT5wc3IuZ2xv YmFsX2VuYWJsZSA9IGVuYWJsZTsKKwkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBsaW5r X3N0YW5kYnk7CisJCWdvdG8gZW5kOworCX0KKwllbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGRl dl9wcml2LT5wc3IuZW5hYmxlZCktPmJhc2UuYmFzZTsKKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5wc3IubG9jayk7CisKKwlmb3VuZCA9IGZhbHNlOworCWRybV9jb25uZWN0b3JfbGlzdF9pdGVy X2JlZ2luKGRldiwgJmNvbm5faXRlcik7CisJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNv bm5lY3RvciwgJmNvbm5faXRlcikKKwkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2Rl ciA9PSBlbmNvZGVyKSB7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCWRybV9j b25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsKKworCWlmIChXQVJOX09OKCFmb3Vu ZCkpCisJCXJldHVybiAtRUlOVkFMOworCisJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7 CisJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIGN0eCk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7CisJaWYg KGRldl9wcml2LT5wc3IuZW5hYmxlZCAhPSBlbmNfdG9faW50ZWxfZHAoZW5jb2RlcikpCisJCWdv dG8gcmV0cnk7CisKKwlpZiAoKGNvbm5lY3Rvci0+c3RhdGUtPmNvbW1pdCAmJiAhdHJ5X3dhaXRf Zm9yX2NvbXBsZXRpb24oJmNvbm5lY3Rvci0+c3RhdGUtPmNvbW1pdC0+aHdfZG9uZSkpIHx8CisJ ICAgIChjcnRjLT5zdGF0ZS0+Y29tbWl0ICYmICF0cnlfd2FpdF9mb3JfY29tcGxldGlvbigmY3J0 Yy0+c3RhdGUtPmNvbW1pdC0+aHdfZG9uZSkpKSB7CisJCXJldCA9IC1FQlVTWTsKKwkJZ290byBl bmQ7CisJfQorCisJaWYgKHBzcl9uZWVkc19kaXNhYmxlKGRldl9wcml2LCBlbmFibGUsIGxpbmtf c3RhbmRieSkpIHsKKwkJX19pbnRlbF9wc3JfZGlzYWJsZShkZXZfcHJpdiwgZGV2X3ByaXYtPnBz ci5lbmFibGVkLCB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7CisJCWRldl9wcml2 LT5wc3IuZ2xvYmFsX2VuYWJsZSA9IGZhbHNlOworCX0KKworCW5lZWRzX2VuYWJsZSA9IHBzcl9u ZWVkc19lbmFibGUoZGV2X3ByaXYsIGVuYWJsZSk7CisJZGV2X3ByaXYtPnBzci5nbG9iYWxfZW5h YmxlID0gZW5hYmxlOworCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gbGlua19zdGFuZGJ5 OworCisJaWYgKG5lZWRzX2VuYWJsZSkKKwkJX19pbnRlbF9wc3JfZW5hYmxlKGRldl9wcml2LCBk ZXZfcHJpdi0+cHNyLmVuYWJsZWQsIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpKTsK KworZW5kOgorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgc3NpemVfdCBpOTE1X2VkcF9wc3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZp bGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAorCQkJCSAgc2l6ZV90IGxlbiwgbG9mZl90ICpv ZmZwKQoreworCXN0cnVjdCBzZXFfZmlsZSAqbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOworCXN0cnVjdCBkcm1f bW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CisJaW50IHJldCwgdmFsOworCWJvb2wgbGlua19zdGFu ZGJ5OworCisJaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKKwkJcmV0dXJuIC1FTk9E RVY7CisKKwlyZXQgPSBrc3RydG9pbnRfZnJvbV91c2VyKHVidWYsIGxlbiwgMTAsICZ2YWwpOwor CWlmIChyZXQgPCAwKSB7CisJCWJvb2wgZW5hYmxlOworCQlyZXQgPSBrc3RydG9ib29sX2Zyb21f dXNlcih1YnVmLCBsZW4sICZlbmFibGUpOworCisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJl dDsKKworCQl2YWwgPSBlbmFibGU7CisJfQorCisJLyogLTEgLT4gcmVzZXQgdG8gZGVmYXVsdCAq LworCWlmICh2YWwgPT0gLTEpCisJCXZhbCA9IGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3I7CisK Kwlzd2l0Y2ggKHZhbCkgeworCWNhc2UgMDoKKwljYXNlIDE6CisJCWxpbmtfc3RhbmRieSA9IGlu dGVsX3Bzcl9kZWZhdWx0X2xpbmtfc3RhbmRieShkZXZfcHJpdik7CisJCWJyZWFrOworCWNhc2Ug MjoKKwkJbGlua19zdGFuZGJ5ID0gdHJ1ZTsKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlsaW5rX3N0 YW5kYnkgPSBmYWxzZTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCisJZHJtX21vZGVzZXRfYWNx dWlyZV9pbml0KCZjdHgsIERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7CisKK3Jl dHJ5OgorCXJldCA9IF9faTkxNV9lZHBfcHNyX3dyaXRlKGRldl9wcml2LCAmY3R4LCB2YWwsIGxp bmtfc3RhbmRieSk7CisJaWYgKHJldCA9PSAtRUJVU1kpIHsKKwkJcmV0ID0gZHJtX21vZGVzZXRf YmFja29mZigmY3R4KTsKKwkJaWYgKCFyZXQpCisJCQlnb3RvIHJldHJ5OworCX0KKworCWRybV9t b2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CisJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgp OworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCisJcmV0dXJuIHJldCA/OiBs ZW47Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX29wZW4oc3RydWN0IGlub2RlICppbm9k ZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCWlmICghSEFTX1BTUihkZXZfcHJpdikpCisJCXJl dHVybiAtRU5PREVWOworCisJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVfZWRwX3Bzcl9z dGF0dXMsIGRldl9wcml2KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgaTkxNV9lZHBfcHNyX29wcyA9IHsKKwkub3duZXIgPSBUSElTX01PRFVMRSwKKwkub3BlbiA9 IGk5MTVfZWRwX3Bzcl9vcGVuLAorCS5yZWFkID0gc2VxX3JlYWQsCisJLmxsc2VlayA9IHNlcV9s c2VlaywKKwkucmVsZWFzZSA9IHNpbmdsZV9yZWxlYXNlLAorCS53cml0ZSA9IGk5MTVfZWRwX3Bz cl93cml0ZQorfTsKKwogc3RhdGljIGludCBpOTE1X3NpbmtfY3JjKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBu b2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CkBAIC00NzM0LDcgKzQ5MDYsNiBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9pbmZvX2xpc3QgaTkxNV9kZWJ1Z2ZzX2xpc3RbXSA9IHsKIAl7Imk5MTVf c3dpenpsZV9pbmZvIiwgaTkxNV9zd2l6emxlX2luZm8sIDB9LAogCXsiaTkxNV9wcGd0dF9pbmZv IiwgaTkxNV9wcGd0dF9pbmZvLCAwfSwKIAl7Imk5MTVfbGxjIiwgaTkxNV9sbGMsIDB9LAotCXsi aTkxNV9lZHBfcHNyX3N0YXR1cyIsIGk5MTVfZWRwX3Bzcl9zdGF0dXMsIDB9LAogCXsiaTkxNV9z aW5rX2NyY19lRFAxIiwgaTkxNV9zaW5rX2NyYywgMH0sCiAJeyJpOTE1X2VuZXJneV91SiIsIGk5 MTVfZW5lcmd5X3VKLCAwfSwKIAl7Imk5MTVfcnVudGltZV9wbV9zdGF0dXMiLCBpOTE1X3J1bnRp bWVfcG1fc3RhdHVzLCAwfSwKQEAgLTQ3NjEsNiArNDkzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKIAl7Imk5MTVfd2VkZ2VkIiwgJmk5MTVfd2VkZ2VkX2Zv cHN9LAogCXsiaTkxNV9tYXhfZnJlcSIsICZpOTE1X21heF9mcmVxX2ZvcHN9LAogCXsiaTkxNV9t aW5fZnJlcSIsICZpOTE1X21pbl9mcmVxX2ZvcHN9LAorCXsiaTkxNV9lZHBfcHNyX3N0YXR1cyIs ICZpOTE1X2VkcF9wc3Jfb3BzfSwKIAl7Imk5MTVfY2FjaGVfc2hhcmluZyIsICZpOTE1X2NhY2hl X3NoYXJpbmdfZm9wc30sCiAJeyJpOTE1X3JpbmdfbWlzc2VkX2lycSIsICZpOTE1X3JpbmdfbWlz c2VkX2lycV9mb3BzfSwKIAl7Imk5MTVfcmluZ190ZXN0X2lycSIsICZpOTE1X3JpbmdfdGVzdF9p cnFfZm9wc30sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBiMzljNWY2OGVmYjIuLmRiYzlj MDYyYzY1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MDgsNiArNjA4LDggQEAgc3Ry dWN0IGk5MTVfcHNyIHsKIAlib29sIGFscG07CiAJYm9vbCBoYXNfaHdfdHJhY2tpbmc7CiAKKwli b29sIGdsb2JhbF9lbmFibGU7CisKIAl2b2lkICgqZW5hYmxlX3NvdXJjZSkoc3RydWN0IGludGVs X2RwICosCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqKTsKIAl2b2lk ICgqZGlzYWJsZV9zb3VyY2UpKHN0cnVjdCBpbnRlbF9kcCAqLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGFyYW1zLmMKaW5kZXggMDgxMDhjZTViZTIxLi4wZDAyOTgwYjNhMmMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wYXJhbXMuYwpAQCAtOTAsNyArOTAsNyBAQCBpOTE1X3BhcmFtX25hbWVkX3Vuc2Fm ZShlbmFibGVfcHBndHQsIGludCwgMDQwMCwKIAkiT3ZlcnJpZGUgUFBHVFQgdXNhZ2UuICIKIAki KC0xPWF1dG8gW2RlZmF1bHRdLCAwPWRpc2FibGVkLCAxPWFsaWFzaW5nLCAyPWZ1bGwsIDM9ZnVs bCB3aXRoIGV4dGVuZGVkIGFkZHJlc3Mgc3BhY2UpIik7CiAKLWk5MTVfcGFyYW1fbmFtZWRfdW5z YWZlKGVuYWJsZV9wc3IsIGludCwgMDYwMCwKK2k5MTVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJs ZV9wc3IsIGludCwgMDQwMCwKIAkiRW5hYmxlIFBTUiAiCiAJIigwPWRpc2FibGVkLCAxPWVuYWJs ZWQgLSBsaW5rIG1vZGUgY2hvc2VuIHBlci1wbGF0Zm9ybSwgMj1mb3JjZSBsaW5rLXN0YW5kYnkg bW9kZSwgMz1mb3JjZSBsaW5rLW9mZiBtb2RlKSAiCiAJIkRlZmF1bHQ6IC0xICh1c2UgcGVyLWNo aXAgZGVmYXVsdCkiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMWYwZThmMWU0NTk0 Li5jNDg2MDkwZjRmNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xODcxLDExICsx ODcxLDE4IEBAIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCk7CiAKIC8qIGludGVsX3Bzci5jICovCiAjZGVmaW5l IENBTl9QU1IoZGV2X3ByaXYpIChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNp bmtfc3VwcG9ydCkKK2Jvb2wgaW50ZWxfcHNyX2RlZmF1bHRfbGlua19zdGFuZGJ5KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwordm9pZCBfX2ludGVsX3Bzcl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfcHNyX2Rp c2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJICAgICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKTsKK3ZvaWQgX19pbnRlbF9wc3JfZGlzYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGUpOwogdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCQkgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsCiAJCQkgIGVudW0g ZmJfb3Bfb3JpZ2luIG9yaWdpbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCmluZGV4IDMxN2Ni NGExMjY5My4uN2Y1OWZhZWY3ZWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwpAQCAtNTYs NiArNTYsMzYgQEAKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2Rydi5o IgogCitib29sIGludGVsX3Bzcl9kZWZhdWx0X2xpbmtfc3RhbmRieShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJLyogT3ZlcnJpZGUgbGlua19zdGFuZGJ5IHggbGlua19v ZmYgZGVmYXVsdHMgKi8KKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAyKSB7CisJ CURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBsaW5rIHN0YW5kYnlcbiIpOworCQlyZXR1cm4g dHJ1ZTsKKwl9CisKKwlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAzKSB7CisJCURS TV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBtYWluIGxpbmsgb2ZmXG4iKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKworCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwor CWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQorCQkv KiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50 LiAqLworCQlyZXR1cm4gZmFsc2U7CisJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCisJCS8qIE9uIFZMViBhbmQgQ0hWIG9ubHkgc3Rh bmRieSBtb2RlIGlzIHN1cHBvcnRlZC4gKi8KKwkJcmV0dXJuIHRydWU7CisJZWxzZQorCQkvKiBG b3IgbmV3IHBsYXRmb3JtcyBsZXQncyByZXNwZWN0IFZCVCBiYWNrIGFnYWluICovCisJCXJldHVy biBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7Cit9CisKK3N0YXRpYyBib29sIGludGVsX3Bz cl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlyZXR1cm4g ZGV2X3ByaXYtPnBzci5lbmFibGVkICYmIGRldl9wcml2LT5wc3IuZ2xvYmFsX2VuYWJsZTsKK30K Kwogc3RhdGljIGlubGluZSBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluCiBwc3JfYXV4 X2RvbWFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewpAQCAtNTAyLDExICs1MzIsNiBA QCB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAogCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCiAJCXJldHVybjsKIAotCWlmICghaTkxNV9tb2Rw YXJhbXMuZW5hYmxlX3BzcikgewotCQlEUk1fREVCVUdfS01TKCJQU1IgZGlzYWJsZSBieSBmbGFn XG4iKTsKLQkJcmV0dXJuOwotCX0KLQogCS8qCiAJICogSFNXIHNwZWMgZXhwbGljaXRseSBzYXlz IFBTUiBpcyB0aWVkIHRvIHBvcnQgQS4KIAkgKiBCRFcrIHBsYXRmb3JtcyB3aXRoIERESSBpbXBs ZW1lbnRhdGlvbiBvZiBQU1IgaGF2ZSBkaWZmZXJlbnQKQEAgLTU1OSw3ICs1ODQsMTEgQEAgdm9p ZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAog CWNydGNfc3RhdGUtPmhhc19wc3IgPSB0cnVlOwogCWNydGNfc3RhdGUtPmhhc19wc3IyID0gaW50 ZWxfcHNyMl9jb25maWdfdmFsaWQoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwotCURSTV9ERUJVR19L TVMoIkVuYWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5oYXNfcHNyMiA/ICIyIiA6ICIiKTsK KworCWlmIChkZXZfcHJpdi0+cHNyLmdsb2JhbF9lbmFibGUpCisJCURSTV9ERUJVR19LTVMoIkVu YWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5oYXNfcHNyMiA/ICIyIiA6ICIiKTsKKwllbHNl CisJCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxlIGJ5IGZsYWdcbiIpOwogfQogCiBzdGF0aWMg dm9pZCBpbnRlbF9wc3JfYWN0aXZhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKQEAgLTYx Nyw2ICs2NDYsMzIgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCiAJfQogfQogCit2b2lkIF9faW50ZWxfcHNyX2VuYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJ ZGV2X3ByaXYtPnBzci5zZXR1cF92c2MoaW50ZWxfZHAsIGNydGNfc3RhdGUpOworCWRldl9wcml2 LT5wc3IuZW5hYmxlX3NpbmsoaW50ZWxfZHApOworCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJj ZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7CisKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSB7CisJCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7CisJfSBlbHNlIHsKKwkJLyoKKwkJ ICogRklYTUU6IEFjdGl2YXRpb24gc2hvdWxkIGhhcHBlbiBpbW1lZGlhdGVseSBzaW5jZSB0aGlz CisJCSAqIGZ1bmN0aW9uIGlzIGp1c3QgY2FsbGVkIGFmdGVyIHBpcGUgaXMgZnVsbHkgdHJhaW5l ZCBhbmQKKwkJICogZW5hYmxlZC4KKwkJICogSG93ZXZlciBvbiBzb21lIHBsYXRmb3JtcyB3ZSBm YWNlIGlzc3VlcyB3aGVuIGZpcnN0CisJCSAqIGFjdGl2YXRpb24gZm9sbG93cyBhIG1vZGVzZXQg c28gcXVpY2tseS4KKwkJICogICAgIC0gT24gVkxWL0NIViB3ZSBnZXQgYmFuayBzY3JlZW4gb24g Zmlyc3QgYWN0aXZhdGlvbgorCQkgKiAgICAgLSBPbiBIU1cvQkRXIHdlIGdldCBhIHJlY292ZXJh YmxlIGZyb3plbiBzY3JlZW4gdW50aWwKKwkJICogICAgICAgbmV4dCBleGl0LWFjdGl2YXRlIHNl cXVlbmNlLgorCQkgKi8KKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cHNyLndv cmssCisJCQkJICAgICAgbXNlY3NfdG9famlmZmllcyhpbnRlbF9kcC0+cGFuZWxfcG93ZXJfY3lj bGVfZGVsYXkgKiA1KSk7CisJfQorfQorCiAvKioKICAqIGludGVsX3Bzcl9lbmFibGUgLSBFbmFi bGUgUFNSCiAgKiBAaW50ZWxfZHA6IEludGVsIERQCkBAIC02NDcsMjcgKzcwMiwxMCBAQCB2b2lk IGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlkZXZfcHJpdi0+ cHNyLnBzcjJfc3VwcG9ydCA9IGNydGNfc3RhdGUtPmhhc19wc3IyOwogCWRldl9wcml2LT5wc3Iu YnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gMDsKIAotCWRldl9wcml2LT5wc3Iuc2V0dXBfdnNjKGlu dGVsX2RwLCBjcnRjX3N0YXRlKTsKLQlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zaW5rKGludGVsX2Rw KTsKLQlkZXZfcHJpdi0+cHNyLmVuYWJsZV9zb3VyY2UoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwog CWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOwogCi0JaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkgewotCQlpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwotCX0gZWxzZSB7 Ci0JCS8qCi0JCSAqIEZJWE1FOiBBY3RpdmF0aW9uIHNob3VsZCBoYXBwZW4gaW1tZWRpYXRlbHkg c2luY2UgdGhpcwotCQkgKiBmdW5jdGlvbiBpcyBqdXN0IGNhbGxlZCBhZnRlciBwaXBlIGlzIGZ1 bGx5IHRyYWluZWQgYW5kCi0JCSAqIGVuYWJsZWQuCi0JCSAqIEhvd2V2ZXIgb24gc29tZSBwbGF0 Zm9ybXMgd2UgZmFjZSBpc3N1ZXMgd2hlbiBmaXJzdAotCQkgKiBhY3RpdmF0aW9uIGZvbGxvd3Mg YSBtb2Rlc2V0IHNvIHF1aWNrbHkuCi0JCSAqICAgICAtIE9uIFZMVi9DSFYgd2UgZ2V0IGJhbmsg c2NyZWVuIG9uIGZpcnN0IGFjdGl2YXRpb24KLQkJICogICAgIC0gT24gSFNXL0JEVyB3ZSBnZXQg YSByZWNvdmVyYWJsZSBmcm96ZW4gc2NyZWVuIHVudGlsCi0JCSAqICAgICAgIG5leHQgZXhpdC1h Y3RpdmF0ZSBzZXF1ZW5jZS4KLQkJICovCi0JCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmZGV2X3By aXYtPnBzci53b3JrLAotCQkJCSAgICAgIG1zZWNzX3RvX2ppZmZpZXMoaW50ZWxfZHAtPnBhbmVs X3Bvd2VyX2N5Y2xlX2RlbGF5ICogNSkpOwotCX0KKwlpZiAoZGV2X3ByaXYtPnBzci5nbG9iYWxf ZW5hYmxlKQorCQlfX2ludGVsX3Bzcl9lbmFibGUoZGV2X3ByaXYsIGludGVsX2RwLCBjcnRjX3N0 YXRlKTsKIAogdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKQEAg LTc1Miw2ICs3OTAsMTYgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCiAJcHNyX2F1eF9pb19wb3dlcl9wdXQoaW50ZWxfZHApOwogfQogCit2 b2lkIF9faW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJIHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreworCWRldl9wcml2LT5wc3IuZGlzYWJsZV9z b3VyY2UoaW50ZWxfZHAsIG9sZF9jcnRjX3N0YXRlKTsKKworCS8qIERpc2FibGUgUFNSIG9uIFNp bmsgKi8KKwlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1BTUl9FTl9DRkcs IDApOworfQorCiAvKioKICAqIGludGVsX3Bzcl9kaXNhYmxlIC0gRGlzYWJsZSBQU1IKICAqIEBp bnRlbF9kcDogSW50ZWwgRFAKQEAgLTc3MywxNSArODIxLDEzIEBAIHZvaWQgaW50ZWxfcHNyX2Rp c2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJcmV0dXJuOwogCiAJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsKLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewor CWlmIChpbnRlbF9kcCAhPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKIAkJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCQlyZXR1cm47CiAJfQogCi0JZGV2X3ByaXYtPnBzci5k aXNhYmxlX3NvdXJjZShpbnRlbF9kcCwgb2xkX2NydGNfc3RhdGUpOwotCi0JLyogRGlzYWJsZSBQ U1Igb24gU2luayAqLwotCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNS X0VOX0NGRywgMCk7CisJaWYgKGludGVsX3Bzcl9lbmFibGVkKGRldl9wcml2KSkKKwkJX19pbnRl bF9wc3JfZGlzYWJsZShkZXZfcHJpdiwgaW50ZWxfZHAsIG9sZF9jcnRjX3N0YXRlKTsKIAogCWRl dl9wcml2LT5wc3IuZW5hYmxlZCA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwpAQCAtODMzLDExICs4NzksMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl9CiAJfQogCW11dGV4X2xvY2soJmRldl9wcml2 LT5wc3IubG9jayk7Ci0JaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7Ci0KLQlpZiAo IWludGVsX2RwKQorCWlmICghaW50ZWxfcHNyX2VuYWJsZWQoZGV2X3ByaXYpKQogCQlnb3RvIHVu bG9jazsKIAorCWludGVsX2RwID0gZGV2X3ByaXYtPnBzci5lbmFibGVkOworCiAJLyoKIAkgKiBU aGUgZGVsYXllZCB3b3JrIGNhbiByYWNlIHdpdGggYW4gaW52YWxpZGF0ZSBoZW5jZSB3ZSBuZWVk IHRvCiAJICogcmVjaGVjay4gU2luY2UgcHNyX2ZsdXNoIGZpcnN0IGNsZWFycyB0aGlzIGFuZCB0 aGVuIHJlc2NoZWR1bGVzIHdlCkBAIC05MzMsNyArOTc5LDcgQEAgdm9pZCBpbnRlbF9wc3Jfc2lu Z2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJl dHVybjsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0JaWYgKCFkZXZfcHJp di0+cHNyLmVuYWJsZWQpIHsKKwlpZiAoIWludGVsX3Bzcl9lbmFibGVkKGRldl9wcml2KSkgewog CQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CiAJCXJldHVybjsKIAl9CkBAIC05 NzksNyArMTAyNSw3IEBAIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQlyZXR1cm47CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOwotCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7CisJaWYgKCFpbnRlbF9w c3JfZW5hYmxlZChkZXZfcHJpdikpIHsKIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxv Y2spOwogCQlyZXR1cm47CiAJfQpAQCAtMTAyMiw3ICsxMDY4LDcgQEAgdm9pZCBpbnRlbF9wc3Jf Zmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlyZXR1cm47CiAKIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwotCWlmICghZGV2X3ByaXYtPnBzci5lbmFi bGVkKSB7CisJaWYgKCFpbnRlbF9wc3JfZW5hYmxlZChkZXZfcHJpdikpIHsKIAkJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCQlyZXR1cm47CiAJfQpAQCAtMTA4MSwyNiArMTEy Nyw5IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfcHNyID09IC0xKQogCQlpOTE1X21vZHBh cmFtcy5lbmFibGVfcHNyID0gMDsKIAotCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBk ZWZhdWx0cyAqLwotCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKQotCQkvKiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9u J3QgaW1wbGVtZW50LiAqLwotCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOwot CWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQotCQkvKiBPbiBWTFYgYW5kIENIViBvbmx5IHN0YW5kYnkgbW9kZSBpcyBzdXBwb3J0ZWQu ICovCi0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gdHJ1ZTsKLQllbHNlCi0JCS8qIEZv ciBuZXcgcGxhdGZvcm1zIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8KLQkJZGV2X3By aXYtPnBzci5saW5rX3N0YW5kYnkgPSBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7CisJZGV2 X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBpbnRlbF9wc3JfZGVmYXVsdF9saW5rX3N0YW5kYnko ZGV2X3ByaXYpOwogCi0JLyogT3ZlcnJpZGUgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVs dHMgKi8KLQlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAyICYmICFkZXZfcHJpdi0+ cHNyLmxpbmtfc3RhbmRieSkgewotCQlEUk1fREVCVUdfS01TKCJQU1I6IEZvcmNpbmcgbGluayBz dGFuZGJ5XG4iKTsKLQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSB0cnVlOwotCX0KLQlp ZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAzICYmIGRldl9wcml2LT5wc3IubGlua19z dGFuZGJ5KSB7Ci0JCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBtYWluIGxpbmsgb2ZmXG4i KTsKLQkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBmYWxzZTsKLQl9CisJZGV2X3ByaXYt PnBzci5nbG9iYWxfZW5hYmxlID0gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzcjsKIAogCUlOSVRf REVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVsX3Bzcl93b3JrKTsKIAltdXRl eF9pbml0KCZkZXZfcHJpdi0+cHNyLmxvY2spOwotLSAKMi4xNi4yCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK