From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH] drm/i915: Add Baytrail PSR Support. Date: Wed, 29 Jan 2014 13:50:06 -0200 Message-ID: <1391010606-9206-1-git-send-email-rodrigo.vivi@gmail.com> References: <20140129145648.GE9454@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f178.google.com (mail-pd0-f178.google.com [209.85.192.178]) by gabe.freedesktop.org (Postfix) with ESMTP id 1D76DFCDC3 for ; Wed, 29 Jan 2014 07:50:12 -0800 (PST) Received: by mail-pd0-f178.google.com with SMTP id y13so1848678pdi.9 for ; Wed, 29 Jan 2014 07:50:11 -0800 (PST) In-Reply-To: <20140129145648.GE9454@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIFBTUiBTdXBwb3J0IHRvIEJheXRyYWlsLgoKQmF5dHJhaWwgY2Fubm90 IGVhc2lseSBkZXRlY3Qgc2NyZWVuIHVwZGF0ZXMgYW5kIGZvcmNlIFBTUiBleGl0LgpTbyB3ZSBp bmFjdGl2YXRlIGl0IG9uIHtidXN5X2lvY3RsLCBzd19maW5pc2ggYW5kIG1hcmtfYnVzeX0KYW5k IHVwZGF0ZSB0byBlbmFibGUgaXQgYmFjayBvbiBuZXh0IGRpc3BsYXkgbWFya19pZGxlLgoKdjI6 IEFsc28gaW5hY3RpdmF0ZSBQU1Igb24gY3Vyc29yIHVwZGF0ZS4KdjM6IEluYWN0aXZhdGUgUFNS IG9uIG1hcmtfYnVzeSwgZHNldF9kb21haW4gYW5kIHN3X2ZpbmlzaF9pb2N0bCwgYW5kCiAgICBl YXJseSBvbiBwYWdlIGZsaXAgYmVzaWRlcyBhdm9pZCBpbml0aWFsaXppbmcgaW5hY3RpdmUvYWN0 aXZlIGZsYWcKICAgIG1vcmUgdGhhbiBvbmNlLgp2NDogRml4IGlkZW50YXRpb24gaXNzdWVzLgp2 NTogUmViYXNlIGFuZCBhZGQgQmF5dHJhaWwgcGVyIHBpcGUgc3VwcG9ydCBhbHRob3VnaCBsZWF2 aW5nIFBJUEVfQgogICAgc3VwcG9ydCBkaXNhYmxlZCBieSBmb3Igbm93IHNpbmNlIGl0IGlzbid0 IHdvcmtpbmcgcHJvcGVybHkgeWV0Lgp2NjogUmVtb3ZpbmcgZm9yZ290dGVuIGNvbW1lbnQgYW5k IHVzZWxlc3MgY2xrZ2F0aW5nIGRlZmluaXRpb24uCnY3OiBSZW1vdmUgaW5hY3RpdmF0ZSBmcm9t IHNldF9kb21haW4uIENocmlzIHdhcm5lZCB0aGlzIHdhcyBzZW1hbnRpY2FseQogICAgd3Jvbmcu CnY4OiBBY2NlcHQgVmlsbGUncyBzdWdnZXN0aW9uczogVXNlIHJlZ2lzdGVyJ3MgbmFtZXMgbWF0 Y2hpbmcgc3BlYyBhbmQKICAgIHdhcm4gaWYgdHJhbnNpdGlvbiB0b29rIGxvbmdlciB0aGFuIGl0 IHNob3VsZC4KCkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6 IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgfCAgMzYgKysrKysrLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jICAgICAgfCAgIDYgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg ICAgICB8ICAzNyArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg fCAgMTQgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgfCAyMDQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICB8ICAgMSArCiA3IGZpbGVzIGNoYW5nZWQsIDI2NSBpbnNlcnRpb25zKCsp LCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGJj ODcwN2YuLjI5NDljNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xOTAw LDYgKzE5MDAsOCBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5v ci0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CiAJdTMyIHBzcnBlcmYgPSAwOworCXUzMiBzdGF0QSA9IDA7CisJdTMyIHN0YXRCID0g MDsKIAlib29sIGVuYWJsZWQgPSBmYWxzZTsKIAogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKQEAgLTE5MDcsMTQgKzE5MDksMzggQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3Rh dHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlzZXFfcHJpbnRmKG0sICJTaW5r X1N1cHBvcnQ6ICVzXG4iLCB5ZXNubyhkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkpOwogCXNl cV9wcmludGYobSwgIlNvdXJjZV9PSzogJXNcbiIsIHllc25vKGRldl9wcml2LT5wc3Iuc291cmNl X29rKSk7CiAKLQllbmFibGVkID0gSEFTX1BTUihkZXYpICYmCi0JCUk5MTVfUkVBRChFRFBfUFNS X0NUTChkZXYpKSAmIEVEUF9QU1JfRU5BQkxFOwotCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVz XG4iLCB5ZXNubyhlbmFibGVkKSk7CisJaWYgKEhBU19QU1IoZGV2KSkgeworCQlpZiAoSVNfVkFM TEVZVklFVyhkZXYpKSB7CisJCQlzdGF0QSA9IEk5MTVfUkVBRChWTFZfUFNSU1RBVChQSVBFX0Ep KSAmCisJCQkJVkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOworCQkJc3RhdEIgPSBJOTE1X1JF QUQoVkxWX1BTUlNUQVQoUElQRV9CKSkgJgorCQkJCVZMVl9FRFBfUFNSX0NVUlJfU1RBVEVfTUFT SzsKKwkJCWVuYWJsZWQgPSAoKHN0YXRBID09IFZMVl9FRFBfUFNSX0FDVElWRV9OT1JGQl9VUCkg fHwKKwkJCQkgICAoc3RhdEEgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURSkgfHwKKwkJ CQkgICAoc3RhdEIgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAorCQkJCSAgIChz dGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBEQVRFKSk7CisJCX0gZWxzZQorCQkJZW5h YmxlZCA9IEk5MTVfUkVBRChFRFBfUFNSX0NUTChkZXYpKSAmIEVEUF9QU1JfRU5BQkxFOworCX0K KwlzZXFfcHJpbnRmKG0sICJFbmFibGVkOiAlcyIsIHllc25vKGVuYWJsZWQpKTsKIAotCWlmIChI QVNfUFNSKGRldikpCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCQlpZiAoKHN0YXRBID09 IFZMVl9FRFBfUFNSX0FDVElWRV9OT1JGQl9VUCkgfHwKKwkJICAgIChzdGF0QSA9PSBWTFZfRURQ X1BTUl9BQ1RJVkVfU0ZfVVBEQVRFKSkKKwkJCXNlcV9wdXRzKG0sICIgcGlwZSBBIik7CisJCWlm ICgoc3RhdEIgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAorCQkgICAgKHN0YXRC ID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKQorCQkJc2VxX3B1dHMobSwgIiBwaXBl IEIiKTsKKwl9CisKKwlzZXFfcHV0cyhtLCAiXG4iKTsKKworCS8qIFZMViBQU1IgaGFzIG5vIGtp bmQgb2YgcGVyZm9ybWFuY2UgY291bnRlciAqLworCWlmIChIQVNfUFNSKGRldikgJiYgIUlTX1ZB TExFWVZJRVcoZGV2KSkgewogCQlwc3JwZXJmID0gSTkxNV9SRUFEKEVEUF9QU1JfUEVSRl9DTlQo ZGV2KSkgJgogCQkJRURQX1BTUl9QRVJGX0NOVF9NQVNLOwotCXNlcV9wcmludGYobSwgIlBlcmZv cm1hbmNlX0NvdW50ZXI6ICV1XG4iLCBwc3JwZXJmKTsKKwkJc2VxX3ByaW50ZihtLCAiUGVyZm9y bWFuY2VfQ291bnRlcjogJXVcbiIsIHBzcnBlcmYpOworCX0KIAogCWludGVsX3J1bnRpbWVfcG1f cHV0KGRldl9wcml2KTsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDdj NTNkNGQuLjM0ZGVlMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNzQ3LDYgKzc0Nyw3 IEBAIHN0cnVjdCBpOTE1X3BzciB7CiAJYm9vbCBzaW5rX3N1cHBvcnQ7CiAJYm9vbCBzb3VyY2Vf b2s7CiAJYm9vbCBzZXR1cF9kb25lOworCWJvb2wgYWN0aXZlOwogfTsKIAogZW51bSBpbnRlbF9w Y2ggewpAQCAtMTg2Niw3ICsxODY3LDggQEAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSB7 CiAKICNkZWZpbmUgSEFTX0RESShkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5oYXNfZGRpKQogI2Rl ZmluZSBIQVNfRlBHQV9EQkdfVU5DTEFJTUVEKGRldikJKElOVEVMX0lORk8oZGV2KS0+aGFzX2Zw Z2FfZGJnKQotI2RlZmluZSBIQVNfUFNSKGRldikJCShJU19IQVNXRUxMKGRldikgfHwgSVNfQlJP QURXRUxMKGRldikpCisjZGVmaW5lIEhBU19QU1IoZGV2KQkJKElTX0hBU1dFTEwoZGV2KSB8fCBJ U19CUk9BRFdFTEwoZGV2KSB8fCBcCisJCQkJIElTX1ZBTExFWVZJRVcoZGV2KSkKICNkZWZpbmUg SEFTX1BDOChkZXYpCQkoSVNfSEFTV0VMTChkZXYpKSAvKiBYWFggSFNXOlVMWCAqLwogI2RlZmlu ZSBIQVNfUlVOVElNRV9QTShkZXYpCShJU19IQVNXRUxMKGRldikpCiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCmluZGV4IDM5NzcwZjcuLmIzZWVjM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpA QCAtMTI5OSw2ICsxMjk5LDkgQEAgaTkxNV9nZW1fc3dfZmluaXNoX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAorCWlm IChJU19WQUxMRVlWSUVXKGRldikpCisJCWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOwor CiAJb2JqID0gdG9faW50ZWxfYm8oZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZSwgYXJn cy0+aGFuZGxlKSk7CiAJaWYgKCZvYmotPmJhc2UgPT0gTlVMTCkgewogCQlyZXQgPSAtRU5PRU5U OwpAQCAtNDA1OSw2ICs0MDYyLDkgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoZGV2KTsKKwog CW9iaiA9IHRvX2ludGVsX2JvKGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGUsIGFyZ3Mt PmhhbmRsZSkpOwogCWlmICgmb2JqLT5iYXNlID09IE5VTEwpIHsKIAkJcmV0ID0gLUVOT0VOVDsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IGNiYmFmMjYuLmE1ODE1ZDAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaApAQCAtMTk2OCw2ICsxOTY4LDQzIEBACiAjZGVmaW5lIEJDTFJQQVQocGlw ZSkgX1BJUEUocGlwZSwgX0JDTFJQQVRfQSwgX0JDTFJQQVRfQikKICNkZWZpbmUgVlNZTkNTSElG VCh0cmFucykgX1RSQU5TQ09ERVIodHJhbnMsIF9WU1lOQ1NISUZUX0EsIF9WU1lOQ1NISUZUX0Ip CiAKKy8qIFZMViBlRFAgUFNSIHJlZ2lzdGVycyAqLworI2RlZmluZSBfUFNSQ1RMQQkJCQkoVkxW X0RJU1BMQVlfQkFTRSArIDB4NjAwOTApCisjZGVmaW5lIF9QU1JDVExCCQkJCShWTFZfRElTUExB WV9CQVNFICsgMHg2MTA5MCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0VOQUJMRQkJCSgxPDwwKQor I2RlZmluZSAgVkxWX0VEUF9QU1JfUkVTRVQJCQkoMTw8MSkKKyNkZWZpbmUgIFZMVl9FRFBfUFNS X01PREVfTUFTSwkJCSg3PDwyKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfTU9ERV9IV19USU1FUgkJ KDE8PDMpCisjZGVmaW5lICBWTFZfRURQX1BTUl9NT0RFX1NXX1RJTUVSCQkoMTw8MikKKyNkZWZp bmUgIFZMVl9FRFBfUFNSX1NJTkdMRV9GUkFNRV9VUERBVEUJKDE8PDcpCisjZGVmaW5lICBWTFZf RURQX1BTUl9BQ1RJVkVfRU5UUlkJCSgxPDw4KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfU1JDX1RS QU5TTUlUVEVSX1NUQVRFCSgxPDw5KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfREJMX0ZSQU1FCQkJ KDE8PDEwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfRlJBTUVfQ09VTlRfTUFTSwkJKDB4ZmY8PDE2 KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfSURMRV9GUkFNRV9TSElGVAkJMTYKKyNkZWZpbmUgIFZM Vl9FRFBfUFNSX0lOVF9UUkFOU0lUSU9OCQkoMTw8MjQpCisjZGVmaW5lIFZMVl9QU1JDVEwocGlw ZSkgX1BJUEUocGlwZSwgX1BTUkNUTEEsIF9QU1JDVExCKQorCisjZGVmaW5lIF9WU0NTRFBBCQkJ KFZMVl9ESVNQTEFZX0JBU0UgKyAweDYwMGEwKQorI2RlZmluZSBfVlNDU0RQQgkJCShWTFZfRElT UExBWV9CQVNFICsgMHg2MTBhMCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX1NEUF9GUkVRX01BU0sJ KDM8PDMwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfU0RQX0ZSRVFfT05DRQkoMTw8MzEpCisjZGVm aW5lICBWTFZfRURQX1BTUl9TRFBfRlJFUV9FVkZSQU1FCSgxPDwzMCkKKyNkZWZpbmUgVkxWX1ZT Q1NEUChwaXBlKQlfUElQRShwaXBlLCBfVlNDU0RQQSwgX1ZTQ1NEUEIpCisKKyNkZWZpbmUgX1BT UlNUQVRBCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYwMDk0KQorI2RlZmluZSBfUFNSU1RBVEIJ CQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjEwOTQpCisjZGVmaW5lICBWTFZfRURQX1BTUl9MQVNU X1NUQVRFX01BU0sJKDc8PDMpCisjZGVmaW5lICBWTFZfRURQX1BTUl9DVVJSX1NUQVRFX01BU0sJ NworI2RlZmluZSAgVkxWX0VEUF9QU1JfRElTQUJMRUQJCSgwPDwwKQorI2RlZmluZSAgVkxWX0VE UF9QU1JfSU5BQ1RJVkUJCSgxPDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfSU5fVFJBTlNfVE9f QUNUSVZFCSgyPDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQCSgzPDww KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURQkoNDw8MCkKKyNkZWZpbmUg IFZMVl9FRFBfUFNSX0VYSVQJCSg1PDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfSU5fVFJBTlMJ CSgxPDw3KQorI2RlZmluZSBWTFZfUFNSU1RBVChwaXBlKSBfUElQRShwaXBlLCBfUFNSU1RBVEEs IF9QU1JTVEFUQikKKwogLyogSFNXKyBlRFAgUFNSIHJlZ2lzdGVycyAqLwogI2RlZmluZSBFRFBf UFNSX0JBU0UoZGV2KSAgICAgICAgICAgICAgICAgICAgICAgKElTX0hBU1dFTEwoZGV2KSA/IDB4 NjQ4MDAgOiAweDZmODAwKQogI2RlZmluZSBFRFBfUFNSX0NUTChkZXYpCQkJKEVEUF9QU1JfQkFT RShkZXYpICsgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAxYTlhYTE5 Li5hMDhlM2NlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC03NTAxLDYg Kzc1MDEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCXUzMiBiYXNlID0gMCwgcG9zID0gMDsKIAlib29sIHZpc2libGU7CiAK KwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoZGV2 KTsKKwogCWlmIChvbikKIAkJYmFzZSA9IGludGVsX2NydGMtPmN1cnNvcl9hZGRyOwogCkBAIC04 MjI4LDE0ICs4MjMxLDIxIEBAIHZvaWQgaW50ZWxfbWFya19pZGxlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAKIAlpZiAoZGV2X3ByaXYtPmluZm8tPmdlbiA+PSA2KQogCQlnZW42X3Jwc19pZGxl KGRldi0+ZGV2X3ByaXZhdGUpOworCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJaW50ZWxf ZWRwX3Bzcl91cGRhdGUoZGV2KTsKIH0KIAorCiB2b2lkIGludGVsX21hcmtfZmJfYnVzeShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJc3RydWN0IGludGVsX3JpbmdfYnVmZmVy ICpyaW5nKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAorCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWludGVs X2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOworCiAJaWYgKCFpOTE1LnBvd2Vyc2F2ZSkKIAkJcmV0 dXJuOwogCkBAIC04Njg4LDYgKzg2OTgsMTAgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2Vf ZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYgKHdvcmsgPT0gTlVMTCkKIAkJcmV0dXJu IC1FTk9NRU07CiAKKwkvKiBJbmFjdGl2YXRlIFBTUiBlYXJseSBpbiBwYWdlIGZsaXAgKi8KKwlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoZGV2KTsK KwogCXdvcmstPmV2ZW50ID0gZXZlbnQ7CiAJd29yay0+Y3J0YyA9IGNydGM7CiAJd29yay0+b2xk X2ZiX29iaiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKG9sZF9mYiktPm9iajsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCmluZGV4IDMwZDQzNTAuLjVkYWUyYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YwpAQCAtMTU3OCwyMSArMTU3OCwzNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCX0KIH0KIAotc3RhdGljIGJvb2wgaXNf ZWRwX3BzcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIGJvb2wgaXNfZWRwX3Bzcihz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQoreworCXJldHVybiBpbnRlbF9kcC0+cHNyX2RwY2Rb MF0gJiBEUF9QU1JfSVNfU1VQUE9SVEVEOworfQorCitzdGF0aWMgYm9vbCB2bHZfZWRwX2lzX3Bz cl9lbmFibGVkX29uX3BpcGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1 aW50MzJfdCB2YWw7CiAKLQlyZXR1cm4gZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQ7CisJdmFs ID0gSTkxNV9SRUFEKFZMVl9QU1JTVEFUKHBpcGUpKSAmCisJCVZMVl9FRFBfUFNSX0NVUlJfU1RB VEVfTUFTSzsKKwlyZXR1cm4gKHZhbCA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8 CisJCSh2YWwgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURSk7CiB9CiAKIHN0YXRpYyBi b29sIGludGVsX2VkcF9pc19wc3JfZW5hYmxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAK LQlpZiAoIUhBU19QU1IoZGV2KSkKLQkJcmV0dXJuIGZhbHNlOworCWlmIChIQVNfUFNSKGRldikp IHsKKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJCXJldHVybiB2bHZfZWRwX2lzX3Bzcl9l bmFibGVkX29uX3BpcGUoZGV2LCBQSVBFX0EpIHx8CisJCQkJdmx2X2VkcF9pc19wc3JfZW5hYmxl ZF9vbl9waXBlKGRldiwgUElQRV9CKTsKKwkJZWxzZQorCQkJcmV0dXJuIEk5MTVfUkVBRChFRFBf UFNSX0NUTChkZXYpKSAmIEVEUF9QU1JfRU5BQkxFOworCX0KIAotCXJldHVybiBJOTE1X1JFQUQo RURQX1BTUl9DVEwoZGV2KSkgJiBFRFBfUFNSX0VOQUJMRTsKKwlyZXR1cm4gZmFsc2U7CiB9CiAK IHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3Jfd3JpdGVfdnNjKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCkBAIC0xNjI2LDI4ICsxNjQwLDQ5IEBAIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3Jf d3JpdGVfdnNjKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAKIHN0YXRpYyB2b2lkIGludGVs X2VkcF9wc3Jfc2V0dXAoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKKwlzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK IAlzdHJ1Y3QgZWRwX3ZzY19wc3IgcHNyX3ZzYzsKKwl1aW50MzJfdCB2YWw7CiAKIAlpZiAoZGV2 X3ByaXYtPnBzci5zZXR1cF9kb25lKQogCQlyZXR1cm47CiAKLQkvKiBQcmVwYXJlIFZTQyBwYWNr ZXQgYXMgcGVyIEVEUCAxLjMgc3BlYywgVGFibGUgMy4xMCAqLwotCW1lbXNldCgmcHNyX3ZzYywg MCwgc2l6ZW9mKHBzcl92c2MpKTsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIwID0gMDsKLQlwc3Jf dnNjLnNkcF9oZWFkZXIuSEIxID0gMHg3OwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjIgPSAweDI7 Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMyA9IDB4ODsKLQlpbnRlbF9lZHBfcHNyX3dyaXRlX3Zz YyhpbnRlbF9kcCwgJnBzcl92c2MpOworCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJdmFs ICA9IEk5MTVfUkVBRChWTFZfVlNDU0RQKFBJUEVfQSkpOworCQl2YWwgJj0gflZMVl9FRFBfUFNS X1NEUF9GUkVRX01BU0s7CisJCXZhbCB8PSBWTFZfRURQX1BTUl9TRFBfRlJFUV9FVkZSQU1FOwor CQlJOTE1X1dSSVRFKFZMVl9WU0NTRFAoUElQRV9BKSwgdmFsKTsKKworCQl2YWwgID0gSTkxNV9S RUFEKFZMVl9WU0NTRFAoUElQRV9CKSk7CisJCXZhbCAmPSB+VkxWX0VEUF9QU1JfU0RQX0ZSRVFf TUFTSzsKKwkJdmFsIHw9IFZMVl9FRFBfUFNSX1NEUF9GUkVRX0VWRlJBTUU7CisJCUk5MTVfV1JJ VEUoVkxWX1ZTQ1NEUChQSVBFX0IpLCB2YWwpOworCX0gZWxzZSB7CisJCS8qIFByZXBhcmUgVlND IHBhY2tldCBhcyBwZXIgRURQIDEuMyBzcGVjLCBUYWJsZSAzLjEwICovCisJCW1lbXNldCgmcHNy X3ZzYywgMCwgc2l6ZW9mKHBzcl92c2MpKTsKKwkJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMCA9IDA7 CisJCXBzcl92c2Muc2RwX2hlYWRlci5IQjEgPSAweDc7CisJCXBzcl92c2Muc2RwX2hlYWRlci5I QjIgPSAweDI7CisJCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7CisJCWludGVsX2VkcF9w c3Jfd3JpdGVfdnNjKGludGVsX2RwLCAmcHNyX3ZzYyk7CiAKLQkvKiBBdm9pZCBjb250aW51b3Vz IFBTUiBleGl0IGJ5IG1hc2tpbmcgbWVtdXAgYW5kIGhwZCAqLwotCUk5MTVfV1JJVEUoRURQX1BT Ul9ERUJVR19DVEwoZGV2KSwgRURQX1BTUl9ERUJVR19NQVNLX01FTVVQIHwKLQkJICAgRURQX1BT Ul9ERUJVR19NQVNLX0hQRCB8IEVEUF9QU1JfREVCVUdfTUFTS19MUFNQKTsKKwkJLyogQXZvaWQg Y29udGludW91cyBQU1IgZXhpdCBieSBtYXNraW5nIG1lbXVwIGFuZCBocGQgKi8KKwkJSTkxNV9X UklURShFRFBfUFNSX0RFQlVHX0NUTChkZXYpLCBFRFBfUFNSX0RFQlVHX01BU0tfTUVNVVAgfAor CQkJICAgRURQX1BTUl9ERUJVR19NQVNLX0hQRCB8IEVEUF9QU1JfREVCVUdfTUFTS19MUFNQKTsK Kwl9CiAKIAlkZXZfcHJpdi0+cHNyLnNldHVwX2RvbmUgPSB0cnVlOwogfQogCitzdGF0aWMgdm9p ZCB2bHZfZWRwX3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQorewor CS8qIEVuYWJsZSBQU1IgaW4gc2luayAqLworCWludGVsX2RwX2F1eF9uYXRpdmVfd3JpdGVfMShp bnRlbF9kcCwgRFBfUFNSX0VOX0NGRywKKwkJCQkJICAgIERQX1BTUl9FTkFCTEUpOworfQorCiBz dGF0aWMgdm9pZCBpbnRlbF9lZHBfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRl bF9kcCk7CkBAIC0xNjc4LDYgKzE3MTMsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZWRwX3Bzcl9l bmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCQkgICAoYXV4X2Nsb2NrX2Rp dmlkZXIgPDwgRFBfQVVYX0NIX0NUTF9CSVRfQ0xPQ0tfMlhfU0hJRlQpKTsKIH0KIAorc3RhdGlj IHZvaWQgdmx2X2VkcF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9f ZGlnX3BvcnQoaW50ZWxfZHApOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdf cG9ydC0+YmFzZS5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0KKwkJ dG9faW50ZWxfY3J0YyhpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmNydGMpOworCisJdWludDMy X3QgaWRsZV9mcmFtZXMgPSAxOworCXVpbnQzMl90IHZhbCA9IDA7CisKKwl2YWwgfD0gVkxWX0VE UF9QU1JfRU5BQkxFOworCXZhbCAmPSB+VkxWX0VEUF9QU1JfTU9ERV9NQVNLOworCisJdmFsIHw9 IFZMVl9FRFBfUFNSX01PREVfSFdfVElNRVI7CisJdmFsICY9IH5WTFZfRURQX1BTUl9GUkFNRV9D T1VOVF9NQVNLOworCXZhbCB8PSBpZGxlX2ZyYW1lcyA8PCBFRFBfUFNSX0lETEVfRlJBTUVfU0hJ RlQ7CisKKwlJOTE1X1dSSVRFKFZMVl9QU1JDVEwoaW50ZWxfY3J0Yy0+cGlwZSksIHZhbCk7Cit9 CisKIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19k ZXYoaW50ZWxfZHApOwpAQCAtMTcxOSw4ICsxNzc1LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRw X3Bzcl9tYXRjaF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCXJldHVy biBmYWxzZTsKIAl9CiAKLQlpZiAoKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVU X0VEUCkgfHwKLQkgICAgKGRpZ19wb3J0LT5wb3J0ICE9IFBPUlRfQSkpIHsKKwlpZiAoSEFTX0RE SShkZXYpICYmICgoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKSB8fAor CQkJICAgICAoZGlnX3BvcnQtPnBvcnQgIT0gUE9SVF9BKSkpIHsKIAkJRFJNX0RFQlVHX0tNUygi SFNXIHRpZXMgUFNSIHRvIERESSBBIChlRFApXG4iKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAg LTE3NjUsMzcgKzE4MjEsODQgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25k aXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCXJldHVybiBmYWxzZTsKIAl9CiAK KwkvKiBCYXl0cmFpbCBzdXBwb3J0cyBwZXItcGlwZSBQU1IgY29uZmlndXJhdGlvbiwgaG93ZXZl ciBQU1Igb24KKwkqIFBJUEVfQiBpc24ndCB3b3JraW5nIHByb3Blcmx5LiBTbyBsZXQncyBrZWVw IGl0IGRpc2FibGVkIGZvciBub3cuICovCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBpbnRl bF9jcnRjLT5waXBlICE9IFBJUEVfQSkgeworCQlEUk1fREVCVUdfS01TKCJQU1Igb24gQllUIGlz bid0IGVuYWJsZWQgb24gcGlwZSBCLlxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlkZXZf cHJpdi0+cHNyLnNvdXJjZV9vayA9IHRydWU7CiAJcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2 b2lkIGludGVsX2VkcF9wc3JfZG9fZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRlbF9kcCk7CisJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9y dChpbnRlbF9kcCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5i YXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQorCQl0b19pbnRl bF9jcnRjKGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0Yyk7CiAKLQlpZiAoIWludGVsX2Vk cF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhpbnRlbF9kcCkgfHwKLQkgICAgaW50ZWxfZWRwX2lzX3Bz cl9lbmFibGVkKGRldikpCi0JCXJldHVybjsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJ CWlmICh2bHZfZWRwX2lzX3Bzcl9lbmFibGVkX29uX3BpcGUoZGV2LCBpbnRlbF9jcnRjLT5waXBl KSkKKwkJCXJldHVybjsKKwl9IGVsc2UKKwkJaWYgKGludGVsX2VkcF9pc19wc3JfZW5hYmxlZChk ZXYpKQorCQkJcmV0dXJuOwogCiAJLyogU2V0dXAgUFNSIG9uY2UgKi8KIAlpbnRlbF9lZHBfcHNy X3NldHVwKGludGVsX2RwKTsKIAogCS8qIEVuYWJsZSBQU1Igb24gdGhlIHBhbmVsICovCi0JaW50 ZWxfZWRwX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7CisJaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSkKKwkJdmx2X2VkcF9wc3JfZW5hYmxlX3NpbmsoaW50ZWxfZHApOworCWVsc2UKKwkJaW50ZWxf ZWRwX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7CiAKIAkvKiBFbmFibGUgUFNSIG9uIHRoZSBo b3N0ICovCi0JaW50ZWxfZWRwX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwKTsKKwlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQorCQl2bHZfZWRwX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwKTsK KwllbHNlCisJCWludGVsX2VkcF9wc3JfZW5hYmxlX3NvdXJjZShpbnRlbF9kcCk7CisKKwlkZXZf cHJpdi0+cHNyLmFjdGl2ZSA9IHRydWU7CiB9CiAKIHZvaWQgaW50ZWxfZWRwX3Bzcl9lbmFibGUo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g aW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKKwlpZiAoIWlzX2VkcF9wc3IoaW50ZWxfZHApKQor CQlyZXR1cm47CiAKLQlpZiAoaW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25kaXRpb25zKGludGVsX2Rw KSAmJgotCSAgICAhaW50ZWxfZWRwX2lzX3Bzcl9lbmFibGVkKGRldikpCisJaWYgKGludGVsX2Vk cF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhpbnRlbF9kcCkpCiAJCWludGVsX2VkcF9wc3JfZG9fZW5h YmxlKGludGVsX2RwKTsKIH0KIAordm9pZCB2bHZfZWRwX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPQorCQl0b19pbnRlbF9jcnRjKGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0 Yyk7CisJdWludDMyX3QgdmFsOworCisJaWYgKCFkZXZfcHJpdi0+cHNyLnNldHVwX2RvbmUpCisJ CXJldHVybjsKKworCWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOworCisJaWYgKHdhaXRf Zm9yKChJOTE1X1JFQUQoVkxWX1BTUlNUQVQoaW50ZWxfY3J0Yy0+cGlwZSkpICYKKwkJICAgICAg VkxWX0VEUF9QU1JfSU5fVFJBTlMpID09IDAsIDI1MCkpCisJCVdBUk4oMSwgIlBTUiB0cmFuc2l0 aW9uIHRvb2sgbG9uZ2VyIHRoYW4gZXhwZWN0ZWRcbiIpOworCisJdmFsID0gSTkxNV9SRUFEKFZM Vl9QU1JDVEwoaW50ZWxfY3J0Yy0+cGlwZSkpOworCXZhbCAmPSB+VkxWX0VEUF9QU1JfQUNUSVZF X0VOVFJZOworCXZhbCAmPSB+VkxWX0VEUF9QU1JfRU5BQkxFOworCXZhbCAmPSB+VkxWX0VEUF9Q U1JfTU9ERV9NQVNLOworCUk5MTVfV1JJVEUoVkxWX1BTUkNUTChpbnRlbF9jcnRjLT5waXBlKSwg dmFsKTsKK30KKwogdm9pZCBpbnRlbF9lZHBfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGlu dGVsX2RwKTsKQEAgLTE4MTcsMjggKzE5MjAsNjYgQEAgdm9pZCBpbnRlbF9lZHBfcHNyX3VwZGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyOwogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShlbmNvZGVyLCAmZGV2LT5t b2RlX2NvbmZpZy5lbmNvZGVyX2xpc3QsIGJhc2UuaGVhZCkKIAkJaWYgKGVuY29kZXItPnR5cGUg PT0gSU5URUxfT1VUUFVUX0VEUCkgewogCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVu Y29kZXItPmJhc2UpOwogCi0JCQlpZiAoIWlzX2VkcF9wc3IoZGV2KSkKKwkJCWlmICghaXNfZWRw X3BzcihpbnRlbF9kcCkpCiAJCQkJcmV0dXJuOwogCi0JCQlpZiAoIWludGVsX2VkcF9wc3JfbWF0 Y2hfY29uZGl0aW9ucyhpbnRlbF9kcCkpCi0JCQkJaW50ZWxfZWRwX3Bzcl9kaXNhYmxlKGludGVs X2RwKTsKLQkJCWVsc2UKKwkJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJh c2UuY3J0Yyk7CisKKwkJCWlmICghaW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25kaXRpb25zKGludGVs X2RwKSkgeworCQkJCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCQkJCXZsdl9lZHBfcHNyX2Rp c2FibGUoaW50ZWxfZHApOworCQkJCWVsc2UKKwkJCQkJaW50ZWxfZWRwX3Bzcl9kaXNhYmxlKGlu dGVsX2RwKTsKKwkJCX0gZWxzZQogCQkJCWlmICghaW50ZWxfZWRwX2lzX3Bzcl9lbmFibGVkKGRl dikpCiAJCQkJCWludGVsX2VkcF9wc3JfZG9fZW5hYmxlKGludGVsX2RwKTsKIAkJfQogfQogCit2 b2lkIGludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGM7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IE5VTEw7CisKKwlpZiAoIWRldl9w cml2LT5wc3Iuc2V0dXBfZG9uZSB8fCAhZGV2X3ByaXYtPnBzci5hY3RpdmUpCisJCXJldHVybjsK KworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRldi0+bW9kZV9jb25maWcuZW5jb2Rl cl9saXN0LCBiYXNlLmhlYWQpCisJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9F RFApIHsKKwkJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKKwkJ CWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7CisKKwkJCWlm ICghdmx2X2VkcF9pc19wc3JfZW5hYmxlZF9vbl9waXBlKGRldiwKKwkJCQkJCQkgICAgaW50ZWxf Y3J0Yy0+cGlwZSkpCisJCQkJY29udGludWU7CisKKwkJCWRldl9wcml2LT5wc3IuYWN0aXZlID0g ZmFsc2U7CisJCQlJOTE1X1dSSVRFKFZMVl9QU1JDVEwoaW50ZWxfY3J0Yy0+cGlwZSksCisJCQkJ ICAgVkxWX0VEUF9QU1JfUkVTRVQpOworCQkJLyogV2FDbGVhclBTUlJlc2V0OnZsdiAqLworCQkJ STkxNV9XUklURShWTFZfUFNSQ1RMKGludGVsX2NydGMtPnBpcGUpLCAwKTsKKworCQkJaW50ZWxf ZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKKwkJfQorfQorCiBzdGF0 aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQog ewogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXIt PmJhc2UpOwogCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0 OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKIAorCWlmIChJ U19WQUxMRVlWSUVXKGRldikpCisJCXZsdl9lZHBfcHNyX2Rpc2FibGUoaW50ZWxfZHApOworCiAJ LyogTWFrZSBzdXJlIHRoZSBwYW5lbCBpcyBvZmYgYmVmb3JlIHRyeWluZyB0byBjaGFuZ2UgdGhl IG1vZGUuIEJ1dCBhbHNvCiAJICogZW5zdXJlIHRoYXQgd2UgaGF2ZSB2ZGQgd2hpbGUgd2Ugc3dp dGNoIG9mZiB0aGUgcGFuZWwuICovCiAJaW50ZWxfZWRwX2JhY2tsaWdodF9vZmYoaW50ZWxfZHAp OwpAQCAtMTg5NSw2ICsyMDM2LDcgQEAgc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9kcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKIAogCWludGVsX2VkcF9iYWNrbGlnaHRfb24o aW50ZWxfZHApOworCWludGVsX2VkcF9wc3JfZW5hYmxlKGludGVsX2RwKTsKIH0KIAogc3RhdGlj IHZvaWQgZzR4X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDcxYzEzNzEuLjgyMDI2ZWYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCkBAIC03NDgsNiArNzQ4LDcgQEAgdm9pZCBpbnRlbF9lZHBfcGFuZWxf b2ZmKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9pZCBpbnRlbF9lZHBfcHNyX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIHZvaWQgaW50ZWxfZWRwX3Bzcl9kaXNhYmxl KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9pZCBpbnRlbF9lZHBfcHNyX3VwZGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiAKIC8qIGludGVsX2RzaS5jICovCi0tIAoxLjguMS4y CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=