From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wayne Boyer Subject: [PATCH 1/5] drm/i915: Separate cherryview from valleyview Date: Tue, 8 Dec 2015 11:46:53 -0800 Message-ID: <1449604013-462-1-git-send-email-wayne.boyer@intel.com> References: <20151208115138.GQ4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 02D0E6E389 for ; Tue, 8 Dec 2015 11:47:30 -0800 (PST) In-Reply-To: <20151208115138.GQ4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org VGhlIGNoZXJyeXZpZXcgZGV2aWNlIHNoYXJlcyBtYW55IGNoYXJhY3RlcmlzdGljcyB3aXRoIHRo ZSB2YWxsZXl2aWV3CmRldmljZS4gIFdoZW4gc3VwcG9ydCB3YXMgYWRkZWQgdG8gdGhlIGRyaXZl ciBmb3IgY2hlcnJ5dmlldywgdGhlCmNvcnJlc3BvbmRpbmcgZGV2aWNlIGluZm8gc3RydWN0dXJl IGluY2x1ZGVkIC5pc192YWxsZXl2aWV3ID0gMS4KVGhpcyBpcyBub3QgY29ycmVjdCBhbmQgbGVh ZHMgdG8gc29tZSBjb25mdXNpb24uCgpUaGlzIHBhdGNoIGNoYW5nZXMgLmlzX3ZhbGxleXZpZXcg dG8gLmlzX2NoZXJyeXZpZXcgaW4gdGhlIGNoZXJyeXZpZXcKZGV2aWNlIGluZm8gc3RydWN0dXJl IGFuZCBzaW1wbGlmaWVzIHRoZSBJU19DSEVSUllWSUVXIG1hY3JvLgpUaGVuIHdoZXJlIGFwcHJv cHJpYXRlLCBpbnN0YW5jZXMgb2YgSVNfVkFMTEVZVklFVyBhcmUgcmVwbGFjZWQgd2l0aApJU19W QUxMRVlWSUVXIHx8IElTX0NIRVJSWVZJRVcgb3IgZXF1aXZhbGVudC4KCnYyOiBVc2UgSVNfVkFM TEVZVklFVyB8fCBJU19DSEVSUllWSUVXIGluc3RlYWQgb2YgZGVmaW5pbmcgYSBuZXcgbWFjcm8u CiAgICBBbHNvIGFkZCBmb2xsb3d1cCBwYXRjaGVzIHRvIGZpeCBpc3N1ZXMgZGlzY292ZXJlZCBk dXJpbmcgdGhlIGZpcnN0CiAgICByZXZpZXcuIChWaWxsZSkKdjM6IEZpeCBzb21lIHN0eWxlIGlz c3VlcyBhbmQgb25lIGdlbiBjaGVjay4gUmVtb3ZlIENSVCByZWxhdGVkIGNoYW5nZXMKICAgIGFz IENSVCBpcyBub3Qgc3VwcG9ydGVkIG9uIENIVi4gKEltcmUsIFZpbGxlKQoKQ2M6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBSb2RyaWdvIFZpdmkg PHJvZHJpZ28udml2aUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFdheW5lIEJveWVyIDx3YXlu ZS5ib3llckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgICAgIHwgNjggKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgICAgfCAgOCArKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAxMCArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgIHwgMTYgKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAg IHwgIDggKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgIHwgIDQg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICB8IDEwICsrLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAgICAgfCAgNyArKy0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCA1NCArKysrKysrKysrKysrKy0tLS0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgIHwgNDAgKysr KysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgICAgICAg IHwgMTQgKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jICAgIHwg IDYgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgICAgfCAgNCArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jICAgIHwgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2kyYy5jICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyAgICAgICAgIHwgIDggKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMgICAgICAgIHwgIDYgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAg ICAgfCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgIHwgIDQg Ky0KIDIyIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCBhODcyMWZjLi5mZmYzMTI1MyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTExNDIsOCArMTE0MiwzNCBAQCBz dGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCiAJCQkgICBNRU1TVEFUX1ZJRF9TSElGVCk7CiAJCXNlcV9wcmludGYobSwgIkN1cnJl bnQgUC1zdGF0ZTogJWRcbiIsCiAJCQkgICAocmd2c3RhdCAmIE1FTVNUQVRfUFNUQVRFX01BU0sp ID4+IE1FTVNUQVRfUFNUQVRFX1NISUZUKTsKLQl9IGVsc2UgaWYgKElTX0dFTjYoZGV2KSB8fCAo SVNfR0VONyhkZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikpIHx8Ci0JCSAgIElTX0JST0FEV0VM TChkZXYpIHx8IElTX0dFTjkoZGV2KSkgeworCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgeworCQl1MzIgZnJlcV9zdHM7CisKKwkJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwkJZnJlcV9zdHMgPSB2bHZfcHVuaXRfcmVhZChk ZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7CisJCXNlcV9wcmludGYobSwgIlBVTklU X1JFR19HUFVfRlJFUV9TVFM6IDB4JTA4eFxuIiwgZnJlcV9zdHMpOworCQlzZXFfcHJpbnRmKG0s ICJERFIgZnJlcTogJWQgTUh6XG4iLCBkZXZfcHJpdi0+bWVtX2ZyZXEpOworCisJCXNlcV9wcmlu dGYobSwgImFjdHVhbCBHUFUgZnJlcTogJWQgTUh6XG4iLAorCQkJICAgaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIChmcmVxX3N0cyA+PiA4KSAmIDB4ZmYpKTsKKworCQlzZXFfcHJpbnRmKG0sICJj dXJyZW50IEdQVSBmcmVxOiAlZCBNSHpcbiIsCisJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJp diwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkpOworCisJCXNlcV9wcmludGYobSwgIm1heCBHUFUg ZnJlcTogJWQgTUh6XG4iLAorCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2 LT5ycHMubWF4X2ZyZXEpKTsKKworCQlzZXFfcHJpbnRmKG0sICJtaW4gR1BVIGZyZXE6ICVkIE1I elxuIiwKKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1pbl9m cmVxKSk7CisKKwkJc2VxX3ByaW50ZihtLCAiaWRsZSBHUFUgZnJlcTogJWQgTUh6XG4iLAorCQkJ ICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKSk7CisK KwkJc2VxX3ByaW50ZihtLAorCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1I elxuIiwKKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmlj aWVudF9mcmVxKSk7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKKwl9 IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKIAkJdTMyIHJwX3N0YXRlX2xp bWl0czsKIAkJdTMyIGd0X3BlcmZfc3RhdHVzOwogCQl1MzIgcnBfc3RhdGVfY2FwOwpAQCAtMTI4 NCwzMyArMTMxMCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJc2VxX3ByaW50ZihtLAogCQkJICAgImVmZmljaWVu dCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKIAkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9w cml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSk7Ci0JfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikpIHsKLQkJdTMyIGZyZXFfc3RzOwotCi0JCW11dGV4X2xvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7Ci0JCWZyZXFfc3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBV TklUX1JFR19HUFVfRlJFUV9TVFMpOwotCQlzZXFfcHJpbnRmKG0sICJQVU5JVF9SRUdfR1BVX0ZS RVFfU1RTOiAweCUwOHhcbiIsIGZyZXFfc3RzKTsKLQkJc2VxX3ByaW50ZihtLCAiRERSIGZyZXE6 ICVkIE1IelxuIiwgZGV2X3ByaXYtPm1lbV9mcmVxKTsKLQotCQlzZXFfcHJpbnRmKG0sICJhY3R1 YWwgR1BVIGZyZXE6ICVkIE1IelxuIiwKLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCAo ZnJlcV9zdHMgPj4gOCkgJiAweGZmKSk7Ci0KLQkJc2VxX3ByaW50ZihtLCAiY3VycmVudCBHUFUg ZnJlcTogJWQgTUh6XG4iLAotCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2 LT5ycHMuY3VyX2ZyZXEpKTsKLQotCQlzZXFfcHJpbnRmKG0sICJtYXggR1BVIGZyZXE6ICVkIE1I elxuIiwKLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1heF9m cmVxKSk7Ci0KLQkJc2VxX3ByaW50ZihtLCAibWluIEdQVSBmcmVxOiAlZCBNSHpcbiIsCi0JCQkg ICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcSkpOwotCi0J CXNlcV9wcmludGYobSwgImlkbGUgR1BVIGZyZXE6ICVkIE1IelxuIiwKLQkJCSAgIGludGVsX2dw dV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSkpOwotCi0JCXNlcV9wcmlu dGYobSwKLQkJCSAgICJlZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCi0JCQkg ICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSkp OwotCQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7CiAJfSBlbHNlIHsKIAkJ c2VxX3B1dHMobSwgIm5vIFAtc3RhdGUgaW5mbyBhdmFpbGFibGVcbiIpOwogCX0KQEAgLTE2MDIs NyArMTYwMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBtLT5wcml2YXRl OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ZGV2OwogCi0JaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKIAkJcmV0dXJuIHZsdl9kcnBjX2luZm8obSk7CiAJZWxzZSBpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNikKIAkJcmV0dXJuIGdlbjZfZHJwY19pbmZvKG0pOwpAQCAtMTc0Myw3 ICsxNzQyLDcgQEAgc3RhdGljIGludCBpOTE1X3NyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVBRChJTlNUUE0pICYgSU5TVFBN X1NFTEZfRU47CiAJZWxzZSBpZiAoSVNfUElORVZJRVcoZGV2KSkKIAkJc3JfZW5hYmxlZCA9IEk5 MTVfUkVBRChEU1BGVzMpICYgUElORVZJRVdfU0VMRl9SRUZSRVNIX0VOOwotCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkKKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hF UlJZVklFVyhkZXYpKQogCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKEZXX0JMQ19TRUxGX1ZMVikg JiBGV19DU1BXUkRXTkVOOwogCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwpAQCAt Mzk4Myw3ICszOTgyLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRfc291cmNlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAogCQlyZXQgPSBpOHh4X3BpcGVfY3JjX2N0 bF9yZWcoJnNvdXJjZSwgJnZhbCk7CiAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1 KQogCQlyZXQgPSBpOXh4X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBwaXBlLCAmc291cmNlLCAmdmFs KTsKLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCisJZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJcmV0ID0gdmx2X3BpcGVfY3JjX2N0bF9y ZWcoZGV2LCBwaXBlLCAmc291cmNlLCAmdmFsKTsKIAllbHNlIGlmIChJU19HRU41KGRldikgfHwg SVNfR0VONihkZXYpKQogCQlyZXQgPSBpbGtfcGlwZV9jcmNfY3RsX3JlZygmc291cmNlLCAmdmFs KTsKQEAgLTQwNTIsNyArNDA1MSw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwKIAogCQlpZiAoSVNfRzRYKGRl dikpCiAJCQlnNHhfdW5kb19waXBlX3NjcmFtYmxlX3Jlc2V0KGRldiwgcGlwZSk7Ci0JCWVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJCXZsdl91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2 LCBwaXBlKTsKIAkJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpICYmIHBpcGUgPT0gUElQRV9BKQog CQkJaHN3X3RyYW5zX2VkcF9waXBlX0FfY3JjX3dhKGRldiwgZmFsc2UpOwpAQCAtNDQ0Miw3ICs0 NDQxLDggQEAgc3RhdGljIHZvaWQgd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwg Y29uc3QgdWludDE2X3Qgd21bOF0pCiAJCSAqIC0gV00xKyBsYXRlbmN5IHZhbHVlcyBpbiAwLjV1 cyB1bml0cwogCQkgKiAtIGxhdGVuY2llcyBhcmUgaW4gdXMgb24gZ2VuOS92bHYvY2h2CiAJCSAq LwotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSB8fCBJU19WQUxMRVlWSUVXKGRldikp CisJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5IHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8 fAorCQkgICAgSVNfQ0hFUlJZVklFVyhkZXYpKQogCQkJbGF0ZW5jeSAqPSAxMDsKIAkJZWxzZSBp ZiAobGV2ZWwgPiAwKQogCQkJbGF0ZW5jeSAqPSA1OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5k ZXggYTgxYzc2Ni4uN2YwOGJhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kbWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0yNTYsNyAr MjU2LDcgQEAgaW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJdTMy IHRlbXA7CiAJYm9vbCBlbmFibGVkOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJcmV0dXJuOwogCiAJ ZGV2X3ByaXYtPm1jaGJhcl9uZWVkX2Rpc2FibGUgPSBmYWxzZTsKQEAgLTc3OSw3ICs3NzksNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9BXSA9IDI7CiAJCWluZm8tPm51 bV9zcHJpdGVzW1BJUEVfQl0gPSAyOwogCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0NdID0gMTsK LQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYs IHBpcGUpCiAJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDI7CiAJZWxzZQpAQCAtNzkxLDcg Kzc5MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpbmZvLT5udW1fcGlwZXMgPSAwOwogCX0gZWxzZSBpZiAo aW5mby0+bnVtX3BpcGVzID4gMCAmJgogCQkgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNyB8 fCBJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA4KSAmJgotCQkgICAhSVNfVkFMTEVZVklFVyhkZXYp KSB7CisJCSAgICEoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkpIHsK IAkJdTMyIGZ1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoRlVTRV9TVFJBUCk7CiAJCXUzMiBzZnVzZV9z dHJhcCA9IEk5MTVfUkVBRChTRlVTRV9TVFJBUCk7CiAKQEAgLTgzNiw3ICs4MzYsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAogc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kcGlvKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQorCWlmICgh SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQly ZXR1cm47CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZTY5MzVmMS4uODQxYzNj NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jaGVycnl2aWV3X2luZm8gPSB7CiAJ LmdlbiA9IDgsIC5udW1fcGlwZXMgPSAzLAogCS5uZWVkX2dmeF9od3MgPSAxLCAuaGFzX2hvdHBs dWcgPSAxLAogCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxUX1JJTkcg fCBWRUJPWF9SSU5HLAotCS5pc192YWxsZXl2aWV3ID0gMSwKKwkuaXNfY2hlcnJ5dmlldyA9IDEs CiAJLmRpc3BsYXlfbW1pb19vZmZzZXQgPSBWTFZfRElTUExBWV9CQVNFLAogCUdFTl9DSFZfUElQ RU9GRlNFVFMsCiAJQ1VSU09SX09GRlNFVFMsCkBAIC04MDIsNyArODAyLDcgQEAgc3RhdGljIGlu dCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCXBjaV9z ZXRfbWFzdGVyKGRldi0+cGRldik7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCisJ aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQog CQlyZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIGZhbHNlKTsKIAlpZiAocmV0KQog CQlEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJlIGZhaWxlZDogJWQsIGNvbnRpbnVpbmcgYW55d2F5 XG4iLApAQCAtMTUzMiw3ICsxNTMyLDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jlc3Vt ZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCiAJCXJldCA9IGJ4dF9yZXN1bWVfcHJlcGFyZShkZXZf cHJpdik7CiAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkKIAkJaHN3X2Rpc2FibGVfcGM4KGRldl9wcml2KTsKLQllbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSkKKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJcmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9w cml2LCB0cnVlKTsKIAogCS8qCkBAIC0xNTQ5LDcgKzE1NDksNyBAQCBzdGF0aWMgaW50IGludGVs X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSkKIAkgKiBwb3dlciB3ZWxsLCBz byBocGQgaXMgcmVpbml0aWFsaXplZCBmcm9tIHRoZXJlLiBGb3IKIAkgKiBldmVyeW9uZSBlbHNl IGRvIGl0IGhlcmUuCiAJICovCi0JaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKKwlpZiAo IShJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkpCiAJ CWludGVsX2hwZF9pbml0KGRldl9wcml2KTsKIAogCWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUo ZGV2KTsKQEAgLTE1NzQsNyArMTU3NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfc3VzcGVuZF9jb21w bGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldCA9IGJ4dF9zdXNw ZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8 fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQogCQlyZXQgPSBoc3dfc3VzcGVuZF9jb21wbGV0ZShk ZXZfcHJpdik7Ci0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCisJZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCXJl dCA9IHZsdl9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKIAllbHNlCiAJCXJldCA9IDA7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBmMWE4YTUzLi4zODk5ZjIzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKQEAgLTc2Myw2ICs3NjMsNyBAQCBzdHJ1Y3QgaW50ZWxfY3NyIHsKIAlmdW5j KGlzX2NyZXN0bGluZSkgc2VwIFwKIAlmdW5jKGlzX2l2eWJyaWRnZSkgc2VwIFwKIAlmdW5jKGlz X3ZhbGxleXZpZXcpIHNlcCBcCisJZnVuYyhpc19jaGVycnl2aWV3KSBzZXAgXAogCWZ1bmMoaXNf aGFzd2VsbCkgc2VwIFwKIAlmdW5jKGlzX3NreWxha2UpIHNlcCBcCiAJZnVuYyhpc19icm94dG9u KSBzZXAgXApAQCAtMjQ1NSw5ICsyNDU2LDkgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7 CiAJCQkJIElOVEVMX0RFVklEKGRldikgPT0gMHgwMTUyIHx8IFwKIAkJCQkgSU5URUxfREVWSUQo ZGV2KSA9PSAweDAxNWEpCiAjZGVmaW5lIElTX1ZBTExFWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhk ZXYpLT5pc192YWxsZXl2aWV3KQotI2RlZmluZSBJU19DSEVSUllWSUVXKGRldikJKElOVEVMX0lO Rk8oZGV2KS0+aXNfdmFsbGV5dmlldyAmJiBJU19HRU44KGRldikpCisjZGVmaW5lIElTX0NIRVJS WVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19jaGVycnl2aWV3KQogI2RlZmluZSBJU19I QVNXRUxMKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfaGFzd2VsbCkKLSNkZWZpbmUgSVNfQlJP QURXRUxMKGRldikJKCFJTlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZpZXcgJiYgSVNfR0VOOChk ZXYpKQorI2RlZmluZSBJU19CUk9BRFdFTEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2KS0+aXNfY2hl cnJ5dmlldyAmJiBJU19HRU44KGRldikpCiAjZGVmaW5lIElTX1NLWUxBS0UoZGV2KQkoSU5URUxf SU5GTyhkZXYpLT5pc19za3lsYWtlKQogI2RlZmluZSBJU19CUk9YVE9OKGRldikJCShJTlRFTF9J TkZPKGRldiktPmlzX2Jyb3h0b24pCiAjZGVmaW5lIElTX0tBQllMQUtFKGRldikJKElOVEVMX0lO Rk8oZGV2KS0+aXNfa2FieWxha2UpCkBAIC0yNTg0LDcgKzI1ODUsOCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfY21kX3RhYmxlIHsKIAkJCQkgSVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRldikp CiAjZGVmaW5lIEhBU19SVU5USU1FX1BNKGRldikJKElTX0dFTjYoZGV2KSB8fCBJU19IQVNXRUxM KGRldikgfHwgXAogCQkJCSBJU19CUk9BRFdFTEwoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikg fHwgXAotCQkJCSBJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKKwkJCQkgSVNf Q0hFUlJZVklFVyhkZXYpIHx8IElTX1NLWUxBS0UoZGV2KSB8fCBcCisJCQkJIElTX0tBQllMQUtF KGRldikpCiAjZGVmaW5lIEhBU19SQzYoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYp CiAjZGVmaW5lIEhBU19SQzZwKGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2IHx8IElT X0lWWUJSSURHRShkZXYpKQogCkBAIC0yNTk3LDcgKzI1OTksOCBAQCBzdHJ1Y3QgZHJtX2k5MTVf Y21kX3RhYmxlIHsKIAkJCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKIAogI2RlZmlu ZSBIQVNfQ09SRV9SSU5HX0ZSRVEoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBc Ci0JCQkJICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKKwkJCQkgIUlT X1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmIFwKKwkJCQkgIUlTX0JS T1hUT04oZGV2KSkKIAogI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4ZmYwMAog I2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKQEAgLTI2MjAsNyAr MjYyMyw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewogI2RlZmluZSBIQVNfUENIX05P UChkZXYpIChJTlRFTF9QQ0hfVFlQRShkZXYpID09IFBDSF9OT1ApCiAjZGVmaW5lIEhBU19QQ0hf U1BMSVQoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSAhPSBQQ0hfTk9ORSkKIAotI2RlZmluZSBI QVNfR01DSF9ESVNQTEFZKGRldikgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSB8fCBJU19WQUxM RVlWSUVXKGRldikpCisjZGVmaW5lIEhBU19HTUNIX0RJU1BMQVkoZGV2KSAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA1IHx8IFwKKwkJCSAgICAgICBJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hF UlJZVklFVyhkZXYpKQogCiAvKiBEUEYgPT0gZHluYW1pYyBwYXJpdHkgZmVhdHVyZSAqLwogI2Rl ZmluZSBIQVNfTDNfRFBGKGRldikgKElTX0lWWUJSSURHRShkZXYpIHx8IElTX0hBU1dFTEwoZGV2 KSkKQEAgLTM1MTEsNyArMzUxNSw3IEBAIF9fcmF3X3dyaXRlKDY0LCBxKQogCiBzdGF0aWMgaW5s aW5lIGk5MTVfcmVnX3QgaTkxNV92Z2FjbnRybF9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IHsKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwg SVNfQ0hFUlJZVklFVyhkZXYpKQogCQlyZXR1cm4gVkxWX1ZHQUNOVFJMOwogCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCiAJCXJldHVybiBDUFVfVkdBQ05UUkw7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwppbmRleCBkZmFmMjViLi5lOTZlNDk2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKQEAgLTQ4MzgsNyArNDgzOCw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKIAkJLyogVkxWQTAgKHBvdGVudGlhbCBoYWNrKSwgQklPUyBpc24ndCBh Y3R1YWxseSB3YWtpbmcgdXMgKi8KIAkJSTkxNV9XUklURShWTFZfR1RMQ19XQUtFX0NUUkwsIFZM Vl9HVExDX0FMTE9XV0FLRVJFUSk7CiAJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZMVl9HVExD X1BXX1NUQVRVUykgJgpAQCAtNDk2Myw3ICs0OTYzLDcgQEAgaTkxNV9nZW1fbG9hZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCiAJZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlID0g STkxNV9FWEVDX0NPTlNUQU5UU19SRUxfR0VORVJBTDsKIAotCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDcgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKQog CQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPSAzMjsKIAllbHNlIGlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA0IHx8IElTX0k5NDVHKGRldikgfHwgSVNfSTk0NUdNKGRldikgfHwgSVNfRzMz KGRldikpCiAJCWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9IDE2OwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDQzNzYxYzUuLjRiMTE2MWQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTE5MCw3ICsxOTAsNyBAQCBpOTE1X2dl bV9hbGxvY19jb250ZXh0X29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkK IAkgKiB3b3VsZCBtYWtlIHRoZSBvYmplY3Qgc25vb3BlZCB3aGljaCBtaWdodCBoYXZlIGEKIAkg KiBuZWdhdGl2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuCiAJICovCi0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDcgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2 KSkgewogCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkxNV9D QUNIRV9MM19MTEMpOwogCQkvKiBGYWlsdXJlIHNob3VsZG4ndCBldmVyIGhhcHBlbiB0aGlzIGVh cmx5ICovCiAJCWlmIChXQVJOX09OKHJldCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4 IGU4OGQ2OTIuLjIzYTBhYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtNTgxLDcgKzU4 MSw3IEBAIGk5MTVfZW5hYmxlX3BpcGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUsCiB7CiAJdTMyIGVuYWJsZV9tYXNrOwogCi0JaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYtPmRldikpCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdi0+ZGV2KSkKIAkJZW5hYmxlX21hc2sgPSB2bHZf Z2V0X3BpcGVzdGF0X2VuYWJsZV9tYXNrKGRldl9wcml2LT5kZXYsCiAJCQkJCQkJICAgc3RhdHVz X21hc2spOwogCWVsc2UKQEAgLTU5NSw3ICs1OTUsNyBAQCBpOTE1X2Rpc2FibGVfcGlwZXN0YXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKIHsKIAl1 MzIgZW5hYmxlX21hc2s7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKKwlp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2 LT5kZXYpKQogCQllbmFibGVfbWFzayA9IHZsdl9nZXRfcGlwZXN0YXRfZW5hYmxlX21hc2soZGV2 X3ByaXYtPmRldiwKIAkJCQkJCQkgICBzdGF0dXNfbWFzayk7CiAJZWxzZQpAQCAtMTcyMyw3ICsx NzIzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkgKi8KIAlQT1NUSU5HX1JFQUQoUE9SVF9IT1RQTFVHX1NUQVQpOwogCi0JaWYg KElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19HNFgoZGV2KSB8 fCBJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7CiAJCXUzMiBob3Rw bHVnX3RyaWdnZXIgPSBob3RwbHVnX3N0YXR1cyAmIEhPVFBMVUdfSU5UX1NUQVRVU19HNFg7CiAK IAkJaWYgKGhvdHBsdWdfdHJpZ2dlcikgewpAQCAtNDQxMiw3ICs0NDEyLDcgQEAgdm9pZCBpbnRl bF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJSU5JVF9XT1JL KCZkZXZfcHJpdi0+bDNfcGFyaXR5LmVycm9yX3dvcmssIGl2eWJyaWRnZV9wYXJpdHlfd29yayk7 CiAKIAkvKiBMZXQncyB0cmFjayB0aGUgZW5hYmxlZCBycHMgZXZlbnRzICovCi0JaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkKKwlpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdikpCiAJCS8qIFdhR3N2UkMwUmVzaWRlbmN5TWV0aG9kOnZsdiAq LwogCQlkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyA9IEdFTjZfUE1fUlBfRE9XTl9FSV9FWFBJUkVE IHwgR0VONl9QTV9SUF9VUF9FSV9FWFBJUkVEOwogCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z dXNwZW5kLmMKaW5kZXggMmQ5MTgyMS4uYTJhYTA5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z dXNwZW5kLmMKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9zYXZlX2Rpc3BsYXko c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RF TEFZUyA9IEk5MTVfUkVBRChQQ0hfUFBfT05fREVMQVlTKTsKIAkJZGV2X3ByaXYtPnJlZ2ZpbGUu c2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09GRl9ERUxBWVMpOwogCQlkZXZf cHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUiA9IEk5MTVfUkVBRChQQ0hfUFBfRElWSVNPUik7 Ci0JfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJfSBlbHNlIGlmICghSVNfVkFM TEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKIAkJZGV2X3ByaXYtPnJlZ2Zp bGUuc2F2ZVBQX0NPTlRST0wgPSBJOTE1X1JFQUQoUFBfQ09OVFJPTCk7CiAJCWRldl9wcml2LT5y ZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT05fREVMQVlTKTsKIAkJZGV2 X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT0ZGX0RFTEFZ Uyk7CkBAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCUk5MTVfV1JJVEUoUENIX1BQX09GRl9ERUxBWVMsIGRl dl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsKIAkJSTkxNV9XUklURShQQ0hfUFBf RElWSVNPUiwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IpOwogCQlJOTE1X1dSSVRF KFBDSF9QUF9DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09OVFJPTCk7Ci0JfSBl bHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJfSBlbHNlIGlmICghSVNfVkFMTEVZVklF VyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKIAkJSTkxNV9XUklURShQUF9PTl9ERUxB WVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMpOwogCQlJOTE1X1dSSVRFKFBQ X09GRl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsKIAkJSTkx NV9XUklURShQUF9ESVZJU09SLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKaW5kZXggZjkyOWM2MS4uODZjMzAyMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3lzZnMuYwpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdTMyIGNhbGNfcmVz aWRlbmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwogCiAJLyogT24gVkxWIGFuZCBDSFYsIHJlc2lkZW5jeSB0aW1lIGlzIGluIENaIHVu aXRzIHJhdGhlciB0aGFuIDEuMjh1cyAqLwotCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQl1bml0cyA9 IDE7CiAJCWRpdiA9IGRldl9wcml2LT5jemNsa19mcmVxOwogCkBAIC0yODQsNyArMjg0LDcgQEAg c3RhdGljIHNzaXplX3QgZ3RfYWN0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2RldiwK IAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOwotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKSB7CisJ aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp di0+ZGV2KSkgewogCQl1MzIgZnJlcTsKIAkJZnJlcSA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2 LCBQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTKTsKIAkJcmV0ID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3By aXYsIChmcmVxID4+IDgpICYgMHhmZik7CkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBpOTE1X3Nl dHVwX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWlmIChyZXQpCiAJCQlEUk1fRVJS T1IoIlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7CiAJfQotCWlmIChJU19W QUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkgewogCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgmZGV2LT5wcmltYXJ5LT5rZGV2 LT5rb2JqLAogCQkJCQkmbWVkaWFfcmM2X2F0dHJfZ3JvdXApOwogCQlpZiAocmV0KQpAQCAtNjE5 LDcgKzYxOSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCX0KIAogCXJldCA9IDA7Ci0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJcmV0ID0gc3lzZnNfY3JlYXRl X2ZpbGVzKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7CiAJZWxzZSBpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKIAkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVzKCZk ZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIGdlbjZfYXR0cnMpOwpAQCAtNjM1LDcgKzYzNSw3IEBA IHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogdm9pZCBpOTE1 X3RlYXJkb3duX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3lzZnNfcmVtb3Zl X2Jpbl9maWxlKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosICZlcnJvcl9zdGF0ZV9hdHRyKTsK LQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKQogCQlzeXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rl di0+a29iaiwgdmx2X2F0dHJzKTsKIAllbHNlCiAJCXN5c2ZzX3JlbW92ZV9maWxlcygmZGV2LT5w cmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRp by5jCmluZGV4IDlhYTgzZTcuLjA2ZmZmYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F1ZGlvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8u YwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19kaXNhYmxl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCWlmIChIQVNfUENIX0lCWChkZXZfcHJp di0+ZGV2KSkgewogCQlhdWRfY29uZmlnID0gSUJYX0FVRF9DRkcocGlwZSk7CiAJCWF1ZF9jbnRy bF9zdDIgPSBJQlhfQVVEX0NOVExfU1QyOwotCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikpIHsKKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKSB7CiAJCWF1ZF9jb25maWcgPSBWTFZfQVVEX0NGRyhwaXBlKTsKIAkJ YXVkX2NudHJsX3N0MiA9IFZMVl9BVURfQ05UTF9TVDI7CiAJfSBlbHNlIHsKQEAgLTQzNSw3ICs0 MzUsOCBAQCBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCiAJCWF1ZF9jb25maWcgPSBJQlhfQVVEX0NGRyhwaXBlKTsKIAkJ YXVkX2NudGxfc3QgPSBJQlhfQVVEX0NOVExfU1QocGlwZSk7CiAJCWF1ZF9jbnRybF9zdDIgPSBJ QlhfQVVEX0NOVExfU1QyOwotCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhjb25uZWN0b3ItPmRl dikpIHsKKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoY29ubmVjdG9yLT5kZXYpIHx8CisJCSAg IElTX0NIRVJSWVZJRVcoY29ubmVjdG9yLT5kZXYpKSB7CiAJCWhkbWl3X2hkbWllZGlkID0gVkxW X0hETUlXX0hETUlFRElEKHBpcGUpOwogCQlhdWRfY29uZmlnID0gVkxWX0FVRF9DRkcocGlwZSk7 CiAJCWF1ZF9jbnRsX3N0ID0gVkxWX0FVRF9DTlRMX1NUKHBpcGUpOwpAQCAtNTU5LDcgKzU2MCw3 IEBAIHZvaWQgaW50ZWxfaW5pdF9hdWRpbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWlmIChJ U19HNFgoZGV2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19lbmFibGUgPSBn NHhfYXVkaW9fY29kZWNfZW5hYmxlOwogCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19k aXNhYmxlID0gZzR4X2F1ZGlvX2NvZGVjX2Rpc2FibGU7Ci0JfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5hYmxlID0gaWxr X2F1ZGlvX2NvZGVjX2VuYWJsZTsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlz YWJsZSA9IGlsa19hdWRpb19jb2RlY19kaXNhYmxlOwogCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChk ZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwppbmRleCBiNTlhMmQ4Li5kM2I2NDNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0xODcsNyArMTg3LDcgQEAgaW50IGludGVsX2hyYXdjbGsoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAl1aW50MzJfdCBjbGtjZmc7CiAKIAkvKiBUaGVyZSBpcyBubyBD TEtDRkcgcmVnIGluIFZhbGxleXZpZXcuIFZMViBocmF3Y2xrIGlzIDIwMCBNSHogKi8KLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQorCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZ VklFVyhkZXYpKQogCQlyZXR1cm4gMjAwOwogCiAJY2xrY2ZnID0gSTkxNV9SRUFEKENMS0NGRyk7 CkBAIC0yMTUsNyArMjE1LDcgQEAgaW50IGludGVsX2hyYXdjbGsoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAogc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2N6Y2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQorCWlm ICghKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSkK IAkJcmV0dXJuOwogCiAJZGV2X3ByaXYtPmN6Y2xrX2ZyZXEgPSB2bHZfZ2V0X2Nja19jbG9ja19o cGxsKGRldl9wcml2LCAiY3pjbGsiLApAQCAtNzE2LDExICs3MTYsMTIgQEAgc3RhdGljIGJvb2wg aW50ZWxfUExMX2lzX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKGNsb2NrLT5t MSAgPCBsaW1pdC0+bTEubWluICB8fCBsaW1pdC0+bTEubWF4ICA8IGNsb2NrLT5tMSkKIAkJSU5U RUxQbGxJbnZhbGlkKCJtMSBvdXQgb2YgcmFuZ2VcbiIpOwogCi0JaWYgKCFJU19QSU5FVklFVyhk ZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKKwlpZiAoIUlT X1BJTkVWSUVXKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgorCSAgICAhSVNfQ0hFUlJZ VklFVyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpCiAJCWlmIChjbG9jay0+bTEgPD0gY2xvY2st Pm0yKQogCQkJSU5URUxQbGxJbnZhbGlkKCJtMSA8PSBtMlxuIik7CiAKLQlpZiAoIUlTX1ZBTExF WVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7CisJaWYgKCFJU19WQUxMRVlWSUVXKGRl dikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7CiAJCWlmIChj bG9jay0+cCA8IGxpbWl0LT5wLm1pbiB8fCBsaW1pdC0+cC5tYXggPCBjbG9jay0+cCkKIAkJCUlO VEVMUGxsSW52YWxpZCgicCBvdXQgb2YgcmFuZ2VcbiIpOwogCQlpZiAoY2xvY2stPm0gPCBsaW1p dC0+bS5taW4gfHwgbGltaXQtPm0ubWF4IDwgY2xvY2stPm0pCkBAIC0xMzA1LDcgKzEzMDYsNyBA QCB2b2lkIGFzc2VydF9wYW5lbF91bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCSAgICBJOTE1X1JFQUQoUENIX0xWRFMpICYgTFZEU19QSVBFQl9TRUxFQ1QpCiAJ CQlwYW5lbF9waXBlID0gUElQRV9COwogCQkvKiBYWFg6IGVsc2UgZml4IGZvciBlRFAgKi8KLQl9 IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQkvKiBwcmVzdW1hYmx5IHdyaXRlIGxv Y2sgZGVwZW5kcyBvbiBwaXBlLCBub3QgcG9ydCBzZWxlY3QgKi8KIAkJcHBfcmVnID0gVkxWX1BJ UEVfUFBfQ09OVFJPTChwaXBlKTsKIAkJcGFuZWxfcGlwZSA9IHBpcGU7CkBAIC0xNDIzLDcgKzE0 MjQsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfc3ByaXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICJwbGFuZSAlZCBhc3NlcnRpb24gZmFpbHVy ZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCiAJCQkg ICAgIHNwcml0ZSwgcGlwZV9uYW1lKHBpcGUpKTsKIAkJfQotCX0gZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKSB7CisJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZ VklFVyhkZXYpKSB7CiAJCWZvcl9lYWNoX3Nwcml0ZShkZXZfcHJpdiwgcGlwZSwgc3ByaXRlKSB7 CiAJCQl1MzIgdmFsID0gSTkxNV9SRUFEKFNQQ05UUihwaXBlLCBzcHJpdGUpKTsKIAkJCUk5MTVf U1RBVEVfV0FSTih2YWwgJiBTUF9FTkFCTEUsCkBAIC0yMzE5LDcgKzIzMjAsNyBAQCBzdGF0aWMg dW5zaWduZWQgaW50IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCiAJCXJl dHVybiAyNTYgKiAxMDI0OwogCWVsc2UgaWYgKElTX0JST0FEV0FURVIoZGV2X3ByaXYpIHx8IElT X0NSRVNUTElORShkZXZfcHJpdikgfHwKLQkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQorCQkg SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCXJl dHVybiAxMjggKiAxMDI0OwogCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g NCkKIAkJcmV0dXJuIDQgKiAxMDI0OwpAQCAtNTQ1NSw3ICs1NDU2LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfdXBkYXRlX2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJICogQlNwZWMgZXJy b25lb3VzbHkgY2xhaW1zIHdlIHNob3VsZCBhaW0gZm9yIDRNSHosIGJ1dAogCSAqIGluIGZhY3Qg MU1IeiBpcyB0aGUgY29ycmVjdCBmcmVxdWVuY3kuCiAJICovCi0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgeworCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7 CiAJCS8qCiAJCSAqIFByb2dyYW0gdGhlIGdtYnVzX2ZyZXEgYmFzZWQgb24gdGhlIGNkY2xrIGZy ZXF1ZW5jeS4KIAkJICogQlNwZWMgZXJyb25lb3VzbHkgY2xhaW1zIHdlIHNob3VsZCBhaW0gZm9y IDRNSHosIGJ1dApAQCAtNzE4MCw3ICs3MTgxLDcgQEAgc3RhdGljIGludCBpOXh4X2dldF9yZWZj bGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAlXQVJOX09O KCFjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwg SVNfQlJPWFRPTihkZXYpKSB7CisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikgfHwgSVNfQlJPWFRPTihkZXYpKSB7CiAJCXJlZmNsayA9IDEwMDAwMDsKIAl9IGVs c2UgaWYgKGludGVsX3BpcGVfd2lsbF9oYXZlX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVU X0xWRFMpICYmCiAJICAgIGludGVsX3BhbmVsX3VzZV9zc2MoZGV2X3ByaXYpICYmIG51bV9jb25u ZWN0b3JzIDwgMikgewpAQCAtNzg3OSw3ICs3ODgwLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRf cGlwZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCiAJCXBpcGVjb25mIHw9IFBJ UEVDT05GX0RPVUJMRV9XSURFOwogCiAJLyogb25seSBnNHggYW5kIGxhdGVyIGhhdmUgZmFuY3kg YnBjL2RpdGhlciBjb250cm9scyAqLwotCWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVX KGRldikpIHsKKwlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgewogCQkvKiBCc3BlYyBjbGFpbXMgdGhhdCB3ZSBjYW4ndCB1c2UgZGl0 aGVyaW5nIGZvciAzMGJwcCBwaXBlcy4gKi8KIAkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ZGl0 aGVyICYmIGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHAgIT0gMzApCiAJCQlwaXBlY29uZiB8 PSBQSVBFQ09ORl9ESVRIRVJfRU4gfApAQCAtNzkxOSw3ICs3OTIwLDggQEAgc3RhdGljIHZvaWQg aTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCiAJfSBlbHNl CiAJCXBpcGVjb25mIHw9IFBJUEVDT05GX1BST0dSRVNTSVZFOwogCi0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSAmJiBpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCisJaWYg KChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgorCSAgICAgaW50 ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQogCQlwaXBlY29uZiB8PSBQSVBF Q09ORl9DT0xPUl9SQU5HRV9TRUxFQ1Q7CiAKIAlJOTE1X1dSSVRFKFBJUEVDT05GKGludGVsX2Ny dGMtPnBpcGUpLCBwaXBlY29uZik7CkBAIC04MTY2LDcgKzgxNjgsNyBAQCBzdGF0aWMgYm9vbCBp OXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlpZiAoISh0bXAg JiBQSVBFQ09ORl9FTkFCTEUpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoSVNfRzRYKGRldikg fHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJ RVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKIAkJc3dpdGNoICh0bXAgJiBQSVBFQ09O Rl9CUENfTUFTSykgewogCQljYXNlIFBJUEVDT05GXzZCUEM6CiAJCQlwaXBlX2NvbmZpZy0+cGlw ZV9icHAgPSAxODsKQEAgLTgxODIsNyArODE4NCw4IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3Bp cGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQl9CiAJfQogCi0JaWYgKElTX1ZB TExFWVZJRVcoZGV2KSAmJiAodG1wICYgUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkKKwlp ZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCisJICAgICh0 bXAgJiBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1QpKQogCQlwaXBlX2NvbmZpZy0+bGltaXRl ZF9jb2xvcl9yYW5nZSA9IHRydWU7CiAKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQpA QCAtODIxMCw3ICs4MjEzLDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJCXBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyID0g MTsKIAl9CiAJcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbCA9IEk5MTVfUkVBRChEUExM KGNydGMtPnBpcGUpKTsKLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmICghSVNfVkFM TEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKIAkJLyoKIAkJICogRFBMTF9E Vk9fMlhfTU9ERSBtdXN0IGJlIGVuYWJsZWQgZm9yIGJvdGggRFBMTHMKIAkJICogb24gODMwLiBG aWx0ZXIgaXQgb3V0IGhlcmUgc28gdGhhdCB3ZSBkb24ndApAQCAtMTE1MzcsNyArMTE1NDAsNyBA QCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSB8fCBJU19HNFgoZGV2KSkKIAkJd29yay0+ ZmxpcF9jb3VudCA9IEk5MTVfUkVBRChQSVBFX0ZMSVBDT1VOVF9HNFgocGlwZSkpICsgMTsKIAot CWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkgewogCQlyaW5nID0gJmRldl9wcml2LT5yaW5nW0JDU107CiAJCWlm IChvYmotPnRpbGluZ19tb2RlICE9IGludGVsX2ZiX29iaih3b3JrLT5vbGRfZmIpLT50aWxpbmdf bW9kZSkKIAkJCS8qIHZsdjogRElTUExBWV9GTElQIGZhaWxzIHRvIGNoYW5nZSB0aWxpbmcgKi8K QEAgLTEyMDE2LDcgKzEyMDE5LDcgQEAgY29tcHV0ZV9iYXNlbGluZV9waXBlX2JwcChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9y X3N0YXRlOwogCWludCBicHAsIGk7CiAKLQlpZiAoKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJ RVcoZGV2KSkpCisJaWYgKChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKSkKIAkJYnBwID0gMTAqMzsKIAllbHNlIGlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA1KQogCQlicHAgPSAxMiozOwpAQCAtMTI2MjYsNyArMTI2MjksNyBAQCBpbnRl bF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJUElQRV9DT05G X0NIRUNLX0kocGl4ZWxfbXVsdGlwbGllcik7CiAJUElQRV9DT05GX0NIRUNLX0koaGFzX2hkbWlf c2luayk7CiAJaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDggJiYgIUlTX0hBU1dFTEwoZGV2 KSkgfHwKLQkgICAgSVNfVkFMTEVZVklFVyhkZXYpKQorCSAgICBJU19WQUxMRVlWSUVXKGRldikg fHwgSVNfQ0hFUlJZVklFVyhkZXYpKQogCQlQSVBFX0NPTkZfQ0hFQ0tfSShsaW1pdGVkX2NvbG9y X3JhbmdlKTsKIAlQSVBFX0NPTkZfQ0hFQ0tfSShoYXNfaW5mb2ZyYW1lKTsKIApAQCAtMTQzNzgs NyArMTQzODEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAKIAkJaWYgKEk5MTVfUkVBRChQQ0hfRFBfRCkgJiBEUF9ERVRFQ1RFRCkK IAkJCWludGVsX2RwX2luaXQoZGV2LCBQQ0hfRFBfRCwgUE9SVF9EKTsKLQl9IGVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkgeworCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkgewogCQkvKgogCQkgKiBUaGUgRFBfREVURUNURUQgYml0IGlzIHRo ZSBsYXRjaGVkIHN0YXRlIG9mIHRoZSBEREMKIAkJICogU0RBIHBpbiBhdCBib290LiBIb3dldmVy IHNpbmNlIGVEUCBkb2Vzbid0IHJlcXVpcmUgRERDCkBAIC0xNDUyNyw3ICsxNDUzMCw3IEBAIHUz MiBpbnRlbF9mYl9waXRjaF9saW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50NjRfdCBm Yl9tb2RpZmllciwKIAkJICogIHBpeGVscyBhbmQgMzJLIGJ5dGVzLiIKIAkJICovCiAJCSByZXR1 cm4gbWluKDgxOTIqZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGl4ZWxfZm9ybWF0LCAwKSwgMzI3Njgp OwotCX0gZWxzZSBpZiAoZ2VuID49IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSkgeworCX0gZWxz ZSBpZiAoZ2VuID49IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhk ZXYpKSB7CiAJCXJldHVybiAzMioxMDI0OwogCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKIAkJaWYg KGZiX21vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQpAQCAtMTQ2MzEsNyArMTQ2 MzQsOCBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJfQogCQlicmVhazsKIAljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Ci0JCWlm ICghSVNfVkFMTEVZVklFVyhkZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkgeworCQlp ZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmCisJCSAgICBJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4 ZWwgZm9ybWF0OiAlc1xuIiwKIAkJCQkgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBp eGVsX2Zvcm1hdCkpOwogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNDY0Nyw3ICsxNDY1MSw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQl9CiAJCWJyZWFrOwogCWNhc2UgRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMDoKLQkJaWYgKCFJ U19WQUxMRVlWSUVXKGRldikpIHsKKwkJaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NI RVJSWVZJRVcoZGV2KSkgewogCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6 ICVzXG4iLAogCQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0 KSk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE0Nzc1LDcgKzE0Nzc5LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWRldl9wcml2 LT5kaXNwbGF5LmNydGNfZGlzYWJsZSA9IGlyb25sYWtlX2NydGNfZGlzYWJsZTsKIAkJZGV2X3By aXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUgPQogCQkJaXJvbmxha2VfdXBkYXRlX3By aW1hcnlfcGxhbmU7Ci0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwl9IGVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKIAkJZGV2X3By aXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0gaTl4eF9nZXRfcGlwZV9jb25maWc7CiAJCWRl dl9wcml2LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5lX2NvbmZpZyA9CiAJCQlpOXh4X2dldF9p bml0aWFsX3BsYW5lX2NvbmZpZzsKQEAgLTE0ODA4LDcgKzE0ODEyLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZWxzZSBpZiAoSVNf SEFTV0VMTChkZXYpKQogCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVl ZCA9CiAJCQloYXN3ZWxsX2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVkOwotCWVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2KSkKKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZ VklFVyhkZXYpKQogCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZCA9 CiAJCQl2YWxsZXl2aWV3X2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVkOwogCWVsc2UgaWYgKElTX0dF TjUoZGV2KSkKQEAgLTE0ODY2LDcgKzE0ODcwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9k aXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rl c2V0X2NhbGNfY2RjbGsgPQogCQkJCWJyb2Fkd2VsbF9tb2Rlc2V0X2NhbGNfY2RjbGs7CiAJCX0K LQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCX0gZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5t b2Rlc2V0X2NvbW1pdF9jZGNsayA9CiAJCQl2YWxsZXl2aWV3X21vZGVzZXRfY29tbWl0X2NkY2xr OwogCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQpAQCAtMTU2NDAsNyAr MTU2NDQsNyBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJCXBsbC0+b24gPSBmYWxzZTsKIAl9CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KQorCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQogCQl2bHZf d21fZ2V0X2h3X3N0YXRlKGRldik7CiAJZWxzZSBpZiAoSVNfR0VOOShkZXYpKQogCQlza2xfd21f Z2V0X2h3X3N0YXRlKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBmMzM1YzkyLi5l MzZmNzQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lk IHZsdl9wb3dlcl9zZXF1ZW5jZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2OwogCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyOwogCi0JaWYgKFdBUk5fT04oIUlTX1ZBTExFWVZJRVcoZGV2 KSkpCisJaWYgKFdBUk5fT04oIShJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKSkpCiAJCXJldHVybjsKIAogCS8qCkBAIC01ODIsNyArNTgyLDcgQEAgc3RhdGljIGludCBl ZHBfbm90aWZ5X2hhbmRsZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBs b25nIGNvZGUsCiAKIAlwcHNfbG9jayhpbnRlbF9kcCk7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKSB7CisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsK IAkJZW51bSBwaXBlIHBpcGUgPSB2bHZfcG93ZXJfc2VxdWVuY2VyX3BpcGUoaW50ZWxfZHApOwog CQlpOTE1X3JlZ190IHBwX2N0cmxfcmVnLCBwcF9kaXZfcmVnOwogCQl1MzIgcHBfZGl2OwpAQCAt NjEwLDcgKzYxMCw3IEBAIHN0YXRpYyBib29sIGVkcF9oYXZlX3BhbmVsX3Bvd2VyKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBz X211dGV4KTsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYKKwlpZiAoKElTX1ZBTExFWVZJ RVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCiAJICAgIGludGVsX2RwLT5wcHNfcGlw ZSA9PSBJTlZBTElEX1BJUEUpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtNjI0LDcgKzYyNCw3IEBA IHN0YXRpYyBib29sIGVkcF9oYXZlX3BhbmVsX3ZkZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7CiAKLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpICYmCisJaWYgKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hF UlJZVklFVyhkZXYpKSAmJgogCSAgICBpbnRlbF9kcC0+cHBzX3BpcGUgPT0gSU5WQUxJRF9QSVBF KQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTE3MjMsNyArMTcyMyw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJCUk5MTVfV1JJ VEUoVFJBTlNfRFBfQ1RMKGNydGMtPnBpcGUpLCB0cmFuc19kcCk7CiAJfSBlbHNlIHsKIAkJaWYg KCFIQVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgotCQkgICAgY3J0 Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQorCQkgICAgIUlTX0NIRVJSWVZJRVcoZGV2 KSAmJiBjcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCiAJCQlpbnRlbF9kcC0+RFAg fD0gRFBfQ09MT1JfUkFOR0VfMTZfMjM1OwogCiAJCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfUEhTWU5DKQpAQCAtMjQxOCw3ICsyNDE4LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlwaXBl X2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwogCiAJaWYgKCFIQVNf UENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgotCSAgICB0bXAgJiBEUF9D T0xPUl9SQU5HRV8xNl8yMzUpCisJICAgICFJU19DSEVSUllWSUVXKGRldikgJiYgdG1wICYgRFBf Q09MT1JfUkFOR0VfMTZfMjM1KQogCQlwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSA9 IHRydWU7CiAKIAlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29kZXIgPSB0cnVlOwpAQCAtMjY5NCw3 ICsyNjk0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQogCiAJcHBzX2xvY2soaW50ZWxfZHApOwogCi0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkK IAkJdmx2X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGludGVsX2RwKTsKIAogCS8qCkBAIC0y NzI4LDcgKzI3MjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCiAKIAlwcHNfdW5sb2NrKGludGVsX2RwKTsKIAotCWlmIChJU19W QUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkgewogCQl1bnNpZ25lZCBpbnQgbGFuZV9tYXNrID0gMHgwOwogCiAJCWlmIChJU19D SEVSUllWSUVXKGRldikpCkBAIC0zMjE4LDcgKzMyMTgsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21h eChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3 aW5nICYmIHBvcnQgPT0gUE9SVF9BKQogCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdf TEVWRUxfMzsKIAkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldikpCiAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H X0xFVkVMXzM7CiAJZWxzZSBpZiAoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKQogCQly ZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yOwpAQCAtMzI1OSw3ICszMjU5LDcg QEAgaW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1 aW50OF90IHZvbHRhZ2Vfc3dpbmcpCiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gRFBfVFJBSU5fUFJF X0VNUEhfTEVWRUxfMDsKIAkJfQotCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJ fSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7CiAJ CXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgewog CQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoKIAkJCXJldHVybiBEUF9UUkFJ Tl9QUkVfRU1QSF9MRVZFTF8zOwpAQCAtNDUzOSw3ICs0NTM5LDcgQEAgYm9vbCBpbnRlbF9kaWdp dGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ cmV0dXJuIGNwdF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKIAllbHNl IGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKIAkJcmV0dXJuIGJ4dF9kaWdpdGFsX3BvcnRfY29u bmVjdGVkKGRldl9wcml2LCBwb3J0KTsKLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSkKKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRl dl9wcml2KSkKIAkJcmV0dXJuIHZsdl9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBw b3J0KTsKIAllbHNlCiAJCXJldHVybiBnNHhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJp diwgcG9ydCk7CkBAIC00OTMzLDcgKzQ5MzMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9lbmNv ZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkgKiBSZWFkIG91dCB0aGUg Y3VycmVudCBwb3dlciBzZXF1ZW5jZXIgYXNzaWdubWVudCwKIAkgKiBpbiBjYXNlIHRoZSBCSU9T IGRpZCBzb21ldGhpbmcgd2l0aCBpdC4KIAkgKi8KLQlpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVy LT5kZXYpKQorCWlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmRldikgfHwgSVNfQ0hFUlJZVklF VyhlbmNvZGVyLT5kZXYpKQogCQl2bHZfaW5pdGlhbF9wb3dlcl9zZXF1ZW5jZXJfc2V0dXAoaW50 ZWxfZHApOwogCiAJaW50ZWxfZWRwX3BhbmVsX3ZkZF9zYW5pdGl6ZShpbnRlbF9kcCk7CkBAIC01 MjkzLDcgKzUyOTMsNyBAQCBpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdp c3RlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCS8qIEhhc3dlbGwgZG9lc24ndCBoYXZl IGFueSBwb3J0IHNlbGVjdGlvbiBiaXRzIGZvciB0aGUgcGFuZWwKIAkgKiBwb3dlciBzZXF1ZW5j ZXIgYW55IG1vcmUuICovCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7CiAJCXBvcnRfc2VsID0gUEFORUxf UE9SVF9TRUxFQ1RfVkxWKHBvcnQpOwogCX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2KSB8fCBI QVNfUENIX0NQVChkZXYpKSB7CiAJCWlmIChwb3J0ID09IFBPUlRfQSkKQEAgLTU0MDUsMTIgKzU0 MDUsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IHJlZnJlc2hfcmF0ZSkKIAogCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsK IAkJaWYgKGluZGV4ID4gRFJSU19ISUdIX1JSKSB7Ci0JCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KQorCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCiAJCQkJ dmFsIHw9IFBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSF9WTFY7CiAJCQllbHNlCiAJCQkJdmFs IHw9IFBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSDsKIAkJfSBlbHNlIHsKLQkJCWlmIChJU19W QUxMRVlWSUVXKGRldikpCisJCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKIAkJCQl2YWwgJj0gflBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSF9WTFY7CiAJ CQllbHNlCiAJCQkJdmFsICY9IH5QSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0g7CkBAIC01Nzc3 LDcgKzU3NzcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKIAl9CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmln Lm11dGV4KTsKIAotCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQlpbnRlbF9kcC0+ZWRwX25vdGlmaWVy Lm5vdGlmaWVyX2NhbGwgPSBlZHBfbm90aWZ5X2hhbmRsZXI7CiAJCXJlZ2lzdGVyX3JlYm9vdF9u b3RpZmllcigmaW50ZWxfZHAtPmVkcF9ub3RpZmllcik7CiAKQEAgLTU4MjUsNyArNTgyNSw3IEBA IGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAogCS8qIGludGVsX2RwIHZmdW5jcyAqLwogCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA5KQogCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gc2tsX2dldF9h dXhfY2xvY2tfZGl2aWRlcjsKLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCisJZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJaW50ZWxfZHAt PmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IHZsdl9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7CiAJZWxz ZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQogCQlpbnRlbF9kcC0+ Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gaHN3X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKQEAgLTU4 NjAsOCArNTg2MCw4IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAogCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxf T1VUUFVUX0VEUDsKIAogCS8qIGVEUCBvbmx5IG9uIHBvcnQgQiBhbmQvb3IgQyBvbiB2bHYvY2h2 ICovCi0JaWYgKFdBUk5fT04oSVNfVkFMTEVZVklFVyhkZXYpICYmIGlzX2VkcChpbnRlbF9kcCkg JiYKLQkJICAgIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQgIT0gUE9SVF9DKSkKKwlpZiAoV0FSTl9P TigoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgJiYKKwkJICAgIGlz X2VkcChpbnRlbF9kcCkgJiYgcG9ydCAhPSBQT1JUX0IgJiYgcG9ydCAhPSBQT1JUX0MpKQogCQly ZXR1cm4gZmFsc2U7CiAKIAlEUk1fREVCVUdfS01TKCJBZGRpbmcgJXMgY29ubmVjdG9yIG9uIHBv cnQgJWNcbiIsCkBAIC01OTEyLDcgKzU5MTIsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcihz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAlpZiAoaXNfZWRwKGlu dGVsX2RwKSkgewogCQlwcHNfbG9jayhpbnRlbF9kcCk7CiAJCWludGVsX2RwX2luaXRfcGFuZWxf cG93ZXJfdGltZXN0YW1wcyhpbnRlbF9kcCk7Ci0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJ CWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQogCQkJdmx2X2lu aXRpYWxfcG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2RwKTsKIAkJZWxzZQogCQkJaW50ZWxf ZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoZGV2LCBpbnRlbF9kcCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RzaS5jCmluZGV4IDIzMDk1N2YuLmNhZGE3MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaS5jCkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2RldmljZV9y ZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQor CWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQogCQl2bHZfZHNp X2RldmljZV9yZWFkeShlbmNvZGVyKTsKIAllbHNlIGlmIChJU19CUk9YVE9OKGRldikpCiAJCWJ4 dF9kc2lfZGV2aWNlX3JlYWR5KGVuY29kZXIpOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQog CiAJbXNsZWVwKGludGVsX2RzaS0+cGFuZWxfb25fZGVsYXkpOwogCi0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkgeworCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYp KSB7CiAJCS8qCiAJCSAqIERpc2FibGUgRFBPdW5pdCBjbG9jayBnYXRpbmcsIGNhbiBzdGFsbCBw aXBlCiAJCSAqIGFuZCB3ZSBuZWVkIERQTEwgUkVGQSBhbHdheXMgZW5hYmxlZApAQCAtNjg0LDgg KzY4NCw3IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCiAJCSAqIEVuYWJsZSBiaXQgZG9lcyBub3QgZ2V0IHNldC4gVG8g Y2hlY2sgd2hldGhlciBEU0kgUG9ydCBDCiAJCSAqIHdhcyBlbmFibGVkIGluIEJJT1MsIGNoZWNr IHRoZSBQaXBlIEIgZW5hYmxlIGJpdAogCQkgKi8KLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAm JiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmCi0JCSAgICAocG9ydCA9PSBQT1JUX0MpKQorCQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpICYmIChwb3J0ID09IFBPUlRfQykpCiAJCQlkcGlfZW5hYmxlZCA9 IEk5MTVfUkVBRChQSVBFQ09ORihQSVBFX0IpKSAmCiAJCQkJCQkJUElQRUNPTkZfRU5BQkxFOwog CkBAIC03MTYsNyArNzE1LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAlpZiAoSVNfQlJPWFRPTihlbmNvZGVyLT5i YXNlLmRldikpCiAJCXBjbGsgPSBieHRfZ2V0X2RzaV9wY2xrKGVuY29kZXIsIHBpcGVfY29uZmln LT5waXBlX2JwcCk7Ci0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVyLT5iYXNlLmRldikp CisJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVyLT5iYXNlLmRldikgfHwKKwkJIElTX0NI RVJSWVZJRVcoZW5jb2Rlci0+YmFzZS5kZXYpKQogCQlwY2xrID0gdmx2X2dldF9kc2lfcGNsayhl bmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwogCiAJaWYgKCFwY2xrKQpAQCAtODY5LDcg Kzg2OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyKQogCX0KIAogCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVs X2RzaS0+cG9ydHMpIHsKLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCQlpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQkJLyoKIAkJCSAqIGVzY2Fw ZSBjbG9jayBkaXZpZGVyLCAyME1Ieiwgc2hhcmVkIGZvciBBIGFuZCBDLgogCQkJICogZGV2aWNl IHJlYWR5IG11c3QgYmUgb2ZmIHdoZW4gZG9pbmcgdGhpcyEgdHhjbGtlc2M/CkBAIC0xMTI5LDcg KzExMjksNyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ aWYgKCFkZXZfcHJpdi0+dmJ0Lmhhc19taXBpKQogCQlyZXR1cm47CiAKLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKSB7CisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpIHsKIAkJZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlID0gVkxWX01JUElfQkFTRTsKIAl9IGVs c2UgewogCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIE1pcGkgZGV2aWNlIHRvIHJlZyBiYXNlIik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKaW5kZXggY2IzY2YzOS4uZmJkMmI1MSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwpAQCAtNTYxLDcgKzU2MSw3IEBAIHZv aWQgaW50ZWxfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwogCi0JaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKIAkJdmx2X2VuYWJsZV9kc2lfcGxsKGVuY29kZXIpOwogCWVsc2UgaWYgKElTX0JS T1hUT04oZGV2KSkKIAkJYnh0X2VuYWJsZV9kc2lfcGxsKGVuY29kZXIpOwpAQCAtNTcxLDcgKzU3 MSw3IEBAIHZvaWQgaW50ZWxfZGlzYWJsZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsK IAotCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJ U19DSEVSUllWSUVXKGRldikpCiAJCXZsdl9kaXNhYmxlX2RzaV9wbGwoZW5jb2Rlcik7CiAJZWxz ZSBpZiAoSVNfQlJPWFRPTihkZXYpKQogCQlieHRfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwpA QCAtNTk5LDYgKzU5OSw2IEBAIHZvaWQgaW50ZWxfZHNpX3Jlc2V0X2Nsb2NrcyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwgZW51bSBwb3J0IHBvcnQpCiAKIAlpZiAoSVNfQlJPWFRPTihk ZXYpKQogCQlieHRfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNvZGVyLCBwb3J0KTsKLQllbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpCisJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkKIAkJdmx2X2RzaV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKaW5kZXggYzM5NzhiYS4uYmU3ZmFiOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkbWkuYwpAQCAtNjM4LDcgKzYzOCw3IEBAIHN0YXRpYyBib29sIGlu dGVsX2hkbWlfc2V0X2djcF9pbmZvZnJhbWUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQog CiAJaWYgKEhBU19EREkoZGV2X3ByaXYpKQogCQlyZWcgPSBIU1dfVFZJREVPX0RJUF9HQ1AoY3J0 Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2Rlcik7Ci0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikpCisJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklF VyhkZXZfcHJpdikpCiAJCXJlZyA9IFZMVl9UVklERU9fRElQX0dDUChjcnRjLT5waXBlKTsKIAll bHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2LT5kZXYpKQogCQlyZWcgPSBUVklERU9fRElQ X0dDUChjcnRjLT5waXBlKTsKQEAgLTIxMDAsNyArMjEwMCw3IEBAIHZvaWQgaW50ZWxfaGRtaV9p bml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwK IAkJQlVHKCk7CiAJfQogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7CiAJCWludGVsX2hkbWktPndyaXRl X2luZm9mcmFtZSA9IHZsdl93cml0ZV9pbmZvZnJhbWU7CiAJCWludGVsX2hkbWktPnNldF9pbmZv ZnJhbWVzID0gdmx2X3NldF9pbmZvZnJhbWVzOwogCQlpbnRlbF9oZG1pLT5pbmZvZnJhbWVfZW5h YmxlZCA9IHZsdl9pbmZvZnJhbWVfZW5hYmxlZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hvdHBsdWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBs dWcuYwppbmRleCBiMTc3ODU3Li5hMjk0YTNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ob3RwbHVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90 cGx1Zy5jCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAqIGhvdHBsdWcgYml0cyBpdHNlbGYuIFNvIG9ubHkg V0FSTiBhYm91dCB1bmV4cGVjdGVkCiAJCQkgKiBpbnRlcnJ1cHRzIG9uIHNhbmVyIHBsYXRmb3Jt cy4KIAkJCSAqLwotCQkJV0FSTl9PTkNFKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUlT X1ZBTExFWVZJRVcoZGV2KSwKKwkJCVdBUk5fT05DRSghSEFTX0dNQ0hfRElTUExBWShkZXYpLAog CQkJCSAgIlJlY2VpdmVkIEhQRCBpbnRlcnJ1cHQgb24gcGluICVkIGFsdGhvdWdoIGRpc2FibGVk XG4iLCBpKTsKIAkJCWNvbnRpbnVlOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9pMmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCmluZGV4 IGUyNmUyMmEuLjI1MjU0YjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2kyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCkBAIC02MzYsNyAr NjM2LDcgQEAgaW50IGludGVsX3NldHVwX2dtYnVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ aWYgKEhBU19QQ0hfTk9QKGRldikpCiAJCXJldHVybiAwOwogCi0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKIAkJ ZGV2X3ByaXYtPmdwaW9fbW1pb19iYXNlID0gVkxWX0RJU1BMQVlfQkFTRTsKIAllbHNlIGlmICgh SEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikpCiAJCWRldl9wcml2LT5ncGlvX21taW9fYmFzZSA9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwppbmRleCBhZTgwOGI2Li43MjE4M2EwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKQEAgLTE3ODQsNyArMTc4NCw3IEBAIGludGVsX3Bh bmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwpCiAJCXBh bmVsLT5iYWNrbGlnaHQuc2V0ID0gcGNoX3NldF9iYWNrbGlnaHQ7CiAJCXBhbmVsLT5iYWNrbGln aHQuZ2V0ID0gcGNoX2dldF9iYWNrbGlnaHQ7CiAJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdt ID0gcGNoX2h6X3RvX3B3bTsKLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCX0g ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQlp ZiAoZGV2X3ByaXYtPnZidC5oYXNfbWlwaSkgewogCQkJcGFuZWwtPmJhY2tsaWdodC5zZXR1cCA9 IHB3bV9zZXR1cF9iYWNrbGlnaHQ7CiAJCQlwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZSA9IHB3bV9l bmFibGVfYmFja2xpZ2h0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggZWUwNWNlOC4uZmU1 NjE4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBp bnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBi b29sIGVuYWJsZSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKIAl1 MzIgdmFsOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7CiAJCUk5MTVfV1JJVEUoRldfQkxDX1NFTEZf VkxWLCBlbmFibGUgPyBGV19DU1BXUkRXTkVOIDogMCk7CiAJCVBPU1RJTkdfUkVBRChGV19CTENf U0VMRl9WTFYpOwogCQlkZXZfcHJpdi0+d20udmx2LmN4c3IgPSBlbmFibGU7CkBAIC00NDA1LDcg KzQ0MDUsNyBAQCB2b2lkIGdlbjZfcnBzX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKIAlpZiAoZGV2 X3ByaXYtPnJwcy5lbmFibGVkKSB7Ci0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWlmIChJ U19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQogCQkJdmx2X3NldF9ycHNf aWRsZShkZXZfcHJpdik7CiAJCWVsc2UKIAkJCWdlbjZfc2V0X3JwcyhkZXZfcHJpdi0+ZGV2LCBk ZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSk7CkBAIC00NDU4LDcgKzQ0NTgsNyBAQCB2b2lkIGdlbjZf cnBzX2Jvb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogdm9pZCBpbnRl bF9zZXRfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCkKIHsKLQlpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQorCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKQogCQl2YWxsZXl2aWV3X3NldF9ycHMoZGV2LCB2YWwpOwogCWVsc2UKIAkJZ2VuNl9zZXRf cnBzKGRldiwgdmFsKTsKQEAgLTQ1MDIsNyArNDUwMiw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZp ZXdfZGlzYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogc3RhdGljIHZvaWQgaW50 ZWxfcHJpbnRfcmM2X2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIG1vZGUpCiB7Ci0J aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKSB7CiAJCWlmIChtb2RlICYgKEdFTjdfUkNfQ1RMX1RPX01PREUgfCBH RU42X1JDX0NUTF9FSV9NT0RFKDEpKSkKIAkJCW1vZGUgPSBHRU42X1JDX0NUTF9SQzZfRU5BQkxF OwogCQllbHNlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCmluZGV4IGI2NjA5ZTYuLjE3NzhhN2Qg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCkBAIC0zMzIsOCArMzMyLDggQEAgc3RhdGljIGJv b2wgaW50ZWxfcHNyX21hdGNoX2NvbmRpdGlvbnMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICgoZGV2 X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rKSB8fAotCQkJCSAgICAoZGlnX3BvcnQtPnBvcnQgIT0g UE9SVF9BKSkpIHsKKwlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhk ZXYpICYmCisJICAgICgoZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rKSB8fCAoZGlnX3BvcnQt PnBvcnQgIT0gUE9SVF9BKSkpIHsKIAkJRFJNX0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWls ZWQ6IExpbmsgU3RhbmRieSByZXF1ZXN0ZWQvbmVlZGVkIGJ1dCBub3Qgc3VwcG9ydGVkIG9uIHRo aXMgcGxhdGZvcm1cbiIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtNjUwLDcgKzY1MCw3IEBA IHZvaWQgaW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkgKiBTaW5nbGUgZnJhbWUgdXBkYXRlIGlzIGFscmVhZHkgc3VwcG9ydGVkIG9uIEJEVysg YnV0IGl0IHJlcXVpcmVzCiAJICogbWFueSBXL0EgYW5kIGl0IGlzbid0IHJlYWxseSBuZWVkZWQu CiAJICovCi0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikpCisJaWYgKCFJU19WQUxMRVlWSUVXKGRl dikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkKIAkJcmV0dXJuOwogCiAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggMmI5 NmYzMy4uZjhiZjYyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTk1MSw3 ICs5NTEsNyBAQCBpbnQgaW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmICgoc2V0LT5mbGFncyAmIChJOTE1X1NFVF9DT0xPUktF WV9ERVNUSU5BVElPTiB8IEk5MTVfU0VUX0NPTE9SS0VZX1NPVVJDRSkpID09IChJOTE1X1NFVF9D T0xPUktFWV9ERVNUSU5BVElPTiB8IEk5MTVfU0VUX0NPTE9SS0VZX1NPVVJDRSkpCiAJCXJldHVy biAtRUlOVkFMOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJgorCWlmICgoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgJiYKIAkgICAgc2V0LT5mbGFncyAmIEk5 MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OKQogCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtMTA4 Niw3ICsxMDg2LDcgQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBl bnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQogCQkJaW50ZWxfcGxhbmUtPm1heF9kb3duc2NhbGUg PSAxOwogCQl9CiAKLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCQlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewogCQkJaW50ZWxfcGxhbmUtPnVwZGF0 ZV9wbGFuZSA9IHZsdl91cGRhdGVfcGxhbmU7CiAJCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFu ZSA9IHZsdl9kaXNhYmxlX3BsYW5lOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmlu ZGV4IGMyMzU4YmEuLmZjZjA0ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VuY29yZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCkBA IC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWQtPnZhbF9jbGVhciA9IF9NQVNLRURfQklUX0RJ U0FCTEUoRk9SQ0VXQUtFX0tFUk5FTCk7CiAJfQogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpKQorCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9w cml2KSkKIAkJZC0+cmVnX3Bvc3QgPSBGT1JDRVdBS0VfQUNLX1ZMVjsKIAllbHNlIGlmIChJU19H RU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSB8fCBJU19HRU44KGRldl9wcml2KSkK IAkJZC0+cmVnX3Bvc3QgPSBFQ09CVVM7CkBAIC0xMTQ4LDcgKzExNDgsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ CQkgICAgICAgRk9SQ0VXQUtFX0FDS19CTElUVEVSX0dFTjkpOwogCQlmd19kb21haW5faW5pdChk ZXZfcHJpdiwgRldfRE9NQUlOX0lEX01FRElBLAogCQkJICAgICAgIEZPUkNFV0FLRV9NRURJQV9H RU45LCBGT1JDRVdBS0VfQUNLX01FRElBX0dFTjkpOwotCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7CisJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklF VyhkZXYpKSB7CiAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPSBmd19k b21haW5zX2dldDsKIAkJaWYgKCFJU19DSEVSUllWSUVXKGRldikpCiAJCQlkZXZfcHJpdi0+dW5j b3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0KLS0gCjIuNi4zCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=