From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 4/5] drm/amdgpu: use bulk moves for efficient VM LRU handling Date: Fri, 10 Aug 2018 17:03:05 +0800 Message-ID: <20180810090304.GB7715@hr-amur2> References: <1533722377-27020-1-git-send-email-ray.huang@amd.com> <1533722377-27020-5-git-send-email-ray.huang@amd.com> <20180809061801.GA26876@hr-amur2> <20180809122506.GA2881@hr-amur2> 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 T24gVGh1LCBBdWcgMDksIDIwMTggYXQgMDg6Mjc6MTBQTSArMDgwMCwgS29lbmlnLCBDaHJpc3Rp YW4gd3JvdGU6Cj4gQW0gMDkuMDguMjAxOCB1bSAxNDoyNSBzY2hyaWViIEh1YW5nIFJ1aToKPiA+ IE9uIFRodSwgQXVnIDA5LCAyMDE4IGF0IDAzOjE4OjU1UE0gKzA4MDAsIEtvZW5pZywgQ2hyaXN0 aWFuIHdyb3RlOgo+ID4+IEFtIDA5LjA4LjIwMTggdW0gMDg6MTggc2NocmllYiBIdWFuZyBSdWk6 Cj4gPj4+IE9uIFdlZCwgQXVnIDA4LCAyMDE4IGF0IDA2OjQ3OjQ5UE0gKzA4MDAsIENocmlzdGlh biBLw7ZuaWcgd3JvdGU6Cj4gPj4+PiBBbSAwOC4wOC4yMDE4IHVtIDExOjU5IHNjaHJpZWIgSHVh bmcgUnVpOgo+ID4+Pj4+IEkgY29udGludWUgdG8gd29yayBmb3IgYnVsayBtb3ZpbmcgdGhhdCBi YXNlZCBvbiB0aGUgcHJvcG9zYWwgYnkgQ2hyaXN0aWFuLgo+ID4+Pj4+Cj4gPj4+Pj4gQmFja2dy b3VuZDoKPiA+Pj4+PiBhbWRncHUgZHJpdmVyIHdpbGwgbW92ZSBhbGwgUEQvUFQgYW5kIFBlclZN IEJPcyBpbnRvIGlkbGUgbGlzdC4gVGhlbiBtb3ZlIGFsbCBvZgo+ID4+Pj4+IHRoZW0gb24gdGhl IGVuZCBvZiBMUlUgbGlzdCBvbmUgYnkgb25lLiBUaHVzLCB0aGF0IGNhdXNlIHNvIG1hbnkgQk9z IG1vdmVkIHRvCj4gPj4+Pj4gdGhlIGVuZCBvZiB0aGUgTFJVLCBhbmQgaW1wYWN0IHBlcmZvcm1h bmNlIHNlcmlvdXNseS4KPiA+Pj4+Pgo+ID4+Pj4+IFRoZW4gQ2hyaXN0aWFuIHByb3ZpZGVkIGEg d29ya2Fyb3VuZCB0byBub3QgbW92ZSBQRC9QVCBCT3Mgb24gTFJVIHdpdGggYmVsb3cKPiA+Pj4+ PiBwYXRjaDoKPiA+Pj4+PiAiZHJtL2FtZGdwdTogYmFuZCBhaWQgdmFsaWRhdGluZyBWTSBQVHMi Cj4gPj4+Pj4gQ29tbWl0IDBiYmYzMjAyNmNmNWJhNDFlOTkyMmIzMGUyNmUxYmVkMWVjZDM4YWUK PiA+Pj4+Pgo+ID4+Pj4+IEhvd2V2ZXIsIHRoZSBmaW5hbCBzb2x1dGlvbiBzaG91bGQgYnVsayBt b3ZlIGFsbCBQRC9QVCBhbmQgUGVyVk0gQk9zIG9uIHRoZSBMUlUKPiA+Pj4+PiBpbnN0ZWFkIG9m IG9uZSBieSBvbmUuCj4gPj4+Pj4KPiA+Pj4+PiBXaGVuZXZlciBhbWRncHVfdm1fdmFsaWRhdGVf cHRfYm9zKCkgaXMgY2FsbGVkIGFuZCB3ZSBoYXZlIEJPcyB3aGljaCBuZWVkIHRvIGJlCj4gPj4+ Pj4gdmFsaWRhdGVkIHdlIG1vdmUgYWxsIEJPcyB0b2dldGhlciB0byB0aGUgZW5kIG9mIHRoZSBM UlUgd2l0aG91dCBkcm9wcGluZyB0aGUKPiA+Pj4+PiBsb2NrIGZvciB0aGUgTFJVLgo+ID4+Pj4+ Cj4gPj4+Pj4gV2hpbGUgZG9pbmcgc28gd2Ugbm90ZSB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2Yg dGhpcyBibG9jayBpbiB0aGUgTFJVIGxpc3QuCj4gPj4+Pj4KPiA+Pj4+PiBOb3cgd2hlbiBhbWRn cHVfdm1fdmFsaWRhdGVfcHRfYm9zKCkgaXMgY2FsbGVkIGFuZCB3ZSBkb24ndCBoYXZlIGFueXRo aW5nIHRvIGRvLAo+ID4+Pj4+IHdlIGRvbid0IG1vdmUgZXZlcnkgQk8gb25lIGJ5IG9uZSwgYnV0 IGluc3RlYWQgY3V0IHRoZSBMUlUgbGlzdCBpbnRvIHBpZWNlcyBzbwo+ID4+Pj4+IHRoYXQgd2Ug YnVsayBtb3ZlIGV2ZXJ5dGhpbmcgdG8gdGhlIGVuZCBpbiBqdXN0IG9uZSBvcGVyYXRpb24uCj4g Pj4+Pj4KPiA+Pj4+PiBUZXN0IGRhdGE6Cj4gPj4+Pj4gKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKPiA+Pj4+PiB8ICAgICAgICAgICAgICB8VGhlIFRhbG9zICAgICAgICB8Q2xwZWFrKE9D TCl8QnVzU3BlZWRSZWFkYmFjayhPQ0wpICAgICAgICAgICAgICAgICAgfAo+ID4+Pj4+IHwgICAg ICAgICAgICAgIHxQcmluY2lwbGUoVnVsa2FuKXwgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cj4gPj4+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKPiA+Pj4+PiB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICB8MC4zMTkgbXMoMWspIDAuMzE0IG1zKDJLKSAwLjMwOCBtcyg0SykgfAo+ID4+Pj4+IHwgT3Jp Z2luYWwgICAgIHwgIDE0Ny43IEZQUyAgICAgIHwgIDc2Ljg2IHVzIHwwLjMwNyBtcyg4SykgMC4z MTAgbXMoMTZLKSAgICAgICAgICAgICB8Cj4gPj4+Pj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKPiA+Pj4+PiB8IE9yaWduaWFsICsgV0F8ICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICB8MC4yNTQgbXMoMUspIDAuMjQxIG1zKDJLKSAgICAgICAgICAgICAgfAo+ID4+Pj4+IHwoZG9u J3QgbW92ZSAgIHwgIDE2Mi4xIEZQUyAgICAgIHwgIDQyLjE1IHVzIHwwLjIzMCBtcyg0SykgMC4y MjMgbXMoOEspIDAuMjA0IG1zKDE2Syl8Cj4gPj4+Pj4gfFBUIEJPcyBvbiBMUlUpfCAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKPiA+Pj4+PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4+Pj4+IHwgQnVs ayBtb3ZlICAgIHwgIDE2My4xIEZQUyAgICAgIHwgIDQwLjUyIHVzIHwwLjI0NCBtcygxSykgMC4y NTIgbXMoMkspIDAuMjEzIG1zKDRLKSB8Cj4gPj4+Pj4gfCAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfDAuMjE0IG1zKDhLKSAwLjIyNSBtcygxNkspICAgICAgICAg ICAgIHwKPiA+Pj4+PiArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4+Pj4+Cj4gPj4+ Pj4gQWZ0ZXIgdGVzdCB0aGVtIHdpdGggYWJvdmUgdGhyZWUgYmVuY2htYXJrcyBpbmNsdWRlIHZ1 bGthbiBhbmQgb3BlbmNsLiBXZSBjYW4KPiA+Pj4+PiBzZWUgdGhlIHZpc2libGUgaW1wcm92ZW1l bnQgdGhhbiBvcmlnaW5hbCwgYW5kIGV2ZW4gYmV0dGVyIHRoYW4gb3JpZ2luYWwgd2l0aAo+ID4+ Pj4+IHdvcmthcm91bmQuCj4gPj4+Pj4KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4g S8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTog SHVhbmcgUnVpIDxyYXkuaHVhbmdAYW1kLmNvbT4KPiA+Pj4+PiAtLS0KPiA+Pj4+PiAgICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgfCAyMiArKysrKysrKysrKysrKy0t LS0tLS0tCj4gPj4+Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5o IHwgIDQgKysrKwo+ID4+Pj4+ICAgICAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCj4gPj4+Pj4KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdm0uYwo+ID4+Pj4+IGluZGV4IDljODQ3NzAuLmVkYTBiYjkgMTAwNjQ0Cj4gPj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiA+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+ID4+Pj4+IEBAIC0yODYs NiArMjg2LDcgQEAgaW50IGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ID4+Pj4+ICAgICB7Cj4gPj4+Pj4g ICAgIAlzdHJ1Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiA9IGFkZXYtPm1tYW4uYmRldi5nbG9iOwo+ ID4+Pj4+ICAgICAJc3RydWN0IGFtZGdwdV92bV9ib19iYXNlICpib19iYXNlLCAqdG1wOwo+ID4+ Pj4+ICsJYm9vbCB2YWxpZGF0ZWQgPSBmYWxzZTsKPiA+Pj4+PiAgICAgCWludCByID0gMDsKPiA+ Pj4+PiAgICAgCj4gPj4+Pj4gICAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm9fYmFzZSwg dG1wLCAmdm0tPmV2aWN0ZWQsIHZtX3N0YXR1cykgewo+ID4+Pj4+IEBAIC0yOTUsMTQgKzI5Niw5 IEBAIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiA+Pj4+PiAgICAgCQkJciA9IHZhbGlkYXRlKHBh cmFtLCBibyk7Cj4gPj4+Pj4gICAgIAkJCWlmIChyKQo+ID4+Pj4+ICAgICAJCQkJYnJlYWs7Cj4g Pj4+Pj4gLQo+ID4+Pj4+IC0JCQlzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsKPiA+Pj4+PiAt CQkJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoJmJvLT50Ym8sIE5VTEwpOwo+ID4+Pj4+IC0JCQlp ZiAoYm8tPnNoYWRvdykKPiA+Pj4+PiAtCQkJCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+ c2hhZG93LT50Ym8sIE5VTEwpOwo+ID4+Pj4+IC0JCQlzcGluX3VubG9jaygmZ2xvYi0+bHJ1X2xv Y2spOwo+ID4+Pj4+ICAgICAJCX0KPiA+Pj4+PiAgICAgCj4gPj4+Pj4gKwkJdmFsaWRhdGVkID0g dHJ1ZTsKPiA+Pj4+PiAgICAgCQlpZiAoYm8tPnRiby50eXBlICE9IHR0bV9ib190eXBlX2tlcm5l bCkgewo+ID4+Pj4+ICAgICAJCQlzcGluX2xvY2soJnZtLT5tb3ZlZF9sb2NrKTsKPiA+Pj4+PiAg ICAgCQkJbGlzdF9tb3ZlKCZib19iYXNlLT52bV9zdGF0dXMsICZ2bS0+bW92ZWQpOwo+ID4+Pj4+ IEBAIC0zMTIsNiArMzA4LDE1IEBAIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiA+Pj4+PiAgICAg CQl9Cj4gPj4+Pj4gICAgIAl9Cj4gPj4+Pj4gICAgIAo+ID4+Pj4+ICsJaWYgKCF2YWxpZGF0ZWQp IHsKPiA+Pj4+PiArCQlzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsKPiA+Pj4+PiArCQl0dG1f Ym9fYnVsa19tb3ZlX2xydV90YWlsKCZ2bS0+bHJ1X2J1bGtfbW92ZSk7Cj4gPj4+Pj4gKwkJc3Bp bl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsKPiA+Pj4+PiArCQlyZXR1cm4gMDsKPiA+Pj4+PiAr CX0KPiA+Pj4+PiArCj4gPj4+Pj4gKwltZW1zZXQoJnZtLT5scnVfYnVsa19tb3ZlLCAwLCBzaXpl b2Yodm0tPmxydV9idWxrX21vdmUpKTsKPiA+Pj4+PiArCj4gPj4+Pj4gICAgIAlzcGluX2xvY2so Jmdsb2ItPmxydV9sb2NrKTsKPiA+Pj4+PiAgICAgCWxpc3RfZm9yX2VhY2hfZW50cnkoYm9fYmFz ZSwgJnZtLT5pZGxlLCB2bV9zdGF0dXMpIHsKPiA+Pj4+PiAgICAgCQlzdHJ1Y3QgYW1kZ3B1X2Jv ICpibyA9IGJvX2Jhc2UtPmJvOwo+ID4+Pj4+IEBAIC0zMTksOSArMzI0LDEwIEBAIGludCBhbWRn cHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3Qg YW1kZ3B1X3ZtICp2bSwKPiA+Pj4+PiAgICAgCQlpZiAoIWJvLT5wYXJlbnQpCj4gPj4+Pj4gICAg IAkJCWNvbnRpbnVlOwo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAtCQl0dG1fYm9fbW92ZV90b19scnVf dGFpbCgmYm8tPnRibywgTlVMTCk7Cj4gPj4+Pj4gKwkJdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwo JmJvLT50Ym8sICZ2bS0+bHJ1X2J1bGtfbW92ZSk7Cj4gPj4+Pj4gICAgIAkJaWYgKGJvLT5zaGFk b3cpCj4gPj4+Pj4gLQkJCXR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+c2hhZG93LT50Ym8s IE5VTEwpOwo+ID4+Pj4+ICsJCQl0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmYm8tPnNoYWRvdy0+ dGJvLAo+ID4+Pj4+ICsJCQkJCQkmdm0tPmxydV9idWxrX21vdmUpOwo+ID4+Pj4gSGVyZSBpcyBz dGlsbCBvbmUgcHJvYmxlbTogVGhlIEJPcyBjdXJyZW50bHkgZXZpY3RlZCBhcmUgbm90IHlldCBp biB0aGUKPiA+Pj4+IGlkbGUgc3RhdGUuCj4gPj4+Pgo+ID4+Pj4gU28gdGhpcyBtdXN0IGJlIG1v dmVkIHRvIHRoZSBlbmQgb2YgdGhlIHN0YXRlIG1hY2hpbmUsIHByb2JhYmx5IGJlc3QgaWYKPiA+ Pj4+IHdlIHB1dCB0aGF0IGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbi4KPiA+Pj4+Cj4gPj4+IFRo YW5rcywgc28gdGhlIGV2aWN0ZWQgQk9zIHNob3VsZCBiZSBiZWhpbmQgdGhlIEJPcyBpbiBpZGxl IGxpc3QgdGhhdCBpbgo+ID4+PiB0aGUgZ3JvdXAgYmV0d2VlbiAoZmlyc3QsIGxhc3QpIG9mIGJ1 bGtfbW92ZV9wb3MsIHJpZ2h0Pwo+ID4+IFRoZSBvcmRlciBkb2Vzbid0IG1hdHRlci4KPiA+Pgo+ ID4+PiAgICAgICAgICAgc3Bpbl9sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4gPj4+ICAgICAgICAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvX2Jhc2UsICZ2bS0+aWRsZSwgdm1fc3RhdHVzKSB7Cj4g Pj4+ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm8gKmJvID0gYm9fYmFzZS0+Ym87 Cj4gPj4+Cj4gPj4+ICAgICAgICAgICAgICAgICAgIGlmICghYm8tPnBhcmVudCkKPiA+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Pj4KPiA+Pj4gICAgICAgICAgICAg ICAgICAgdHRtX2JvX21vdmVfdG9fbHJ1X3RhaWwoJmJvLT50Ym8sICZ2bS0+bHJ1X2J1bGtfbW92 ZSk7Cj4gPj4+ICAgICAgICAgICAgICAgICAgIGlmIChiby0+c2hhZG93KQo+ID4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHR0bV9ib19tb3ZlX3RvX2xydV90YWlsKCZiby0+c2hhZG93LT50 Ym8sCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnZtLT5scnVfYnVsa19tb3ZlKTsKPiA+Pj4gICAgICAgICAgIH0KPiA+Pj4gICAgICAgICAg IGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShib19iYXNlLCB0bXAsICZ2bS0+ZXZpY3RlZCwgdm1f c3RhdHVzKSB7Cj4gPj4gVGhhdCB3b24ndCB3b3JrLiBUaGUgQk9zIGdldCByZW1vdmVkIGZyb20g dGhlIGV2aWN0ZWQgbGlzdCB3aGVuIHRoZXkgYXJlCj4gPj4gdmFsaWRhdGVkLgo+ID4+Cj4gPj4g WW91IG5lZWQgdG8gd2FsayBib3RoIHRoZSByZWxvY2F0ZWQgYXMgd2VsbCBhcyB0aGUgbW92ZWQg bGlzdCBoZXJlLgo+ID4+Cj4gPiBJcyB0aGF0IGJlY2F1c2UsIGF0IHRoZSBzdGFydCBvZiB0aGUg ZnVuY3Rpb24sIHdlIGFscmVhZHkgd2FsayB0aGUgZXZpY3RlZAo+ID4gbGlzdCwgYW5kIHNvbWUg b2YgQk9zIGFyZSB2YWxpZGF0ZWQgYW5kIG1vdmUgdG8gbW92ZWQgb3IgcmVsb2NhdGVkIGxpc3Qs IHNvCj4gPiBoZXJlIHdlIG5lZWQgYWxzbyB3YWxrIGJvdGggb2YgdGhlbSB0byBtYWtlIHRoZW0g dG9nZXRoZXIgZm9yIGJ1bGsgbW92ZT8KPiAKPiBZZXMsIGV4YWN0bHkuCj4gCj4gQWx0ZXJuYXRp dmVseSB5b3UgY2FuIGFkZCBhIG5ldyBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgY29t bWFuZCAKPiBzdWJtaXNzaW9uIGlzIGRvbmUgdG8gbW92ZSBldmVyeXRoaW5nIG9uIHRoZSBMUlUu Cj4gCj4gQXQgdGhpcyBwb2ludCBhbGwgQk9zIHNob3VsZCBub3cgYmUgb24gdGhlIGlkbGUgbGlz dCBhZ2FpbiBhbmQgeW91IG9ubHkgCj4gbmVlZCB0byB3YWxrIHRoYXQgb25lLgoKRG8geW91IG1l YW4gd2UgbW92ZSBhbGwgQk9zIHRvIGlkbGUgbGlzdCBhZ2FpbiBpbiBhbWRncHVfdm1fYm9fdXBk YXRlIG9mCmFtZGdwdV9jc19pYl92bV9jaHVuayBzdWJzZXF1ZW50bHk/CkJ1dCBhdCB0aGF0IHRp bWUsIEkgc2VlIGlmIHRoZSBCTyBpcyBldmljdGVkLCBpdCB3aWxsIGJlIG1vdmVkIHRvIGV2aWN0 ZWQKbGlzdCwgbm90IHRvIGlkbGUgbGlzdCBhZ2Fpbi4gQW0gSSBtaXNzZWQgc29tZXRoaW5nPwoK VGhhbmtzLApSYXkKCj4gCj4gUmVnYXJkcywKPiBDaHJpc3RpYW4uCj4gCj4gPgo+ID4gVGhhbmtz LAo+ID4gUmF5Cj4gPgo+ID4+IENocmlzdGlhbi4KPiA+Pgo+ID4+PiAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2JvICpibyA9IGJvX2Jhc2UtPmJvOwo+ID4+PiAgICAgICAgICAgICAg ICAgICBpZiAoIWJvKQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ ID4+Pgo+ID4+PiAgICAgICAgICAgICAgICAgICB0dG1fYm9fbW92ZV90b19scnVfdGFpbCgmYm8t PnRibywgJnZtLT5scnVfYnVsa19tb3ZlKTsKPiA+Pj4gICAgICAgICAgICAgICAgICAgaWYgKGJv LT5zaGFkb3cpCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRtX2JvX21vdmVfdG9f bHJ1X3RhaWwoJmJvLT5zaGFkb3ctPnRibywKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdm0tPmxydV9idWxrX21vdmUpOwo+ID4+PiAgICAg ICAgICAgfQo+ID4+PiAgICAgICAgICAgc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsKPiA+ Pj4KPiA+Pj4gVGhhbmtzLAo+ID4+PiBSYXkKPiA+Pj4KPiA+Pj4+IFJlZ2FyZHMsCj4gPj4+PiBD aHJpc3RpYW4uCj4gPj4+Pgo+ID4+Pj4+ICAgICAJfQo+ID4+Pj4+ICAgICAJc3Bpbl91bmxvY2so Jmdsb2ItPmxydV9sb2NrKTsKPiA+Pj4+PiAgICAgCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtLmgKPiA+Pj4+PiBpbmRleCA2N2ExNWQ0Li45MjcyNWFjIDEwMDY0NAo+ ID4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4gPj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPiA+Pj4+PiBA QCAtMjksNiArMjksNyBAQAo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8bGludXgvcmJ0cmVlLmg+Cj4g Pj4+Pj4gICAgICNpbmNsdWRlIDxkcm0vZ3B1X3NjaGVkdWxlci5oPgo+ID4+Pj4+ICAgICAjaW5j bHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4gPj4+Pj4gKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19k cml2ZXIuaD4KPiA+Pj4+PiAgICAgCj4gPj4+Pj4gICAgICNpbmNsdWRlICJhbWRncHVfc3luYy5o Igo+ID4+Pj4+ICAgICAjaW5jbHVkZSAiYW1kZ3B1X3JpbmcuaCIKPiA+Pj4+PiBAQCAtMjI2LDYg KzIyNyw5IEBAIHN0cnVjdCBhbWRncHVfdm0gewo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAgICAgCS8q IFNvbWUgYmFzaWMgaW5mbyBhYm91dCB0aGUgdGFzayAqLwo+ID4+Pj4+ICAgICAJc3RydWN0IGFt ZGdwdV90YXNrX2luZm8gdGFza19pbmZvOwo+ID4+Pj4+ICsKPiA+Pj4+PiArCS8qIFN0b3JlIHBv c2l0aW9ucyBvZiBncm91cCBvZiBCT3MgKi8KPiA+Pj4+PiArCXN0cnVjdCB0dG1fbHJ1X2J1bGtf bW92ZSBscnVfYnVsa19tb3ZlOwo+ID4+Pj4+ICAgICB9Owo+ID4+Pj4+ICAgICAKPiA+Pj4+PiAg ICAgc3RydWN0IGFtZGdwdV92bV9tYW5hZ2VyIHsKPiAKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9hbWQtZ2Z4Cg==