From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 4/5] drm/amdgpu: track evicted page tables v2 Date: Tue, 29 Aug 2017 10:34:58 +0800 Message-ID: <96cd7c9d-e5d3-412e-2261-5df57981a249@amd.com> References: <1503946244-1535-1-git-send-email-deathsimple@vodafone.de> <1503946244-1535-4-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1503946244-1535-4-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?Q?Christian_K=c3=b6nig?= , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org CgpPbiAyMDE35bm0MDjmnIgyOeaXpSAwMjo1MCwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBG cm9tOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4KPiBJbnN0 ZWFkIG9mIHZhbGlkYXRpbmcgYWxsIHBhZ2UgdGFibGVzIHdoZW4gb25lIHdhcyBldmljdGVkLAo+ IHRyYWNrIHdoaWNoIG9uZSBuZWVkcyBhIHZhbGlkYXRpb24uCj4KPiB2Mjogc2ltcGxpZnkgYW1k Z3B1X3ZtX3JlYWR5IGFzIHdlbGwKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcg PGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiBSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxh bGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPiAodjEpClJldmlld2VkLWJ5OiBDaHVubWluZyBaaG91 IDxkYXZpZDEuemhvdUBhbWQuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2NzLmMgICAgIHwgICA3ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZ2VtLmMgICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9vYmplY3QuYyB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZtLmMgICAgIHwgMjI3ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCAgICAgfCAgMTYgKy0KPiAgIDUg ZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gaW5kZXggM2Y0NmI1YS4uZjY4YWM1 NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gQEAgLTYzMiw5 ICs2MzIsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0cnVjdCBhbWRncHVf Y3NfcGFyc2VyICpwLAo+ICAgCj4gICAJYW1kZ3B1X2NzX3JlcG9ydF9tb3ZlZF9ieXRlcyhwLT5h ZGV2LCBwLT5ieXRlc19tb3ZlZCwKPiAgIAkJCQkgICAgIHAtPmJ5dGVzX21vdmVkX3Zpcyk7Cj4g LQlmcHJpdi0+dm0ubGFzdF9ldmljdGlvbl9jb3VudGVyID0KPiAtCQlhdG9taWM2NF9yZWFkKCZw LT5hZGV2LT5udW1fZXZpY3Rpb25zKTsKPiAtCj4gICAJaWYgKHAtPmJvX2xpc3QpIHsKPiAgIAkJ c3RydWN0IGFtZGdwdV9ibyAqZ2RzID0gcC0+Ym9fbGlzdC0+Z2RzX29iajsKPiAgIAkJc3RydWN0 IGFtZGdwdV9ibyAqZ3dzID0gcC0+Ym9fbGlzdC0+Z3dzX29iajsKPiBAQCAtODI2LDcgKzgyMyw3 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2JvX3ZtX3VwZGF0ZV9wdGUoc3RydWN0IGFtZGdwdV9jc19w YXJzZXIgKnApCj4gICAJCQlpZiAoIWJvKQo+ICAgCQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWFt ZGdwdV92bV9ib19pbnZhbGlkYXRlKGFkZXYsIGJvKTsKPiArCQkJYW1kZ3B1X3ZtX2JvX2ludmFs aWRhdGUoYWRldiwgYm8sIGZhbHNlKTsKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IEBAIC04NTEsNyAr ODQ4LDcgQEAgc3RhdGljIGludCBhbWRncHVfY3NfaWJfdm1fY2h1bmsoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCj4gICAJfQo+ICAgCj4gICAJaWYgKHAtPmpvYi0+dm0pIHsKPiAtCQlwLT5q b2ItPnZtX3BkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldCh2bS0+cm9vdC5ibyk7Cj4gKwkJ cC0+am9iLT52bV9wZF9hZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQodm0tPnJvb3QuYmFzZS5i byk7Cj4gICAKPiAgIAkJciA9IGFtZGdwdV9ib192bV91cGRhdGVfcHRlKHApOwo+ICAgCQlpZiAo cikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4gaW5kZXggYmEwMTI5 My4uZDAyODgwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMK PiBAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgYW1kZ3B1X2dlbV9vYmplY3RfY2xvc2Uoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosCj4gICAJaWYgKGJvX3ZhICYmIC0tYm9fdmEtPnJlZl9jb3Vu dCA9PSAwKSB7Cj4gICAJCWFtZGdwdV92bV9ib19ybXYoYWRldiwgYm9fdmEpOwo+ICAgCj4gLQkJ aWYgKGFtZGdwdV92bV9yZWFkeShhZGV2LCB2bSkpIHsKPiArCQlpZiAoYW1kZ3B1X3ZtX3JlYWR5 KHZtKSkgewo+ICAgCQkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMOwo+ICAgCj4gICAJ CQlyID0gYW1kZ3B1X3ZtX2NsZWFyX2ZyZWVkKGFkZXYsIHZtLCAmZmVuY2UpOwo+IEBAIC00ODEs MTAgKzQ4MSwxMCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZ2VtX3ZhX3VwZGF0ZV92bShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCQkgICAgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwK PiAgIAkJCQkgICAgdWludDMyX3Qgb3BlcmF0aW9uKQo+ICAgewo+IC0JaW50IHIgPSAtRVJFU1RB UlRTWVM7Cj4gKwlpbnQgcjsKPiAgIAo+IC0JaWYgKCFhbWRncHVfdm1fcmVhZHkoYWRldiwgdm0p KQo+IC0JCWdvdG8gZXJyb3I7Cj4gKwlpZiAoIWFtZGdwdV92bV9yZWFkeSh2bSkpCj4gKwkJcmV0 dXJuOwo+ICAgCj4gICAJciA9IGFtZGdwdV92bV91cGRhdGVfZGlyZWN0b3JpZXMoYWRldiwgdm0p Owo+ICAgCWlmIChyKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0 LmMKPiBpbmRleCA5ZTQ5NWRhLi41MmQwMTA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+IEBAIC05MjksNyArOTI5LDcgQEAgdm9pZCBhbWRncHVf Ym9fbW92ZV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPiAgIAkJcmV0dXJu Owo+ICAgCj4gICAJYWJvID0gY29udGFpbmVyX29mKGJvLCBzdHJ1Y3QgYW1kZ3B1X2JvLCB0Ym8p Owo+IC0JYW1kZ3B1X3ZtX2JvX2ludmFsaWRhdGUoYWRldiwgYWJvKTsKPiArCWFtZGdwdV92bV9i b19pbnZhbGlkYXRlKGFkZXYsIGFibywgZXZpY3QpOwo+ICAgCj4gICAJYW1kZ3B1X2JvX2t1bm1h cChhYm8pOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiBpbmRl eCA4NTE4OWYxLi41OTJjM2U3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3ZtLmMKPiBAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2dldF9wZF9ibyhzdHJ1 Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICp2YWxpZGF0ZWQsCj4g ICAJCQkgc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5ICplbnRyeSkKPiAgIHsKPiAtCWVudHJ5 LT5yb2JqID0gdm0tPnJvb3QuYm87Cj4gKwllbnRyeS0+cm9iaiA9IHZtLT5yb290LmJhc2UuYm87 Cj4gICAJZW50cnktPnByaW9yaXR5ID0gMDsKPiAgIAllbnRyeS0+dHYuYm8gPSAmZW50cnktPnJv YmotPnRibzsKPiAgIAllbnRyeS0+dHYuc2hhcmVkID0gdHJ1ZTsKPiBAQCAtMTQ5LDYxICsxNDks NiBAQCB2b2lkIGFtZGdwdV92bV9nZXRfcGRfYm8oc3RydWN0IGFtZGdwdV92bSAqdm0sCj4gICB9 Cj4gICAKPiAgIC8qKgo+IC0gKiBhbWRncHVfdm1fdmFsaWRhdGVfbGF5ZXIgLSB2YWxpZGF0ZSBh IHNpbmdsZSBwYWdlIHRhYmxlIGxldmVsCj4gLSAqCj4gLSAqIEBwYXJlbnQ6IHBhcmVudCBwYWdl IHRhYmxlIGxldmVsCj4gLSAqIEB2YWxpZGF0ZTogY2FsbGJhY2sgdG8gZG8gdGhlIHZhbGlkYXRp b24KPiAtICogQHBhcmFtOiBwYXJhbWV0ZXIgZm9yIHRoZSB2YWxpZGF0aW9uIGNhbGxiYWNrCj4g LSAqCj4gLSAqIFZhbGlkYXRlIHRoZSBwYWdlIHRhYmxlIEJPcyBvbiBjb21tYW5kIHN1Ym1pc3Np b24gaWYgbmVjY2Vzc2FyeS4KPiAtICovCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRl X2xldmVsKHN0cnVjdCBhbWRncHVfdm1fcHQgKnBhcmVudCwKPiAtCQkJCSAgICBpbnQgKCp2YWxp ZGF0ZSkodm9pZCAqLCBzdHJ1Y3QgYW1kZ3B1X2JvICopLAo+IC0JCQkJICAgIHZvaWQgKnBhcmFt LCBib29sIHVzZV9jcHVfZm9yX3VwZGF0ZSwKPiAtCQkJCSAgICBzdHJ1Y3QgdHRtX2JvX2dsb2Jh bCAqZ2xvYikKPiAtewo+IC0JdW5zaWduZWQgaTsKPiAtCWludCByOwo+IC0KPiAtCWlmICh1c2Vf Y3B1X2Zvcl91cGRhdGUpIHsKPiAtCQlyID0gYW1kZ3B1X2JvX2ttYXAocGFyZW50LT5ibywgTlVM TCk7Cj4gLQkJaWYgKHIpCj4gLQkJCXJldHVybiByOwo+IC0JfQo+IC0KPiAtCWlmICghcGFyZW50 LT5lbnRyaWVzKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPD0gcGFyZW50 LT5sYXN0X2VudHJ5X3VzZWQ7ICsraSkgewo+IC0JCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5 ID0gJnBhcmVudC0+ZW50cmllc1tpXTsKPiAtCj4gLQkJaWYgKCFlbnRyeS0+Ym8pCj4gLQkJCWNv bnRpbnVlOwo+IC0KPiAtCQlyID0gdmFsaWRhdGUocGFyYW0sIGVudHJ5LT5ibyk7Cj4gLQkJaWYg KHIpCj4gLQkJCXJldHVybiByOwo+IC0KPiAtCQlzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsK PiAtCQl0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmZW50cnktPmJvLT50Ym8pOwo+IC0JCWlmIChl bnRyeS0+Ym8tPnNoYWRvdykKPiAtCQkJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoJmVudHJ5LT5i by0+c2hhZG93LT50Ym8pOwo+IC0JCXNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4gLQo+ IC0JCS8qCj4gLQkJICogUmVjdXJzZSBpbnRvIHRoZSBzdWIgZGlyZWN0b3J5LiBUaGlzIGlzIGhh cm1sZXNzIGJlY2F1c2Ugd2UKPiAtCQkgKiBoYXZlIG9ubHkgYSBtYXhpbXVtIG9mIDUgbGF5ZXJz Lgo+IC0JCSAqLwo+IC0JCXIgPSBhbWRncHVfdm1fdmFsaWRhdGVfbGV2ZWwoZW50cnksIHZhbGlk YXRlLCBwYXJhbSwKPiAtCQkJCQkgICAgIHVzZV9jcHVfZm9yX3VwZGF0ZSwgZ2xvYik7Cj4gLQkJ aWYgKHIpCj4gLQkJCXJldHVybiByOwo+IC0JfQo+IC0KPiAtCXJldHVybiByOwo+IC19Cj4gLQo+ IC0vKioKPiAgICAqIGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3MgLSB2YWxpZGF0ZSB0aGUgcGFn ZSB0YWJsZSBCT3MKPiAgICAqCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVyCj4g QEAgLTIxNywzMiArMTYyLDQzIEBAIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSAgICAg IGludCAoKnZhbGlkYXRlKSh2b2lkICpwLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyksCj4gICAJCQkg ICAgICB2b2lkICpwYXJhbSkKPiAgIHsKPiAtCXVpbnQ2NF90IG51bV9ldmljdGlvbnM7Cj4gKwlz dHJ1Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiA9IGFkZXYtPm1tYW4uYmRldi5nbG9iOwo+ICsJaW50 IHI7Cj4gICAKPiAtCS8qIFdlIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgcGFnZSB0YWJsZXMK PiAtCSAqIGlmIHRoZXkgYXJlbid0IGFscmVhZHkgdmFsaWQuCj4gLQkgKi8KPiAtCW51bV9ldmlj dGlvbnMgPSBhdG9taWM2NF9yZWFkKCZhZGV2LT5udW1fZXZpY3Rpb25zKTsKPiAtCWlmIChudW1f ZXZpY3Rpb25zID09IHZtLT5sYXN0X2V2aWN0aW9uX2NvdW50ZXIpCj4gLQkJcmV0dXJuIDA7Cj4g KwlzcGluX2xvY2soJnZtLT5zdGF0dXNfbG9jayk7Cj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnZt LT5ldmljdGVkKSkgewo+ICsJCXN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqYm9fYmFzZTsKPiAr CQlzdHJ1Y3QgYW1kZ3B1X2JvICpibzsKPiAgIAo+IC0JcmV0dXJuIGFtZGdwdV92bV92YWxpZGF0 ZV9sZXZlbCgmdm0tPnJvb3QsIHZhbGlkYXRlLCBwYXJhbSwKPiAtCQkJCQl2bS0+dXNlX2NwdV9m b3JfdXBkYXRlLAo+IC0JCQkJCWFkZXYtPm1tYW4uYmRldi5nbG9iKTsKPiAtfQo+ICsJCWJvX2Jh c2UgPSBsaXN0X2ZpcnN0X2VudHJ5KCZ2bS0+ZXZpY3RlZCwKPiArCQkJCQkgICBzdHJ1Y3QgYW1k Z3B1X3ZtX2JvX2Jhc2UsCj4gKwkJCQkJICAgdm1fc3RhdHVzKTsKPiArCQlzcGluX3VubG9jaygm dm0tPnN0YXR1c19sb2NrKTsKPiAgIAo+IC0vKioKPiAtICogYW1kZ3B1X3ZtX2NoZWNrIC0gaGVs cGVyIGZvciBhbWRncHVfdm1fcmVhZHkKPiAtICovCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2No ZWNrKHZvaWQgKnBhcmFtLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPiAtewo+IC0JLyogaWYgYW55 dGhpbmcgaXMgc3dhcHBlZCBvdXQgZG9uJ3Qgc3dhcCBpdCBpbiBoZXJlLAo+IC0JICAganVzdCBh Ym9ydCBhbmQgd2FpdCBmb3IgdGhlIG5leHQgQ1MgKi8KPiAtCWlmICghYW1kZ3B1X2JvX2dwdV9h Y2Nlc3NpYmxlKGJvKSkKPiAtCQlyZXR1cm4gLUVSRVNUQVJUU1lTOwo+ICsJCWJvID0gYm9fYmFz ZS0+Ym87Cj4gKwkJQlVHX09OKCFibyk7Cj4gKwkJaWYgKGJvLT5wYXJlbnQpIHsKPiArCQkJciA9 IHZhbGlkYXRlKHBhcmFtLCBibyk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIHI7Cj4gICAK PiAtCWlmIChiby0+c2hhZG93ICYmICFhbWRncHVfYm9fZ3B1X2FjY2Vzc2libGUoYm8tPnNoYWRv dykpCj4gLQkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKPiArCQkJc3Bpbl9sb2NrKCZnbG9iLT5scnVf bG9jayk7Cj4gKwkJCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+dGJvKTsKPiArCQkJaWYg KGJvLT5zaGFkb3cpCj4gKwkJCQl0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmYm8tPnNoYWRvdy0+ dGJvKTsKPiArCQkJc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsKPiArCQl9Cj4gKwo+ICsJ CWlmICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKSB7Cj4gKwkJCXIgPSBhbWRncHVfYm9fa21hcChi bywgTlVMTCk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIHI7Cj4gKwkJfQo+ICsKPiArCQlz cGluX2xvY2soJnZtLT5zdGF0dXNfbG9jayk7Cj4gKwkJbGlzdF9kZWxfaW5pdCgmYm9fYmFzZS0+ dm1fc3RhdHVzKTsKPiArCX0KPiArCXNwaW5fdW5sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOwo+ICAg Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTI1MCwxNyArMjA2LDE5IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X3ZtX2NoZWNrKHZvaWQgKnBhcmFtLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPiAgIC8q Kgo+ICAgICogYW1kZ3B1X3ZtX3JlYWR5IC0gY2hlY2sgVk0gaXMgcmVhZHkgZm9yIHVwZGF0ZXMK PiAgICAqCj4gLSAqIEBhZGV2OiBhbWRncHUgZGV2aWNlCj4gICAgKiBAdm06IFZNIHRvIGNoZWNr Cj4gICAgKgo+ICAgICogQ2hlY2sgaWYgYWxsIFZNIFBEcy9QVHMgYXJlIHJlYWR5IGZvciB1cGRh dGVzCj4gICAgKi8KPiAtYm9vbCBhbWRncHVfdm1fcmVhZHkoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtKQo+ICtib29sIGFtZGdwdV92bV9yZWFkeShzdHJ1 Y3QgYW1kZ3B1X3ZtICp2bSkKPiAgIHsKPiAtCWlmIChhbWRncHVfdm1fY2hlY2soTlVMTCwgdm0t PnJvb3QuYm8pKQo+IC0JCXJldHVybiBmYWxzZTsKPiArCWJvb2wgcmVhZHk7Cj4gKwo+ICsJc3Bp bl9sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOwo+ICsJcmVhZHkgPSBsaXN0X2VtcHR5KCZ2bS0+ZXZp Y3RlZCk7Cj4gKwlzcGluX3VubG9jaygmdm0tPnN0YXR1c19sb2NrKTsKPiAgIAo+IC0JcmV0dXJu ICFhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKGFkZXYsIHZtLCBhbWRncHVfdm1fY2hlY2ssIE5V TEwpOwo+ICsJcmV0dXJuIHJlYWR5Owo+ICAgfQo+ICAgCj4gICAvKioKPiBAQCAtMzI1LDExICsy ODMsMTEgQEAgc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+ICAgCj4gICAJLyogd2FsayBvdmVyIHRoZSBhZGRyZXNzIHNwYWNlIGFu ZCBhbGxvY2F0ZSB0aGUgcGFnZSB0YWJsZXMgKi8KPiAgIAlmb3IgKHB0X2lkeCA9IGZyb207IHB0 X2lkeCA8PSB0bzsgKytwdF9pZHgpIHsKPiAtCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpy ZXN2ID0gdm0tPnJvb3QuYm8tPnRiby5yZXN2Owo+ICsJCXN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3QgKnJlc3YgPSB2bS0+cm9vdC5iYXNlLmJvLT50Ym8ucmVzdjsKPiAgIAkJc3RydWN0IGFtZGdw dV92bV9wdCAqZW50cnkgPSAmcGFyZW50LT5lbnRyaWVzW3B0X2lkeF07Cj4gICAJCXN0cnVjdCBh bWRncHVfYm8gKnB0Owo+ICAgCj4gLQkJaWYgKCFlbnRyeS0+Ym8pIHsKPiArCQlpZiAoIWVudHJ5 LT5iYXNlLmJvKSB7Cj4gICAJCQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LAo+ICAgCQkJCQkg ICAgIGFtZGdwdV92bV9ib19zaXplKGFkZXYsIGxldmVsKSwKPiAgIAkJCQkJICAgICBBTURHUFVf R1BVX1BBR0VfU0laRSwgdHJ1ZSwKPiBAQCAtMzUwLDkgKzMwOCwxMiBAQCBzdGF0aWMgaW50IGFt ZGdwdV92bV9hbGxvY19sZXZlbHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJCQkv KiBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBhdm9pZAo+ICAgCQkJ KiBmcmVlaW5nIHRoZW0gdXAgaW4gdGhlIHdyb25nIG9yZGVyLgo+ICAgCQkJKi8KPiAtCQkJcHQt PnBhcmVudCA9IGFtZGdwdV9ib19yZWYodm0tPnJvb3QuYm8pOwo+ICsJCQlwdC0+cGFyZW50ID0g YW1kZ3B1X2JvX3JlZih2bS0+cm9vdC5iYXNlLmJvKTsKPiAgIAo+IC0JCQllbnRyeS0+Ym8gPSBw dDsKPiArCQkJZW50cnktPmJhc2Uudm0gPSB2bTsKPiArCQkJZW50cnktPmJhc2UuYm8gPSBwdDsK PiArCQkJbGlzdF9hZGRfdGFpbCgmZW50cnktPmJhc2UuYm9fbGlzdCwgJnB0LT52YSk7Cj4gKwkJ CUlOSVRfTElTVF9IRUFEKCZlbnRyeS0+YmFzZS52bV9zdGF0dXMpOwo+ICAgCQkJZW50cnktPmFk ZHIgPSAwOwo+ICAgCQl9Cj4gICAKPiBAQCAtMTAxOSw3ICs5ODAsNyBAQCBzdGF0aWMgaW50IGFt ZGdwdV92bV93YWl0X3BkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1 X3ZtICp2bSwKPiAgIAlpbnQgcjsKPiAgIAo+ICAgCWFtZGdwdV9zeW5jX2NyZWF0ZSgmc3luYyk7 Cj4gLQlhbWRncHVfc3luY19yZXN2KGFkZXYsICZzeW5jLCB2bS0+cm9vdC5iby0+dGJvLnJlc3Ys IG93bmVyKTsKPiArCWFtZGdwdV9zeW5jX3Jlc3YoYWRldiwgJnN5bmMsIHZtLT5yb290LmJhc2Uu Ym8tPnRiby5yZXN2LCBvd25lcik7Cj4gICAJciA9IGFtZGdwdV9zeW5jX3dhaXQoJnN5bmMsIHRy dWUpOwo+ICAgCWFtZGdwdV9zeW5jX2ZyZWUoJnN5bmMpOwo+ICAgCj4gQEAgLTEwNTgsMTAgKzEw MTksMTAgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+ICAgCj4gICAJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMp KTsKPiAgIAlwYXJhbXMuYWRldiA9IGFkZXY7Cj4gLQlzaGFkb3cgPSBwYXJlbnQtPmJvLT5zaGFk b3c7Cj4gKwlzaGFkb3cgPSBwYXJlbnQtPmJhc2UuYm8tPnNoYWRvdzsKPiAgIAo+ICAgCWlmICh2 bS0+dXNlX2NwdV9mb3JfdXBkYXRlKSB7Cj4gLQkJcGRfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFt ZGdwdV9ib19rcHRyKHBhcmVudC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSAodW5zaWduZWQgbG9uZylh bWRncHVfYm9fa3B0cihwYXJlbnQtPmJhc2UuYm8pOwo+ICAgCQlyID0gYW1kZ3B1X3ZtX3dhaXRf cGQoYWRldiwgdm0sIEFNREdQVV9GRU5DRV9PV05FUl9WTSk7Cj4gICAJCWlmICh1bmxpa2VseShy KSkKPiAgIAkJCXJldHVybiByOwo+IEBAIC0xMDc3LDcgKzEwMzgsNyBAQCBzdGF0aWMgaW50IGFt ZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJCS8q IGFzc3VtZSB0aGUgd29yc3QgY2FzZSAqLwo+ICAgCQluZHcgKz0gcGFyZW50LT5sYXN0X2VudHJ5 X3VzZWQgKiA2Owo+ICAgCj4gLQkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHBhcmVu dC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChwYXJlbnQtPmJhc2Uu Ym8pOwo+ICAgCj4gICAJCWlmIChzaGFkb3cpIHsKPiAgIAkJCXNoYWRvd19hZGRyID0gYW1kZ3B1 X2JvX2dwdV9vZmZzZXQoc2hhZG93KTsKPiBAQCAtMTA5Nyw3ICsxMDU4LDcgQEAgc3RhdGljIGlu dCBhbWRncHVfdm1fdXBkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAg Cj4gICAJLyogd2FsayBvdmVyIHRoZSBhZGRyZXNzIHNwYWNlIGFuZCB1cGRhdGUgdGhlIGRpcmVj dG9yeSAqLwo+ICAgCWZvciAocHRfaWR4ID0gMDsgcHRfaWR4IDw9IHBhcmVudC0+bGFzdF9lbnRy eV91c2VkOyArK3B0X2lkeCkgewo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gcGFyZW50LT5l bnRyaWVzW3B0X2lkeF0uYm87Cj4gKwkJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBwYXJlbnQtPmVu dHJpZXNbcHRfaWR4XS5iYXNlLmJvOwo+ICAgCQl1aW50NjRfdCBwZGUsIHB0Owo+ICAgCj4gICAJ CWlmIChibyA9PSBOVUxMKQo+IEBAIC0xMTQwLDcgKzExMDEsNyBAQCBzdGF0aWMgaW50IGFtZGdw dV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJfQo+ICAg Cj4gICAJaWYgKGNvdW50KSB7Cj4gLQkJaWYgKHZtLT5yb290LmJvLT5zaGFkb3cpCj4gKwkJaWYg KHZtLT5yb290LmJhc2UuYm8tPnNoYWRvdykKPiAgIAkJCXBhcmFtcy5mdW5jKCZwYXJhbXMsIGxh c3Rfc2hhZG93LCBsYXN0X3B0LAo+ICAgCQkJCSAgICBjb3VudCwgaW5jciwgQU1ER1BVX1BURV9W QUxJRCk7Cj4gICAKPiBAQCAtMTE1Myw3ICsxMTE0LDggQEAgc3RhdGljIGludCBhbWRncHVfdm1f dXBkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCQkJYW1kZ3B1X2pv Yl9mcmVlKGpvYik7Cj4gICAJCX0gZWxzZSB7Cj4gICAJCQlhbWRncHVfcmluZ19wYWRfaWIocmlu ZywgcGFyYW1zLmliKTsKPiAtCQkJYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5jLCBw YXJlbnQtPmJvLT50Ym8ucmVzdiwKPiArCQkJYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5z eW5jLAo+ICsJCQkJCSBwYXJlbnQtPmJhc2UuYm8tPnRiby5yZXN2LAo+ICAgCQkJCQkgQU1ER1BV X0ZFTkNFX09XTkVSX1ZNKTsKPiAgIAkJCWlmIChzaGFkb3cpCj4gICAJCQkJYW1kZ3B1X3N5bmNf cmVzdihhZGV2LCAmam9iLT5zeW5jLAo+IEBAIC0xMTY2LDcgKzExMjgsNyBAQCBzdGF0aWMgaW50 IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJ CQlpZiAocikKPiAgIAkJCQlnb3RvIGVycm9yX2ZyZWU7Cj4gICAKPiAtCQkJYW1kZ3B1X2JvX2Zl bmNlKHBhcmVudC0+Ym8sIGZlbmNlLCB0cnVlKTsKPiArCQkJYW1kZ3B1X2JvX2ZlbmNlKHBhcmVu dC0+YmFzZS5ibywgZmVuY2UsIHRydWUpOwo+ICAgCQkJZG1hX2ZlbmNlX3B1dCh2bS0+bGFzdF9k aXJfdXBkYXRlKTsKPiAgIAkJCXZtLT5sYXN0X2Rpcl91cGRhdGUgPSBkbWFfZmVuY2VfZ2V0KGZl bmNlKTsKPiAgIAkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+IEBAIC0xMTc5LDcgKzExNDEsNyBA QCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCj4gICAJZm9yIChwdF9pZHggPSAwOyBwdF9pZHggPD0gcGFyZW50LT5sYXN0X2VudHJ5 X3VzZWQ7ICsrcHRfaWR4KSB7Cj4gICAJCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gJnBh cmVudC0+ZW50cmllc1twdF9pZHhdOwo+ICAgCj4gLQkJaWYgKCFlbnRyeS0+Ym8pCj4gKwkJaWYg KCFlbnRyeS0+YmFzZS5ibykKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gICAJCXIgPSBhbWRncHVf dm1fdXBkYXRlX2xldmVsKGFkZXYsIHZtLCBlbnRyeSwgbGV2ZWwgKyAxKTsKPiBAQCAtMTIxMiw3 ICsxMTc0LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2ludmFsaWRhdGVfbGV2ZWwoc3RydWN0 IGFtZGdwdV92bV9wdCAqcGFyZW50KQo+ICAgCWZvciAocHRfaWR4ID0gMDsgcHRfaWR4IDw9IHBh cmVudC0+bGFzdF9lbnRyeV91c2VkOyArK3B0X2lkeCkgewo+ICAgCQlzdHJ1Y3QgYW1kZ3B1X3Zt X3B0ICplbnRyeSA9ICZwYXJlbnQtPmVudHJpZXNbcHRfaWR4XTsKPiAgIAo+IC0JCWlmICghZW50 cnktPmJvKQo+ICsJCWlmICghZW50cnktPmJhc2UuYm8pCj4gICAJCQljb250aW51ZTsKPiAgIAo+ ICAgCQllbnRyeS0+YWRkciA9IH4wVUxMOwo+IEBAIC0xMjY3LDcgKzEyMjksNyBAQCB2b2lkIGFt ZGdwdV92bV9nZXRfZW50cnkoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcCwgdWlu dDY0X3QgYWRkciwKPiAgIAkqZW50cnkgPSAmcC0+dm0tPnJvb3Q7Cj4gICAJd2hpbGUgKCgqZW50 cnkpLT5lbnRyaWVzKSB7Cj4gICAJCWlkeCA9IGFkZHIgPj4gKHAtPmFkZXYtPnZtX21hbmFnZXIu YmxvY2tfc2l6ZSAqIGxldmVsLS0pOwo+IC0JCWlkeCAlPSBhbWRncHVfYm9fc2l6ZSgoKmVudHJ5 KS0+Ym8pIC8gODsKPiArCQlpZHggJT0gYW1kZ3B1X2JvX3NpemUoKCplbnRyeSktPmJhc2UuYm8p IC8gODsKPiAgIAkJKnBhcmVudCA9ICplbnRyeTsKPiAgIAkJKmVudHJ5ID0gJigqZW50cnkpLT5l bnRyaWVzW2lkeF07Cj4gICAJfQo+IEBAIC0xMzAzLDcgKzEyNjUsNyBAQCBzdGF0aWMgdm9pZCBh bWRncHVfdm1faGFuZGxlX2h1Z2VfcGFnZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFt cyAqcCwKPiAgIAkgICAgcC0+c3JjIHx8Cj4gICAJICAgICEoZmxhZ3MgJiBBTURHUFVfUFRFX1ZB TElEKSkgewo+ICAgCj4gLQkJZHN0ID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoZW50cnktPmJvKTsK PiArCQlkc3QgPSBhbWRncHVfYm9fZ3B1X29mZnNldChlbnRyeS0+YmFzZS5ibyk7Cj4gICAJCWRz dCA9IGFtZGdwdV9nYXJ0X2dldF92bV9wZGUocC0+YWRldiwgZHN0KTsKPiAgIAkJZmxhZ3MgPSBB TURHUFVfUFRFX1ZBTElEOwo+ICAgCX0gZWxzZSB7Cj4gQEAgLTEzMjksMTggKzEyOTEsMTggQEAg c3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2hhbmRsZV9odWdlX3BhZ2VzKHN0cnVjdCBhbWRncHVfcHRl X3VwZGF0ZV9wYXJhbXMgKnAsCj4gICAJCXRtcCA9IHAtPnBhZ2VzX2FkZHI7Cj4gICAJCXAtPnBh Z2VzX2FkZHIgPSBOVUxMOwo+ICAgCj4gLQkJcGRfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFtZGdw dV9ib19rcHRyKHBhcmVudC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSAodW5zaWduZWQgbG9uZylhbWRn cHVfYm9fa3B0cihwYXJlbnQtPmJhc2UuYm8pOwo+ICAgCQlwZGUgPSBwZF9hZGRyICsgKGVudHJ5 IC0gcGFyZW50LT5lbnRyaWVzKSAqIDg7Cj4gICAJCWFtZGdwdV92bV9jcHVfc2V0X3B0ZXMocCwg cGRlLCBkc3QsIDEsIDAsIGZsYWdzKTsKPiAgIAo+ICAgCQlwLT5wYWdlc19hZGRyID0gdG1wOwo+ ICAgCX0gZWxzZSB7Cj4gLQkJaWYgKHBhcmVudC0+Ym8tPnNoYWRvdykgewo+IC0JCQlwZF9hZGRy ID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQocGFyZW50LT5iby0+c2hhZG93KTsKPiArCQlpZiAocGFy ZW50LT5iYXNlLmJvLT5zaGFkb3cpIHsKPiArCQkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zm c2V0KHBhcmVudC0+YmFzZS5iby0+c2hhZG93KTsKPiAgIAkJCXBkZSA9IHBkX2FkZHIgKyAoZW50 cnkgLSBwYXJlbnQtPmVudHJpZXMpICogODsKPiAgIAkJCWFtZGdwdV92bV9kb19zZXRfcHRlcyhw LCBwZGUsIGRzdCwgMSwgMCwgZmxhZ3MpOwo+ICAgCQl9Cj4gLQkJcGRfYWRkciA9IGFtZGdwdV9i b19ncHVfb2Zmc2V0KHBhcmVudC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29m ZnNldChwYXJlbnQtPmJhc2UuYm8pOwo+ICAgCQlwZGUgPSBwZF9hZGRyICsgKGVudHJ5IC0gcGFy ZW50LT5lbnRyaWVzKSAqIDg7Cj4gICAJCWFtZGdwdV92bV9kb19zZXRfcHRlcyhwLCBwZGUsIGRz dCwgMSwgMCwgZmxhZ3MpOwo+ICAgCX0KPiBAQCAtMTM5MSw3ICsxMzUzLDcgQEAgc3RhdGljIGlu dCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAq cGFyYW1zLAo+ICAgCQlpZiAoZW50cnktPmFkZHIgJiBBTURHUFVfUERFX1BURSkKPiAgIAkJCWNv bnRpbnVlOwo+ICAgCj4gLQkJcHQgPSBlbnRyeS0+Ym87Cj4gKwkJcHQgPSBlbnRyeS0+YmFzZS5i bzsKPiAgIAkJaWYgKHVzZV9jcHVfdXBkYXRlKSB7Cj4gICAJCQlwZV9zdGFydCA9ICh1bnNpZ25l ZCBsb25nKWFtZGdwdV9ib19rcHRyKHB0KTsKPiAgIAkJfSBlbHNlIHsKPiBAQCAtMTYxMSwxMiAr MTU3MywxMiBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191cGRhdGVfbWFwcGluZyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAlpZiAocikKPiAgIAkJZ290byBlcnJvcl9mcmVlOwo+ ICAgCj4gLQlyID0gYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5jLCB2bS0+cm9vdC5i by0+dGJvLnJlc3YsCj4gKwlyID0gYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5jLCB2 bS0+cm9vdC5iYXNlLmJvLT50Ym8ucmVzdiwKPiAgIAkJCSAgICAgb3duZXIpOwo+ICAgCWlmIChy KQo+ICAgCQlnb3RvIGVycm9yX2ZyZWU7Cj4gICAKPiAtCXIgPSByZXNlcnZhdGlvbl9vYmplY3Rf cmVzZXJ2ZV9zaGFyZWQodm0tPnJvb3QuYm8tPnRiby5yZXN2KTsKPiArCXIgPSByZXNlcnZhdGlv bl9vYmplY3RfcmVzZXJ2ZV9zaGFyZWQodm0tPnJvb3QuYmFzZS5iby0+dGJvLnJlc3YpOwo+ICAg CWlmIChyKQo+ICAgCQlnb3RvIGVycm9yX2ZyZWU7Cj4gICAKPiBAQCAtMTYzMSw3ICsxNTkzLDcg QEAgc3RhdGljIGludCBhbWRncHVfdm1fYm9fdXBkYXRlX21hcHBpbmcoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCj4gICAJaWYgKHIpCj4gICAJCWdvdG8gZXJyb3JfZnJlZTsKPiAgIAo+IC0J YW1kZ3B1X2JvX2ZlbmNlKHZtLT5yb290LmJvLCBmLCB0cnVlKTsKPiArCWFtZGdwdV9ib19mZW5j ZSh2bS0+cm9vdC5iYXNlLmJvLCBmLCB0cnVlKTsKPiAgIAlkbWFfZmVuY2VfcHV0KCpmZW5jZSk7 Cj4gICAJKmZlbmNlID0gZjsKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMTkyNiw3ICsxODg4LDcgQEAg c3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2ZyZWVfbWFwcGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKPiAgICAqLwo+ICAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX3BydF9maW5pKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKPiAgIHsKPiAtCXN0cnVj dCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSB2bS0+cm9vdC5iby0+dGJvLnJlc3Y7Cj4gKwlz dHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gdm0tPnJvb3QuYmFzZS5iby0+dGJvLnJl c3Y7Cj4gICAJc3RydWN0IGRtYV9mZW5jZSAqZXhjbCwgKipzaGFyZWQ7Cj4gICAJdW5zaWduZWQg aSwgc2hhcmVkX2NvdW50Owo+ICAgCWludCByOwo+IEBAIC0yNDEzLDEyICsyMzc1LDI1IEBAIHZv aWQgYW1kZ3B1X3ZtX2JvX3JtdihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgICAqIE1h cmsgQGJvIGFzIGludmFsaWQuCj4gICAgKi8KPiAgIHZvaWQgYW1kZ3B1X3ZtX2JvX2ludmFsaWRh dGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gLQkJCSAgICAgc3RydWN0IGFtZGdwdV9i byAqYm8pCj4gKwkJCSAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8sIGJvb2wgZXZpY3RlZCkKPiAg IHsKPiAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKmJvX2Jhc2U7Cj4gICAKPiAgIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGJvX2Jhc2UsICZiby0+dmEsIGJvX2xpc3QpIHsKPiArCQlzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSA9IGJvX2Jhc2UtPnZtOwo+ICsKPiAgIAkJYm9fYmFzZS0+bW92ZWQgPSB0 cnVlOwo+ICsJCWlmIChldmljdGVkICYmIGJvLT50Ym8ucmVzdiA9PSB2bS0+cm9vdC5iYXNlLmJv LT50Ym8ucmVzdikgewo+ICsJCQlzcGluX2xvY2soJmJvX2Jhc2UtPnZtLT5zdGF0dXNfbG9jayk7 Cj4gKwkJCWxpc3RfbW92ZSgmYm9fYmFzZS0+dm1fc3RhdHVzLCAmdm0tPmV2aWN0ZWQpOwo+ICsJ CQlzcGluX3VubG9jaygmYm9fYmFzZS0+dm0tPnN0YXR1c19sb2NrKTsKPiArCQkJY29udGludWU7 Cj4gKwkJfQo+ICsKPiArCQkvKiBEb24ndCBhZGQgcGFnZSB0YWJsZXMgdG8gdGhlIG1vdmVkIHN0 YXRlICovCj4gKwkJaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiAgIAkJc3Bpbl9sb2NrKCZib19iYXNlLT52bS0+c3RhdHVzX2xvY2sp Owo+ICAgCQlsaXN0X21vdmUoJmJvX2Jhc2UtPnZtX3N0YXR1cywgJmJvX2Jhc2UtPnZtLT5tb3Zl ZCk7Cj4gICAJCXNwaW5fdW5sb2NrKCZib19iYXNlLT52bS0+c3RhdHVzX2xvY2spOwo+IEBAIC0y NTA2LDYgKzI0ODEsNyBAQCBpbnQgYW1kZ3B1X3ZtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ICAgCWZvciAoaSA9IDA7IGkgPCBBTURHUFVf TUFYX1ZNSFVCUzsgaSsrKQo+ICAgCQl2bS0+cmVzZXJ2ZWRfdm1pZFtpXSA9IE5VTEw7Cj4gICAJ c3Bpbl9sb2NrX2luaXQoJnZtLT5zdGF0dXNfbG9jayk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmdm0t PmV2aWN0ZWQpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZ2bS0+bW92ZWQpOwo+ICAgCUlOSVRfTElT VF9IRUFEKCZ2bS0+ZnJlZWQpOwo+ICAgCj4gQEAgLTI1NTAsMzAgKzI1MjYsMzEgQEAgaW50IGFt ZGdwdV92bV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3Zt ICp2bSwKPiAgIAlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCBhbWRncHVfdm1fYm9fc2l6ZShh ZGV2LCAwKSwgYWxpZ24sIHRydWUsCj4gICAJCQkgICAgIEFNREdQVV9HRU1fRE9NQUlOX1ZSQU0s Cj4gICAJCQkgICAgIGZsYWdzLAo+IC0JCQkgICAgIE5VTEwsIE5VTEwsIGluaXRfcGRlX3ZhbHVl LCAmdm0tPnJvb3QuYm8pOwo+ICsJCQkgICAgIE5VTEwsIE5VTEwsIGluaXRfcGRlX3ZhbHVlLCAm dm0tPnJvb3QuYmFzZS5ibyk7Cj4gICAJaWYgKHIpCj4gICAJCWdvdG8gZXJyb3JfZnJlZV9zY2hl ZF9lbnRpdHk7Cj4gICAKPiAtCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZSh2bS0+cm9vdC5ibywgZmFs c2UpOwo+IC0JaWYgKHIpCj4gLQkJZ290byBlcnJvcl9mcmVlX3Jvb3Q7Cj4gLQo+IC0Jdm0tPmxh c3RfZXZpY3Rpb25fY291bnRlciA9IGF0b21pYzY0X3JlYWQoJmFkZXYtPm51bV9ldmljdGlvbnMp Owo+ICsJdm0tPnJvb3QuYmFzZS52bSA9IHZtOwo+ICsJbGlzdF9hZGRfdGFpbCgmdm0tPnJvb3Qu YmFzZS5ib19saXN0LCAmdm0tPnJvb3QuYmFzZS5iby0+dmEpOwo+ICsJSU5JVF9MSVNUX0hFQUQo JnZtLT5yb290LmJhc2Uudm1fc3RhdHVzKTsKPiAgIAo+ICAgCWlmICh2bS0+dXNlX2NwdV9mb3Jf dXBkYXRlKSB7Cj4gLQkJciA9IGFtZGdwdV9ib19rbWFwKHZtLT5yb290LmJvLCBOVUxMKTsKPiAr CQlyID0gYW1kZ3B1X2JvX3Jlc2VydmUodm0tPnJvb3QuYmFzZS5ibywgZmFsc2UpOwo+ICAgCQlp ZiAocikKPiAgIAkJCWdvdG8gZXJyb3JfZnJlZV9yb290Owo+IC0JfQo+ICAgCj4gLQlhbWRncHVf Ym9fdW5yZXNlcnZlKHZtLT5yb290LmJvKTsKPiArCQlyID0gYW1kZ3B1X2JvX2ttYXAodm0tPnJv b3QuYmFzZS5ibywgTlVMTCk7Cj4gKwkJaWYgKHIpCj4gKwkJCWdvdG8gZXJyb3JfZnJlZV9yb290 Owo+ICsJCWFtZGdwdV9ib191bnJlc2VydmUodm0tPnJvb3QuYmFzZS5ibyk7Cj4gKwl9Cj4gICAK PiAgIAlyZXR1cm4gMDsKPiAgIAo+ICAgZXJyb3JfZnJlZV9yb290Ogo+IC0JYW1kZ3B1X2JvX3Vu cmVmKCZ2bS0+cm9vdC5iby0+c2hhZG93KTsKPiAtCWFtZGdwdV9ib191bnJlZigmdm0tPnJvb3Qu Ym8pOwo+IC0Jdm0tPnJvb3QuYm8gPSBOVUxMOwo+ICsJYW1kZ3B1X2JvX3VucmVmKCZ2bS0+cm9v dC5iYXNlLmJvLT5zaGFkb3cpOwo+ICsJYW1kZ3B1X2JvX3VucmVmKCZ2bS0+cm9vdC5iYXNlLmJv KTsKPiArCXZtLT5yb290LmJhc2UuYm8gPSBOVUxMOwo+ICAgCj4gICBlcnJvcl9mcmVlX3NjaGVk X2VudGl0eToKPiAgIAlhbWRfc2NoZWRfZW50aXR5X2ZpbmkoJnJpbmctPnNjaGVkLCAmdm0tPmVu dGl0eSk7Cj4gQEAgLTI1OTIsOSArMjU2OSwxMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1fZnJl ZV9sZXZlbHMoc3RydWN0IGFtZGdwdV92bV9wdCAqbGV2ZWwpCj4gICB7Cj4gICAJdW5zaWduZWQg aTsKPiAgIAo+IC0JaWYgKGxldmVsLT5ibykgewo+IC0JCWFtZGdwdV9ib191bnJlZigmbGV2ZWwt PmJvLT5zaGFkb3cpOwo+IC0JCWFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJvKTsKPiArCWlmIChs ZXZlbC0+YmFzZS5ibykgewo+ICsJCWxpc3RfZGVsKCZsZXZlbC0+YmFzZS5ib19saXN0KTsKPiAr CQlsaXN0X2RlbCgmbGV2ZWwtPmJhc2Uudm1fc3RhdHVzKTsKPiArCQlhbWRncHVfYm9fdW5yZWYo JmxldmVsLT5iYXNlLmJvLT5zaGFkb3cpOwo+ICsJCWFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJh c2UuYm8pOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChsZXZlbC0+ZW50cmllcykKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+IGluZGV4IGZmMDkzZDQuLjRlNDY1ZTggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+IEBAIC0xMTEsMTIgKzExMSwx MiBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2Ugewo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGFt ZGdwdV92bV9wdCB7Cj4gLQlzdHJ1Y3QgYW1kZ3B1X2JvCSpibzsKPiAtCXVpbnQ2NF90CQlhZGRy Owo+ICsJc3RydWN0IGFtZGdwdV92bV9ib19iYXNlCWJhc2U7Cj4gKwl1aW50NjRfdAkJCWFkZHI7 Cj4gICAKPiAgIAkvKiBhcnJheSBvZiBwYWdlIHRhYmxlcywgb25lIGZvciBlYWNoIGRpcmVjdG9y eSBlbnRyeSAqLwo+IC0Jc3RydWN0IGFtZGdwdV92bV9wdAkqZW50cmllczsKPiAtCXVuc2lnbmVk CQlsYXN0X2VudHJ5X3VzZWQ7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0CQkqZW50cmllczsKPiAr CXVuc2lnbmVkCQkJbGFzdF9lbnRyeV91c2VkOwo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGFtZGdw dV92bSB7Cj4gQEAgLTEyNiw2ICsxMjYsOSBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtIHsKPiAgIAkvKiBw cm90ZWN0aW5nIGludmFsaWRhdGVkICovCj4gICAJc3BpbmxvY2tfdAkJc3RhdHVzX2xvY2s7Cj4g ICAKPiArCS8qIEJPcyB3aG8gbmVlZHMgYSB2YWxpZGF0aW9uICovCj4gKwlzdHJ1Y3QgbGlzdF9o ZWFkCWV2aWN0ZWQ7Cj4gKwo+ICAgCS8qIEJPcyBtb3ZlZCwgYnV0IG5vdCB5ZXQgdXBkYXRlZCBp biB0aGUgUFQgKi8KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkCW1vdmVkOwo+ICAgCj4gQEAgLTEzNSw3 ICsxMzgsNiBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtIHsKPiAgIAkvKiBjb250YWlucyB0aGUgcGFnZSBk aXJlY3RvcnkgKi8KPiAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0ICAgICByb290Owo+ICAgCXN0cnVj dCBkbWFfZmVuY2UJKmxhc3RfZGlyX3VwZGF0ZTsKPiAtCXVpbnQ2NF90CQlsYXN0X2V2aWN0aW9u X2NvdW50ZXI7Cj4gICAKPiAgIAkvKiBwcm90ZWN0aW5nIGZyZWVkICovCj4gICAJc3BpbmxvY2tf dAkJZnJlZWRfbG9jazsKPiBAQCAtMjI1LDcgKzIyNyw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2Zpbmko c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtKTsKPiAgIHZv aWQgYW1kZ3B1X3ZtX2dldF9wZF9ibyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSBzdHJ1 Y3QgbGlzdF9oZWFkICp2YWxpZGF0ZWQsCj4gICAJCQkgc3RydWN0IGFtZGdwdV9ib19saXN0X2Vu dHJ5ICplbnRyeSk7Cj4gLWJvb2wgYW1kZ3B1X3ZtX3JlYWR5KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Cj4gK2Jvb2wgYW1kZ3B1X3ZtX3JlYWR5KHN0 cnVjdCBhbWRncHVfdm0gKnZtKTsKPiAgIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSAg ICAgIGludCAoKmNhbGxiYWNrKSh2b2lkICpwLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyksCj4gICAJ CQkgICAgICB2b2lkICpwYXJhbSk7Cj4gQEAgLTI1MCw3ICsyNTIsNyBAQCBpbnQgYW1kZ3B1X3Zt X2JvX3VwZGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCXN0cnVjdCBhbWRn cHVfYm9fdmEgKmJvX3ZhLAo+ICAgCQkJYm9vbCBjbGVhcik7Cj4gICB2b2lkIGFtZGdwdV92bV9i b19pbnZhbGlkYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+IC0JCQkgICAgIHN0cnVj dCBhbWRncHVfYm8gKmJvKTsKPiArCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpibywgYm9vbCBl dmljdGVkKTsKPiAgIHN0cnVjdCBhbWRncHVfYm9fdmEgKmFtZGdwdV92bV9ib19maW5kKHN0cnVj dCBhbWRncHVfdm0gKnZtLAo+ICAgCQkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7Cj4g ICBzdHJ1Y3QgYW1kZ3B1X2JvX3ZhICphbWRncHVfdm1fYm9fYWRkKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==