From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wayne Boyer Subject: [PATCH] drm/i915: Separate cherryview from valleyview Date: Tue, 1 Dec 2015 17:11:40 -0800 Message-ID: <1449018700-31959-1-git-send-email-wayne.boyer@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id BAB4A6E91E for ; Tue, 1 Dec 2015 17:11:54 -0800 (PST) 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: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org VGhlIGNoZXJyeXZpZXcgZGV2aWNlIHNoYXJlcyBtYW55IGNoYXJhY3RlcmlzdGljcyB3aXRoIHRo ZSB2YWxsZXl2aWV3CmRldmljZS4gIFdoZW4gc3VwcG9ydCB3YXMgYWRkZWQgdG8gdGhlIGRyaXZl ciBmb3IgY2hlcnJ5dmlldywgdGhlCmNvcnJlc3BvbmRpbmcgZGV2aWNlIGluZm8gc3RydWN0dXJl IGluY2x1ZGVkIC5pc192YWxsZXl2aWV3ID0gMS4KVGhpcyBpcyBub3QgY29ycmVjdCBhbmQgbGVh ZHMgdG8gc29tZSBjb25mdXNpb24uCgpUaGlzIHBhdGNoIGNoYW5nZXMgLmlzX3ZhbGxleXZpZXcg dG8gLmlzX2NoZXJyeXZpZXcgaW4gdGhlIGNoZXJyeXZpZXcKZGV2aWNlIGluZm8gc3RydWN0dXJl IGFuZCBkZWZpbmVzIHRoZSBIQVNfR0VON19MUF9GRUFUVVJFUyBtYWNyby4KVGhlbiB3aGVyZSBh cHByb3ByaWF0ZSwgaW5zdGFuY2VzIG9mIElTX1ZBTExFWVZJRVcgYXJlIHJlcGxhY2VkIHdpdGgK SEFTX0dFTjdfTFBfRkVBVFVSRVMgdG8gdGVzdCBmb3IgZWl0aGVyIGEgdmFsbGV5dmlldyBvciBh IGNoZXJyeXZpZXcKZGV2aWNlLgoKQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogV2F5bmUgQm95ZXIgPHdheW5lLmJveWVyQGludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgfCAxNCArKysrLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgICB8ICA4ICsrLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAxMCArKystLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8IDE5ICsrKysrKysrLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgIDQgKy0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgICB8ICA2ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMg ICAgICAgICB8ICA4ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyAg ICAgfCAgNCArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICB8IDEw ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAgIHwgIDYgKyst LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgICAgICAgIHwgIDQgKy0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCA1NCArKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAg ICB8IDM4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuYyAgICAgICAgfCAxMyArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX3BsbC5jICAgIHwgIDYgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5j ICAgICAgIHwgIDQgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgICAg fCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgICAgICAgIHwgIDIgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICB8ICAyICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgfCAgOCArKy0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcHNyLmMgICAgICAgIHwgIDQgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYyAgICAgfCAgNCArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5jICAgICB8ICA2ICsrLS0KIDI1IGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25z KCspLCAxMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRl eCBiZmQ1N2ZiLi5hMmQ1MGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAt ODYyLDcgKzg2Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCQkgICBJOTE1X1JFQUQoR0VOOF9QQ1VfSUlSKSk7CiAJ CXNlcV9wcmludGYobSwgIlBDVSBpbnRlcnJ1cHQgZW5hYmxlOlx0JTA4eFxuIiwKIAkJCSAgIEk5 MTVfUkVBRChHRU44X1BDVV9JRVIpKTsKLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkg eworCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQlzZXFfcHJpbnRm KG0sICJEaXNwbGF5IElFUjpcdCUwOHhcbiIsCiAJCQkgICBJOTE1X1JFQUQoVkxWX0lFUikpOwog CQlzZXFfcHJpbnRmKG0sICJEaXNwbGF5IElJUjpcdCUwOHhcbiIsCkBAIC0xMjg0LDcgKzEyODQs NyBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCiAJCXNlcV9wcmludGYobSwKIAkJCSAgICJlZmZpY2llbnQgKFJQZSkgZnJl cXVlbmN5OiAlZCBNSHpcbiIsCiAJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3By aXYtPnJwcy5lZmZpY2llbnRfZnJlcSkpOwotCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYp KSB7CisJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCXUzMiBmcmVx X3N0czsKIAogCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwpAQCAtMTYwMiw3 ICsxNjAyLDcgQEAgc3RhdGljIGludCBpOTE1X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7CiAKLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQorCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQogCQlyZXR1 cm4gdmx2X2RycGNfaW5mbyhtKTsKIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2 KQogCQlyZXR1cm4gZ2VuNl9kcnBjX2luZm8obSk7CkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBzdGF0 aWMgaW50IGk5MTVfc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQog CQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKElOU1RQTSkgJiBJTlNUUE1fU0VMRl9FTjsKIAllbHNl IGlmIChJU19QSU5FVklFVyhkZXYpKQogCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKERTUEZXMykg JiBQSU5FVklFV19TRUxGX1JFRlJFU0hfRU47Ci0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYp KQorCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCiAJCXNyX2VuYWJsZWQgPSBJ OTE1X1JFQUQoRldfQkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdSRFdORU47CiAKIAlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdik7CkBAIC0zOTgzLDcgKzM5ODMsNyBAQCBzdGF0aWMgaW50IHBp cGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUs CiAJCXJldCA9IGk4eHhfcGlwZV9jcmNfY3RsX3JlZygmc291cmNlLCAmdmFsKTsKIAllbHNlIGlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpCiAJCXJldCA9IGk5eHhfcGlwZV9jcmNfY3RsX3Jl ZyhkZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwpOwotCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSkKKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQogCQlyZXQgPSB2bHZfcGlw ZV9jcmNfY3RsX3JlZyhkZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwpOwogCWVsc2UgaWYgKElTX0dF TjUoZGV2KSB8fCBJU19HRU42KGRldikpCiAJCXJldCA9IGlsa19waXBlX2NyY19jdGxfcmVnKCZz b3VyY2UsICZ2YWwpOwpAQCAtNDA1Miw3ICs0MDUyLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19z ZXRfc291cmNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAogCiAJCWlm IChJU19HNFgoZGV2KSkKIAkJCWc0eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2LCBwaXBl KTsKLQkJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQllbHNlIGlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKQogCQkJdmx2X3VuZG9fcGlwZV9zY3JhbWJsZV9yZXNldChkZXYsIHBp cGUpOwogCQllbHNlIGlmIChJU19IQVNXRUxMKGRldikgJiYgcGlwZSA9PSBQSVBFX0EpCiAJCQlo c3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2EoZGV2LCBmYWxzZSk7CkBAIC00NDQyLDcgKzQ0NDIs NyBAQCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCBjb25z dCB1aW50MTZfdCB3bVs4XSkKIAkJICogLSBXTTErIGxhdGVuY3kgdmFsdWVzIGluIDAuNXVzIHVu aXRzCiAJCSAqIC0gbGF0ZW5jaWVzIGFyZSBpbiB1cyBvbiBnZW45L3Zsdi9jaHYKIAkJICovCi0J CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5IHx8IElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgfHwgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSkKIAkJCWxhdGVuY3kgKj0gMTA7CiAJCWVsc2UgaWYgKGxldmVsID4gMCkKIAkJCWxhdGVuY3kg Kj0gNTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IGE4MWM3NjYuLmUyNGFhNjUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtMjU2LDcgKzI1Niw3IEBAIGludGVsX3NldHVwX21jaGJh cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXUzMiB0ZW1wOwogCWJvb2wgZW5hYmxlZDsKIAot CWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikp CiAJCXJldHVybjsKIAogCWRldl9wcml2LT5tY2hiYXJfbmVlZF9kaXNhYmxlID0gZmFsc2U7CkBA IC03NzksNyArNzc5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0g PSAyOwogCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0JdID0gMjsKIAkJaW5mby0+bnVtX3Nwcml0 ZXNbUElQRV9DXSA9IDE7Ci0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCisJfSBlbHNl IGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQogCQlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBwaXBlKQogCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwogCWVsc2UKQEAgLTc5MSw3 ICs3OTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkJaW5mby0+bnVtX3BpcGVzID0gMDsKIAl9IGVsc2UgaWYg KGluZm8tPm51bV9waXBlcyA+IDAgJiYKIAkJICAgKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDcg fHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOCkgJiYKLQkJICAgIUlTX1ZBTExFWVZJRVcoZGV2 KSkgeworCQkgICAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQl1MzIgZnVzZV9zdHJh cCA9IEk5MTVfUkVBRChGVVNFX1NUUkFQKTsKIAkJdTMyIHNmdXNlX3N0cmFwID0gSTkxNV9SRUFE KFNGVVNFX1NUUkFQKTsKIApAQCAtODM2LDcgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rl dmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiBzdGF0aWMg dm9pZCBpbnRlbF9pbml0X2RwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewotCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCisJaWYgKCFIQVNfR0VON19MUF9GRUFU VVJFUyhkZXZfcHJpdikpCiAJCXJldHVybjsKIAogCS8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpp bmRleCA1ZjhiMGZmLi5hYzU0YjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTMxMSw3 ICszMTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2No ZXJyeXZpZXdfaW5mbyA9IHsKIAkuZ2VuID0gOCwgLm51bV9waXBlcyA9IDMsCiAJLm5lZWRfZ2Z4 X2h3cyA9IDEsIC5oYXNfaG90cGx1ZyA9IDEsCiAJLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwg QlNEX1JJTkcgfCBCTFRfUklORyB8IFZFQk9YX1JJTkcsCi0JLmlzX3ZhbGxleXZpZXcgPSAxLAor CS5pc19jaGVycnl2aWV3ID0gMSwKIAkuZGlzcGxheV9tbWlvX29mZnNldCA9IFZMVl9ESVNQTEFZ X0JBU0UsCiAJR0VOX0NIVl9QSVBFT0ZGU0VUUywKIAlDVVJTT1JfT0ZGU0VUUywKQEAgLTgwMCw3 ICs4MDAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCiAJcGNpX3NldF9tYXN0ZXIoZGV2LT5wZGV2KTsKIAotCWlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSkKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQog CQlyZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIGZhbHNlKTsKIAlpZiAocmV0KQog CQlEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJlIGZhaWxlZDogJWQsIGNvbnRpbnVpbmcgYW55d2F5 XG4iLApAQCAtMTUzMCw3ICsxNTMwLDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jlc3Vt ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCiAJCXJldCA9IGJ4dF9yZXN1bWVfcHJlcGFyZShkZXZf cHJpdik7CiAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkKIAkJaHN3X2Rpc2FibGVfcGM4KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSkKKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJp dikpCiAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdiwgdHJ1ZSk7CiAKIAkvKgpA QCAtMTU0Nyw3ICsxNTQ3LDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXZpY2UpCiAJICogcG93ZXIgd2VsbCwgc28gaHBkIGlzIHJlaW5pdGlhbGl6 ZWQgZnJvbSB0aGVyZS4gRm9yCiAJICogZXZlcnlvbmUgZWxzZSBkbyBpdCBoZXJlLgogCSAqLwot CWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCisJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJF UyhkZXZfcHJpdikpCiAJCWludGVsX2hwZF9pbml0KGRldl9wcml2KTsKIAogCWludGVsX2VuYWJs ZV9ndF9wb3dlcnNhdmUoZGV2KTsKQEAgLTE1NzIsNyArMTU3Miw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CXJldCA9IGJ4dF9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKIAllbHNlIGlmIChJU19IQVNX RUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQogCQlyZXQgPSBoc3dfc3Vz cGVuZF9jb21wbGV0ZShkZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikpCisJZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQogCQlyZXQgPSB2 bHZfc3VzcGVuZF9jb21wbGV0ZShkZXZfcHJpdik7CiAJZWxzZQogCQlyZXQgPSAwOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKaW5kZXggYmM4NjVlMjMuLmFjYjVlOGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaApAQCAtNzYzLDYgKzc2Myw3IEBAIHN0cnVjdCBpbnRlbF9jc3IgewogCWZ1bmMoaXNf Y3Jlc3RsaW5lKSBzZXAgXAogCWZ1bmMoaXNfaXZ5YnJpZGdlKSBzZXAgXAogCWZ1bmMoaXNfdmFs bGV5dmlldykgc2VwIFwKKwlmdW5jKGlzX2NoZXJyeXZpZXcpIHNlcCBcCiAJZnVuYyhpc19oYXN3 ZWxsKSBzZXAgXAogCWZ1bmMoaXNfc2t5bGFrZSkgc2VwIFwKIAlmdW5jKGlzX2Jyb3h0b24pIHNl cCBcCkBAIC0yNDU2LDkgKzI0NTcsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKIAkJ CQkgSU5URUxfREVWSUQoZGV2KSA9PSAweDAxNTIgfHwgXAogCQkJCSBJTlRFTF9ERVZJRChkZXYp ID09IDB4MDE1YSkKICNkZWZpbmUgSVNfVkFMTEVZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRldikt PmlzX3ZhbGxleXZpZXcpCi0jZGVmaW5lIElTX0NIRVJSWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhk ZXYpLT5pc192YWxsZXl2aWV3ICYmIElTX0dFTjgoZGV2KSkKKyNkZWZpbmUgSVNfQ0hFUlJZVklF VyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX2NoZXJyeXZpZXcpCiAjZGVmaW5lIElTX0hBU1dF TEwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19oYXN3ZWxsKQotI2RlZmluZSBJU19CUk9BRFdF TEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2KS0+aXNfdmFsbGV5dmlldyAmJiBJU19HRU44KGRldikp CisjZGVmaW5lIElTX0JST0FEV0VMTChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5pc19jaGVycnl2 aWV3ICYmIElTX0dFTjgoZGV2KSkKICNkZWZpbmUgSVNfU0tZTEFLRShkZXYpCShJTlRFTF9JTkZP KGRldiktPmlzX3NreWxha2UpCiAjZGVmaW5lIElTX0JST1hUT04oZGV2KQkJKElOVEVMX0lORk8o ZGV2KS0+aXNfYnJveHRvbikKICNkZWZpbmUgSVNfS0FCWUxBS0UoZGV2KQkoSU5URUxfSU5GTyhk ZXYpLT5pc19rYWJ5bGFrZSkKQEAgLTI1ODUsNyArMjU4Niw4IEBAIHN0cnVjdCBkcm1faTkxNV9j bWRfdGFibGUgewogCQkJCSBJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKICNk ZWZpbmUgSEFTX1JVTlRJTUVfUE0oZGV2KQkoSVNfR0VONihkZXYpIHx8IElTX0hBU1dFTEwoZGV2 KSB8fCBcCiAJCQkJIElTX0JST0FEV0VMTChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBc Ci0JCQkJIElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKQorCQkJCSBJU19DSEVS UllWSUVXKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8IFwKKwkJCQkgSVNfS0FCWUxBS0UoZGV2 KSkKICNkZWZpbmUgSEFTX1JDNihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKICNk ZWZpbmUgSEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDYgfHwgSVNfSVZZ QlJJREdFKGRldikpCiAKQEAgLTI1OTgsNyArMjYwMCwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21k X3RhYmxlIHsKIAkJCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKIAogI2RlZmluZSBI QVNfQ09SRV9SSU5HX0ZSRVEoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBcCi0J CQkJICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKKwkJCQkgIUlTX1ZB TExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmIFwKKwkJCQkgIUlTX0JST1hU T04oZGV2KSkKKworI2RlZmluZSBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpIChJTlRFTF9JTkZP KGRldiktPmlzX3ZhbGxleXZpZXcgfHwgXAorCQkJCSAgIElOVEVMX0lORk8oZGV2KS0+aXNfY2hl cnJ5dmlldykKIAogI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4ZmYwMAogI2Rl ZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKQEAgLTI2MjAsNyArMjYy Niw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewogI2RlZmluZSBIQVNfUENIX05PUChk ZXYpIChJTlRFTF9QQ0hfVFlQRShkZXYpID09IFBDSF9OT1ApCiAjZGVmaW5lIEhBU19QQ0hfU1BM SVQoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSAhPSBQQ0hfTk9ORSkKIAotI2RlZmluZSBIQVNf R01DSF9ESVNQTEFZKGRldikgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSB8fCBJU19WQUxMRVlW SUVXKGRldikpCisjZGVmaW5lIEhBU19HTUNIX0RJU1BMQVkoZGV2KSAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA1IHx8IFwKKwkJCSAgICAgICBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQogCiAv KiBEUEYgPT0gZHluYW1pYyBwYXJpdHkgZmVhdHVyZSAqLwogI2RlZmluZSBIQVNfTDNfRFBGKGRl dikgKElTX0lWWUJSSURHRShkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkKQEAgLTM1MTEsNyArMzUx OCw3IEBAIF9fcmF3X3dyaXRlKDY0LCBxKQogCiBzdGF0aWMgaW5saW5lIGk5MTVfcmVnX3QgaTkx NV92Z2FjbnRybF9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQorCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQogCQlyZXR1cm4gVkxW X1ZHQUNOVFJMOwogCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCiAJCXJldHVy biBDUFVfVkdBQ05UUkw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBhNjk5N2E4Li4xNWJl OWVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTQ4MzgsNyArNDgzOCw3IEBAIGludCBp OTE1X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKEhBU19H RU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJLyogVkxWQTAgKHBvdGVudGlhbCBoYWNrKSwgQklP UyBpc24ndCBhY3R1YWxseSB3YWtpbmcgdXMgKi8KIAkJSTkxNV9XUklURShWTFZfR1RMQ19XQUtF X0NUUkwsIFZMVl9HVExDX0FMTE9XV0FLRVJFUSk7CiAJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KFZMVl9HVExDX1BXX1NUQVRVUykgJgpAQCAtNDk2Myw3ICs0OTYzLDcgQEAgaTkxNV9nZW1fbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50 c19tb2RlID0gSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfR0VORVJBTDsKIAotCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDcgJiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCiAJCWRldl9w cml2LT5udW1fZmVuY2VfcmVncyA9IDMyOwogCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQgfHwgSVNfSTk0NUcoZGV2KSB8fCBJU19JOTQ1R00oZGV2KSB8fCBJU19HMzMoZGV2KSkK IAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gMTY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKaW5kZXggNDM3NjFjNS4uNDc2ZmVlMCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMTkwLDcgKzE5MCw3IEBAIGk5MTVfZ2VtX2FsbG9j X2NvbnRleHRfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQogCSAqIHdv dWxkIG1ha2UgdGhlIG9iamVjdCBzbm9vcGVkIHdoaWNoIG1pZ2h0IGhhdmUgYQogCSAqIG5lZ2F0 aXZlIHBlcmZvcm1hbmNlIGltcGFjdC4KIAkgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDcgJiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosIEk5MTVfQ0FDSEVfTDNfTExDKTsKIAkJLyogRmFp bHVyZSBzaG91bGRuJ3QgZXZlciBoYXBwZW4gdGhpcyBlYXJseSAqLwogCQlpZiAoV0FSTl9PTihy ZXQpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDFmN2U2YjkuLmVlODBl MjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0zMTI1LDcgKzMxMjUsNyBA QCBpbnQgaTkxNV9nZW1fZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCWd0dC0+ YmFzZS5wdGVfZW5jb2RlID0gaXJpc19wdGVfZW5jb2RlOwogCQllbHNlIGlmIChJU19IQVNXRUxM KGRldikpCiAJCQlndHQtPmJhc2UucHRlX2VuY29kZSA9IGhzd19wdGVfZW5jb2RlOwotCQllbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpCiAJCQlndHQtPmJhc2UucHRlX2VuY29kZSA9IGJ5dF9wdGVfZW5jb2RlOwogCQllbHNl IGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KQogCQkJZ3R0LT5iYXNlLnB0ZV9lbmNvZGUg PSBpdmJfcHRlX2VuY29kZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4 IDA2Y2E0MDguLmU5MmJlNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpA QCAtMzgzLDcgKzM4Myw3IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQogCQkJ ZXJyX3ByaW50ZihtLCAiR1RJRVIgZ3QgJWQ6IDB4JTA4eFxuIiwgaSwKIAkJCQkgICBlcnJvci0+ Z3RpZXJbaV0pOwotCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYpIHx8IElTX1ZBTExFWVZJ RVcoZGV2KSkKKwl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSB8fCBIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpKQogCQllcnJfcHJpbnRmKG0sICJHVElFUjogMHglMDh4XG4iLCBlcnJvci0+ Z3RpZXJbMF0pOwogCWVycl9wcmludGYobSwgIlBHVEJMX0VSOiAweCUwOHhcbiIsIGVycm9yLT5w Z3RibF9lcik7CiAJZXJyX3ByaW50ZihtLCAiRk9SQ0VXQUtFOiAweCUwOHhcbiIsIGVycm9yLT5m b3JjZXdha2UpOwpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJl X3JlZ19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICovCiAKIAkv KiAxOiBSZWdpc3RlcnMgc3BlY2lmaWMgdG8gYSBzaW5nbGUgZ2VuZXJhdGlvbiAqLwotCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewog CQllcnJvci0+Z3RpZXJbMF0gPSBJOTE1X1JFQUQoR1RJRVIpOwogCQllcnJvci0+aWVyID0gSTkx NV9SRUFEKFZMVl9JRVIpOwogCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFEX0ZXKEZPUkNF V0FLRV9WTFYpOwpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJl X3JlZ19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWVycm9yLT5n dGllclswXSA9IEk5MTVfUkVBRChHVElFUik7CiAJfSBlbHNlIGlmIChJU19HRU4yKGRldikpIHsK IAkJZXJyb3ItPmllciA9IEk5MTVfUkVBRDE2KElFUik7Ci0JfSBlbHNlIGlmICghSVNfVkFMTEVZ VklFVyhkZXYpKSB7CisJfSBlbHNlIGlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewog CQllcnJvci0+aWVyID0gSTkxNV9SRUFEKElFUik7CiAJfQogCWVycm9yLT5laXIgPSBJOTE1X1JF QUQoRUlSKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IGU4OGQ2OTIuLjkyMDFlMjUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtNTgxLDcgKzU4MSw3IEBAIGk5MTVfZW5hYmxlX3Bp cGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUs CiB7CiAJdTMyIGVuYWJsZV9tYXNrOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRl dikpCisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKQogCQllbmFibGVf bWFzayA9IHZsdl9nZXRfcGlwZXN0YXRfZW5hYmxlX21hc2soZGV2X3ByaXYtPmRldiwKIAkJCQkJ CQkgICBzdGF0dXNfbWFzayk7CiAJZWxzZQpAQCAtNTk1LDcgKzU5NSw3IEBAIGk5MTVfZGlzYWJs ZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBw aXBlLAogewogCXUzMiBlbmFibGVfbWFzazsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 LT5kZXYpKQorCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdi0+ZGV2KSkKIAkJZW5h YmxlX21hc2sgPSB2bHZfZ2V0X3BpcGVzdGF0X2VuYWJsZV9tYXNrKGRldl9wcml2LT5kZXYsCiAJ CQkJCQkJICAgc3RhdHVzX21hc2spOwogCWVsc2UKQEAgLTE3MjMsNyArMTcyMyw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJICov CiAJUE9TVElOR19SRUFEKFBPUlRfSE9UUExVR19TVEFUKTsKIAotCWlmIChJU19HNFgoZGV2KSB8 fCBJU19WQUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSVNfRzRYKGRldikgfHwgSEFTX0dFTjdfTFBf RkVBVFVSRVMoZGV2KSkgewogCQl1MzIgaG90cGx1Z190cmlnZ2VyID0gaG90cGx1Z19zdGF0dXMg JiBIT1RQTFVHX0lOVF9TVEFUVVNfRzRYOwogCiAJCWlmIChob3RwbHVnX3RyaWdnZXIpIHsKQEAg LTQ0MTIsNyArNDQxMiw3IEBAIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCUlOSVRfV09SSygmZGV2X3ByaXYtPmwzX3Bhcml0eS5lcnJvcl93 b3JrLCBpdnlicmlkZ2VfcGFyaXR5X3dvcmspOwogCiAJLyogTGV0J3MgdHJhY2sgdGhlIGVuYWJs ZWQgcnBzIGV2ZW50cyAqLwotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJiAhSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQogCQkvKiBX YUdzdlJDMFJlc2lkZW5jeU1ldGhvZDp2bHYgKi8KIAkJZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMg PSBHRU42X1BNX1JQX0RPV05fRUlfRVhQSVJFRCB8IEdFTjZfUE1fUlBfVVBfRUlfRVhQSVJFRDsK IAllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCmluZGV4IDJkOTE4MjEuLjk1OTIx ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCkBAIC00OSw3ICs0OSw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWRl dl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09OX0RF TEFZUyk7CiAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFE KFBDSF9QUF9PRkZfREVMQVlTKTsKIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1Ig PSBJOTE1X1JFQUQoUENIX1BQX0RJVklTT1IpOwotCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVco ZGV2KSkgeworCX0gZWxzZSBpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJZGV2 X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0NPTlRST0wgPSBJOTE1X1JFQUQoUFBfQ09OVFJPTCk7CiAJ CWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT05fREVM QVlTKTsKIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQo UFBfT0ZGX0RFTEFZUyk7CkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9y ZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCUk5MTVfV1JJVEUoUENIX1BQX09G Rl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsKIAkJSTkxNV9X UklURShQQ0hfUFBfRElWSVNPUiwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IpOwog CQlJOTE1X1dSSVRFKFBDSF9QUF9DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09O VFJPTCk7Ci0JfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJfSBlbHNlIGlmICgh SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQlJOTE1X1dSSVRFKFBQX09OX0RFTEFZUywg ZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7CiAJCUk5MTVfV1JJVEUoUFBfT0ZG X0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwogCQlJOTE1X1dS SVRFKFBQX0RJVklTT1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3lzZnMuYwppbmRleCBmOTI5YzYxLi5kZDUwNmUzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeXNmcy5jCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVu Y3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7CiAKIAkvKiBPbiBWTFYgYW5kIENIViwgcmVzaWRlbmN5IHRpbWUgaXMgaW4gQ1ogdW5pdHMg cmF0aGVyIHRoYW4gMS4yOHVzICovCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCXVuaXRzID0gMTsKIAkJZGl2ID0gZGV2X3By aXYtPmN6Y2xrX2ZyZXE7CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9h Y3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAogCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Ci0J aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpIHsKKwlpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2X3ByaXYtPmRldikpIHsKIAkJdTMyIGZyZXE7CiAJCWZyZXEgPSB2bHZfcHVuaXRf cmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7CiAJCXJldCA9IGludGVsX2dw dV9mcmVxKGRldl9wcml2LCAoZnJlcSA+PiA4KSAmIDB4ZmYpOwpAQCAtNTk4LDcgKzU5OCw3IEBA IHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpZiAocmV0 KQogCQkJRFJNX0VSUk9SKCJSQzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwog CX0KLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpIHsKIAkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+ a29iaiwKIAkJCQkJJm1lZGlhX3JjNl9hdHRyX2dyb3VwKTsKIAkJaWYgKHJldCkKQEAgLTYxOSw3 ICs2MTksNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAl9CiAKIAlyZXQgPSAwOwotCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKEhBU19HRU43 X0xQX0ZFQVRVUkVTKGRldikpCiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygmZGV2LT5wcmlt YXJ5LT5rZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwogCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDYpCiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2 LT5rb2JqLCBnZW42X2F0dHJzKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIGk5MTVfc2V0dXBf c3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmZGV2LT5w cmltYXJ5LT5rZGV2LT5rb2JqLCAmZXJyb3Jfc3RhdGVfYXR0cik7Ci0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKIAkJc3lzZnNfcmVtb3Zl X2ZpbGVzKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7CiAJZWxzZQogCQlz eXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgZ2VuNl9hdHRycyk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwppbmRleCA5YWE4M2U3Li42NzM0ZWFlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKQEAgLTM3NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9p ZCBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK IAlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikpIHsKIAkJYXVkX2NvbmZpZyA9IElCWF9B VURfQ0ZHKHBpcGUpOwogCQlhdWRfY250cmxfc3QyID0gSUJYX0FVRF9DTlRMX1NUMjsKLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7CisJfSBlbHNlIGlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXZfcHJpdikpIHsKIAkJYXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUp OwogCQlhdWRfY250cmxfc3QyID0gVkxWX0FVRF9DTlRMX1NUMjsKIAl9IGVsc2UgewpAQCAtNDM1 LDcgKzQzNSw3IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJYXVkX2NvbmZpZyA9IElCWF9BVURfQ0ZHKHBpcGUp OwogCQlhdWRfY250bF9zdCA9IElCWF9BVURfQ05UTF9TVChwaXBlKTsKIAkJYXVkX2NudHJsX3N0 MiA9IElCWF9BVURfQ05UTF9TVDI7Ci0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGNvbm5lY3Rv ci0+ZGV2KSkgeworCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoY29ubmVjdG9yLT5k ZXYpKSB7CiAJCWhkbWl3X2hkbWllZGlkID0gVkxWX0hETUlXX0hETUlFRElEKHBpcGUpOwogCQlh dWRfY29uZmlnID0gVkxWX0FVRF9DRkcocGlwZSk7CiAJCWF1ZF9jbnRsX3N0ID0gVkxWX0FVRF9D TlRMX1NUKHBpcGUpOwpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgaW50ZWxfaW5pdF9hdWRpbyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChJU19HNFgoZGV2KSkgewogCQlkZXZfcHJpdi0+ ZGlzcGxheS5hdWRpb19jb2RlY19lbmFibGUgPSBnNHhfYXVkaW9fY29kZWNfZW5hYmxlOwogCQlk ZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlID0gZzR4X2F1ZGlvX2NvZGVjX2Rp c2FibGU7Ci0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwl9IGVsc2UgaWYgKEhB U19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29k ZWNfZW5hYmxlID0gaWxrX2F1ZGlvX2NvZGVjX2VuYWJsZTsKIAkJZGV2X3ByaXYtPmRpc3BsYXku YXVkaW9fY29kZWNfZGlzYWJsZSA9IGlsa19hdWRpb19jb2RlY19kaXNhYmxlOwogCX0gZWxzZSBp ZiAoSVNfSEFTV0VMTChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY3J0LmMKaW5kZXggMTIwMDhhZi4uOTRkMWFiMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY3J0LmMKQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfZGV0 ZWN0X2hvdHBsdWcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlpZiAoSEFTX1BD SF9TUExJVChkZXYpKQogCQlyZXR1cm4gaW50ZWxfaXJvbmxha2VfY3J0X2RldGVjdF9ob3RwbHVn KGNvbm5lY3Rvcik7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpKQogCQlyZXR1cm4gdmFsbGV5dmlld19jcnRfZGV0ZWN0X2hvdHBsdWco Y29ubmVjdG9yKTsKIAogCS8qCkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBpbnRlbF9jcnRfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkKIAkJ YWRwYV9yZWcgPSBQQ0hfQURQQTsKLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCisJZWxz ZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKIAkJYWRwYV9yZWcgPSBWTFZfQURQQTsK IAllbHNlCiAJCWFkcGFfcmVnID0gQURQQTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwppbmRleCBhYWMxNzAxMS4uOGU1MWI4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwpAQCAtMTg1LDcgKzE4NSw3IEBAIGludCBpbnRlbF9ocmF3Y2xrKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJdWludDMyX3QgY2xrY2ZnOwogCiAJLyogVGhlcmUgaXMgbm8gQ0xLQ0ZHIHJl ZyBpbiBWYWxsZXl2aWV3LiBWTFYgaHJhd2NsayBpcyAyMDAgTUh6ICovCi0JaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKIAkJcmV0dXJuIDIw MDsKIAogCWNsa2NmZyA9IEk5MTVfUkVBRChDTEtDRkcpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIGlu dCBpbnRlbF9ocmF3Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIHN0YXRpYyB2b2lkIGlu dGVsX3VwZGF0ZV9jemNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0J aWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKKwlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVT KGRldl9wcml2KSkKIAkJcmV0dXJuOwogCiAJZGV2X3ByaXYtPmN6Y2xrX2ZyZXEgPSB2bHZfZ2V0 X2Nja19jbG9ja19ocGxsKGRldl9wcml2LCAiY3pjbGsiLApAQCAtNzE0LDExICs3MTQsMTEgQEAg c3RhdGljIGJvb2wgaW50ZWxfUExMX2lzX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ aWYgKGNsb2NrLT5tMSAgPCBsaW1pdC0+bTEubWluICB8fCBsaW1pdC0+bTEubWF4ICA8IGNsb2Nr LT5tMSkKIAkJSU5URUxQbGxJbnZhbGlkKCJtMSBvdXQgb2YgcmFuZ2VcbiIpOwogCi0JaWYgKCFJ U19QSU5FVklFVyhkZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2 KSkKKwlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikg JiYgIUlTX0JST1hUT04oZGV2KSkKIAkJaWYgKGNsb2NrLT5tMSA8PSBjbG9jay0+bTIpCiAJCQlJ TlRFTFBsbEludmFsaWQoIm0xIDw9IG0yXG4iKTsKIAotCWlmICghSVNfVkFMTEVZVklFVyhkZXYp ICYmICFJU19CUk9YVE9OKGRldikpIHsKKwlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikg JiYgIUlTX0JST1hUT04oZGV2KSkgewogCQlpZiAoY2xvY2stPnAgPCBsaW1pdC0+cC5taW4gfHwg bGltaXQtPnAubWF4IDwgY2xvY2stPnApCiAJCQlJTlRFTFBsbEludmFsaWQoInAgb3V0IG9mIHJh bmdlXG4iKTsKIAkJaWYgKGNsb2NrLT5tIDwgbGltaXQtPm0ubWluIHx8IGxpbWl0LT5tLm1heCA8 IGNsb2NrLT5tKQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5sb2Nr ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgSTkxNV9SRUFEKFBD SF9MVkRTKSAmIExWRFNfUElQRUJfU0VMRUNUKQogCQkJcGFuZWxfcGlwZSA9IFBJUEVfQjsKIAkJ LyogWFhYOiBlbHNlIGZpeCBmb3IgZURQICovCi0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJLyogcHJl c3VtYWJseSB3cml0ZSBsb2NrIGRlcGVuZHMgb24gcGlwZSwgbm90IHBvcnQgc2VsZWN0ICovCiAJ CXBwX3JlZyA9IFZMVl9QSVBFX1BQX0NPTlRST0wocGlwZSk7CiAJCXBhbmVsX3BpcGUgPSBwaXBl OwpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlzYWJs ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAicGxhbmUgJWQg YXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwg YWN0aXZlXG4iLAogCQkJICAgICBzcHJpdGUsIHBpcGVfbmFtZShwaXBlKSk7CiAJCX0KLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkgewogCQlmb3JfZWFjaF9zcHJpdGUoZGV2X3ByaXYsIHBpcGUsIHNwcml0ZSkg ewogCQkJdTMyIHZhbCA9IEk5MTVfUkVBRChTUENOVFIocGlwZSwgc3ByaXRlKSk7CiAJCQlJOTE1 X1NUQVRFX1dBUk4odmFsICYgU1BfRU5BQkxFLApAQCAtMTYwNSw3ICsxNjA1LDcgQEAgc3RhdGlj IHZvaWQgdmx2X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJYXNzZXJ0X3Bp cGVfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwogCiAJLyogTm8gcmVhbGx5LCBub3Qg Zm9yIElMSysgKi8KLQlCVUdfT04oIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpOworCUJV R19PTighSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYtPmRldikpOwogCiAJLyogUExMIGlz IHByb3RlY3RlZCBieSBwYW5lbCwgbWFrZSBzdXJlIHdlIGNhbiB3cml0ZSBpdCAqLwogCWlmIChJ U19NT0JJTEUoZGV2X3ByaXYtPmRldikpCkBAIC0yMzE3LDcgKzIzMTcsNyBAQCBzdGF0aWMgdW5z aWduZWQgaW50IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCiAJCXJldHVy biAyNTYgKiAxMDI0OwogCWVsc2UgaWYgKElTX0JST0FEV0FURVIoZGV2X3ByaXYpIHx8IElTX0NS RVNUTElORShkZXZfcHJpdikgfHwKLQkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQorCQkgSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQogCQlyZXR1cm4gMTI4ICogMTAyNDsKIAllbHNl IGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCiAJCXJldHVybiA0ICogMTAyNDsK QEAgLTU0NDgsNyArNTQ0OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jZGNsayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWltcyB3ZSBzaG91 bGQgYWltIGZvciA0TUh6LCBidXQKIAkgKiBpbiBmYWN0IDFNSHogaXMgdGhlIGNvcnJlY3QgZnJl cXVlbmN5LgogCSAqLwotCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSEFTX0dFTjdf TFBfRkVBVFVSRVMoZGV2KSkgewogCQkvKgogCQkgKiBQcm9ncmFtIHRoZSBnbWJ1c19mcmVxIGJh c2VkIG9uIHRoZSBjZGNsayBmcmVxdWVuY3kuCiAJCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWlt cyB3ZSBzaG91bGQgYWltIGZvciA0TUh6LCBidXQKQEAgLTcxNjksNyArNzE2OSw3IEBAIHN0YXRp YyBpbnQgaTl4eF9nZXRfcmVmY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAogCiAJV0FSTl9PTighY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7CiAKLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgeworCWlmIChIQVNfR0VON19MUF9G RUFUVVJFUyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewogCQlyZWZjbGsgPSAxMDAwMDA7CiAJ fSBlbHNlIGlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3RhdGUsIElOVEVMX09V VFBVVF9MVkRTKSAmJgogCSAgICBpbnRlbF9wYW5lbF91c2Vfc3NjKGRldl9wcml2KSAmJiBudW1f Y29ubmVjdG9ycyA8IDIpIHsKQEAgLTc4NjgsNyArNzg2OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhf c2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCQlwaXBlY29uZiB8 PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsKIAogCS8qIG9ubHkgZzR4IGFuZCBsYXRlciBoYXZlIGZh bmN5IGJwYy9kaXRoZXIgY29udHJvbHMgKi8KLQlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZ VklFVyhkZXYpKSB7CisJaWYgKElTX0c0WChkZXYpIHx8IEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpIHsKIAkJLyogQnNwZWMgY2xhaW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmluZyBmb3Ig MzBicHAgcGlwZXMuICovCiAJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmRpdGhlciAmJiBpbnRl bF9jcnRjLT5jb25maWctPnBpcGVfYnBwICE9IDMwKQogCQkJcGlwZWNvbmYgfD0gUElQRUNPTkZf RElUSEVSX0VOIHwKQEAgLTc5MDgsNyArNzkwOCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3Bp cGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCX0gZWxzZQogCQlwaXBlY29u ZiB8PSBQSVBFQ09ORl9QUk9HUkVTU0lWRTsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYg aW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQorCWlmIChIQVNfR0VON19M UF9GRUFUVVJFUyhkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5n ZSkKIAkJcGlwZWNvbmYgfD0gUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUOwogCiAJSTkxNV9X UklURShQSVBFQ09ORihpbnRlbF9jcnRjLT5waXBlKSwgcGlwZWNvbmYpOwpAQCAtODE1NSw3ICs4 MTU1LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCiAJaWYgKCEodG1wICYgUElQRUNPTkZfRU5BQkxFKSkKIAkJcmV0dXJuIGZhbHNl OwogCi0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19H NFgoZGV2KSB8fCBIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCXN3aXRjaCAodG1wICYg UElQRUNPTkZfQlBDX01BU0spIHsKIAkJY2FzZSBQSVBFQ09ORl82QlBDOgogCQkJcGlwZV9jb25m aWctPnBpcGVfYnBwID0gMTg7CkBAIC04MTcxLDcgKzgxNzEsNyBAQCBzdGF0aWMgYm9vbCBpOXh4 X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJfQogCX0KIAotCWlm IChJU19WQUxMRVlWSUVXKGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVD VCkpCisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NP TE9SX1JBTkdFX1NFTEVDVCkpCiAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0g dHJ1ZTsKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpCkBAIC04MTk5LDcgKzgxOTks NyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPSAxOwogCX0KIAlwaXBlX2Nv bmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsID0gSTkxNV9SRUFEKERQTEwoY3J0Yy0+cGlwZSkpOwot CWlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpKSB7CiAJCS8qCiAJCSAqIERQTExfRFZPXzJYX01PREUgbXVzdCBiZSBlbmFibGVkIGZvciBi b3RoIERQTExzCiAJCSAqIG9uIDgzMC4gRmlsdGVyIGl0IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9u J3QKQEAgLTExNTE2LDcgKzExNTE2LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUg fHwgSVNfRzRYKGRldikpCiAJCXdvcmstPmZsaXBfY291bnQgPSBJOTE1X1JFQUQoUElQRV9GTElQ Q09VTlRfRzRYKHBpcGUpKSArIDE7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJcmluZyA9ICZkZXZfcHJpdi0+cmluZ1tC Q1NdOwogCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9vYmood29yay0+b2xkX2Zi KS0+dGlsaW5nX21vZGUpCiAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBjaGFuZ2Ug dGlsaW5nICovCkBAIC0xMTk5Nyw3ICsxMTk5Nyw3IEBAIGNvbXB1dGVfYmFzZWxpbmVfcGlwZV9i cHAoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5lY3Rvcl9zdGF0ZTsKIAlpbnQgYnBwLCBpOwogCi0JaWYgKChJU19HNFgoZGV2KSB8fCBJ U19WQUxMRVlWSUVXKGRldikpKQorCWlmICgoSVNfRzRYKGRldikgfHwgSEFTX0dFTjdfTFBfRkVB VFVSRVMoZGV2KSkpCiAJCWJwcCA9IDEwKjM7CiAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNSkKIAkJYnBwID0gMTIqMzsKQEAgLTEyNjA3LDcgKzEyNjA3LDcgQEAgaW50ZWxfcGlw ZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCVBJUEVfQ09ORl9DSEVD S19JKHBpeGVsX211bHRpcGxpZXIpOwogCVBJUEVfQ09ORl9DSEVDS19JKGhhc19oZG1pX3Npbmsp OwogCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmICFJU19IQVNXRUxMKGRldikpIHx8 Ci0JICAgIElTX1ZBTExFWVZJRVcoZGV2KSkKKwkgICAgSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSkKIAkJUElQRV9DT05GX0NIRUNLX0kobGltaXRlZF9jb2xvcl9yYW5nZSk7CiAJUElQRV9DT05G X0NIRUNLX0koaGFzX2luZm9mcmFtZSk7CiAKQEAgLTE0MjU2LDcgKzE0MjU2LDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoSVNf Q0hFUlJZVklFVyhkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpICYmICFkZXZfcHJpdi0+dmJ0LmludF9jcnRfc3VwcG9ydCkKKwlpZiAoSEFTX0dFTjdfTFBf RkVBVFVSRVMoZGV2KSAmJiAhZGV2X3ByaXYtPnZidC5pbnRfY3J0X3N1cHBvcnQpCiAJCXJldHVy biBmYWxzZTsKIAogCXJldHVybiB0cnVlOwpAQCAtMTQzNDEsNyArMTQzNDEsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAkJaWYg KEk5MTVfUkVBRChQQ0hfRFBfRCkgJiBEUF9ERVRFQ1RFRCkKIAkJCWludGVsX2RwX2luaXQoZGV2 LCBQQ0hfRFBfRCwgUE9SVF9EKTsKLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewor CX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQkvKgogCQkgKiBUaGUg RFBfREVURUNURUQgYml0IGlzIHRoZSBsYXRjaGVkIHN0YXRlIG9mIHRoZSBEREMKIAkJICogU0RB IHBpbiBhdCBib290LiBIb3dldmVyIHNpbmNlIGVEUCBkb2Vzbid0IHJlcXVpcmUgRERDCkBAIC0x NDQ5MCw3ICsxNDQ5MCw3IEBAIHUzMiBpbnRlbF9mYl9waXRjaF9saW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1aW50NjRfdCBmYl9tb2RpZmllciwKIAkJICogIHBpeGVscyBhbmQgMzJLIGJ5 dGVzLiIKIAkJICovCiAJCSByZXR1cm4gbWluKDgxOTIqZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGl4 ZWxfZm9ybWF0LCAwKSwgMzI3NjgpOwotCX0gZWxzZSBpZiAoZ2VuID49IDUgJiYgIUlTX1ZBTExF WVZJRVcoZGV2KSkgeworCX0gZWxzZSBpZiAoZ2VuID49IDUgJiYgIUhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpIHsKIAkJcmV0dXJuIDMyKjEwMjQ7CiAJfSBlbHNlIGlmIChnZW4gPj0gNCkgewog CQlpZiAoZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCkBAIC0xNDU5NCw3 ICsxNDU5NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQl9CiAJCWJyZWFrOwogCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoK LQkJaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7 CisJCWlmICghSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJiBJTlRFTF9JTkZPKGRldiktPmdl biA8IDkpIHsKIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwK IAkJCQkgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwogCQkJ cmV0dXJuIC1FSU5WQUw7CkBAIC0xNDYxMCw3ICsxNDYxMCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf ZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9CiAJCWJyZWFrOwog CWNhc2UgRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMDoKLQkJaWYgKCFJU19WQUxMRVlWSUVXKGRldikp IHsKKwkJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCQlEUk1fREVCVUcoInVu c3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCiAJCQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1l KG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMTQ3Mzgs NyArMTQ3MzgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0gaXJvbmxha2Vf Y3J0Y19kaXNhYmxlOwogCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFuZSA9 CiAJCQlpcm9ubGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKLQl9IGVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkgeworCX0gZWxzZSBpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewog CQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcgPSBpOXh4X2dldF9waXBlX2NvbmZp ZzsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KIAkJCWk5 eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnOwpAQCAtMTQ3NzEsNyArMTQ3NzEsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAllbHNl IGlmIChJU19IQVNXRUxMKGRldikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Ns b2NrX3NwZWVkID0KIAkJCWhhc3dlbGxfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7Ci0JZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkID0KIAkJCXZh bGxleXZpZXdfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7CiAJZWxzZSBpZiAoSVNfR0VONShkZXYp KQpAQCAtMTQ4MzIsNyArMTQ4MzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXko c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2Fs Y19jZGNsayA9CiAJCQkJYnJvYWR3ZWxsX21vZGVzZXRfY2FsY19jZGNsazsKIAkJfQotCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFU VVJFUyhkZXYpKSB7CiAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY29tbWl0X2NkY2xrID0K IAkJCXZhbGxleXZpZXdfbW9kZXNldF9jb21taXRfY2RjbGs7CiAJCWRldl9wcml2LT5kaXNwbGF5 Lm1vZGVzZXRfY2FsY19jZGNsayA9CkBAIC0xNTYwNiw3ICsxNTYwNiw3IEBAIGludGVsX21vZGVz ZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJcGxsLT5vbiA9IGZh bHNlOwogCX0KIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKEhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpCiAJCXZsdl93bV9nZXRfaHdfc3RhdGUoZGV2KTsKIAllbHNlIGlmIChJU19H RU45KGRldikpCiAJCXNrbF93bV9nZXRfaHdfc3RhdGUoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCmluZGV4IGYyYmZjYTAuLmFjODRmODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAt NTE3LDcgKzUxNyw3IEBAIHZvaWQgdmx2X3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9w cml2LT5kZXY7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAKLQlpZiAoV0FSTl9P TighSVNfVkFMTEVZVklFVyhkZXYpKSkKKwlpZiAoV0FSTl9PTighSEFTX0dFTjdfTFBfRkVBVFVS RVMoZGV2KSkpCiAJCXJldHVybjsKIAogCS8qCkBAIC01ODIsNyArNTgyLDcgQEAgc3RhdGljIGlu dCBlZHBfbm90aWZ5X2hhbmRsZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25l ZCBsb25nIGNvZGUsCiAKIAlwcHNfbG9jayhpbnRlbF9kcCk7CiAKLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7CisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJZW51bSBwaXBl IHBpcGUgPSB2bHZfcG93ZXJfc2VxdWVuY2VyX3BpcGUoaW50ZWxfZHApOwogCQlpOTE1X3JlZ190 IHBwX2N0cmxfcmVnLCBwcF9kaXZfcmVnOwogCQl1MzIgcHBfZGl2OwpAQCAtNjEwLDcgKzYxMCw3 IEBAIHN0YXRpYyBib29sIGVkcF9oYXZlX3BhbmVsX3Bvd2VyKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKIAot CWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2 KSAmJgogCSAgICBpbnRlbF9kcC0+cHBzX3BpcGUgPT0gSU5WQUxJRF9QSVBFKQogCQlyZXR1cm4g ZmFsc2U7CiAKQEAgLTYyNCw3ICs2MjQsNyBAQCBzdGF0aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF92 ZGQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRl dl9wcml2LT5wcHNfbXV0ZXgpOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJgorCWlmIChI QVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmCiAJICAgIGludGVsX2RwLT5wcHNfcGlwZSA9PSBJ TlZBTElEX1BJUEUpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtMTcyMiw3ICsxNzIyLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZHBfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK IAkJCXRyYW5zX2RwICY9IH5UUkFOU19EUF9FTkhfRlJBTUlORzsKIAkJSTkxNV9XUklURShUUkFO U19EUF9DVEwoY3J0Yy0+cGlwZSksIHRyYW5zX2RwKTsKIAl9IGVsc2UgewotCQlpZiAoIUhBU19Q Q0hfU1BMSVQoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmCisJCWlmICghSEFTX1BDSF9T UExJVChkZXYpICYmICFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYmCiAJCSAgICBjcnRjLT5j b25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCiAJCQlpbnRlbF9kcC0+RFAgfD0gRFBfQ09MT1Jf UkFOR0VfMTZfMjM1OwogCkBAIC0yNDE3LDcgKzI0MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k cF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKIAotCWlmICghSEFTX1BDSF9T UExJVChkZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYKKwlpZiAoIUhBU19QQ0hfU1BMSVQo ZGV2KSAmJiAhSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJgogCSAgICB0bXAgJiBEUF9DT0xP Ul9SQU5HRV8xNl8yMzUpCiAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1 ZTsKIApAQCAtMjY5NCw3ICsyNjk0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCiAJcHBzX2xvY2soaW50ZWxfZHApOwogCi0J aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkK IAkJdmx2X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGludGVsX2RwKTsKIAogCS8qCkBAIC0y NzI4LDcgKzI3MjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCiAKIAlwcHNfdW5sb2NrKGludGVsX2RwKTsKIAotCWlmIChJU19W QUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQl1 bnNpZ25lZCBpbnQgbGFuZV9tYXNrID0gMHgwOwogCiAJCWlmIChJU19DSEVSUllWSUVXKGRldikp CkBAIC0zMjE4LDcgKzMyMTgsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQogCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nICYmIHBvcnQgPT0g UE9SVF9BKQogCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKIAkJcmV0 dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKLQl9IGVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCiAJCXJl dHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7CiAJZWxzZSBpZiAoSVNfR0VONyhk ZXYpICYmIHBvcnQgPT0gUE9SVF9BKQogCQlyZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19M RVZFTF8yOwpAQCAtMzI1OSw3ICszMjU5LDcgQEAgaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IHZvbHRhZ2Vfc3dpbmcpCiAJCWRlZmF1 bHQ6CiAJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMDsKIAkJfQotCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKSB7CiAJCXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJ TkdfTUFTSykgewogCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoKIAkJCXJl dHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwpAQCAtNDUzOSw3ICs0NTM5LDcgQEAgYm9v bCBpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJcmV0dXJuIGNwdF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBw b3J0KTsKIAllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKIAkJcmV0dXJuIGJ4dF9kaWdp dGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKLQllbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSkKKwllbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXZfcHJpdikp CiAJCXJldHVybiB2bHZfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7CiAJ ZWxzZQogCQlyZXR1cm4gZzR4X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQp OwpAQCAtNDkzMyw3ICs0OTMzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNl dChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJICogUmVhZCBvdXQgdGhlIGN1cnJlbnQg cG93ZXIgc2VxdWVuY2VyIGFzc2lnbm1lbnQsCiAJICogaW4gY2FzZSB0aGUgQklPUyBkaWQgc29t ZXRoaW5nIHdpdGggaXQuCiAJICovCi0JaWYgKElTX1ZBTExFWVZJRVcoZW5jb2Rlci0+ZGV2KSkK KwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZW5jb2Rlci0+ZGV2KSkKIAkJdmx2X2luaXRpYWxf cG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2RwKTsKIAogCWludGVsX2VkcF9wYW5lbF92ZGRf c2FuaXRpemUoaW50ZWxfZHApOwpAQCAtNTI5Myw3ICs1MjkzLDcgQEAgaW50ZWxfZHBfaW5pdF9w YW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAK IAkvKiBIYXN3ZWxsIGRvZXNuJ3QgaGF2ZSBhbnkgcG9ydCBzZWxlY3Rpb24gYml0cyBmb3IgdGhl IHBhbmVsCiAJICogcG93ZXIgc2VxdWVuY2VyIGFueSBtb3JlLiAqLwotCWlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQlwb3J0X3Nl bCA9IFBBTkVMX1BPUlRfU0VMRUNUX1ZMVihwb3J0KTsKIAl9IGVsc2UgaWYgKEhBU19QQ0hfSUJY KGRldikgfHwgSEFTX1BDSF9DUFQoZGV2KSkgewogCQlpZiAocG9ydCA9PSBQT1JUX0EpCkBAIC01 NDA1LDEyICs1NDA1LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3NldF9kcnJzX3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCByZWZyZXNoX3JhdGUpCiAKIAkJdmFsID0gSTkxNV9S RUFEKHJlZyk7CiAJCWlmIChpbmRleCA+IERSUlNfSElHSF9SUikgewotCQkJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKKwkJCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKQogCQkJCXZhbCB8 PSBQSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwogCQkJZWxzZQogCQkJCXZhbCB8PSBQ SVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0g7CiAJCX0gZWxzZSB7Ci0JCQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKQorCQkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCiAJCQkJdmFsICY9 IH5QSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwogCQkJZWxzZQogCQkJCXZhbCAmPSB+ UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOwpAQCAtNTc3Nyw3ICs1Nzc3LDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CiAJfQogCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CiAKLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJ aW50ZWxfZHAtPmVkcF9ub3RpZmllci5ub3RpZmllcl9jYWxsID0gZWRwX25vdGlmeV9oYW5kbGVy OwogCQlyZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJmludGVsX2RwLT5lZHBfbm90aWZpZXIpOwog CkBAIC01ODI1LDcgKzU4MjUsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkvKiBpbnRlbF9kcCB2ZnVuY3MgKi8K IAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xv Y2tfZGl2aWRlciA9IHNrbF9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Ci0JZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQorCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCiAJCWlu dGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSB2bHZfZ2V0X2F1eF9jbG9ja19kaXZpZGVy OwogCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKIAkJaW50 ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IGhzd19nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7 CkBAIC01ODYwLDcgKzU4NjAsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9 IElOVEVMX09VVFBVVF9FRFA7CiAKIAkvKiBlRFAgb25seSBvbiBwb3J0IEIgYW5kL29yIEMgb24g dmx2L2NodiAqLwotCWlmIChXQVJOX09OKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBpc19lZHAoaW50 ZWxfZHApICYmCisJaWYgKFdBUk5fT04oSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJiBpc19l ZHAoaW50ZWxfZHApICYmCiAJCSAgICBwb3J0ICE9IFBPUlRfQiAmJiBwb3J0ICE9IFBPUlRfQykp CiAJCXJldHVybiBmYWxzZTsKIApAQCAtNTkxMiw3ICs1OTEyLDcgQEAgaW50ZWxfZHBfaW5pdF9j b25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJaWYg KGlzX2VkcChpbnRlbF9kcCkpIHsKIAkJcHBzX2xvY2soaW50ZWxfZHApOwogCQlpbnRlbF9kcF9p bml0X3BhbmVsX3Bvd2VyX3RpbWVzdGFtcHMoaW50ZWxfZHApOwotCQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQorCQlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKIAkJCXZsdl9pbml0aWFs X3Bvd2VyX3NlcXVlbmNlcl9zZXR1cChpbnRlbF9kcCk7CiAJCWVsc2UKIAkJCWludGVsX2RwX2lu aXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGRldiwgaW50ZWxfZHApOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuYwppbmRleCAyMzA5NTdmLi45NTcwNzYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2ku YwpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9kZXZpY2VfcmVhZHko c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGVuY29kZXItPmJhc2UuZGV2OwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAo SEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkKIAkJdmx2X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rl cik7CiAJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQogCQlieHRfZHNpX2RldmljZV9yZWFkeShl bmNvZGVyKTsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAogCW1zbGVlcChpbnRlbF9kc2kt PnBhbmVsX29uX2RlbGF5KTsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSEFT X0dFTjdfTFBfRkVBVFVSRVMoZGV2KSkgewogCQkvKgogCQkgKiBEaXNhYmxlIERQT3VuaXQgY2xv Y2sgZ2F0aW5nLCBjYW4gc3RhbGwgcGlwZQogCQkgKiBhbmQgd2UgbmVlZCBEUExMIFJFRkEgYWx3 YXlzIGVuYWJsZWQKQEAgLTY4NCw4ICs2ODQsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfZ2V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkgKiBFbmFibGUgYml0 IGRvZXMgbm90IGdldCBzZXQuIFRvIGNoZWNrIHdoZXRoZXIgRFNJIFBvcnQgQwogCQkgKiB3YXMg ZW5hYmxlZCBpbiBCSU9TLCBjaGVjayB0aGUgUGlwZSBCIGVuYWJsZSBiaXQKIAkJICovCi0JCWlm IChJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgotCQkgICAgKHBv cnQgPT0gUE9SVF9DKSkKKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiAocG9ydCA9PSBQT1JU X0MpKQogCQkJZHBpX2VuYWJsZWQgPSBJOTE1X1JFQUQoUElQRUNPTkYoUElQRV9CKSkgJgogCQkJ CQkJCVBJUEVDT05GX0VOQUJMRTsKIApAQCAtNzE2LDcgKzcxNSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJaWYg KElTX0JST1hUT04oZW5jb2Rlci0+YmFzZS5kZXYpKQogCQlwY2xrID0gYnh0X2dldF9kc2lfcGNs ayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwotCWVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZW5jb2Rlci0+YmFzZS5kZXYpKQorCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGVu Y29kZXItPmJhc2UuZGV2KSkKIAkJcGNsayA9IHZsdl9nZXRfZHNpX3BjbGsoZW5jb2RlciwgcGlw ZV9jb25maWctPnBpcGVfYnBwKTsKIAogCWlmICghcGNsaykKQEAgLTg2OSw3ICs4NjgsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlcikKIAl9CiAKIAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRz KSB7Ci0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpIHsKIAkJCS8qCiAJCQkgKiBlc2NhcGUgY2xvY2sgZGl2aWRlciwgMjBNSHosIHNo YXJlZCBmb3IgQSBhbmQgQy4KIAkJCSAqIGRldmljZSByZWFkeSBtdXN0IGJlIG9mZiB3aGVuIGRv aW5nIHRoaXMhIHR4Y2xrZXNjPwpAQCAtMTEyOSw3ICsxMTI4LDcgQEAgdm9pZCBpbnRlbF9kc2lf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmICghZGV2X3ByaXYtPnZidC5oYXNfbWlw aSkKIAkJcmV0dXJuOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChIQVNfR0VO N19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCWRldl9wcml2LT5taXBpX21taW9fYmFzZSA9IFZMVl9N SVBJX0JBU0U7CiAJfSBlbHNlIHsKIAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBNaXBpIGRldmlj ZSB0byByZWcgYmFzZSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX3BsbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCmluZGV4IGNi M2NmMzkuLmRjZTlmOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rz aV9wbGwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKQEAgLTU2 MSw3ICs1NjEsNyBAQCB2b2lkIGludGVsX2VuYWJsZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNl LmRldjsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpCiAJCXZsdl9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKIAllbHNlIGlmIChJU19C Uk9YVE9OKGRldikpCiAJCWJ4dF9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKQEAgLTU3MSw3ICs1 NzEsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7 CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhk ZXYpKQogCQl2bHZfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwogCWVsc2UgaWYgKElTX0JST1hU T04oZGV2KSkKIAkJYnh0X2Rpc2FibGVfZHNpX3BsbChlbmNvZGVyKTsKQEAgLTU5OSw2ICs1OTks NiBAQCB2b2lkIGludGVsX2RzaV9yZXNldF9jbG9ja3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsIGVudW0gcG9ydCBwb3J0KQogCiAJaWYgKElTX0JST1hUT04oZGV2KSkKIAkJYnh0X2Rz aV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7Ci0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKQorCWVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpCiAJCXZsdl9kc2lfcmVz ZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCmlu ZGV4IGMzOTc4YmEuLjgwYzRkOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKQEAgLTYz OCw3ICs2MzgsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1lKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAogCWlmIChIQVNfRERJKGRldl9wcml2KSkKIAkJ cmVnID0gSFNXX1RWSURFT19ESVBfR0NQKGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpOwot CWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQorCWVsc2UgaWYgKEhBU19HRU43X0xQ X0ZFQVRVUkVTKGRldl9wcml2KSkKIAkJcmVnID0gVkxWX1RWSURFT19ESVBfR0NQKGNydGMtPnBp cGUpOwogCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYtPmRldikpCiAJCXJlZyA9IFRW SURFT19ESVBfR0NQKGNydGMtPnBpcGUpOwpAQCAtMjEwMCw3ICsyMTAwLDcgQEAgdm9pZCBpbnRl bF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0LAogCQlCVUcoKTsKIAl9CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYg KEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJaW50ZWxfaGRtaS0+d3JpdGVfaW5mb2Zy YW1lID0gdmx2X3dyaXRlX2luZm9mcmFtZTsKIAkJaW50ZWxfaGRtaS0+c2V0X2luZm9mcmFtZXMg PSB2bHZfc2V0X2luZm9mcmFtZXM7CiAJCWludGVsX2hkbWktPmluZm9mcmFtZV9lbmFibGVkID0g dmx2X2luZm9mcmFtZV9lbmFibGVkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaG90cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCmlu ZGV4IGIxNzc4NTcuLmU3ZGRmMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hvdHBsdWcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMK QEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIGludGVsX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJICogaG90cGx1ZyBiaXRzIGl0c2VsZi4gU28gb25seSBXQVJOIGFi b3V0IHVuZXhwZWN0ZWQKIAkJCSAqIGludGVycnVwdHMgb24gc2FuZXIgcGxhdGZvcm1zLgogCQkJ ICovCi0JCQlXQVJOX09OQ0UoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSAmJiAhSVNfVkFMTEVZ VklFVyhkZXYpLAorCQkJV0FSTl9PTkNFKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUhB U19HRU43X0xQX0ZFQVRVUkVTKGRldiksCiAJCQkJICAiUmVjZWl2ZWQgSFBEIGludGVycnVwdCBv biBwaW4gJWQgYWx0aG91Z2ggZGlzYWJsZWRcbiIsIGkpOwogCQkJY29udGludWU7CiAJCX0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaTJjLmMKaW5kZXggMTExMGM4My4uM2U5ZTBlNSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaTJjLmMKQEAgLTYyOSw3ICs2MjksNyBAQCBpbnQgaW50ZWxfc2V0dXBfZ21idXMo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoSEFTX1BDSF9OT1AoZGV2KSkKIAkJcmV0dXJu IDA7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWlmIChIQVNfR0VON19MUF9GRUFUVVJF UyhkZXYpKQogCQlkZXZfcHJpdi0+Z3Bpb19tbWlvX2Jhc2UgPSBWTFZfRElTUExBWV9CQVNFOwog CWVsc2UgaWYgKCFIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkKIAkJZGV2X3ByaXYtPmdwaW9f bW1pb19iYXNlID0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCmluZGV4IGEyNGRmMzUuLjNi N2U0NDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwpAQCAtMTc2Nyw3ICsxNzY3LDcg QEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpw YW5lbCkKIAkJcGFuZWwtPmJhY2tsaWdodC5zZXQgPSBwY2hfc2V0X2JhY2tsaWdodDsKIAkJcGFu ZWwtPmJhY2tsaWdodC5nZXQgPSBwY2hfZ2V0X2JhY2tsaWdodDsKIAkJcGFuZWwtPmJhY2tsaWdo dC5oel90b19wd20gPSBwY2hfaHpfdG9fcHdtOwotCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKSB7CisJfSBlbHNlIGlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCWlmIChk ZXZfcHJpdi0+dmJ0Lmhhc19taXBpKSB7CiAJCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gcHdt X3NldHVwX2JhY2tsaWdodDsKIAkJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0gcHdtX2VuYWJs ZV9iYWNrbGlnaHQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCA5NmY0NWQ3Li43NDFjODg4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIGludGVs X3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wg ZW5hYmxlKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2OwogCXUzMiB2 YWw7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpIHsKIAkJSTkxNV9XUklURShGV19CTENfU0VMRl9WTFYsIGVuYWJsZSA/IEZXX0NT UFdSRFdORU4gOiAwKTsKIAkJUE9TVElOR19SRUFEKEZXX0JMQ19TRUxGX1ZMVik7CiAJCWRldl9w cml2LT53bS52bHYuY3hzciA9IGVuYWJsZTsKQEAgLTQzOTcsNyArNDM5Nyw3IEBAIHZvaWQgZ2Vu Nl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAltdXRleF9s b2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwogCWlmIChkZXZfcHJpdi0+cnBzLmVuYWJsZWQp IHsKLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVT KGRldikpCiAJCQl2bHZfc2V0X3Jwc19pZGxlKGRldl9wcml2KTsKIAkJZWxzZQogCQkJZ2VuNl9z ZXRfcnBzKGRldl9wcml2LT5kZXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKTsKQEAgLTQ0NTAs NyArNDQ1MCw3IEBAIHZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCiB2b2lkIGludGVsX3NldF9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dTggdmFsKQogewotCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKEhBU19HRU43X0xQX0ZF QVRVUkVTKGRldikpCiAJCXZhbGxleXZpZXdfc2V0X3JwcyhkZXYsIHZhbCk7CiAJZWxzZQogCQln ZW42X3NldF9ycHMoZGV2LCB2YWwpOwpAQCAtNDQ5NCw3ICs0NDk0LDcgQEAgc3RhdGljIHZvaWQg dmFsbGV5dmlld19kaXNhYmxlX3JwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiBzdGF0aWMg dm9pZCBpbnRlbF9wcmludF9yYzZfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbW9k ZSkKIHsKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKEhBU19HRU43X0xQX0ZFQVRV UkVTKGRldikpIHsKIAkJaWYgKG1vZGUgJiAoR0VON19SQ19DVExfVE9fTU9ERSB8IEdFTjZfUkNf Q1RMX0VJX01PREUoMSkpKQogCQkJbW9kZSA9IEdFTjZfUkNfQ1RMX1JDNl9FTkFCTEU7CiAJCWVs c2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKaW5kZXggYjY2MDllNi4uYzRlOGFkMiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcHNyLmMKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgYm9vbCBpbnRl bF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlyZXR1 cm4gZmFsc2U7CiAJfQogCi0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgKChkZXZfcHJpdi0+ dmJ0LnBzci5mdWxsX2xpbmspIHx8CisJaWYgKCFIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpICYm ICgoZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rKSB8fAogCQkJCSAgICAoZGlnX3BvcnQtPnBv cnQgIT0gUE9SVF9BKSkpIHsKIAkJRFJNX0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6 IExpbmsgU3RhbmRieSByZXF1ZXN0ZWQvbmVlZGVkIGJ1dCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg cGxhdGZvcm1cbiIpOwogCQlyZXR1cm4gZmFsc2U7CkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBp bnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAq IFNpbmdsZSBmcmFtZSB1cGRhdGUgaXMgYWxyZWFkeSBzdXBwb3J0ZWQgb24gQkRXKyBidXQgaXQg cmVxdWlyZXMKIAkgKiBtYW55IFcvQSBhbmQgaXQgaXNuJ3QgcmVhbGx5IG5lZWRlZC4KIAkgKi8K LQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAoIUhBU19HRU43X0xQX0ZFQVRVUkVTKGRl dikpCiAJCXJldHVybjsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCmluZGV4IDJiOTZmMzMuLjJlNzA0M2IgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC05NTEsNyArOTUxLDcgQEAgaW50IGludGVsX3Nw cml0ZV9zZXRfY29sb3JrZXkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlp ZiAoKHNldC0+ZmxhZ3MgJiAoSTkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04gfCBJOTE1X1NF VF9DT0xPUktFWV9TT1VSQ0UpKSA9PSAoSTkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04gfCBJ OTE1X1NFVF9DT0xPUktFWV9TT1VSQ0UpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWlmIChJU19W QUxMRVlWSUVXKGRldikgJiYKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2KSAmJgogCSAg ICBzZXQtPmZsYWdzICYgSTkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04pCiAJCXJldHVybiAt RUlOVkFMOwogCkBAIC0xMDg2LDcgKzEwODYsNyBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLCBpbnQgcGxhbmUpCiAJCQlpbnRlbF9wbGFu ZS0+bWF4X2Rvd25zY2FsZSA9IDE7CiAJCX0KIAotCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7 CisJCWlmIChIQVNfR0VON19MUF9GRUFUVVJFUyhkZXYpKSB7CiAJCQlpbnRlbF9wbGFuZS0+dXBk YXRlX3BsYW5lID0gdmx2X3VwZGF0ZV9wbGFuZTsKIAkJCWludGVsX3BsYW5lLT5kaXNhYmxlX3Bs YW5lID0gdmx2X2Rpc2FibGVfcGxhbmU7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMK aW5kZXggYzIzNThiYS4uZWJiYmUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMK QEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgaW50IF9fZ2VuNl9ndF93YWl0X2Zvcl9maWZvKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCS8qIE9uIFZMViwgRklGTyB3aWxs IGJlIHNoYXJlZCBieSBib3RoIFNXIGFuZCBIVy4KIAkgKiBTbywgd2UgbmVlZCB0byByZWFkIHRo ZSBGUkVFX0VOVFJJRVMgZXZlcnl0aW1lICovCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYt PmRldikpCisJaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldl9wcml2LT5kZXYpKQogCQlkZXZf cHJpdi0+dW5jb3JlLmZpZm9fY291bnQgPSBmaWZvX2ZyZWVfZW50cmllcyhkZXZfcHJpdik7CiAK IAlpZiAoZGV2X3ByaXYtPnVuY29yZS5maWZvX2NvdW50IDwgR1RfRklGT19OVU1fUkVTRVJWRURf RU5UUklFUykgewpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIHZvaWQgZndfZG9tYWluX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlkLT52YWxfY2xlYXIgPSBf TUFTS0VEX0JJVF9ESVNBQkxFKEZPUkNFV0FLRV9LRVJORUwpOwogCX0KIAotCWlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSkKKwlpZiAoSEFTX0dFTjdfTFBfRkVBVFVSRVMoZGV2X3ByaXYpKQog CQlkLT5yZWdfcG9zdCA9IEZPUkNFV0FLRV9BQ0tfVkxWOwogCWVsc2UgaWYgKElTX0dFTjYoZGV2 X3ByaXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpIHx8IElTX0dFTjgoZGV2X3ByaXYpKQogCQlkLT5y ZWdfcG9zdCA9IEVDT0JVUzsKQEAgLTExNDgsNyArMTE0OCw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCSAgICAg ICBGT1JDRVdBS0VfQUNLX0JMSVRURVJfR0VOOSk7CiAJCWZ3X2RvbWFpbl9pbml0KGRldl9wcml2 LCBGV19ET01BSU5fSURfTUVESUEsCiAJCQkgICAgICAgRk9SQ0VXQUtFX01FRElBX0dFTjksIEZP UkNFV0FLRV9BQ0tfTUVESUFfR0VOOSk7Ci0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikp IHsKKwl9IGVsc2UgaWYgKEhBU19HRU43X0xQX0ZFQVRVUkVTKGRldikpIHsKIAkJZGV2X3ByaXYt PnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0OwogCQlpZiAoIUlT X0NIRVJSWVZJRVcoZGV2KSkKIAkJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9w dXQgPQotLSAKMi42LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==