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 12:55:35 -0200 Message-ID: <1391007335-8698-1-git-send-email-rodrigo.vivi@gmail.com> References: <20140129131251.GA28110@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pb0-f45.google.com (mail-pb0-f45.google.com [209.85.160.45]) by gabe.freedesktop.org (Postfix) with ESMTP id 061B9FBD35 for ; Wed, 29 Jan 2014 06:55:52 -0800 (PST) Received: by mail-pb0-f45.google.com with SMTP id un15so1847231pbc.4 for ; Wed, 29 Jan 2014 06:55:51 -0800 (PST) In-Reply-To: <20140129131251.GA28110@nuc-i3427.alporthouse.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 CgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBS b2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgIHwgIDM2ICsrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyAgICAgIHwgICA2ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAg MzcgKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDE1ICsr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgMjA0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCAgICAgfCAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKSwgMzkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA0Yjg1MmM2Li5j MjhkZTY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTkwMCw2ICsxOTAw LDggQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXUzMiBwc3JwZXJmID0gMDsKKwl1MzIgc3RhdEEgPSAwOworCXUzMiBzdGF0QiA9IDA7CiAJYm9v bCBlbmFibGVkID0gZmFsc2U7CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CkBA IC0xOTA3LDE0ICsxOTA5LDM4IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJc2VxX3ByaW50ZihtLCAiU2lua19TdXBwb3J0 OiAlc1xuIiwgeWVzbm8oZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQpKTsKIAlzZXFfcHJpbnRm KG0sICJTb3VyY2VfT0s6ICVzXG4iLCB5ZXNubyhkZXZfcHJpdi0+cHNyLnNvdXJjZV9vaykpOwog Ci0JZW5hYmxlZCA9IEhBU19QU1IoZGV2KSAmJgotCQlJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2 KSkgJiBFRFBfUFNSX0VOQUJMRTsKLQlzZXFfcHJpbnRmKG0sICJFbmFibGVkOiAlc1xuIiwgeWVz bm8oZW5hYmxlZCkpOworCWlmIChIQVNfUFNSKGRldikpIHsKKwkJaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgeworCQkJc3RhdEEgPSBJOTE1X1JFQUQoVkxWX0VEUF9QU1JfU1RBVFVTX0NUTChQSVBF X0EpKSAmCisJCQkJVkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOworCQkJc3RhdEIgPSBJOTE1 X1JFQUQoVkxWX0VEUF9QU1JfU1RBVFVTX0NUTChQSVBFX0IpKSAmCisJCQkJVkxWX0VEUF9QU1Jf Q1VSUl9TVEFURV9NQVNLOworCQkJZW5hYmxlZCA9ICgoc3RhdEEgPT0gVkxWX0VEUF9QU1JfQUNU SVZFX05PUkZCX1VQKSB8fAorCQkJCSAgIChzdGF0QSA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfU0Zf VVBEQVRFKSB8fAorCQkJCSAgIChzdGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVAp IHx8CisJCQkJICAgKHN0YXRCID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKTsKKwkJ fSBlbHNlCisJCQllbmFibGVkID0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldikpICYgRURQX1BT Ul9FTkFCTEU7CisJfQorCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVzIiwgeWVzbm8oZW5hYmxl ZCkpOwogCi0JaWYgKEhBU19QU1IoZGV2KSkKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJ CWlmICgoc3RhdEEgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX05PUkZCX1VQKSB8fAorCQkgICAgKHN0 YXRBID09IFZMVl9FRFBfUFNSX0FDVElWRV9TRl9VUERBVEUpKQorCQkJc2VxX3B1dHMobSwgIiBw aXBlIEEiKTsKKwkJaWYgKChzdGF0QiA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8 CisJCSAgICAoc3RhdEIgPT0gVkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURSkpCisJCQlzZXFf cHV0cyhtLCAiIHBpcGUgQiIpOworCX0KKworCXNlcV9wdXRzKG0sICJcbiIpOworCisJLyogVkxW IFBTUiBoYXMgbm8ga2luZCBvZiBwZXJmb3JtYW5jZSBjb3VudGVyICovCisJaWYgKEhBU19QU1Io ZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKSB7CiAJCXBzcnBlcmYgPSBJOTE1X1JFQUQoRURQ X1BTUl9QRVJGX0NOVChkZXYpKSAmCiAJCQlFRFBfUFNSX1BFUkZfQ05UX01BU0s7Ci0Jc2VxX3By aW50ZihtLCAiUGVyZm9ybWFuY2VfQ291bnRlcjogJXVcbiIsIHBzcnBlcmYpOworCQlzZXFfcHJp bnRmKG0sICJQZXJmb3JtYW5jZV9Db3VudGVyOiAldVxuIiwgcHNycGVyZik7CisJfQogCiAJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKaW5kZXggN2M1M2Q0ZC4uMzRkZWUyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBA IC03NDcsNiArNzQ3LDcgQEAgc3RydWN0IGk5MTVfcHNyIHsKIAlib29sIHNpbmtfc3VwcG9ydDsK IAlib29sIHNvdXJjZV9vazsKIAlib29sIHNldHVwX2RvbmU7CisJYm9vbCBhY3RpdmU7CiB9Owog CiBlbnVtIGludGVsX3BjaCB7CkBAIC0xODY2LDcgKzE4NjcsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVf ZmlsZV9wcml2YXRlIHsKIAogI2RlZmluZSBIQVNfRERJKGRldikJCShJTlRFTF9JTkZPKGRldikt Pmhhc19kZGkpCiAjZGVmaW5lIEhBU19GUEdBX0RCR19VTkNMQUlNRUQoZGV2KQkoSU5URUxfSU5G TyhkZXYpLT5oYXNfZnBnYV9kYmcpCi0jZGVmaW5lIEhBU19QU1IoZGV2KQkJKElTX0hBU1dFTEwo ZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKKyNkZWZpbmUgSEFTX1BTUihkZXYpCQkoSVNfSEFT V0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpIHx8IFwKKwkJCQkgSVNfVkFMTEVZVklFVyhk ZXYpKQogI2RlZmluZSBIQVNfUEM4KGRldikJCShJU19IQVNXRUxMKGRldikpIC8qIFhYWCBIU1c6 VUxYICovCiAjZGVmaW5lIEhBU19SVU5USU1FX1BNKGRldikJKElTX0hBU1dFTEwoZGV2KSkKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggMzk3NzBmNy4uYjNlZWMzYiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCkBAIC0xMjk5LDYgKzEyOTksOSBAQCBpOTE1X2dlbV9zd19maW5pc2hfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJaW50ZWxfZWRwX3Bzcl9pbmFj dGl2YXRlKGRldik7CisKIAlvYmogPSB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAo ZGV2LCBmaWxlLCBhcmdzLT5oYW5kbGUpKTsKIAlpZiAoJm9iai0+YmFzZSA9PSBOVUxMKSB7CiAJ CXJldCA9IC1FTk9FTlQ7CkBAIC00MDU5LDYgKzQwNjIsOSBAQCBpOTE1X2dlbV9idXN5X2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAorCWlmIChJU19WQUxMRVlWSUVXKGRldikpCisJCWludGVsX2VkcF9wc3JfaW5hY3Rp dmF0ZShkZXYpOworCiAJb2JqID0gdG9faW50ZWxfYm8oZHJtX2dlbV9vYmplY3RfbG9va3VwKGRl diwgZmlsZSwgYXJncy0+aGFuZGxlKSk7CiAJaWYgKCZvYmotPmJhc2UgPT0gTlVMTCkgewogCQly ZXQgPSAtRU5PRU5UOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggY2JiYWYyNi4uMjAzOWQ3 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC0xOTY4LDYgKzE5NjgsNDMgQEAKICNkZWZp bmUgQkNMUlBBVChwaXBlKSBfUElQRShwaXBlLCBfQkNMUlBBVF9BLCBfQkNMUlBBVF9CKQogI2Rl ZmluZSBWU1lOQ1NISUZUKHRyYW5zKSBfVFJBTlNDT0RFUih0cmFucywgX1ZTWU5DU0hJRlRfQSwg X1ZTWU5DU0hJRlRfQikKIAorLyogVkxWIGVEUCBQU1IgcmVnaXN0ZXJzICovCisjZGVmaW5lIF9Q U1JDVExBCQkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2MDA5MCkKKyNkZWZpbmUgX1BTUkNUTEIJ CQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYxMDkwKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfRU5B QkxFCQkJKDE8PDApCisjZGVmaW5lICBWTFZfRURQX1BTUl9SRVNFVAkJCSgxPDwxKQorI2RlZmlu ZSAgVkxWX0VEUF9QU1JfTU9ERV9NQVNLCQkJKDc8PDIpCisjZGVmaW5lICBWTFZfRURQX1BTUl9N T0RFX0hXX1RJTUVSCQkoMTw8MykKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX01PREVfU1dfVElNRVIJ CSgxPDwyKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfU0lOR0xFX0ZSQU1FX1VQREFURQkoMTw8NykK KyNkZWZpbmUgIFZMVl9FRFBfUFNSX0FDVElWRV9FTlRSWQkJKDE8PDgpCisjZGVmaW5lICBWTFZf RURQX1BTUl9TUkNfVFJBTlNNSVRURVJfU1RBVEUJKDE8PDkpCisjZGVmaW5lICBWTFZfRURQX1BT Ul9EQkxfRlJBTUUJCQkoMTw8MTApCisjZGVmaW5lICBWTFZfRURQX1BTUl9GUkFNRV9DT1VOVF9N QVNLCQkoMHhmZjw8MTYpCisjZGVmaW5lICBWTFZfRURQX1BTUl9JRExFX0ZSQU1FX1NISUZUCQkx NgorI2RlZmluZSAgVkxWX0VEUF9QU1JfSU5UX1RSQU5TSVRJT04JCSgxPDwyNCkKKyNkZWZpbmUg VkxWX0VEUF9QU1JfQ1RMKHBpcGUpIF9QSVBFKHBpcGUsIF9QU1JDVExBLCBfUFNSQ1RMQikKKwor I2RlZmluZSBfVlNDU0RQQQkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2MDBhMCkKKyNkZWZpbmUg X1ZTQ1NEUEIJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjEwYTApCisjZGVmaW5lICBWTFZfRURQ X1BTUl9TRFBfRlJFUV9NQVNLCSgzPDwzMCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX1NEUF9GUkVR X09OQ0UJKDE8PDMxKQorI2RlZmluZSAgVkxWX0VEUF9QU1JfU0RQX0ZSRVFfRVZGUkFNRQkoMTw8 MzApCisjZGVmaW5lIFZMVl9FRFBfVlNDX1NEUF9SRUcocGlwZSkJX1BJUEUocGlwZSwgX1ZTQ1NE UEEsIF9WU0NTRFBCKQorCisjZGVmaW5lIF9QU1JTVEFUQQkJCShWTFZfRElTUExBWV9CQVNFICsg MHg2MDA5NCkKKyNkZWZpbmUgX1BTUlNUQVRCCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYxMDk0 KQorI2RlZmluZSAgVkxWX0VEUF9QU1JfTEFTVF9TVEFURV9NQVNLCSg3PDwzKQorI2RlZmluZSAg VkxWX0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLCTcKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0RJU0FC TEVECQkoMDw8MCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0lOQUNUSVZFCQkoMTw8MCkKKyNkZWZp bmUgIFZMVl9FRFBfUFNSX0lOX1RSQU5TX1RPX0FDVElWRQkoMjw8MCkKKyNkZWZpbmUgIFZMVl9F RFBfUFNSX0FDVElWRV9OT1JGQl9VUAkoMzw8MCkKKyNkZWZpbmUgIFZMVl9FRFBfUFNSX0FDVElW RV9TRl9VUERBVEUJKDQ8PDApCisjZGVmaW5lICBWTFZfRURQX1BTUl9FWElUCQkoNTw8MCkKKyNk ZWZpbmUgIFZMVl9FRFBfUFNSX0lOX1RSQU5TCQkoMTw8NykKKyNkZWZpbmUgVkxWX0VEUF9QU1Jf U1RBVFVTX0NUTChwaXBlKSBfUElQRShwaXBlLCBfUFNSU1RBVEEsIF9QU1JTVEFUQikKKwogLyog SFNXKyBlRFAgUFNSIHJlZ2lzdGVycyAqLwogI2RlZmluZSBFRFBfUFNSX0JBU0UoZGV2KSAgICAg ICAgICAgICAgICAgICAgICAgKElTX0hBU1dFTEwoZGV2KSA/IDB4NjQ4MDAgOiAweDZmODAwKQog I2RlZmluZSBFRFBfUFNSX0NUTChkZXYpCQkJKEVEUF9QU1JfQkFTRShkZXYpICsgMCkKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAxYTlhYTE5Li4wODFjOGUyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC03NTAxLDYgKzc1MDEsOSBAQCBzdGF0aWMg dm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXUz MiBiYXNlID0gMCwgcG9zID0gMDsKIAlib29sIHZpc2libGU7CiAKKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoZGV2KTsKKwogCWlmIChvbikKIAkJ YmFzZSA9IGludGVsX2NydGMtPmN1cnNvcl9hZGRyOwogCkBAIC04MjI4LDE2ICs4MjMxLDIwIEBA IHZvaWQgaW50ZWxfbWFya19pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlpZiAoZGV2 X3ByaXYtPmluZm8tPmdlbiA+PSA2KQogCQlnZW42X3Jwc19pZGxlKGRldi0+ZGV2X3ByaXZhdGUp OworCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJaW50ZWxfZWRwX3Bzcl91cGRhdGUoZGV2 KTsKIH0KIAorCiB2b2lkIGludGVsX21hcmtfZmJfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQkJc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nKQogewogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKIAotCWlmICghaTkxNS5wb3dlcnNhdmUpCi0JCXJldHVybjsKKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoZGV2KTsKIAogCWxpc3RfZm9yX2Vh Y2hfZW50cnkoY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7CiAJCWlm ICghY3J0Yy0+ZmIpCkBAIC04Njg4LDYgKzg2OTUsMTAgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYgKHdvcmsgPT0gTlVMTCkKIAkJ cmV0dXJuIC1FTk9NRU07CiAKKwkvKiBJbmFjdGl2YXRlIFBTUiBlYXJseSBpbiBwYWdlIGZsaXAg Ki8KKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQlpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUo ZGV2KTsKKwogCXdvcmstPmV2ZW50ID0gZXZlbnQ7CiAJd29yay0+Y3J0YyA9IGNydGM7CiAJd29y ay0+b2xkX2ZiX29iaiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKG9sZF9mYiktPm9iajsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCmluZGV4IDMwZDQzNTAuLmU5YTBhY2UgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwpAQCAtMTU3OCwyMSArMTU3OCwzNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCX0KIH0KIAotc3RhdGljIGJv b2wgaXNfZWRwX3BzcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIGJvb2wgaXNfZWRw X3BzcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQoreworCXJldHVybiBpbnRlbF9kcC0+cHNy X2RwY2RbMF0gJiBEUF9QU1JfSVNfU1VQUE9SVEVEOworfQorCitzdGF0aWMgYm9vbCB2bHZfZWRw X2lzX3Bzcl9lbmFibGVkX29uX3BpcGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKKwl1aW50MzJfdCB2YWw7CiAKLQlyZXR1cm4gZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQ7 CisJdmFsID0gSTkxNV9SRUFEKFZMVl9FRFBfUFNSX1NUQVRVU19DVEwocGlwZSkpICYKKwkJVkxW X0VEUF9QU1JfQ1VSUl9TVEFURV9NQVNLOworCXJldHVybiAodmFsID09IFZMVl9FRFBfUFNSX0FD VElWRV9OT1JGQl9VUCkgfHwKKwkJKHZhbCA9PSBWTFZfRURQX1BTUl9BQ1RJVkVfU0ZfVVBEQVRF KTsKIH0KIAogc3RhdGljIGJvb2wgaW50ZWxfZWRwX2lzX3Bzcl9lbmFibGVkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKIAotCWlmICghSEFTX1BTUihkZXYpKQotCQlyZXR1cm4gZmFsc2U7CisJ aWYgKEhBU19QU1IoZGV2KSkgeworCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQkJcmV0dXJu IHZsdl9lZHBfaXNfcHNyX2VuYWJsZWRfb25fcGlwZShkZXYsIFBJUEVfQSkgfHwKKwkJCQl2bHZf ZWRwX2lzX3Bzcl9lbmFibGVkX29uX3BpcGUoZGV2LCBQSVBFX0IpOworCQllbHNlCisJCQlyZXR1 cm4gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKGRldikpICYgRURQX1BTUl9FTkFCTEU7CisJfQogCi0J cmV0dXJuIEk5MTVfUkVBRChFRFBfUFNSX0NUTChkZXYpKSAmIEVEUF9QU1JfRU5BQkxFOworCXJl dHVybiBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfZWRwX3Bzcl93cml0ZV92c2Moc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKQEAgLTE2MjYsMjggKzE2NDAsNDkgQEAgc3RhdGljIHZv aWQgaW50ZWxfZWRwX3Bzcl93cml0ZV92c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAog c3RhdGljIHZvaWQgaW50ZWxfZWRwX3Bzcl9zZXR1cChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHAp OworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9y dC0+YmFzZS5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBlZHBfdnNjX3BzciBwc3JfdnNjOworCXVpbnQzMl90 IHZhbDsKIAogCWlmIChkZXZfcHJpdi0+cHNyLnNldHVwX2RvbmUpCiAJCXJldHVybjsKIAotCS8q IFByZXBhcmUgVlNDIHBhY2tldCBhcyBwZXIgRURQIDEuMyBzcGVjLCBUYWJsZSAzLjEwICovCi0J bWVtc2V0KCZwc3JfdnNjLCAwLCBzaXplb2YocHNyX3ZzYykpOwotCXBzcl92c2Muc2RwX2hlYWRl ci5IQjAgPSAwOwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjEgPSAweDc7Ci0JcHNyX3ZzYy5zZHBf aGVhZGVyLkhCMiA9IDB4MjsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIzID0gMHg4OwotCWludGVs X2VkcF9wc3Jfd3JpdGVfdnNjKGludGVsX2RwLCAmcHNyX3ZzYyk7CisJaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkgeworCQl2YWwgID0gSTkxNV9SRUFEKFZMVl9FRFBfVlNDX1NEUF9SRUcoUElQRV9B KSk7CisJCXZhbCAmPSB+VkxWX0VEUF9QU1JfU0RQX0ZSRVFfTUFTSzsKKwkJdmFsIHw9IFZMVl9F RFBfUFNSX1NEUF9GUkVRX0VWRlJBTUU7CisJCUk5MTVfV1JJVEUoVkxWX0VEUF9WU0NfU0RQX1JF RyhQSVBFX0EpLCB2YWwpOworCisJCXZhbCAgPSBJOTE1X1JFQUQoVkxWX0VEUF9WU0NfU0RQX1JF RyhQSVBFX0IpKTsKKwkJdmFsICY9IH5WTFZfRURQX1BTUl9TRFBfRlJFUV9NQVNLOworCQl2YWwg fD0gVkxWX0VEUF9QU1JfU0RQX0ZSRVFfRVZGUkFNRTsKKwkJSTkxNV9XUklURShWTFZfRURQX1ZT Q19TRFBfUkVHKFBJUEVfQiksIHZhbCk7CisJfSBlbHNlIHsKKwkJLyogUHJlcGFyZSBWU0MgcGFj a2V0IGFzIHBlciBFRFAgMS4zIHNwZWMsIFRhYmxlIDMuMTAgKi8KKwkJbWVtc2V0KCZwc3JfdnNj LCAwLCBzaXplb2YocHNyX3ZzYykpOworCQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIwID0gMDsKKwkJ cHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKKwkJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMiA9 IDB4MjsKKwkJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMyA9IDB4ODsKKwkJaW50ZWxfZWRwX3Bzcl93 cml0ZV92c2MoaW50ZWxfZHAsICZwc3JfdnNjKTsKIAotCS8qIEF2b2lkIGNvbnRpbnVvdXMgUFNS IGV4aXQgYnkgbWFza2luZyBtZW11cCBhbmQgaHBkICovCi0JSTkxNV9XUklURShFRFBfUFNSX0RF QlVHX0NUTChkZXYpLCBFRFBfUFNSX0RFQlVHX01BU0tfTUVNVVAgfAotCQkgICBFRFBfUFNSX0RF QlVHX01BU0tfSFBEIHwgRURQX1BTUl9ERUJVR19NQVNLX0xQU1ApOworCQkvKiBBdm9pZCBjb250 aW51b3VzIFBTUiBleGl0IGJ5IG1hc2tpbmcgbWVtdXAgYW5kIGhwZCAqLworCQlJOTE1X1dSSVRF KEVEUF9QU1JfREVCVUdfQ1RMKGRldiksIEVEUF9QU1JfREVCVUdfTUFTS19NRU1VUCB8CisJCQkg ICBFRFBfUFNSX0RFQlVHX01BU0tfSFBEIHwgRURQX1BTUl9ERUJVR19NQVNLX0xQU1ApOworCX0K IAogCWRldl9wcml2LT5wc3Iuc2V0dXBfZG9uZSA9IHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIHZs dl9lZHBfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCit7CisJLyog RW5hYmxlIFBTUiBpbiBzaW5rICovCisJaW50ZWxfZHBfYXV4X25hdGl2ZV93cml0ZV8xKGludGVs X2RwLCBEUF9QU1JfRU5fQ0ZHLAorCQkJCSAgICBEUF9QU1JfRU5BQkxFKTsKK30KKwogc3RhdGlj IHZvaWQgaW50ZWxfZWRwX3Bzcl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHAp OwpAQCAtMTY3OCw2ICsxNzEzLDI4IEBAIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wc3JfZW5hYmxl X3Npbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJICAgKGF1eF9jbG9ja19kaXZpZGVy IDw8IERQX0FVWF9DSF9DVExfQklUX0NMT0NLXzJYX1NISUZUKSk7CiB9CiAKK3N0YXRpYyB2b2lk IHZsdl9lZHBfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKK3sK KwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19w b3J0KGludGVsX2RwKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQt PmJhc2UuYmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9CisJCXRvX2lu dGVsX2NydGMoaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKKworCXVpbnQzMl90IGlk bGVfZnJhbWVzID0gMTsKKwl1aW50MzJfdCB2YWw7CisKKwl2YWwgPSBJOTE1X1JFQUQoVkxWX0VE UF9QU1JfQ1RMKGludGVsX2NydGMtPnBpcGUpKTsKKwl2YWwgfD0gVkxWX0VEUF9QU1JfRU5BQkxF OworCXZhbCAmPSB+VkxWX0VEUF9QU1JfTU9ERV9NQVNLOworCisJdmFsIHw9IFZMVl9FRFBfUFNS X01PREVfSFdfVElNRVI7CisJdmFsICY9IH5WTFZfRURQX1BTUl9GUkFNRV9DT1VOVF9NQVNLOwor CXZhbCB8PSBpZGxlX2ZyYW1lcyA8PCBFRFBfUFNSX0lETEVfRlJBTUVfU0hJRlQ7CisKKwlJOTE1 X1dSSVRFKFZMVl9FRFBfUFNSX0NUTChpbnRlbF9jcnRjLT5waXBlKSwgdmFsKTsKK30KKwogc3Rh dGljIHZvaWQgaW50ZWxfZWRwX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2RldihpbnRl bF9kcCk7CkBAIC0xNzE5LDggKzE3NzYsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfcHNyX21h dGNoX2NvbmRpdGlvbnMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJcmV0dXJuIGZhbHNl OwogCX0KIAotCWlmICgoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKSB8 fAotCSAgICAoZGlnX3BvcnQtPnBvcnQgIT0gUE9SVF9BKSkgeworCWlmIChIQVNfRERJKGRldikg JiYgKChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApIHx8CisJCQkgICAg IChkaWdfcG9ydC0+cG9ydCAhPSBQT1JUX0EpKSkgewogCQlEUk1fREVCVUdfS01TKCJIU1cgdGll cyBQU1IgdG8gRERJIEEgKGVEUClcbiIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQpAQCAtMTc2NSwz NyArMTgyMiw4MyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfcHNyX21hdGNoX2NvbmRpdGlvbnMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qIEJh eXRyYWlsIHN1cHBvcnRzIHBlci1waXBlIFBTUiBjb25maWd1cmF0aW9uLCBob3dldmVyIFBTUiBv bgorCSogUElQRV9CIGlzbid0IHdvcmtpbmcgcHJvcGVybHkuIFNvIGxldCdzIGtlZXAgaXQgZGlz YWJsZWQgZm9yIG5vdy4gKi8KKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmIGludGVsX2NydGMt PnBpcGUgIT0gUElQRV9BKSB7CisJCURSTV9ERUJVR19LTVMoIlBTUiBvbiBCWVQgaXNuJ3QgZW5h YmxlZCBvbiBwaXBlIEIuXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCWRldl9wcml2LT5w c3Iuc291cmNlX29rID0gdHJ1ZTsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgaW50 ZWxfZWRwX3Bzcl9kb19lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVs X2RwKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFz ZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9CisJCXRvX2ludGVsX2NydGMo aW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKIAotCWlmICghaW50ZWxfZWRwX3Bzcl9t YXRjaF9jb25kaXRpb25zKGludGVsX2RwKSB8fAotCSAgICBpbnRlbF9lZHBfaXNfcHNyX2VuYWJs ZWQoZGV2KSkKLQkJcmV0dXJuOworCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJaWYgKHZs dl9lZHBfaXNfcHNyX2VuYWJsZWRfb25fcGlwZShkZXYsIGludGVsX2NydGMtPnBpcGUpKQorCQkJ cmV0dXJuOworCX0gZWxzZQorCQlpZiAoaW50ZWxfZWRwX2lzX3Bzcl9lbmFibGVkKGRldikpCisJ CQlyZXR1cm47CiAKIAkvKiBTZXR1cCBQU1Igb25jZSAqLwogCWludGVsX2VkcF9wc3Jfc2V0dXAo aW50ZWxfZHApOwogCiAJLyogRW5hYmxlIFBTUiBvbiB0aGUgcGFuZWwgKi8KLQlpbnRlbF9lZHBf cHNyX2VuYWJsZV9zaW5rKGludGVsX2RwKTsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQl2 bHZfZWRwX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7CisJZWxzZQorCQlpbnRlbF9lZHBfcHNy X2VuYWJsZV9zaW5rKGludGVsX2RwKTsKIAogCS8qIEVuYWJsZSBQU1Igb24gdGhlIGhvc3QgKi8K LQlpbnRlbF9lZHBfcHNyX2VuYWJsZV9zb3VyY2UoaW50ZWxfZHApOworCWlmIChJU19WQUxMRVlW SUVXKGRldikpCisJCXZsdl9lZHBfcHNyX2VuYWJsZV9zb3VyY2UoaW50ZWxfZHApOworCWVsc2UK KwkJaW50ZWxfZWRwX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwKTsKKworCWRldl9wcml2LT5w c3IuYWN0aXZlID0gdHJ1ZTsKIH0KIAogdm9pZCBpbnRlbF9lZHBfcHNyX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9k cF90b19kZXYoaW50ZWxfZHApOworCWlmICghaXNfZWRwX3BzcihpbnRlbF9kcCkpCisJCXJldHVy bjsKIAotCWlmIChpbnRlbF9lZHBfcHNyX21hdGNoX2NvbmRpdGlvbnMoaW50ZWxfZHApICYmCi0J ICAgICFpbnRlbF9lZHBfaXNfcHNyX2VuYWJsZWQoZGV2KSkKKwlpZiAoaW50ZWxfZWRwX3Bzcl9t YXRjaF9jb25kaXRpb25zKGludGVsX2RwKSkKIAkJaW50ZWxfZWRwX3Bzcl9kb19lbmFibGUoaW50 ZWxfZHApOwogfQogCit2b2lkIHZsdl9lZHBfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9 IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50 ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9CisJCXRvX2ludGVsX2NydGMoaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjKTsKKwl1 aW50MzJfdCB2YWwgPSBJOTE1X1JFQUQoVkxWX0VEUF9QU1JfU1RBVFVTX0NUTChpbnRlbF9jcnRj LT5waXBlKSk7CisKKwlpZiAoIWRldl9wcml2LT5wc3Iuc2V0dXBfZG9uZSkKKwkJcmV0dXJuOwor CisJaW50ZWxfZWRwX3Bzcl9pbmFjdGl2YXRlKGRldik7CisKKwlpZiAodmFsICYgVkxWX0VEUF9Q U1JfSU5fVFJBTlMpCisJCXVkZWxheSgyNTApOworCisJdmFsID0gSTkxNV9SRUFEKFZMVl9FRFBf UFNSX0NUTChpbnRlbF9jcnRjLT5waXBlKSk7CisJdmFsICY9IH5WTFZfRURQX1BTUl9BQ1RJVkVf RU5UUlk7CisJdmFsICY9IH5WTFZfRURQX1BTUl9FTkFCTEU7CisJdmFsICY9IH5WTFZfRURQX1BT Ul9NT0RFX01BU0s7CisJSTkxNV9XUklURShWTFZfRURQX1BTUl9DVEwoaW50ZWxfY3J0Yy0+cGlw ZSksIHZhbCk7Cit9CisKIHZvaWQgaW50ZWxfZWRwX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2Rl dihpbnRlbF9kcCk7CkBAIC0xODE3LDI4ICsxOTIwLDY2IEBAIHZvaWQgaW50ZWxfZWRwX3Bzcl91 cGRhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcjsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gTlVMTDsKKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YzsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoZW5jb2RlciwgJmRl di0+bW9kZV9jb25maWcuZW5jb2Rlcl9saXN0LCBiYXNlLmhlYWQpCiAJCWlmIChlbmNvZGVyLT50 eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKIAkJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2Rw KCZlbmNvZGVyLT5iYXNlKTsKIAotCQkJaWYgKCFpc19lZHBfcHNyKGRldikpCisJCQlpZiAoIWlz X2VkcF9wc3IoaW50ZWxfZHApKQogCQkJCXJldHVybjsKIAotCQkJaWYgKCFpbnRlbF9lZHBfcHNy X21hdGNoX2NvbmRpdGlvbnMoaW50ZWxfZHApKQotCQkJCWludGVsX2VkcF9wc3JfZGlzYWJsZShp bnRlbF9kcCk7Ci0JCQllbHNlCisJCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVy LT5iYXNlLmNydGMpOworCisJCQlpZiAoIWludGVsX2VkcF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhp bnRlbF9kcCkpIHsKKwkJCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCQkJCQl2bHZfZWRwX3Bz cl9kaXNhYmxlKGludGVsX2RwKTsKKwkJCQllbHNlCisJCQkJCWludGVsX2VkcF9wc3JfZGlzYWJs ZShpbnRlbF9kcCk7CisJCQl9IGVsc2UKIAkJCQlpZiAoIWludGVsX2VkcF9pc19wc3JfZW5hYmxl ZChkZXYpKQogCQkJCQlpbnRlbF9lZHBfcHNyX2RvX2VuYWJsZShpbnRlbF9kcCk7CiAJCX0KIH0K IAordm9pZCBpbnRlbF9lZHBfcHNyX2luYWN0aXZhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjOworCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBOVUxMOworCisJaWYgKCFk ZXZfcHJpdi0+cHNyLnNldHVwX2RvbmUgfHwgIWRldl9wcml2LT5wc3IuYWN0aXZlKQorCQlyZXR1 cm47CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVuY29kZXIsICZkZXYtPm1vZGVfY29uZmlnLmVu Y29kZXJfbGlzdCwgYmFzZS5oZWFkKQorCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfRURQKSB7CisJCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7 CisJCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOworCisJ CQlpZiAoIXZsdl9lZHBfaXNfcHNyX2VuYWJsZWRfb25fcGlwZShkZXYsCisJCQkJCQkJICAgIGlu dGVsX2NydGMtPnBpcGUpKQorCQkJCWNvbnRpbnVlOworCisJCQlkZXZfcHJpdi0+cHNyLmFjdGl2 ZSA9IGZhbHNlOworCQkJSTkxNV9XUklURShWTFZfRURQX1BTUl9DVEwoaW50ZWxfY3J0Yy0+cGlw ZSksCisJCQkJICAgVkxWX0VEUF9QU1JfUkVTRVQpOworCQkJLyogV2FDbGVhclBTUlJlc2V0OnZs diAqLworCQkJSTkxNV9XUklURShWTFZfRURQX1BTUl9DVEwoaW50ZWxfY3J0Yy0+cGlwZSksIDAp OworCisJCQlpbnRlbF9kcF9zaW5rX2RwbXMoaW50ZWxfZHAsIERSTV9NT0RFX0RQTVNfT04pOwor CQl9Cit9CisKIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcCgmZW5jb2Rlci0+YmFzZSk7CiAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChp bnRlbF9kcCktPnBvcnQ7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2Uu ZGV2OwogCisJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKKwkJdmx2X2VkcF9wc3JfZGlzYWJsZShp bnRlbF9kcCk7CisKIAkvKiBNYWtlIHN1cmUgdGhlIHBhbmVsIGlzIG9mZiBiZWZvcmUgdHJ5aW5n IHRvIGNoYW5nZSB0aGUgbW9kZS4gQnV0IGFsc28KIAkgKiBlbnN1cmUgdGhhdCB3ZSBoYXZlIHZk ZCB3aGlsZSB3ZSBzd2l0Y2ggb2ZmIHRoZSBwYW5lbC4gKi8KIAlpbnRlbF9lZHBfYmFja2xpZ2h0 X29mZihpbnRlbF9kcCk7CkBAIC0xODk1LDYgKzIwMzYsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZW5h YmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwogCiAJaW50ZWxfZWRw X2JhY2tsaWdodF9vbihpbnRlbF9kcCk7CisJaW50ZWxfZWRwX3Bzcl9lbmFibGUoaW50ZWxfZHAp OwogfQogCiBzdGF0aWMgdm9pZCBnNHhfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNzFjMTM3MS4uODIwMjZl ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTc0OCw2ICs3NDgsNyBAQCB2b2lkIGlu dGVsX2VkcF9wYW5lbF9vZmYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2b2lkIGludGVs X2VkcF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9pZCBpbnRlbF9l ZHBfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2b2lkIGludGVsX2Vk cF9wc3JfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpbnRlbF9lZHBfcHNy X2luYWN0aXZhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIAogLyogaW50ZWxfZHNpLmMg Ki8KLS0gCjEuOC4xLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==