From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 2/2] drm/amdgpu: enable huge page handling in the VM v4 Date: Tue, 18 Jul 2017 10:24:16 +0800 Message-ID: <596D7150.1080203@amd.com> References: <1500325342-26253-1-git-send-email-deathsimple@vodafone.de> <1500325342-26253-2-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1500325342-26253-2-git-send-email-deathsimple-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==?= , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: felix.kuehling-5C7GfCeVMHo@public.gmane.org U3RpbGwgaG9sZGluZyBvbj8gSSB0aG91Z2h0IHRoaXMgcGF0Y2ggd2FzIHB1c2hlZCBpbiBlYXJs aWVyIHdpdGggbXkgUkIuCgpSZWdhcmRzLApEYXZpZCBaaG91Ck9uIDIwMTflubQwN+aciDE45pel IDA1OjAyLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+IEZyb206IENocmlzdGlhbiBLw7ZuaWcg PGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPgo+IFRoZSBoYXJkd2FyZSBjYW4gdXNlIGh1Z2Ug cGFnZXMgdG8gbWFwIDJNQiBvZiBhZGRyZXNzIHNwYWNlIHdpdGggb25seSBvbmUgUERFLgo+Cj4g djI6IGZldyBjbGVhbnVwcyBhbmQgcmViYXNlZAo+IHYzOiBza2lwIFBUIHVwZGF0ZXMgaWYgd2Ug YXJlIHVzaW5nIHRoZSBQREUKPiB2NDogcmViYXNlZCwgYWRkZWQgc3VwcG9ydCBmb3IgQ1BVIGJh c2VkIHVwZGF0ZXMKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlh bi5rb2VuaWdAYW1kLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV92bS5jIHwgMTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggfCAgIDQgKysKPiAgIDIgZmlsZXMg Y2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiBpbmRleCBhM2RiZWJlLi42MmQ5N2Y1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiBAQCAtMzUxLDYgKzM1MSw3 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2FsbG9jX2xldmVscyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKPiAgIAo+ICAgCQkJZW50cnktPmJvID0gcHQ7Cj4gICAJCQllbnRyeS0+YWRkciA9 IDA7Cj4gKwkJCWVudHJ5LT5odWdlX3BhZ2UgPSBmYWxzZTsKPiAgIAkJfQo+ICAgCj4gICAJCWlm IChsZXZlbCA8IGFkZXYtPnZtX21hbmFnZXIubnVtX2xldmVsKSB7Cj4gQEAgLTExMTYsNyArMTEx Nyw4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9sZXZlbChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKPiAgIAo+ICAgCQlwdCA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KGJvKTsKPiAg IAkJcHQgPSBhbWRncHVfZ2FydF9nZXRfdm1fcGRlKGFkZXYsIHB0KTsKPiAtCQlpZiAocGFyZW50 LT5lbnRyaWVzW3B0X2lkeF0uYWRkciA9PSBwdCkKPiArCQlpZiAocGFyZW50LT5lbnRyaWVzW3B0 X2lkeF0uYWRkciA9PSBwdCB8fAo+ICsJCSAgICBwYXJlbnQtPmVudHJpZXNbcHRfaWR4XS5odWdl X3BhZ2UpCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlwYXJlbnQtPmVudHJpZXNbcHRfaWR4 XS5hZGRyID0gcHQ7Cj4gQEAgLTEyNTcsMjkgKzEyNTksOTUgQEAgaW50IGFtZGdwdV92bV91cGRh dGVfZGlyZWN0b3JpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICB9Cj4gICAKPiAg IC8qKgo+IC0gKiBhbWRncHVfdm1fZmluZF9wdCAtIGZpbmQgdGhlIHBhZ2UgdGFibGUgZm9yIGFu IGFkZHJlc3MKPiArICogYW1kZ3B1X3ZtX2ZpbmRfZW50cnkgLSBmaW5kIHRoZSBlbnRyeSBmb3Ig YW4gYWRkcmVzcwo+ICAgICoKPiAgICAqIEBwOiBzZWUgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1z IGRlZmluaXRpb24KPiAgICAqIEBhZGRyOiB2aXJ0dWFsIGFkZHJlc3MgaW4gcXVlc3Rpb24KPiAr ICogQGVudHJ5OiByZXN1bHRpbmcgZW50cnkgb3IgTlVMTAo+ICsgKiBAcGFyZW50OiBwYXJlbnQg ZW50cnkKPiAgICAqCj4gLSAqIEZpbmQgdGhlIHBhZ2UgdGFibGUgQk8gZm9yIGEgdmlydHVhbCBh ZGRyZXNzLCByZXR1cm4gTlVMTCB3aGVuIG5vbmUgZm91bmQuCj4gKyAqIEZpbmQgdGhlIHZtX3B0 IGVudHJ5IGFuZCBpdCdzIHBhcmVudCBmb3IgdGhlIGdpdmVuIGFkZHJlc3MuCj4gICAgKi8KPiAt c3RhdGljIHN0cnVjdCBhbWRncHVfYm8gKmFtZGdwdV92bV9nZXRfcHQoc3RydWN0IGFtZGdwdV9w dGVfdXBkYXRlX3BhcmFtcyAqcCwKPiAtCQkJCQkgIHVpbnQ2NF90IGFkZHIpCj4gK3ZvaWQgYW1k Z3B1X3ZtX2dldF9lbnRyeShzdHJ1Y3QgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwLCB1aW50 NjRfdCBhZGRyLAo+ICsJCQkgc3RydWN0IGFtZGdwdV92bV9wdCAqKmVudHJ5LAo+ICsJCQkgc3Ry dWN0IGFtZGdwdV92bV9wdCAqKnBhcmVudCkKPiAgIHsKPiAtCXN0cnVjdCBhbWRncHVfdm1fcHQg KmVudHJ5ID0gJnAtPnZtLT5yb290Owo+ICAgCXVuc2lnbmVkIGlkeCwgbGV2ZWwgPSBwLT5hZGV2 LT52bV9tYW5hZ2VyLm51bV9sZXZlbDsKPiAgIAo+IC0Jd2hpbGUgKGVudHJ5LT5lbnRyaWVzKSB7 Cj4gKwkqcGFyZW50ID0gTlVMTDsKPiArCSplbnRyeSA9ICZwLT52bS0+cm9vdDsKPiArCXdoaWxl ICgoKmVudHJ5KS0+ZW50cmllcykgewo+ICAgCQlpZHggPSBhZGRyID4+IChwLT5hZGV2LT52bV9t YW5hZ2VyLmJsb2NrX3NpemUgKiBsZXZlbC0tKTsKPiAtCQlpZHggJT0gYW1kZ3B1X2JvX3NpemUo ZW50cnktPmJvKSAvIDg7Cj4gLQkJZW50cnkgPSAmZW50cnktPmVudHJpZXNbaWR4XTsKPiArCQlp ZHggJT0gYW1kZ3B1X2JvX3NpemUoKCplbnRyeSktPmJvKSAvIDg7Cj4gKwkJKnBhcmVudCA9ICpl bnRyeTsKPiArCQkqZW50cnkgPSAmKCplbnRyeSktPmVudHJpZXNbaWR4XTsKPiAgIAl9Cj4gICAK PiAgIAlpZiAobGV2ZWwpCj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJKmVudHJ5ID0gTlVMTDsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIGFtZGdwdV92bV9oYW5kbGVfaHVnZV9wYWdlcyAtIGhhbmRsZSB1 cGRhdGluZyB0aGUgUEQgd2l0aCBodWdlIHBhZ2VzCj4gKyAqCj4gKyAqIEBwOiBzZWUgYW1kZ3B1 X3B0ZV91cGRhdGVfcGFyYW1zIGRlZmluaXRpb24KPiArICogQGVudHJ5OiB2bV9wdCBlbnRyeSB0 byBjaGVjawo+ICsgKiBAcGFyZW50OiBwYXJlbnQgZW50cnkKPiArICogQG5wdGVzOiBudW1iZXIg b2YgUFRFcyB1cGRhdGVkIHdpdGggdGhpcyBvcGVyYXRpb24KPiArICogQGRzdDogZGVzdGluYXRp b24gYWRkcmVzcyB3aGVyZSB0aGUgUFRFcyBzaG91bGQgcG9pbnQgdG8KPiArICogQGZsYWdzOiBh Y2Nlc3MgZmxhZ3MgZnJvIHRoZSBQVEVzCj4gKyAqCj4gKyAqIENoZWNrIGlmIHdlIGNhbiB1cGRh dGUgdGhlIFBEIHdpdGggYSBodWdlIHBhZ2UuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGFtZGdwdV92 bV9oYW5kbGVfaHVnZV9wYWdlcyhzdHJ1Y3QgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwLAo+ ICsJCQkJICAgICAgIHN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5LAo+ICsJCQkJICAgICAgIHN0 cnVjdCBhbWRncHVfdm1fcHQgKnBhcmVudCwKPiArCQkJCSAgICAgICB1bnNpZ25lZCBucHRlcywg dWludDY0X3QgZHN0LAo+ICsJCQkJICAgICAgIHVpbnQ2NF90IGZsYWdzKQo+ICt7Cj4gKwlib29s IHVzZV9jcHVfdXBkYXRlID0gKHAtPmZ1bmMgPT0gYW1kZ3B1X3ZtX2NwdV9zZXRfcHRlcyk7Cj4g Kwl1aW50NjRfdCBwZF9hZGRyLCBwZGU7Cj4gKwlpbnQgcjsKPiAgIAo+IC0JcmV0dXJuIGVudHJ5 LT5ibzsKPiArCS8qIEluIHRoZSBjYXNlIG9mIGEgbWl4ZWQgUFQgdGhlIFBERSBtdXN0IHBvaW50 IHRvIGl0Ki8KPiArCWlmIChwLT5hZGV2LT5hc2ljX3R5cGUgPCBDSElQX1ZFR0ExMCB8fAo+ICsJ ICAgIG5wdGVzICE9IEFNREdQVV9WTV9QVEVfQ09VTlQocC0+YWRldikgfHwKPiArCSAgICBwLT5m dW5jICE9IGFtZGdwdV92bV9kb19zZXRfcHRlcyB8fAo+ICsJICAgICEoZmxhZ3MgJiBBTURHUFVf UFRFX1ZBTElEKSkgewo+ICsKPiArCQlkc3QgPSBhbWRncHVfYm9fZ3B1X29mZnNldChlbnRyeS0+ Ym8pOwo+ICsJCWRzdCA9IGFtZGdwdV9nYXJ0X2dldF92bV9wZGUocC0+YWRldiwgZHN0KTsKPiAr CQlmbGFncyA9IEFNREdQVV9QVEVfVkFMSUQ7Cj4gKwl9IGVsc2Ugewo+ICsJCWZsYWdzIHw9IEFN REdQVV9QREVfUFRFOwo+ICsJfQo+ICsKPiArCWlmIChlbnRyeS0+YWRkciA9PSBkc3QgJiYKPiAr CSAgICBlbnRyeS0+aHVnZV9wYWdlID09ICEhKGZsYWdzICYgQU1ER1BVX1BERV9QVEUpKQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCWVudHJ5LT5hZGRyID0gZHN0Owo+ICsJZW50cnktPmh1Z2VfcGFn ZSA9ICEhKGZsYWdzICYgQU1ER1BVX1BERV9QVEUpOwo+ICsKPiArCWlmICh1c2VfY3B1X3VwZGF0 ZSkgewo+ICsJCXIgPSBhbWRncHVfYm9fa21hcChwYXJlbnQtPmJvLCAodm9pZCAqKSZwZF9hZGRy KTsKPiArCQlpZiAocikKPiArCQkJcmV0dXJuIHI7Cj4gKwo+ICsJCXBkZSA9IHBkX2FkZHIgKyAo ZW50cnkgLSBwYXJlbnQtPmVudHJpZXMpICogODsKPiArCQlhbWRncHVfdm1fY3B1X3NldF9wdGVz KHAsIHBkZSwgZHN0LCAxLCAwLCBmbGFncyk7Cj4gKwl9IGVsc2Ugewo+ICsJCWlmIChwYXJlbnQt PmJvLT5zaGFkb3cpIHsKPiArCQkJcGRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHBhcmVu dC0+Ym8tPnNoYWRvdyk7Cj4gKwkJCXBkZSA9IHBkX2FkZHIgKyAoZW50cnkgLSBwYXJlbnQtPmVu dHJpZXMpICogODsKPiArCQkJYW1kZ3B1X3ZtX2RvX3NldF9wdGVzKHAsIHBkZSwgZHN0LCAxLCAw LCBmbGFncyk7Cj4gKwkJfQo+ICsJCXBkX2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChwYXJl bnQtPmJvKTsKPiArCQlwZGUgPSBwZF9hZGRyICsgKGVudHJ5IC0gcGFyZW50LT5lbnRyaWVzKSAq IDg7Cj4gKwkJYW1kZ3B1X3ZtX2RvX3NldF9wdGVzKHAsIHBkZSwgZHN0LCAxLCAwLCBmbGFncyk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0xMzA2LDIy ICsxMzc0LDMxIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9wdGVzKHN0cnVjdCBhbWRn cHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywKPiAgIAlzdHJ1Y3QgYW1kZ3B1X2JvICpwdDsK PiAgIAl1bnNpZ25lZCBucHRlczsKPiAgIAlib29sIHVzZV9jcHVfdXBkYXRlID0gKHBhcmFtcy0+ ZnVuYyA9PSBhbWRncHVfdm1fY3B1X3NldF9wdGVzKTsKPiAtCj4gKwlpbnQgcjsKPiAgIAo+ICAg CS8qIHdhbGsgb3ZlciB0aGUgYWRkcmVzcyBzcGFjZSBhbmQgdXBkYXRlIHRoZSBwYWdlIHRhYmxl cyAqLwo+IC0JZm9yIChhZGRyID0gc3RhcnQ7IGFkZHIgPCBlbmQ7IGFkZHIgKz0gbnB0ZXMpIHsK PiAtCQlwdCA9IGFtZGdwdV92bV9nZXRfcHQocGFyYW1zLCBhZGRyKTsKPiAtCQlpZiAoIXB0KSB7 Cj4gLQkJCXByX2VycigiUFQgbm90IGZvdW5kLCBhYm9ydGluZyB1cGRhdGVfcHRlc1xuIik7Cj4g LQkJCXJldHVybiAtRUlOVkFMOwo+IC0JCX0KPiArCWZvciAoYWRkciA9IHN0YXJ0OyBhZGRyIDwg ZW5kOyBhZGRyICs9IG5wdGVzLAo+ICsJICAgICBkc3QgKz0gbnB0ZXMgKiBBTURHUFVfR1BVX1BB R0VfU0laRSkgewo+ICsJCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5LCAqcGFyZW50Owo+ICsK PiArCQlhbWRncHVfdm1fZ2V0X2VudHJ5KHBhcmFtcywgYWRkciwgJmVudHJ5LCAmcGFyZW50KTsK PiArCQlpZiAoIWVudHJ5KQo+ICsJCQlyZXR1cm4gLUVOT0VOVDsKPiAgIAo+ICAgCQlpZiAoKGFk ZHIgJiB+bWFzaykgPT0gKGVuZCAmIH5tYXNrKSkKPiAgIAkJCW5wdGVzID0gZW5kIC0gYWRkcjsK PiAgIAkJZWxzZQo+ICAgCQkJbnB0ZXMgPSBBTURHUFVfVk1fUFRFX0NPVU5UKGFkZXYpIC0gKGFk ZHIgJiBtYXNrKTsKPiAgIAo+ICsJCXIgPSBhbWRncHVfdm1faGFuZGxlX2h1Z2VfcGFnZXMocGFy YW1zLCBlbnRyeSwgcGFyZW50LAo+ICsJCQkJCQlucHRlcywgZHN0LCBmbGFncyk7Cj4gKwkJaWYg KHIpCj4gKwkJCXJldHVybiByOwo+ICAgCj4gKwkJaWYgKGVudHJ5LT5odWdlX3BhZ2UpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlwdCA9IGVudHJ5LT5ibzsKPiAgIAkJaWYgKHVzZV9jcHVfdXBk YXRlKSB7Cj4gICAJCQlwZV9zdGFydCA9ICh1bnNpZ25lZCBsb25nKXB0LT5rcHRyOwo+ICAgCQl9 IGVsc2Ugewo+IEBAIC0xMzM3LDggKzE0MTQsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRh dGVfcHRlcyhzdHJ1Y3QgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwYXJhbXMsCj4gICAJCXBl X3N0YXJ0ICs9IChhZGRyICYgbWFzaykgKiA4Owo+ICAgCQlwYXJhbXMtPmZ1bmMocGFyYW1zLCBw ZV9zdGFydCwgZHN0LCBucHRlcywKPiAgIAkJCSAgICAgQU1ER1BVX0dQVV9QQUdFX1NJWkUsIGZs YWdzKTsKPiAtCj4gLQkJZHN0ICs9IG5wdGVzICogQU1ER1BVX0dQVV9QQUdFX1NJWkU7Cj4gICAJ fQo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gQEAgLTE0OTAsNiArMTU2NSw5IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X3ZtX2JvX3VwZGF0ZV9tYXBwaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ ICAgCS8qIHBhZGRpbmcsIGV0Yy4gKi8KPiAgIAluZHcgPSA2NDsKPiAgIAo+ICsJLyogb25lIFBE RSB3cml0ZSBmb3IgZWFjaCBodWdlIHBhZ2UgKi8KPiArCW5kdyArPSAoKG5wdGVzID4+IGFkZXYt PnZtX21hbmFnZXIuYmxvY2tfc2l6ZSkgKyAxKSAqIDc7Cj4gKwo+ICAgCWlmIChzcmMpIHsKPiAg IAkJLyogb25seSBjb3B5IGNvbW1hbmRzIG5lZWRlZCAqLwo+ICAgCQluZHcgKz0gbmNtZHMgKiA3 Owo+IEBAIC0xNTY5LDYgKzE2NDcsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV9ib191cGRhdGVf bWFwcGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAo+ICAgZXJyb3JfZnJlZToK PiAgIAlhbWRncHVfam9iX2ZyZWUoam9iKTsKPiArCWFtZGdwdV92bV9pbnZhbGlkYXRlX2xldmVs KCZ2bS0+cm9vdCk7Cj4gICAJcmV0dXJuIHI7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm0uaAo+IGluZGV4IGM0ZjVkMWYuLjM0ZDkxNzQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+IEBAIC03MCw2ICs3MCw5IEBAIHN0cnVj dCBhbWRncHVfYm9fbGlzdF9lbnRyeTsKPiAgIC8qIFRJTEVEIGZvciBWRUdBMTAsIHJlc2VydmVk IGZvciBvbGRlciBBU0lDcyAgKi8KPiAgICNkZWZpbmUgQU1ER1BVX1BURV9QUlQJCSgxVUxMIDw8 IDUxKQo+ICAgCj4gKy8qIFBERSBpcyBoYW5kbGVkIGFzIFBURSBmb3IgVkVHQTEwICovCj4gKyNk ZWZpbmUgQU1ER1BVX1BERV9QVEUJCSgxVUxMIDw8IDU0KQo+ICsKPiAgIC8qIFZFR0ExMCBvbmx5 ICovCj4gICAjZGVmaW5lIEFNREdQVV9QVEVfTVRZUEUoYSkgICAgKCh1aW50NjRfdClhIDw8IDU3 KQo+ICAgI2RlZmluZSBBTURHUFVfUFRFX01UWVBFX01BU0sJQU1ER1BVX1BURV9NVFlQRSgzVUxM KQo+IEBAIC0xMDAsNiArMTAzLDcgQEAgc3RydWN0IGFtZGdwdV9ib19saXN0X2VudHJ5Owo+ICAg c3RydWN0IGFtZGdwdV92bV9wdCB7Cj4gICAJc3RydWN0IGFtZGdwdV9ibwkqYm87Cj4gICAJdWlu dDY0X3QJCWFkZHI7Cj4gKwlib29sCQkJaHVnZV9wYWdlOwo+ICAgCj4gICAJLyogYXJyYXkgb2Yg cGFnZSB0YWJsZXMsIG9uZSBmb3IgZWFjaCBkaXJlY3RvcnkgZW50cnkgKi8KPiAgIAlzdHJ1Y3Qg YW1kZ3B1X3ZtX3B0CSplbnRyaWVzOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cg==