From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 6/9] drm/amdgpu: track evicted page tables v2 Date: Mon, 28 Aug 2017 14:58:55 +0800 Message-ID: <4a71b684-ad27-1c89-426c-939f531f4630@amd.com> References: <1503653899-1781-1-git-send-email-deathsimple@vodafone.de> <1503653899-1781-6-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: <1503653899-1781-6-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 CgpPbiAyMDE35bm0MDjmnIgyNeaXpSAxNzozOCwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBG cm9tOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4KPiBJbnN0 ZWFkIG9mIHZhbGlkYXRpbmcgYWxsIHBhZ2UgdGFibGVzIHdoZW4gb25lIHdhcyBldmljdGVkLAo+ IHRyYWNrIHdoaWNoIG9uZSBuZWVkcyBhIHZhbGlkYXRpb24uCj4KPiB2Mjogc2ltcGxpZnkgYW1k Z3B1X3ZtX3JlYWR5IGFzIHdlbGwKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcg PGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiBSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxh bGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPiAodjEpCkFja2VkLWJ5OiBDaHVubWluZyBaaG91IDxk YXZpZDEuemhvdUBhbWQuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMgICAgIHwgICA3ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2VtLmMgICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9vYmplY3QuYyB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3ZtLmMgICAgIHwgMjI3ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCAgICAgfCAgMTYgKy0KPiAgIDUgZmls ZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gaW5kZXggM2Y0NmI1YS4uZjY4YWM1NiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gQEAgLTYzMiw5ICs2 MzIsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfYm9zKHN0cnVjdCBhbWRncHVfY3Nf cGFyc2VyICpwLAo+ICAgCj4gICAJYW1kZ3B1X2NzX3JlcG9ydF9tb3ZlZF9ieXRlcyhwLT5hZGV2 LCBwLT5ieXRlc19tb3ZlZCwKPiAgIAkJCQkgICAgIHAtPmJ5dGVzX21vdmVkX3Zpcyk7Cj4gLQlm cHJpdi0+dm0ubGFzdF9ldmljdGlvbl9jb3VudGVyID0KPiAtCQlhdG9taWM2NF9yZWFkKCZwLT5h ZGV2LT5udW1fZXZpY3Rpb25zKTsKPiAtCj4gICAJaWYgKHAtPmJvX2xpc3QpIHsKPiAgIAkJc3Ry dWN0IGFtZGdwdV9ibyAqZ2RzID0gcC0+Ym9fbGlzdC0+Z2RzX29iajsKPiAgIAkJc3RydWN0IGFt ZGdwdV9ibyAqZ3dzID0gcC0+Ym9fbGlzdC0+Z3dzX29iajsKPiBAQCAtODI2LDcgKzgyMyw3IEBA IHN0YXRpYyBpbnQgYW1kZ3B1X2JvX3ZtX3VwZGF0ZV9wdGUoc3RydWN0IGFtZGdwdV9jc19wYXJz ZXIgKnApCj4gICAJCQlpZiAoIWJvKQo+ICAgCQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWFtZGdw dV92bV9ib19pbnZhbGlkYXRlKGFkZXYsIGJvKTsKPiArCQkJYW1kZ3B1X3ZtX2JvX2ludmFsaWRh dGUoYWRldiwgYm8sIGZhbHNlKTsKPiAgIAkJfQo+ICAgCX0KPiAgIAo+IEBAIC04NTEsNyArODQ4 LDcgQEAgc3RhdGljIGludCBhbWRncHVfY3NfaWJfdm1fY2h1bmsoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCj4gICAJfQo+ICAgCj4gICAJaWYgKHAtPmpvYi0+dm0pIHsKPiAtCQlwLT5qb2It PnZtX3BkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldCh2bS0+cm9vdC5ibyk7Cj4gKwkJcC0+ am9iLT52bV9wZF9hZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQodm0tPnJvb3QuYmFzZS5ibyk7 Cj4gICAKPiAgIAkJciA9IGFtZGdwdV9ib192bV91cGRhdGVfcHRlKHApOwo+ICAgCQlpZiAocikK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4gaW5kZXggYmEwMTI5My4u ZDAyODgwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKPiBA QCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgYW1kZ3B1X2dlbV9vYmplY3RfY2xvc2Uoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosCj4gICAJaWYgKGJvX3ZhICYmIC0tYm9fdmEtPnJlZl9jb3VudCA9 PSAwKSB7Cj4gICAJCWFtZGdwdV92bV9ib19ybXYoYWRldiwgYm9fdmEpOwo+ICAgCj4gLQkJaWYg KGFtZGdwdV92bV9yZWFkeShhZGV2LCB2bSkpIHsKPiArCQlpZiAoYW1kZ3B1X3ZtX3JlYWR5KHZt KSkgewo+ICAgCQkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMOwo+ICAgCj4gICAJCQly ID0gYW1kZ3B1X3ZtX2NsZWFyX2ZyZWVkKGFkZXYsIHZtLCAmZmVuY2UpOwo+IEBAIC00ODEsMTAg KzQ4MSwxMCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZ2VtX3ZhX3VwZGF0ZV92bShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKPiAgIAkJCQkgICAgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKPiAg IAkJCQkgICAgdWludDMyX3Qgb3BlcmF0aW9uKQo+ICAgewo+IC0JaW50IHIgPSAtRVJFU1RBUlRT WVM7Cj4gKwlpbnQgcjsKPiAgIAo+IC0JaWYgKCFhbWRncHVfdm1fcmVhZHkoYWRldiwgdm0pKQo+ IC0JCWdvdG8gZXJyb3I7Cj4gKwlpZiAoIWFtZGdwdV92bV9yZWFkeSh2bSkpCj4gKwkJcmV0dXJu Owo+ICAgCj4gICAJciA9IGFtZGdwdV92bV91cGRhdGVfZGlyZWN0b3JpZXMoYWRldiwgdm0pOwo+ ICAgCWlmIChyKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMK PiBpbmRleCA5ZTQ5NWRhLi41MmQwMTA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9vYmplY3QuYwo+IEBAIC05MjksNyArOTI5LDcgQEAgdm9pZCBhbWRncHVfYm9f bW92ZV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPiAgIAkJcmV0dXJuOwo+ ICAgCj4gICAJYWJvID0gY29udGFpbmVyX29mKGJvLCBzdHJ1Y3QgYW1kZ3B1X2JvLCB0Ym8pOwo+ IC0JYW1kZ3B1X3ZtX2JvX2ludmFsaWRhdGUoYWRldiwgYWJvKTsKPiArCWFtZGdwdV92bV9ib19p bnZhbGlkYXRlKGFkZXYsIGFibywgZXZpY3QpOwo+ICAgCj4gICAJYW1kZ3B1X2JvX2t1bm1hcChh Ym8pOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiBpbmRleCA4 NTE4OWYxLi41OTJjM2U3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zt LmMKPiBAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2dldF9wZF9ibyhzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSBzdHJ1Y3QgbGlzdF9oZWFkICp2YWxpZGF0ZWQsCj4gICAJ CQkgc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5ICplbnRyeSkKPiAgIHsKPiAtCWVudHJ5LT5y b2JqID0gdm0tPnJvb3QuYm87Cj4gKwllbnRyeS0+cm9iaiA9IHZtLT5yb290LmJhc2UuYm87Cj4g ICAJZW50cnktPnByaW9yaXR5ID0gMDsKPiAgIAllbnRyeS0+dHYuYm8gPSAmZW50cnktPnJvYmot PnRibzsKPiAgIAllbnRyeS0+dHYuc2hhcmVkID0gdHJ1ZTsKPiBAQCAtMTQ5LDYxICsxNDksNiBA QCB2b2lkIGFtZGdwdV92bV9nZXRfcGRfYm8oc3RydWN0IGFtZGdwdV92bSAqdm0sCj4gICB9Cj4g ICAKPiAgIC8qKgo+IC0gKiBhbWRncHVfdm1fdmFsaWRhdGVfbGF5ZXIgLSB2YWxpZGF0ZSBhIHNp bmdsZSBwYWdlIHRhYmxlIGxldmVsCj4gLSAqCj4gLSAqIEBwYXJlbnQ6IHBhcmVudCBwYWdlIHRh YmxlIGxldmVsCj4gLSAqIEB2YWxpZGF0ZTogY2FsbGJhY2sgdG8gZG8gdGhlIHZhbGlkYXRpb24K PiAtICogQHBhcmFtOiBwYXJhbWV0ZXIgZm9yIHRoZSB2YWxpZGF0aW9uIGNhbGxiYWNrCj4gLSAq Cj4gLSAqIFZhbGlkYXRlIHRoZSBwYWdlIHRhYmxlIEJPcyBvbiBjb21tYW5kIHN1Ym1pc3Npb24g aWYgbmVjY2Vzc2FyeS4KPiAtICovCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRlX2xl dmVsKHN0cnVjdCBhbWRncHVfdm1fcHQgKnBhcmVudCwKPiAtCQkJCSAgICBpbnQgKCp2YWxpZGF0 ZSkodm9pZCAqLCBzdHJ1Y3QgYW1kZ3B1X2JvICopLAo+IC0JCQkJICAgIHZvaWQgKnBhcmFtLCBi b29sIHVzZV9jcHVfZm9yX3VwZGF0ZSwKPiAtCQkJCSAgICBzdHJ1Y3QgdHRtX2JvX2dsb2JhbCAq Z2xvYikKPiAtewo+IC0JdW5zaWduZWQgaTsKPiAtCWludCByOwo+IC0KPiAtCWlmICh1c2VfY3B1 X2Zvcl91cGRhdGUpIHsKPiAtCQlyID0gYW1kZ3B1X2JvX2ttYXAocGFyZW50LT5ibywgTlVMTCk7 Cj4gLQkJaWYgKHIpCj4gLQkJCXJldHVybiByOwo+IC0JfQo+IC0KPiAtCWlmICghcGFyZW50LT5l bnRyaWVzKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPD0gcGFyZW50LT5s YXN0X2VudHJ5X3VzZWQ7ICsraSkgewo+IC0JCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0g JnBhcmVudC0+ZW50cmllc1tpXTsKPiAtCj4gLQkJaWYgKCFlbnRyeS0+Ym8pCj4gLQkJCWNvbnRp bnVlOwo+IC0KPiAtCQlyID0gdmFsaWRhdGUocGFyYW0sIGVudHJ5LT5ibyk7Cj4gLQkJaWYgKHIp Cj4gLQkJCXJldHVybiByOwo+IC0KPiAtCQlzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsKPiAt CQl0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmZW50cnktPmJvLT50Ym8pOwo+IC0JCWlmIChlbnRy eS0+Ym8tPnNoYWRvdykKPiAtCQkJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoJmVudHJ5LT5iby0+ c2hhZG93LT50Ym8pOwo+IC0JCXNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4gLQo+IC0J CS8qCj4gLQkJICogUmVjdXJzZSBpbnRvIHRoZSBzdWIgZGlyZWN0b3J5LiBUaGlzIGlzIGhhcm1s ZXNzIGJlY2F1c2Ugd2UKPiAtCQkgKiBoYXZlIG9ubHkgYSBtYXhpbXVtIG9mIDUgbGF5ZXJzLgo+ IC0JCSAqLwo+IC0JCXIgPSBhbWRncHVfdm1fdmFsaWRhdGVfbGV2ZWwoZW50cnksIHZhbGlkYXRl LCBwYXJhbSwKPiAtCQkJCQkgICAgIHVzZV9jcHVfZm9yX3VwZGF0ZSwgZ2xvYik7Cj4gLQkJaWYg KHIpCj4gLQkJCXJldHVybiByOwo+IC0JfQo+IC0KPiAtCXJldHVybiByOwo+IC19Cj4gLQo+IC0v KioKPiAgICAqIGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3MgLSB2YWxpZGF0ZSB0aGUgcGFnZSB0 YWJsZSBCT3MKPiAgICAqCj4gICAgKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVyCj4gQEAg LTIxNywzMiArMTYyLDQzIEBAIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSAgICAgIGlu dCAoKnZhbGlkYXRlKSh2b2lkICpwLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyksCj4gICAJCQkgICAg ICB2b2lkICpwYXJhbSkKPiAgIHsKPiAtCXVpbnQ2NF90IG51bV9ldmljdGlvbnM7Cj4gKwlzdHJ1 Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiA9IGFkZXYtPm1tYW4uYmRldi5nbG9iOwo+ICsJaW50IHI7 Cj4gICAKPiAtCS8qIFdlIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgcGFnZSB0YWJsZXMKPiAt CSAqIGlmIHRoZXkgYXJlbid0IGFscmVhZHkgdmFsaWQuCj4gLQkgKi8KPiAtCW51bV9ldmljdGlv bnMgPSBhdG9taWM2NF9yZWFkKCZhZGV2LT5udW1fZXZpY3Rpb25zKTsKPiAtCWlmIChudW1fZXZp Y3Rpb25zID09IHZtLT5sYXN0X2V2aWN0aW9uX2NvdW50ZXIpCj4gLQkJcmV0dXJuIDA7Cj4gKwlz cGluX2xvY2soJnZtLT5zdGF0dXNfbG9jayk7Cj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnZtLT5l dmljdGVkKSkgewo+ICsJCXN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqYm9fYmFzZTsKPiArCQlz dHJ1Y3QgYW1kZ3B1X2JvICpibzsKPiAgIAo+IC0JcmV0dXJuIGFtZGdwdV92bV92YWxpZGF0ZV9s ZXZlbCgmdm0tPnJvb3QsIHZhbGlkYXRlLCBwYXJhbSwKPiAtCQkJCQl2bS0+dXNlX2NwdV9mb3Jf dXBkYXRlLAo+IC0JCQkJCWFkZXYtPm1tYW4uYmRldi5nbG9iKTsKPiAtfQo+ICsJCWJvX2Jhc2Ug PSBsaXN0X2ZpcnN0X2VudHJ5KCZ2bS0+ZXZpY3RlZCwKPiArCQkJCQkgICBzdHJ1Y3QgYW1kZ3B1 X3ZtX2JvX2Jhc2UsCj4gKwkJCQkJICAgdm1fc3RhdHVzKTsKPiArCQlzcGluX3VubG9jaygmdm0t PnN0YXR1c19sb2NrKTsKPiAgIAo+IC0vKioKPiAtICogYW1kZ3B1X3ZtX2NoZWNrIC0gaGVscGVy IGZvciBhbWRncHVfdm1fcmVhZHkKPiAtICovCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2NoZWNr KHZvaWQgKnBhcmFtLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPiAtewo+IC0JLyogaWYgYW55dGhp bmcgaXMgc3dhcHBlZCBvdXQgZG9uJ3Qgc3dhcCBpdCBpbiBoZXJlLAo+IC0JICAganVzdCBhYm9y dCBhbmQgd2FpdCBmb3IgdGhlIG5leHQgQ1MgKi8KPiAtCWlmICghYW1kZ3B1X2JvX2dwdV9hY2Nl c3NpYmxlKGJvKSkKPiAtCQlyZXR1cm4gLUVSRVNUQVJUU1lTOwo+ICsJCWJvID0gYm9fYmFzZS0+ Ym87Cj4gKwkJQlVHX09OKCFibyk7Cj4gKwkJaWYgKGJvLT5wYXJlbnQpIHsKPiArCQkJciA9IHZh bGlkYXRlKHBhcmFtLCBibyk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIHI7Cj4gICAKPiAt CWlmIChiby0+c2hhZG93ICYmICFhbWRncHVfYm9fZ3B1X2FjY2Vzc2libGUoYm8tPnNoYWRvdykp Cj4gLQkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKPiArCQkJc3Bpbl9sb2NrKCZnbG9iLT5scnVfbG9j ayk7Cj4gKwkJCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+dGJvKTsKPiArCQkJaWYgKGJv LT5zaGFkb3cpCj4gKwkJCQl0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmYm8tPnNoYWRvdy0+dGJv KTsKPiArCQkJc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsKPiArCQl9Cj4gKwo+ICsJCWlm ICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKSB7Cj4gKwkJCXIgPSBhbWRncHVfYm9fa21hcChibywg TlVMTCk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIHI7Cj4gKwkJfQo+ICsKPiArCQlzcGlu X2xvY2soJnZtLT5zdGF0dXNfbG9jayk7Cj4gKwkJbGlzdF9kZWxfaW5pdCgmYm9fYmFzZS0+dm1f c3RhdHVzKTsKPiArCX0KPiArCXNwaW5fdW5sb2NrKCZ2bS0+c3RhdHVzX2xvY2spOwo+ICAgCj4g ICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTI1MCwxNyArMjA2LDE5IEBAIHN0YXRpYyBpbnQgYW1k Z3B1X3ZtX2NoZWNrKHZvaWQgKnBhcmFtLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPiAgIC8qKgo+ ICAgICogYW1kZ3B1X3ZtX3JlYWR5IC0gY2hlY2sgVk0gaXMgcmVhZHkgZm9yIHVwZGF0ZXMKPiAg ICAqCj4gLSAqIEBhZGV2OiBhbWRncHUgZGV2aWNlCj4gICAgKiBAdm06IFZNIHRvIGNoZWNrCj4g ICAgKgo+ICAgICogQ2hlY2sgaWYgYWxsIFZNIFBEcy9QVHMgYXJlIHJlYWR5IGZvciB1cGRhdGVz Cj4gICAgKi8KPiAtYm9vbCBhbWRncHVfdm1fcmVhZHkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtKQo+ICtib29sIGFtZGdwdV92bV9yZWFkeShzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSkKPiAgIHsKPiAtCWlmIChhbWRncHVfdm1fY2hlY2soTlVMTCwgdm0tPnJv b3QuYm8pKQo+IC0JCXJldHVybiBmYWxzZTsKPiArCWJvb2wgcmVhZHk7Cj4gKwo+ICsJc3Bpbl9s b2NrKCZ2bS0+c3RhdHVzX2xvY2spOwo+ICsJcmVhZHkgPSBsaXN0X2VtcHR5KCZ2bS0+ZXZpY3Rl ZCk7Cj4gKwlzcGluX3VubG9jaygmdm0tPnN0YXR1c19sb2NrKTsKPiAgIAo+IC0JcmV0dXJuICFh bWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKGFkZXYsIHZtLCBhbWRncHVfdm1fY2hlY2ssIE5VTEwp Owo+ICsJcmV0dXJuIHJlYWR5Owo+ICAgfQo+ICAgCj4gICAvKioKPiBAQCAtMzI1LDExICsyODMs MTEgQEAgc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAo+ICAgCj4gICAJLyogd2FsayBvdmVyIHRoZSBhZGRyZXNzIHNwYWNlIGFuZCBh bGxvY2F0ZSB0aGUgcGFnZSB0YWJsZXMgKi8KPiAgIAlmb3IgKHB0X2lkeCA9IGZyb207IHB0X2lk eCA8PSB0bzsgKytwdF9pZHgpIHsKPiAtCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2 ID0gdm0tPnJvb3QuYm8tPnRiby5yZXN2Owo+ICsJCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qg KnJlc3YgPSB2bS0+cm9vdC5iYXNlLmJvLT50Ym8ucmVzdjsKPiAgIAkJc3RydWN0IGFtZGdwdV92 bV9wdCAqZW50cnkgPSAmcGFyZW50LT5lbnRyaWVzW3B0X2lkeF07Cj4gICAJCXN0cnVjdCBhbWRn cHVfYm8gKnB0Owo+ICAgCj4gLQkJaWYgKCFlbnRyeS0+Ym8pIHsKPiArCQlpZiAoIWVudHJ5LT5i YXNlLmJvKSB7Cj4gICAJCQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LAo+ICAgCQkJCQkgICAg IGFtZGdwdV92bV9ib19zaXplKGFkZXYsIGxldmVsKSwKPiAgIAkJCQkJICAgICBBTURHUFVfR1BV X1BBR0VfU0laRSwgdHJ1ZSwKPiBAQCAtMzUwLDkgKzMwOCwxMiBAQCBzdGF0aWMgaW50IGFtZGdw dV92bV9hbGxvY19sZXZlbHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJCQkvKiBL ZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBhdm9pZAo+ICAgCQkJKiBm cmVlaW5nIHRoZW0gdXAgaW4gdGhlIHdyb25nIG9yZGVyLgo+ICAgCQkJKi8KPiAtCQkJcHQtPnBh cmVudCA9IGFtZGdwdV9ib19yZWYodm0tPnJvb3QuYm8pOwo+ICsJCQlwdC0+cGFyZW50ID0gYW1k Z3B1X2JvX3JlZih2bS0+cm9vdC5iYXNlLmJvKTsKPiAgIAo+IC0JCQllbnRyeS0+Ym8gPSBwdDsK PiArCQkJZW50cnktPmJhc2Uudm0gPSB2bTsKPiArCQkJZW50cnktPmJhc2UuYm8gPSBwdDsKPiAr CQkJbGlzdF9hZGRfdGFpbCgmZW50cnktPmJhc2UuYm9fbGlzdCwgJnB0LT52YSk7Cj4gKwkJCUlO SVRfTElTVF9IRUFEKCZlbnRyeS0+YmFzZS52bV9zdGF0dXMpOwo+ICAgCQkJZW50cnktPmFkZHIg PSAwOwo+ICAgCQl9Cj4gICAKPiBAQCAtMTAxOSw3ICs5ODAsNyBAQCBzdGF0aWMgaW50IGFtZGdw dV92bV93YWl0X3BkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3Zt ICp2bSwKPiAgIAlpbnQgcjsKPiAgIAo+ICAgCWFtZGdwdV9zeW5jX2NyZWF0ZSgmc3luYyk7Cj4g LQlhbWRncHVfc3luY19yZXN2KGFkZXYsICZzeW5jLCB2bS0+cm9vdC5iby0+dGJvLnJlc3YsIG93 bmVyKTsKPiArCWFtZGdwdV9zeW5jX3Jlc3YoYWRldiwgJnN5bmMsIHZtLT5yb290LmJhc2UuYm8t PnRiby5yZXN2LCBvd25lcik7Cj4gICAJciA9IGFtZGdwdV9zeW5jX3dhaXQoJnN5bmMsIHRydWUp Owo+ICAgCWFtZGdwdV9zeW5jX2ZyZWUoJnN5bmMpOwo+ICAgCj4gQEAgLTEwNTgsMTAgKzEwMTks MTAgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAo+ICAgCj4gICAJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsK PiAgIAlwYXJhbXMuYWRldiA9IGFkZXY7Cj4gLQlzaGFkb3cgPSBwYXJlbnQtPmJvLT5zaGFkb3c7 Cj4gKwlzaGFkb3cgPSBwYXJlbnQtPmJhc2UuYm8tPnNoYWRvdzsKPiAgIAo+ICAgCWlmICh2bS0+ dXNlX2NwdV9mb3JfdXBkYXRlKSB7Cj4gLQkJcGRfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFtZGdw dV9ib19rcHRyKHBhcmVudC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSAodW5zaWduZWQgbG9uZylhbWRn cHVfYm9fa3B0cihwYXJlbnQtPmJhc2UuYm8pOwo+ICAgCQlyID0gYW1kZ3B1X3ZtX3dhaXRfcGQo YWRldiwgdm0sIEFNREdQVV9GRU5DRV9PV05FUl9WTSk7Cj4gICAJCWlmICh1bmxpa2VseShyKSkK PiAgIAkJCXJldHVybiByOwo+IEBAIC0xMDc3LDcgKzEwMzgsNyBAQCBzdGF0aWMgaW50IGFtZGdw dV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJCS8qIGFz c3VtZSB0aGUgd29yc3QgY2FzZSAqLwo+ICAgCQluZHcgKz0gcGFyZW50LT5sYXN0X2VudHJ5X3Vz ZWQgKiA2Owo+ICAgCj4gLQkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHBhcmVudC0+ Ym8pOwo+ICsJCXBkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChwYXJlbnQtPmJhc2UuYm8p Owo+ICAgCj4gICAJCWlmIChzaGFkb3cpIHsKPiAgIAkJCXNoYWRvd19hZGRyID0gYW1kZ3B1X2Jv X2dwdV9vZmZzZXQoc2hhZG93KTsKPiBAQCAtMTA5Nyw3ICsxMDU4LDcgQEAgc3RhdGljIGludCBh bWRncHVfdm1fdXBkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCj4g ICAJLyogd2FsayBvdmVyIHRoZSBhZGRyZXNzIHNwYWNlIGFuZCB1cGRhdGUgdGhlIGRpcmVjdG9y eSAqLwo+ICAgCWZvciAocHRfaWR4ID0gMDsgcHRfaWR4IDw9IHBhcmVudC0+bGFzdF9lbnRyeV91 c2VkOyArK3B0X2lkeCkgewo+IC0JCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gcGFyZW50LT5lbnRy aWVzW3B0X2lkeF0uYm87Cj4gKwkJc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBwYXJlbnQtPmVudHJp ZXNbcHRfaWR4XS5iYXNlLmJvOwo+ICAgCQl1aW50NjRfdCBwZGUsIHB0Owo+ICAgCj4gICAJCWlm IChibyA9PSBOVUxMKQo+IEBAIC0xMTQwLDcgKzExMDEsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92 bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJfQo+ICAgCj4g ICAJaWYgKGNvdW50KSB7Cj4gLQkJaWYgKHZtLT5yb290LmJvLT5zaGFkb3cpCj4gKwkJaWYgKHZt LT5yb290LmJhc2UuYm8tPnNoYWRvdykKPiAgIAkJCXBhcmFtcy5mdW5jKCZwYXJhbXMsIGxhc3Rf c2hhZG93LCBsYXN0X3B0LAo+ICAgCQkJCSAgICBjb3VudCwgaW5jciwgQU1ER1BVX1BURV9WQUxJ RCk7Cj4gICAKPiBAQCAtMTE1Myw3ICsxMTE0LDggQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBk YXRlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCQkJYW1kZ3B1X2pvYl9m cmVlKGpvYik7Cj4gICAJCX0gZWxzZSB7Cj4gICAJCQlhbWRncHVfcmluZ19wYWRfaWIocmluZywg cGFyYW1zLmliKTsKPiAtCQkJYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5jLCBwYXJl bnQtPmJvLT50Ym8ucmVzdiwKPiArCQkJYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5j LAo+ICsJCQkJCSBwYXJlbnQtPmJhc2UuYm8tPnRiby5yZXN2LAo+ICAgCQkJCQkgQU1ER1BVX0ZF TkNFX09XTkVSX1ZNKTsKPiAgIAkJCWlmIChzaGFkb3cpCj4gICAJCQkJYW1kZ3B1X3N5bmNfcmVz dihhZGV2LCAmam9iLT5zeW5jLAo+IEBAIC0xMTY2LDcgKzExMjgsNyBAQCBzdGF0aWMgaW50IGFt ZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJCQlp ZiAocikKPiAgIAkJCQlnb3RvIGVycm9yX2ZyZWU7Cj4gICAKPiAtCQkJYW1kZ3B1X2JvX2ZlbmNl KHBhcmVudC0+Ym8sIGZlbmNlLCB0cnVlKTsKPiArCQkJYW1kZ3B1X2JvX2ZlbmNlKHBhcmVudC0+ YmFzZS5ibywgZmVuY2UsIHRydWUpOwo+ICAgCQkJZG1hX2ZlbmNlX3B1dCh2bS0+bGFzdF9kaXJf dXBkYXRlKTsKPiAgIAkJCXZtLT5sYXN0X2Rpcl91cGRhdGUgPSBkbWFfZmVuY2VfZ2V0KGZlbmNl KTsKPiAgIAkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+IEBAIC0xMTc5LDcgKzExNDEsNyBAQCBz dGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCj4gICAJZm9yIChwdF9pZHggPSAwOyBwdF9pZHggPD0gcGFyZW50LT5sYXN0X2VudHJ5X3Vz ZWQ7ICsrcHRfaWR4KSB7Cj4gICAJCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gJnBhcmVu dC0+ZW50cmllc1twdF9pZHhdOwo+ICAgCj4gLQkJaWYgKCFlbnRyeS0+Ym8pCj4gKwkJaWYgKCFl bnRyeS0+YmFzZS5ibykKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gICAJCXIgPSBhbWRncHVfdm1f dXBkYXRlX2xldmVsKGFkZXYsIHZtLCBlbnRyeSwgbGV2ZWwgKyAxKTsKPiBAQCAtMTIxMiw3ICsx MTc0LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2ludmFsaWRhdGVfbGV2ZWwoc3RydWN0IGFt ZGdwdV92bV9wdCAqcGFyZW50KQo+ICAgCWZvciAocHRfaWR4ID0gMDsgcHRfaWR4IDw9IHBhcmVu dC0+bGFzdF9lbnRyeV91c2VkOyArK3B0X2lkeCkgewo+ICAgCQlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0 ICplbnRyeSA9ICZwYXJlbnQtPmVudHJpZXNbcHRfaWR4XTsKPiAgIAo+IC0JCWlmICghZW50cnkt PmJvKQo+ICsJCWlmICghZW50cnktPmJhc2UuYm8pCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAg CQllbnRyeS0+YWRkciA9IH4wVUxMOwo+IEBAIC0xMjY3LDcgKzEyMjksNyBAQCB2b2lkIGFtZGdw dV92bV9nZXRfZW50cnkoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcCwgdWludDY0 X3QgYWRkciwKPiAgIAkqZW50cnkgPSAmcC0+dm0tPnJvb3Q7Cj4gICAJd2hpbGUgKCgqZW50cnkp LT5lbnRyaWVzKSB7Cj4gICAJCWlkeCA9IGFkZHIgPj4gKHAtPmFkZXYtPnZtX21hbmFnZXIuYmxv Y2tfc2l6ZSAqIGxldmVsLS0pOwo+IC0JCWlkeCAlPSBhbWRncHVfYm9fc2l6ZSgoKmVudHJ5KS0+ Ym8pIC8gODsKPiArCQlpZHggJT0gYW1kZ3B1X2JvX3NpemUoKCplbnRyeSktPmJhc2UuYm8pIC8g ODsKPiAgIAkJKnBhcmVudCA9ICplbnRyeTsKPiAgIAkJKmVudHJ5ID0gJigqZW50cnkpLT5lbnRy aWVzW2lkeF07Cj4gICAJfQo+IEBAIC0xMzAzLDcgKzEyNjUsNyBAQCBzdGF0aWMgdm9pZCBhbWRn cHVfdm1faGFuZGxlX2h1Z2VfcGFnZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAq cCwKPiAgIAkgICAgcC0+c3JjIHx8Cj4gICAJICAgICEoZmxhZ3MgJiBBTURHUFVfUFRFX1ZBTElE KSkgewo+ICAgCj4gLQkJZHN0ID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoZW50cnktPmJvKTsKPiAr CQlkc3QgPSBhbWRncHVfYm9fZ3B1X29mZnNldChlbnRyeS0+YmFzZS5ibyk7Cj4gICAJCWRzdCA9 IGFtZGdwdV9nYXJ0X2dldF92bV9wZGUocC0+YWRldiwgZHN0KTsKPiAgIAkJZmxhZ3MgPSBBTURH UFVfUFRFX1ZBTElEOwo+ICAgCX0gZWxzZSB7Cj4gQEAgLTEzMjksMTggKzEyOTEsMTggQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X3ZtX2hhbmRsZV9odWdlX3BhZ2VzKHN0cnVjdCBhbWRncHVfcHRlX3Vw ZGF0ZV9wYXJhbXMgKnAsCj4gICAJCXRtcCA9IHAtPnBhZ2VzX2FkZHI7Cj4gICAJCXAtPnBhZ2Vz X2FkZHIgPSBOVUxMOwo+ICAgCj4gLQkJcGRfYWRkciA9ICh1bnNpZ25lZCBsb25nKWFtZGdwdV9i b19rcHRyKHBhcmVudC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSAodW5zaWduZWQgbG9uZylhbWRncHVf Ym9fa3B0cihwYXJlbnQtPmJhc2UuYm8pOwo+ICAgCQlwZGUgPSBwZF9hZGRyICsgKGVudHJ5IC0g cGFyZW50LT5lbnRyaWVzKSAqIDg7Cj4gICAJCWFtZGdwdV92bV9jcHVfc2V0X3B0ZXMocCwgcGRl LCBkc3QsIDEsIDAsIGZsYWdzKTsKPiAgIAo+ICAgCQlwLT5wYWdlc19hZGRyID0gdG1wOwo+ICAg CX0gZWxzZSB7Cj4gLQkJaWYgKHBhcmVudC0+Ym8tPnNoYWRvdykgewo+IC0JCQlwZF9hZGRyID0g YW1kZ3B1X2JvX2dwdV9vZmZzZXQocGFyZW50LT5iby0+c2hhZG93KTsKPiArCQlpZiAocGFyZW50 LT5iYXNlLmJvLT5zaGFkb3cpIHsKPiArCQkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0 KHBhcmVudC0+YmFzZS5iby0+c2hhZG93KTsKPiAgIAkJCXBkZSA9IHBkX2FkZHIgKyAoZW50cnkg LSBwYXJlbnQtPmVudHJpZXMpICogODsKPiAgIAkJCWFtZGdwdV92bV9kb19zZXRfcHRlcyhwLCBw ZGUsIGRzdCwgMSwgMCwgZmxhZ3MpOwo+ICAgCQl9Cj4gLQkJcGRfYWRkciA9IGFtZGdwdV9ib19n cHVfb2Zmc2V0KHBhcmVudC0+Ym8pOwo+ICsJCXBkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNl dChwYXJlbnQtPmJhc2UuYm8pOwo+ICAgCQlwZGUgPSBwZF9hZGRyICsgKGVudHJ5IC0gcGFyZW50 LT5lbnRyaWVzKSAqIDg7Cj4gICAJCWFtZGdwdV92bV9kb19zZXRfcHRlcyhwLCBwZGUsIGRzdCwg MSwgMCwgZmxhZ3MpOwo+ICAgCX0KPiBAQCAtMTM5MSw3ICsxMzUzLDcgQEAgc3RhdGljIGludCBh bWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcGFy YW1zLAo+ICAgCQlpZiAoZW50cnktPmFkZHIgJiBBTURHUFVfUERFX1BURSkKPiAgIAkJCWNvbnRp bnVlOwo+ICAgCj4gLQkJcHQgPSBlbnRyeS0+Ym87Cj4gKwkJcHQgPSBlbnRyeS0+YmFzZS5ibzsK PiAgIAkJaWYgKHVzZV9jcHVfdXBkYXRlKSB7Cj4gICAJCQlwZV9zdGFydCA9ICh1bnNpZ25lZCBs b25nKWFtZGdwdV9ib19rcHRyKHB0KTsKPiAgIAkJfSBlbHNlIHsKPiBAQCAtMTYxMSwxMiArMTU3 MywxMiBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191cGRhdGVfbWFwcGluZyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKPiAgIAlpZiAocikKPiAgIAkJZ290byBlcnJvcl9mcmVlOwo+ICAg Cj4gLQlyID0gYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5jLCB2bS0+cm9vdC5iby0+ dGJvLnJlc3YsCj4gKwlyID0gYW1kZ3B1X3N5bmNfcmVzdihhZGV2LCAmam9iLT5zeW5jLCB2bS0+ cm9vdC5iYXNlLmJvLT50Ym8ucmVzdiwKPiAgIAkJCSAgICAgb3duZXIpOwo+ICAgCWlmIChyKQo+ ICAgCQlnb3RvIGVycm9yX2ZyZWU7Cj4gICAKPiAtCXIgPSByZXNlcnZhdGlvbl9vYmplY3RfcmVz ZXJ2ZV9zaGFyZWQodm0tPnJvb3QuYm8tPnRiby5yZXN2KTsKPiArCXIgPSByZXNlcnZhdGlvbl9v YmplY3RfcmVzZXJ2ZV9zaGFyZWQodm0tPnJvb3QuYmFzZS5iby0+dGJvLnJlc3YpOwo+ICAgCWlm IChyKQo+ICAgCQlnb3RvIGVycm9yX2ZyZWU7Cj4gICAKPiBAQCAtMTYzMSw3ICsxNTkzLDcgQEAg c3RhdGljIGludCBhbWRncHVfdm1fYm9fdXBkYXRlX21hcHBpbmcoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCj4gICAJaWYgKHIpCj4gICAJCWdvdG8gZXJyb3JfZnJlZTsKPiAgIAo+IC0JYW1k Z3B1X2JvX2ZlbmNlKHZtLT5yb290LmJvLCBmLCB0cnVlKTsKPiArCWFtZGdwdV9ib19mZW5jZSh2 bS0+cm9vdC5iYXNlLmJvLCBmLCB0cnVlKTsKPiAgIAlkbWFfZmVuY2VfcHV0KCpmZW5jZSk7Cj4g ICAJKmZlbmNlID0gZjsKPiAgIAlyZXR1cm4gMDsKPiBAQCAtMTkyNiw3ICsxODg4LDcgQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X3ZtX2ZyZWVfbWFwcGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKPiAgICAqLwo+ICAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX3BydF9maW5pKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKPiAgIHsKPiAtCXN0cnVjdCBy ZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSB2bS0+cm9vdC5iby0+dGJvLnJlc3Y7Cj4gKwlzdHJ1 Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gdm0tPnJvb3QuYmFzZS5iby0+dGJvLnJlc3Y7 Cj4gICAJc3RydWN0IGRtYV9mZW5jZSAqZXhjbCwgKipzaGFyZWQ7Cj4gICAJdW5zaWduZWQgaSwg c2hhcmVkX2NvdW50Owo+ICAgCWludCByOwo+IEBAIC0yNDEzLDEyICsyMzc1LDI1IEBAIHZvaWQg YW1kZ3B1X3ZtX2JvX3JtdihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgICAqIE1hcmsg QGJvIGFzIGludmFsaWQuCj4gICAgKi8KPiAgIHZvaWQgYW1kZ3B1X3ZtX2JvX2ludmFsaWRhdGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gLQkJCSAgICAgc3RydWN0IGFtZGdwdV9ibyAq Ym8pCj4gKwkJCSAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8sIGJvb2wgZXZpY3RlZCkKPiAgIHsK PiAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKmJvX2Jhc2U7Cj4gICAKPiAgIAlsaXN0X2Zv cl9lYWNoX2VudHJ5KGJvX2Jhc2UsICZiby0+dmEsIGJvX2xpc3QpIHsKPiArCQlzdHJ1Y3QgYW1k Z3B1X3ZtICp2bSA9IGJvX2Jhc2UtPnZtOwo+ICsKPiAgIAkJYm9fYmFzZS0+bW92ZWQgPSB0cnVl Owo+ICsJCWlmIChldmljdGVkICYmIGJvLT50Ym8ucmVzdiA9PSB2bS0+cm9vdC5iYXNlLmJvLT50 Ym8ucmVzdikgewo+ICsJCQlzcGluX2xvY2soJmJvX2Jhc2UtPnZtLT5zdGF0dXNfbG9jayk7Cj4g KwkJCWxpc3RfbW92ZSgmYm9fYmFzZS0+dm1fc3RhdHVzLCAmdm0tPmV2aWN0ZWQpOwo+ICsJCQlz cGluX3VubG9jaygmYm9fYmFzZS0+dm0tPnN0YXR1c19sb2NrKTsKPiArCQkJY29udGludWU7Cj4g KwkJfQo+ICsKPiArCQkvKiBEb24ndCBhZGQgcGFnZSB0YWJsZXMgdG8gdGhlIG1vdmVkIHN0YXRl ICovCj4gKwkJaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4gKwkJCWNv bnRpbnVlOwo+ICsKPiAgIAkJc3Bpbl9sb2NrKCZib19iYXNlLT52bS0+c3RhdHVzX2xvY2spOwo+ ICAgCQlsaXN0X21vdmUoJmJvX2Jhc2UtPnZtX3N0YXR1cywgJmJvX2Jhc2UtPnZtLT5tb3ZlZCk7 Cj4gICAJCXNwaW5fdW5sb2NrKCZib19iYXNlLT52bS0+c3RhdHVzX2xvY2spOwo+IEBAIC0yNTA2 LDYgKzI0ODEsNyBAQCBpbnQgYW1kZ3B1X3ZtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ICAgCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFY X1ZNSFVCUzsgaSsrKQo+ICAgCQl2bS0+cmVzZXJ2ZWRfdm1pZFtpXSA9IE5VTEw7Cj4gICAJc3Bp bl9sb2NrX2luaXQoJnZtLT5zdGF0dXNfbG9jayk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmdm0tPmV2 aWN0ZWQpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZ2bS0+bW92ZWQpOwo+ICAgCUlOSVRfTElTVF9I RUFEKCZ2bS0+ZnJlZWQpOwo+ICAgCj4gQEAgLTI1NTAsMzAgKzI1MjYsMzEgQEAgaW50IGFtZGdw dV92bV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2 bSwKPiAgIAlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCBhbWRncHVfdm1fYm9fc2l6ZShhZGV2 LCAwKSwgYWxpZ24sIHRydWUsCj4gICAJCQkgICAgIEFNREdQVV9HRU1fRE9NQUlOX1ZSQU0sCj4g ICAJCQkgICAgIGZsYWdzLAo+IC0JCQkgICAgIE5VTEwsIE5VTEwsIGluaXRfcGRlX3ZhbHVlLCAm dm0tPnJvb3QuYm8pOwo+ICsJCQkgICAgIE5VTEwsIE5VTEwsIGluaXRfcGRlX3ZhbHVlLCAmdm0t PnJvb3QuYmFzZS5ibyk7Cj4gICAJaWYgKHIpCj4gICAJCWdvdG8gZXJyb3JfZnJlZV9zY2hlZF9l bnRpdHk7Cj4gICAKPiAtCXIgPSBhbWRncHVfYm9fcmVzZXJ2ZSh2bS0+cm9vdC5ibywgZmFsc2Up Owo+IC0JaWYgKHIpCj4gLQkJZ290byBlcnJvcl9mcmVlX3Jvb3Q7Cj4gLQo+IC0Jdm0tPmxhc3Rf ZXZpY3Rpb25fY291bnRlciA9IGF0b21pYzY0X3JlYWQoJmFkZXYtPm51bV9ldmljdGlvbnMpOwo+ ICsJdm0tPnJvb3QuYmFzZS52bSA9IHZtOwo+ICsJbGlzdF9hZGRfdGFpbCgmdm0tPnJvb3QuYmFz ZS5ib19saXN0LCAmdm0tPnJvb3QuYmFzZS5iby0+dmEpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnZt LT5yb290LmJhc2Uudm1fc3RhdHVzKTsKPiAgIAo+ICAgCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBk YXRlKSB7Cj4gLQkJciA9IGFtZGdwdV9ib19rbWFwKHZtLT5yb290LmJvLCBOVUxMKTsKPiArCQly ID0gYW1kZ3B1X2JvX3Jlc2VydmUodm0tPnJvb3QuYmFzZS5ibywgZmFsc2UpOwo+ICAgCQlpZiAo cikKPiAgIAkJCWdvdG8gZXJyb3JfZnJlZV9yb290Owo+IC0JfQo+ICAgCj4gLQlhbWRncHVfYm9f dW5yZXNlcnZlKHZtLT5yb290LmJvKTsKPiArCQlyID0gYW1kZ3B1X2JvX2ttYXAodm0tPnJvb3Qu YmFzZS5ibywgTlVMTCk7Cj4gKwkJaWYgKHIpCj4gKwkJCWdvdG8gZXJyb3JfZnJlZV9yb290Owo+ ICsJCWFtZGdwdV9ib191bnJlc2VydmUodm0tPnJvb3QuYmFzZS5ibyk7Cj4gKwl9Cj4gICAKPiAg IAlyZXR1cm4gMDsKPiAgIAo+ICAgZXJyb3JfZnJlZV9yb290Ogo+IC0JYW1kZ3B1X2JvX3VucmVm KCZ2bS0+cm9vdC5iby0+c2hhZG93KTsKPiAtCWFtZGdwdV9ib191bnJlZigmdm0tPnJvb3QuYm8p Owo+IC0Jdm0tPnJvb3QuYm8gPSBOVUxMOwo+ICsJYW1kZ3B1X2JvX3VucmVmKCZ2bS0+cm9vdC5i YXNlLmJvLT5zaGFkb3cpOwo+ICsJYW1kZ3B1X2JvX3VucmVmKCZ2bS0+cm9vdC5iYXNlLmJvKTsK PiArCXZtLT5yb290LmJhc2UuYm8gPSBOVUxMOwo+ICAgCj4gICBlcnJvcl9mcmVlX3NjaGVkX2Vu dGl0eToKPiAgIAlhbWRfc2NoZWRfZW50aXR5X2ZpbmkoJnJpbmctPnNjaGVkLCAmdm0tPmVudGl0 eSk7Cj4gQEAgLTI1OTIsOSArMjU2OSwxMSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1fZnJlZV9s ZXZlbHMoc3RydWN0IGFtZGdwdV92bV9wdCAqbGV2ZWwpCj4gICB7Cj4gICAJdW5zaWduZWQgaTsK PiAgIAo+IC0JaWYgKGxldmVsLT5ibykgewo+IC0JCWFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJv LT5zaGFkb3cpOwo+IC0JCWFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJvKTsKPiArCWlmIChsZXZl bC0+YmFzZS5ibykgewo+ICsJCWxpc3RfZGVsKCZsZXZlbC0+YmFzZS5ib19saXN0KTsKPiArCQls aXN0X2RlbCgmbGV2ZWwtPmJhc2Uudm1fc3RhdHVzKTsKPiArCQlhbWRncHVfYm9fdW5yZWYoJmxl dmVsLT5iYXNlLmJvLT5zaGFkb3cpOwo+ICsJCWFtZGdwdV9ib191bnJlZigmbGV2ZWwtPmJhc2Uu Ym8pOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChsZXZlbC0+ZW50cmllcykKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+IGluZGV4IGZmMDkzZDQuLjRlNDY1ZTggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+IEBAIC0xMTEsMTIgKzExMSwxMiBA QCBzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2Ugewo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGFtZGdw dV92bV9wdCB7Cj4gLQlzdHJ1Y3QgYW1kZ3B1X2JvCSpibzsKPiAtCXVpbnQ2NF90CQlhZGRyOwo+ ICsJc3RydWN0IGFtZGdwdV92bV9ib19iYXNlCWJhc2U7Cj4gKwl1aW50NjRfdAkJCWFkZHI7Cj4g ICAKPiAgIAkvKiBhcnJheSBvZiBwYWdlIHRhYmxlcywgb25lIGZvciBlYWNoIGRpcmVjdG9yeSBl bnRyeSAqLwo+IC0Jc3RydWN0IGFtZGdwdV92bV9wdAkqZW50cmllczsKPiAtCXVuc2lnbmVkCQls YXN0X2VudHJ5X3VzZWQ7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0CQkqZW50cmllczsKPiArCXVu c2lnbmVkCQkJbGFzdF9lbnRyeV91c2VkOwo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGFtZGdwdV92 bSB7Cj4gQEAgLTEyNiw2ICsxMjYsOSBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtIHsKPiAgIAkvKiBwcm90 ZWN0aW5nIGludmFsaWRhdGVkICovCj4gICAJc3BpbmxvY2tfdAkJc3RhdHVzX2xvY2s7Cj4gICAK PiArCS8qIEJPcyB3aG8gbmVlZHMgYSB2YWxpZGF0aW9uICovCj4gKwlzdHJ1Y3QgbGlzdF9oZWFk CWV2aWN0ZWQ7Cj4gKwo+ICAgCS8qIEJPcyBtb3ZlZCwgYnV0IG5vdCB5ZXQgdXBkYXRlZCBpbiB0 aGUgUFQgKi8KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkCW1vdmVkOwo+ICAgCj4gQEAgLTEzNSw3ICsx MzgsNiBAQCBzdHJ1Y3QgYW1kZ3B1X3ZtIHsKPiAgIAkvKiBjb250YWlucyB0aGUgcGFnZSBkaXJl Y3RvcnkgKi8KPiAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0ICAgICByb290Owo+ICAgCXN0cnVjdCBk bWFfZmVuY2UJKmxhc3RfZGlyX3VwZGF0ZTsKPiAtCXVpbnQ2NF90CQlsYXN0X2V2aWN0aW9uX2Nv dW50ZXI7Cj4gICAKPiAgIAkvKiBwcm90ZWN0aW5nIGZyZWVkICovCj4gICAJc3BpbmxvY2tfdAkJ ZnJlZWRfbG9jazsKPiBAQCAtMjI1LDcgKzIyNyw3IEBAIHZvaWQgYW1kZ3B1X3ZtX2Zpbmkoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtKTsKPiAgIHZvaWQg YW1kZ3B1X3ZtX2dldF9wZF9ibyhzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSBzdHJ1Y3Qg bGlzdF9oZWFkICp2YWxpZGF0ZWQsCj4gICAJCQkgc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5 ICplbnRyeSk7Cj4gLWJvb2wgYW1kZ3B1X3ZtX3JlYWR5KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Cj4gK2Jvb2wgYW1kZ3B1X3ZtX3JlYWR5KHN0cnVj dCBhbWRncHVfdm0gKnZtKTsKPiAgIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAkJCSAgICAg IGludCAoKmNhbGxiYWNrKSh2b2lkICpwLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyksCj4gICAJCQkg ICAgICB2b2lkICpwYXJhbSk7Cj4gQEAgLTI1MCw3ICsyNTIsNyBAQCBpbnQgYW1kZ3B1X3ZtX2Jv X3VwZGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCXN0cnVjdCBhbWRncHVf Ym9fdmEgKmJvX3ZhLAo+ICAgCQkJYm9vbCBjbGVhcik7Cj4gICB2b2lkIGFtZGdwdV92bV9ib19p bnZhbGlkYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+IC0JCQkgICAgIHN0cnVjdCBh bWRncHVfYm8gKmJvKTsKPiArCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpibywgYm9vbCBldmlj dGVkKTsKPiAgIHN0cnVjdCBhbWRncHVfYm9fdmEgKmFtZGdwdV92bV9ib19maW5kKHN0cnVjdCBh bWRncHVfdm0gKnZtLAo+ICAgCQkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7Cj4gICBz dHJ1Y3QgYW1kZ3B1X2JvX3ZhICphbWRncHVfdm1fYm9fYWRkKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K YW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==