From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 2/2] drm/amdgpu: improve VM state machine documentation Date: Sat, 1 Sep 2018 10:16:17 +0200 Message-ID: <5424812b-2efb-4643-114d-a4609a0c69a3@gmail.com> References: <20180831132741.112280-1-christian.koenig@amd.com> <20180831132741.112280-2-christian.koenig@amd.com> <2ac28ad5-ccd3-51f0-f4da-3fce40a9f20a@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2ac28ad5-ccd3-51f0-f4da-3fce40a9f20a-5C7GfCeVMHo@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: Felix Kuehling , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMDEuMDkuMjAxOCB1bSAwMTo1MSBzY2hyaWViIEZlbGl4IEt1ZWhsaW5nOgo+IFRoYW5rcyBm b3IgdGhpcy4gQSBmZXcgY29tbWVudHMgYW5kIGEgcXVlc3Rpb24gaW5saW5lLgo+Cj4gT24gMjAx OC0wOC0zMSAwOToyNyBBTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4gU2luY2Ugd2UgaGF2 ZSBhIGxvdCBvZiBGQVEgb24gdGhlIFZNIHN0YXRlIG1hY2hpbmUgdHJ5IHRvIGltcHJvdmUgdGhl Cj4+IGRvY3VtZW50YXRpb24gYnkgYWRkaW5nIGZ1bmN0aW9ucyBmb3IgZWFjaCBzdGF0ZSBtb3Zl Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmln QGFtZC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92 bS5jIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+PiAgIDEgZmlsZSBj aGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gaW5kZXggYTkyNzVhOTlkNzkzLi40MGMyMjYz NWZlZmQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92 bS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+IEBA IC0yMDQsNiArMjA0LDY5IEBAIHN0YXRpYyB1bnNpZ25lZCBhbWRncHVfdm1fYm9fc2l6ZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgbGV2ZWwpCj4+ICAgCXJldHVybiBBTURH UFVfR1BVX1BBR0VfQUxJR04oYW1kZ3B1X3ZtX251bV9lbnRyaWVzKGFkZXYsIGxldmVsKSAqIDgp Owo+PiAgIH0KPj4gICAKPj4gKy8qKgo+PiArICogYW1kZ3B1X3ZtX2JvX2V2aWN0ZWQgLSB2bV9i byBpcyBldmljdGVkCj4+ICsgKgo+PiArICogQHZtX2JvOiB2bV9ibyB3aGljaCBpcyBldmljdGVk Cj4+ICsgKgo+PiArICogU3RhdGUgZm9yIFBEcy9QVHMgYW5kIHBlciBWTSBCT3Mgd2hpY2ggYXJl IG5vdCBhdCB0aGUgbG9jYXRpb24gdGhleSBzaG91bGQKPj4gKyAqIGJlLgo+PiArICovCj4+ICtz dGF0aWMgdm9pZCBhbWRncHVfdm1fYm9fZXZpY3RlZChzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2Ug KnZtX2JvKQo+PiArewo+PiArCXN0cnVjdCBhbWRncHVfdm0gKnZtID0gdm1fYm8tPnZtOwo+PiAr CXN0cnVjdCBhbWRncHVfYm8gKmJvID0gdm1fYm8tPmJvOwo+PiArCj4+ICsJdm1fYm8tPm1vdmVk ID0gdHJ1ZTsKPj4gKwlpZiAoYm8tPnRiby50eXBlID09IHR0bV9ib190eXBlX2tlcm5lbCkKPj4g KwkJbGlzdF9tb3ZlKCZ2bV9iby0+dm1fc3RhdHVzLCAmdm0tPmV2aWN0ZWQpOwo+PiArCWVsc2UK Pj4gKwkJbGlzdF9tb3ZlX3RhaWwoJnZtX2JvLT52bV9zdGF0dXMsICZ2bS0+ZXZpY3RlZCk7Cj4+ ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogYW1kZ3B1X3ZtX2JvX3JlbG9jYXRlZCAtIHZtX2JvIGlz IHJlbG9hY3RlZAo+PiArICoKPj4gKyAqIEB2bV9ibzogdm1fYm8gd2hpY2ggaXMgcmVsb2NhdGVk Cj4+ICsgKgo+PiArICogU3RhdGUgZm9yIFBEcy9QVHMgd2hpY2ggbmVlZHMgdG8gdXBkYXRlIHRo ZWlyIHBhcmVudCBQRC4KPj4gKyAqLwo+PiArc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2JvX3JlbG9j YXRlZChzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKnZtX2JvKQo+PiArewo+PiArCWxpc3RfbW92 ZSgmdm1fYm8tPnZtX3N0YXR1cywgJnZtX2JvLT52bS0+cmVsb2NhdGVkKTsKPj4gK30KPj4gKwo+ PiArLyoqCj4+ICsgKiBhbWRncHVfdm1fYm9fbW92ZWQgLSB2bV9ibyBpcyBtb3ZlZAo+PiArICoK Pj4gKyAqIEB2bV9ibzogdm1fYm8gd2hpY2ggaXMgbW92ZWQKPj4gKyAqCj4+ICsgKiBTdGF0ZSBm b3IgcGVyIFZNIGFuZCBub3JtYWwgQk9zIHdoaWNoIGFyZSBtb3ZlZCwgYnV0IHRoYXQgY2hhbmdl IGlzIG5vdCB5ZXQKPj4gKyAqIHJlZmxlY3RlZCBpbiB0aGUgcGFnZSB0YWJsZXMuCj4gSSBoYXZl IGEgcXVlc3Rpb24gaGVyZS4gV2h5IGRvZXMgYW1kZ3B1X2NzX3ZtX2hhbmRsaW5nIGNhbGwKPiBh bWRncHVfdm1fYm9fdXBkYXRlIG1hbnVhbGx5IGZvciBpdHMgQk8gbGlzdCBlbnRyaWVzPyBXb3Vs ZG4ndCBpdCBiZQo+IGVub3VnaCB0byBqdXN0IGNhbGwgYW1kZ3B1X3ZtX2hhbmRsZV9tb3ZlZD8K Ck5vLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0aGF0IHRoZSBtYXBwaW5nIG9mIHRoZSBCTyB3YXMg bmV2ZXIgdXBkYXRlZCAKYmVjYXVzZSB0aGUgVk0gcGFnZSB0YWJsZXMgd2hlcmUgZXZpY3RlZC4K CldlIHN0aWxsIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYWxsIEJPcyBvZiB0aGUgY3VycmVudCBz dWJtaXNzaW9uIGFyZSAKdXBkYXRlZCBjb3JyZWN0bHkuCgo+Cj4+ICsgKi8KPj4gK3N0YXRpYyB2 b2lkIGFtZGdwdV92bV9ib19tb3ZlZChzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKnZtX2JvKQo+ PiArewo+PiArCXN0cnVjdCBhbWRncHVfdm0gKnZtID0gdm1fYm8tPnZtOwo+PiArCj4+ICsJc3Bp bl9sb2NrKCZ2bS0+bW92ZWRfbG9jayk7Cj4+ICsJbGlzdF9tb3ZlKCZ2bV9iby0+dm1fc3RhdHVz LCAmdm0tPm1vdmVkKTsKPj4gKwlzcGluX3VubG9jaygmdm0tPm1vdmVkX2xvY2spOwo+IElmIHZt LT5tb3ZlZF9sb2NrIHByb3RlY3RzIHRoZSBtb3ZlZCBsaXN0LCBkbyB3ZSBhbHNvIG5lZWQgdG8g dGFrZSBpdAo+IHdoZW5ldmVyIHNvbWV0aGluZyBpcyBtb3ZlZCBmcm9tIHRoYXQgbGlzdD8KCkNv cnJlY3QsIHllcy4KCj4gVGhhdCBjb3VsZCBwb3RlbnRpYWxseSBiZQo+IGFueSBsaXN0X21vdmUg b3BlcmF0aW9uIHRoYXQgdXNlcyB2bV9iby0+dm1fc3RhdHVzLiBJIGZvdW5kIG9uZSBjYXNlCj4g YmVsb3cgd2hlcmUgdGhhdCBtYXkgbm90IGJlIGhhbmRsZWQgY29ycmVjdGx5Lgo+Cj4+ICt9Cj4+ ICsKPj4gKy8qKgo+PiArICogYW1kZ3B1X3ZtX2JvX2lkbGUgLSB2bV9ibyBpcyBpZGxlCj4+ICsg Kgo+PiArICogQHZtX2JvOiB2bV9ibyB3aGljaCBpcyBub3cgaWRsZQo+PiArICoKPj4gKyAqIFN0 YXRlIGZvciBQRHMvUFRzIGFuZCBwZXIgVk0gQk9zIHdoaWNoIGhhdmUgZ29uZSB0aHJvdWdoIHRo ZSBzdGF0ZSBtYWNoaW5lCj4+ICsgKiBhbmQgYXJlIG5vdyBpZGxlLgo+PiArICovCj4+ICtzdGF0 aWMgdm9pZCBhbWRncHVfdm1fYm9faWRsZShzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKnZtX2Jv KQo+PiArewo+PiArCWxpc3RfbW92ZSgmdm1fYm8tPnZtX3N0YXR1cywgJnZtX2JvLT52bS0+aWRs ZSk7Cj4+ICsJdm1fYm8tPm1vdmVkID0gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gICAvKioKPj4gICAg KiBhbWRncHVfdm1fYm9fYmFzZV9pbml0IC0gQWRkcyBibyB0byB0aGUgbGlzdCBvZiBib3MgYXNz b2NpYXRlZCB3aXRoIHRoZSB2bQo+PiAgICAqCj4+IEBAIC0yMzIsOSArMjk1LDkgQEAgc3RhdGlj IHZvaWQgYW1kZ3B1X3ZtX2JvX2Jhc2VfaW5pdChzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKmJh c2UsCj4+ICAgCj4+ICAgCXZtLT5idWxrX21vdmVhYmxlID0gZmFsc2U7Cj4+ICAgCWlmIChiby0+ dGJvLnR5cGUgPT0gdHRtX2JvX3R5cGVfa2VybmVsKQo+PiAtCQlsaXN0X21vdmUoJmJhc2UtPnZt X3N0YXR1cywgJnZtLT5yZWxvY2F0ZWQpOwo+PiArCQlhbWRncHVfdm1fYm9fcmVsb2NhdGVkKGJh c2UpOwo+PiAgIAllbHNlCj4+IC0JCWxpc3RfbW92ZSgmYmFzZS0+dm1fc3RhdHVzLCAmdm0tPmlk bGUpOwo+PiArCQlhbWRncHVfdm1fYm9faWRsZShiYXNlKTsKPj4gICAKPj4gICAJaWYgKGJvLT5w cmVmZXJyZWRfZG9tYWlucyAmCj4+ICAgCSAgICBhbWRncHVfbWVtX3R5cGVfdG9fZG9tYWluKGJv LT50Ym8ubWVtLm1lbV90eXBlKSkKPj4gQEAgLTI0NSw4ICszMDgsNyBAQCBzdGF0aWMgdm9pZCBh bWRncHVfdm1fYm9fYmFzZV9pbml0KHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqYmFzZSwKPj4g ICAJICogaXMgY3VycmVudGx5IGV2aWN0ZWQuIGFkZCB0aGUgYm8gdG8gdGhlIGV2aWN0ZWQgbGlz dCB0byBtYWtlIHN1cmUgaXQKPj4gICAJICogaXMgdmFsaWRhdGVkIG9uIG5leHQgdm0gdXNlIHRv IGF2b2lkIGZhdWx0Lgo+PiAgIAkgKiAqLwo+PiAtCWxpc3RfbW92ZV90YWlsKCZiYXNlLT52bV9z dGF0dXMsICZ2bS0+ZXZpY3RlZCk7Cj4+IC0JYmFzZS0+bW92ZWQgPSB0cnVlOwo+PiArCWFtZGdw dV92bV9ib19ldmljdGVkKGJhc2UpOwo+PiAgIH0KPj4gICAKPj4gICAvKioKPj4gQEAgLTM0Miw5 ICs0MDQsNyBAQCBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRlX3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+ICAgCQkJYnJlYWs7Cj4+ICAgCj4+ ICAgCQlpZiAoYm8tPnRiby50eXBlICE9IHR0bV9ib190eXBlX2tlcm5lbCkgewo+PiAtCQkJc3Bp bl9sb2NrKCZ2bS0+bW92ZWRfbG9jayk7Cj4+IC0JCQlsaXN0X21vdmUoJmJvX2Jhc2UtPnZtX3N0 YXR1cywgJnZtLT5tb3ZlZCk7Cj4+IC0JCQlzcGluX3VubG9jaygmdm0tPm1vdmVkX2xvY2spOwo+ PiArCQkJYW1kZ3B1X3ZtX2JvX21vdmVkKGJvX2Jhc2UpOwo+PiAgIAkJfSBlbHNlIHsKPj4gICAJ CQlpZiAodm0tPnVzZV9jcHVfZm9yX3VwZGF0ZSkKPj4gICAJCQkJciA9IGFtZGdwdV9ib19rbWFw KGJvLCBOVUxMKTsKPj4gQEAgLTM1Miw3ICs0MTIsNyBAQCBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRl X3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0s Cj4+ICAgCQkJCXIgPSBhbWRncHVfdHRtX2FsbG9jX2dhcnQoJmJvLT50Ym8pOwo+PiAgIAkJCWlm IChyKQo+PiAgIAkJCQlicmVhazsKPj4gLQkJCWxpc3RfbW92ZSgmYm9fYmFzZS0+dm1fc3RhdHVz LCAmdm0tPnJlbG9jYXRlZCk7Cj4+ICsJCQlhbWRncHVfdm1fYm9fcmVsb2NhdGVkKGJvX2Jhc2Up Owo+PiAgIAkJfQo+PiAgIAl9Cj4+ICAgCj4+IEBAIC0xMTIzLDggKzExODMsNyBAQCBpbnQgYW1k Z3B1X3ZtX3VwZGF0ZV9kaXJlY3RvcmllcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4g ICAJCWJvX2Jhc2UgPSBsaXN0X2ZpcnN0X2VudHJ5KCZ2bS0+cmVsb2NhdGVkLAo+PiAgIAkJCQkJ ICAgc3RydWN0IGFtZGdwdV92bV9ib19iYXNlLAo+PiAgIAkJCQkJICAgdm1fc3RhdHVzKTsKPj4g LQkJYm9fYmFzZS0+bW92ZWQgPSBmYWxzZTsKPj4gLQkJbGlzdF9tb3ZlKCZib19iYXNlLT52bV9z dGF0dXMsICZ2bS0+aWRsZSk7Cj4+ICsJCWFtZGdwdV92bV9ib19pZGxlKGJvX2Jhc2UpOwo+PiAg IAo+PiAgIAkJYm8gPSBib19iYXNlLT5iby0+cGFyZW50Owo+PiAgIAkJaWYgKCFibykKPj4gQEAg LTEyNDMsNyArMTMwMiw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9oYW5kbGVfaHVnZV9wYWdl cyhzdHJ1Y3QgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwLAo+PiAgIAkJaWYgKGVudHJ5LT5o dWdlKSB7Cj4+ICAgCQkJLyogQWRkIHRoZSBlbnRyeSB0byB0aGUgcmVsb2NhdGVkIGxpc3QgdG8g dXBkYXRlIGl0LiAqLwo+PiAgIAkJCWVudHJ5LT5odWdlID0gZmFsc2U7Cj4+IC0JCQlsaXN0X21v dmUoJmVudHJ5LT5iYXNlLnZtX3N0YXR1cywgJnAtPnZtLT5yZWxvY2F0ZWQpOwo+PiArCQkJYW1k Z3B1X3ZtX2JvX3JlbG9jYXRlZCgmZW50cnktPmJhc2UpOwo+PiAgIAkJfQo+PiAgIAkJcmV0dXJu Owo+PiAgIAl9Cj4+IEBAIC0xNzQ2LDkgKzE4MDUsOSBAQCBpbnQgYW1kZ3B1X3ZtX2JvX3VwZGF0 ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4gICAJCXVpbnQzMl90IG1lbV90eXBlID0g Ym8tPnRiby5tZW0ubWVtX3R5cGU7Cj4+ICAgCj4+ICAgCQlpZiAoIShiby0+cHJlZmVycmVkX2Rv bWFpbnMgJiBhbWRncHVfbWVtX3R5cGVfdG9fZG9tYWluKG1lbV90eXBlKSkpCj4+IC0JCQlsaXN0 X2FkZF90YWlsKCZib192YS0+YmFzZS52bV9zdGF0dXMsICZ2bS0+ZXZpY3RlZCk7Cj4+ICsJCQlh bWRncHVfdm1fYm9fZXZpY3RlZCgmYm9fdmEtPmJhc2UpOwo+PiAgIAkJZWxzZQo+PiAtCQkJbGlz dF9hZGQoJmJvX3ZhLT5iYXNlLnZtX3N0YXR1cywgJnZtLT5pZGxlKTsKPj4gKwkJCWFtZGdwdV92 bV9ib19pZGxlKCZib192YS0+YmFzZSk7Cj4gVGhlcmUgaXMgYSBzbWFsbCBjaGFuZ2UgaW4gYmVo YXZpb3VyIGhlcmUgZm9yIGNsZWFyaW5nCj4gYm9fdmEtPmJhc2UubW92ZWQuIE5vdCBzdXJlIGlm IGl0IG1hdHRlcnMuCgpVc2luZyBsaXN0X2FkZCBpcyBtaW5pbWFsIG1vcmUgZWZmaWNpZW50LgoK Pgo+PiAgIAl9Cj4+ICAgCj4+ICAgCWxpc3Rfc3BsaWNlX2luaXQoJmJvX3ZhLT5pbnZhbGlkcywg JmJvX3ZhLT52YWxpZHMpOwo+PiBAQCAtMjQ3MiwyOCArMjUzMSwyMCBAQCB2b2lkIGFtZGdwdV92 bV9ib19pbnZhbGlkYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiAgIAo+PiAgIAls aXN0X2Zvcl9lYWNoX2VudHJ5KGJvX2Jhc2UsICZiby0+dmEsIGJvX2xpc3QpIHsKPj4gICAJCXN0 cnVjdCBhbWRncHVfdm0gKnZtID0gYm9fYmFzZS0+dm07Cj4+IC0JCWJvb2wgd2FzX21vdmVkID0g Ym9fYmFzZS0+bW92ZWQ7Cj4+ICAgCj4+IC0JCWJvX2Jhc2UtPm1vdmVkID0gdHJ1ZTsKPj4gICAJ CWlmIChldmljdGVkICYmIGJvLT50Ym8ucmVzdiA9PSB2bS0+cm9vdC5iYXNlLmJvLT50Ym8ucmVz dikgewo+PiAtCQkJaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4+IC0J CQkJbGlzdF9tb3ZlKCZib19iYXNlLT52bV9zdGF0dXMsICZ2bS0+ZXZpY3RlZCk7Cj4+IC0JCQll bHNlCj4+IC0JCQkJbGlzdF9tb3ZlX3RhaWwoJmJvX2Jhc2UtPnZtX3N0YXR1cywKPj4gLQkJCQkJ ICAgICAgICZ2bS0+ZXZpY3RlZCk7Cj4+ICsJCQlhbWRncHVfdm1fYm9fZXZpY3RlZChib19iYXNl KTsKPiBJIHRoaW5rIGhlcmUgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBCTyB3YXMgb24gdGhlIG1v dmVkIGxpc3QuIEkgdGhpbmsKPiB0aGF0IG1lYW5zIGFtZGdwdV92bV9ib19ldmljdGVkIHNob3Vs ZCB0YWtlIHRoZSBtb3ZlZF9sb2NrIGp1c3QgaW4gY2FzZS4KCkdvb2QgcG9pbnQsIHByb2JhYmx5 IGJlc3QgaWYgSSBzcGxpdCB1cCB0aGUgbW92ZWQgbGlzdCBpbnRvIHBlciBWTSBCT3MgCmFuZCBh bGwgb3RoZXIgQk9zLgoKVGhhdCBzaG91bGQgbWFrZSB0aGUgbG9ja2luZyBtdWNoIG1vcmUgY2xl YXIuCgpSZWdhcmRzLApDaHJpc3RpYW4uCgo+Cj4gUmVnYXJkcywKPiAgwqAgRmVsaXgKPgo+PiAg IAkJCWNvbnRpbnVlOwo+PiAgIAkJfQo+PiAgIAo+PiAtCQlpZiAod2FzX21vdmVkKQo+PiArCQlp ZiAoYm9fYmFzZS0+bW92ZWQpCj4+ICAgCQkJY29udGludWU7Cj4+ICAgCj4+IC0JCWlmIChiby0+ dGJvLnR5cGUgPT0gdHRtX2JvX3R5cGVfa2VybmVsKSB7Cj4+IC0JCQlsaXN0X21vdmUoJmJvX2Jh c2UtPnZtX3N0YXR1cywgJnZtLT5yZWxvY2F0ZWQpOwo+PiAtCQl9IGVsc2Ugewo+PiAtCQkJc3Bp bl9sb2NrKCZib19iYXNlLT52bS0+bW92ZWRfbG9jayk7Cj4+IC0JCQlsaXN0X21vdmUoJmJvX2Jh c2UtPnZtX3N0YXR1cywgJnZtLT5tb3ZlZCk7Cj4+IC0JCQlzcGluX3VubG9jaygmYm9fYmFzZS0+ dm0tPm1vdmVkX2xvY2spOwo+PiAtCQl9Cj4+ICsJCWJvX2Jhc2UtPm1vdmVkID0gdHJ1ZTsKPj4g KwkJaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4+ICsJCQlhbWRncHVf dm1fYm9fcmVsb2NhdGVkKGJvX2Jhc2UpOwo+PiArCQllbHNlCj4+ICsJCQlhbWRncHVfdm1fYm9f bW92ZWQoYm9fYmFzZSk7Cj4+ICAgCX0KPj4gICB9Cj4+ICAgCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngK