From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH] drm/amdgpu: improve VM state machine documentation v2 Date: Mon, 3 Sep 2018 17:09:57 +0800 Message-ID: <5B8CFA65.3050709@amd.com> References: <20180903090830.3777-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180903090830.3777-1-christian.koenig-5C7GfCeVMHo@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==?= , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gMDkvMDMvMjAxOCAwNTowOCBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBTaW5jZSB3 ZSBoYXZlIGEgbG90IG9mIEZBUSBvbiB0aGUgVk0gc3RhdGUgbWFjaGluZSB0cnkgdG8gaW1wcm92 ZSB0aGUKPiBkb2N1bWVudGF0aW9uIGJ5IGFkZGluZyBmdW5jdGlvbnMgZm9yIGVhY2ggc3RhdGUg bW92ZS4KPgo+IHYyOiBmaXggdHlwbyBpbiBhbWRncHVfdm1fYm9faW52YWxpZGF0ZWQsIHVzZSBh bWRncHVfdm1fYm9fcmVsb2NhdGVkIGluCj4gICAgICBvbmUgbW9yZSBwbGFjZSBhcyB3ZWxsLgo+ Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQu Y29tPgpSZXZpZXdlZC1ieTogSnVud2VpIFpoYW5nIDxKZXJyeS5aaGFuZ0BhbWQuY29tPgoKPiAt LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIHwgMTQxICsrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDEwOSBpbnNl cnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5jCj4gaW5kZXggNjU5NzdlN2M5NGRjLi4xZjc5YTBkZGM3OGEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+IEBAIC0yMDQsNiArMjA0LDk1IEBAIHN0 YXRpYyB1bnNpZ25lZCBhbWRncHVfdm1fYm9fc2l6ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdW5zaWduZWQgbGV2ZWwpCj4gICAJcmV0dXJuIEFNREdQVV9HUFVfUEFHRV9BTElHTihhbWRn cHVfdm1fbnVtX2VudHJpZXMoYWRldiwgbGV2ZWwpICogOCk7Cj4gICB9Cj4KPiArLyoqCj4gKyAq IGFtZGdwdV92bV9ib19ldmljdGVkIC0gdm1fYm8gaXMgZXZpY3RlZAo+ICsgKgo+ICsgKiBAdm1f Ym86IHZtX2JvIHdoaWNoIGlzIGV2aWN0ZWQKPiArICoKPiArICogU3RhdGUgZm9yIFBEcy9QVHMg YW5kIHBlciBWTSBCT3Mgd2hpY2ggYXJlIG5vdCBhdCB0aGUgbG9jYXRpb24gdGhleSBzaG91bGQK PiArICogYmUuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBhbWRncHVfdm1fYm9fZXZpY3RlZChzdHJ1 Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKnZtX2JvKQo+ICt7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3ZtICp2 bSA9IHZtX2JvLT52bTsKPiArCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gdm1fYm8tPmJvOwo+ICsK PiArCXZtX2JvLT5tb3ZlZCA9IHRydWU7Cj4gKwlpZiAoYm8tPnRiby50eXBlID09IHR0bV9ib190 eXBlX2tlcm5lbCkKPiArCQlsaXN0X21vdmUoJnZtX2JvLT52bV9zdGF0dXMsICZ2bS0+ZXZpY3Rl ZCk7Cj4gKwllbHNlCj4gKwkJbGlzdF9tb3ZlX3RhaWwoJnZtX2JvLT52bV9zdGF0dXMsICZ2bS0+ ZXZpY3RlZCk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBhbWRncHVfdm1fYm9fcmVsb2NhdGVkIC0g dm1fYm8gaXMgcmVsb2FjdGVkCj4gKyAqCj4gKyAqIEB2bV9ibzogdm1fYm8gd2hpY2ggaXMgcmVs b2NhdGVkCj4gKyAqCj4gKyAqIFN0YXRlIGZvciBQRHMvUFRzIHdoaWNoIG5lZWRzIHRvIHVwZGF0 ZSB0aGVpciBwYXJlbnQgUEQuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBhbWRncHVfdm1fYm9fcmVs b2NhdGVkKHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqdm1fYm8pCj4gK3sKPiArCWxpc3RfbW92 ZSgmdm1fYm8tPnZtX3N0YXR1cywgJnZtX2JvLT52bS0+cmVsb2NhdGVkKTsKPiArfQo+ICsKPiAr LyoqCj4gKyAqIGFtZGdwdV92bV9ib19tb3ZlZCAtIHZtX2JvIGlzIG1vdmVkCj4gKyAqCj4gKyAq IEB2bV9ibzogdm1fYm8gd2hpY2ggaXMgbW92ZWQKPiArICoKPiArICogU3RhdGUgZm9yIHBlciBW TSBCT3Mgd2hpY2ggYXJlIG1vdmVkLCBidXQgdGhhdCBjaGFuZ2UgaXMgbm90IHlldCByZWZsZWN0 ZWQKPiArICogaW4gdGhlIHBhZ2UgdGFibGVzLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgYW1kZ3B1 X3ZtX2JvX21vdmVkKHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqdm1fYm8pCj4gK3sKPiArCWxp c3RfbW92ZSgmdm1fYm8tPnZtX3N0YXR1cywgJnZtX2JvLT52bS0+bW92ZWQpOwo+ICt9Cj4gKwo+ ICsvKioKPiArICogYW1kZ3B1X3ZtX2JvX2lkbGUgLSB2bV9ibyBpcyBpZGxlCj4gKyAqCj4gKyAq IEB2bV9ibzogdm1fYm8gd2hpY2ggaXMgbm93IGlkbGUKPiArICoKPiArICogU3RhdGUgZm9yIFBE cy9QVHMgYW5kIHBlciBWTSBCT3Mgd2hpY2ggaGF2ZSBnb25lIHRocm91Z2ggdGhlIHN0YXRlIG1h Y2hpbmUKPiArICogYW5kIGFyZSBub3cgaWRsZS4KPiArICovCj4gK3N0YXRpYyB2b2lkIGFtZGdw dV92bV9ib19pZGxlKHN0cnVjdCBhbWRncHVfdm1fYm9fYmFzZSAqdm1fYm8pCj4gK3sKPiArCWxp c3RfbW92ZSgmdm1fYm8tPnZtX3N0YXR1cywgJnZtX2JvLT52bS0+aWRsZSk7Cj4gKwl2bV9iby0+ bW92ZWQgPSBmYWxzZTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGFtZGdwdV92bV9ib19pbnZhbGlk YXRlZCAtIHZtX2JvIGlzIGludmFsaWRhdGVkCj4gKyAqCj4gKyAqIEB2bV9ibzogdm1fYm8gd2hp Y2ggaXMgbm93IGludmFsaWRhdGVkCj4gKyAqCj4gKyAqIFN0YXRlIGZvciBub3JtYWwgQk9zIHdo aWNoIGFyZSBpbnZhbGlkYXRlZCBhbmQgdGhhdCBjaGFuZ2Ugbm90IHlldCByZWZsZWN0ZWQKPiAr ICogaW4gdGhlIFBUcy4KPiArICovCj4gK3N0YXRpYyB2b2lkIGFtZGdwdV92bV9ib19pbnZhbGlk YXRlZChzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKnZtX2JvKQo+ICt7Cj4gKwlzcGluX2xvY2so JnZtX2JvLT52bS0+aW52YWxpZGF0ZWRfbG9jayk7Cj4gKwlsaXN0X21vdmUoJnZtX2JvLT52bV9z dGF0dXMsICZ2bV9iby0+dm0tPmludmFsaWRhdGVkKTsKPiArCXNwaW5fdW5sb2NrKCZ2bV9iby0+ dm0tPmludmFsaWRhdGVkX2xvY2spOwo+ICt9Cj4gKwo+ICsvKioKPiArICogYW1kZ3B1X3ZtX2Jv X2RvbmUgLSB2bV9ibyBpcyBkb25lCj4gKyAqCj4gKyAqIEB2bV9ibzogdm1fYm8gd2hpY2ggaXMg bm93IGRvbmUKPiArICoKPiArICogU3RhdGUgZm9yIG5vcm1hbCBCT3Mgd2hpY2ggYXJlIGludmFs aWRhdGVkIGFuZCB0aGF0IGNoYW5nZSBoYXMgYmVlbiB1cGRhdGVkCj4gKyAqIGluIHRoZSBQVHMu Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBhbWRncHVfdm1fYm9fZG9uZShzdHJ1Y3QgYW1kZ3B1X3Zt X2JvX2Jhc2UgKnZtX2JvKQo+ICt7Cj4gKwlzcGluX2xvY2soJnZtX2JvLT52bS0+aW52YWxpZGF0 ZWRfbG9jayk7Cj4gKwlsaXN0X2RlbF9pbml0KCZ2bV9iby0+dm1fc3RhdHVzKTsKPiArCXNwaW5f dW5sb2NrKCZ2bV9iby0+dm0tPmludmFsaWRhdGVkX2xvY2spOwo+ICt9Cj4gKwo+ICAgLyoqCj4g ICAgKiBhbWRncHVfdm1fYm9fYmFzZV9pbml0IC0gQWRkcyBibyB0byB0aGUgbGlzdCBvZiBib3Mg YXNzb2NpYXRlZCB3aXRoIHRoZSB2bQo+ICAgICoKPiBAQCAtMjMyLDkgKzMyMSw5IEBAIHN0YXRp YyB2b2lkIGFtZGdwdV92bV9ib19iYXNlX2luaXQoc3RydWN0IGFtZGdwdV92bV9ib19iYXNlICpi YXNlLAo+Cj4gICAJdm0tPmJ1bGtfbW92ZWFibGUgPSBmYWxzZTsKPiAgIAlpZiAoYm8tPnRiby50 eXBlID09IHR0bV9ib190eXBlX2tlcm5lbCkKPiAtCQlsaXN0X21vdmUoJmJhc2UtPnZtX3N0YXR1 cywgJnZtLT5yZWxvY2F0ZWQpOwo+ICsJCWFtZGdwdV92bV9ib19yZWxvY2F0ZWQoYmFzZSk7Cj4g ICAJZWxzZQo+IC0JCWxpc3RfbW92ZSgmYmFzZS0+dm1fc3RhdHVzLCAmdm0tPmlkbGUpOwo+ICsJ CWFtZGdwdV92bV9ib19pZGxlKGJhc2UpOwo+Cj4gICAJaWYgKGJvLT5wcmVmZXJyZWRfZG9tYWlu cyAmCj4gICAJICAgIGFtZGdwdV9tZW1fdHlwZV90b19kb21haW4oYm8tPnRiby5tZW0ubWVtX3R5 cGUpKQo+IEBAIC0yNDUsOCArMzM0LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2JvX2Jhc2Vf aW5pdChzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UgKmJhc2UsCj4gICAJICogaXMgY3VycmVudGx5 IGV2aWN0ZWQuIGFkZCB0aGUgYm8gdG8gdGhlIGV2aWN0ZWQgbGlzdCB0byBtYWtlIHN1cmUgaXQK PiAgIAkgKiBpcyB2YWxpZGF0ZWQgb24gbmV4dCB2bSB1c2UgdG8gYXZvaWQgZmF1bHQuCj4gICAJ ICogKi8KPiAtCWxpc3RfbW92ZV90YWlsKCZiYXNlLT52bV9zdGF0dXMsICZ2bS0+ZXZpY3RlZCk7 Cj4gLQliYXNlLT5tb3ZlZCA9IHRydWU7Cj4gKwlhbWRncHVfdm1fYm9fZXZpY3RlZChiYXNlKTsK PiAgIH0KPgo+ICAgLyoqCj4gQEAgLTM0Miw3ICs0MzAsNyBAQCBpbnQgYW1kZ3B1X3ZtX3ZhbGlk YXRlX3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAq dm0sCj4gICAJCQlicmVhazsKPgo+ICAgCQlpZiAoYm8tPnRiby50eXBlICE9IHR0bV9ib190eXBl X2tlcm5lbCkgewo+IC0JCQlsaXN0X21vdmUoJmJvX2Jhc2UtPnZtX3N0YXR1cywgJnZtLT5tb3Zl ZCk7Cj4gKwkJCWFtZGdwdV92bV9ib19tb3ZlZChib19iYXNlKTsKPiAgIAkJfSBlbHNlIHsKPiAg IAkJCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKQo+ICAgCQkJCXIgPSBhbWRncHVfYm9fa21h cChibywgTlVMTCk7Cj4gQEAgLTM1MCw3ICs0MzgsNyBAQCBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRl X3B0X2JvcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0s Cj4gICAJCQkJciA9IGFtZGdwdV90dG1fYWxsb2NfZ2FydCgmYm8tPnRibyk7Cj4gICAJCQlpZiAo cikKPiAgIAkJCQlicmVhazsKPiAtCQkJbGlzdF9tb3ZlKCZib19iYXNlLT52bV9zdGF0dXMsICZ2 bS0+cmVsb2NhdGVkKTsKPiArCQkJYW1kZ3B1X3ZtX2JvX3JlbG9jYXRlZChib19iYXNlKTsKPiAg IAkJfQo+ICAgCX0KPgo+IEBAIC0xMDY2LDcgKzExNTQsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVf dm1faW52YWxpZGF0ZV9sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCWNv bnRpbnVlOwo+Cj4gICAJCWlmICghZW50cnktPmJhc2UubW92ZWQpCj4gLQkJCWxpc3RfbW92ZSgm ZW50cnktPmJhc2Uudm1fc3RhdHVzLCAmdm0tPnJlbG9jYXRlZCk7Cj4gKwkJCWFtZGdwdV92bV9i b19yZWxvY2F0ZWQoJmVudHJ5LT5iYXNlKTsKPiAgIAkJYW1kZ3B1X3ZtX2ludmFsaWRhdGVfbGV2 ZWwoYWRldiwgdm0sIGVudHJ5LCBsZXZlbCArIDEpOwo+ICAgCX0KPiAgIH0KPiBAQCAtMTEyMSw4 ICsxMjA5LDcgQEAgaW50IGFtZGdwdV92bV91cGRhdGVfZGlyZWN0b3JpZXMoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCj4gICAJCWJvX2Jhc2UgPSBsaXN0X2ZpcnN0X2VudHJ5KCZ2bS0+cmVs b2NhdGVkLAo+ICAgCQkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3ZtX2JvX2Jhc2UsCj4gICAJCQkJCSAg IHZtX3N0YXR1cyk7Cj4gLQkJYm9fYmFzZS0+bW92ZWQgPSBmYWxzZTsKPiAtCQlsaXN0X21vdmUo JmJvX2Jhc2UtPnZtX3N0YXR1cywgJnZtLT5pZGxlKTsKPiArCQlhbWRncHVfdm1fYm9faWRsZShi b19iYXNlKTsKPgo+ICAgCQlibyA9IGJvX2Jhc2UtPmJvLT5wYXJlbnQ7Cj4gICAJCWlmICghYm8p Cj4gQEAgLTEyNDEsNyArMTMyOCw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9oYW5kbGVfaHVn ZV9wYWdlcyhzdHJ1Y3QgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwLAo+ICAgCQlpZiAoZW50 cnktPmh1Z2UpIHsKPiAgIAkJCS8qIEFkZCB0aGUgZW50cnkgdG8gdGhlIHJlbG9jYXRlZCBsaXN0 IHRvIHVwZGF0ZSBpdC4gKi8KPiAgIAkJCWVudHJ5LT5odWdlID0gZmFsc2U7Cj4gLQkJCWxpc3Rf bW92ZSgmZW50cnktPmJhc2Uudm1fc3RhdHVzLCAmcC0+dm0tPnJlbG9jYXRlZCk7Cj4gKwkJCWFt ZGdwdV92bV9ib19yZWxvY2F0ZWQoJmVudHJ5LT5iYXNlKTsKPiAgIAkJfQo+ICAgCQlyZXR1cm47 Cj4gICAJfQo+IEBAIC0xNzQwLDEzICsxODI3LDExIEBAIGludCBhbWRncHVfdm1fYm9fdXBkYXRl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgCQl1aW50MzJfdCBtZW1fdHlwZSA9IGJv LT50Ym8ubWVtLm1lbV90eXBlOwo+Cj4gICAJCWlmICghKGJvLT5wcmVmZXJyZWRfZG9tYWlucyAm IGFtZGdwdV9tZW1fdHlwZV90b19kb21haW4obWVtX3R5cGUpKSkKPiAtCQkJbGlzdF9tb3ZlX3Rh aWwoJmJvX3ZhLT5iYXNlLnZtX3N0YXR1cywgJnZtLT5ldmljdGVkKTsKPiArCQkJYW1kZ3B1X3Zt X2JvX2V2aWN0ZWQoJmJvX3ZhLT5iYXNlKTsKPiAgIAkJZWxzZQo+IC0JCQlsaXN0X21vdmUoJmJv X3ZhLT5iYXNlLnZtX3N0YXR1cywgJnZtLT5pZGxlKTsKPiArCQkJYW1kZ3B1X3ZtX2JvX2lkbGUo JmJvX3ZhLT5iYXNlKTsKPiAgIAl9IGVsc2Ugewo+IC0JCXNwaW5fbG9jaygmdm0tPmludmFsaWRh dGVkX2xvY2spOwo+IC0JCWxpc3RfZGVsX2luaXQoJmJvX3ZhLT5iYXNlLnZtX3N0YXR1cyk7Cj4g LQkJc3Bpbl91bmxvY2soJnZtLT5pbnZhbGlkYXRlZF9sb2NrKTsKPiArCQlhbWRncHVfdm1fYm9f ZG9uZSgmYm9fdmEtPmJhc2UpOwo+ICAgCX0KPgo+ICAgCWxpc3Rfc3BsaWNlX2luaXQoJmJvX3Zh LT5pbnZhbGlkcywgJmJvX3ZhLT52YWxpZHMpOwo+IEBAIC0yNDY4LDMwICsyNTUzLDIyIEBAIHZv aWQgYW1kZ3B1X3ZtX2JvX2ludmFsaWRhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4K PiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvX2Jhc2UsICZiby0+dmEsIGJvX2xpc3QpIHsKPiAg IAkJc3RydWN0IGFtZGdwdV92bSAqdm0gPSBib19iYXNlLT52bTsKPiAtCQlib29sIHdhc19tb3Zl ZCA9IGJvX2Jhc2UtPm1vdmVkOwo+Cj4gLQkJYm9fYmFzZS0+bW92ZWQgPSB0cnVlOwo+ICAgCQlp ZiAoZXZpY3RlZCAmJiBiby0+dGJvLnJlc3YgPT0gdm0tPnJvb3QuYmFzZS5iby0+dGJvLnJlc3Yp IHsKPiAtCQkJaWYgKGJvLT50Ym8udHlwZSA9PSB0dG1fYm9fdHlwZV9rZXJuZWwpCj4gLQkJCQls aXN0X21vdmUoJmJvX2Jhc2UtPnZtX3N0YXR1cywgJnZtLT5ldmljdGVkKTsKPiAtCQkJZWxzZQo+ IC0JCQkJbGlzdF9tb3ZlX3RhaWwoJmJvX2Jhc2UtPnZtX3N0YXR1cywKPiAtCQkJCQkgICAgICAg JnZtLT5ldmljdGVkKTsKPiArCQkJYW1kZ3B1X3ZtX2JvX2V2aWN0ZWQoYm9fYmFzZSk7Cj4gICAJ CQljb250aW51ZTsKPiAgIAkJfQo+Cj4gLQkJaWYgKHdhc19tb3ZlZCkKPiArCQlpZiAoYm9fYmFz ZS0+bW92ZWQpCj4gICAJCQljb250aW51ZTsKPiArCQlib19iYXNlLT5tb3ZlZCA9IHRydWU7Cj4K PiAtCQlpZiAoYm8tPnRiby50eXBlID09IHR0bV9ib190eXBlX2tlcm5lbCkgewo+IC0JCQlsaXN0 X21vdmUoJmJvX2Jhc2UtPnZtX3N0YXR1cywgJnZtLT5yZWxvY2F0ZWQpOwo+IC0JCX0gZWxzZSBp ZiAoYm8tPnRiby5yZXN2ID09IHZtLT5yb290LmJhc2UuYm8tPnRiby5yZXN2KSB7Cj4gLQkJCWxp c3RfbW92ZSgmYm9fYmFzZS0+dm1fc3RhdHVzLCAmdm0tPm1vdmVkKTsKPiAtCQl9IGVsc2Ugewo+ IC0JCQlzcGluX2xvY2soJnZtLT5pbnZhbGlkYXRlZF9sb2NrKTsKPiAtCQkJbGlzdF9tb3ZlKCZi b19iYXNlLT52bV9zdGF0dXMsICZ2bS0+aW52YWxpZGF0ZWQpOwo+IC0JCQlzcGluX3VubG9jaygm dm0tPmludmFsaWRhdGVkX2xvY2spOwo+IC0JCX0KPiArCQlpZiAoYm8tPnRiby50eXBlID09IHR0 bV9ib190eXBlX2tlcm5lbCkKPiArCQkJYW1kZ3B1X3ZtX2JvX3JlbG9jYXRlZChib19iYXNlKTsK PiArCQllbHNlIGlmIChiby0+dGJvLnJlc3YgPT0gdm0tPnJvb3QuYmFzZS5iby0+dGJvLnJlc3Yp Cj4gKwkJCWFtZGdwdV92bV9ib19tb3ZlZChib19iYXNlKTsKPiArCQllbHNlCj4gKwkJCWFtZGdw dV92bV9ib19pbnZhbGlkYXRlZChib19iYXNlKTsKPiAgIAl9Cj4gICB9Cj4KPgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK