From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Philip" Subject: Re: [PATCH 2/3] drm/amdgpu: support userptr cross VMAs case with HMM Date: Thu, 7 Mar 2019 01:12:27 +0000 Message-ID: <586f6ee5-2204-a516-61c9-e77e73ea3fa0@amd.com> References: <20190305180915.15216-1-Philip.Yang@amd.com> <20190305180915.15216-3-Philip.Yang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: 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: "Kuehling, Felix" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" SSB3aWxsIHN1Ym1pdCB2MiB0byBmaXggdGhvc2UgaXNzdWVzLiBTb21lIGNvbW1lbnRzIGlubGlu ZS4uLg0KDQpPbiAyMDE5LTAzLTA2IDM6MTEgcC5tLiwgS3VlaGxpbmcsIEZlbGl4IHdyb3RlOg0K PiBTb21lIGNvbW1lbnRzIGlubGluZSAuLi4NCj4gDQo+IE9uIDMvNS8yMDE5IDE6MDkgUE0sIFlh bmcsIFBoaWxpcCB3cm90ZToNCj4+IHVzZXJwdHIgbWF5IGNyb3NzIHR3byBWTUFzIGlmIHRoZSBm b3JrZWQgY2hpbGQgcHJvY2VzcyAobm90IGNhbGwgZXhlYw0KPj4gYWZ0ZXIgZm9yaykgbWFsbG9j IGJ1ZmZlciwgdGhlbiBmcmVlIGl0LCBhbmQgdGhlbiBtYWxsb2MgbGFyZ2VyIHNpemUNCj4+IGJ1 Ziwga2VyZW5sIHdpbGwgY3JlYXRlIG5ldyBWTUEgYWRqYWNlbnQgdG8gb2xkIFZNQSB3aGljaCB3 YXMgY2xvbmVkDQo+PiBmcm9tIHBhcmVudCBwcm9jZXNzLCBzb21lIHBhZ2VzIG9mIHVzZXJwdHIg YXJlIGluIHRoZSBmaXJzdCBWTUEsIHRoZQ0KPj4gcmVzdCBwYWdlcyBhcmUgaW4gdGhlIHNlY29u ZCBWTUEuDQo+Pg0KPj4gSE1NIGV4cGVjdHMgcmFuZ2Ugb25seSBoYXZlIG9uZSBWTUEsIGxvb3Ag b3ZlciBhbGwgVk1BcyBpbiB0aGUgYWRkcmVzcw0KPj4gcmFuZ2UsIGNyZWF0ZSBtdWx0aXBsZSBy YW5nZXMgdG8gaGFuZGxlIHRoaXMgY2FzZS4gU2VlDQo+PiBpc19tZXJnZWFibGVfYW5vbl92bWEg aW4gbW0vbW1hcC5jIGZvciBkZXRhaWxzLg0KPj4NCj4+IENoYW5nZS1JZDogSTBjYThjNzdlMjhk ZWFiY2NjMTM5OTA2ZjlmZmVlMDRiN2UzODMzMTQNCj4+IFNpZ25lZC1vZmYtYnk6IFBoaWxpcCBZ YW5nIDxQaGlsaXAuWWFuZ0BhbWQuY29tPg0KPj4gLS0tDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdHRtLmMgfCAxMjIgKysrKysrKysrKysrKysrKystLS0tLS0tDQo+ PiAgICAxIGZpbGUgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pDQo+ Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0u YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYw0KPj4gaW5kZXggY2Qw Y2NmYmJjYjg0Li4xNzNiZjRkYjU5OTQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdHRtLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV90dG0uYw0KPj4gQEAgLTcxMSw3ICs3MTEsOCBAQCBzdHJ1Y3QgYW1kZ3B1X3R0 bV90dCB7DQo+PiAgICAJc3RydWN0IHRhc2tfc3RydWN0CSp1c2VydGFzazsNCj4+ICAgIAl1aW50 MzJfdAkJdXNlcmZsYWdzOw0KPj4gICAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9BTURHUFVf VVNFUlBUUikNCj4+IC0Jc3RydWN0IGhtbV9yYW5nZQlyYW5nZTsNCj4+ICsJc3RydWN0IGhtbV9y YW5nZQkqcmFuZ2VzOw0KPj4gKwlpbnQJCQlucl9yYW5nZXM7DQo+PiAgICAjZW5kaWYNCj4+ICAg IH07DQo+PiAgICANCj4+IEBAIC03MjMsNjIgKzcyNCwxMDQgQEAgc3RydWN0IGFtZGdwdV90dG1f dHQgew0KPj4gICAgICogb25jZSBhZnRlcndhcmRzIHRvIHN0b3AgSE1NIHRyYWNraW5nDQo+PiAg ICAgKi8NCj4+ICAgICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fQU1ER1BVX1VTRVJQVFIpDQo+ PiArDQo+PiArLyogU3VwcG9ydCBVc2VycHRyIHBhZ2VzIGNyb3NzIG1heCAxNiB2bWFzICovDQo+ PiArI2RlZmluZSBNQVhfTlJfVk1BUwkoMTYpDQo+PiArDQo+PiAgICBpbnQgYW1kZ3B1X3R0bV90 dF9nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdHRtX3R0ICp0dG0sIHN0cnVjdCBwYWdlICoqcGFnZXMp DQo+PiAgICB7DQo+PiAgICAJc3RydWN0IGFtZGdwdV90dG1fdHQgKmd0dCA9ICh2b2lkICopdHRt Ow0KPj4gICAgCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gZ3R0LT51c2VydGFzay0+bW07DQo+PiAt CXVuc2lnbmVkIGxvbmcgZW5kID0gZ3R0LT51c2VycHRyICsgdHRtLT5udW1fcGFnZXMgKiBQQUdF X1NJWkU7DQo+PiAtCXN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlID0gJmd0dC0+cmFuZ2U7DQo+PiAt CWludCByID0gMCwgaTsNCj4+ICsJdW5zaWduZWQgbG9uZyBzdGFydCA9IGd0dC0+dXNlcnB0cjsN Cj4+ICsJdW5zaWduZWQgbG9uZyBlbmQgPSBzdGFydCArIHR0bS0+bnVtX3BhZ2VzICogUEFHRV9T SVpFOw0KPj4gKwlzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZXM7DQo+PiArCXN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hID0gTlVMTCwgKnZtYXNbTUFYX05SX1ZNQVNdOw0KPj4gKwl1aW50NjRfdCAq cGZucywgZjsNCj4+ICsJaW50IHIgPSAwLCBpLCBucl9wYWdlczsNCj4+ICAgIA0KPj4gICAgCWlm ICghbW0pIC8qIEhhcHBlbnMgZHVyaW5nIHByb2Nlc3Mgc2h1dGRvd24gKi8NCj4+ICAgIAkJcmV0 dXJuIC1FU1JDSDsNCj4+ICAgIA0KPj4gLQlhbWRncHVfaG1tX2luaXRfcmFuZ2UocmFuZ2UpOw0K Pj4gLQ0KPj4gICAgCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsNCj4+ICAgIA0KPj4gLQlyYW5n ZS0+dm1hID0gZmluZF92bWEobW0sIGd0dC0+dXNlcnB0cik7DQo+PiAtCWlmICghcmFuZ2VfaW5f dm1hKHJhbmdlLT52bWEsIGd0dC0+dXNlcnB0ciwgZW5kKSkNCj4+IC0JCXIgPSAtRUZBVUxUOw0K Pj4gLQllbHNlIGlmICgoZ3R0LT51c2VyZmxhZ3MgJiBBTURHUFVfR0VNX1VTRVJQVFJfQU5PTk9O TFkpICYmDQo+PiAtCQlyYW5nZS0+dm1hLT52bV9maWxlKQ0KPj4gKwkvKiB1c2VyIHBhZ2VzIG1h eSBjcm9zcyBtdWx0aXBsZSBWTUFzICovDQo+PiArCWd0dC0+bnJfcmFuZ2VzID0gMDsNCj4+ICsJ ZG8gew0KPj4gKwkJdm1hID0gZmluZF92bWEobW0sIHZtYSA/IHZtYS0+dm1fZW5kIDogc3RhcnQp Ow0KPj4gKwkJaWYgKHVubGlrZWx5KCF2bWEpKSB7DQo+PiArCQkJciA9IC1FRkFVTFQ7DQo+PiAr CQkJZ290byBvdXQ7DQo+PiArCQl9DQo+PiArCQl2bWFzW2d0dC0+bnJfcmFuZ2VzKytdID0gdm1h Ow0KPj4gKwkJaWYgKGd0dC0+bnJfcmFuZ2VzID49IE1BWF9OUl9WTUFTKSB7DQo+IA0KPiBUaGlz IHdpbGwgbGVhZCB0byBhIGZhaWx1cmUgd2hlbiB5b3UgaGF2ZSBleGFjdGx5IDE2IFZNQXMuIElm IHlvdSBtb3ZlDQo+IHRoZSBjaGVjayB0byB0aGUgc3RhcnQgb2YgdGhlIGxvb3AsIGl0IHdpbGwg b25seSB0cmlnZ2VyIHdoZW4geW91IGV4Y2VlZA0KPiB0aGUgbGltaXQgbm90IGp1c3QgYWZ0ZXIg eW91IHJlYWNoIGl0Lg0KPiANCk9rDQo+IA0KPj4gKwkJCURSTV9FUlJPUigiaW52YWxpZCB1c2Vy cHRyIHJhbmdlXG4iKTsNCj4gDQo+IFRoZSB1c2VycHRyIHJhbmdlIGlzIG5vdCByZWFsbHkgaW52 YWxpZC4gSXQgb25seSBleGNlZWRzIHNvbWUgYXJ0aWZpY2lhbA0KPiBsaW1pdGF0aW9uIGluIHRo aXMgY29kZS4gQSBtZXNzYWdlIGxpa2UgIlRvbyBtYW55IFZNQXMgaW4gdXNlcnB0ciByYW5nZSIN Cj4gd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZS4NCj4gDQpPaw0KPiANCj4+ICsJCQlyID0gLUVG QVVMVDsNCj4+ICsJCQlnb3RvIG91dDsNCj4+ICsJCX0NCj4+ICsJfSB3aGlsZSAoZW5kID4gdm1h LT52bV9lbmQpOw0KPj4gKw0KPj4gKwlEUk1fREVCVUdfRFJJVkVSKCIweCVseCBucl9yYW5nZXMg JWQgcGFnZXMgMHglbHhcbiIsDQo+PiArCQlzdGFydCwgZ3R0LT5ucl9yYW5nZXMsIHR0bS0+bnVt X3BhZ2VzKTsNCj4+ICsNCj4+ICsJaWYgKHVubGlrZWx5KChndHQtPnVzZXJmbGFncyAmIEFNREdQ VV9HRU1fVVNFUlBUUl9BTk9OT05MWSkgJiYNCj4+ICsJCXZtYXNbMF0tPnZtX2ZpbGUpKSB7DQo+ PiAgICAJCXIgPSAtRVBFUk07DQo+PiAtCWlmIChyKQ0KPj4gICAgCQlnb3RvIG91dDsNCj4+ICsJ fQ0KPj4gICAgDQo+PiAtCXJhbmdlLT5wZm5zID0ga3ZtYWxsb2NfYXJyYXkodHRtLT5udW1fcGFn ZXMsIHNpemVvZih1aW50NjRfdCksDQo+PiAtCQkJCSAgICAgR0ZQX0tFUk5FTCk7DQo+PiAtCWlm IChyYW5nZS0+cGZucyA9PSBOVUxMKSB7DQo+PiArCXJhbmdlcyA9IGt2bWFsbG9jX2FycmF5KGd0 dC0+bnJfcmFuZ2VzLCBzaXplb2YoKnJhbmdlcyksIEdGUF9LRVJORUwpOw0KPj4gKwlpZiAodW5s aWtlbHkoIXJhbmdlcykpIHsNCj4+ICAgIAkJciA9IC1FTk9NRU07DQo+PiAgICAJCWdvdG8gb3V0 Ow0KPj4gICAgCX0NCj4+IC0JcmFuZ2UtPnN0YXJ0ID0gZ3R0LT51c2VycHRyOw0KPj4gLQlyYW5n ZS0+ZW5kID0gZW5kOw0KPj4gICAgDQo+PiAtCXJhbmdlLT5wZm5zWzBdID0gcmFuZ2UtPmZsYWdz W0hNTV9QRk5fVkFMSURdOw0KPj4gLQlyYW5nZS0+cGZuc1swXSB8PSBhbWRncHVfdHRtX3R0X2lz X3JlYWRvbmx5KHR0bSkgPw0KPj4gLQkJCQkwIDogcmFuZ2UtPmZsYWdzW0hNTV9QRk5fV1JJVEVd Ow0KPj4gLQlmb3IgKGkgPSAxOyBpIDwgdHRtLT5udW1fcGFnZXM7IGkrKykNCj4+IC0JCXJhbmdl LT5wZm5zW2ldID0gcmFuZ2UtPnBmbnNbMF07DQo+PiArCXBmbnMgPSBrdm1hbGxvY19hcnJheSh0 dG0tPm51bV9wYWdlcywgc2l6ZW9mKCpwZm5zKSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICh1bmxp a2VseSghcGZucykpIHsNCj4+ICsJCXIgPSAtRU5PTUVNOw0KPj4gKwkJZ290byBvdXRfZnJlZV9y YW5nZXM7DQo+PiArCX0NCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IGd0dC0+bnJfcmFuZ2Vz OyBpKyspDQo+PiArCQlhbWRncHVfaG1tX2luaXRfcmFuZ2UoJnJhbmdlc1tpXSk7DQo+PiArDQo+ PiArCWYgPSByYW5nZXNbMF0uZmxhZ3NbSE1NX1BGTl9WQUxJRF07DQo+PiArCWYgfD0gYW1kZ3B1 X3R0bV90dF9pc19yZWFkb25seSh0dG0pID8NCj4+ICsJCQkJMCA6IHJhbmdlc1swXS5mbGFnc1tI TU1fUEZOX1dSSVRFXTsNCj4+ICsJbWVtc2V0NjQocGZucywgZiwgdHRtLT5udW1fcGFnZXMpOw0K Pj4gKw0KPj4gKwlmb3IgKG5yX3BhZ2VzID0gMCwgaSA9IDA7IGkgPCBndHQtPm5yX3Jhbmdlczsg aSsrKSB7DQo+PiArCQlyYW5nZXNbaV0udm1hID0gdm1hc1tpXTsNCj4+ICsJCXJhbmdlc1tpXS5z dGFydCA9IG1heChzdGFydCwgdm1hc1tpXS0+dm1fc3RhcnQpOw0KPj4gKwkJcmFuZ2VzW2ldLmVu ZCA9IG1pbihlbmQsIHZtYXNbaV0tPnZtX2VuZCk7DQo+PiArCQlyYW5nZXNbaV0ucGZucyA9IHBm bnMgKyBucl9wYWdlczsNCj4+ICsJCW5yX3BhZ2VzICs9IChyYW5nZXNbaV0uZW5kIC0gcmFuZ2Vz W2ldLnN0YXJ0KSAvIFBBR0VfU0laRTsNCj4+ICsNCj4+ICsJCXIgPSBobW1fdm1hX2ZhdWx0KCZy YW5nZXNbaV0sIHRydWUpOw0KPj4gKwkJaWYgKHVubGlrZWx5KHIpKQ0KPj4gKwkJCWJyZWFrOw0K Pj4gKwl9DQo+PiArCWlmICh1bmxpa2VseShyKSkgew0KPj4gKwkJd2hpbGUgKGktLSkNCj4+ICsJ CQlobW1fdm1hX3JhbmdlX2RvbmUoJnJhbmdlc1tpXSk7DQo+PiAgICANCj4+IC0JLyogVGhpcyBt YXkgdHJpZ2dlciBwYWdlIHRhYmxlIHVwZGF0ZSAqLw0KPj4gLQlyID0gaG1tX3ZtYV9mYXVsdChy YW5nZSwgdHJ1ZSk7DQo+PiAtCWlmIChyKQ0KPj4gICAgCQlnb3RvIG91dF9mcmVlX3BmbnM7DQo+ PiArCX0NCj4+ICAgIA0KPj4gICAgCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7DQo+PiAgICANCj4+ ICAgIAlmb3IgKGkgPSAwOyBpIDwgdHRtLT5udW1fcGFnZXM7IGkrKykNCj4+IC0JCXBhZ2VzW2ld ID0gaG1tX3Bmbl90b19wYWdlKHJhbmdlLCByYW5nZS0+cGZuc1tpXSk7DQo+PiArCQlwYWdlc1tp XSA9IGhtbV9wZm5fdG9fcGFnZSgmcmFuZ2VzWzBdLCBwZm5zW2ldKTsNCj4gDQo+IFRoaXMgbG9v a3Mgd3JvbmcuIERvbid0IHlvdSBuZWVkIHRvIHVzZSB0aGUgY29ycmVjdCByYW5nZSBoZXJlIGlu c3RlYWQNCj4gb2YgcmFuZ2VbMF0/DQo+IA0KaG1tX3Bmbl90b19wYWdlIHVzZXMgZmxhZ3MgSE1N X1BGTl9FUlJPUiBldGMgYW5kIHBmbl9zaGlmdCwgdGhvc2UgZmxhZ3MgDQphbmQgcGZuX3NoaWZ0 IGFyZSBzYW1lIGZvciBhbGwgcmFuZ2VzLiBUbyB1c2UgcmFuZ2UgY29ycmVzcG9uZGluZyB0byB0 aGUgDQpwYWdlLCB3ZSBuZWVkIGFub3RoZXIgY2FsY3VsYXRpb24gZnJvbSBwYWdlIHRvIHJhbmdl Lg0KPiANCj4+ICsJZ3R0LT5yYW5nZXMgPSByYW5nZXM7DQo+PiAgICANCj4+ICAgIAlyZXR1cm4g MDsNCj4+ICAgIA0KPj4gICAgb3V0X2ZyZWVfcGZuczoNCj4+IC0Ja3ZmcmVlKHJhbmdlLT5wZm5z KTsNCj4+IC0JcmFuZ2UtPnBmbnMgPSBOVUxMOw0KPj4gKwlrdmZyZWUocGZucyk7DQo+PiArb3V0 X2ZyZWVfcmFuZ2VzOg0KPj4gKwlrdmZyZWUocmFuZ2VzKTsNCj4+ICAgIG91dDoNCj4+ICAgIAl1 cF9yZWFkKCZtbS0+bW1hcF9zZW0pOw0KPj4gKw0KPj4gICAgCXJldHVybiByOw0KPj4gICAgfQ0K Pj4gICAgDQo+PiBAQCAtNzkyLDE1ICs4MzUsMjMgQEAgYm9vbCBhbWRncHVfdHRtX3R0X2dldF91 c2VyX3BhZ2VzX2RvbmUoc3RydWN0IHR0bV90dCAqdHRtKQ0KPj4gICAgew0KPj4gICAgCXN0cnVj dCBhbWRncHVfdHRtX3R0ICpndHQgPSAodm9pZCAqKXR0bTsNCj4+ICAgIAlib29sIHIgPSBmYWxz ZTsNCj4+ICsJaW50IGk7DQo+PiAgICANCj4+ICAgIAlpZiAoIWd0dCB8fCAhZ3R0LT51c2VycHRy KQ0KPj4gICAgCQlyZXR1cm4gZmFsc2U7DQo+PiAgICANCj4+IC0JV0FSTl9PTkNFKCFndHQtPnJh bmdlLnBmbnMsICJObyB1c2VyIHBhZ2VzIHRvIGNoZWNrXG4iKTsNCj4+IC0JaWYgKGd0dC0+cmFu Z2UucGZucykgew0KPj4gLQkJciA9IGhtbV92bWFfcmFuZ2VfZG9uZSgmZ3R0LT5yYW5nZSk7DQo+ PiAtCQlrdmZyZWUoZ3R0LT5yYW5nZS5wZm5zKTsNCj4+IC0JCWd0dC0+cmFuZ2UucGZucyA9IE5V TEw7DQo+PiArCURSTV9ERUJVR19EUklWRVIoInVzZXJfcGFnZXNfZG9uZSAweCVsbHggbnJfcmFu Z2VzICVkIHBhZ2VzIDB4JWx4XG4iLA0KPj4gKwkJZ3R0LT51c2VycHRyLCBndHQtPm5yX3Jhbmdl cywgdHRtLT5udW1fcGFnZXMpOw0KPj4gKw0KPj4gKwlXQVJOX09OQ0UoIWd0dC0+cmFuZ2VzIHx8 ICFndHQtPnJhbmdlc1swXS5wZm5zLA0KPj4gKwkJIk5vIHVzZXIgcGFnZXMgdG8gY2hlY2tcbiIp Ow0KPj4gKw0KPj4gKwlpZiAoZ3R0LT5yYW5nZXMpIHsNCj4+ICsJCWZvciAoaSA9IDA7IGkgPCBn dHQtPm5yX3JhbmdlczsgaSsrKQ0KPj4gKwkJCXIgfD0gaG1tX3ZtYV9yYW5nZV9kb25lKCZndHQt PnJhbmdlc1tpXSk7DQo+PiArCQlrdmZyZWUoZ3R0LT5yYW5nZXNbMF0ucGZucyk7DQo+IA0KPiBT aG91bGRuJ3QgdGhpcyBiZSBpbiB0aGUgbG9vcCBhbmQgYXBwbHkgdG8gZ3R0LT5yYW5nZXNbaV0u cGZucz8NCj4gDQpwZm5zIGlzIGFsbG9jYXRlZCBvbmNlIGJhc2VkIG9uIHR0bS0+bnVtX3BhZ2Vz LCByYW5nZXNbMF0ucGZucyBpcyB0aGUgDQpwZm5zLCBvdGhlciByYW5nZXMgcGZucyBpcyBwZm5z IHBsdXMgbnJfcGFnZXMgb2Zmc2V0LiBTbyBvbmx5IG5lZWQgdG8gDQpmcmVlIHJhbmdlc1swXS5w Zm5zLg0KDQo+IFJlZ2FyZHMsDQo+ICAgwqAgRmVsaXgNCj4gDQo+PiArCQlrdmZyZWUoZ3R0LT5y YW5nZXMpOw0KPj4gKwkJZ3R0LT5yYW5nZXMgPSBOVUxMOw0KPj4gICAgCX0NCj4+ICAgIA0KPj4g ICAgCXJldHVybiByOw0KPj4gQEAgLTg4NCw4ICs5MzUsOSBAQCBzdGF0aWMgdm9pZCBhbWRncHVf dHRtX3R0X3VucGluX3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtKQ0KPj4gICAgCXNnX2ZyZWVf dGFibGUodHRtLT5zZyk7DQo+PiAgICANCj4+ICAgICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1f QU1ER1BVX1VTRVJQVFIpDQo+PiAtCWlmIChndHQtPnJhbmdlLnBmbnMgJiYNCj4+IC0JICAgIHR0 bS0+cGFnZXNbMF0gPT0gaG1tX3Bmbl90b19wYWdlKCZndHQtPnJhbmdlLCBndHQtPnJhbmdlLnBm bnNbMF0pKQ0KPj4gKwlpZiAoZ3R0LT5yYW5nZXMgJiYNCj4+ICsJICAgIHR0bS0+cGFnZXNbMF0g PT0gaG1tX3Bmbl90b19wYWdlKCZndHQtPnJhbmdlc1swXSwNCj4+ICsJCQkJCSAgICAgZ3R0LT5y YW5nZXNbMF0ucGZuc1swXSkpDQo+PiAgICAJCVdBUk5fT05DRSgxLCAiTWlzc2luZyBnZXRfdXNl cl9wYWdlX2RvbmVcbiIpOw0KPj4gICAgI2VuZGlmDQo+PiAgICB9DQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=