From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 2/4] drm/amdgpu: return -ENODEV to user space when vram is lost v2 Date: Wed, 24 May 2017 10:20:46 +0800 Message-ID: <5924EDFE.4010102@amd.com> References: <1494926750-1081-1-git-send-email-David1.Zhou@amd.com> <1494926750-1081-2-git-send-email-David1.Zhou@amd.com> <69717c0b-b2c1-589a-c466-5d6be9518eda@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <69717c0b-b2c1-589a-c466-5d6be9518eda-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org> 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?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "Deucher, Alexander" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" CgpPbiAyMDE35bm0MDXmnIgyM+aXpSAyMzoxNiwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBB bSAyMy4wNS4yMDE3IHVtIDE3OjA4IHNjaHJpZWIgRGV1Y2hlciwgQWxleGFuZGVyOgo+Pj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+IEZyb206IGFtZC1nZnggW21haWx0bzphbWQtZ2Z4 LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXSBPbiBCZWhhbGYKPj4+IE9mIENodW5taW5n IFpob3UKPj4+IFNlbnQ6IFR1ZXNkYXksIE1heSAxNiwgMjAxNyA1OjI2IEFNCj4+PiBUbzogYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IENjOiBaaG91LCBEYXZpZChDaHVuTWluZykK Pj4+IFN1YmplY3Q6IFtQQVRDSCAyLzRdIGRybS9hbWRncHU6IHJldHVybiAtRU5PREVWIHRvIHVz ZXIgc3BhY2Ugd2hlbgo+Pj4gdnJhbSBpcyBsb3N0IHYyCj4+Pgo+Pj4gYmVsb3cgaW9jdGwgd2ls bCByZXR1cm4gLUVOT0RFVjoKPj4+IGFtZGdwdV9jc19pb2N0bAo+Pj4gYW1kZ3B1X2NzX3dhaXRf aW9jdGwKPj4+IGFtZGdwdV9jc193YWl0X2ZlbmNlc19pb2N0bAo+Pj4gYW1kZ3B1X2dlbV92YV9p b2N0bAo+Pj4gYW1kZ3B1X2luZm9faW9jdGwKPj4gRG8gd2Ugd2FudCB0byBibG9jayB0aGUgaW5m byBpb2N0bD8gIElzbid0IHRoYXQgd2hlcmUgdGhlIGxvc3QgCj4+IGNvbnRleHQgcXVlcnkgaXM/ Cj4KPiBObywgdGhhdCdzIGFtZGdwdV9jdHhfaW9jdGwuCj4KPiBCdXQgSSB0aGluayB0aGUgY29u Y2x1c2lvbiBpcyB0aGF0IHdlIHdhbnQgdG8gbW92ZSB0aGUgdnJhbV9sb3N0IAo+IGNvdW50ZXIg dG8gYmUgcGVyIENUWCBhbmQgbm90IHBlciBkZXZpY2UuClllcywgTW9uayBpcyB3b3JraW5nIG9u IGl0IGZvciB2aXJ0IGNhc2UsIGFmdGVyIGl0LCBJIHRoaW5rIHdlIGNhbiByZXVzZSBpdC4KClJl Z2FyZHMsCkRhdmlkIHpob3UKPgo+IENocmlzdGlhbi4KPgo+Pgo+PiBBbGV4Cj4+Cj4+PiB2Mjog b25seSBmb3IgbWFwIGFuZCByZXBsYWNlIGNhc2VzIGluIGFtZGdwdV9nZW1fdmFfaW9jdGwKPj4+ Cj4+PiBDaGFuZ2UtSWQ6IEk4OTcwY2RlMzMwMWI3Y2ZlYjQyNjNjYzBmMGU1NGFlY2UyMTVjOThl Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHVubWluZyBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPgo+ Pj4gLS0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICB8 ICA0ICsrKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgICAg IHwgIDkgKysrKysrKysrCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k ZXZpY2UuYyB8ICA0ICsrKy0KPj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2dlbS5jICAgIHwgIDUgKysrKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2ttcy5jICAgIHwgMTAgKysrKysrKysrKwo+Pj4gICA1IGZpbGVzIGNoYW5nZWQsIDMxIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1LmgKPj4+IGluZGV4IGY5ZGEyMTUuLmRjZDYyMDMgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+IEBAIC04NTUsNiArODU1LDcgQEAgc3RydWN0IGFt ZGdwdV9mcHJpdiB7Cj4+PiAgICAgICBzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3IgICAgY3R4X21ncjsK Pj4+ICAgICAgIHNwaW5sb2NrX3QgICAgICAgIHNlbV9oYW5kbGVzX2xvY2s7Cj4+PiAgICAgICBz dHJ1Y3QgaWRyICAgICAgICBzZW1faGFuZGxlczsKPj4+ICsgICAgdTMyICAgICAgICAgICAgdnJh bV9sb3N0X2NvdW50ZXI7Cj4+PiAgIH07Cj4+Pgo+Pj4gICAvKgo+Pj4gQEAgLTE2MDcsNiArMTYw OCw3IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNlIHsKPj4+ICAgICAgIGF0b21pYzY0X3QgICAgICAg ICAgICBudW1fYnl0ZXNfbW92ZWQ7Cj4+PiAgICAgICBhdG9taWM2NF90ICAgICAgICAgICAgbnVt X2V2aWN0aW9uczsKPj4+ICAgICAgIGF0b21pY190ICAgICAgICAgICAgZ3B1X3Jlc2V0X2NvdW50 ZXI7Cj4+PiArICAgIGF0b21pY190ICAgICAgICAgICAgdnJhbV9sb3N0X2NvdW50ZXI7Cj4+Pgo+ Pj4gICAgICAgLyogZGF0YSBmb3IgYnVmZmVyIG1pZ3JhdGlvbiB0aHJvdHRsaW5nICovCj4+PiAg ICAgICBzdHJ1Y3Qgewo+Pj4gQEAgLTIwMDUsNiArMjAwNyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZAo+Pj4gYW1kZ3B1X3VucmVnaXN0ZXJfYXRweF9oYW5kbGVyKHZvaWQpIHt9Cj4+PiAgIGV4dGVy biBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgYW1kZ3B1X2lvY3Rsc19rbXNbXTsKPj4+ICAg ZXh0ZXJuIGNvbnN0IGludCBhbWRncHVfbWF4X2ttc19pb2N0bDsKPj4+Cj4+PiArYm9vbCBhbWRn cHVfa21zX3ZyYW1fbG9zdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICsgICAgICAg ICAgICAgIHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2KTsKPj4+ICAgaW50IGFtZGdwdV9kcml2 ZXJfbG9hZF9rbXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyAKPj4+IGZs YWdzKTsKPj4+ICAgaW50IGFtZGdwdV9kcml2ZXJfdW5sb2FkX2ttcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPj4+ICAgdm9pZCBhbWRncHVfZHJpdmVyX2xhc3RjbG9zZV9rbXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2NzLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nz LmMKPj4+IGluZGV4IGI4MDM0MTIuLjkxMWFhMDIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+IEBAIC0xMDk3LDYgKzEwOTcsNyBAQCBzdGF0aWMgaW50 IGFtZGdwdV9jc19zdWJtaXQoc3RydWN0Cj4+PiBhbWRncHVfY3NfcGFyc2VyICpwLAo+Pj4gICBp bnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0 cnVjdCAKPj4+IGRybV9maWxlCj4+PiAqZmlscCkKPj4+ICAgewo+Pj4gICAgICAgc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gKyAgICBzdHJ1Y3QgYW1k Z3B1X2Zwcml2ICpmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2Owo+Pj4gICAgICAgdW5pb24gZHJt X2FtZGdwdV9jcyAqY3MgPSBkYXRhOwo+Pj4gICAgICAgc3RydWN0IGFtZGdwdV9jc19wYXJzZXIg cGFyc2VyID0ge307Cj4+PiAgICAgICBib29sIHJlc2VydmVkX2J1ZmZlcnMgPSBmYWxzZTsKPj4+ IEBAIC0xMTA0LDYgKzExMDUsOCBAQCBpbnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQKPj4+ICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4+Pgo+Pj4g ICAgICAgaWYgKCFhZGV2LT5hY2NlbF93b3JraW5nKQo+Pj4gICAgICAgICAgIHJldHVybiAtRUJV U1k7Cj4+PiArICAgIGlmIChhbWRncHVfa21zX3ZyYW1fbG9zdChhZGV2LCBmcHJpdikpCj4+PiAr ICAgICAgICByZXR1cm4gLUVOT0RFVjsKPj4+Cj4+PiAgICAgICBwYXJzZXIuYWRldiA9IGFkZXY7 Cj4+PiAgICAgICBwYXJzZXIuZmlscCA9IGZpbHA7Cj4+PiBAQCAtMTE2NSwxMiArMTE2OCwxNSBA QCBpbnQgYW1kZ3B1X2NzX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UKPj4+ICpkZXYsIHZv aWQgKmRhdGEsCj4+PiAgIHsKPj4+ICAgICAgIHVuaW9uIGRybV9hbWRncHVfd2FpdF9jcyAqd2Fp dCA9IGRhdGE7Cj4+PiAgICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4+PiArICAgIHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gZmlscC0+ZHJp dmVyX3ByaXY7Cj4+PiAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQgPSBhbWRncHVfZ2VtX3Rp bWVvdXQod2FpdC0+aW4udGltZW91dCk7Cj4+PiAgICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcgPSBOVUxMOwo+Pj4gICAgICAgc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKPj4+ICAgICAgIHN0 cnVjdCBmZW5jZSAqZmVuY2U7Cj4+PiAgICAgICBsb25nIHI7Cj4+Pgo+Pj4gKyAgICBpZiAoYW1k Z3B1X2ttc192cmFtX2xvc3QoYWRldiwgZnByaXYpKQo+Pj4gKyAgICAgICAgcmV0dXJuIC1FTk9E RVY7Cj4+PiAgICAgICByID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIHdhaXQtPmluLmlwX3R5 cGUsIHdhaXQtCj4+Pj4gaW4uaXBfaW5zdGFuY2UsCj4+PiAgICAgICAgICAgICAgICAgICAgICB3 YWl0LT5pbi5yaW5nLCAmcmluZyk7Cj4+PiAgICAgICBpZiAocikKPj4+IEBAIC0xMzQ0LDEyICsx MzUwLDE1IEBAIGludCBhbWRncHVfY3Nfd2FpdF9mZW5jZXNfaW9jdGwoc3RydWN0Cj4+PiBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+PiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbHApCj4+PiAgIHsKPj4+ICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4+ICsgICAgc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYg PSBmaWxwLT5kcml2ZXJfcHJpdjsKPj4+ICAgICAgIHVuaW9uIGRybV9hbWRncHVfd2FpdF9mZW5j ZXMgKndhaXQgPSBkYXRhOwo+Pj4gICAgICAgdWludDMyX3QgZmVuY2VfY291bnQgPSB3YWl0LT5p bi5mZW5jZV9jb3VudDsKPj4+ICAgICAgIHN0cnVjdCBkcm1fYW1kZ3B1X2ZlbmNlICpmZW5jZXNf dXNlcjsKPj4+ICAgICAgIHN0cnVjdCBkcm1fYW1kZ3B1X2ZlbmNlICpmZW5jZXM7Cj4+PiAgICAg ICBpbnQgcjsKPj4+Cj4+PiArICAgIGlmIChhbWRncHVfa21zX3ZyYW1fbG9zdChhZGV2LCBmcHJp dikpCj4+PiArICAgICAgICByZXR1cm4gLUVOT0RFVjsKPj4+ICAgICAgIC8qIEdldCB0aGUgZmVu Y2VzIGZyb20gdXNlcnNwYWNlICovCj4+PiAgICAgICBmZW5jZXMgPSBrbWFsbG9jX2FycmF5KGZl bmNlX2NvdW50LCBzaXplb2Yoc3RydWN0Cj4+PiBkcm1fYW1kZ3B1X2ZlbmNlKSwKPj4+ICAgICAg ICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kZXZpY2UuYwo+Pj4gaW5kZXggYzU2YWU0YS4uMmYwZmNmOCAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+PiBAQCAtMjkxMyw4 ICsyOTEzLDEwIEBAIGludCBhbWRncHVfZ3B1X3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlCj4+ PiAqYWRldikKPj4+ICAgICAgICAgICAgICAgaWYgKHIpCj4+PiAgICAgICAgICAgICAgICAgICBn b3RvIG91dDsKPj4+ICAgICAgICAgICAgICAgdnJhbV9sb3N0ID0gYW1kZ3B1X2NoZWNrX3ZyYW1f bG9zdChhZGV2KTsKPj4+IC0gICAgICAgICAgICBpZiAodnJhbV9sb3N0KQo+Pj4gKyAgICAgICAg ICAgIGlmICh2cmFtX2xvc3QpIHsKPj4+ICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigiVlJB TSBpcyBsb3N0IVxuIik7Cj4+PiArICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJmFkZXYtPnZy YW1fbG9zdF9jb3VudGVyKTsKPj4+ICsgICAgICAgICAgICB9Cj4+PiAgICAgICAgICAgICAgIHIg PSBhbWRncHVfdHRtX3JlY292ZXJfZ2FydChhZGV2KTsKPj4+ICAgICAgICAgICAgICAgaWYgKHIp Cj4+PiAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+PiBpbmRleCBkODI3NWVmLi44M2JjOTRjIDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKPj4+IEBAIC04MDIsNiAr ODAyLDExIEBAIGludCBhbWRncHVfZ2VtX3ZhX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4+PiB2b2lkICpkYXRhLAo+Pj4gICAgICAgICAgICAgICBhcmdzLT5vcGVyYXRpb24pOwo+Pj4g ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gICAgICAgfQo+Pj4gKyAgICBpZiAoKGFyZ3Mt Pm9wZXJhdGlvbiA9PSBBTURHUFVfVkFfT1BfTUFQKSB8fAo+Pj4gKyAgICAgICAgKGFyZ3MtPm9w ZXJhdGlvbiA9PSBBTURHUFVfVkFfT1BfUkVQTEFDRSkpIHsKPj4+ICsgICAgICAgIGlmIChhbWRn cHVfa21zX3ZyYW1fbG9zdChhZGV2LCBmcHJpdikpCj4+PiArICAgICAgICAgICAgcmV0dXJuIC1F Tk9ERVY7Cj4+PiArICAgIH0KPj4+Cj4+PiAgICAgICBJTklUX0xJU1RfSEVBRCgmbGlzdCk7Cj4+ PiAgICAgICBpZiAoKGFyZ3MtPm9wZXJhdGlvbiAhPSBBTURHUFVfVkFfT1BfQ0xFQVIpICYmCj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jCj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+Pj4gaW5kZXggMzY4 ODI5YS4uYTIzMWFhMSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9rbXMuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2ttcy5jCj4+PiBAQCAtMjM1LDYgKzIzNSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2Zpcm13YXJl X2luZm8oc3RydWN0Cj4+PiBkcm1fYW1kZ3B1X2luZm9fZmlybXdhcmUgKmZ3X2luZm8sCj4+PiAg IHN0YXRpYyBpbnQgYW1kZ3B1X2luZm9faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwgCj4+PiBzdHJ1Y3QKPj4+IGRybV9maWxlICpmaWxwKQo+Pj4gICB7Cj4+PiAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+PiArICAg IHN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gZmlscC0+ZHJpdmVyX3ByaXY7Cj4+PiAgICAg ICBzdHJ1Y3QgZHJtX2FtZGdwdV9pbmZvICppbmZvID0gZGF0YTsKPj4+ICAgICAgIHN0cnVjdCBh bWRncHVfbW9kZV9pbmZvICptaW5mbyA9ICZhZGV2LT5tb2RlX2luZm87Cj4+PiAgICAgICB2b2lk IF9fdXNlciAqb3V0ID0gKHZvaWQgX191c2VyIAo+Pj4gKikodWludHB0cl90KWluZm8tPnJldHVy bl9wb2ludGVyOwo+Pj4gQEAgLTI0Nyw2ICsyNDgsOCBAQCBzdGF0aWMgaW50IGFtZGdwdV9pbmZv X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlIAo+Pj4gKmRldiwKPj4+IHZvaWQgKmRhdGEsIHN0cnVj dCBkcm1fZmlsZQo+Pj4KPj4+ICAgICAgIGlmICghaW5mby0+cmV0dXJuX3NpemUgfHwgIWluZm8t PnJldHVybl9wb2ludGVyKQo+Pj4gICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKyAgICBp ZiAoYW1kZ3B1X2ttc192cmFtX2xvc3QoYWRldiwgZnByaXYpKQo+Pj4gKyAgICAgICAgcmV0dXJu IC1FTk9ERVY7Cj4+Pgo+Pj4gICAgICAgc3dpdGNoIChpbmZvLT5xdWVyeSkgewo+Pj4gICAgICAg Y2FzZSBBTURHUFVfSU5GT19WSVJUVUFMX1JBTkdFOiB7Cj4+PiBAQCAtNzc5LDYgKzc4MiwxMiBA QCB2b2lkIGFtZGdwdV9kcml2ZXJfbGFzdGNsb3NlX2ttcyhzdHJ1Y3QKPj4+IGRybV9kZXZpY2Ug KmRldikKPj4+ICAgICAgIHZnYV9zd2l0Y2hlcm9vX3Byb2Nlc3NfZGVsYXllZF9zd2l0Y2goKTsK Pj4+ICAgfQo+Pj4KPj4+ICtib29sIGFtZGdwdV9rbXNfdnJhbV9sb3N0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+Pj4gKyAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9mcHJpdiAqZnBy aXYpCj4+PiArewo+Pj4gKyAgICByZXR1cm4gZnByaXYtPnZyYW1fbG9zdF9jb3VudGVyICE9IGF0 b21pY19yZWFkKCZhZGV2LQo+Pj4+IHZyYW1fbG9zdF9jb3VudGVyKTsKPj4+ICt9Cj4+PiArCj4+ PiAgIC8qKgo+Pj4gICAgKiBhbWRncHVfZHJpdmVyX29wZW5fa21zIC0gZHJtIGNhbGxiYWNrIGZv ciBvcGVuCj4+PiAgICAqCj4+PiBAQCAtODMzLDYgKzg0Miw3IEBAIGludCBhbWRncHVfZHJpdmVy X29wZW5fa21zKHN0cnVjdCBkcm1fZGV2aWNlCj4+PiAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdikKPj4+Cj4+PiAgICAgICBhbWRncHVfY3R4X21ncl9pbml0KCZmcHJpdi0+Y3R4X21n cik7Cj4+Pgo+Pj4gKyAgICBmcHJpdi0+dnJhbV9sb3N0X2NvdW50ZXIgPSBhdG9taWNfcmVhZCgm YWRldi0KPj4+PiB2cmFtX2xvc3RfY291bnRlcik7Cj4+PiAgICAgICBmaWxlX3ByaXYtPmRyaXZl cl9wcml2ID0gZnByaXY7Cj4+Pgo+Pj4gICBvdXRfc3VzcGVuZDoKPj4+IC0tIAo+Pj4gMS45LjEK Pj4+Cj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1n ZngKPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4g YW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4K PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdm eCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==