From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 4/4] drm/tegra: Refactor IOMMU attach/detach Date: Fri, 4 May 2018 15:37:07 +0200 Message-ID: <20180504133707.22451-4-thierry.reding@gmail.com> References: <20180504133707.22451-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180504133707.22451-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, Dmitry Osipenko , dri-devel@lists.freedesktop.org List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCkF0dGFjaGluZyB0byBh bmQgZGV0YWNoaW5nIGZyb20gYW4gSU9NTVUgdXNlcyB0aGUgc2FtZSBjb2RlIHNlcXVlbmNlIGlu CmV2ZXJ5IGRyaXZlciwgc28gZmFjdG9yIGl0IG91dCBpbnRvIHNlcGFyYXRlIGhlbHBlcnMuCgpT aWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jICAgfCA0MiArKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYyAgfCA0MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uaCAg fCAgNCArKysrCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IyZC5jIHwgMzIgKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IzZC5jIHwgMzEgKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKSwg ODMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYwppbmRleCBjODQzZjExMDQzZGIuLjNlN2VjMzkz NzM0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2RjLmMKQEAgLTE4MzcsMjEgKzE4MzcsMTEgQEAgc3RhdGljIGludCB0 ZWdyYV9kY19pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJaWYgKCFkYy0+c3lu Y3B0KQogCQlkZXZfd2FybihkYy0+ZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIHN5bmNwb2ludFxu Iik7CiAKLQlpZiAodGVncmEtPmRvbWFpbikgewotCQlkYy0+Z3JvdXAgPSBpb21tdV9ncm91cF9n ZXQoY2xpZW50LT5kZXYpOwotCi0JCWlmIChkYy0+Z3JvdXAgJiYgZGMtPmdyb3VwICE9IHRlZ3Jh LT5ncm91cCkgewotCQkJZXJyID0gaW9tbXVfYXR0YWNoX2dyb3VwKHRlZ3JhLT5kb21haW4sIGRj LT5ncm91cCk7Ci0JCQlpZiAoZXJyIDwgMCkgewotCQkJCWRldl9lcnIoZGMtPmRldiwKLQkJCQkJ ImZhaWxlZCB0byBhdHRhY2ggdG8gZG9tYWluOiAlZFxuIiwKLQkJCQkJZXJyKTsKLQkJCQlpb21t dV9ncm91cF9wdXQoZGMtPmdyb3VwKTsKLQkJCQlyZXR1cm4gZXJyOwotCQkJfQotCi0JCQl0ZWdy YS0+Z3JvdXAgPSBkYy0+Z3JvdXA7Ci0JCX0KKwlkYy0+Z3JvdXAgPSBob3N0MXhfY2xpZW50X2lv bW11X2F0dGFjaChjbGllbnQsIHRydWUpOworCWlmIChJU19FUlIoZGMtPmdyb3VwKSkgeworCQll cnIgPSBQVFJfRVJSKGRjLT5ncm91cCk7CisJCWRldl9lcnIoY2xpZW50LT5kZXYsICJmYWlsZWQg dG8gYXR0YWNoIHRvIGRvbWFpbjogJWRcbiIsIGVycik7CisJCXJldHVybiBlcnI7CiAJfQogCiAJ aWYgKGRjLT5zb2MtPndncnBzKQpAQCAtMTkxNiwxNSArMTkwNiw3IEBAIHN0YXRpYyBpbnQgdGVn cmFfZGNfaW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQogCWlmICghSVNfRVJSKHBy aW1hcnkpKQogCQlkcm1fcGxhbmVfY2xlYW51cChwcmltYXJ5KTsKIAotCWlmIChkYy0+Z3JvdXAp IHsKLQkJaWYgKGRjLT5ncm91cCA9PSB0ZWdyYS0+Z3JvdXApIHsKLQkJCWlvbW11X2RldGFjaF9n cm91cCh0ZWdyYS0+ZG9tYWluLCBkYy0+Z3JvdXApOwotCQkJdGVncmEtPmdyb3VwID0gTlVMTDsK LQkJfQotCi0JCWlvbW11X2dyb3VwX3B1dChkYy0+Z3JvdXApOwotCX0KLQorCWhvc3QxeF9jbGll bnRfaW9tbXVfZGV0YWNoKGNsaWVudCwgZGMtPmdyb3VwKTsKIAlob3N0MXhfc3luY3B0X2ZyZWUo ZGMtPnN5bmNwdCk7CiAKIAlyZXR1cm4gZXJyOwpAQCAtMTkzMiw5ICsxOTE0LDcgQEAgc3RhdGlj IGludCB0ZWdyYV9kY19pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAKIHN0YXRp YyBpbnQgdGVncmFfZGNfZXhpdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQogewotCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoY2xpZW50LT5wYXJlbnQpOwog CXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSBob3N0MXhfY2xpZW50X3RvX2RjKGNsaWVudCk7Ci0Jc3Ry dWN0IHRlZ3JhX2RybSAqdGVncmEgPSBkcm0tPmRldl9wcml2YXRlOwogCWludCBlcnI7CiAKIAlk ZXZtX2ZyZWVfaXJxKGRjLT5kZXYsIGRjLT5pcnEsIGRjKTsKQEAgLTE5NDUsMTUgKzE5MjUsNyBA QCBzdGF0aWMgaW50IHRlZ3JhX2RjX2V4aXQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkK IAkJcmV0dXJuIGVycjsKIAl9CiAKLQlpZiAoZGMtPmdyb3VwKSB7Ci0JCWlmIChkYy0+Z3JvdXAg PT0gdGVncmEtPmdyb3VwKSB7Ci0JCQlpb21tdV9kZXRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwg ZGMtPmdyb3VwKTsKLQkJCXRlZ3JhLT5ncm91cCA9IE5VTEw7Ci0JCX0KLQotCQlpb21tdV9ncm91 cF9wdXQoZGMtPmdyb3VwKTsKLQl9Ci0KKwlob3N0MXhfY2xpZW50X2lvbW11X2RldGFjaChjbGll bnQsIGRjLT5ncm91cCk7CiAJaG9zdDF4X3N5bmNwdF9mcmVlKGRjLT5zeW5jcHQpOwogCiAJcmV0 dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMgYi9kcml2ZXJz L2dwdS9kcm0vdGVncmEvZHJtLmMKaW5kZXggN2FmZTJmNjM1Zjc0Li5iYzEwMDgzMDVlMWUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdGVncmEvZHJtLmMKQEAgLTExMTQsNiArMTExNCw0OCBAQCBpbnQgdGVncmFfZHJtX3VucmVn aXN0ZXJfY2xpZW50KHN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3JhLAogCXJldHVybiAwOwogfQogCitz dHJ1Y3QgaW9tbXVfZ3JvdXAgKmhvc3QxeF9jbGllbnRfaW9tbXVfYXR0YWNoKHN0cnVjdCBob3N0 MXhfY2xpZW50ICpjbGllbnQsCisJCQkJCSAgICAgICBib29sIHNoYXJlZCkKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtID0gZGV2X2dldF9kcnZkYXRhKGNsaWVudC0+cGFyZW50KTsKKwlzdHJ1 Y3QgdGVncmFfZHJtICp0ZWdyYSA9IGRybS0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGlvbW11X2dy b3VwICpncm91cCA9IE5VTEw7CisJaW50IGVycjsKKworCWlmICh0ZWdyYS0+ZG9tYWluKSB7CisJ CWdyb3VwID0gaW9tbXVfZ3JvdXBfZ2V0KGNsaWVudC0+ZGV2KTsKKworCQlpZiAoZ3JvdXAgJiYg KCFzaGFyZWQgfHwgKHNoYXJlZCAmJiAoZ3JvdXAgIT0gdGVncmEtPmdyb3VwKSkpKSB7CisJCQll cnIgPSBpb21tdV9hdHRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3JvdXApOworCQkJaWYgKGVy ciA8IDApIHsKKwkJCQlpb21tdV9ncm91cF9wdXQoZ3JvdXApOworCQkJCXJldHVybiBFUlJfUFRS KGVycik7CisJCQl9CisKKwkJCWlmIChzaGFyZWQgJiYgIXRlZ3JhLT5ncm91cCkKKwkJCQl0ZWdy YS0+Z3JvdXAgPSBncm91cDsKKwkJfQorCX0KKworCXJldHVybiBncm91cDsKK30KKwordm9pZCBo b3N0MXhfY2xpZW50X2lvbW11X2RldGFjaChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50LAor CQkJCXN0cnVjdCBpb21tdV9ncm91cCAqZ3JvdXApCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRy bSA9IGRldl9nZXRfZHJ2ZGF0YShjbGllbnQtPnBhcmVudCk7CisJc3RydWN0IHRlZ3JhX2RybSAq dGVncmEgPSBkcm0tPmRldl9wcml2YXRlOworCisJaWYgKGdyb3VwKSB7CisJCWlmIChncm91cCA9 PSB0ZWdyYS0+Z3JvdXApIHsKKwkJCWlvbW11X2RldGFjaF9ncm91cCh0ZWdyYS0+ZG9tYWluLCBn cm91cCk7CisJCQl0ZWdyYS0+Z3JvdXAgPSBOVUxMOworCQl9CisKKwkJaW9tbXVfZ3JvdXBfcHV0 KGdyb3VwKTsKKwl9Cit9CisKIHZvaWQgKnRlZ3JhX2RybV9hbGxvYyhzdHJ1Y3QgdGVncmFfZHJt ICp0ZWdyYSwgc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYSkKIHsKIAlzdHJ1Y3QgaW92YSAq YWxsb2M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmggYi9kcml2ZXJz L2dwdS9kcm0vdGVncmEvZHJtLmgKaW5kZXggNGY0MWFhZWM4NTMwLi5mZTI2M2NmNThmMzQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vdGVncmEvZHJtLmgKQEAgLTExMCw2ICsxMTAsMTAgQEAgaW50IHRlZ3JhX2RybV9yZWdpc3Rl cl9jbGllbnQoc3RydWN0IHRlZ3JhX2RybSAqdGVncmEsCiAJCQkgICAgICBzdHJ1Y3QgdGVncmFf ZHJtX2NsaWVudCAqY2xpZW50KTsKIGludCB0ZWdyYV9kcm1fdW5yZWdpc3Rlcl9jbGllbnQoc3Ry dWN0IHRlZ3JhX2RybSAqdGVncmEsCiAJCQkJc3RydWN0IHRlZ3JhX2RybV9jbGllbnQgKmNsaWVu dCk7CitzdHJ1Y3QgaW9tbXVfZ3JvdXAgKmhvc3QxeF9jbGllbnRfaW9tbXVfYXR0YWNoKHN0cnVj dCBob3N0MXhfY2xpZW50ICpjbGllbnQsCisJCQkJCSAgICAgICBib29sIHNoYXJlZCk7Cit2b2lk IGhvc3QxeF9jbGllbnRfaW9tbXVfZGV0YWNoKHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQs CisJCQkJc3RydWN0IGlvbW11X2dyb3VwICpncm91cCk7CiAKIGludCB0ZWdyYV9kcm1faW5pdChz dHJ1Y3QgdGVncmFfZHJtICp0ZWdyYSwgc3RydWN0IGRybV9kZXZpY2UgKmRybSk7CiBpbnQgdGVn cmFfZHJtX2V4aXQoc3RydWN0IHRlZ3JhX2RybSAqdGVncmEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2dyMmQuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9ncjJkLmMKaW5k ZXggMGI0MmU5OWRhOGFkLi4yY2QwZjY2YzhhYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9ncjJkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dyMmQuYwpAQCAtMzIs NyArMzIsNiBAQCBzdGF0aWMgaW50IGdyMmRfaW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xp ZW50KQogCXN0cnVjdCB0ZWdyYV9kcm1fY2xpZW50ICpkcm0gPSBob3N0MXhfdG9fZHJtX2NsaWVu dChjbGllbnQpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEoY2xp ZW50LT5wYXJlbnQpOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBIT1NUMVhfU1lOQ1BUX0hBU19C QVNFOwotCXN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3JhID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1 Y3QgZ3IyZCAqZ3IyZCA9IHRvX2dyMmQoZHJtKTsKIAlpbnQgZXJyOwogCkBAIC00NywyMiArNDYs MTQgQEAgc3RhdGljIGludCBncjJkX2luaXQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkK IAkJZ290byBwdXQ7CiAJfQogCi0JaWYgKHRlZ3JhLT5kb21haW4pIHsKLQkJZ3IyZC0+Z3JvdXAg PSBpb21tdV9ncm91cF9nZXQoY2xpZW50LT5kZXYpOwotCi0JCWlmIChncjJkLT5ncm91cCkgewot CQkJZXJyID0gaW9tbXVfYXR0YWNoX2dyb3VwKHRlZ3JhLT5kb21haW4sIGdyMmQtPmdyb3VwKTsK LQkJCWlmIChlcnIgPCAwKSB7Ci0JCQkJZGV2X2VycihjbGllbnQtPmRldiwKLQkJCQkJImZhaWxl ZCB0byBhdHRhY2ggdG8gZG9tYWluOiAlZFxuIiwKLQkJCQkJZXJyKTsKLQkJCQlpb21tdV9ncm91 cF9wdXQoZ3IyZC0+Z3JvdXApOwotCQkJCWdvdG8gZnJlZTsKLQkJCX0KLQkJfQorCWdyMmQtPmdy b3VwID0gaG9zdDF4X2NsaWVudF9pb21tdV9hdHRhY2goY2xpZW50LCBmYWxzZSk7CisJaWYgKElT X0VSUihncjJkLT5ncm91cCkpIHsKKwkJZXJyID0gUFRSX0VSUihncjJkLT5ncm91cCk7CisJCWRl dl9lcnIoY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIHRvIGRvbWFpbjogJWRcbiIsIGVy cik7CisJCWdvdG8gZnJlZTsKIAl9CiAKLQllcnIgPSB0ZWdyYV9kcm1fcmVnaXN0ZXJfY2xpZW50 KHRlZ3JhLCBkcm0pOworCWVyciA9IHRlZ3JhX2RybV9yZWdpc3Rlcl9jbGllbnQoZGV2LT5kZXZf cHJpdmF0ZSwgZHJtKTsKIAlpZiAoZXJyIDwgMCkgewogCQlkZXZfZXJyKGNsaWVudC0+ZGV2LCAi ZmFpbGVkIHRvIHJlZ2lzdGVyIGNsaWVudDogJWRcbiIsIGVycik7CiAJCWdvdG8gZGV0YWNoOwpA QCAtNzEsMTAgKzYyLDcgQEAgc3RhdGljIGludCBncjJkX2luaXQoc3RydWN0IGhvc3QxeF9jbGll bnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIAogZGV0YWNoOgotCWlmIChncjJkLT5ncm91cCkgewot CQlpb21tdV9kZXRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3IyZC0+Z3JvdXApOwotCQlpb21t dV9ncm91cF9wdXQoZ3IyZC0+Z3JvdXApOwotCX0KKwlob3N0MXhfY2xpZW50X2lvbW11X2RldGFj aChjbGllbnQsIGdyMmQtPmdyb3VwKTsKIGZyZWU6CiAJaG9zdDF4X3N5bmNwdF9mcmVlKGNsaWVu dC0+c3luY3B0c1swXSk7CiBwdXQ6CkBAIC05NCwxNCArODIsMTAgQEAgc3RhdGljIGludCBncjJk X2V4aXQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKIAlpZiAoZXJyIDwgMCkKIAkJcmV0 dXJuIGVycjsKIAorCWhvc3QxeF9jbGllbnRfaW9tbXVfZGV0YWNoKGNsaWVudCwgZ3IyZC0+Z3Jv dXApOwogCWhvc3QxeF9zeW5jcHRfZnJlZShjbGllbnQtPnN5bmNwdHNbMF0pOwogCWhvc3QxeF9j aGFubmVsX3B1dChncjJkLT5jaGFubmVsKTsKIAotCWlmIChncjJkLT5ncm91cCkgewotCQlpb21t dV9kZXRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3IyZC0+Z3JvdXApOwotCQlpb21tdV9ncm91 cF9wdXQoZ3IyZC0+Z3JvdXApOwotCX0KLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IzZC5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dyM2Qu YwppbmRleCBlMTI5ZjFhZmZmMzMuLjk4ZTNjNjdkMGZiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2dyM2QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IzZC5jCkBA IC00Miw3ICs0Miw2IEBAIHN0YXRpYyBpbnQgZ3IzZF9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50 ICpjbGllbnQpCiAJc3RydWN0IHRlZ3JhX2RybV9jbGllbnQgKmRybSA9IGhvc3QxeF90b19kcm1f Y2xpZW50KGNsaWVudCk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9nZXRfZHJ2ZGF0 YShjbGllbnQtPnBhcmVudCk7CiAJdW5zaWduZWQgbG9uZyBmbGFncyA9IEhPU1QxWF9TWU5DUFRf SEFTX0JBU0U7Ci0Jc3RydWN0IHRlZ3JhX2RybSAqdGVncmEgPSBkZXYtPmRldl9wcml2YXRlOwog CXN0cnVjdCBncjNkICpncjNkID0gdG9fZ3IzZChkcm0pOwogCWludCBlcnI7CiAKQEAgLTU2LDE5 ICs1NSwxMSBAQCBzdGF0aWMgaW50IGdyM2RfaW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xp ZW50KQogCQlnb3RvIHB1dDsKIAl9CiAKLQlpZiAodGVncmEtPmRvbWFpbikgewotCQlncjNkLT5n cm91cCA9IGlvbW11X2dyb3VwX2dldChjbGllbnQtPmRldik7Ci0KLQkJaWYgKGdyM2QtPmdyb3Vw KSB7Ci0JCQllcnIgPSBpb21tdV9hdHRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3IzZC0+Z3Jv dXApOwotCQkJaWYgKGVyciA8IDApIHsKLQkJCQlkZXZfZXJyKGNsaWVudC0+ZGV2LAotCQkJCQki ZmFpbGVkIHRvIGF0dGFjaCB0byBkb21haW46ICVkXG4iLAotCQkJCQllcnIpOwotCQkJCWlvbW11 X2dyb3VwX3B1dChncjNkLT5ncm91cCk7Ci0JCQkJZ290byBmcmVlOwotCQkJfQotCQl9CisJZ3Iz ZC0+Z3JvdXAgPSBob3N0MXhfY2xpZW50X2lvbW11X2F0dGFjaChjbGllbnQsIGZhbHNlKTsKKwlp ZiAoSVNfRVJSKGdyM2QtPmdyb3VwKSkgeworCQllcnIgPSBQVFJfRVJSKGdyM2QtPmdyb3VwKTsK KwkJZGV2X2VycihjbGllbnQtPmRldiwgImZhaWxlZCB0byBhdHRhY2ggdG8gZG9tYWluOiAlZFxu IiwgZXJyKTsKKwkJZ290byBmcmVlOwogCX0KIAogCWVyciA9IHRlZ3JhX2RybV9yZWdpc3Rlcl9j bGllbnQoZGV2LT5kZXZfcHJpdmF0ZSwgZHJtKTsKQEAgLTgwLDEwICs3MSw3IEBAIHN0YXRpYyBp bnQgZ3IzZF9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiAK IGRldGFjaDoKLQlpZiAoZ3IzZC0+Z3JvdXApIHsKLQkJaW9tbXVfZGV0YWNoX2dyb3VwKHRlZ3Jh LT5kb21haW4sIGdyM2QtPmdyb3VwKTsKLQkJaW9tbXVfZ3JvdXBfcHV0KGdyM2QtPmdyb3VwKTsK LQl9CisJaG9zdDF4X2NsaWVudF9pb21tdV9kZXRhY2goY2xpZW50LCBncjNkLT5ncm91cCk7CiBm cmVlOgogCWhvc3QxeF9zeW5jcHRfZnJlZShjbGllbnQtPnN5bmNwdHNbMF0pOwogcHV0OgpAQCAt OTUsNyArODMsNiBAQCBzdGF0aWMgaW50IGdyM2RfZXhpdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAq Y2xpZW50KQogewogCXN0cnVjdCB0ZWdyYV9kcm1fY2xpZW50ICpkcm0gPSBob3N0MXhfdG9fZHJt X2NsaWVudChjbGllbnQpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfZ2V0X2RydmRh dGEoY2xpZW50LT5wYXJlbnQpOwotCXN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3JhID0gZGV2LT5kZXZf cHJpdmF0ZTsKIAlzdHJ1Y3QgZ3IzZCAqZ3IzZCA9IHRvX2dyM2QoZHJtKTsKIAlpbnQgZXJyOwog CkBAIC0xMDMsMTQgKzkwLDEwIEBAIHN0YXRpYyBpbnQgZ3IzZF9leGl0KHN0cnVjdCBob3N0MXhf Y2xpZW50ICpjbGllbnQpCiAJaWYgKGVyciA8IDApCiAJCXJldHVybiBlcnI7CiAKKwlob3N0MXhf Y2xpZW50X2lvbW11X2RldGFjaChjbGllbnQsIGdyM2QtPmdyb3VwKTsKIAlob3N0MXhfc3luY3B0 X2ZyZWUoY2xpZW50LT5zeW5jcHRzWzBdKTsKIAlob3N0MXhfY2hhbm5lbF9wdXQoZ3IzZC0+Y2hh bm5lbCk7CiAKLQlpZiAoZ3IzZC0+Z3JvdXApIHsKLQkJaW9tbXVfZGV0YWNoX2dyb3VwKHRlZ3Jh LT5kb21haW4sIGdyM2QtPmdyb3VwKTsKLQkJaW9tbXVfZ3JvdXBfcHV0KGdyM2QtPmdyb3VwKTsK LQl9Ci0KIAlyZXR1cm4gMDsKIH0KIAotLSAKMi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK