From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH v4 4/5] drm/amdgpu: use bulk moves for efficient VM LRU handling (v4) Date: Mon, 20 Aug 2018 14:05:07 +0800 Message-ID: <20180820060505.GA9468@hr-amur2> References: <1534500481-15123-1-git-send-email-ray.huang@amd.com> <1534500481-15123-5-git-send-email-ray.huang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Koenig, Christian" Cc: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBdWcgMTcsIDIwMTggYXQgMDY6Mzg6MTZQTSArMDgwMCwgS29lbmlnLCBDaHJpc3Rp YW4gd3JvdGU6Cj4gQW0gMTcuMDguMjAxOCB1bSAxMjowOCBzY2hyaWViIEh1YW5nIFJ1aToKPiA+ IEkgY29udGludWUgdG8gd29yayBmb3IgYnVsayBtb3ZpbmcgdGhhdCBiYXNlZCBvbiB0aGUgcHJv cG9zYWwgYnkgQ2hyaXN0aWFuLgo+ID4KPiA+IEJhY2tncm91bmQ6Cj4gPiBhbWRncHUgZHJpdmVy IHdpbGwgbW92ZSBhbGwgUEQvUFQgYW5kIFBlclZNIEJPcyBpbnRvIGlkbGUgbGlzdC4gVGhlbiBt b3ZlIGFsbCBvZgo+ID4gdGhlbSBvbiB0aGUgZW5kIG9mIExSVSBsaXN0IG9uZSBieSBvbmUuIFRo dXMsIHRoYXQgY2F1c2Ugc28gbWFueSBCT3MgbW92ZWQgdG8KPiA+IHRoZSBlbmQgb2YgdGhlIExS VSwgYW5kIGltcGFjdCBwZXJmb3JtYW5jZSBzZXJpb3VzbHkuCj4gPgo+ID4gVGhlbiBDaHJpc3Rp YW4gcHJvdmlkZWQgYSB3b3JrYXJvdW5kIHRvIG5vdCBtb3ZlIFBEL1BUIEJPcyBvbiBMUlUgd2l0 aCBiZWxvdwo+ID4gcGF0Y2g6Cj4gPiAiZHJtL2FtZGdwdTogYmFuZCBhaWQgdmFsaWRhdGluZyBW TSBQVHMiCj4gPiBDb21taXQgMGJiZjMyMDI2Y2Y1YmE0MWU5OTIyYjMwZTI2ZTFiZWQxZWNkMzhh ZQo+ID4KPiA+IEhvd2V2ZXIsIHRoZSBmaW5hbCBzb2x1dGlvbiBzaG91bGQgYnVsayBtb3ZlIGFs bCBQRC9QVCBhbmQgUGVyVk0gQk9zIG9uIHRoZSBMUlUKPiA+IGluc3RlYWQgb2Ygb25lIGJ5IG9u ZS4KPiA+Cj4gPiBXaGVuZXZlciBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKCkgaXMgY2FsbGVk IGFuZCB3ZSBoYXZlIEJPcyB3aGljaCBuZWVkIHRvIGJlCj4gPiB2YWxpZGF0ZWQgd2UgbW92ZSBh bGwgQk9zIHRvZ2V0aGVyIHRvIHRoZSBlbmQgb2YgdGhlIExSVSB3aXRob3V0IGRyb3BwaW5nIHRo ZQo+ID4gbG9jayBmb3IgdGhlIExSVS4KPiA+Cj4gPiBXaGlsZSBkb2luZyBzbyB3ZSBub3RlIHRo ZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGlzIGJsb2NrIGluIHRoZSBMUlUgbGlzdC4KPiA+Cj4g PiBOb3cgd2hlbiBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKCkgaXMgY2FsbGVkIGFuZCB3ZSBk b24ndCBoYXZlIGFueXRoaW5nIHRvIGRvLAo+ID4gd2UgZG9uJ3QgbW92ZSBldmVyeSBCTyBvbmUg Ynkgb25lLCBidXQgaW5zdGVhZCBjdXQgdGhlIExSVSBsaXN0IGludG8gcGllY2VzIHNvCj4gPiB0 aGF0IHdlIGJ1bGsgbW92ZSBldmVyeXRoaW5nIHRvIHRoZSBlbmQgaW4ganVzdCBvbmUgb3BlcmF0 aW9uLgo+ID4KPiA+IFRlc3QgZGF0YToKPiA+ICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r Cj4gPiB8ICAgICAgICAgICAgICB8VGhlIFRhbG9zICAgICAgICB8Q2xwZWFrKE9DTCl8QnVzU3Bl ZWRSZWFkYmFjayhPQ0wpICAgICAgICAgICAgICAgICAgfAo+ID4gfCAgICAgICAgICAgICAgfFBy aW5jaXBsZShWdWxrYW4pfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gPiB8ICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8MC4zMTkgbXMoMWspIDAuMzE0 IG1zKDJLKSAwLjMwOCBtcyg0SykgfAo+ID4gfCBPcmlnaW5hbCAgICAgfCAgMTQ3LjcgRlBTICAg ICAgfCAgNzYuODYgdXMgfDAuMzA3IG1zKDhLKSAwLjMxMCBtcygxNkspICAgICAgICAgICAgIHwK PiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gPiB8IE9yaWduaWFsICsgV0F8ICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICB8MC4yNTQgbXMoMUspIDAuMjQxIG1zKDJLKSAgICAg ICAgICAgICAgfAo+ID4gfChkb24ndCBtb3ZlICAgfCAgMTYyLjEgRlBTICAgICAgfCAgNDIuMTUg dXMgfDAuMjMwIG1zKDRLKSAwLjIyMyBtcyg4SykgMC4yMDQgbXMoMTZLKXwKPiA+IHxQVCBCT3Mg b24gTFJVKXwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Cj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ ID4gfCBCdWxrIG1vdmUgICAgfCAgMTYzLjEgRlBTICAgICAgfCAgNDAuNTIgdXMgfDAuMjQ0IG1z KDFLKSAwLjI1MiBtcygySykgMC4yMTMgbXMoNEspIHwKPiA+IHwgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgIHwwLjIxNCBtcyg4SykgMC4yMjUgbXMoMTZLKSAgICAg ICAgICAgICB8Cj4gPiArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4KPiA+IEFmdGVy IHRlc3QgdGhlbSB3aXRoIGFib3ZlIHRocmVlIGJlbmNobWFya3MgaW5jbHVkZSB2dWxrYW4gYW5k IG9wZW5jbC4gV2UgY2FuCj4gPiBzZWUgdGhlIHZpc2libGUgaW1wcm92ZW1lbnQgdGhhbiBvcmln aW5hbCwgYW5kIGV2ZW4gYmV0dGVyIHRoYW4gb3JpZ2luYWwgd2l0aAo+ID4gd29ya2Fyb3VuZC4K PiA+Cj4gPiB2MjogbW92ZSBhbGwgQk9zIGluY2x1ZGUgaWRsZSwgcmVsb2NhdGVkLCBhbmQgbW92 ZWQgbGlzdCB0byB0aGUgZW5kIG9mIExSVSBhbmQKPiA+IHB1dCB0aGVtIHRvZ2V0aGVyLgo+ID4g djM6IHJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIGFuZCB1c2UgbGlzdF9mb3JfZWFjaF9lbnRyeSBp bnN0ZWFkIG9mIHRoZSBvbmUgd2l0aAo+ID4gc2F2ZSBlbnRyeS4KPiA+IHY0OiBtb3ZlIHRoZSBh bWRncHVfdm1fbW92ZV90b19scnVfdGFpbCBhZnRlciBjb21tYW5kIHN1Ym1pc3Npb24sIGF0IHRo YXQgdGltZSwKPiA+IGFsbCBibyB3aWxsIGJlIGJhY2sgb24gaWRsZSBsaXN0Lgo+ID4KPiA+IFNp Z25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K PiA+IFNpZ25lZC1vZmYtYnk6IEh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFtZC5jb20+Cj4gPiBUZXN0 ZWQtYnk6IE1pa2UgTG90aGlhbiA8bWlrZUBmaXJlYnVybi5jby51az4KPiA+IFRlc3RlZC1ieTog RGlldGVyIE7DvHR6ZWwgPERpZXRlckBudWV0emVsLWhoLmRlPgo+ID4gQWNrZWQtYnk6IENodW5t aW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+Cj4gPiAtLS0KPiA+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgfCAxMSArKysrKysKPiA+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgfCA3MSArKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oIHwg MTEgKysrKystCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgMTggZGVs ZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiA+ IGluZGV4IDUwMmI5NGYuLjlmYmRmMDIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2NzLmMKPiA+IEBAIC0xMjYwLDYgKzEyNjAsMTYgQEAgc3RhdGljIGludCBhbWRn cHVfY3Nfc3VibWl0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+ID4gICAJcmV0dXJuIDA7 Cj4gPiAgIH0KPiA+ICAgCj4gPiArc3RhdGljIHZvaWQgYW1kZ3B1X2NzX3ZtX21vdmVfb25fbHJ1 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ID4gKwkJCQkgICAgIHN0cnVjdCBhbWRncHVf Y3NfcGFyc2VyICpwKQo+ID4gK3sKPiA+ICsJc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBw LT5maWxwLT5kcml2ZXJfcHJpdjsKPiA+ICsJc3RydWN0IGFtZGdwdV92bSAqdm0gPSAmZnByaXYt PnZtOwo+ID4gKwo+ID4gKwlpZiAodm0tPnZhbGlkYXRlZCkKPiAKPiBUaGF0IGNoZWNrIGJlbG9u Z3MgaW5zaWRlIGFtZGdwdV92bV9tb3ZlX3RvX2xydV90YWlsKCkuCj4gCj4gPiArCQlhbWRncHVf dm1fbW92ZV90b19scnVfdGFpbChhZGV2LCB2bSk7Cj4gPiArfQo+ID4gKwo+ID4gICBpbnQgYW1k Z3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBk cm1fZmlsZSAqZmlscCkKPiA+ICAgewo+ID4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ID4gQEAgLTEzMTAsNiArMTMyMCw3IEBAIGludCBhbWRncHVf Y3NfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9m aWxlICpmaWxwKQo+ID4gICAKPiA+ICAgCXIgPSBhbWRncHVfY3Nfc3VibWl0KCZwYXJzZXIsIGNz KTsKPiA+ICAgCj4gPiArCWFtZGdwdV9jc192bV9tb3ZlX29uX2xydShhZGV2LCAmcGFyc2VyKTsK PiA+ICAgb3V0Ogo+ID4gICAJYW1kZ3B1X2NzX3BhcnNlcl9maW5pKCZwYXJzZXIsIHIsIHJlc2Vy dmVkX2J1ZmZlcnMpOwo+ID4gICAJcmV0dXJuIHI7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdm0uYwo+ID4gaW5kZXggOWM4NDc3MC4uMDM3Y2ZiYyAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+ID4gQEAgLTI2OCw2ICsyNjgsNTMgQEAg dm9pZCBhbWRncHVfdm1fZ2V0X3BkX2JvKHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ID4gICB9Cj4g PiAgIAo+ID4gICAvKioKPiA+ICsgKiBhbWRncHVfdm1fbW92ZV90b19scnVfdGFpbF9ieV9saXN0 IC0gbW92ZSBvbmUgbGlzdCBvZiBCT3MgdG8gZW5kIG9mIExSVQo+ID4gKyAqCj4gPiArICogQHZt OiB2bSBwcm92aWRpbmcgdGhlIEJPcwo+ID4gKyAqIEBsaXN0OiB0aGUgbGlzdCB0aGF0IHN0b3Jl ZCBCT3MKPiA+ICsgKgo+ID4gKyAqIE1vdmUgb25lIGxpc3Qgb2YgQk9zIHRvIHRoZSBlbmQgb2Yg TFJVIGFuZCB1cGRhdGUgdGhlIHBvc2l0aW9ucy4KPiA+ICsgKi8KPiA+ICtzdGF0aWMgdm9pZAo+ ID4gK2FtZGdwdV92bV9tb3ZlX3RvX2xydV90YWlsX2J5X2xpc3Qoc3RydWN0IGFtZGdwdV92bSAq dm0sIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCj4gCj4gSSBkb24ndCBzZWUgbXVjaCBvZiBhIHBv aW50IGhhdmluZyBhIHNlcGFyYXRlIGZ1bmN0aW9uIGZvciB0aGlzIGFueSBtb3JlLgo+IAo+ID4g K3sKPiA+ICsJc3RydWN0IGFtZGdwdV92bV9ib19iYXNlICpib19iYXNlOwo+ID4gKwo+ID4gKwls aXN0X2Zvcl9lYWNoX2VudHJ5KGJvX2Jhc2UsIGxpc3QsIHZtX3N0YXR1cykgewo+ID4gKwkJc3Ry dWN0IGFtZGdwdV9ibyAqYm8gPSBib19iYXNlLT5ibzsKPiA+ICsKPiA+ICsJCWlmICghYm8tPnBh cmVudCkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJCXR0bV9ib19tb3ZlX3RvX2xydV90 YWlsKCZiby0+dGJvLCAmdm0tPmxydV9idWxrX21vdmUpOwo+ID4gKwkJaWYgKGJvLT5zaGFkb3cp Cj4gPiArCQkJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoJmJvLT5zaGFkb3ctPnRibywKPiA+ICsJ CQkJCQkmdm0tPmxydV9idWxrX21vdmUpOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ ID4gKyAqIGFtZGdwdV92bV9tb3ZlX3RvX2xydV90YWlsIC0gbW92ZSBhbGwgQk9zIHRvIHRoZSBl bmQgb2YgTFJVCj4gPiArICoKPiA+ICsgKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVyCj4g PiArICogQHZtOiB2bSBwcm92aWRpbmcgdGhlIEJPcwo+ID4gKyAqCj4gPiArICogTW92ZSBhbGwg Qk9zIHRvIHRoZSBlbmQgb2YgTFJVIGFuZCByZW1lbWJlciB0aGVpciBwb3NpdGlvbnMgdG8gcHV0 IHRoZW0KPiA+ICsgKiB0b2dldGhlci4KPiA+ICsgKi8KPiA+ICt2b2lkIGFtZGdwdV92bV9tb3Zl X3RvX2xydV90YWlsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ID4gKwkJCQlzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSkKPiA+ICt7Cj4gPiArCXN0cnVjdCB0dG1fYm9fZ2xvYmFsICpnbG9iID0g YWRldi0+bW1hbi5iZGV2Lmdsb2I7Cj4gPiArCj4gPiArCW1lbXNldCgmdm0tPmxydV9idWxrX21v dmUsIDAsIHNpemVvZih2bS0+bHJ1X2J1bGtfbW92ZSkpOwo+ID4gKwo+ID4gKwlzcGluX2xvY2so Jmdsb2ItPmxydV9sb2NrKTsKPiA+ICsJYW1kZ3B1X3ZtX21vdmVfdG9fbHJ1X3RhaWxfYnlfbGlz dCh2bSwgJnZtLT5pZGxlKTsKPiA+ICsJc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsKPiA+ ICt9Cj4gPiArCj4gPiArLyoqCj4gPiAgICAqIGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3MgLSB2 YWxpZGF0ZSB0aGUgcGFnZSB0YWJsZSBCT3MKPiA+ICAgICoKPiA+ICAgICogQGFkZXY6IGFtZGdw dSBkZXZpY2UgcG9pbnRlcgo+ID4gQEAgLTI4OCw2ICszMzUsNyBAQCBpbnQgYW1kZ3B1X3ZtX3Zh bGlkYXRlX3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92 bSAqdm0sCj4gPiAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKmJvX2Jhc2UsICp0bXA7Cj4g PiAgIAlpbnQgciA9IDA7Cj4gPiAgIAo+ID4gKwl2bS0+dmFsaWRhdGVkID0gZmFsc2U7Cj4gCj4g VGhhdCB3b24ndCB3b3JrIGxpa2UgdGhpcy4gSXQgaXMgcGVyZmVjdGx5IHBvc3NpYmxlIHRoYXQg Q1MgaXMgYWJvcnRlZCAKPiBiZWNhdXNlIG9mIGEgc2lnbmFsIGFuZCBhbWRncHVfdm1fbW92ZV90 b19scnVfdGFpbCgpIG5ldmVyIGNhbGxlZC4KPiAKPiBJIHN1Z2dlc3QgdG8gZG8gInZtLT52YWxp ZGF0ZWQgfD0gIWxpc3RfZW1wdHkoJnZtLT5ldmljdGVkKTsiIGhlcmUgYW5kIAo+IHRoZW4gc2V0 IGl0IHRvIGZhbHNlIGFnYWluIGluIGFtZGdwdV92bV9tb3ZlX3RvX2xydV90YWlsKCkuCj4gCj4g QW5kIG1heWJlIHdlIG5lZWQgYSBiZXR0ZXIgbmFtZSB0aGFuICJ2YWxpZGF0ZWQiLCBtYXliZSAi YnVsa19tb3ZlYWJsZSIgCj4gb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4KPiAKCkFjdHVhbGx5LCAi dmFsaWRhdGVkIiBpcyBvcHBvc2l0ZSB0byAiYnVsa19tb3ZlYWJsZSIuClNvIGhvdyBhYm91dCB1 c2UgInZtLT5idWxrX21vdmVhYmxlID0gbGlzdF9lbXB0eSgmdm0tPmV2aWN0ZWQpOyIgaGVyZQoK VGhlbiBjaGVjayB0aGUgZmxhZyBhZnRlciBtb3ZpbmcgdGhlIHR0bV9ib19idWxrX21vdmVfbHJ1 X3RhaWwoKSBpbnRvCmFtZGdwdV92bV9tb3ZlX3RvX2xydV90YWlsKCkgbGlrZSBiZWxvdzoKCnZv aWQgYW1kZ3B1X3ZtX21vdmVfdG9fbHJ1X3RhaWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV92bSAqdm0pCnsK ICAgICAgICBzdHJ1Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiA9IGFkZXYtPm1tYW4uYmRldi5nbG9i OwogICAgICAgIHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqYm9fYmFzZTsKCiAgICAgICAgaWYg KHZtLT5idWxrX21vdmVhYmxlKSB7CiAgICAgICAgICAgICAgICBzcGluX2xvY2soJmdsb2ItPmxy dV9sb2NrKTsKICAgICAgICAgICAgICAgIHR0bV9ib19idWxrX21vdmVfbHJ1X3RhaWwoJnZtLT5s cnVfYnVsa19tb3ZlKTsKICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9j ayk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBtZW1zZXQoJnZt LT5scnVfYnVsa19tb3ZlLCAwLCBzaXplb2Yodm0tPmxydV9idWxrX21vdmUpKTsKCiAgICAgICAg c3Bpbl9sb2NrKCZnbG9iLT5scnVfbG9jayk7CiAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShi b19iYXNlLCAmdm0tPmlkbGUsIHZtX3N0YXR1cykgewogICAgICAgICAgICAgICAgc3RydWN0IGFt ZGdwdV9ibyAqYm8gPSBib19iYXNlLT5ibzsKCiAgICAgICAgICAgICAgICBpZiAoIWJvLT5wYXJl bnQpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgIHR0 bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+dGJvLCAmdm0tPmxydV9idWxrX21vdmUpOwogICAg ICAgICAgICAgICAgaWYgKGJvLT5zaGFkb3cpCiAgICAgICAgICAgICAgICAgICAgICAgIHR0bV9i b19tb3ZlX3RvX2xydV90YWlsKCZiby0+c2hhZG93LT50Ym8sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2bS0+bHJ1X2J1bGtfbW92ZSk7CiAgICAgICAg fQogICAgICAgIHNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7CgogICAgICAgIHZtLT5idWxr X21vdmVhYmxlID0gdHJ1ZTsKfQoKVGhhbmtzLApSYXkKCj4gPiAgIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUoYm9fYmFzZSwgdG1wLCAmdm0tPmV2aWN0ZWQsIHZtX3N0YXR1cykgewo+ID4gICAJ CXN0cnVjdCBhbWRncHVfYm8gKmJvID0gYm9fYmFzZS0+Ym87Cj4gPiAgIAo+ID4gQEAgLTI5NSwx NCArMzQzLDkgQEAgaW50IGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ID4gICAJCQlyID0gdmFsaWRhdGUo cGFyYW0sIGJvKTsKPiA+ICAgCQkJaWYgKHIpCj4gPiAgIAkJCQlicmVhazsKPiA+IC0KPiA+IC0J CQlzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsKPiA+IC0JCQl0dG1fYm9fbW92ZV90b19scnVf dGFpbCgmYm8tPnRibywgTlVMTCk7Cj4gPiAtCQkJaWYgKGJvLT5zaGFkb3cpCj4gPiAtCQkJCXR0 bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+c2hhZG93LT50Ym8sIE5VTEwpOwo+ID4gLQkJCXNw aW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4gPiAgIAkJfQo+ID4gICAKPiA+ICsJCXZtLT52 YWxpZGF0ZWQgPSB0cnVlOwo+ID4gICAJCWlmIChiby0+dGJvLnR5cGUgIT0gdHRtX2JvX3R5cGVf a2VybmVsKSB7Cj4gPiAgIAkJCXNwaW5fbG9jaygmdm0tPm1vdmVkX2xvY2spOwo+ID4gICAJCQls aXN0X21vdmUoJmJvX2Jhc2UtPnZtX3N0YXR1cywgJnZtLT5tb3ZlZCk7Cj4gPiBAQCAtMzEyLDIw ICszNTUsMTQgQEAgaW50IGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ID4gICAJCX0KPiA+ICAgCX0KPiA+ ICAgCj4gPiAtCXNwaW5fbG9jaygmZ2xvYi0+bHJ1X2xvY2spOwo+ID4gLQlsaXN0X2Zvcl9lYWNo X2VudHJ5KGJvX2Jhc2UsICZ2bS0+aWRsZSwgdm1fc3RhdHVzKSB7Cj4gPiAtCQlzdHJ1Y3QgYW1k Z3B1X2JvICpibyA9IGJvX2Jhc2UtPmJvOwo+ID4gLQo+ID4gLQkJaWYgKCFiby0+cGFyZW50KQo+ ID4gLQkJCWNvbnRpbnVlOwo+ID4gKwlpZiAodm0tPnZhbGlkYXRlZCkKPiA+ICsJCXJldHVybiAw Owo+ID4gICAKPiA+IC0JCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+dGJvLCBOVUxMKTsK PiA+IC0JCWlmIChiby0+c2hhZG93KQo+ID4gLQkJCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZi by0+c2hhZG93LT50Ym8sIE5VTEwpOwo+ID4gLQl9Cj4gPiArCXNwaW5fbG9jaygmZ2xvYi0+bHJ1 X2xvY2spOwo+ID4gKwl0dG1fYm9fYnVsa19tb3ZlX2xydV90YWlsKCZ2bS0+bHJ1X2J1bGtfbW92 ZSk7Cj4gPiAgIAlzcGluX3VubG9jaygmZ2xvYi0+bHJ1X2xvY2spOwo+IAo+IFByb2JhYmx5IGJl c3QgdG8gbW92ZSB0aGF0IGludG8gYW1kZ3B1X3ZtX21vdmVfdG9fbHJ1X3RhaWwoKSBhcyB3ZWxs Lgo+IAo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFuLgo+IAo+ID4gICAKPiA+IC0JcmV0dXJuIHI7Cj4g PiArCXJldHVybiAwOwo+ID4gICB9Cj4gPiAgIAo+ID4gICAvKioKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4gPiBpbmRleCA2N2ExNWQ0Li44NWQ1N2JiIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4gPiBAQCAtMjksNiArMjks NyBAQAo+ID4gICAjaW5jbHVkZSA8bGludXgvcmJ0cmVlLmg+Cj4gPiAgICNpbmNsdWRlIDxkcm0v Z3B1X3NjaGVkdWxlci5oPgo+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4gPiArI2lu Y2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgo+ID4gICAKPiA+ICAgI2luY2x1ZGUgImFt ZGdwdV9zeW5jLmgiCj4gPiAgICNpbmNsdWRlICJhbWRncHVfcmluZy5oIgo+ID4gQEAgLTIyNiw2 ICsyMjcsMTEgQEAgc3RydWN0IGFtZGdwdV92bSB7Cj4gPiAgIAo+ID4gICAJLyogU29tZSBiYXNp YyBpbmZvIGFib3V0IHRoZSB0YXNrICovCj4gPiAgIAlzdHJ1Y3QgYW1kZ3B1X3Rhc2tfaW5mbyB0 YXNrX2luZm87Cj4gPiArCj4gPiArCS8qIFN0b3JlIHBvc2l0aW9ucyBvZiBncm91cCBvZiBCT3Mg Ki8KPiA+ICsJc3RydWN0IHR0bV9scnVfYnVsa19tb3ZlIGxydV9idWxrX21vdmU7Cj4gPiArCS8q IG1hcmsgd2hldGhlciBoYXMgYm8gdmFsaWRhdGVkIG9uIGV2aWN0ZWQgbGlzdCAqLwo+ID4gKwli b29sCQkJdmFsaWRhdGVkOwo+ID4gICB9Owo+ID4gICAKPiA+ICAgc3RydWN0IGFtZGdwdV92bV9t YW5hZ2VyIHsKPiA+IEBAIC0zMzAsOCArMzM2LDExIEBAIGJvb2wgYW1kZ3B1X3ZtX25lZWRfcGlw ZWxpbmVfc3luYyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4gPiAgIHZvaWQgYW1kZ3B1X3Zt X2NoZWNrX2NvbXB1dGVfYnVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKPiA+ICAgCj4g PiAgIHZvaWQgYW1kZ3B1X3ZtX2dldF90YXNrX2luZm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHVuc2lnbmVkIGludCBwYXNpZCwKPiA+IC0JCQkgc3RydWN0IGFtZGdwdV90YXNrX2luZm8g KnRhc2tfaW5mbyk7Cj4gPiArCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X3Rhc2tfaW5mbyAqdGFza19p bmZvKTsKPiA+ICAgCj4gPiAgIHZvaWQgYW1kZ3B1X3ZtX3NldF90YXNrX2luZm8oc3RydWN0IGFt ZGdwdV92bSAqdm0pOwo+ID4gICAKPiA+ICt2b2lkIGFtZGdwdV92bV9tb3ZlX3RvX2xydV90YWls KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ID4gKwkJCQlzdHJ1Y3QgYW1kZ3B1X3ZtICp2 bSk7Cj4gPiArCj4gPiAgICNlbmRpZgo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngK