From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 4/5] drm/amdgpu: Support page directory update via CPU Date: Tue, 16 May 2017 10:49:59 +0800 Message-ID: <591A68D7.80009@amd.com> References: <1494883923-25876-1-git-send-email-Harish.Kasiviswanathan@amd.com> <1494883923-25876-4-git-send-email-Harish.Kasiviswanathan@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1494883923-25876-4-git-send-email-Harish.Kasiviswanathan-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: Harish Kasiviswanathan , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org CgpPbiAyMDE35bm0MDXmnIgxNuaXpSAwNTozMiwgSGFyaXNoIEthc2l2aXN3YW5hdGhhbiB3cm90 ZToKPiBJZiBhbWRncHUudm1fdXBkYXRlX2NvbnRleHQgcGFyYW0gaXMgc2V0IHRvIHVzZSBDUFUs IHRoZW4gUGFnZQo+IERpcmVjdG9yaWVzIHdpbGwgYmUgdXBkYXRlZCBieSBDUFUgaW5zdGVhZCBv ZiBTRE1BCj4KPiBTaWduZWQtb2ZmLWJ5OiBIYXJpc2ggS2FzaXZpc3dhbmF0aGFuIDxIYXJpc2gu S2FzaXZpc3dhbmF0aGFuQGFtZC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdm0uYyB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0K PiAgIDEgZmlsZSBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCj4K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+IGluZGV4IDljODljYjIuLmQ3 MmE2MjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+IEBAIC0y NzEsNiArMjcxLDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAo+ICAgCQkJCSAgdWludDY0X3Qgc2FkZHIsIHVpbnQ2NF90IGVh ZGRyLAo+ICAgCQkJCSAgdW5zaWduZWQgbGV2ZWwpCj4gICB7Cj4gKwl1NjQgZmxhZ3M7Cj4gICAJ dW5zaWduZWQgc2hpZnQgPSAoYWRldi0+dm1fbWFuYWdlci5udW1fbGV2ZWwgLSBsZXZlbCkgKgo+ ICAgCQlhZGV2LT52bV9tYW5hZ2VyLmJsb2NrX3NpemU7Cj4gICAJdW5zaWduZWQgcHRfaWR4LCBm cm9tLCB0bzsKPiBAQCAtMjk5LDYgKzMwMCwxNCBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9hbGxv Y19sZXZlbHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJc2FkZHIgPSBzYWRkciAm ICgoMSA8PCBzaGlmdCkgLSAxKTsKPiAgIAllYWRkciA9IGVhZGRyICYgKCgxIDw8IHNoaWZ0KSAt IDEpOwo+ICAgCj4gKwlmbGFncyA9IEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUyB8 Cj4gKwkJCUFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ0xFQVJFRDsKPiArCWlmICh2bS0+dXNlX2Nw dV9mb3JfdXBkYXRlKQo+ICsJCWZsYWdzIHw9IEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1Nf UkVRVUlSRUQ7CkkgdGhpbmsgc2hhZG93IGZsYWcgaXMgbmVlZCBmb3IgQ1BVIGNhc2UgYXMgd2Vs bCwgd2hpY2ggaXMgdXNlZCB0byAKYmFja3VwIFZNIGJvIGFuZCBtZWFuaW5nZnVsIHdoZW4gZ3B1 IHJlc2V0LgpzYW1lIGNvbW1lbnQgZm9yIHBkIGJvLgoKUmVnYXJkcywKRGF2aWQgWmhvdQo+ICsJ ZWxzZQo+ICsJCWZsYWdzIHw9IChBTURHUFVfR0VNX0NSRUFURV9OT19DUFVfQUNDRVNTIHwKPiAr CQkJCUFNREdQVV9HRU1fQ1JFQVRFX1NIQURPVyk7Cj4gKwo+ICAgCS8qIHdhbGsgb3ZlciB0aGUg YWRkcmVzcyBzcGFjZSBhbmQgYWxsb2NhdGUgdGhlIHBhZ2UgdGFibGVzICovCj4gICAJZm9yIChw dF9pZHggPSBmcm9tOyBwdF9pZHggPD0gdG87ICsrcHRfaWR4KSB7Cj4gICAJCXN0cnVjdCByZXNl cnZhdGlvbl9vYmplY3QgKnJlc3YgPSB2bS0+cm9vdC5iby0+dGJvLnJlc3Y7Cj4gQEAgLTMxMCwx MCArMzE5LDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfbGV2ZWxzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAo+ICAgCQkJCQkgICAgIGFtZGdwdV92bV9ib19zaXplKGFkZXYsIGxl dmVsKSwKPiAgIAkJCQkJICAgICBBTURHUFVfR1BVX1BBR0VfU0laRSwgdHJ1ZSwKPiAgIAkJCQkJ ICAgICBBTURHUFVfR0VNX0RPTUFJTl9WUkFNLAo+IC0JCQkJCSAgICAgQU1ER1BVX0dFTV9DUkVB VEVfTk9fQ1BVX0FDQ0VTUyB8Cj4gLQkJCQkJICAgICBBTURHUFVfR0VNX0NSRUFURV9TSEFET1cg fAo+IC0JCQkJCSAgICAgQU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTIHwKPiAtCQkJ CQkgICAgIEFNREdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ0xFQVJFRCwKPiArCQkJCQkgICAgIGZsYWdz LAo+ICAgCQkJCQkgICAgIE5VTEwsIHJlc3YsICZwdCk7Cj4gICAJCQlpZiAocikKPiAgIAkJCQly ZXR1cm4gcjsKPiBAQCAtOTUyLDYgKzk1OCw0MyBAQCBzdGF0aWMgdWludDY0X3QgYW1kZ3B1X3Zt X21hcF9nYXJ0KGNvbnN0IGRtYV9hZGRyX3QgKnBhZ2VzX2FkZHIsIHVpbnQ2NF90IGFkZHIpCj4g ICAJcmV0dXJuIHJlc3VsdDsKPiAgIH0KPiAgIAo+ICsvKioKPiArICogYW1kZ3B1X3ZtX2NwdV9z ZXRfcHRlcyAtIGhlbHBlciB0byB1cGRhdGUgcGFnZSB0YWJsZXMgdmlhIENQVQo+ICsgKgo+ICsg KiBAcGFyYW1zOiBzZWUgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zIGRlZmluaXRpb24KPiArICog QHBlOiBrbWFwIGFkZHIgb2YgdGhlIHBhZ2UgZW50cnkKPiArICogQGFkZHI6IGRzdCBhZGRyIHRv IHdyaXRlIGludG8gcGUKPiArICogQGNvdW50OiBudW1iZXIgb2YgcGFnZSBlbnRyaWVzIHRvIHVw ZGF0ZQo+ICsgKiBAaW5jcjogaW5jcmVhc2UgbmV4dCBhZGRyIGJ5IGluY3IgYnl0ZXMKPiArICog QGZsYWdzOiBodyBhY2Nlc3MgZmxhZ3MKPiArICovCj4gK3N0YXRpYyB2b2lkIGFtZGdwdV92bV9j cHVfc2V0X3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAo+ICsJ CQkJICAgdWludDY0X3QgcGUsIHVpbnQ2NF90IGFkZHIsCj4gKwkJCQkgICB1bnNpZ25lZCBjb3Vu dCwgdWludDMyX3QgaW5jciwKPiArCQkJCSAgIHVpbnQ2NF90IGZsYWdzKQo+ICt7Cj4gKwl1bnNp Z25lZCBpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICsJCWFt ZGdwdV9nYXJ0X3NldF9wdGVfcGRlKHBhcmFtcy0+YWRldiwgKHZvaWQgKilwZSwKPiArCQkJCQlp LCBhZGRyLCBmbGFncyk7Cj4gKwkJYWRkciArPSBpbmNyOwo+ICsJfQo+ICsKPiArCW1iKCk7Cj4g KwlhbWRncHVfZ2FydF9mbHVzaF9ncHVfdGxiKHBhcmFtcy0+YWRldiwgMCk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGFtZGdwdV92bV9ib193YWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCBzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPiArewo+ICsJc3RydWN0IGFtZGdwdV9zeW5jIHN5bmM7 Cj4gKwo+ICsJYW1kZ3B1X3N5bmNfY3JlYXRlKCZzeW5jKTsKPiArCWFtZGdwdV9zeW5jX3Jlc3Yo YWRldiwgJnN5bmMsIGJvLT50Ym8ucmVzdiwgQU1ER1BVX0ZFTkNFX09XTkVSX1ZNKTsKPiArCWFt ZGdwdV9zeW5jX3dhaXQoJnN5bmMpOwo+ICsJYW1kZ3B1X3N5bmNfZnJlZSgmc3luYyk7Cj4gK30K PiArCj4gICAvKgo+ICAgICogYW1kZ3B1X3ZtX3VwZGF0ZV9sZXZlbCAtIHVwZGF0ZSBhIHNpbmds ZSBsZXZlbCBpbiB0aGUgaGllcmFyY2h5Cj4gICAgKgo+IEBAIC05ODEsMzQgKzEwMjQsNTAgQEAg c3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAo+ICAgCj4gICAJaWYgKCFwYXJlbnQtPmVudHJpZXMpCj4gICAJCXJldHVybiAwOwo+IC0J cmluZyA9IGNvbnRhaW5lcl9vZih2bS0+ZW50aXR5LnNjaGVkLCBzdHJ1Y3QgYW1kZ3B1X3Jpbmcs IHNjaGVkKTsKPiAgIAo+IC0JLyogcGFkZGluZywgZXRjLiAqLwo+IC0JbmR3ID0gNjQ7Cj4gKwlt ZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOwo+ICsJcGFyYW1zLmFkZXYgPSBhZGV2 Owo+ICsJc2hhZG93ID0gcGFyZW50LT5iby0+c2hhZG93Owo+ICAgCj4gLQkvKiBhc3N1bWUgdGhl IHdvcnN0IGNhc2UgKi8KPiAtCW5kdyArPSBwYXJlbnQtPmxhc3RfZW50cnlfdXNlZCAqIDY7Cj4g KwlXQVJOX09OKHZtLT51c2VfY3B1X2Zvcl91cGRhdGUgJiYgc2hhZG93KTsKPiArCWlmICh2bS0+ dXNlX2NwdV9mb3JfdXBkYXRlICYmICFzaGFkb3cpIHsKPiArCQlyID0gYW1kZ3B1X2JvX2ttYXAo cGFyZW50LT5ibywgKHZvaWQgKiopJnBkX2FkZHIpOwo+ICsJCWlmIChyKQo+ICsJCQlyZXR1cm4g cjsKPiArCQlhbWRncHVfdm1fYm9fd2FpdChhZGV2LCBwYXJlbnQtPmJvKTsKPiArCQlwYXJhbXMu ZnVuYyA9IGFtZGdwdV92bV9jcHVfc2V0X3B0ZXM7Cj4gKwl9IGVsc2Ugewo+ICsJCWlmIChzaGFk b3cpIHsKPiArCQkJciA9IGFtZGdwdV90dG1fYmluZCgmc2hhZG93LT50Ym8sICZzaGFkb3ctPnRi by5tZW0pOwo+ICsJCQlpZiAocikKPiArCQkJCXJldHVybiByOwo+ICsJCX0KPiArCQlyaW5nID0g Y29udGFpbmVyX29mKHZtLT5lbnRpdHkuc2NoZWQsIHN0cnVjdCBhbWRncHVfcmluZywKPiArCQkJ CSAgICBzY2hlZCk7Cj4gICAKPiAtCXBkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChwYXJl bnQtPmJvKTsKPiArCQkvKiBwYWRkaW5nLCBldGMuICovCj4gKwkJbmR3ID0gNjQ7Cj4gICAKPiAt CXNoYWRvdyA9IHBhcmVudC0+Ym8tPnNoYWRvdzsKPiAtCWlmIChzaGFkb3cpIHsKPiAtCQlyID0g YW1kZ3B1X3R0bV9iaW5kKCZzaGFkb3ctPnRibywgJnNoYWRvdy0+dGJvLm1lbSk7Cj4gKwkJLyog YXNzdW1lIHRoZSB3b3JzdCBjYXNlICovCj4gKwkJbmR3ICs9IHBhcmVudC0+bGFzdF9lbnRyeV91 c2VkICogNjsKPiArCj4gKwkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHBhcmVudC0+ Ym8pOwo+ICsKPiArCQlpZiAoc2hhZG93KSB7Cj4gKwkJCXNoYWRvd19hZGRyID0gYW1kZ3B1X2Jv X2dwdV9vZmZzZXQoc2hhZG93KTsKPiArCQkJbmR3ICo9IDI7Cj4gKwkJfSBlbHNlIHsKPiArCQkJ c2hhZG93X2FkZHIgPSAwOwo+ICsJCX0KPiArCj4gKwkJciA9IGFtZGdwdV9qb2JfYWxsb2Nfd2l0 aF9pYihhZGV2LCBuZHcgKiA0LCAmam9iKTsKPiAgIAkJaWYgKHIpCj4gICAJCQlyZXR1cm4gcjsK PiAtCQlzaGFkb3dfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHNoYWRvdyk7Cj4gLQkJbmR3 ICo9IDI7Cj4gLQl9IGVsc2Ugewo+IC0JCXNoYWRvd19hZGRyID0gMDsKPiAtCX0KPiAgIAo+IC0J ciA9IGFtZGdwdV9qb2JfYWxsb2Nfd2l0aF9pYihhZGV2LCBuZHcgKiA0LCAmam9iKTsKPiAtCWlm IChyKQo+IC0JCXJldHVybiByOwo+ICsJCXBhcmFtcy5pYiA9ICZqb2ItPmlic1swXTsKPiArCQlw YXJhbXMuZnVuYyA9IGFtZGdwdV92bV9kb19zZXRfcHRlczsKPiArCX0KPiAgIAo+IC0JbWVtc2V0 KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKPiAtCXBhcmFtcy5hZGV2ID0gYWRldjsKPiAt CXBhcmFtcy5pYiA9ICZqb2ItPmlic1swXTsKPiAgIAo+ICAgCS8qIHdhbGsgb3ZlciB0aGUgYWRk cmVzcyBzcGFjZSBhbmQgdXBkYXRlIHRoZSBkaXJlY3RvcnkgKi8KPiAgIAlmb3IgKHB0X2lkeCA9 IDA7IHB0X2lkeCA8PSBwYXJlbnQtPmxhc3RfZW50cnlfdXNlZDsgKytwdF9pZHgpIHsKPiBAQCAt MTA0MywxNSArMTEwMiwxNSBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAJCQkJCWFtZGdwdV92bV9hZGp1c3RfbWNfYWRk cihhZGV2LCBsYXN0X3B0KTsKPiAgIAo+ICAgCQkJCWlmIChzaGFkb3cpCj4gLQkJCQkJYW1kZ3B1 X3ZtX2RvX3NldF9wdGVzKCZwYXJhbXMsCj4gLQkJCQkJCQkgICAgICBsYXN0X3NoYWRvdywKPiAt CQkJCQkJCSAgICAgIHB0X2FkZHIsIGNvdW50LAo+IC0JCQkJCQkJICAgICAgaW5jciwKPiAtCQkJ CQkJCSAgICAgIEFNREdQVV9QVEVfVkFMSUQpOwo+IC0KPiAtCQkJCWFtZGdwdV92bV9kb19zZXRf cHRlcygmcGFyYW1zLCBsYXN0X3BkZSwKPiAtCQkJCQkJICAgICAgcHRfYWRkciwgY291bnQsIGlu Y3IsCj4gLQkJCQkJCSAgICAgIEFNREdQVV9QVEVfVkFMSUQpOwo+ICsJCQkJCXBhcmFtcy5mdW5j KCZwYXJhbXMsCj4gKwkJCQkJCSAgICBsYXN0X3NoYWRvdywKPiArCQkJCQkJICAgIHB0X2FkZHIs IGNvdW50LAo+ICsJCQkJCQkgICAgaW5jciwKPiArCQkJCQkJICAgIEFNREdQVV9QVEVfVkFMSUQp Owo+ICsKPiArCQkJCXBhcmFtcy5mdW5jKCZwYXJhbXMsIGxhc3RfcGRlLAo+ICsJCQkJCSAgICBw dF9hZGRyLCBjb3VudCwgaW5jciwKPiArCQkJCQkgICAgQU1ER1BVX1BURV9WQUxJRCk7Cj4gICAJ CQl9Cj4gICAKPiAgIAkJCWNvdW50ID0gMTsKPiBAQCAtMTA2NywxNCArMTEyNiwxNiBAQCBzdGF0 aWMgaW50IGFtZGdwdV92bV91cGRhdGVfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4gICAJCXVpbnQ2NF90IHB0X2FkZHIgPSBhbWRncHVfdm1fYWRqdXN0X21jX2FkZHIoYWRldiwg bGFzdF9wdCk7Cj4gICAKPiAgIAkJaWYgKHZtLT5yb290LmJvLT5zaGFkb3cpCj4gLQkJCWFtZGdw dV92bV9kb19zZXRfcHRlcygmcGFyYW1zLCBsYXN0X3NoYWRvdywgcHRfYWRkciwKPiAtCQkJCQkg ICAgICBjb3VudCwgaW5jciwgQU1ER1BVX1BURV9WQUxJRCk7Cj4gKwkJCXBhcmFtcy5mdW5jKCZw YXJhbXMsIGxhc3Rfc2hhZG93LCBwdF9hZGRyLAo+ICsJCQkJICAgIGNvdW50LCBpbmNyLCBBTURH UFVfUFRFX1ZBTElEKTsKPiAgIAo+IC0JCWFtZGdwdV92bV9kb19zZXRfcHRlcygmcGFyYW1zLCBs YXN0X3BkZSwgcHRfYWRkciwKPiAtCQkJCSAgICAgIGNvdW50LCBpbmNyLCBBTURHUFVfUFRFX1ZB TElEKTsKPiArCQlwYXJhbXMuZnVuYygmcGFyYW1zLCBsYXN0X3BkZSwgcHRfYWRkciwKPiArCQkJ ICAgIGNvdW50LCBpbmNyLCBBTURHUFVfUFRFX1ZBTElEKTsKPiAgIAl9Cj4gICAKPiAtCWlmIChw YXJhbXMuaWItPmxlbmd0aF9kdyA9PSAwKSB7Cj4gKwlpZiAocGFyYW1zLmZ1bmMgPT0gYW1kZ3B1 X3ZtX2NwdV9zZXRfcHRlcykKPiArCQlhbWRncHVfYm9fa3VubWFwKHBhcmVudC0+Ym8pOwo+ICsJ ZWxzZSBpZiAocGFyYW1zLmliLT5sZW5ndGhfZHcgPT0gMCkgewo+ICAgCQlhbWRncHVfam9iX2Zy ZWUoam9iKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQlhbWRncHVfcmluZ19wYWRfaWIocmluZywgcGFy YW1zLmliKTsKPiBAQCAtMjMwOSw2ICsyMzcwLDcgQEAgaW50IGFtZGdwdV92bV9pbml0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPiAgIAlzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmc7Cj4gICAJc3RydWN0IGFtZF9zY2hlZF9ycSAqcnE7Cj4gICAJaW50 IHIsIGk7Cj4gKwl1NjQgZmxhZ3M7Cj4gICAKPiAgIAl2bS0+dmEgPSBSQl9ST09UOwo+ICAgCXZt LT5jbGllbnRfaWQgPSBhdG9taWM2NF9pbmNfcmV0dXJuKCZhZGV2LT52bV9tYW5hZ2VyLmNsaWVu dF9jb3VudGVyKTsKPiBAQCAtMjM0MiwxMiArMjQwNCwxNyBAQCBpbnQgYW1kZ3B1X3ZtX2luaXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+ICAgCQkg ICJDUFUgdXBkYXRlIG9mIFZNIHJlY29tbWVuZGVkIG9ubHkgZm9yIGxhcmdlIEJBUiBzeXN0ZW1c biIpOwo+ICAgCXZtLT5sYXN0X2Rpcl91cGRhdGUgPSBOVUxMOwo+ICAgCj4gKwlmbGFncyA9IEFN REdQVV9HRU1fQ1JFQVRFX1ZSQU1fQ09OVElHVU9VUyB8Cj4gKwkJCUFNREdQVV9HRU1fQ1JFQVRF X1ZSQU1fQ0xFQVJFRDsKPiArCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKQo+ICsJCWZsYWdz IHw9IEFNREdQVV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1NfUkVRVUlSRUQ7Cj4gKwllbHNlCj4gKwkJ ZmxhZ3MgfD0gKEFNREdQVV9HRU1fQ1JFQVRFX05PX0NQVV9BQ0NFU1MgfAo+ICsJCQkJQU1ER1BV X0dFTV9DUkVBVEVfU0hBRE9XKTsKPiArCj4gICAJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwg YW1kZ3B1X3ZtX2JvX3NpemUoYWRldiwgMCksIGFsaWduLCB0cnVlLAo+ICAgCQkJICAgICBBTURH UFVfR0VNX0RPTUFJTl9WUkFNLAo+IC0JCQkgICAgIEFNREdQVV9HRU1fQ1JFQVRFX05PX0NQVV9B Q0NFU1MgfAo+IC0JCQkgICAgIEFNREdQVV9HRU1fQ1JFQVRFX1NIQURPVyB8Cj4gLQkJCSAgICAg QU1ER1BVX0dFTV9DUkVBVEVfVlJBTV9DT05USUdVT1VTIHwKPiAtCQkJICAgICBBTURHUFVfR0VN X0NSRUFURV9WUkFNX0NMRUFSRUQsCj4gKwkJCSAgICAgZmxhZ3MsCj4gICAJCQkgICAgIE5VTEws IE5VTEwsICZ2bS0+cm9vdC5ibyk7Cj4gICAJaWYgKHIpCj4gICAJCWdvdG8gZXJyb3JfZnJlZV9z Y2hlZF9lbnRpdHk7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK