From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 5/5] drm/amdgpu: fix shadow BO restoring Date: Mon, 17 Sep 2018 13:42:38 +0200 Message-ID: References: <20180914134257.2196-1-christian.koenig@amd.com> <20180914134257.2196-5-christian.koenig@amd.com> <20180917090901.GD25456@hr-amur2> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180917090901.GD25456@hr-amur2> Content-Language: en-US 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: Huang Rui Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMTcuMDkuMjAxOCB1bSAxMToxMCBzY2hyaWViIEh1YW5nIFJ1aToKPiBPbiBGcmksIFNlcCAx NCwgMjAxOCBhdCAwMzo0Mjo1N1BNICswMjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBE b24ndCBncmFiIHRoZSByZXNlcnZhdGlvbiBsb2NrIGFueSBtb3JlIGFuZCBzaW1wbGlmeSB0aGUg aGFuZGxpbmcgcXVpdGUKPj4gYSBiaXQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBL w7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwgMTA5ICsrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5j IHwgIDQ2ICsrKystLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9vYmplY3QuaCB8ICAgOCArLS0KPj4gICAzIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMo KyksIDEyMCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kZXZpY2UuYwo+PiBpbmRleCA4OTkzNDJjNmRmYWQuLjFjYmMzNzI5NjRmOCAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+PiBAQCAtMjk1 NCw1NCArMjk1NCw2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9pcF9wb3N0X3NvZnRfcmVz ZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4g ICAKPj4gLS8qKgo+PiAtICogYW1kZ3B1X2RldmljZV9yZWNvdmVyX3ZyYW1fZnJvbV9zaGFkb3cg LSByZXN0b3JlIHNoYWRvd2VkIFZSQU0gYnVmZmVycwo+PiAtICoKPj4gLSAqIEBhZGV2OiBhbWRn cHVfZGV2aWNlIHBvaW50ZXIKPj4gLSAqIEByaW5nOiBhbWRncHVfcmluZyBmb3IgdGhlIGVuZ2lu ZSBoYW5kbGluZyB0aGUgYnVmZmVyIG9wZXJhdGlvbnMKPj4gLSAqIEBibzogYW1kZ3B1X2JvIGJ1 ZmZlciB3aG9zZSBzaGFkb3cgaXMgYmVpbmcgcmVzdG9yZWQKPj4gLSAqIEBmZW5jZTogZG1hX2Zl bmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3BlcmF0aW9uCj4+IC0gKgo+PiAtICogUmVzdG9yZXMg dGhlIFZSQU0gYnVmZmVyIGNvbnRlbnRzIGZyb20gdGhlIHNoYWRvdyBpbiBHVFQuICBVc2VkIHRv Cj4+IC0gKiByZXN0b3JlIHRoaW5ncyBsaWtlIEdQVVZNIHBhZ2UgdGFibGVzIGFmdGVyIGEgR1BV IHJlc2V0IHdoZXJlCj4+IC0gKiB0aGUgY29udGVudHMgb2YgVlJBTSBtaWdodCBiZSBsb3N0Lgo+ PiAtICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVy ZS4KPj4gLSAqLwo+PiAtc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbV9mcm9t X3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4gLQkJCQkJCSAgc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nLAo+PiAtCQkJCQkJICBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gLQkJ CQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQo+PiAtewo+PiAtCXVpbnQzMl90IGRvbWFp bjsKPj4gLQlpbnQgcjsKPj4gLQo+PiAtCWlmICghYm8tPnNoYWRvdykKPj4gLQkJcmV0dXJuIDA7 Cj4+IC0KPj4gLQlyID0gYW1kZ3B1X2JvX3Jlc2VydmUoYm8sIHRydWUpOwo+PiAtCWlmIChyKQo+ PiAtCQlyZXR1cm4gcjsKPj4gLQlkb21haW4gPSBhbWRncHVfbWVtX3R5cGVfdG9fZG9tYWluKGJv LT50Ym8ubWVtLm1lbV90eXBlKTsKPj4gLQkvKiBpZiBibyBoYXMgYmVlbiBldmljdGVkLCB0aGVu IG5vIG5lZWQgdG8gcmVjb3ZlciAqLwo+PiAtCWlmIChkb21haW4gPT0gQU1ER1BVX0dFTV9ET01B SU5fVlJBTSkgewo+PiAtCQlyID0gYW1kZ3B1X2JvX3ZhbGlkYXRlKGJvLT5zaGFkb3cpOwo+PiAt CQlpZiAocikgewo+PiAtCQkJRFJNX0VSUk9SKCJibyB2YWxpZGF0ZSBmYWlsZWQhXG4iKTsKPj4g LQkJCWdvdG8gZXJyOwo+PiAtCQl9Cj4+IC0KPj4gLQkJciA9IGFtZGdwdV9ib19yZXN0b3JlX2Zy b21fc2hhZG93KGFkZXYsIHJpbmcsIGJvLAo+PiAtCQkJCQkJIE5VTEwsIGZlbmNlLCB0cnVlKTsK Pj4gLQkJaWYgKHIpIHsKPj4gLQkJCURSTV9FUlJPUigicmVjb3ZlciBwYWdlIHRhYmxlIGZhaWxl ZCFcbiIpOwo+PiAtCQkJZ290byBlcnI7Cj4+IC0JCX0KPj4gLQl9Cj4+IC1lcnI6Cj4+IC0JYW1k Z3B1X2JvX3VucmVzZXJ2ZShibyk7Cj4+IC0JcmV0dXJuIHI7Cj4+IC19Cj4+IC0KPj4gICAvKioK Pj4gICAgKiBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbSAtIFJlY292ZXIgc29tZSBWUkFNIGNv bnRlbnRzCj4+ICAgICoKPj4gQEAgLTMwMTAsMTYgKzI5NjIsMTUgQEAgc3RhdGljIGludCBhbWRn cHVfZGV2aWNlX3JlY292ZXJfdnJhbV9mcm9tX3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKPj4gICAgKiBSZXN0b3JlcyB0aGUgY29udGVudHMgb2YgVlJBTSBidWZmZXJzIGZyb20g dGhlIHNoYWRvd3MgaW4gR1RULiAgVXNlZCB0bwo+PiAgICAqIHJlc3RvcmUgdGhpbmdzIGxpa2Ug R1BVVk0gcGFnZSB0YWJsZXMgYWZ0ZXIgYSBHUFUgcmVzZXQgd2hlcmUKPj4gICAgKiB0aGUgY29u dGVudHMgb2YgVlJBTSBtaWdodCBiZSBsb3N0Lgo+PiAtICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Ms IDEgb24gZmFpbHVyZS4KPj4gKyAqCj4+ICsgKiBSZXR1cm5zOgo+PiArICogMCBvbiBzdWNjZXNz LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4+ICAgICovCj4+ICAgc3RhdGljIGlu dCBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK Pj4gICB7Cj4+IC0Jc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gYWRldi0+bW1hbi5idWZmZXJf ZnVuY3NfcmluZzsKPj4gLQlzdHJ1Y3QgYW1kZ3B1X2JvICpibywgKnRtcDsKPj4gICAJc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMLCAqbmV4dCA9IE5VTEw7Cj4+IC0JbG9uZyByID0gMTsK Pj4gLQlpbnQgaSA9IDA7Cj4+IC0JbG9uZyB0bW87Cj4+ICsJc3RydWN0IGFtZGdwdV9ibyAqc2hh ZG93Owo+PiArCWxvbmcgciA9IDEsIHRtbzsKPj4gICAKPj4gICAJaWYgKGFtZGdwdV9zcmlvdl9y dW50aW1lKGFkZXYpKQo+PiAgIAkJdG1vID0gbXNlY3NfdG9famlmZmllcyg4MDAwKTsKPj4gQEAg LTMwMjgsNDQgKzI5NzksNDAgQEAgc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJh bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4gICAKPj4gICAJRFJNX0lORk8oInJlY292 ZXIgdnJhbSBibyBmcm9tIHNoYWRvdyBzdGFydFxuIik7Cj4+ICAgCW11dGV4X2xvY2soJmFkZXYt PnNoYWRvd19saXN0X2xvY2spOwo+PiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShibywgdG1w LCAmYWRldi0+c2hhZG93X2xpc3QsIHNoYWRvd19saXN0KSB7Cj4+IC0JCW5leHQgPSBOVUxMOwo+ PiAtCQlhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbV9mcm9tX3NoYWRvdyhhZGV2LCByaW5nLCBi bywgJm5leHQpOwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoc2hhZG93LCAmYWRldi0+c2hhZG93 X2xpc3QsIHNoYWRvd19saXN0KSB7Cj4+ICsKPj4gKwkJLyogTm8gbmVlZCB0byByZWNvdmVyIGFu IGV2aWN0ZWQgQk8gKi8KPj4gKwkJaWYgKHNoYWRvdy0+dGJvLm1lbS5tZW1fdHlwZSAhPSBUVE1f UExfVFQgfHwKPj4gKwkJICAgIHNoYWRvdy0+cGFyZW50LT50Ym8ubWVtLm1lbV90eXBlICE9IFRU TV9QTF9WUkFNKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJciA9IGFtZGdwdV9ib19yZXN0 b3JlX3NoYWRvdyhzaGFkb3csICZuZXh0KTsKPj4gKwkJaWYgKHIpCj4+ICsJCQlicmVhazsKPj4g Kwo+PiAgIAkJaWYgKGZlbmNlKSB7Cj4+ICAgCQkJciA9IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQo ZmVuY2UsIGZhbHNlLCB0bW8pOwo+PiAtCQkJaWYgKHIgPT0gMCkKPj4gLQkJCQlwcl9lcnIoIndh aXQgZmVuY2UgJXBbJWRdIHRpbWVvdXRcbiIsIGZlbmNlLCBpKTsKPj4gLQkJCWVsc2UgaWYgKHIg PCAwKQo+PiAtCQkJCXByX2Vycigid2FpdCBmZW5jZSAlcFslZF0gaW50ZXJydXB0ZWRcbiIsIGZl bmNlLCBpKTsKPj4gLQkJCWlmIChyIDwgMSkgewo+PiAtCQkJCWRtYV9mZW5jZV9wdXQoZmVuY2Up Owo+PiAtCQkJCWZlbmNlID0gbmV4dDsKPj4gKwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+PiAr CQkJZmVuY2UgPSBuZXh0Owo+PiArCQkJaWYgKHIgPD0gMCkKPj4gICAJCQkJYnJlYWs7Cj4+IC0J CQl9Cj4+IC0JCQlpKys7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJCQlmZW5jZSA9IG5leHQ7Cj4+ICAg CQl9Cj4+IC0KPj4gLQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4+IC0JCWZlbmNlID0gbmV4dDsK Pj4gICAJfQo+PiAgIAltdXRleF91bmxvY2soJmFkZXYtPnNoYWRvd19saXN0X2xvY2spOwo+PiAg IAo+PiAtCWlmIChmZW5jZSkgewo+PiAtCQlyID0gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChmZW5j ZSwgZmFsc2UsIHRtbyk7Cj4+IC0JCWlmIChyID09IDApCj4+IC0JCQlwcl9lcnIoIndhaXQgZmVu Y2UgJXBbJWRdIHRpbWVvdXRcbiIsIGZlbmNlLCBpKTsKPj4gLQkJZWxzZSBpZiAociA8IDApCj4+ IC0JCQlwcl9lcnIoIndhaXQgZmVuY2UgJXBbJWRdIGludGVycnVwdGVkXG4iLCBmZW5jZSwgaSk7 Cj4+IC0KPj4gLQl9Cj4+ICsJaWYgKGZlbmNlKQo+PiArCQl0bW8gPSBkbWFfZmVuY2Vfd2FpdF90 aW1lb3V0KGZlbmNlLCBmYWxzZSwgdG1vKTsKPj4gICAJZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4+ ICAgCj4+IC0JaWYgKHIgPiAwKQo+PiAtCQlEUk1fSU5GTygicmVjb3ZlciB2cmFtIGJvIGZyb20g c2hhZG93IGRvbmVcbiIpOwo+PiAtCWVsc2UKPj4gKwlpZiAociA8PSAwIHx8IHRtbyA8PSAwKSB7 Cj4+ICAgCQlEUk1fRVJST1IoInJlY292ZXIgdnJhbSBibyBmcm9tIHNoYWRvdyBmYWlsZWRcbiIp Owo+PiArCQlyZXR1cm4gLUVJTzsKPj4gKwl9Cj4+ICAgCj4+IC0JcmV0dXJuIChyID4gMCkgPyAw IDogMTsKPj4gKwlEUk1fSU5GTygicmVjb3ZlciB2cmFtIGJvIGZyb20gc2hhZG93IGRvbmVcbiIp Owo+PiArCXJldHVybiAwOwo+PiAgIH0KPj4gICAKPj4gICAvKioKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+PiBpbmRleCA2NTBjNDVjODk2ZjAuLmNhOGEw YjdhNWFjMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X29iamVjdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmpl Y3QuYwo+PiBAQCAtNTQ3LDcgKzU0Nyw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2JvX2NyZWF0ZV9z aGFkb3coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+ICAgCWlmICghcikgewo+PiAgIAkJ Ym8tPnNoYWRvdy0+cGFyZW50ID0gYW1kZ3B1X2JvX3JlZihibyk7Cj4+ICAgCQltdXRleF9sb2Nr KCZhZGV2LT5zaGFkb3dfbGlzdF9sb2NrKTsKPj4gLQkJbGlzdF9hZGRfdGFpbCgmYm8tPnNoYWRv d19saXN0LCAmYWRldi0+c2hhZG93X2xpc3QpOwo+PiArCQlsaXN0X2FkZF90YWlsKCZiby0+c2hh ZG93LT5zaGFkb3dfbGlzdCwgJmFkZXYtPnNoYWRvd19saXN0KTsKPj4gICAJCW11dGV4X3VubG9j aygmYWRldi0+c2hhZG93X2xpc3RfbG9jayk7Cj4+ICAgCX0KPj4gICAKPj4gQEAgLTY3OSwxMyAr Njc5LDEwIEBAIGludCBhbWRncHVfYm9fdmFsaWRhdGUoc3RydWN0IGFtZGdwdV9ibyAqYm8pCj4+ ICAgfQo+PiAgIAo+PiAgIC8qKgo+PiAtICogYW1kZ3B1X2JvX3Jlc3RvcmVfZnJvbV9zaGFkb3cg LSByZXN0b3JlIGFuICZhbWRncHVfYm8gYnVmZmVyIG9iamVjdAo+PiAtICogQGFkZXY6IGFtZGdw dSBkZXZpY2Ugb2JqZWN0Cj4+IC0gKiBAcmluZzogYW1kZ3B1X3JpbmcgZm9yIHRoZSBlbmdpbmUg aGFuZGxpbmcgdGhlIGJ1ZmZlciBvcGVyYXRpb25zCj4+IC0gKiBAYm86ICZhbWRncHVfYm8gYnVm ZmVyIHRvIGJlIHJlc3RvcmVkCj4+IC0gKiBAcmVzdjogcmVzZXJ2YXRpb24gb2JqZWN0IHdpdGgg ZW1iZWRkZWQgZmVuY2UKPj4gKyAqIGFtZGdwdV9ib19yZXN0b3JlX3NoYWRvdyAtIHJlc3RvcmUg YW4gJmFtZGdwdV9ibyBzaGFkb3cKPj4gKyAqCj4+ICsgKiBAc2hhZG93OiAmYW1kZ3B1X2JvIHNo YWRvdyB0byBiZSByZXN0b3JlZAo+PiAgICAqIEBmZW5jZTogZG1hX2ZlbmNlIGFzc29jaWF0ZWQg d2l0aCB0aGUgb3BlcmF0aW9uCj4+IC0gKiBAZGlyZWN0OiB3aGV0aGVyIHRvIHN1Ym1pdCB0aGUg am9iIGRpcmVjdGx5Cj4+ICAgICoKPj4gICAgKiBDb3BpZXMgYSBidWZmZXIgb2JqZWN0J3Mgc2hh ZG93IGNvbnRlbnQgYmFjayB0byB0aGUgb2JqZWN0Lgo+PiAgICAqIFRoaXMgaXMgdXNlZCBmb3Ig cmVjb3ZlcmluZyBhIGJ1ZmZlciBmcm9tIGl0cyBzaGFkb3cgaW4gY2FzZSBvZiBhIGdwdQo+PiBA QCAtNjk0LDM2ICs2OTEsMTkgQEAgaW50IGFtZGdwdV9ib192YWxpZGF0ZShzdHJ1Y3QgYW1kZ3B1 X2JvICpibykKPj4gICAgKiBSZXR1cm5zOgo+PiAgICAqIDAgZm9yIHN1Y2Nlc3Mgb3IgYSBuZWdh dGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4+ICAgICovCj4+IC1pbnQgYW1kZ3B1X2JvX3Jl c3RvcmVfZnJvbV9zaGFkb3coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IC0JCQkJICBz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IC0JCQkJICBzdHJ1Y3QgYW1kZ3B1X2JvICpibywK Pj4gLQkJCQkgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YsCj4+IC0JCQkJICBzdHJ1 Y3QgZG1hX2ZlbmNlICoqZmVuY2UsCj4+IC0JCQkJICBib29sIGRpcmVjdCkKPj4gK2ludCBhbWRn cHVfYm9fcmVzdG9yZV9zaGFkb3coc3RydWN0IGFtZGdwdV9ibyAqc2hhZG93LCBzdHJ1Y3QgZG1h X2ZlbmNlICoqZmVuY2UpCj4+ICAgCj4+ICAgewo+PiAtCXN0cnVjdCBhbWRncHVfYm8gKnNoYWRv dyA9IGJvLT5zaGFkb3c7Cj4+IC0JdWludDY0X3QgYm9fYWRkciwgc2hhZG93X2FkZHI7Cj4+IC0J aW50IHI7Cj4+IC0KPj4gLQlpZiAoIXNoYWRvdykKPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4+IC0K Pj4gLQlib19hZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoYm8pOwo+PiAtCXNoYWRvd19hZGRy ID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQoYm8tPnNoYWRvdyk7Cj4+IC0KPj4gLQlyID0gcmVzZXJ2 YXRpb25fb2JqZWN0X3Jlc2VydmVfc2hhcmVkKGJvLT50Ym8ucmVzdik7Cj4+IC0JaWYgKHIpCj4+ IC0JCWdvdG8gZXJyOwo+PiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0 bV9hZGV2KHNoYWRvdy0+dGJvLmJkZXYpOwo+PiArCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9 IGFkZXYtPm1tYW4uYnVmZmVyX2Z1bmNzX3Jpbmc7Cj4+ICsJdWludDY0X3Qgc2hhZG93X2FkZHIs IHBhcmVudF9hZGRyOwo+PiAgIAo+IE1heSBJIGtub3cgd2h5IHdvbid0IG5lZWQgdGhlIHJlc2Vy dmF0aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZCgpIGhlcmU/IElzCj4gaXQgYmVjYXVzZSB3ZSBv bmx5IGNvcHkgYnVmZmVyIGZyb20gc2hhZG93IHBhcmVudCBibyBpbnN0ZWFkIG9mIG9yaWduYWwg Ym8/CgpUaGUgc2NoZWR1bGVyIGFuZCBkZWxheWVkIGZyZWUgdGhyZWFkIGFyZSBkaXNhYmxlZCBh bmQgd2Ugd2FpdCBmb3IgdGhlIApjb3B5IHRvIGZpbmlzaCBiZWZvcmUgYWxsb3dpbmcgYW55IGV2 aWN0aW9uIHRvIHByb2NlZWQuCgpBZGRpbmcgdGhlIEJPIGFzIHNoYXJlZCBmZW5jZSB0byB0aGUg Qk8gY291bGQgYWN0dWFsbHkgYmUgaGFybWZ1bCAKYmVjYXVzZSBUVE0gbWlnaHQgYWxyZWFkeSB3 YW50IHRvIGRlc3Ryb3kgaXQuCgpSZWdhcmRzLApDaHJpc3RpYW4uCgo+Cj4gVGhhbmtzLAo+IFJh eQo+Cj4+IC0JciA9IGFtZGdwdV9jb3B5X2J1ZmZlcihyaW5nLCBzaGFkb3dfYWRkciwgYm9fYWRk ciwKPj4gLQkJCSAgICAgICBhbWRncHVfYm9fc2l6ZShibyksIHJlc3YsIGZlbmNlLAo+PiAtCQkJ ICAgICAgIGRpcmVjdCwgZmFsc2UpOwo+PiAtCWlmICghcikKPj4gLQkJYW1kZ3B1X2JvX2ZlbmNl KGJvLCAqZmVuY2UsIHRydWUpOwo+PiArCXNoYWRvd19hZGRyID0gYW1kZ3B1X2JvX2dwdV9vZmZz ZXQoc2hhZG93KTsKPj4gKwlwYXJlbnRfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0KHNoYWRv dy0+cGFyZW50KTsKPj4gICAKPj4gLWVycjoKPj4gLQlyZXR1cm4gcjsKPj4gKwlyZXR1cm4gYW1k Z3B1X2NvcHlfYnVmZmVyKHJpbmcsIHNoYWRvd19hZGRyLCBwYXJlbnRfYWRkciwKPj4gKwkJCQkg IGFtZGdwdV9ib19zaXplKHNoYWRvdyksIE5VTEwsIGZlbmNlLAo+PiArCQkJCSAgdHJ1ZSwgZmFs c2UpOwo+PiAgIH0KPj4gICAKPj4gICAvKioKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9vYmplY3QuaAo+PiBpbmRleCA2NDMzN2ZmMmFkNjMuLjdkMzMxMmQwZGExMSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAo+PiBAQCAt MjczLDEyICsyNzMsOCBAQCBpbnQgYW1kZ3B1X2JvX2JhY2t1cF90b19zaGFkb3coc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCj4+ICAgCQkJICAgICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3QgKnJlc3YsCj4+ICAgCQkJICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSwgYm9vbCBk aXJlY3QpOwo+PiAgIGludCBhbWRncHVfYm9fdmFsaWRhdGUoc3RydWN0IGFtZGdwdV9ibyAqYm8p Owo+PiAtaW50IGFtZGdwdV9ib19yZXN0b3JlX2Zyb21fc2hhZG93KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAo+PiAtCQkJCSAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+PiAtCQkJCSAg c3RydWN0IGFtZGdwdV9ibyAqYm8sCj4+IC0JCQkJICBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0 ICpyZXN2LAo+PiAtCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAo+PiAtCQkJCSAgYm9v bCBkaXJlY3QpOwo+PiAraW50IGFtZGdwdV9ib19yZXN0b3JlX3NoYWRvdyhzdHJ1Y3QgYW1kZ3B1 X2JvICpzaGFkb3csCj4+ICsJCQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7Cj4+ICAg dWludDMyX3QgYW1kZ3B1X2JvX2dldF9wcmVmZXJyZWRfcGluX2RvbWFpbihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKPj4gICAJCQkJCSAgICB1aW50MzJfdCBkb21haW4pOwo+PiAgIAo+PiAt LSAKPj4gMi4xNC4xCj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==