From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH 4/4] drm/i915: Add Baytrail PSR Support. Date: Tue, 28 Jan 2014 17:47:25 -0200 Message-ID: <1390938445-4666-1-git-send-email-rodrigo.vivi@gmail.com> References: <20140124174104.GJ9454@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yk0-f176.google.com (mail-yk0-f176.google.com [209.85.160.176]) by gabe.freedesktop.org (Postfix) with ESMTP id 07D50105F8D for ; Tue, 28 Jan 2014 11:47:45 -0800 (PST) Received: by mail-yk0-f176.google.com with SMTP id 131so3850030ykp.7 for ; Tue, 28 Jan 2014 11:47:45 -0800 (PST) In-Reply-To: <20140124174104.GJ9454@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIFBTUiBTdXBwb3J0IHRvIEJheXRyYWlsLgoKQmF5dHJhaWwgY2Fubm90 IGVhc2lseSBkZXRlY3Qgc2NyZWVuIHVwZGF0ZXMgYW5kIGZvcmNlIFBTUiBleGl0LgpTbyB3ZSBp bmFjdGl2YXRlIGl0IG9uIHtidXN5X2lvY3RsLCBzZXRfZG9tYWluLCBzd19maW5pc2ggYW5kIG1h cmtfYnVzeQphbmQgdXBkYXRlIHRvIGVuYWJsZSBpdCBiYWNrIG9uIG5leHQgZGlzcGxheSBtYXJr X2lkbGUuCgp2MjogQWxzbyBpbmFjdGl2YXRlIFBTUiBvbiBjdXJzb3IgdXBkYXRlLgp2MzogSW5h Y3RpdmF0ZSBQU1Igb24gbWFya19idXN5LCBkc2V0X2RvbWFpbiBhbmQgc3dfZmluaXNoX2lvY3Rs LCBhbmQKICAgIGVhcmx5IG9uIHBhZ2UgZmxpcCBiZXNpZGVzIGF2b2lkIGluaXRpYWxpemluZyBp bmFjdGl2ZS9hY3RpdmUgZmxhZwogICAgbW9yZSB0aGFuIG9uY2UuCnY0OiBGaXggaWRlbnRhdGlv biBpc3N1ZXMuCnY1OiBSZWJhc2UgYW5kIGFkZCBCYXl0cmFpbCBwZXIgcGlwZSBzdXBwb3J0IGFs dGhvdWdoIGxlYXZpbmcgUElQRV9CCiAgICBzdXBwb3J0IGRpc2FibGVkIGJ5IGZvciBub3cgc2lu Y2UgaXQgaXNuJ3Qgd29ya2luZyBwcm9wZXJseSB5ZXQuCgpDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZp IDxyb2RyaWdvLnZpdmlAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICB8ICAzNiArKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgIHwgICA5 ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgNDAgKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDE1ICsrLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgMjA4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDEg KwogNyBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA0Yjg1MmM2Li5jMjhkZTY1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTkwMCw2ICsxOTAwLDggQEAgc3RhdGlj IGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUzMiBwc3JwZXJm ID0gMDsKKwl1MzIgc3RhdEEgPSAwOworCXUzMiBzdGF0QiA9IDA7CiAJYm9vbCBlbmFibGVkID0g ZmFsc2U7CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CkBAIC0xOTA3LDE0ICsx OTA5LDM4IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCiAJc2VxX3ByaW50ZihtLCAiU2lua19TdXBwb3J0OiAlc1xuIiwgeWVz bm8oZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQpKTsKIAlzZXFfcHJpbnRmKG0sICJTb3VyY2Vf T0s6ICVzXG4iLCB5ZXNubyhkZXZfcHJpdi0+cHNyLnNvdXJjZV9vaykpOwogCi0JZW5hYmxlZCA9 IEhBU19QU1IoZGV2KSAmJgotCQlJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2KSkgJiBFRFBfUFNS X0VOQUJMRTsKLQlzZXFfcHJpbnRmKG0sICJFbmFibGVkOiAlc1xuIiwgeWVzbm8oZW5hYmxlZCkp OworCWlmIChIQVNfUFNSKGRldikpIHsKKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCQkJ c3RhdEEgPSBJOTE1X1JFQUQoVkxWX0VEUF9QU1JfU1RBVFVTX0NUTChQSVBFX0EpKSAmCisJCQkJ VkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOworCQkJc3RhdEIgPSBJOTE1X1JFQUQoVkxWX0VE UF9QU1JfU1RBVFVTX0NUTChQSVBFX0IpKSAmCisJCQkJVkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9N QVNLOworCQkJZW5hYmxlZCA9ICgoc3RhdEEgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQ KSB8fAorCQkJCSAgIChzdGF0QSA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBEQVRFKSB8fAor CQkJCSAgIChzdGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8CisJCQkJICAg KHN0YXRCID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKTsKKwkJfSBlbHNlCisJCQll bmFibGVkID0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldikpICYgRURQX1BTUl9FTkFCTEU7CisJ fQorCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVzIiwgeWVzbm8oZW5hYmxlZCkpOwogCi0JaWYg KEhBU19QU1IoZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJCWlmICgoc3RhdEEg PT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAorCQkgICAgKHN0YXRBID09IFZMVl9F RFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKQorCQkJc2VxX3B1dHMobSwgIiBwaXBlIEEiKTsKKwkJ aWYgKChzdGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8CisJCSAgICAoc3Rh dEIgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURSkpCisJCQlzZXFfcHV0cyhtLCAiIHBp cGUgQiIpOworCX0KKworCXNlcV9wdXRzKG0sICJcbiIpOworCisJLyogVkxWIFBTUiBoYXMgbm8g a2luZCBvZiBwZXJmb3JtYW5jZSBjb3VudGVyICovCisJaWYgKEhBU19QU1IoZGV2KSAmJiAhSVNf VkFMTEVZVklFVyhkZXYpKSB7CiAJCXBzcnBlcmYgPSBJOTE1X1JFQUQoRURQX1BTUl9QRVJGX0NO VChkZXYpKSAmCiAJCQlFRFBfUFNSX1BFUkZfQ05UX01BU0s7Ci0Jc2VxX3ByaW50ZihtLCAiUGVy Zm9ybWFuY2VfQ291bnRlcjogJXVcbiIsIHBzcnBlcmYpOworCQlzZXFfcHJpbnRmKG0sICJQZXJm b3JtYW5jZV9Db3VudGVyOiAldVxuIiwgcHNycGVyZik7CisJfQogCiAJaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg N2M1M2Q0ZC4uMzRkZWUyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC03NDcsNiArNzQ3 LDcgQEAgc3RydWN0IGk5MTVfcHNyIHsKIAlib29sIHNpbmtfc3VwcG9ydDsKIAlib29sIHNvdXJj ZV9vazsKIAlib29sIHNldHVwX2RvbmU7CisJYm9vbCBhY3RpdmU7CiB9OwogCiBlbnVtIGludGVs X3BjaCB7CkBAIC0xODY2LDcgKzE4NjcsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl IHsKIAogI2RlZmluZSBIQVNfRERJKGRldikJCShJTlRFTF9JTkZPKGRldiktPmhhc19kZGkpCiAj ZGVmaW5lIEhBU19GUEdBX0RCR19VTkNMQUlNRUQoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5oYXNf ZnBnYV9kYmcpCi0jZGVmaW5lIEhBU19QU1IoZGV2KQkJKElTX0hBU1dFTEwoZGV2KSB8fCBJU19C Uk9BRFdFTEwoZGV2KSkKKyNkZWZpbmUgSEFTX1BTUihkZXYpCQkoSVNfSEFTV0VMTChkZXYpIHx8 IElTX0JST0FEV0VMTChkZXYpIHx8IFwKKwkJCQkgSVNfVkFMTEVZVklFVyhkZXYpKQogI2RlZmlu ZSBIQVNfUEM4KGRldikJCShJU19IQVNXRUxMKGRldikpIC8qIFhYWCBIU1c6VUxYICovCiAjZGVm aW5lIEhBU19SVU5USU1FX1BNKGRldikJKElTX0hBU1dFTEwoZGV2KSkKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKaW5kZXggMzk3NzBmNy4uMDExMzdmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CkBAIC0xMjU2LDYgKzEyNTYsOSBAQCBpOTE1X2dlbV9zZXRfZG9tYWluX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWdvdG8gdW5sb2NrOwogCX0KIAorCWlmIChJ U19WQUxMRVlWSUVXKGRldikpCisJCWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOworCiAJ LyogVHJ5IHRvIGZsdXNoIHRoZSBvYmplY3Qgb2ZmIHRoZSBHUFUgd2l0aG91dCBob2xkaW5nIHRo ZSBsb2NrLgogCSAqIFdlIHdpbGwgcmVwZWF0IHRoZSBmbHVzaCBob2xkaW5nIHRoZSBsb2NrIGlu IHRoZSBub3JtYWwgbWFubmVyCiAJICogdG8gY2F0Y2ggY2FzZXMgd2hlcmUgd2UgYXJlIGdhenVt cGVkLgpAQCAtMTI5OSw2ICsxMzAyLDkgQEAgaTkxNV9nZW1fc3dfZmluaXNoX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAorCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShk ZXYpOworCiAJb2JqID0gdG9faW50ZWxfYm8oZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmls ZSwgYXJncy0+aGFuZGxlKSk7CiAJaWYgKCZvYmotPmJhc2UgPT0gTlVMTCkgewogCQlyZXQgPSAt RU5PRU5UOwpAQCAtNDA1OSw2ICs0MDY1LDkgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAK KwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoZGV2 KTsKKwogCW9iaiA9IHRvX2ludGVsX2JvKGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGUs IGFyZ3MtPmhhbmRsZSkpOwogCWlmICgmb2JqLT5iYXNlID09IE5VTEwpIHsKIAkJcmV0ID0gLUVO T0VOVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IGNiYmFmMjYuLjNhMzRhZmIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtMTk2OCw2ICsxOTY4LDQ2IEBACiAjZGVmaW5lIEJDTFJQ QVQocGlwZSkgX1BJUEUocGlwZSwgX0JDTFJQQVRfQSwgX0JDTFJQQVRfQikKICNkZWZpbmUgVlNZ TkNTSElGVCh0cmFucykgX1RSQU5TQ09ERVIodHJhbnMsIF9WU1lOQ1NISUZUX0EsIF9WU1lOQ1NI SUZUX0IpCiAKKy8qIFZMViBlRFAgUFNSIHJlZ2lzdGVycyAqLworI2RlZmluZSBfUFNSQ1RMQQkJ CQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjAwOTApCisjZGVmaW5lIF9QU1JDVExCCQkJCShWTFZf RElTUExBWV9CQVNFICsgMHg2MTA5MCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0VOQUJMRQkJCSgx PDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfUkVTRVQJCQkoMTw8MSkKKyNkZWZpbmUgIFZMVl9F RFBfUFNSX01PREVfTUFTSwkJCSg3PDwyKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfTU9ERV9IV19U SU1FUgkJKDE8PDMpCisjZGVmaW5lICBWTFZfRURQX1BTUl9NT0RFX1NXX1RJTUVSCQkoMTw8MikK KyNkZWZpbmUgIFZMVl9FRFBfUFNSX1NJTkdMRV9GUkFNRV9VUERBVEUJKDE8PDcpCisjZGVmaW5l ICBWTFZfRURQX1BTUl9BQ1RJVkVfRU5UUlkJCSgxPDw4KQorI2RlZmluZSAgVkxWX0VEUF9QU1Jf U1JDX1RSQU5TTUlUVEVSX1NUQVRFCSgxPDw5KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfREJMX0ZS QU1FCQkJKDE8PDEwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfRlJBTUVfQ09VTlRfTUFTSwkJKDB4 ZmY8PDE2KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfSURMRV9GUkFNRV9TSElGVAkJMTYKKyNkZWZp bmUgIFZMVl9FRFBfUFNSX0lOVF9UUkFOU0lUSU9OCQkoMTw8MjQpCisjZGVmaW5lIFZMVl9FRFBf UFNSX0NUTChwaXBlKSBfUElQRShwaXBlLCBfUFNSQ1RMQSwgX1BTUkNUTEIpCisKKyNkZWZpbmUg X1ZTQ1NEUEEJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjAwYTApCisjZGVmaW5lIF9WU0NTRFBC CQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYxMGEwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfU0RQ X0ZSRVFfTUFTSwkoMzw8MzApCisjZGVmaW5lICBWTFZfRURQX1BTUl9TRFBfRlJFUV9PTkNFCSgx PDwzMSkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX1NEUF9GUkVRX0VWRlJBTUUJKDE8PDMwKQorI2Rl ZmluZSBWTFZfRURQX1ZTQ19TRFBfUkVHKHBpcGUpCV9QSVBFKHBpcGUsIF9WU0NTRFBBLCBfVlND U0RQQikKKworI2RlZmluZSBfUFNSU1RBVEEJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjAwOTQp CisjZGVmaW5lIF9QU1JTVEFUQgkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2MTA5NCkKKyNkZWZp bmUgIFZMVl9FRFBfUFNSX0xBU1RfU1RBVEVfTUFTSwkoNzw8MykKKyNkZWZpbmUgIFZMVl9FRFBf UFNSX0NVUlJfU1RBVEVfTUFTSwk3CisjZGVmaW5lICBWTFZfRURQX1BTUl9ESVNBQkxFRAkJKDA8 PDApCisjZGVmaW5lICBWTFZfRURQX1BTUl9JTkFDVElWRQkJKDE8PDApCisjZGVmaW5lICBWTFZf RURQX1BTUl9JTl9UUkFOU19UT19BQ1RJVkUJKDI8PDApCisjZGVmaW5lICBWTFZfRURQX1BTUl9B Q1RJVkVfTk9SRkJfVVAJKDM8PDApCisjZGVmaW5lICBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBE QVRFCSg0PDwwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfRVhJVAkJKDU8PDApCisjZGVmaW5lICBW TFZfRURQX1BTUl9JTl9UUkFOUwkJKDE8PDcpCisjZGVmaW5lIFZMVl9FRFBfUFNSX1NUQVRVU19D VEwocGlwZSkgX1BJUEUocGlwZSwgX1BTUlNUQVRBLCBfUFNSU1RBVEIpCisKKyNkZWZpbmUgVkxW X1BTUl9DTEtfR0FURV9ESVNBQkxFCShWTFZfRElTUExBWV9CQVNFICsgMHg2MjA0KQorI2RlZmlu ZSAgVkxWX0NMS19ESVNBQkxFX1BJUEVfQgkJKDE8PDMwKQorCiAvKiBIU1crIGVEUCBQU1IgcmVn aXN0ZXJzICovCiAjZGVmaW5lIEVEUF9QU1JfQkFTRShkZXYpICAgICAgICAgICAgICAgICAgICAg ICAoSVNfSEFTV0VMTChkZXYpID8gMHg2NDgwMCA6IDB4NmY4MDApCiAjZGVmaW5lIEVEUF9QU1Jf Q1RMKGRldikJCQkoRURQX1BTUl9CQVNFKGRldikgKyAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCmluZGV4IDFhOWFhMTkuLjA4MWM4ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKQEAgLTc1MDEsNiArNzUwMSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNf dXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdTMyIGJhc2UgPSAwLCBwb3Mg PSAwOwogCWJvb2wgdmlzaWJsZTsKIAorCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWludGVs X2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOworCiAJaWYgKG9uKQogCQliYXNlID0gaW50ZWxfY3J0 Yy0+Y3Vyc29yX2FkZHI7CiAKQEAgLTgyMjgsMTYgKzgyMzEsMjAgQEAgdm9pZCBpbnRlbF9tYXJr X2lkbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWlmIChkZXZfcHJpdi0+aW5mby0+Z2Vu ID49IDYpCiAJCWdlbjZfcnBzX2lkbGUoZGV2LT5kZXZfcHJpdmF0ZSk7CisKKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX3VwZGF0ZShkZXYpOwogfQogCisKIHZvaWQg aW50ZWxfbWFya19mYl9idXN5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQlz dHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnJpbmcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IG9iai0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCi0JaWYgKCFpOTE1 LnBvd2Vyc2F2ZSkKLQkJcmV0dXJuOworCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWludGVs X2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAm ZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGhlYWQpIHsKIAkJaWYgKCFjcnRjLT5mYikKQEAg LTg2ODgsNiArODY5NSwxMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAlpZiAod29yayA9PSBOVUxMKQogCQlyZXR1cm4gLUVOT01FTTsK IAorCS8qIEluYWN0aXZhdGUgUFNSIGVhcmx5IGluIHBhZ2UgZmxpcCAqLworCWlmIChJU19WQUxM RVlWSUVXKGRldikpCisJCWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOworCiAJd29yay0+ ZXZlbnQgPSBldmVudDsKIAl3b3JrLT5jcnRjID0gY3J0YzsKIAl3b3JrLT5vbGRfZmJfb2JqID0g dG9faW50ZWxfZnJhbWVidWZmZXIob2xkX2ZiKS0+b2JqOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK aW5kZXggMzBkNDM1MC4uYjExNjRmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0xNTc4 LDIxICsxNTc4LDM1IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJfQogfQogCi1zdGF0aWMgYm9vbCBpc19lZHBfcHNyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgYm9vbCBpc19lZHBfcHNyKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCit7CisJcmV0dXJuIGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BT Ul9JU19TVVBQT1JURUQ7Cit9CisKK3N0YXRpYyBib29sIHZsdl9lZHBfaXNfcHNyX2VuYWJsZWRf b25fcGlwZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXVpbnQzMl90IHZh bDsKIAotCXJldHVybiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydDsKKwl2YWwgPSBJOTE1X1JF QUQoVkxWX0VEUF9QU1JfU1RBVFVTX0NUTChwaXBlKSkgJgorCQlWTFZfRURQX1BTUl9DVVJSX1NU QVRFX01BU0s7CisJcmV0dXJuICh2YWwgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8 fAorCQkodmFsID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpOwogfQogCiBzdGF0aWMg Ym9vbCBpbnRlbF9lZHBfaXNfcHNyX2VuYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog Ci0JaWYgKCFIQVNfUFNSKGRldikpCi0JCXJldHVybiBmYWxzZTsKKwlpZiAoSEFTX1BTUihkZXYp KSB7CisJCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCQlyZXR1cm4gdmx2X2VkcF9pc19wc3Jf ZW5hYmxlZF9vbl9waXBlKGRldiwgUElQRV9BKSB8fAorCQkJCXZsdl9lZHBfaXNfcHNyX2VuYWJs ZWRfb25fcGlwZShkZXYsIFBJUEVfQik7CisJCWVsc2UKKwkJCXJldHVybiBJOTE1X1JFQUQoRURQ X1BTUl9DVEwoZGV2KSkgJiBFRFBfUFNSX0VOQUJMRTsKKwl9CiAKLQlyZXR1cm4gSTkxNV9SRUFE KEVEUF9QU1JfQ1RMKGRldikpICYgRURQX1BTUl9FTkFCTEU7CisJcmV0dXJuIGZhbHNlOwogfQog CiBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcHNyX3dyaXRlX3ZzYyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLApAQCAtMTYyNiwyOCArMTY0MCw1MyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcHNy X3dyaXRlX3ZzYyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCiBzdGF0aWMgdm9pZCBpbnRl bF9lZHBfcHNyX3NldHVwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7Ci0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRlbF9kcCk7CisJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2 OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CiAJc3RydWN0IGVkcF92c2NfcHNyIHBzcl92c2M7CisJdWludDMyX3QgdmFsOwogCiAJaWYgKGRl dl9wcml2LT5wc3Iuc2V0dXBfZG9uZSkKIAkJcmV0dXJuOwogCi0JLyogUHJlcGFyZSBWU0MgcGFj a2V0IGFzIHBlciBFRFAgMS4zIHNwZWMsIFRhYmxlIDMuMTAgKi8KLQltZW1zZXQoJnBzcl92c2Ms IDAsIHNpemVvZihwc3JfdnNjKSk7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMCA9IDA7Ci0JcHNy X3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIyID0gMHgy OwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7Ci0JaW50ZWxfZWRwX3Bzcl93cml0ZV92 c2MoaW50ZWxfZHAsICZwc3JfdnNjKTsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJCXZh bCAgPSBJOTE1X1JFQUQoVkxWX0VEUF9WU0NfU0RQX1JFRyhQSVBFX0EpKTsKKwkJdmFsICY9IH5W TFZfRURQX1BTUl9TRFBfRlJFUV9NQVNLOworCQl2YWwgfD0gVkxWX0VEUF9QU1JfU0RQX0ZSRVFf RVZGUkFNRTsKKwkJSTkxNV9XUklURShWTFZfRURQX1ZTQ19TRFBfUkVHKFBJUEVfQSksIHZhbCk7 CisKKwkJdmFsICA9IEk5MTVfUkVBRChWTFZfRURQX1ZTQ19TRFBfUkVHKFBJUEVfQikpOworCQl2 YWwgJj0gflZMVl9FRFBfUFNSX1NEUF9GUkVRX01BU0s7CisJCXZhbCB8PSBWTFZfRURQX1BTUl9T RFBfRlJFUV9FVkZSQU1FOworCQlJOTE1X1dSSVRFKFZMVl9FRFBfVlNDX1NEUF9SRUcoUElQRV9C KSwgdmFsKTsKKworCQkvKiB2YWwgPSBJOTE1X1JFQUQoVkxWX1BTUl9DTEtfR0FURV9ESVNBQkxF KTsgKi8KKwkJLyogdmFsIHw9IFZMVl9DTEtfRElTQUJMRV9QSVBFX0I7ICovCisJCS8qIEk5MTVf V1JJVEUoVkxWX1BTUl9DTEtfR0FURV9ESVNBQkxFLCB2YWwpOyAqLworCX0gZWxzZSB7CisJCS8q IFByZXBhcmUgVlNDIHBhY2tldCBhcyBwZXIgRURQIDEuMyBzcGVjLCBUYWJsZSAzLjEwICovCisJ CW1lbXNldCgmcHNyX3ZzYywgMCwgc2l6ZW9mKHBzcl92c2MpKTsKKwkJcHNyX3ZzYy5zZHBfaGVh ZGVyLkhCMCA9IDA7CisJCXBzcl92c2Muc2RwX2hlYWRlci5IQjEgPSAweDc7CisJCXBzcl92c2Mu c2RwX2hlYWRlci5IQjIgPSAweDI7CisJCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7CisJ CWludGVsX2VkcF9wc3Jfd3JpdGVfdnNjKGludGVsX2RwLCAmcHNyX3ZzYyk7CiAKLQkvKiBBdm9p ZCBjb250aW51b3VzIFBTUiBleGl0IGJ5IG1hc2tpbmcgbWVtdXAgYW5kIGhwZCAqLwotCUk5MTVf V1JJVEUoRURQX1BTUl9ERUJVR19DVEwoZGV2KSwgRURQX1BTUl9ERUJVR19NQVNLX01FTVVQIHwK LQkJICAgRURQX1BTUl9ERUJVR19NQVNLX0hQRCB8IEVEUF9QU1JfREVCVUdfTUFTS19MUFNQKTsK KwkJLyogQXZvaWQgY29udGludW91cyBQU1IgZXhpdCBieSBtYXNraW5nIG1lbXVwIGFuZCBocGQg Ki8KKwkJSTkxNV9XUklURShFRFBfUFNSX0RFQlVHX0NUTChkZXYpLCBFRFBfUFNSX0RFQlVHX01B U0tfTUVNVVAgfAorCQkJICAgRURQX1BTUl9ERUJVR19NQVNLX0hQRCB8IEVEUF9QU1JfREVCVUdf TUFTS19MUFNQKTsKKwl9CiAKIAlkZXZfcHJpdi0+cHNyLnNldHVwX2RvbmUgPSB0cnVlOwogfQog CitzdGF0aWMgdm9pZCB2bHZfZWRwX3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQoreworCS8qIEVuYWJsZSBQU1IgaW4gc2luayAqLworCWludGVsX2RwX2F1eF9uYXRp dmVfd3JpdGVfMShpbnRlbF9kcCwgRFBfUFNSX0VOX0NGRywKKwkJCQkgICAgRFBfUFNSX0VOQUJM RSk7Cit9CisKIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBf dG9fZGV2KGludGVsX2RwKTsKQEAgLTE2NzgsNiArMTcxNywyOCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9lZHBfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCSAgIChh dXhfY2xvY2tfZGl2aWRlciA8PCBEUF9BVVhfQ0hfQ1RMX0JJVF9DTE9DS18yWF9TSElGVCkpOwog fQogCitzdGF0aWMgdm9pZCB2bHZfZWRwX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPQorCQl0b19pbnRlbF9jcnRjKGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0Yyk7 CisKKwl1aW50MzJfdCBpZGxlX2ZyYW1lcyA9IDE7CisJdWludDMyX3QgdmFsOworCisJdmFsID0g STkxNV9SRUFEKFZMVl9FRFBfUFNSX0NUTChpbnRlbF9jcnRjLT5waXBlKSk7CisJdmFsIHw9IFZM Vl9FRFBfUFNSX0VOQUJMRTsKKwl2YWwgJj0gflZMVl9FRFBfUFNSX01PREVfTUFTSzsKKworCXZh bCB8PSBWTFZfRURQX1BTUl9NT0RFX0hXX1RJTUVSOworCXZhbCAmPSB+VkxWX0VEUF9QU1JfRlJB TUVfQ09VTlRfTUFTSzsKKwl2YWwgfD0gaWRsZV9mcmFtZXMgPDwgRURQX1BTUl9JRExFX0ZSQU1F X1NISUZUOworCisJSTkxNV9XUklURShWTFZfRURQX1BTUl9DVEwoaW50ZWxfY3J0Yy0+cGlwZSks IHZhbCk7Cit9CisKIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRl bF9kcF90b19kZXYoaW50ZWxfZHApOwpAQCAtMTcxOSw4ICsxNzgwLDggQEAgc3RhdGljIGJvb2wg aW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAoKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5U RUxfT1VUUFVUX0VEUCkgfHwKLQkgICAgKGRpZ19wb3J0LT5wb3J0ICE9IFBPUlRfQSkpIHsKKwlp ZiAoSEFTX0RESShkZXYpICYmICgoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRf RURQKSB8fAorCQkJICAgICAoZGlnX3BvcnQtPnBvcnQgIT0gUE9SVF9BKSkpIHsKIAkJRFJNX0RF QlVHX0tNUygiSFNXIHRpZXMgUFNSIHRvIERESSBBIChlRFApXG4iKTsKIAkJcmV0dXJuIGZhbHNl OwogCX0KQEAgLTE3NjUsMzcgKzE4MjYsODMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX3Bzcl9t YXRjaF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJCXJldHVybiBmYWxz ZTsKIAl9CiAKKwkvKiBCYXl0cmFpbCBzdXBwb3J0cyBwZXItcGlwZSBQU1IgY29uZmlndXJhdGlv biwgaG93ZXZlciBQU1Igb24KKwkqIFBJUEVfQiBpc24ndCB3b3JraW5nIHByb3Blcmx5LiBTbyBs ZXQncyBrZWVwIGl0IGRpc2FibGVkIGZvciBub3cuICovCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSAmJiBpbnRlbF9jcnRjLT5waXBlICE9IFBJUEVfQSkgeworCQlEUk1fREVCVUdfS01TKCJQU1Ig b24gQllUIGlzbid0IGVuYWJsZWQgb24gcGlwZSBCLlxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKIAlkZXZfcHJpdi0+cHNyLnNvdXJjZV9vayA9IHRydWU7CiAJcmV0dXJuIHRydWU7CiB9CiAK IHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3JfZG9fZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRl bF9kcCk7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90 b19kaWdfcG9ydChpbnRlbF9kcCk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Rp Z19wb3J0LT5iYXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQor CQl0b19pbnRlbF9jcnRjKGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0Yyk7CiAKLQlpZiAo IWludGVsX2VkcF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhpbnRlbF9kcCkgfHwKLQkgICAgaW50ZWxf ZWRwX2lzX3Bzcl9lbmFibGVkKGRldikpCi0JCXJldHVybjsKKwlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKSB7CisJCWlmICh2bHZfZWRwX2lzX3Bzcl9lbmFibGVkX29uX3BpcGUoZGV2LCBpbnRlbF9j cnRjLT5waXBlKSkKKwkJCXJldHVybjsKKwl9IGVsc2UKKwkJaWYgKGludGVsX2VkcF9pc19wc3Jf ZW5hYmxlZChkZXYpKQorCQkJcmV0dXJuOwogCiAJLyogU2V0dXAgUFNSIG9uY2UgKi8KIAlpbnRl bF9lZHBfcHNyX3NldHVwKGludGVsX2RwKTsKIAogCS8qIEVuYWJsZSBQU1Igb24gdGhlIHBhbmVs ICovCi0JaW50ZWxfZWRwX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7CisJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKKwkJdmx2X2VkcF9wc3JfZW5hYmxlX3NpbmsoaW50ZWxfZHApOworCWVsc2UK KwkJaW50ZWxfZWRwX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7CiAKIAkvKiBFbmFibGUgUFNS IG9uIHRoZSBob3N0ICovCi0JaW50ZWxfZWRwX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwKTsK KwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQl2bHZfZWRwX3Bzcl9lbmFibGVfc291cmNlKGlu dGVsX2RwKTsKKwllbHNlCisJCWludGVsX2VkcF9wc3JfZW5hYmxlX3NvdXJjZShpbnRlbF9kcCk7 CisKKwlkZXZfcHJpdi0+cHNyLmFjdGl2ZSA9IHRydWU7CiB9CiAKIHZvaWQgaW50ZWxfZWRwX3Bz cl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKKwlpZiAoIWlzX2VkcF9wc3IoaW50 ZWxfZHApKQorCQlyZXR1cm47CiAKLQlpZiAoaW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25kaXRpb25z KGludGVsX2RwKSAmJgotCSAgICAhaW50ZWxfZWRwX2lzX3Bzcl9lbmFibGVkKGRldikpCisJaWYg KGludGVsX2VkcF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhpbnRlbF9kcCkpCiAJCWludGVsX2VkcF9w c3JfZG9fZW5hYmxlKGludGVsX2RwKTsKIH0KIAordm9pZCB2bHZfZWRwX3Bzcl9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2OworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPQorCQl0b19pbnRlbF9jcnRjKGludGVsX2RpZ19wb3J0LT5iYXNl LmJhc2UuY3J0Yyk7CisJdWludDMyX3QgdmFsID0gSTkxNV9SRUFEKFZMVl9FRFBfUFNSX1NUQVRV U19DVEwoaW50ZWxfY3J0Yy0+cGlwZSkpOworCisJaWYgKCFkZXZfcHJpdi0+cHNyLnNldHVwX2Rv bmUpCisJCXJldHVybjsKKworCWludGVsX2VkcF9wc3JfaW5hY3RpdmF0ZShkZXYpOworCisJaWYg KHZhbCAmIFZMVl9FRFBfUFNSX0lOX1RSQU5TKQorCQl1ZGVsYXkoMjUwKTsKKworCXZhbCA9IEk5 MTVfUkVBRChWTFZfRURQX1BTUl9DVEwoaW50ZWxfY3J0Yy0+cGlwZSkpOworCXZhbCAmPSB+VkxW X0VEUF9QU1JfQUNUSVZFX0VOVFJZOworCXZhbCAmPSB+VkxWX0VEUF9QU1JfRU5BQkxFOworCXZh bCAmPSB+VkxWX0VEUF9QU1JfTU9ERV9NQVNLOworCUk5MTVfV1JJVEUoVkxWX0VEUF9QU1JfQ1RM KGludGVsX2NydGMtPnBpcGUpLCB2YWwpOworfQorCiB2b2lkIGludGVsX2VkcF9wc3JfZGlzYWJs ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwpAQCAtMTgxNywyOCArMTkyNCw2NiBAQCB2b2lk IGludGVsX2VkcF9wc3JfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IE5V TEw7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CiAKIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGVuY29kZXIsICZkZXYtPm1vZGVfY29uZmlnLmVuY29kZXJfbGlzdCwgYmFzZS5oZWFkKQog CQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7CiAJCQlpbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAKLQkJCWlmICghaXNfZWRwX3Bzcihk ZXYpKQorCQkJaWYgKCFpc19lZHBfcHNyKGludGVsX2RwKSkKIAkJCQlyZXR1cm47CiAKLQkJCWlm ICghaW50ZWxfZWRwX3Bzcl9tYXRjaF9jb25kaXRpb25zKGludGVsX2RwKSkKLQkJCQlpbnRlbF9l ZHBfcHNyX2Rpc2FibGUoaW50ZWxfZHApOwotCQkJZWxzZQorCQkJaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKKworCQkJaWYgKCFpbnRlbF9lZHBfcHNyX21h dGNoX2NvbmRpdGlvbnMoaW50ZWxfZHApKSB7CisJCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkK KwkJCQkJdmx2X2VkcF9wc3JfZGlzYWJsZShpbnRlbF9kcCk7CisJCQkJZWxzZQorCQkJCQlpbnRl bF9lZHBfcHNyX2Rpc2FibGUoaW50ZWxfZHApOworCQkJfSBlbHNlCiAJCQkJaWYgKCFpbnRlbF9l ZHBfaXNfcHNyX2VuYWJsZWQoZGV2KSkKIAkJCQkJaW50ZWxfZWRwX3Bzcl9kb19lbmFibGUoaW50 ZWxfZHApOwogCQl9CiB9CiAKK3ZvaWQgaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g TlVMTDsKKworCWlmICghZGV2X3ByaXYtPnBzci5zZXR1cF9kb25lIHx8ICFkZXZfcHJpdi0+cHNy LmFjdGl2ZSkKKwkJcmV0dXJuOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShlbmNvZGVyLCAmZGV2 LT5tb2RlX2NvbmZpZy5lbmNvZGVyX2xpc3QsIGJhc2UuaGVhZCkKKwkJaWYgKGVuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAo JmVuY29kZXItPmJhc2UpOworCQkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+ YmFzZS5jcnRjKTsKKworCQkJaWYgKCF2bHZfZWRwX2lzX3Bzcl9lbmFibGVkX29uX3BpcGUoZGV2 LAorCQkJCQkJCSAgICBpbnRlbF9jcnRjLT5waXBlKSkKKwkJCQljb250aW51ZTsKKworCQkJZGV2 X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsKKwkJCUk5MTVfV1JJVEUoVkxWX0VEUF9QU1JfQ1RM KGludGVsX2NydGMtPnBpcGUpLAorCQkJCSAgIFZMVl9FRFBfUFNSX1JFU0VUKTsKKwkJCS8qIFdh Q2xlYXJQU1JSZXNldDp2bHYgKi8KKwkJCUk5MTVfV1JJVEUoVkxWX0VEUF9QU1JfQ1RMKGludGVs X2NydGMtPnBpcGUpLCAwKTsKKworCQkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1f TU9ERV9EUE1TX09OKTsKKwkJfQorfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwogCWVudW0gcG9ydCBwb3J0ID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmNvZGVyLT5iYXNlLmRldjsKIAorCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCXZsdl9l ZHBfcHNyX2Rpc2FibGUoaW50ZWxfZHApOworCiAJLyogTWFrZSBzdXJlIHRoZSBwYW5lbCBpcyBv ZmYgYmVmb3JlIHRyeWluZyB0byBjaGFuZ2UgdGhlIG1vZGUuIEJ1dCBhbHNvCiAJICogZW5zdXJl IHRoYXQgd2UgaGF2ZSB2ZGQgd2hpbGUgd2Ugc3dpdGNoIG9mZiB0aGUgcGFuZWwuICovCiAJaW50 ZWxfZWRwX2JhY2tsaWdodF9vZmYoaW50ZWxfZHApOwpAQCAtMTg5NSw2ICsyMDQwLDcgQEAgc3Rh dGljIHZvaWQgdmx2X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAlz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNl KTsKIAogCWludGVsX2VkcF9iYWNrbGlnaHRfb24oaW50ZWxfZHApOworCWludGVsX2VkcF9wc3Jf ZW5hYmxlKGludGVsX2RwKTsKIH0KIAogc3RhdGljIHZvaWQgZzR4X3ByZV9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4 IDcxYzEzNzEuLjgyMDI2ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC03NDgsNiAr NzQ4LDcgQEAgdm9pZCBpbnRlbF9lZHBfcGFuZWxfb2ZmKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApOwogdm9pZCBpbnRlbF9lZHBfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKIHZvaWQgaW50ZWxfZWRwX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Owogdm9pZCBpbnRlbF9lZHBfcHNyX3VwZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3Zv aWQgaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiAK IC8qIGludGVsX2RzaS5jICovCi0tIAoxLjguMS4yCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=