From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: Re: [PATCH 4/4] drm/tegra: Refactor IOMMU attach/detach Date: Fri, 4 May 2018 18:17:45 +0300 Message-ID: <52074e93-3f2e-e5cc-74da-52dd11988335@gmail.com> References: <20180504133707.22451-1-thierry.reding@gmail.com> <20180504133707.22451-4-thierry.reding@gmail.com> <60550738-6a93-ddc3-0376-fe9676b85c42@gmail.com> <20180504151020.GA31229@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180504151020.GA31229@ulmo> Content-Language: en-US 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, dri-devel@lists.freedesktop.org List-Id: linux-tegra@vger.kernel.org T24gMDQuMDUuMjAxOCAxODoxMCwgVGhpZXJyeSBSZWRpbmcgd3JvdGU6Cj4gT24gRnJpLCBNYXkg MDQsIDIwMTggYXQgMDU6MjM6NDJQTSArMDMwMCwgRG1pdHJ5IE9zaXBlbmtvIHdyb3RlOgo+PiBP biAwNC4wNS4yMDE4IDE2OjM3LCBUaGllcnJ5IFJlZGluZyB3cm90ZToKPj4+IEZyb206IFRoaWVy cnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4+Pgo+Pj4gQXR0YWNoaW5nIHRvIGFuZCBk ZXRhY2hpbmcgZnJvbSBhbiBJT01NVSB1c2VzIHRoZSBzYW1lIGNvZGUgc2VxdWVuY2UgaW4KPj4+ IGV2ZXJ5IGRyaXZlciwgc28gZmFjdG9yIGl0IG91dCBpbnRvIHNlcGFyYXRlIGhlbHBlcnMuCj4+ Pgo+Pj4gU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4K Pj4+IC0tLQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kYy5jICAgfCA0MiArKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJt LmMgIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2RybS5oICB8ICA0ICsrKysKPj4+ICBkcml2ZXJzL2dwdS9kcm0vdGVn cmEvZ3IyZC5jIHwgMzIgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2dyM2QuYyB8IDMxICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAg NSBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA4MyBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMgYi9kcml2ZXJzL2dwdS9k cm0vdGVncmEvZGMuYwo+Pj4gaW5kZXggYzg0M2YxMTA0M2RiLi4zZTdlYzM5MzczNDYgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYwo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2RjLmMKPj4+IEBAIC0xODM3LDIxICsxODM3LDExIEBAIHN0YXRpYyBpbnQg dGVncmFfZGNfaW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQo+Pj4gIAlpZiAoIWRj LT5zeW5jcHQpCj4+PiAgCQlkZXZfd2FybihkYy0+ZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIHN5 bmNwb2ludFxuIik7Cj4+PiAgCj4+PiAtCWlmICh0ZWdyYS0+ZG9tYWluKSB7Cj4+PiAtCQlkYy0+ Z3JvdXAgPSBpb21tdV9ncm91cF9nZXQoY2xpZW50LT5kZXYpOwo+Pj4gLQo+Pj4gLQkJaWYgKGRj LT5ncm91cCAmJiBkYy0+Z3JvdXAgIT0gdGVncmEtPmdyb3VwKSB7Cj4+PiAtCQkJZXJyID0gaW9t bXVfYXR0YWNoX2dyb3VwKHRlZ3JhLT5kb21haW4sIGRjLT5ncm91cCk7Cj4+PiAtCQkJaWYgKGVy ciA8IDApIHsKPj4+IC0JCQkJZGV2X2VycihkYy0+ZGV2LAo+Pj4gLQkJCQkJImZhaWxlZCB0byBh dHRhY2ggdG8gZG9tYWluOiAlZFxuIiwKPj4+IC0JCQkJCWVycik7Cj4+PiAtCQkJCWlvbW11X2dy b3VwX3B1dChkYy0+Z3JvdXApOwo+Pj4gLQkJCQlyZXR1cm4gZXJyOwo+Pj4gLQkJCX0KPj4+IC0K Pj4+IC0JCQl0ZWdyYS0+Z3JvdXAgPSBkYy0+Z3JvdXA7Cj4+PiAtCQl9Cj4+PiArCWRjLT5ncm91 cCA9IGhvc3QxeF9jbGllbnRfaW9tbXVfYXR0YWNoKGNsaWVudCwgdHJ1ZSk7Cj4+PiArCWlmIChJ U19FUlIoZGMtPmdyb3VwKSkgewo+Pj4gKwkJZXJyID0gUFRSX0VSUihkYy0+Z3JvdXApOwo+Pj4g KwkJZGV2X2VycihjbGllbnQtPmRldiwgImZhaWxlZCB0byBhdHRhY2ggdG8gZG9tYWluOiAlZFxu IiwgZXJyKTsKPj4+ICsJCXJldHVybiBlcnI7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJaWYgKGRjLT5z b2MtPndncnBzKQo+Pj4gQEAgLTE5MTYsMTUgKzE5MDYsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX2Rj X2luaXQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKPj4+ICAJaWYgKCFJU19FUlIocHJp bWFyeSkpCj4+PiAgCQlkcm1fcGxhbmVfY2xlYW51cChwcmltYXJ5KTsKPj4+ICAKPj4+IC0JaWYg KGRjLT5ncm91cCkgewo+Pj4gLQkJaWYgKGRjLT5ncm91cCA9PSB0ZWdyYS0+Z3JvdXApIHsKPj4+ IC0JCQlpb21tdV9kZXRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZGMtPmdyb3VwKTsKPj4+IC0J CQl0ZWdyYS0+Z3JvdXAgPSBOVUxMOwo+Pj4gLQkJfQo+Pj4gLQo+Pj4gLQkJaW9tbXVfZ3JvdXBf cHV0KGRjLT5ncm91cCk7Cj4+PiAtCX0KPj4+IC0KPj4+ICsJaG9zdDF4X2NsaWVudF9pb21tdV9k ZXRhY2goY2xpZW50LCBkYy0+Z3JvdXApOwo+Pj4gIAlob3N0MXhfc3luY3B0X2ZyZWUoZGMtPnN5 bmNwdCk7Cj4+PiAgCj4+PiAgCXJldHVybiBlcnI7Cj4+PiBAQCAtMTkzMiw5ICsxOTE0LDcgQEAg c3RhdGljIGludCB0ZWdyYV9kY19pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCj4+ PiAgCj4+PiAgc3RhdGljIGludCB0ZWdyYV9kY19leGl0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpj bGllbnQpCj4+PiAgewo+Pj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGV2X2dldF9kcnZk YXRhKGNsaWVudC0+cGFyZW50KTsKPj4+ICAJc3RydWN0IHRlZ3JhX2RjICpkYyA9IGhvc3QxeF9j bGllbnRfdG9fZGMoY2xpZW50KTsKPj4+IC0Jc3RydWN0IHRlZ3JhX2RybSAqdGVncmEgPSBkcm0t PmRldl9wcml2YXRlOwo+Pj4gIAlpbnQgZXJyOwo+Pj4gIAo+Pj4gIAlkZXZtX2ZyZWVfaXJxKGRj LT5kZXYsIGRjLT5pcnEsIGRjKTsKPj4+IEBAIC0xOTQ1LDE1ICsxOTI1LDcgQEAgc3RhdGljIGlu dCB0ZWdyYV9kY19leGl0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCj4+PiAgCQlyZXR1 cm4gZXJyOwo+Pj4gIAl9Cj4+PiAgCj4+PiAtCWlmIChkYy0+Z3JvdXApIHsKPj4+IC0JCWlmIChk Yy0+Z3JvdXAgPT0gdGVncmEtPmdyb3VwKSB7Cj4+PiAtCQkJaW9tbXVfZGV0YWNoX2dyb3VwKHRl Z3JhLT5kb21haW4sIGRjLT5ncm91cCk7Cj4+PiAtCQkJdGVncmEtPmdyb3VwID0gTlVMTDsKPj4+ IC0JCX0KPj4+IC0KPj4+IC0JCWlvbW11X2dyb3VwX3B1dChkYy0+Z3JvdXApOwo+Pj4gLQl9Cj4+ PiAtCj4+PiArCWhvc3QxeF9jbGllbnRfaW9tbXVfZGV0YWNoKGNsaWVudCwgZGMtPmdyb3VwKTsK Pj4+ICAJaG9zdDF4X3N5bmNwdF9mcmVlKGRjLT5zeW5jcHQpOwo+Pj4gIAo+Pj4gIAlyZXR1cm4g MDsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMgYi9kcml2ZXJz L2dwdS9kcm0vdGVncmEvZHJtLmMKPj4+IGluZGV4IDdhZmUyZjYzNWY3NC4uYmMxMDA4MzA1ZTFl IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5jCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMKPj4+IEBAIC0xMTE0LDYgKzExMTQsNDggQEAgaW50 IHRlZ3JhX2RybV91bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgdGVncmFfZHJtICp0ZWdyYSwKPj4+ ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gK3N0cnVjdCBpb21tdV9ncm91cCAqaG9zdDF4 X2NsaWVudF9pb21tdV9hdHRhY2goc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCwKPj4+ICsJ CQkJCSAgICAgICBib29sIHNoYXJlZCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBkZXZfZ2V0X2RydmRhdGEoY2xpZW50LT5wYXJlbnQpOwo+Pj4gKwlzdHJ1Y3QgdGVncmFf ZHJtICp0ZWdyYSA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4+PiArCXN0cnVjdCBpb21tdV9ncm91cCAq Z3JvdXAgPSBOVUxMOwo+Pj4gKwlpbnQgZXJyOwo+Pj4gKwo+Pj4gKwlpZiAodGVncmEtPmRvbWFp bikgewo+Pj4gKwkJZ3JvdXAgPSBpb21tdV9ncm91cF9nZXQoY2xpZW50LT5kZXYpOwo+Pj4gKwo+ Pj4gKwkJaWYgKGdyb3VwICYmICghc2hhcmVkIHx8IChzaGFyZWQgJiYgKGdyb3VwICE9IHRlZ3Jh LT5ncm91cCkpKSkgewo+Pj4gKwkJCWVyciA9IGlvbW11X2F0dGFjaF9ncm91cCh0ZWdyYS0+ZG9t YWluLCBncm91cCk7Cj4+PiArCQkJaWYgKGVyciA8IDApIHsKPj4+ICsJCQkJaW9tbXVfZ3JvdXBf cHV0KGdyb3VwKTsKPj4+ICsJCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPj4+ICsJCQl9Cj4+PiAr Cj4+PiArCQkJaWYgKHNoYXJlZCAmJiAhdGVncmEtPmdyb3VwKQo+Pj4gKwkJCQl0ZWdyYS0+Z3Jv dXAgPSBncm91cDsKPj4+ICsJCX0KPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gZ3JvdXA7Cj4+ PiArfQo+Pj4gKwo+Pj4gK3ZvaWQgaG9zdDF4X2NsaWVudF9pb21tdV9kZXRhY2goc3RydWN0IGhv c3QxeF9jbGllbnQgKmNsaWVudCwKPj4+ICsJCQkJc3RydWN0IGlvbW11X2dyb3VwICpncm91cCkK Pj4+ICt7Cj4+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkZXZfZ2V0X2RydmRhdGEoY2xp ZW50LT5wYXJlbnQpOwo+Pj4gKwlzdHJ1Y3QgdGVncmFfZHJtICp0ZWdyYSA9IGRybS0+ZGV2X3By aXZhdGU7Cj4+PiArCj4+PiArCWlmIChncm91cCkgewo+Pj4gKwkJaWYgKGdyb3VwID09IHRlZ3Jh LT5ncm91cCkgewo+Pj4gKwkJCWlvbW11X2RldGFjaF9ncm91cCh0ZWdyYS0+ZG9tYWluLCBncm91 cCk7Cj4+PiArCQkJdGVncmEtPmdyb3VwID0gTlVMTDsKPj4+ICsJCX0KPj4+ICsKPj4+ICsJCWlv bW11X2dyb3VwX3B1dChncm91cCk7Cj4+PiArCX0KPj4+ICt9Cj4+PiArCj4+PiAgdm9pZCAqdGVn cmFfZHJtX2FsbG9jKHN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3JhLCBzaXplX3Qgc2l6ZSwgZG1hX2Fk ZHJfdCAqZG1hKQo+Pj4gIHsKPj4+ICAJc3RydWN0IGlvdmEgKmFsbG9jOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9k cm0uaAo+Pj4gaW5kZXggNGY0MWFhZWM4NTMwLi5mZTI2M2NmNThmMzQgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9kcm0uaAo+Pj4gQEAgLTExMCw2ICsxMTAsMTAgQEAgaW50IHRlZ3JhX2RybV9yZWdpc3Rl cl9jbGllbnQoc3RydWN0IHRlZ3JhX2RybSAqdGVncmEsCj4+PiAgCQkJICAgICAgc3RydWN0IHRl Z3JhX2RybV9jbGllbnQgKmNsaWVudCk7Cj4+PiAgaW50IHRlZ3JhX2RybV91bnJlZ2lzdGVyX2Ns aWVudChzdHJ1Y3QgdGVncmFfZHJtICp0ZWdyYSwKPj4+ICAJCQkJc3RydWN0IHRlZ3JhX2RybV9j bGllbnQgKmNsaWVudCk7Cj4+PiArc3RydWN0IGlvbW11X2dyb3VwICpob3N0MXhfY2xpZW50X2lv bW11X2F0dGFjaChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50LAo+Pj4gKwkJCQkJICAgICAg IGJvb2wgc2hhcmVkKTsKPj4+ICt2b2lkIGhvc3QxeF9jbGllbnRfaW9tbXVfZGV0YWNoKHN0cnVj dCBob3N0MXhfY2xpZW50ICpjbGllbnQsCj4+PiArCQkJCXN0cnVjdCBpb21tdV9ncm91cCAqZ3Jv dXApOwo+Pj4gIAo+Pj4gIGludCB0ZWdyYV9kcm1faW5pdChzdHJ1Y3QgdGVncmFfZHJtICp0ZWdy YSwgc3RydWN0IGRybV9kZXZpY2UgKmRybSk7Cj4+PiAgaW50IHRlZ3JhX2RybV9leGl0KHN0cnVj dCB0ZWdyYV9kcm0gKnRlZ3JhKTsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvZ3IyZC5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dyMmQuYwo+Pj4gaW5kZXggMGI0MmU5 OWRhOGFkLi4yY2QwZjY2YzhhYTkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVn cmEvZ3IyZC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IyZC5jCj4+PiBAQCAt MzIsNyArMzIsNiBAQCBzdGF0aWMgaW50IGdyMmRfaW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAq Y2xpZW50KQo+Pj4gIAlzdHJ1Y3QgdGVncmFfZHJtX2NsaWVudCAqZHJtID0gaG9zdDF4X3RvX2Ry bV9jbGllbnQoY2xpZW50KTsKPj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9nZXRf ZHJ2ZGF0YShjbGllbnQtPnBhcmVudCk7Cj4+PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBIT1NU MVhfU1lOQ1BUX0hBU19CQVNFOwo+Pj4gLQlzdHJ1Y3QgdGVncmFfZHJtICp0ZWdyYSA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4+PiAgCXN0cnVjdCBncjJkICpncjJkID0gdG9fZ3IyZChkcm0pOwo+Pj4g IAlpbnQgZXJyOwo+Pj4gIAo+Pj4gQEAgLTQ3LDIyICs0NiwxNCBAQCBzdGF0aWMgaW50IGdyMmRf aW5pdChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xpZW50KQo+Pj4gIAkJZ290byBwdXQ7Cj4+PiAg CX0KPj4+ICAKPj4+IC0JaWYgKHRlZ3JhLT5kb21haW4pIHsKPj4+IC0JCWdyMmQtPmdyb3VwID0g aW9tbXVfZ3JvdXBfZ2V0KGNsaWVudC0+ZGV2KTsKPj4+IC0KPj4+IC0JCWlmIChncjJkLT5ncm91 cCkgewo+Pj4gLQkJCWVyciA9IGlvbW11X2F0dGFjaF9ncm91cCh0ZWdyYS0+ZG9tYWluLCBncjJk LT5ncm91cCk7Cj4+PiAtCQkJaWYgKGVyciA8IDApIHsKPj4+IC0JCQkJZGV2X2VycihjbGllbnQt PmRldiwKPj4+IC0JCQkJCSJmYWlsZWQgdG8gYXR0YWNoIHRvIGRvbWFpbjogJWRcbiIsCj4+PiAt CQkJCQllcnIpOwo+Pj4gLQkJCQlpb21tdV9ncm91cF9wdXQoZ3IyZC0+Z3JvdXApOwo+Pj4gLQkJ CQlnb3RvIGZyZWU7Cj4+PiAtCQkJfQo+Pj4gLQkJfQo+Pj4gKwlncjJkLT5ncm91cCA9IGhvc3Qx eF9jbGllbnRfaW9tbXVfYXR0YWNoKGNsaWVudCwgZmFsc2UpOwo+Pj4gKwlpZiAoSVNfRVJSKGdy MmQtPmdyb3VwKSkgewo+Pj4gKwkJZXJyID0gUFRSX0VSUihncjJkLT5ncm91cCk7Cj4+PiArCQlk ZXZfZXJyKGNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGF0dGFjaCB0byBkb21haW46ICVkXG4iLCBl cnIpOwo+Pj4gKwkJZ290byBmcmVlOwo+Pj4gIAl9Cj4+PiAgCj4+PiAtCWVyciA9IHRlZ3JhX2Ry bV9yZWdpc3Rlcl9jbGllbnQodGVncmEsIGRybSk7Cj4+PiArCWVyciA9IHRlZ3JhX2RybV9yZWdp c3Rlcl9jbGllbnQoZGV2LT5kZXZfcHJpdmF0ZSwgZHJtKTsKPj4+ICAJaWYgKGVyciA8IDApIHsK Pj4+ICAJCWRldl9lcnIoY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgY2xpZW50OiAl ZFxuIiwgZXJyKTsKPj4+ICAJCWdvdG8gZGV0YWNoOwo+Pj4gQEAgLTcxLDEwICs2Miw3IEBAIHN0 YXRpYyBpbnQgZ3IyZF9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCj4+PiAgCXJl dHVybiAwOwo+Pj4gIAo+Pj4gIGRldGFjaDoKPj4+IC0JaWYgKGdyMmQtPmdyb3VwKSB7Cj4+PiAt CQlpb21tdV9kZXRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3IyZC0+Z3JvdXApOwo+Pj4gLQkJ aW9tbXVfZ3JvdXBfcHV0KGdyMmQtPmdyb3VwKTsKPj4+IC0JfQo+Pj4gKwlob3N0MXhfY2xpZW50 X2lvbW11X2RldGFjaChjbGllbnQsIGdyMmQtPmdyb3VwKTsKPj4+ICBmcmVlOgo+Pj4gIAlob3N0 MXhfc3luY3B0X2ZyZWUoY2xpZW50LT5zeW5jcHRzWzBdKTsKPj4+ICBwdXQ6Cj4+PiBAQCAtOTQs MTQgKzgyLDEwIEBAIHN0YXRpYyBpbnQgZ3IyZF9leGl0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpj bGllbnQpCj4+PiAgCWlmIChlcnIgPCAwKQo+Pj4gIAkJcmV0dXJuIGVycjsKPj4+ICAKPj4+ICsJ aG9zdDF4X2NsaWVudF9pb21tdV9kZXRhY2goY2xpZW50LCBncjJkLT5ncm91cCk7Cj4+PiAgCWhv c3QxeF9zeW5jcHRfZnJlZShjbGllbnQtPnN5bmNwdHNbMF0pOwo+Pj4gIAlob3N0MXhfY2hhbm5l bF9wdXQoZ3IyZC0+Y2hhbm5lbCk7Cj4+PiAgCj4+PiAtCWlmIChncjJkLT5ncm91cCkgewo+Pj4g LQkJaW9tbXVfZGV0YWNoX2dyb3VwKHRlZ3JhLT5kb21haW4sIGdyMmQtPmdyb3VwKTsKPj4+IC0J CWlvbW11X2dyb3VwX3B1dChncjJkLT5ncm91cCk7Cj4+PiAtCX0KPj4+IC0KPj4+ICAJcmV0dXJu IDA7Cj4+PiAgfQo+Pj4gIAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9n cjNkLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ3IzZC5jCj4+PiBpbmRleCBlMTI5ZjFhZmZm MzMuLjk4ZTNjNjdkMGZiNSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9n cjNkLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9ncjNkLmMKPj4+IEBAIC00Miw3 ICs0Miw2IEBAIHN0YXRpYyBpbnQgZ3IzZF9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGll bnQpCj4+PiAgCXN0cnVjdCB0ZWdyYV9kcm1fY2xpZW50ICpkcm0gPSBob3N0MXhfdG9fZHJtX2Ns aWVudChjbGllbnQpOwo+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X2dldF9kcnZk YXRhKGNsaWVudC0+cGFyZW50KTsKPj4+ICAJdW5zaWduZWQgbG9uZyBmbGFncyA9IEhPU1QxWF9T WU5DUFRfSEFTX0JBU0U7Cj4+PiAtCXN0cnVjdCB0ZWdyYV9kcm0gKnRlZ3JhID0gZGV2LT5kZXZf cHJpdmF0ZTsKPj4+ICAJc3RydWN0IGdyM2QgKmdyM2QgPSB0b19ncjNkKGRybSk7Cj4+PiAgCWlu dCBlcnI7Cj4+PiAgCj4+PiBAQCAtNTYsMTkgKzU1LDExIEBAIHN0YXRpYyBpbnQgZ3IzZF9pbml0 KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCj4+PiAgCQlnb3RvIHB1dDsKPj4+ICAJfQo+ Pj4gIAo+Pj4gLQlpZiAodGVncmEtPmRvbWFpbikgewo+Pj4gLQkJZ3IzZC0+Z3JvdXAgPSBpb21t dV9ncm91cF9nZXQoY2xpZW50LT5kZXYpOwo+Pj4gLQo+Pj4gLQkJaWYgKGdyM2QtPmdyb3VwKSB7 Cj4+PiAtCQkJZXJyID0gaW9tbXVfYXR0YWNoX2dyb3VwKHRlZ3JhLT5kb21haW4sIGdyM2QtPmdy b3VwKTsKPj4+IC0JCQlpZiAoZXJyIDwgMCkgewo+Pj4gLQkJCQlkZXZfZXJyKGNsaWVudC0+ZGV2 LAo+Pj4gLQkJCQkJImZhaWxlZCB0byBhdHRhY2ggdG8gZG9tYWluOiAlZFxuIiwKPj4+IC0JCQkJ CWVycik7Cj4+PiAtCQkJCWlvbW11X2dyb3VwX3B1dChncjNkLT5ncm91cCk7Cj4+PiAtCQkJCWdv dG8gZnJlZTsKPj4+IC0JCQl9Cj4+PiAtCQl9Cj4+PiArCWdyM2QtPmdyb3VwID0gaG9zdDF4X2Ns aWVudF9pb21tdV9hdHRhY2goY2xpZW50LCBmYWxzZSk7Cj4+PiArCWlmIChJU19FUlIoZ3IzZC0+ Z3JvdXApKSB7Cj4+PiArCQllcnIgPSBQVFJfRVJSKGdyM2QtPmdyb3VwKTsKPj4+ICsJCWRldl9l cnIoY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gYXR0YWNoIHRvIGRvbWFpbjogJWRcbiIsIGVycik7 Cj4+PiArCQlnb3RvIGZyZWU7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJZXJyID0gdGVncmFfZHJtX3Jl Z2lzdGVyX2NsaWVudChkZXYtPmRldl9wcml2YXRlLCBkcm0pOwo+Pj4gQEAgLTgwLDEwICs3MSw3 IEBAIHN0YXRpYyBpbnQgZ3IzZF9pbml0KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCj4+ PiAgCXJldHVybiAwOwo+Pj4gIAo+Pj4gIGRldGFjaDoKPj4+IC0JaWYgKGdyM2QtPmdyb3VwKSB7 Cj4+PiAtCQlpb21tdV9kZXRhY2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3IzZC0+Z3JvdXApOwo+ Pj4gLQkJaW9tbXVfZ3JvdXBfcHV0KGdyM2QtPmdyb3VwKTsKPj4+IC0JfQo+Pj4gKwlob3N0MXhf Y2xpZW50X2lvbW11X2RldGFjaChjbGllbnQsIGdyM2QtPmdyb3VwKTsKPj4+ICBmcmVlOgo+Pj4g IAlob3N0MXhfc3luY3B0X2ZyZWUoY2xpZW50LT5zeW5jcHRzWzBdKTsKPj4+ICBwdXQ6Cj4+PiBA QCAtOTUsNyArODMsNiBAQCBzdGF0aWMgaW50IGdyM2RfZXhpdChzdHJ1Y3QgaG9zdDF4X2NsaWVu dCAqY2xpZW50KQo+Pj4gIHsKPj4+ICAJc3RydWN0IHRlZ3JhX2RybV9jbGllbnQgKmRybSA9IGhv c3QxeF90b19kcm1fY2xpZW50KGNsaWVudCk7Cj4+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBkZXZfZ2V0X2RydmRhdGEoY2xpZW50LT5wYXJlbnQpOwo+Pj4gLQlzdHJ1Y3QgdGVncmFfZHJt ICp0ZWdyYSA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+PiAgCXN0cnVjdCBncjNkICpncjNkID0gdG9f Z3IzZChkcm0pOwo+Pj4gIAlpbnQgZXJyOwo+Pj4gIAo+Pj4gQEAgLTEwMywxNCArOTAsMTAgQEAg c3RhdGljIGludCBncjNkX2V4aXQoc3RydWN0IGhvc3QxeF9jbGllbnQgKmNsaWVudCkKPj4+ICAJ aWYgKGVyciA8IDApCj4+PiAgCQlyZXR1cm4gZXJyOwo+Pj4gIAo+Pj4gKwlob3N0MXhfY2xpZW50 X2lvbW11X2RldGFjaChjbGllbnQsIGdyM2QtPmdyb3VwKTsKPj4+ICAJaG9zdDF4X3N5bmNwdF9m cmVlKGNsaWVudC0+c3luY3B0c1swXSk7Cj4+PiAgCWhvc3QxeF9jaGFubmVsX3B1dChncjNkLT5j aGFubmVsKTsKPj4+ICAKPj4+IC0JaWYgKGdyM2QtPmdyb3VwKSB7Cj4+PiAtCQlpb21tdV9kZXRh Y2hfZ3JvdXAodGVncmEtPmRvbWFpbiwgZ3IzZC0+Z3JvdXApOwo+Pj4gLQkJaW9tbXVfZ3JvdXBf cHV0KGdyM2QtPmdyb3VwKTsKPj4+IC0JfQo+Pj4gLQo+Pj4gIAlyZXR1cm4gMDsKPj4+ICB9Cj4+ PiAgCj4+Pgo+Pgo+PiBSZXZpZXdlZC1ieTogRG1pdHJ5IE9zaXBlbmtvIDxkaWdldHhAZ21haWwu Y29tPgo+Pgo+PiBUaG91Z2ggSSdkIHByZWZlciB0byBoYXZlIHRlZ3JhLT5ncm91cCByZW5hbWVk LCBtYXliZSB0byAnc2hhcmVkX2RjX2dyb3VwJy4KPiAKPiB0ZWdyYS0+Z3JvdXAgZG9lc24ndCBi b3RoZXIgbWUgYXQgYWxsLiBJIHRoaW5rIGp1c3QgdGhlIGZhY3QgdGhhdCBpdCdzCj4gaW4gc3Ry dWN0IHRlZ3JhX2RybSBpbXBsaWVzIHRoYXQgaXQgaXMgc2hhcmVkLiBJdCdzIGFsc28gZGVjbGFy ZWQKPiBjbG9zZWx5IHRvIGFsbCB0aGUgb3RoZXIgInNoYXJlZCIgdmFyaWFibGVzLCBzbyBJIHRo aW5rIHRoYXQgbWFrZXMgaXQKPiBwcmV0dHkgY2xlYXIuIElmIHRoZXJlIHdlcmUgb3RoZXIgSU9N TVUgZ3JvdXBzIEknZCBhZ3JlZSB0aGF0IHJlbmFtaW5nCj4gaXQgd291bGQgYmUgZ29vZCB0byBj bGFyaWZ5IHRoZSBwdXJwb3NlLiBCdXQgYXMgaXQgaXMsIEkgdGhpbmsgdGhlcmUncwo+IG5vIG5l ZWQgZm9yIHRoYXQuCj4gCj4gVGhhbmtzIGZvciB0aGUgcmV2aWV3IQoKV2VsbCwgb2theS4gT24g dGhlIG90aGVyIGhhbmQgSU9NTVUgQVBJIHNob3VsZCBoYW5kbGUgcmUtYXR0YWNoaW5nIGZyb20g YQpkaWZmZXJlbnQgZGV2aWNlIGFuZCB0aGVuIHRoYXQgc2hhcmVkIGdyb3VwIGlzbid0IG5lZWRl ZCBhdCBhbGwuIERvZXMgdGhhdApyZS1hdHRhY2hpbmcgY2F1c2UgYW55IHByb2JsZW1zIHJpZ2h0 IG5vdz8gSWYgeWVzLCBtYXliZSBpdCdzIHdvcnRoIGZpeGluZyB0aGUKcm9vdCBvZiB0aGUgcHJv YmxlbSByYXRoZXIgdGhhbiB0cnlpbmcgdG8gd29ya2Fyb3VuZCBpdC4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==