From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: Re: [PATCH 5/5] drm/amdgpu: fix shadow BO restoring Date: Tue, 18 Sep 2018 16:40:35 +0800 Message-ID: <20180918084034.GA21469@hr-amur2> References: <20180914134257.2196-1-christian.koenig@amd.com> <20180914134257.2196-5-christian.koenig@amd.com> <20180917090901.GD25456@hr-amur2> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: 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: "Koenig, Christian" Cc: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gTW9uLCBTZXAgMTcsIDIwMTggYXQgMDc6NDI6MzhQTSArMDgwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxNy4wOS4yMDE4IHVtIDExOjEwIHNjaHJpZWIgSHVhbmcgUnVpOgo+ID4g T24gRnJpLCBTZXAgMTQsIDIwMTggYXQgMDM6NDI6NTdQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiA+PiBEb24ndCBncmFiIHRoZSByZXNlcnZhdGlvbiBsb2NrIGFueSBtb3JlIGFu ZCBzaW1wbGlmeSB0aGUgaGFuZGxpbmcgcXVpdGUKPiA+PiBhIGJpdC4KPiA+Pgo+ID4+IFNpZ25l ZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiA+ PiAtLS0KPiA+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyB8 IDEwOSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ICAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jIHwgIDQ2ICsrKystLS0tLS0tLQo+ID4+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oIHwgICA4ICstLQo+ID4+ICAg MyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCj4gPj4K PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rldmlj ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4gPj4gaW5k ZXggODk5MzQyYzZkZmFkLi4xY2JjMzcyOTY0ZjggMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4gPj4gQEAgLTI5NTQsNTQgKzI5NTQsNiBA QCBzdGF0aWMgaW50IGFtZGdwdV9kZXZpY2VfaXBfcG9zdF9zb2Z0X3Jlc2V0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQo+ID4+ICAgCXJldHVybiAwOwo+ID4+ICAgfQo+ID4+ICAgCj4gPj4g LS8qKgo+ID4+IC0gKiBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbV9mcm9tX3NoYWRvdyAtIHJl c3RvcmUgc2hhZG93ZWQgVlJBTSBidWZmZXJzCj4gPj4gLSAqCj4gPj4gLSAqIEBhZGV2OiBhbWRn cHVfZGV2aWNlIHBvaW50ZXIKPiA+PiAtICogQHJpbmc6IGFtZGdwdV9yaW5nIGZvciB0aGUgZW5n aW5lIGhhbmRsaW5nIHRoZSBidWZmZXIgb3BlcmF0aW9ucwo+ID4+IC0gKiBAYm86IGFtZGdwdV9i byBidWZmZXIgd2hvc2Ugc2hhZG93IGlzIGJlaW5nIHJlc3RvcmVkCj4gPj4gLSAqIEBmZW5jZTog ZG1hX2ZlbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3BlcmF0aW9uCj4gPj4gLSAqCj4gPj4gLSAq IFJlc3RvcmVzIHRoZSBWUkFNIGJ1ZmZlciBjb250ZW50cyBmcm9tIHRoZSBzaGFkb3cgaW4gR1RU LiAgVXNlZCB0bwo+ID4+IC0gKiByZXN0b3JlIHRoaW5ncyBsaWtlIEdQVVZNIHBhZ2UgdGFibGVz IGFmdGVyIGEgR1BVIHJlc2V0IHdoZXJlCj4gPj4gLSAqIHRoZSBjb250ZW50cyBvZiBWUkFNIG1p Z2h0IGJlIGxvc3QuCj4gPj4gLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJv ciBjb2RlIG9uIGZhaWx1cmUuCj4gPj4gLSAqLwo+ID4+IC1zdGF0aWMgaW50IGFtZGdwdV9kZXZp Y2VfcmVjb3Zlcl92cmFtX2Zyb21fc2hhZG93KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ ID4+IC0JCQkJCQkgIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiA+PiAtCQkJCQkJICBzdHJ1 Y3QgYW1kZ3B1X2JvICpibywKPiA+PiAtCQkJCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2Up Cj4gPj4gLXsKPiA+PiAtCXVpbnQzMl90IGRvbWFpbjsKPiA+PiAtCWludCByOwo+ID4+IC0KPiA+ PiAtCWlmICghYm8tPnNoYWRvdykKPiA+PiAtCQlyZXR1cm4gMDsKPiA+PiAtCj4gPj4gLQlyID0g YW1kZ3B1X2JvX3Jlc2VydmUoYm8sIHRydWUpOwo+ID4+IC0JaWYgKHIpCj4gPj4gLQkJcmV0dXJu IHI7Cj4gPj4gLQlkb21haW4gPSBhbWRncHVfbWVtX3R5cGVfdG9fZG9tYWluKGJvLT50Ym8ubWVt Lm1lbV90eXBlKTsKPiA+PiAtCS8qIGlmIGJvIGhhcyBiZWVuIGV2aWN0ZWQsIHRoZW4gbm8gbmVl ZCB0byByZWNvdmVyICovCj4gPj4gLQlpZiAoZG9tYWluID09IEFNREdQVV9HRU1fRE9NQUlOX1ZS QU0pIHsKPiA+PiAtCQlyID0gYW1kZ3B1X2JvX3ZhbGlkYXRlKGJvLT5zaGFkb3cpOwo+ID4+IC0J CWlmIChyKSB7Cj4gPj4gLQkJCURSTV9FUlJPUigiYm8gdmFsaWRhdGUgZmFpbGVkIVxuIik7Cj4g Pj4gLQkJCWdvdG8gZXJyOwo+ID4+IC0JCX0KPiA+PiAtCj4gPj4gLQkJciA9IGFtZGdwdV9ib19y ZXN0b3JlX2Zyb21fc2hhZG93KGFkZXYsIHJpbmcsIGJvLAo+ID4+IC0JCQkJCQkgTlVMTCwgZmVu Y2UsIHRydWUpOwo+ID4+IC0JCWlmIChyKSB7Cj4gPj4gLQkJCURSTV9FUlJPUigicmVjb3ZlciBw YWdlIHRhYmxlIGZhaWxlZCFcbiIpOwo+ID4+IC0JCQlnb3RvIGVycjsKPiA+PiAtCQl9Cj4gPj4g LQl9Cj4gPj4gLWVycjoKPiA+PiAtCWFtZGdwdV9ib191bnJlc2VydmUoYm8pOwo+ID4+IC0JcmV0 dXJuIHI7Cj4gPj4gLX0KPiA+PiAtCj4gPj4gICAvKioKPiA+PiAgICAqIGFtZGdwdV9kZXZpY2Vf cmVjb3Zlcl92cmFtIC0gUmVjb3ZlciBzb21lIFZSQU0gY29udGVudHMKPiA+PiAgICAqCj4gPj4g QEAgLTMwMTAsMTYgKzI5NjIsMTUgQEAgc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3JlY292ZXJf dnJhbV9mcm9tX3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiA+PiAgICAqIFJl c3RvcmVzIHRoZSBjb250ZW50cyBvZiBWUkFNIGJ1ZmZlcnMgZnJvbSB0aGUgc2hhZG93cyBpbiBH VFQuICBVc2VkIHRvCj4gPj4gICAgKiByZXN0b3JlIHRoaW5ncyBsaWtlIEdQVVZNIHBhZ2UgdGFi bGVzIGFmdGVyIGEgR1BVIHJlc2V0IHdoZXJlCj4gPj4gICAgKiB0aGUgY29udGVudHMgb2YgVlJB TSBtaWdodCBiZSBsb3N0Lgo+ID4+IC0gKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgMSBvbiBmYWls dXJlLgo+ID4+ICsgKgo+ID4+ICsgKiBSZXR1cm5zOgo+ID4+ICsgKiAwIG9uIHN1Y2Nlc3MsIG5l Z2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiA+PiAgICAqLwo+ID4+ICAgc3RhdGljIGlu dCBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK PiA+PiAgIHsKPiA+PiAtCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9IGFkZXYtPm1tYW4uYnVm ZmVyX2Z1bmNzX3Jpbmc7Cj4gPj4gLQlzdHJ1Y3QgYW1kZ3B1X2JvICpibywgKnRtcDsKPiA+PiAg IAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IE5VTEwsICpuZXh0ID0gTlVMTDsKPiA+PiAtCWxv bmcgciA9IDE7Cj4gPj4gLQlpbnQgaSA9IDA7Cj4gPj4gLQlsb25nIHRtbzsKPiA+PiArCXN0cnVj dCBhbWRncHVfYm8gKnNoYWRvdzsKPiA+PiArCWxvbmcgciA9IDEsIHRtbzsKPiA+PiAgIAo+ID4+ ICAgCWlmIChhbWRncHVfc3Jpb3ZfcnVudGltZShhZGV2KSkKPiA+PiAgIAkJdG1vID0gbXNlY3Nf dG9famlmZmllcyg4MDAwKTsKPiA+PiBAQCAtMzAyOCw0NCArMjk3OSw0MCBAQCBzdGF0aWMgaW50 IGFtZGdwdV9kZXZpY2VfcmVjb3Zlcl92cmFtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ ID4+ICAgCj4gPj4gICAJRFJNX0lORk8oInJlY292ZXIgdnJhbSBibyBmcm9tIHNoYWRvdyBzdGFy dFxuIik7Cj4gPj4gICAJbXV0ZXhfbG9jaygmYWRldi0+c2hhZG93X2xpc3RfbG9jayk7Cj4gPj4g LQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYm8sIHRtcCwgJmFkZXYtPnNoYWRvd19saXN0LCBz aGFkb3dfbGlzdCkgewo+ID4+IC0JCW5leHQgPSBOVUxMOwo+ID4+IC0JCWFtZGdwdV9kZXZpY2Vf cmVjb3Zlcl92cmFtX2Zyb21fc2hhZG93KGFkZXYsIHJpbmcsIGJvLCAmbmV4dCk7Cj4gPj4gKwls aXN0X2Zvcl9lYWNoX2VudHJ5KHNoYWRvdywgJmFkZXYtPnNoYWRvd19saXN0LCBzaGFkb3dfbGlz dCkgewo+ID4+ICsKPiA+PiArCQkvKiBObyBuZWVkIHRvIHJlY292ZXIgYW4gZXZpY3RlZCBCTyAq Lwo+ID4+ICsJCWlmIChzaGFkb3ctPnRiby5tZW0ubWVtX3R5cGUgIT0gVFRNX1BMX1RUIHx8Cj4g Pj4gKwkJICAgIHNoYWRvdy0+cGFyZW50LT50Ym8ubWVtLm1lbV90eXBlICE9IFRUTV9QTF9WUkFN KQo+ID4+ICsJCQljb250aW51ZTsKPiA+PiArCj4gPj4gKwkJciA9IGFtZGdwdV9ib19yZXN0b3Jl X3NoYWRvdyhzaGFkb3csICZuZXh0KTsKPiA+PiArCQlpZiAocikKPiA+PiArCQkJYnJlYWs7Cj4g Pj4gKwo+ID4+ICAgCQlpZiAoZmVuY2UpIHsKPiA+PiAgIAkJCXIgPSBkbWFfZmVuY2Vfd2FpdF90 aW1lb3V0KGZlbmNlLCBmYWxzZSwgdG1vKTsKPiA+PiAtCQkJaWYgKHIgPT0gMCkKPiA+PiAtCQkJ CXByX2Vycigid2FpdCBmZW5jZSAlcFslZF0gdGltZW91dFxuIiwgZmVuY2UsIGkpOwo+ID4+IC0J CQllbHNlIGlmIChyIDwgMCkKPiA+PiAtCQkJCXByX2Vycigid2FpdCBmZW5jZSAlcFslZF0gaW50 ZXJydXB0ZWRcbiIsIGZlbmNlLCBpKTsKPiA+PiAtCQkJaWYgKHIgPCAxKSB7Cj4gPj4gLQkJCQlk bWFfZmVuY2VfcHV0KGZlbmNlKTsKPiA+PiAtCQkJCWZlbmNlID0gbmV4dDsKPiA+PiArCQkJZG1h X2ZlbmNlX3B1dChmZW5jZSk7Cj4gPj4gKwkJCWZlbmNlID0gbmV4dDsKPiA+PiArCQkJaWYgKHIg PD0gMCkKPiA+PiAgIAkJCQlicmVhazsKPiA+PiAtCQkJfQo+ID4+IC0JCQlpKys7Cj4gPj4gKwkJ fSBlbHNlIHsKPiA+PiArCQkJZmVuY2UgPSBuZXh0Owo+ID4+ICAgCQl9Cj4gPj4gLQo+ID4+IC0J CWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ID4+IC0JCWZlbmNlID0gbmV4dDsKPiA+PiAgIAl9Cj4g Pj4gICAJbXV0ZXhfdW5sb2NrKCZhZGV2LT5zaGFkb3dfbGlzdF9sb2NrKTsKPiA+PiAgIAo+ID4+ IC0JaWYgKGZlbmNlKSB7Cj4gPj4gLQkJciA9IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZmVuY2Us IGZhbHNlLCB0bW8pOwo+ID4+IC0JCWlmIChyID09IDApCj4gPj4gLQkJCXByX2Vycigid2FpdCBm ZW5jZSAlcFslZF0gdGltZW91dFxuIiwgZmVuY2UsIGkpOwo+ID4+IC0JCWVsc2UgaWYgKHIgPCAw KQo+ID4+IC0JCQlwcl9lcnIoIndhaXQgZmVuY2UgJXBbJWRdIGludGVycnVwdGVkXG4iLCBmZW5j ZSwgaSk7Cj4gPj4gLQo+ID4+IC0JfQo+ID4+ICsJaWYgKGZlbmNlKQo+ID4+ICsJCXRtbyA9IGRt YV9mZW5jZV93YWl0X3RpbWVvdXQoZmVuY2UsIGZhbHNlLCB0bW8pOwo+ID4+ICAgCWRtYV9mZW5j ZV9wdXQoZmVuY2UpOwo+ID4+ICAgCj4gPj4gLQlpZiAociA+IDApCj4gPj4gLQkJRFJNX0lORk8o InJlY292ZXIgdnJhbSBibyBmcm9tIHNoYWRvdyBkb25lXG4iKTsKPiA+PiAtCWVsc2UKPiA+PiAr CWlmIChyIDw9IDAgfHwgdG1vIDw9IDApIHsKPiA+PiAgIAkJRFJNX0VSUk9SKCJyZWNvdmVyIHZy YW0gYm8gZnJvbSBzaGFkb3cgZmFpbGVkXG4iKTsKPiA+PiArCQlyZXR1cm4gLUVJTzsKPiA+PiAr CX0KPiA+PiAgIAo+ID4+IC0JcmV0dXJuIChyID4gMCkgPyAwIDogMTsKPiA+PiArCURSTV9JTkZP KCJyZWNvdmVyIHZyYW0gYm8gZnJvbSBzaGFkb3cgZG9uZVxuIik7Cj4gPj4gKwlyZXR1cm4gMDsK PiA+PiAgIH0KPiA+PiAgIAo+ID4+ICAgLyoqCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9vYmplY3QuYwo+ID4+IGluZGV4IDY1MGM0NWM4OTZmMC4uY2E4YTBiN2E1YWMz IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmpl Y3QuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3Qu Ywo+ID4+IEBAIC01NDcsNyArNTQ3LDcgQEAgc3RhdGljIGludCBhbWRncHVfYm9fY3JlYXRlX3No YWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiA+PiAgIAlpZiAoIXIpIHsKPiA+PiAg IAkJYm8tPnNoYWRvdy0+cGFyZW50ID0gYW1kZ3B1X2JvX3JlZihibyk7Cj4gPj4gICAJCW11dGV4 X2xvY2soJmFkZXYtPnNoYWRvd19saXN0X2xvY2spOwo+ID4+IC0JCWxpc3RfYWRkX3RhaWwoJmJv LT5zaGFkb3dfbGlzdCwgJmFkZXYtPnNoYWRvd19saXN0KTsKPiA+PiArCQlsaXN0X2FkZF90YWls KCZiby0+c2hhZG93LT5zaGFkb3dfbGlzdCwgJmFkZXYtPnNoYWRvd19saXN0KTsKPiA+PiAgIAkJ bXV0ZXhfdW5sb2NrKCZhZGV2LT5zaGFkb3dfbGlzdF9sb2NrKTsKPiA+PiAgIAl9Cj4gPj4gICAK PiA+PiBAQCAtNjc5LDEzICs2NzksMTAgQEAgaW50IGFtZGdwdV9ib192YWxpZGF0ZShzdHJ1Y3Qg YW1kZ3B1X2JvICpibykKPiA+PiAgIH0KPiA+PiAgIAo+ID4+ICAgLyoqCj4gPj4gLSAqIGFtZGdw dV9ib19yZXN0b3JlX2Zyb21fc2hhZG93IC0gcmVzdG9yZSBhbiAmYW1kZ3B1X2JvIGJ1ZmZlciBv YmplY3QKPiA+PiAtICogQGFkZXY6IGFtZGdwdSBkZXZpY2Ugb2JqZWN0Cj4gPj4gLSAqIEByaW5n OiBhbWRncHVfcmluZyBmb3IgdGhlIGVuZ2luZSBoYW5kbGluZyB0aGUgYnVmZmVyIG9wZXJhdGlv bnMKPiA+PiAtICogQGJvOiAmYW1kZ3B1X2JvIGJ1ZmZlciB0byBiZSByZXN0b3JlZAo+ID4+IC0g KiBAcmVzdjogcmVzZXJ2YXRpb24gb2JqZWN0IHdpdGggZW1iZWRkZWQgZmVuY2UKPiA+PiArICog YW1kZ3B1X2JvX3Jlc3RvcmVfc2hhZG93IC0gcmVzdG9yZSBhbiAmYW1kZ3B1X2JvIHNoYWRvdwo+ ID4+ICsgKgo+ID4+ICsgKiBAc2hhZG93OiAmYW1kZ3B1X2JvIHNoYWRvdyB0byBiZSByZXN0b3Jl ZAo+ID4+ICAgICogQGZlbmNlOiBkbWFfZmVuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcGVyYXRp b24KPiA+PiAtICogQGRpcmVjdDogd2hldGhlciB0byBzdWJtaXQgdGhlIGpvYiBkaXJlY3RseQo+ ID4+ICAgICoKPiA+PiAgICAqIENvcGllcyBhIGJ1ZmZlciBvYmplY3QncyBzaGFkb3cgY29udGVu dCBiYWNrIHRvIHRoZSBvYmplY3QuCj4gPj4gICAgKiBUaGlzIGlzIHVzZWQgZm9yIHJlY292ZXJp bmcgYSBidWZmZXIgZnJvbSBpdHMgc2hhZG93IGluIGNhc2Ugb2YgYSBncHUKPiA+PiBAQCAtNjk0 LDM2ICs2OTEsMTkgQEAgaW50IGFtZGdwdV9ib192YWxpZGF0ZShzdHJ1Y3QgYW1kZ3B1X2JvICpi bykKPiA+PiAgICAqIFJldHVybnM6Cj4gPj4gICAgKiAwIGZvciBzdWNjZXNzIG9yIGEgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+ID4+ICAgICovCj4gPj4gLWludCBhbWRncHVfYm9f cmVzdG9yZV9mcm9tX3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiA+PiAtCQkJ CSAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+ID4+IC0JCQkJICBzdHJ1Y3QgYW1kZ3B1X2Jv ICpibywKPiA+PiAtCQkJCSAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKPiA+PiAt CQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAo+ID4+IC0JCQkJICBib29sIGRpcmVjdCkK PiA+PiAraW50IGFtZGdwdV9ib19yZXN0b3JlX3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2JvICpzaGFk b3csIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPiA+PiAgIAo+ID4+ICAgewo+ID4+IC0Jc3Ry dWN0IGFtZGdwdV9ibyAqc2hhZG93ID0gYm8tPnNoYWRvdzsKPiA+PiAtCXVpbnQ2NF90IGJvX2Fk ZHIsIHNoYWRvd19hZGRyOwo+ID4+IC0JaW50IHI7Cj4gPj4gLQo+ID4+IC0JaWYgKCFzaGFkb3cp Cj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gLQo+ID4+IC0JYm9fYWRkciA9IGFtZGdwdV9i b19ncHVfb2Zmc2V0KGJvKTsKPiA+PiAtCXNoYWRvd19hZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZz ZXQoYm8tPnNoYWRvdyk7Cj4gPj4gLQo+ID4+IC0JciA9IHJlc2VydmF0aW9uX29iamVjdF9yZXNl cnZlX3NoYXJlZChiby0+dGJvLnJlc3YpOwo+ID4+IC0JaWYgKHIpCj4gPj4gLQkJZ290byBlcnI7 Cj4gPj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihzaGFk b3ctPnRiby5iZGV2KTsKPiA+PiArCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9IGFkZXYtPm1t YW4uYnVmZmVyX2Z1bmNzX3Jpbmc7Cj4gPj4gKwl1aW50NjRfdCBzaGFkb3dfYWRkciwgcGFyZW50 X2FkZHI7Cj4gPj4gICAKPiA+IE1heSBJIGtub3cgd2h5IHdvbid0IG5lZWQgdGhlIHJlc2VydmF0 aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZCgpIGhlcmU/IElzCj4gPiBpdCBiZWNhdXNlIHdlIG9u bHkgY29weSBidWZmZXIgZnJvbSBzaGFkb3cgcGFyZW50IGJvIGluc3RlYWQgb2Ygb3JpZ25hbCBi bz8KPiAKPiBUaGUgc2NoZWR1bGVyIGFuZCBkZWxheWVkIGZyZWUgdGhyZWFkIGFyZSBkaXNhYmxl ZCBhbmQgd2Ugd2FpdCBmb3IgdGhlIAo+IGNvcHkgdG8gZmluaXNoIGJlZm9yZSBhbGxvd2luZyBh bnkgZXZpY3Rpb24gdG8gcHJvY2VlZC4KPiAKPiBBZGRpbmcgdGhlIEJPIGFzIHNoYXJlZCBmZW5j ZSB0byB0aGUgQk8gY291bGQgYWN0dWFsbHkgYmUgaGFybWZ1bCAKPiBiZWNhdXNlIFRUTSBtaWdo dCBhbHJlYWR5IHdhbnQgdG8gZGVzdHJveSBpdC4KPiAKClRoYW5rcywgcGF0Y2ggaXMgUmV2aWV3 ZWQtYnk6IEh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFtZC5jb20+Cgo+IFJlZ2FyZHMsCj4gQ2hyaXN0 aWFuLgo+IAo+ID4KPiA+IFRoYW5rcywKPiA+IFJheQo+ID4KPiA+PiAtCXIgPSBhbWRncHVfY29w eV9idWZmZXIocmluZywgc2hhZG93X2FkZHIsIGJvX2FkZHIsCj4gPj4gLQkJCSAgICAgICBhbWRn cHVfYm9fc2l6ZShibyksIHJlc3YsIGZlbmNlLAo+ID4+IC0JCQkgICAgICAgZGlyZWN0LCBmYWxz ZSk7Cj4gPj4gLQlpZiAoIXIpCj4gPj4gLQkJYW1kZ3B1X2JvX2ZlbmNlKGJvLCAqZmVuY2UsIHRy dWUpOwo+ID4+ICsJc2hhZG93X2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChzaGFkb3cpOwo+ ID4+ICsJcGFyZW50X2FkZHIgPSBhbWRncHVfYm9fZ3B1X29mZnNldChzaGFkb3ctPnBhcmVudCk7 Cj4gPj4gICAKPiA+PiAtZXJyOgo+ID4+IC0JcmV0dXJuIHI7Cj4gPj4gKwlyZXR1cm4gYW1kZ3B1 X2NvcHlfYnVmZmVyKHJpbmcsIHNoYWRvd19hZGRyLCBwYXJlbnRfYWRkciwKPiA+PiArCQkJCSAg YW1kZ3B1X2JvX3NpemUoc2hhZG93KSwgTlVMTCwgZmVuY2UsCj4gPj4gKwkJCQkgIHRydWUsIGZh bHNlKTsKPiA+PiAgIH0KPiA+PiAgIAo+ID4+ICAgLyoqCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAo+ID4+IGluZGV4IDY0MzM3ZmYyYWQ2My4uN2QzMzEy ZDBkYTExIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9vYmplY3QuaAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9v YmplY3QuaAo+ID4+IEBAIC0yNzMsMTIgKzI3Myw4IEBAIGludCBhbWRncHVfYm9fYmFja3VwX3Rv X3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiA+PiAgIAkJCSAgICAgICBzdHJ1 Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2LAo+ID4+ICAgCQkJICAgICAgIHN0cnVjdCBkbWFf ZmVuY2UgKipmZW5jZSwgYm9vbCBkaXJlY3QpOwo+ID4+ICAgaW50IGFtZGdwdV9ib192YWxpZGF0 ZShzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7Cj4gPj4gLWludCBhbWRncHVfYm9fcmVzdG9yZV9mcm9t X3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiA+PiAtCQkJCSAgc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nLAo+ID4+IC0JCQkJICBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPiA+PiAt CQkJCSAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKPiA+PiAtCQkJCSAgc3RydWN0 IGRtYV9mZW5jZSAqKmZlbmNlLAo+ID4+IC0JCQkJICBib29sIGRpcmVjdCk7Cj4gPj4gK2ludCBh bWRncHVfYm9fcmVzdG9yZV9zaGFkb3coc3RydWN0IGFtZGdwdV9ibyAqc2hhZG93LAo+ID4+ICsJ CQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7Cj4gPj4gICB1aW50MzJfdCBhbWRncHVf Ym9fZ2V0X3ByZWZlcnJlZF9waW5fZG9tYWluKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ ID4+ICAgCQkJCQkgICAgdWludDMyX3QgZG9tYWluKTsKPiA+PiAgIAo+ID4+IC0tIAo+ID4+IDIu MTQuMQo+ID4+Cj4gPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+ID4+IGFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9hbWQtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=