From: Sibi Sankar Subject: [PATCH v4 3/3] drm/msm/dsi: replace version checks with helper functions Date: Tue, 29 May 2018 19:50:33 +0530 Message-ID: <20180529142033.12989-4-sibis@codeaurora.org> References: <20180529142033.12989-1-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180529142033.12989-1-sibis@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: architt@codeaurora.org, robdclark@gmail.com, jcrouse@codeaurora.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sibi Sankar List-Id: linux-arm-msm@vger.kernel.org UmVwbGFjZSB2ZXJzaW9uIGNoZWNrcyB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGJvdW5kIHRv CmNmZ19oYW5kbGVyIGZvciBEU0kgdjIsIERTSSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBjb250 cm9sbGVycwoKU2lnbmVkLW9mZi1ieTogU2liaSBTYW5rYXIgPHNpYmlzQGNvZGVhdXJvcmEub3Jn PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgfCAyNDEgKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAy MTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNp X2hvc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKaW5kZXggMWY0MmM4 OTExNDJmLi5hMzUxZjIyNDNmZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNp L2RzaV9ob3N0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwpAQCAt NDI3LDE5ICs0MjcsNiBAQCBzdGF0aWMgaW50IGRzaV9jbGtfaW5pdChzdHJ1Y3QgbXNtX2RzaV9o b3N0ICptc21faG9zdCkKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjZmdfaG5kLT5tYWpvciA9 PSBNU01fRFNJX1ZFUl9NQUpPUl82RyAmJgotCSAgICBjZmdfaG5kLT5taW5vciA+PSBNU01fRFNJ XzZHX1ZFUl9NSU5PUl9WMl8yXzEpIHsKLQkJbXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGsgPSBtc21f Y2xrX2dldChwZGV2LCAiYnl0ZV9pbnRmIik7Ci0JCWlmIChJU19FUlIobXNtX2hvc3QtPmJ5dGVf aW50Zl9jbGspKSB7Ci0JCQlyZXQgPSBQVFJfRVJSKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xrKTsK LQkJCXByX2VycigiJXM6IGNhbid0IGZpbmQgYnl0ZV9pbnRmIGNsb2NrLiByZXQ9JWRcbiIsCi0J CQkgICAgICAgIF9fZnVuY19fLCByZXQpOwotCQkJZ290byBleGl0OwotCQl9Ci0JfSBlbHNlIHsK LQkJbXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGsgPSBOVUxMOwotCX0KLQogCW1zbV9ob3N0LT5ieXRl X2Nsa19zcmMgPSBjbGtfZ2V0X3BhcmVudChtc21faG9zdC0+Ynl0ZV9jbGspOwogCWlmICghbXNt X2hvc3QtPmJ5dGVfY2xrX3NyYykgewogCQlyZXQgPSAtRU5PREVWOwpAQCAtNDU0LDMxICs0NDEs OCBAQCBzdGF0aWMgaW50IGRzaV9jbGtfaW5pdChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCkKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjZmdfaG5kLT5tYWpvciA9PSBNU01fRFNJX1ZF Ul9NQUpPUl9WMikgewotCQltc21faG9zdC0+c3JjX2NsayA9IG1zbV9jbGtfZ2V0KHBkZXYsICJz cmMiKTsKLQkJaWYgKElTX0VSUihtc21faG9zdC0+c3JjX2NsaykpIHsKLQkJCXJldCA9IFBUUl9F UlIobXNtX2hvc3QtPnNyY19jbGspOwotCQkJcHJfZXJyKCIlczogY2FuJ3QgZmluZCBzcmMgY2xv Y2suIHJldD0lZFxuIiwKLQkJCQlfX2Z1bmNfXywgcmV0KTsKLQkJCW1zbV9ob3N0LT5zcmNfY2xr ID0gTlVMTDsKLQkJCWdvdG8gZXhpdDsKLQkJfQotCi0JCW1zbV9ob3N0LT5lc2NfY2xrX3NyYyA9 IGNsa19nZXRfcGFyZW50KG1zbV9ob3N0LT5lc2NfY2xrKTsKLQkJaWYgKCFtc21faG9zdC0+ZXNj X2Nsa19zcmMpIHsKLQkJCXJldCA9IC1FTk9ERVY7Ci0JCQlwcl9lcnIoIiVzOiBjYW4ndCBnZXQg ZXNjIGNsb2NrIHBhcmVudC4gcmV0PSVkXG4iLAotCQkJCV9fZnVuY19fLCByZXQpOwotCQkJZ290 byBleGl0OwotCQl9Ci0KLQkJbXNtX2hvc3QtPmRzaV9jbGtfc3JjID0gY2xrX2dldF9wYXJlbnQo bXNtX2hvc3QtPnNyY19jbGspOwotCQlpZiAoIW1zbV9ob3N0LT5kc2lfY2xrX3NyYykgewotCQkJ cmV0ID0gLUVOT0RFVjsKLQkJCXByX2VycigiJXM6IGNhbid0IGdldCBzcmMgY2xvY2sgcGFyZW50 LiByZXQ9JWRcbiIsCi0JCQkJX19mdW5jX18sIHJldCk7Ci0JCX0KLQl9CisJaWYgKGNmZ19obmQt Pm9wcy0+Y2xrX2luaXRfdmVyKQorCQlyZXQgPSBjZmdfaG5kLT5vcHMtPmNsa19pbml0X3Zlciht c21faG9zdCk7CiBleGl0OgogCXJldHVybiByZXQ7CiB9CkBAIC02ODIsMTYgKzY0Niw2IEBAIGlu dCBkc2lfbGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQog CXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZShzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCkKLXsKLQljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFu ZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwotCi0JaWYgKGNmZ19obmQtPm1ham9y ID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKQotCQlyZXR1cm4gZHNpX2xpbmtfY2xrX2VuYWJsZV82 Zyhtc21faG9zdCk7Ci0JZWxzZQotCQlyZXR1cm4gZHNpX2xpbmtfY2xrX2VuYWJsZV92Mihtc21f aG9zdCk7Ci19Ci0KIHZvaWQgZHNpX2xpbmtfY2xrX2Rpc2FibGVfNmcoc3RydWN0IG1zbV9kc2lf aG9zdCAqbXNtX2hvc3QpCiB7CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5lc2Nf Y2xrKTsKQEAgLTcwOSwyNCArNjYzLDYgQEAgdm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIAljbGtfZGlzYWJsZV91bnByZXBhcmUobXNt X2hvc3QtPmJ5dGVfY2xrKTsKIH0KIAotc3RhdGljIHZvaWQgZHNpX2xpbmtfY2xrX2Rpc2FibGUo c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCi17Ci0JY29uc3Qgc3RydWN0IG1zbV9kc2lf Y2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQotCWlmIChjZmdfaG5k LT5tYWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl82RykgewotCQljbGtfZGlzYWJsZV91bnByZXBh cmUobXNtX2hvc3QtPmVzY19jbGspOwotCQljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3Qt PnBpeGVsX2Nsayk7Ci0JCWlmIChtc21faG9zdC0+Ynl0ZV9pbnRmX2NsaykKLQkJCWNsa19kaXNh YmxlX3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9pbnRmX2Nsayk7Ci0JCWNsa19kaXNhYmxlX3Vu cHJlcGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOwotCX0gZWxzZSB7Ci0JCWNsa19kaXNhYmxlX3Vu cHJlcGFyZShtc21faG9zdC0+cGl4ZWxfY2xrKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1z bV9ob3N0LT5zcmNfY2xrKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5lc2Nf Y2xrKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2Nsayk7Ci0JfQot fQotCiBpbnQgZHNpX2NhbGNfY2xrX3JhdGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QpCiB7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBtc21faG9zdC0+bW9kZTsK QEAgLTgwNSw3MyArNzQxLDYgQEAgaW50IGRzaV9jYWxjX2Nsa19yYXRlX3YyKHN0cnVjdCBtc21f ZHNpX2hvc3QgKm1zbV9ob3N0KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGRzaV9jYWxj X2Nsa19yYXRlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQotewotCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlID0gbXNtX2hvc3QtPm1vZGU7Ci0JY29uc3Qgc3RydWN0IG1zbV9k c2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQl1OCBsYW5lcyA9 IG1zbV9ob3N0LT5sYW5lczsKLQl1MzIgYnBwID0gZHNpX2dldF9icHAobXNtX2hvc3QtPmZvcm1h dCk7Ci0JdTMyIHBjbGtfcmF0ZTsKLQotCWlmICghbW9kZSkgewotCQlwcl9lcnIoIiVzOiBtb2Rl IG5vdCBzZXRcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcGNsa19y YXRlID0gbW9kZS0+Y2xvY2sgKiAxMDAwOwotCWlmIChsYW5lcyA+IDApIHsKLQkJbXNtX2hvc3Qt PmJ5dGVfY2xrX3JhdGUgPSAocGNsa19yYXRlICogYnBwKSAvICg4ICogbGFuZXMpOwotCX0gZWxz ZSB7Ci0JCXByX2VycigiJXM6IGZvcmNpbmcgbWRzc19kc2kgbGFuZXMgdG8gMVxuIiwgX19mdW5j X18pOwotCQltc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gODsK LQl9Ci0KLQlEQkcoInBjbGs9JWQsIGJjbGs9JWQiLCBwY2xrX3JhdGUsIG1zbV9ob3N0LT5ieXRl X2Nsa19yYXRlKTsKLQotCW1zbV9ob3N0LT5lc2NfY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUobXNt X2hvc3QtPmVzY19jbGspOwotCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01B Sk9SX1YyKSB7Ci0JCXVuc2lnbmVkIGludCBlc2NfbWh6LCBlc2NfZGl2OwotCQl1bnNpZ25lZCBs b25nIGJ5dGVfbWh6OwotCi0JCW1zbV9ob3N0LT5zcmNfY2xrX3JhdGUgPSAocGNsa19yYXRlICog YnBwKSAvIDg7Ci0KLQkJLyoKLQkJICogZXNjIGNsb2NrIGlzIGJ5dGUgY2xvY2sgZm9sbG93ZWQg YnkgYSA0IGJpdCBkaXZpZGVyLAotCQkgKiB3ZSBuZWVkIHRvIGZpbmQgYW4gZXNjYXBlIGNsb2Nr IGZyZXF1ZW5jeSB3aXRoaW4gdGhlCi0JCSAqIG1pcGkgRFNJIHNwZWMgcmFuZ2Ugd2l0aGluIHRo ZSBtYXhpbXVtIGRpdmlkZXIgbGltaXQKLQkJICogV2UgaXRlcmF0ZSBoZXJlIGJldHdlZW4gYW4g ZXNjYXBlIGNsb2NrIGZyZXF1ZW5jZXkKLQkJICogYmV0d2VlbiAyMCBNaHogdG8gNSBNaHogYW5k IHBpY2sgdXAgdGhlIGZpcnN0IG9uZQotCQkgKiB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkgb3Vy IGRpdmlkZXIKLQkJICovCi0KLQkJYnl0ZV9taHogPSBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSAv IDEwMDAwMDA7Ci0KLQkJZm9yIChlc2NfbWh6ID0gMjA7IGVzY19taHogPj0gNTsgZXNjX21oei0t KSB7Ci0JCQllc2NfZGl2ID0gRElWX1JPVU5EX1VQKGJ5dGVfbWh6LCBlc2NfbWh6KTsKLQotCQkJ LyoKLQkJCSAqIFRPRE86IElkZWFsbHksIHdlIHNob3VsZG4ndCBrbm93IHdoYXQgc29ydCBvZiBk aXZpZGVyCi0JCQkgKiBpcyBhdmFpbGFibGUgaW4gbW1zc19jYywgd2UncmUganVzdCBhc3N1bWlu ZyB0aGF0Ci0JCQkgKiBpdCdsbCBhbHdheXMgYmUgYSA0IGJpdCBkaXZpZGVyLiBOZWVkIHRvIGNv bWUgdXAgd2l0aAotCQkJICogYSBiZXR0ZXIgd2F5IGhlcmUuCi0JCQkgKi8KLQkJCWlmIChlc2Nf ZGl2ID49IDEgJiYgZXNjX2RpdiA8PSAxNikKLQkJCQlicmVhazsKLQkJfQotCi0JCWlmIChlc2Nf bWh6IDwgNSkKLQkJCXJldHVybiAtRUlOVkFMOwotCi0JCW1zbV9ob3N0LT5lc2NfY2xrX3JhdGUg PSBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSAvIGVzY19kaXY7Ci0KLQkJREJHKCJlc2M9JWQsIHNy Yz0lZCIsIG1zbV9ob3N0LT5lc2NfY2xrX3JhdGUsCi0JCQltc21faG9zdC0+c3JjX2Nsa19yYXRl KTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZHNpX2ludHJfY3RybChzdHJ1 Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdTMyIG1hc2ssIGludCBlbmFibGUpCiB7CiAJdTMy IGludHI7CkBAIC0xMTkzLDU0ICsxMDYyLDYgQEAgaW50IGRzaV90eF9idWZfYWxsb2NfdjIoc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQogCXJldHVybiAwOwogfQogCi0v KiBkc2lfY21kICovCi1zdGF0aWMgaW50IGRzaV90eF9idWZfYWxsb2Moc3RydWN0IG1zbV9kc2lf aG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBt c21faG9zdC0+ZGV2OwotCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9w cml2YXRlOwotCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNt X2hvc3QtPmNmZ19obmQ7Ci0JaW50IHJldDsKLQl1aW50NjRfdCBpb3ZhOwotCi0JaWYgKGNmZ19o bmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKSB7Ci0JCW1zbV9ob3N0LT50eF9nZW1f b2JqID0gbXNtX2dlbV9uZXcoZGV2LCBzaXplLCBNU01fQk9fVU5DQUNIRUQpOwotCQlpZiAoSVNf RVJSKG1zbV9ob3N0LT50eF9nZW1fb2JqKSkgewotCQkJcmV0ID0gUFRSX0VSUihtc21faG9zdC0+ dHhfZ2VtX29iaik7Ci0JCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2VtLCAlZFxu IiwKLQkJCQlfX2Z1bmNfXywgcmV0KTsKLQkJCW1zbV9ob3N0LT50eF9nZW1fb2JqID0gTlVMTDsK LQkJCXJldHVybiByZXQ7Ci0JCX0KLQotCQlyZXQgPSBtc21fZ2VtX2dldF9pb3ZhKG1zbV9ob3N0 LT50eF9nZW1fb2JqLAotCQkJCXByaXYtPmttcy0+YXNwYWNlLCAmaW92YSk7Ci0JCWlmIChyZXQp IHsKLQkJCXByX2VycigiJXM6IGZhaWxlZCB0byBnZXQgaW92YSwgJWRcbiIsIF9fZnVuY19fLCBy ZXQpOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCWlmIChpb3ZhICYgMHgwNykgewotCQkJcHJf ZXJyKCIlczogYnVmIE5PVCA4IGJ5dGVzIGFsaWduZWRcbiIsIF9fZnVuY19fKTsKLQkJCXJldHVy biAtRUlOVkFMOwotCQl9Ci0KLQkJbXNtX2hvc3QtPnR4X3NpemUgPSBtc21faG9zdC0+dHhfZ2Vt X29iai0+c2l6ZTsKLQl9IGVsc2UgewotCQltc21faG9zdC0+dHhfYnVmID0gZG1hX2FsbG9jX2Nv aGVyZW50KGRldi0+ZGV2LCBzaXplLAotCQkJCQkmbXNtX2hvc3QtPnR4X2J1Zl9wYWRkciwgR0ZQ X0tFUk5FTCk7Ci0JCWlmICghbXNtX2hvc3QtPnR4X2J1ZikgewotCQkJcmV0ID0gLUVOT01FTTsK LQkJCXByX2VycigiJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSB0eCBidWYsICVkXG4iLAotCQkJCV9f ZnVuY19fLCByZXQpOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCW1zbV9ob3N0LT50eF9zaXpl ID0gc2l6ZTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZHNpX3R4X2J1Zl9m cmVlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBtc21faG9zdC0+ZGV2OwpAQCAtMTI5NiwxNSArMTExNywxMSBAQCBzdGF0aWMgaW50 IGRzaV9jbWRfZG1hX2FkZChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwKIAkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9S XzZHKSB7Ci0JCWRhdGEgPSBtc21fZ2VtX2dldF92YWRkcihtc21faG9zdC0+dHhfZ2VtX29iaik7 Ci0JCWlmIChJU19FUlIoZGF0YSkpIHsKLQkJCXJldCA9IFBUUl9FUlIoZGF0YSk7Ci0JCQlwcl9l cnIoIiVzOiBnZXQgdmFkZHIgZmFpbGVkLCAlZFxuIiwgX19mdW5jX18sIHJldCk7Ci0JCQlyZXR1 cm4gcmV0OwotCQl9Ci0JfSBlbHNlIHsKLQkJZGF0YSA9IG1zbV9ob3N0LT50eF9idWY7CisJZGF0 YSA9IGNmZ19obmQtPm9wcy0+dHhfYnVmX2dldChtc21faG9zdCk7CisJaWYgKElTX0VSUihkYXRh KSkgeworCQlyZXQgPSBQVFJfRVJSKGRhdGEpOworCQlwcl9lcnIoIiVzOiBnZXQgdmFkZHIgZmFp bGVkLCAlZFxuIiwgX19mdW5jX18sIHJldCk7CisJCXJldHVybiByZXQ7CiAJfQogCiAJLyogTVNN IHNwZWNpZmljIGNvbW1hbmQgZm9ybWF0IGluIG1lbW9yeSAqLwpAQCAtMTMyNSw4ICsxMTQyLDgg QEAgc3RhdGljIGludCBkc2lfY21kX2RtYV9hZGQoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QsCiAJaWYgKHBhY2tldC5zaXplIDwgbGVuKQogCQltZW1zZXQoZGF0YSArIHBhY2tldC5zaXpl LCAweGZmLCBsZW4gLSBwYWNrZXQuc2l6ZSk7CiAKLQlpZiAoY2ZnX2huZC0+bWFqb3IgPT0gTVNN X0RTSV9WRVJfTUFKT1JfNkcpCi0JCW1zbV9nZW1fcHV0X3ZhZGRyKG1zbV9ob3N0LT50eF9nZW1f b2JqKTsKKwlpZiAoY2ZnX2huZC0+b3BzLT50eF9idWZfcHV0KQorCQljZmdfaG5kLT5vcHMtPnR4 X2J1Zl9wdXQobXNtX2hvc3QpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTEzOTcsMjEgKzEyMTQs MTQgQEAgaW50IGRzaV9kbWFfYmFzZV9nZXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QsIHVpbnQ2NF90ICpkbWFfYmFzZSkKIHN0YXRpYyBpbnQgZHNpX2NtZF9kbWFfdHgoc3RydWN0 IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBsZW4pCiB7CiAJY29uc3Qgc3RydWN0IG1zbV9k c2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gbXNtX2hvc3QtPmRldjsKLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpw cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgcmV0OwogCXVpbnQ2NF90IGRtYV9iYXNlOwog CWJvb2wgdHJpZ2dlcmVkOwogCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01B Sk9SXzZHKSB7Ci0JCXJldCA9IG1zbV9nZW1fZ2V0X2lvdmEobXNtX2hvc3QtPnR4X2dlbV9vYmos Ci0JCQkJcHJpdi0+a21zLT5hc3BhY2UsICZkbWFfYmFzZSk7Ci0JCWlmIChyZXQpIHsKLQkJCXBy X2VycigiJXM6IGZhaWxlZCB0byBnZXQgaW92YTogJWRcbiIsIF9fZnVuY19fLCByZXQpOwotCQkJ cmV0dXJuIHJldDsKLQkJfQotCX0gZWxzZSB7Ci0JCWRtYV9iYXNlID0gbXNtX2hvc3QtPnR4X2J1 Zl9wYWRkcjsKKwlyZXQgPSBjZmdfaG5kLT5vcHMtPmRtYV9iYXNlX2dldChtc21faG9zdCwgJmRt YV9iYXNlKTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiJXM6IGZhaWxlZCB0byBnZXQgaW92YTog JWRcbiIsIF9fZnVuY19fLCByZXQpOworCQlyZXR1cm4gcmV0OwogCX0KIAogCXJlaW5pdF9jb21w bGV0aW9uKCZtc21faG9zdC0+ZG1hX2NvbXApOwpAQCAtMjA0OSw2ICsxODU5LDcgQEAgaW50IG1z bV9kc2lfaG9zdF9tb2Rlc2V0X2luaXQoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJCQkJ CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QgPSB0b19tc21fZHNpX2hvc3QoaG9zdCk7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hh bmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2ID0gbXNtX2hvc3QtPnBkZXY7CiAJaW50IHJldDsKIApAQCAtMjA2OSw3ICsxODgw LDcgQEAgaW50IG1zbV9kc2lfaG9zdF9tb2Rlc2V0X2luaXQoc3RydWN0IG1pcGlfZHNpX2hvc3Qg Kmhvc3QsCiAJfQogCiAJbXNtX2hvc3QtPmRldiA9IGRldjsKLQlyZXQgPSBkc2lfdHhfYnVmX2Fs bG9jKG1zbV9ob3N0LCBTWl80Syk7CisJcmV0ID0gY2ZnX2huZC0+b3BzLT50eF9idWZfYWxsb2Mo bXNtX2hvc3QsIFNaXzRLKTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IGFsbG9jIHR4IGdl bSBvYmogZmFpbGVkLCAlZFxuIiwgX19mdW5jX18sIHJldCk7CiAJCXJldHVybiByZXQ7CkBAIC0y MTI3LDYgKzE5MzgsNyBAQCBpbnQgbXNtX2RzaV9ob3N0X3hmZXJfcHJlcGFyZShzdHJ1Y3QgbWlw aV9kc2lfaG9zdCAqaG9zdCwKIAkJCQljb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCiB7 CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19tc21fZHNpX2hvc3QoaG9zdCk7 CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+ Y2ZnX2huZDsKIAogCS8qIFRPRE86IG1ha2Ugc3VyZSBkc2lfY21kX21kcCBpcyBpZGxlLgogCSAq IFNpbmNlIERTSTZHIHYxLjIuMCwgd2UgY2FuIHNldCBEU0lfVFJJR19DVFJMLkJMT0NLX0RNQV9X SVRISU5fRlJBTUUKQEAgLTIxMzksNyArMTk1MSw3IEBAIGludCBtc21fZHNpX2hvc3RfeGZlcl9w cmVwYXJlKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCSAqIG1kcCBjbG9jayBuZWVkIHRv IGJlIGVuYWJsZWQgdG8gcmVjZWl2ZSBkc2kgaW50ZXJydXB0CiAJICovCiAJcG1fcnVudGltZV9n ZXRfc3luYygmbXNtX2hvc3QtPnBkZXYtPmRldik7Ci0JZHNpX2xpbmtfY2xrX2VuYWJsZShtc21f aG9zdCk7CisJY2ZnX2huZC0+b3BzLT5saW5rX2Nsa19lbmFibGUobXNtX2hvc3QpOwogCiAJLyog VE9ETzogdm90ZSBmb3IgYnVzIGJhbmR3aWR0aCAqLwogCkBAIC0yMTYwLDYgKzE5NzIsNyBAQCB2 b2lkIG1zbV9kc2lfaG9zdF94ZmVyX3Jlc3RvcmUoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3Qs CiAJCQkJY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQogewogCXN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3QpOworCWNvbnN0IHN0cnVjdCBt c21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7CiAKIAlkc2lf aW50cl9jdHJsKG1zbV9ob3N0LCBEU0lfSVJRX01BU0tfQ01EX0RNQV9ET05FLCAwKTsKIAlkc2lf d3JpdGUobXNtX2hvc3QsIFJFR19EU0lfQ1RSTCwgbXNtX2hvc3QtPmRtYV9jbWRfY3RybF9yZXN0 b3JlKTsKQEAgLTIxNjksNyArMTk4Miw3IEBAIHZvaWQgbXNtX2RzaV9ob3N0X3hmZXJfcmVzdG9y ZShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAogCS8qIFRPRE86IHVudm90ZSBmb3IgYnVz IGJhbmR3aWR0aCAqLwogCi0JZHNpX2xpbmtfY2xrX2Rpc2FibGUobXNtX2hvc3QpOworCWNmZ19o bmQtPm9wcy0+bGlua19jbGtfZGlzYWJsZShtc21faG9zdCk7CiAJcG1fcnVudGltZV9wdXRfYXV0 b3N1c3BlbmQoJm1zbV9ob3N0LT5wZGV2LT5kZXYpOwogfQogCkBAIC0yMzMzLDcgKzIxNDYsNiBA QCBpbnQgbXNtX2RzaV9ob3N0X3NldF9zcmNfcGxsKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0 LAogCXN0cnVjdCBtc21fZHNpX3BsbCAqc3JjX3BsbCkKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCA9IHRvX21zbV9kc2lfaG9zdChob3N0KTsKLQljb25zdCBzdHJ1Y3QgbXNtX2Rz aV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCXN0cnVjdCBjbGsg KmJ5dGVfY2xrX3Byb3ZpZGVyLCAqcGl4ZWxfY2xrX3Byb3ZpZGVyOwogCWludCByZXQ7CiAKQEAg LTIzNTksMTQgKzIxNzEsMTYgQEAgaW50IG1zbV9kc2lfaG9zdF9zZXRfc3JjX3BsbChzdHJ1Y3Qg bWlwaV9kc2lfaG9zdCAqaG9zdCwKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjZmdfaG5kLT5t YWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl9WMikgeworCWlmIChtc21faG9zdC0+ZHNpX2Nsa19z cmMpIHsKIAkJcmV0ID0gY2xrX3NldF9wYXJlbnQobXNtX2hvc3QtPmRzaV9jbGtfc3JjLCBwaXhl bF9jbGtfcHJvdmlkZXIpOwogCQlpZiAocmV0KSB7CiAJCQlwcl9lcnIoIiVzOiBjYW4ndCBzZXQg cGFyZW50IHRvIGRzaV9jbGtfc3JjLiByZXQ9JWRcbiIsCiAJCQkJX19mdW5jX18sIHJldCk7CiAJ CQlnb3RvIGV4aXQ7CiAJCX0KKwl9CiAKKwlpZiAobXNtX2hvc3QtPmVzY19jbGtfc3JjKSB7CiAJ CXJldCA9IGNsa19zZXRfcGFyZW50KG1zbV9ob3N0LT5lc2NfY2xrX3NyYywgYnl0ZV9jbGtfcHJv dmlkZXIpOwogCQlpZiAocmV0KSB7CiAJCQlwcl9lcnIoIiVzOiBjYW4ndCBzZXQgcGFyZW50IHRv IGVzY19jbGtfc3JjLiByZXQ9JWRcbiIsCkBAIC0yMzk2LDkgKzIyMTAsMTAgQEAgdm9pZCBtc21f ZHNpX2hvc3RfZ2V0X3BoeV9jbGtfcmVxKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCXN0 cnVjdCBtc21fZHNpX3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSkKIHsKIAlzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCA9IHRvX21zbV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3Qg bXNtX2RzaV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCWludCBy ZXQ7CiAKLQlyZXQgPSBkc2lfY2FsY19jbGtfcmF0ZShtc21faG9zdCk7CisJcmV0ID0gY2ZnX2hu ZC0+b3BzLT5jYWxjX2Nsa19yYXRlKG1zbV9ob3N0KTsKIAlpZiAocmV0KSB7CiAJCXByX2Vycigi JXM6IHVuYWJsZSB0byBjYWxjIGNsayByYXRlLCAlZFxuIiwgX19mdW5jX18sIHJldCk7CiAJCXJl dHVybjsKQEAgLTI0NjMsNiArMjI3OCw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3Ry dWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJCQlzdHJ1Y3QgbXNtX2RzaV9waHlfc2hhcmVkX3Rp bWluZ3MgKnBoeV9zaGFyZWRfdGltaW5ncykKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21f aG9zdCA9IHRvX21zbV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdf aGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCWludCByZXQgPSAwOwogCiAJ bXV0ZXhfbG9jaygmbXNtX2hvc3QtPmRldl9tdXRleCk7CkBAIC0yNDgxLDcgKzIyOTcsNyBAQCBp bnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCX0K IAogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoJm1zbV9ob3N0LT5wZGV2LT5kZXYpOwotCXJldCA9IGRz aV9saW5rX2Nsa19lbmFibGUobXNtX2hvc3QpOworCXJldCA9IGNmZ19obmQtPm9wcy0+bGlua19j bGtfZW5hYmxlKG1zbV9ob3N0KTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IGZhaWxlZCB0 byBlbmFibGUgbGluayBjbG9ja3MuIHJldD0lZFxuIiwKIAkJICAgICAgIF9fZnVuY19fLCByZXQp OwpAQCAtMjUwOCw3ICsyMzI0LDcgQEAgaW50IG1zbV9kc2lfaG9zdF9wb3dlcl9vbihzdHJ1Y3Qg bWlwaV9kc2lfaG9zdCAqaG9zdCwKIAlyZXR1cm4gMDsKIAogZmFpbF9kaXNhYmxlX2NsazoKLQlk c2lfbGlua19jbGtfZGlzYWJsZShtc21faG9zdCk7CisJY2ZnX2huZC0+b3BzLT5saW5rX2Nsa19k aXNhYmxlKG1zbV9ob3N0KTsKIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZCgmbXNtX2hvc3Qt PnBkZXYtPmRldik7CiBmYWlsX2Rpc2FibGVfcmVnOgogCWRzaV9ob3N0X3JlZ3VsYXRvcl9kaXNh YmxlKG1zbV9ob3N0KTsKQEAgLTI1MjAsNiArMjMzNiw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93 ZXJfb24oc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiBpbnQgbXNtX2RzaV9ob3N0X3Bvd2Vy X29mZihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCkKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCA9IHRvX21zbV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3QgbXNtX2Rz aV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCiAJbXV0ZXhfbG9j aygmbXNtX2hvc3QtPmRldl9tdXRleCk7CiAJaWYgKCFtc21faG9zdC0+cG93ZXJfb24pIHsKQEAg LTI1MzQsNyArMjM1MSw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb2ZmKHN0cnVjdCBtaXBp X2RzaV9ob3N0ICpob3N0KQogCiAJcGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUoJm1zbV9o b3N0LT5wZGV2LT5kZXYpOwogCi0JZHNpX2xpbmtfY2xrX2Rpc2FibGUobXNtX2hvc3QpOworCWNm Z19obmQtPm9wcy0+bGlua19jbGtfZGlzYWJsZShtc21faG9zdCk7CiAJcG1fcnVudGltZV9wdXRf YXV0b3N1c3BlbmQoJm1zbV9ob3N0LT5wZGV2LT5kZXYpOwogCiAJZHNpX2hvc3RfcmVndWxhdG9y X2Rpc2FibGUobXNtX2hvc3QpOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJ bmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0 aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==