From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sibi S Subject: [PATCH v2 3/3] drm/msm/dsi: replace version checks with helper functions Date: Tue, 20 Mar 2018 01:11:03 +0530 Message-ID: <20180319194103.2454-4-sibis@codeaurora.org> References: <20180319194103.2454-1-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180319194103.2454-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, Sibi S , dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org UmVwbGFjZSB2ZXJzaW9uIGNoZWNrcyB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGJvdW5kIHRv CmNmZ19oYW5kbGVyIGZvciBEU0kgdjIsIERTSSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBjb250 cm9sbGVycwoKU2lnbmVkLW9mZi1ieTogU2liaSBTIDxzaWJpc0Bjb2RlYXVyb3JhLm9yZz4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jIHwgMjQyICsrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCsp LCAyMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv ZHNpX2hvc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMKaW5kZXggNzhl YTQ1NDBmMGVlLi5iZjg1ODFhNWU2N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZHNpL2RzaV9ob3N0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwpA QCAtNDI2LDE5ICs0MjYsNiBAQCBzdGF0aWMgaW50IGRzaV9jbGtfaW5pdChzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCkKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjZmdfaG5kLT5tYWpv ciA9PSBNU01fRFNJX1ZFUl9NQUpPUl82RyAmJgotCSAgICBjZmdfaG5kLT5taW5vciA+PSBNU01f RFNJXzZHX1ZFUl9NSU5PUl9WMl8yXzEpIHsKLQkJbXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGsgPSBt c21fY2xrX2dldChwZGV2LCAiYnl0ZV9pbnRmIik7Ci0JCWlmIChJU19FUlIobXNtX2hvc3QtPmJ5 dGVfaW50Zl9jbGspKSB7Ci0JCQlyZXQgPSBQVFJfRVJSKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xr KTsKLQkJCXByX2VycigiJXM6IGNhbid0IGZpbmQgYnl0ZV9pbnRmIGNsb2NrLiByZXQ9JWRcbiIs Ci0JCQkgICAgICAgIF9fZnVuY19fLCByZXQpOwotCQkJZ290byBleGl0OwotCQl9Ci0JfSBlbHNl IHsKLQkJbXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGsgPSBOVUxMOwotCX0KLQogCW1zbV9ob3N0LT5i eXRlX2Nsa19zcmMgPSBjbGtfZ2V0X3BhcmVudChtc21faG9zdC0+Ynl0ZV9jbGspOwogCWlmICgh bXNtX2hvc3QtPmJ5dGVfY2xrX3NyYykgewogCQlyZXQgPSAtRU5PREVWOwpAQCAtNDUzLDMxICs0 NDAsOCBAQCBzdGF0aWMgaW50IGRzaV9jbGtfaW5pdChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21f aG9zdCkKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjZmdfaG5kLT5tYWpvciA9PSBNU01fRFNJ X1ZFUl9NQUpPUl9WMikgewotCQltc21faG9zdC0+c3JjX2NsayA9IG1zbV9jbGtfZ2V0KHBkZXYs ICJzcmMiKTsKLQkJaWYgKElTX0VSUihtc21faG9zdC0+c3JjX2NsaykpIHsKLQkJCXJldCA9IFBU Ul9FUlIobXNtX2hvc3QtPnNyY19jbGspOwotCQkJcHJfZXJyKCIlczogY2FuJ3QgZmluZCBzcmMg Y2xvY2suIHJldD0lZFxuIiwKLQkJCQlfX2Z1bmNfXywgcmV0KTsKLQkJCW1zbV9ob3N0LT5zcmNf Y2xrID0gTlVMTDsKLQkJCWdvdG8gZXhpdDsKLQkJfQotCi0JCW1zbV9ob3N0LT5lc2NfY2xrX3Ny YyA9IGNsa19nZXRfcGFyZW50KG1zbV9ob3N0LT5lc2NfY2xrKTsKLQkJaWYgKCFtc21faG9zdC0+ ZXNjX2Nsa19zcmMpIHsKLQkJCXJldCA9IC1FTk9ERVY7Ci0JCQlwcl9lcnIoIiVzOiBjYW4ndCBn ZXQgZXNjIGNsb2NrIHBhcmVudC4gcmV0PSVkXG4iLAotCQkJCV9fZnVuY19fLCByZXQpOwotCQkJ Z290byBleGl0OwotCQl9Ci0KLQkJbXNtX2hvc3QtPmRzaV9jbGtfc3JjID0gY2xrX2dldF9wYXJl bnQobXNtX2hvc3QtPnNyY19jbGspOwotCQlpZiAoIW1zbV9ob3N0LT5kc2lfY2xrX3NyYykgewot CQkJcmV0ID0gLUVOT0RFVjsKLQkJCXByX2VycigiJXM6IGNhbid0IGdldCBzcmMgY2xvY2sgcGFy ZW50LiByZXQ9JWRcbiIsCi0JCQkJX19mdW5jX18sIHJldCk7Ci0JCX0KLQl9CisJaWYgKGNmZ19o bmQtPm9wcy0+Y2xrX2luaXRfdmVyKQorCQlyZXQgPSBjZmdfaG5kLT5vcHMtPmNsa19pbml0X3Zl cihtc21faG9zdCk7CiBleGl0OgogCXJldHVybiByZXQ7CiB9CkBAIC02ODEsMTYgKzY0NSw2IEBA IGludCBkc2lfbGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZShzdHJ1 Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKLXsKLQljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdf aGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwotCi0JaWYgKGNmZ19obmQtPm1h am9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKQotCQlyZXR1cm4gZHNpX2xpbmtfY2xrX2VuYWJs ZV82Zyhtc21faG9zdCk7Ci0JZWxzZQotCQlyZXR1cm4gZHNpX2xpbmtfY2xrX2VuYWJsZV92Miht c21faG9zdCk7Ci19Ci0KIHZvaWQgZHNpX2xpbmtfY2xrX2Rpc2FibGVfNmcoc3RydWN0IG1zbV9k c2lfaG9zdCAqbXNtX2hvc3QpCiB7CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5l c2NfY2xrKTsKQEAgLTcwOCwyNCArNjYyLDYgQEAgdm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV92 MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIAljbGtfZGlzYWJsZV91bnByZXBhcmUo bXNtX2hvc3QtPmJ5dGVfY2xrKTsKIH0KIAotc3RhdGljIHZvaWQgZHNpX2xpbmtfY2xrX2Rpc2Fi bGUoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCi17Ci0JY29uc3Qgc3RydWN0IG1zbV9k c2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQotCWlmIChjZmdf aG5kLT5tYWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl82RykgewotCQljbGtfZGlzYWJsZV91bnBy ZXBhcmUobXNtX2hvc3QtPmVzY19jbGspOwotCQljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hv c3QtPnBpeGVsX2Nsayk7Ci0JCWlmIChtc21faG9zdC0+Ynl0ZV9pbnRmX2NsaykKLQkJCWNsa19k aXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9pbnRmX2Nsayk7Ci0JCWNsa19kaXNhYmxl X3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOwotCX0gZWxzZSB7Ci0JCWNsa19kaXNhYmxl X3VucHJlcGFyZShtc21faG9zdC0+cGl4ZWxfY2xrKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KG1zbV9ob3N0LT5zcmNfY2xrKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5l c2NfY2xrKTsKLQkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2Nsayk7Ci0J fQotfQotCiBpbnQgZHNpX2NhbGNfY2xrX3JhdGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNt X2hvc3QpCiB7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBtc21faG9zdC0+bW9k ZTsKQEAgLTgxNCw3MyArNzUwLDYgQEAgaW50IGRzaV9jYWxjX2Nsa19yYXRlX3YyKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGRzaV9j YWxjX2Nsa19yYXRlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQotewotCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlID0gbXNtX2hvc3QtPm1vZGU7Ci0JY29uc3Qgc3RydWN0IG1z bV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQl1OCBsYW5l cyA9IG1zbV9ob3N0LT5sYW5lczsKLQl1MzIgYnBwID0gZHNpX2dldF9icHAobXNtX2hvc3QtPmZv cm1hdCk7Ci0JdTMyIHBjbGtfcmF0ZTsKLQotCWlmICghbW9kZSkgewotCQlwcl9lcnIoIiVzOiBt b2RlIG5vdCBzZXRcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcGNs a19yYXRlID0gbW9kZS0+Y2xvY2sgKiAxMDAwOwotCWlmIChsYW5lcyA+IDApIHsKLQkJbXNtX2hv c3QtPmJ5dGVfY2xrX3JhdGUgPSAocGNsa19yYXRlICogYnBwKSAvICg4ICogbGFuZXMpOwotCX0g ZWxzZSB7Ci0JCXByX2VycigiJXM6IGZvcmNpbmcgbWRzc19kc2kgbGFuZXMgdG8gMVxuIiwgX19m dW5jX18pOwotCQltc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8g ODsKLQl9Ci0KLQlEQkcoInBjbGs9JWQsIGJjbGs9JWQiLCBwY2xrX3JhdGUsIG1zbV9ob3N0LT5i eXRlX2Nsa19yYXRlKTsKLQotCW1zbV9ob3N0LT5lc2NfY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUo bXNtX2hvc3QtPmVzY19jbGspOwotCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVS X01BSk9SX1YyKSB7Ci0JCXVuc2lnbmVkIGludCBlc2NfbWh6LCBlc2NfZGl2OwotCQl1bnNpZ25l ZCBsb25nIGJ5dGVfbWh6OwotCi0JCW1zbV9ob3N0LT5zcmNfY2xrX3JhdGUgPSAocGNsa19yYXRl ICogYnBwKSAvIDg7Ci0KLQkJLyoKLQkJICogZXNjIGNsb2NrIGlzIGJ5dGUgY2xvY2sgZm9sbG93 ZWQgYnkgYSA0IGJpdCBkaXZpZGVyLAotCQkgKiB3ZSBuZWVkIHRvIGZpbmQgYW4gZXNjYXBlIGNs b2NrIGZyZXF1ZW5jeSB3aXRoaW4gdGhlCi0JCSAqIG1pcGkgRFNJIHNwZWMgcmFuZ2Ugd2l0aGlu IHRoZSBtYXhpbXVtIGRpdmlkZXIgbGltaXQKLQkJICogV2UgaXRlcmF0ZSBoZXJlIGJldHdlZW4g YW4gZXNjYXBlIGNsb2NrIGZyZXF1ZW5jZXkKLQkJICogYmV0d2VlbiAyMCBNaHogdG8gNSBNaHog YW5kIHBpY2sgdXAgdGhlIGZpcnN0IG9uZQotCQkgKiB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkg b3VyIGRpdmlkZXIKLQkJICovCi0KLQkJYnl0ZV9taHogPSBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0 ZSAvIDEwMDAwMDA7Ci0KLQkJZm9yIChlc2NfbWh6ID0gMjA7IGVzY19taHogPj0gNTsgZXNjX21o ei0tKSB7Ci0JCQllc2NfZGl2ID0gRElWX1JPVU5EX1VQKGJ5dGVfbWh6LCBlc2NfbWh6KTsKLQot CQkJLyoKLQkJCSAqIFRPRE86IElkZWFsbHksIHdlIHNob3VsZG4ndCBrbm93IHdoYXQgc29ydCBv ZiBkaXZpZGVyCi0JCQkgKiBpcyBhdmFpbGFibGUgaW4gbW1zc19jYywgd2UncmUganVzdCBhc3N1 bWluZyB0aGF0Ci0JCQkgKiBpdCdsbCBhbHdheXMgYmUgYSA0IGJpdCBkaXZpZGVyLiBOZWVkIHRv IGNvbWUgdXAgd2l0aAotCQkJICogYSBiZXR0ZXIgd2F5IGhlcmUuCi0JCQkgKi8KLQkJCWlmIChl c2NfZGl2ID49IDEgJiYgZXNjX2RpdiA8PSAxNikKLQkJCQlicmVhazsKLQkJfQotCi0JCWlmIChl c2NfbWh6IDwgNSkKLQkJCXJldHVybiAtRUlOVkFMOwotCi0JCW1zbV9ob3N0LT5lc2NfY2xrX3Jh dGUgPSBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSAvIGVzY19kaXY7Ci0KLQkJREJHKCJlc2M9JWQs IHNyYz0lZCIsIG1zbV9ob3N0LT5lc2NfY2xrX3JhdGUsCi0JCQltc21faG9zdC0+c3JjX2Nsa19y YXRlKTsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZHNpX2ludHJfY3RybChz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdTMyIG1hc2ssIGludCBlbmFibGUpCiB7CiAJ dTMyIGludHI7CkBAIC0xMjA0LDU1ICsxMDczLDYgQEAgaW50IGRzaV90eF9idWZfYWxsb2NfdjIo c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQogCXJldHVybiAwOwogfQog Ci0vKiBkc2lfY21kICovCi1zdGF0aWMgaW50IGRzaV90eF9idWZfYWxsb2Moc3RydWN0IG1zbV9k c2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBtc21faG9zdC0+ZGV2OwotCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwotCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0g bXNtX2hvc3QtPmNmZ19obmQ7Ci0JaW50IHJldDsKLQl1aW50NjRfdCBpb3ZhOwotCi0JaWYgKGNm Z19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKSB7Ci0JCW1zbV9ob3N0LT50eF9n ZW1fb2JqID0gbXNtX2dlbV9uZXcoZGV2LCBzaXplLCBNU01fQk9fVU5DQUNIRUQpOwotCQlpZiAo SVNfRVJSKG1zbV9ob3N0LT50eF9nZW1fb2JqKSkgewotCQkJcmV0ID0gUFRSX0VSUihtc21faG9z dC0+dHhfZ2VtX29iaik7Ci0JCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2VtLCAl ZFxuIiwKLQkJCQlfX2Z1bmNfXywgcmV0KTsKLQkJCW1zbV9ob3N0LT50eF9nZW1fb2JqID0gTlVM TDsKLQkJCXJldHVybiByZXQ7Ci0JCX0KLQotCQlyZXQgPSBtc21fZ2VtX2dldF9pb3ZhKG1zbV9o b3N0LT50eF9nZW1fb2JqLAotCQkJCXByaXYtPmttcy0+YXNwYWNlLCAmaW92YSk7Ci0JCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAocmV0KSB7Ci0JCQlwcl9lcnIoIiVz OiBmYWlsZWQgdG8gZ2V0IGlvdmEsICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJCXJldHVybiBy ZXQ7Ci0JCX0KLQotCQlpZiAoaW92YSAmIDB4MDcpIHsKLQkJCXByX2VycigiJXM6IGJ1ZiBOT1Qg OCBieXRlcyBhbGlnbmVkXG4iLCBfX2Z1bmNfXyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQot Ci0JCW1zbV9ob3N0LT50eF9zaXplID0gbXNtX2hvc3QtPnR4X2dlbV9vYmotPnNpemU7Ci0JfSBl bHNlIHsKLQkJbXNtX2hvc3QtPnR4X2J1ZiA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYtPmRldiwg c2l6ZSwKLQkJCQkJJm1zbV9ob3N0LT50eF9idWZfcGFkZHIsIEdGUF9LRVJORUwpOwotCQlpZiAo IW1zbV9ob3N0LT50eF9idWYpIHsKLQkJCXJldCA9IC1FTk9NRU07Ci0JCQlwcl9lcnIoIiVzOiBm YWlsZWQgdG8gYWxsb2NhdGUgdHggYnVmLCAlZFxuIiwKLQkJCQlfX2Z1bmNfXywgcmV0KTsKLQkJ CXJldHVybiByZXQ7Ci0JCX0KLQotCQltc21faG9zdC0+dHhfc2l6ZSA9IHNpemU7Ci0JfQotCi0J cmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGRzaV90eF9idWZfZnJlZShzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbXNtX2hvc3Qt PmRldjsKQEAgLTEzMDcsMTUgKzExMjcsMTEgQEAgc3RhdGljIGludCBkc2lfY21kX2RtYV9hZGQo c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAot CWlmIChjZmdfaG5kLT5tYWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl82RykgewotCQlkYXRhID0g bXNtX2dlbV9nZXRfdmFkZHIobXNtX2hvc3QtPnR4X2dlbV9vYmopOwotCQlpZiAoSVNfRVJSKGRh dGEpKSB7Ci0JCQlyZXQgPSBQVFJfRVJSKGRhdGEpOwotCQkJcHJfZXJyKCIlczogZ2V0IHZhZGRy IGZhaWxlZCwgJWRcbiIsIF9fZnVuY19fLCByZXQpOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCX0g ZWxzZSB7Ci0JCWRhdGEgPSBtc21faG9zdC0+dHhfYnVmOworCWRhdGEgPSBjZmdfaG5kLT5vcHMt PnR4X2J1Zl9nZXQobXNtX2hvc3QpOworCWlmIChJU19FUlIoZGF0YSkpIHsKKwkJcmV0ID0gUFRS X0VSUihkYXRhKTsKKwkJcHJfZXJyKCIlczogZ2V0IHZhZGRyIGZhaWxlZCwgJWRcbiIsIF9fZnVu Y19fLCByZXQpOworCQlyZXR1cm4gcmV0OwogCX0KIAogCS8qIE1TTSBzcGVjaWZpYyBjb21tYW5k IGZvcm1hdCBpbiBtZW1vcnkgKi8KQEAgLTEzMzYsOCArMTE1Miw4IEBAIHN0YXRpYyBpbnQgZHNp X2NtZF9kbWFfYWRkKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LAogCWlmIChwYWNrZXQu c2l6ZSA8IGxlbikKIAkJbWVtc2V0KGRhdGEgKyBwYWNrZXQuc2l6ZSwgMHhmZiwgbGVuIC0gcGFj a2V0LnNpemUpOwogCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZH KQotCQltc21fZ2VtX3B1dF92YWRkcihtc21faG9zdC0+dHhfZ2VtX29iaik7CisJaWYgKGNmZ19o bmQtPm9wcy0+dHhfYnVmX3B1dCkKKwkJY2ZnX2huZC0+b3BzLT50eF9idWZfcHV0KG1zbV9ob3N0 KTsKIAogCXJldHVybiBsZW47CiB9CkBAIC0xNDA4LDIxICsxMjI0LDE0IEBAIGludCBkc2lfZG1h X2Jhc2VfZ2V0X3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCB1aW50NjRfdCAqZG1h X2Jhc2UpCiBzdGF0aWMgaW50IGRzaV9jbWRfZG1hX3R4KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0LCBpbnQgbGVuKQogewogCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpj ZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1z bV9ob3N0LT5kZXY7Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CiAJaW50IHJldDsKIAl1aW50NjRfdCBkbWFfYmFzZTsKIAlib29sIHRyaWdnZXJlZDsK IAotCWlmIChjZmdfaG5kLT5tYWpvciA9PSBNU01fRFNJX1ZFUl9NQUpPUl82RykgewotCQlyZXQg PSBtc21fZ2VtX2dldF9pb3ZhKG1zbV9ob3N0LT50eF9nZW1fb2JqLAotCQkJCXByaXYtPmttcy0+ YXNwYWNlLCAmZG1hX2Jhc2UpOwotCQlpZiAocmV0KSB7Ci0JCQlwcl9lcnIoIiVzOiBmYWlsZWQg dG8gZ2V0IGlvdmE6ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJCXJldHVybiByZXQ7Ci0JCX0K LQl9IGVsc2UgewotCQlkbWFfYmFzZSA9IG1zbV9ob3N0LT50eF9idWZfcGFkZHI7CisJcmV0ID0g Y2ZnX2huZC0+b3BzLT5kbWFfYmFzZV9nZXQobXNtX2hvc3QsICZkbWFfYmFzZSk7CisJaWYgKHJl dCkgeworCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gZ2V0IGlvdmE6ICVkXG4iLCBfX2Z1bmNfXywg cmV0KTsKKwkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZWluaXRfY29tcGxldGlvbigmbXNtX2hvc3Qt PmRtYV9jb21wKTsKQEAgLTIwNjAsNiArMTg2OSw3IEBAIGludCBtc21fZHNpX2hvc3RfbW9kZXNl dF9pbml0KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCQkJCQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogewogCXN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9o b3N0KGhvc3QpOworCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0g bXNtX2hvc3QtPmNmZ19obmQ7CiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG1zbV9o b3N0LT5wZGV2OwogCWludCByZXQ7CiAKQEAgLTIwODAsNyArMTg5MCw3IEBAIGludCBtc21fZHNp X2hvc3RfbW9kZXNldF9pbml0KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCX0KIAogCW1z bV9ob3N0LT5kZXYgPSBkZXY7Ci0JcmV0ID0gZHNpX3R4X2J1Zl9hbGxvYyhtc21faG9zdCwgU1pf NEspOworCXJldCA9IGNmZ19obmQtPm9wcy0+dHhfYnVmX2FsbG9jKG1zbV9ob3N0LCBTWl80Syk7 CiAJaWYgKHJldCkgewogCQlwcl9lcnIoIiVzOiBhbGxvYyB0eCBnZW0gb2JqIGZhaWxlZCwgJWRc biIsIF9fZnVuY19fLCByZXQpOwogCQlyZXR1cm4gcmV0OwpAQCAtMjEzOCw2ICsxOTQ4LDcgQEAg aW50IG1zbV9kc2lfaG9zdF94ZmVyX3ByZXBhcmUoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3Qs CiAJCQkJY29uc3Qgc3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQogewogCXN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3QpOworCWNvbnN0IHN0cnVjdCBt c21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7CiAKIAkvKiBU T0RPOiBtYWtlIHN1cmUgZHNpX2NtZF9tZHAgaXMgaWRsZS4KIAkgKiBTaW5jZSBEU0k2RyB2MS4y LjAsIHdlIGNhbiBzZXQgRFNJX1RSSUdfQ1RSTC5CTE9DS19ETUFfV0lUSElOX0ZSQU1FCkBAIC0y MTUwLDcgKzE5NjEsNyBAQCBpbnQgbXNtX2RzaV9ob3N0X3hmZXJfcHJlcGFyZShzdHJ1Y3QgbWlw aV9kc2lfaG9zdCAqaG9zdCwKIAkgKiBtZHAgY2xvY2sgbmVlZCB0byBiZSBlbmFibGVkIHRvIHJl Y2VpdmUgZHNpIGludGVycnVwdAogCSAqLwogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoJm1zbV9ob3N0 LT5wZGV2LT5kZXYpOwotCWRzaV9saW5rX2Nsa19lbmFibGUobXNtX2hvc3QpOworCWNmZ19obmQt Pm9wcy0+bGlua19jbGtfZW5hYmxlKG1zbV9ob3N0KTsKIAogCS8qIFRPRE86IHZvdGUgZm9yIGJ1 cyBiYW5kd2lkdGggKi8KIApAQCAtMjE3MSw2ICsxOTgyLDcgQEAgdm9pZCBtc21fZHNpX2hvc3Rf eGZlcl9yZXN0b3JlKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCQkJCWNvbnN0IHN0cnVj dCBtaXBpX2RzaV9tc2cgKm1zZykKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCA9 IHRvX21zbV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxl ciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCiAJZHNpX2ludHJfY3RybChtc21faG9z dCwgRFNJX0lSUV9NQVNLX0NNRF9ETUFfRE9ORSwgMCk7CiAJZHNpX3dyaXRlKG1zbV9ob3N0LCBS RUdfRFNJX0NUUkwsIG1zbV9ob3N0LT5kbWFfY21kX2N0cmxfcmVzdG9yZSk7CkBAIC0yMTgwLDcg KzE5OTIsNyBAQCB2b2lkIG1zbV9kc2lfaG9zdF94ZmVyX3Jlc3RvcmUoc3RydWN0IG1pcGlfZHNp X2hvc3QgKmhvc3QsCiAKIAkvKiBUT0RPOiB1bnZvdGUgZm9yIGJ1cyBiYW5kd2lkdGggKi8KIAot CWRzaV9saW5rX2Nsa19kaXNhYmxlKG1zbV9ob3N0KTsKKwljZmdfaG5kLT5vcHMtPmxpbmtfY2xr X2Rpc2FibGUobXNtX2hvc3QpOwogCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKCZtc21faG9z dC0+cGRldi0+ZGV2KTsKIH0KIApAQCAtMjM0NCw3ICsyMTU2LDYgQEAgaW50IG1zbV9kc2lfaG9z dF9zZXRfc3JjX3BsbChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAlzdHJ1Y3QgbXNtX2Rz aV9wbGwgKnNyY19wbGwpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19t c21fZHNpX2hvc3QoaG9zdCk7Ci0JY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNm Z19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAlzdHJ1Y3QgY2xrICpieXRlX2Nsa19wcm92aWRl ciwgKnBpeGVsX2Nsa19wcm92aWRlcjsKIAlpbnQgcmV0OwogCkBAIC0yMzcwLDE0ICsyMTgxLDE2 IEBAIGludCBtc21fZHNpX2hvc3Rfc2V0X3NyY19wbGwoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhv c3QsCiAJCWdvdG8gZXhpdDsKIAl9CiAKLQlpZiAoY2ZnX2huZC0+bWFqb3IgPT0gTVNNX0RTSV9W RVJfTUFKT1JfVjIpIHsKKwlpZiAobXNtX2hvc3QtPmRzaV9jbGtfc3JjKSB7CiAJCXJldCA9IGNs a19zZXRfcGFyZW50KG1zbV9ob3N0LT5kc2lfY2xrX3NyYywgcGl4ZWxfY2xrX3Byb3ZpZGVyKTsK IAkJaWYgKHJldCkgewogCQkJcHJfZXJyKCIlczogY2FuJ3Qgc2V0IHBhcmVudCB0byBkc2lfY2xr X3NyYy4gcmV0PSVkXG4iLAogCQkJCV9fZnVuY19fLCByZXQpOwogCQkJZ290byBleGl0OwogCQl9 CisJfQogCisJaWYgKG1zbV9ob3N0LT5lc2NfY2xrX3NyYykgewogCQlyZXQgPSBjbGtfc2V0X3Bh cmVudChtc21faG9zdC0+ZXNjX2Nsa19zcmMsIGJ5dGVfY2xrX3Byb3ZpZGVyKTsKIAkJaWYgKHJl dCkgewogCQkJcHJfZXJyKCIlczogY2FuJ3Qgc2V0IHBhcmVudCB0byBlc2NfY2xrX3NyYy4gcmV0 PSVkXG4iLApAQCAtMjQwNyw5ICsyMjIwLDEwIEBAIHZvaWQgbXNtX2RzaV9ob3N0X2dldF9waHlf Y2xrX3JlcShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAlzdHJ1Y3QgbXNtX2RzaV9waHlf Y2xrX3JlcXVlc3QgKmNsa19yZXEpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3Qg PSB0b19tc21fZHNpX2hvc3QoaG9zdCk7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRs ZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAlpbnQgcmV0OwogCi0JcmV0ID0gZHNp X2NhbGNfY2xrX3JhdGUobXNtX2hvc3QpOworCXJldCA9IGNmZ19obmQtPm9wcy0+Y2FsY19jbGtf cmF0ZShtc21faG9zdCk7CiAJaWYgKHJldCkgewogCQlwcl9lcnIoIiVzOiB1bmFibGUgdG8gY2Fs YyBjbGsgcmF0ZSwgJWRcbiIsIF9fZnVuY19fLCByZXQpOwogCQlyZXR1cm47CkBAIC0yNDczLDYg KzIyODcsNyBAQCBpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBpX2RzaV9ob3N0 ICpob3N0LAogCQkJc3RydWN0IG1zbV9kc2lfcGh5X3NoYXJlZF90aW1pbmdzICpwaHlfc2hhcmVk X3RpbWluZ3MpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19tc21fZHNp X2hvc3QoaG9zdCk7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQg PSBtc21faG9zdC0+Y2ZnX2huZDsKIAlpbnQgcmV0ID0gMDsKIAogCW11dGV4X2xvY2soJm1zbV9o b3N0LT5kZXZfbXV0ZXgpOwpAQCAtMjQ5MSw3ICsyMzA2LDcgQEAgaW50IG1zbV9kc2lfaG9zdF9w b3dlcl9vbihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAl9CiAKIAlwbV9ydW50aW1lX2dl dF9zeW5jKCZtc21faG9zdC0+cGRldi0+ZGV2KTsKLQlyZXQgPSBkc2lfbGlua19jbGtfZW5hYmxl KG1zbV9ob3N0KTsKKwlyZXQgPSBjZmdfaG5kLT5vcHMtPmxpbmtfY2xrX2VuYWJsZShtc21faG9z dCk7CiAJaWYgKHJldCkgewogCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gZW5hYmxlIGxpbmsgY2xv Y2tzLiByZXQ9JWRcbiIsCiAJCSAgICAgICBfX2Z1bmNfXywgcmV0KTsKQEAgLTI1MTgsNyArMjMz Myw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhv c3QsCiAJcmV0dXJuIDA7CiAKIGZhaWxfZGlzYWJsZV9jbGs6Ci0JZHNpX2xpbmtfY2xrX2Rpc2Fi bGUobXNtX2hvc3QpOworCWNmZ19obmQtPm9wcy0+bGlua19jbGtfZGlzYWJsZShtc21faG9zdCk7 CiAJcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoJm1zbV9ob3N0LT5wZGV2LT5kZXYpOwogZmFp bF9kaXNhYmxlX3JlZzoKIAlkc2lfaG9zdF9yZWd1bGF0b3JfZGlzYWJsZShtc21faG9zdCk7CkBA IC0yNTMwLDYgKzIzNDUsNyBAQCBpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBp X2RzaV9ob3N0ICpob3N0LAogaW50IG1zbV9kc2lfaG9zdF9wb3dlcl9vZmYoc3RydWN0IG1pcGlf ZHNpX2hvc3QgKmhvc3QpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19t c21fZHNpX2hvc3QoaG9zdCk7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNm Z19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAogCW11dGV4X2xvY2soJm1zbV9ob3N0LT5kZXZf bXV0ZXgpOwogCWlmICghbXNtX2hvc3QtPnBvd2VyX29uKSB7CkBAIC0yNTQ0LDcgKzIzNjAsNyBA QCBpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29mZihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCkK IAogCXBpbmN0cmxfcG1fc2VsZWN0X3NsZWVwX3N0YXRlKCZtc21faG9zdC0+cGRldi0+ZGV2KTsK IAotCWRzaV9saW5rX2Nsa19kaXNhYmxlKG1zbV9ob3N0KTsKKwljZmdfaG5kLT5vcHMtPmxpbmtf Y2xrX2Rpc2FibGUobXNtX2hvc3QpOwogCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKCZtc21f aG9zdC0+cGRldi0+ZGV2KTsKIAogCWRzaV9ob3N0X3JlZ3VsYXRvcl9kaXNhYmxlKG1zbV9ob3N0 KTsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBv ZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZl IFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=