From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH 1/2] drm/amdgpu: return bo itself if userptr is cpu addr of bo (v3) Date: Tue, 31 Jul 2018 10:32:33 +0800 Message-ID: <5B5FCA41.8090905@amd.com> References: <1532944950-28619-1-git-send-email-Jerry.Zhang@amd.com> <3d423f44-e47a-e70c-dfd9-80c1ff843e45@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: "Zhou, David(ChunMing)" , "Koenig, Christian" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMDcvMzEvMjAxOCAwOTo0OSBBTSwgWmhvdSwgRGF2aWQoQ2h1bk1pbmcpIHdyb3RlOgo+IFR5 cG8sIGV4Y2VwdGVkIC0+IGV4cGVjdGVkCj4KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ IEZyb206IGFtZC1nZnggPGFtZC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IE9u IEJlaGFsZiBPZiBaaG91LCBEYXZpZChDaHVuTWluZykKPiBTZW50OiBUdWVzZGF5LCBKdWx5IDMx LCAyMDE4IDk6NDEgQU0KPiBUbzogS29lbmlnLCBDaHJpc3RpYW4gPENocmlzdGlhbi5Lb2VuaWdA YW1kLmNvbT47IFpoYW5nLCBKZXJyeSA8SmVycnkuWmhhbmdAYW1kLmNvbT47IGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gU3ViamVjdDogUkU6IFtQQVRDSCAxLzJdIGRybS9hbWRncHU6 IHJldHVybiBibyBpdHNlbGYgaWYgdXNlcnB0ciBpcyBjcHUgYWRkciBvZiBibyAodjMpCj4KPiBU aGFua3MgZm9yIEplcnJ5ICBzdGlsbCAgcmVtZW1iZXJzICB0aGlzIHNlcmllcy4KPgo+IEhpIENo cmlzdGlhbiwKPgo+IEZvciB1cHN0cmVhbSBvZiB0aGlzIGZlYXR1cmUsIHNlZW1zIHdlIGFscmVh ZHkgaGFkIGFncmVlbWVudCBsb25nIHRpbWUgYWdvLiBUd28gcmVhc29ucyBmb3IgdXBzdHJlYW1p bmc6Cj4gMS4gdGhpcyBidWcgd2FzIGZvdW5kIGJ5IGFuIG9wZW5nbCBnYW1lLCBzbyB0aGlzIGJ1 ZyBhbHNvIGlzIGluIG1lc2EgZHJpdmVyIGluIHRoZW9yeS4KPiAyLiBhZnRlciB1cHN0cmVhbSB0 aGVzZSBwYXRjaGVzLCB3ZSBjYW4gcmVkdWNlIHBybyBzcGVjaWZpYyBwYXRjaGVzLCBhbmQgY2xv c2UgdG8gb3BlbiBzb3VyY2UuCgpUaGFua3MgZm9yIGV4cGxhbmF0aW9uLgoKPgo+IEJ0dywgYW4g dW5pdCB0ZXN0IGlzIGV4Y2VwdGVkIHdoZW4gdXBzdHJlYW1pbmcsIEkgcmVtZW1iZXIgQWxleCBt ZW50aW9uZWQuCgpZZXMsIEkgd2lsbC4KCj4KPiBUaGFua3MsCj4gRGF2aWQgWmhvdQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5s ZWljaHR6dW1lcmtlbkBnbWFpbC5jb20+Cj4gU2VudDogTW9uZGF5LCBKdWx5IDMwLCAyMDE4IDY6 NDggUE0KPiBUbzogWmhhbmcsIEplcnJ5IDxKZXJyeS5aaGFuZ0BhbWQuY29tPjsgYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBDYzogWmhvdSwgRGF2aWQoQ2h1bk1pbmcpIDxEYXZpZDEu WmhvdUBhbWQuY29tPjsgS29lbmlnLCBDaHJpc3RpYW4gPENocmlzdGlhbi5Lb2VuaWdAYW1kLmNv bT4KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMl0gZHJtL2FtZGdwdTogcmV0dXJuIGJvIGl0c2Vs ZiBpZiB1c2VycHRyIGlzIGNwdSBhZGRyIG9mIGJvICh2MykKPgo+IEFtIDMwLjA3LjIwMTggdW0g MTI6MDIgc2NocmllYiBKdW53ZWkgWmhhbmc6Cj4+IEZyb206IENodW5taW5nIFpob3UgPERhdmlk MS5aaG91QGFtZC5jb20+Cj4+Cj4+IHYyOiBnZXQgb3JpZ2luYWwgZ2VtIGhhbmRsZSBmcm9tIGdv YmoKPj4gdjM6IHVwZGF0ZSBmaW5kIGJvIGRhdGEgc3RydWN0dXJlIGFzIHVuaW9uKGluLCBvdXQp Cj4+ICAgICAgIHNpbXBseSBzb21lIGNvZGUgbG9naWMKPgo+IERvIHdlIG5vdyBoYXZlIGFuIG9w ZW4gc291cmNlIHVzZXIgZm9yIHRoaXMsIHNvIHRoYXQgd2UgY2FuIHVwc3RyZWFtIGl0Pwo+IE9u ZSBtb3JlIHBvaW50IGJlbG93Lgo+Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENodW5taW5nIFpob3Ug PERhdmlkMS5aaG91QGFtZC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEp1bndlaSBaaGFuZyA8SmVy cnkuWmhhbmdAYW1kLmNvbT4gKHYzKQo+PiBSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8 Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+PiBSZXZpZXdlZC1ieTogSmFtbXkgWmhvdSA8SmFt bXkuWmhvdUBhbWQuY29tPgo+PiAtLS0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmggICAgIHwgIDIgKysKPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2dlbS5jIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYyB8ICAzICstCj4+ICAgIGluY2x1 ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oICAgICAgICAgICB8IDIxICsrKysrKysrKysrCj4+ICAg IDQgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4gYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+PiBpbmRleCA0Y2QyMGU3Li40NmMzNzBi IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+PiBAQCAtMTIxMyw2ICsx MjEzLDggQEAgaW50IGFtZGdwdV9nZW1faW5mb19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+PiAgICAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4+ICAgIGlu dCBhbWRncHVfZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPj4gICAgCQkJc3RydWN0IGRybV9maWxlICpmaWxwKTsKPj4gK2ludCBhbWRncHVfZ2Vt X2ZpbmRfYm9fYnlfY3B1X21hcHBpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPj4gKwkJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4+ICAgIGludCBh bWRncHVfZ2VtX21tYXBfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK Pj4gICAgCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOwo+PiAgICBpbnQgYW1kZ3B1X2dlbV93 YWl0X2lkbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+PiBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+PiBpbmRleCA3MTc5MmQ4Li5i YWU4NDE3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z2VtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+ IEBAIC0yODgsNiArMjg4LDY5IEBAIGludCBhbWRncHVfZ2VtX2NyZWF0ZV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgICAJcmV0dXJuIDA7Cj4+ICAgIH0KPj4K Pj4gK3N0YXRpYyBpbnQgYW1kZ3B1X2dlbV9nZXRfaGFuZGxlX2Zyb21fb2JqZWN0KHN0cnVjdCBk cm1fZmlsZSAqZmlscCwKPj4gKwkJCQkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikg ewo+PiArCWludCBpOwo+PiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqdG1wOwo+PiArCj4+ICsJ c3Bpbl9sb2NrKCZmaWxwLT50YWJsZV9sb2NrKTsKPj4gKwlpZHJfZm9yX2VhY2hfZW50cnkoJmZp bHAtPm9iamVjdF9pZHIsIHRtcCwgaSkgewo+PiArCQlpZiAob2JqID09IHRtcCkgewo+PiArCQkJ ZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9iaik7Cj4+ICsJCQlzcGluX3VubG9jaygmZmlscC0+ dGFibGVfbG9jayk7Cj4+ICsJCQlyZXR1cm4gaTsKPj4gKwkJfQo+PiArCX0KPgo+IFBsZWFzZSBk b3VibGUgY2hlY2sgaWYgdGhhdCBpcyBzdGlsbCB1cCB0byBkYXRlLgoKV2UgbWF5IGhhdmUgdG8g cmVwbGFjZSBkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoKSB3aXRoIGRybV9nZW1fb2JqZWN0X2dl dCgpLgoKT24gMm5kIHRob3VnaHQsIGRvIHdlIHJlYWxseSBuZWVkIHRvIGRvIHJlZmVyZW5jZSBl dmVyeSB0aW1lPwppZiBVTUQgZmluZCB0aGUgc2FtZSBnZW0gb2JqZWN0IGZvciAzIHRpbWVzLCBp dCBhbHNvIG5lZWQgdG8gZXhwbGljaXRseSBmcmVlKHB1dCkgdGhhdCBvYmplY3QgZm9yIDMgdGlt ZXM/CgoKPgo+IEkgdGhpbmsgd2UgY291bGQgYXMgd2VsbCB0cnkgdG8gdXNlIHRoZSBETUEtYnVm IGhhbmRsZSB0cmVlIGZvciB0aGF0LgoKSWYgdGhlIGJvIGlzIG5vdCBpbXBvcnQvZXhwb3J0LCBE TUEtYnVmIHdpbGwgYmUgTlVMTCBhbHdheXMuCgpSZWdhcmRzLApKZXJyeQoKPgo+IENocmlzdGlh bi4KPgo+PiArCXNwaW5fdW5sb2NrKCZmaWxwLT50YWJsZV9sb2NrKTsKPj4gKwo+PiArCXJldHVy biAwOwo+PiArfQo+PiArCj4+ICtpbnQgYW1kZ3B1X2dlbV9maW5kX2JvX2J5X2NwdV9tYXBwaW5n X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ICsJCQkJCSAgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4+ICt7Cj4+ICsJdW5pb24gZHJtX2FtZGdwdV9nZW1fZmlu ZF9ibyAqYXJncyA9IGRhdGE7Cj4+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqOwo+PiAr CXN0cnVjdCBhbWRncHVfYm8gKmJvOwo+PiArCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJv Owo+PiArCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwo+PiArCXVpbnQzMl90IGhhbmRsZTsK Pj4gKwlpbnQgcjsKPj4gKwo+PiArCWlmIChvZmZzZXRfaW5fcGFnZShhcmdzLT5pbi5hZGRyIHwg YXJncy0+aW4uc2l6ZSkpCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsJZG93bl9yZWFk KCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwo+PiArCXZtYSA9IGZpbmRfdm1hKGN1cnJlbnQtPm1t LCBhcmdzLT5pbi5hZGRyKTsKPj4gKwlpZiAoIXZtYSB8fCB2bWEtPnZtX2ZpbGUgIT0gZmlscC0+ ZmlscCB8fAo+PiArCSAgICAoYXJncy0+aW4uc2l6ZSA+ICh2bWEtPnZtX2VuZCAtIGFyZ3MtPmlu LmFkZHIpKSkgewo+PiArCQlhcmdzLT5vdXQuaGFuZGxlID0gMDsKPj4gKwkJdXBfcmVhZCgmY3Vy cmVudC0+bW0tPm1tYXBfc2VtKTsKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCWFy Z3MtPm91dC5vZmZzZXQgPSBhcmdzLT5pbi5hZGRyIC0gdm1hLT52bV9zdGFydDsKPj4gKwo+PiAr CXRibyA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOwo+PiArCWJvID0gY29udGFpbmVyX29mKHRibywg c3RydWN0IGFtZGdwdV9ibywgdGJvKTsKPj4gKwlhbWRncHVfYm9fcmVmKGJvKTsKPj4gKwlnb2Jq ID0gJmJvLT5nZW1fYmFzZTsKPj4gKwo+PiArCWhhbmRsZSA9IGFtZGdwdV9nZW1fZ2V0X2hhbmRs ZV9mcm9tX29iamVjdChmaWxwLCBnb2JqKTsKPj4gKwlpZiAoIWhhbmRsZSkgewo+PiArCQlyID0g ZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbHAsIGdvYmosICZoYW5kbGUpOwo+PiArCQlpZiAocikg ewo+PiArCQkJRFJNX0VSUk9SKCJjcmVhdGUgZ2VtIGhhbmRsZSBmYWlsZWRcbiIpOwo+PiArCQkJ dXBfcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKPj4gKwkJCXJldHVybiByOwo+PiArCQl9 Cj4+ICsJfQo+PiArCWFyZ3MtPm91dC5oYW5kbGUgPSBoYW5kbGU7Cj4+ICsJdXBfcmVhZCgmY3Vy cmVudC0+bW0tPm1tYXBfc2VtKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICAg IGludCBhbWRncHVfZ2VtX3VzZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPj4gICAgCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4+ICAgIHsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+PiBpbmRleCA3OTU2ODQ4 Li4xYmQyY2MxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfa21zLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5j Cj4+IEBAIC0xMTAwLDcgKzExMDAsOCBAQCB2b2lkIGFtZGdwdV9kaXNhYmxlX3ZibGFua19rbXMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4+ICAgIAlEUk1fSU9D VExfREVGX0RSVihBTURHUFVfR0VNX1ZBLCBhbWRncHVfZ2VtX3ZhX2lvY3RsLCBEUk1fQVVUSHxE Uk1fUkVOREVSX0FMTE9XKSwKPj4gICAgCURSTV9JT0NUTF9ERUZfRFJWKEFNREdQVV9HRU1fT1As IGFtZGdwdV9nZW1fb3BfaW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+PiAgICAJ RFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9VU0VSUFRSLCBhbWRncHVfZ2VtX3VzZXJwdHJf aW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+PiAtCURSTV9JT0NUTF9ERUZfRFJW KEFNREdQVV9GUkVFU1lOQywgYW1kZ3B1X2Rpc3BsYXlfZnJlZXN5bmNfaW9jdGwsIERSTV9NQVNU RVIpCj4+ICsJRFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0ZSRUVTWU5DLCBhbWRncHVfZGlzcGxh eV9mcmVlc3luY19pb2N0bCwgRFJNX01BU1RFUiksCj4+ICsJRFJNX0lPQ1RMX0RFRl9EUlYoQU1E R1BVX0dFTV9GSU5EX0JPLAo+PiArYW1kZ3B1X2dlbV9maW5kX2JvX2J5X2NwdV9tYXBwaW5nX2lv Y3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKQo+PiAgICB9Owo+PiAgICBjb25zdCBpbnQg YW1kZ3B1X21heF9rbXNfaW9jdGwgPSBBUlJBWV9TSVpFKGFtZGdwdV9pb2N0bHNfa21zKTsKPj4K Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCj4+IGIvaW5jbHVk ZS91YXBpL2RybS9hbWRncHVfZHJtLmggaW5kZXggOTQ0NDRlZS4uMDAwYzQxNSAxMDA2NDQKPj4g LS0tIGEvaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmgKPj4gKysrIGIvaW5jbHVkZS91YXBp L2RybS9hbWRncHVfZHJtLmgKPj4gQEAgLTU0LDYgKzU0LDcgQEAKPj4gICAgI2RlZmluZSBEUk1f QU1ER1BVX1ZNCQkJMHgxMwo+PiAgICAjZGVmaW5lIERSTV9BTURHUFVfRkVOQ0VfVE9fSEFORExF CTB4MTQKPj4gICAgI2RlZmluZSBEUk1fQU1ER1BVX1NDSEVECQkweDE1Cj4+ICsjZGVmaW5lIERS TV9BTURHUFVfR0VNX0ZJTkRfQk8JCTB4MTYKPj4gICAgLyogbm90IHVwc3RyZWFtICovCj4+ICAg ICNkZWZpbmUgRFJNX0FNREdQVV9GUkVFU1lOQwkgICAgICAgIDB4NWQKPj4KPj4gQEAgLTc0LDYg Kzc1LDcgQEAKPj4gICAgI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0ZFTkNFX1RPX0hBTkRMRSBE Uk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9GRU5DRV9UT19IQU5ETEUsIHVu aW9uIGRybV9hbWRncHVfZmVuY2VfdG9faGFuZGxlKQo+PiAgICAjZGVmaW5lIERSTV9JT0NUTF9B TURHUFVfU0NIRUQJCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfU0NIRUQs IHVuaW9uIGRybV9hbWRncHVfc2NoZWQpCj4+ICAgICNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9G UkVFU1lOQwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0FNREdQVV9GUkVFU1lOQywg c3RydWN0IGRybV9hbWRncHVfZnJlZXN5bmMpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVf R0VNX0ZJTkRfQk8JRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX0ZJ TkRfQk8sIHVuaW9uIGRybV9hbWRncHVfZ2VtX2ZpbmRfYm8pCj4+Cj4+ICAgIC8qKgo+PiAgICAg KiBET0M6IG1lbW9yeSBkb21haW5zCj4+IEBAIC0zOTIsNiArMzk0LDI1IEBAIHN0cnVjdCBkcm1f YW1kZ3B1X2dlbV93YWl0X2lkbGVfb3V0IHsKPj4gICAgCXN0cnVjdCBkcm1fYW1kZ3B1X2dlbV93 YWl0X2lkbGVfb3V0IG91dDsKPj4gICAgfTsKPj4KPj4gK3N0cnVjdCBkcm1fYW1kZ3B1X2dlbV9m aW5kX2JvX2luIHsKPj4gKwkvKiBDUFUgYWRkcmVzcyAqLwo+PiArCV9fdTY0CQkJYWRkcjsKPj4g KwkvKiBtZW1vcnkgc2l6ZSBmcm9tIENQVSBhZGRyZXNzICovCj4+ICsJX191NjQJCQlzaXplOwo+ PiArfTsKPj4gKwo+PiArc3RydWN0IGRybV9hbWRncHVfZ2VtX2ZpbmRfYm9fb3V0IHsKPj4gKwkv KiBvZmZzZXQgaW4gYm8gKi8KPj4gKwlfX3U2NAkJCW9mZnNldDsKPj4gKwkvKiByZXN1bHRpbmcg R0VNIGhhbmRsZSAqLwo+PiArCV9fdTMyCQkJaGFuZGxlOwo+PiArfTsKPj4gKwo+PiArdW5pb24g ZHJtX2FtZGdwdV9nZW1fZmluZF9ibyB7Cj4+ICsJc3RydWN0IGRybV9hbWRncHVfZ2VtX2ZpbmRf Ym9faW4gaW47Cj4+ICsJc3RydWN0IGRybV9hbWRncHVfZ2VtX2ZpbmRfYm9fb3V0IG91dDsgfTsK Pj4gKwo+PiAgICBzdHJ1Y3QgZHJtX2FtZGdwdV93YWl0X2NzX2luIHsKPj4gICAgCS8qIENvbW1h bmQgc3VibWlzc2lvbiBoYW5kbGUKPj4gICAgICAgICAgICAgKiBoYW5kbGUgZXF1YWxzIDAgbWVh bnMgbm9uZSB0byB3YWl0IGZvcgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+IGFtZC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9hbWQtZ2Z4Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==