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: Fri, 14 Sep 2018 13:54:33 +0200 Message-ID: References: <20180911095602.10152-1-christian.koenig@amd.com> <20180911095602.10152-5-christian.koenig@amd.com> <073f24f7-df48-55f6-f4fb-2d250cfd2dd1@amd.com> 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: <073f24f7-df48-55f6-f4fb-2d250cfd2dd1-5C7GfCeVMHo@public.gmane.org> 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: "Zhang, Jerry(Junwei)" , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org QW0gMTMuMDkuMjAxOCB1bSAxMToyOSBzY2hyaWViIFpoYW5nLCBKZXJyeShKdW53ZWkpOgo+IE9u IDA5LzExLzIwMTggMDU6NTYgUE0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+IERvbid0IGdy YWIgdGhlIHJlc2VydmF0aW9uIGxvY2sgYW55IG1vcmUgYW5kIHNpbXBsaWZ5IHRoZSBoYW5kbGlu ZyBxdWl0ZQo+PiBhIGJpdC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8 Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+PiAtLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwgMTA5IAo+PiArKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMg fMKgIDQ2ICsrKystLS0tLS0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfb2JqZWN0LmggfMKgwqAgOCArLS0KPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRp b25zKCspLCAxMjAgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2RldmljZS5jCj4+IGluZGV4IDVlYmE2NmVjZjY2OC4uMjBiYjcwMmY1Yzdm IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+ IEBAIC0yOTQwLDU0ICsyOTQwLDYgQEAgc3RhdGljIGludCAKPj4gYW1kZ3B1X2RldmljZV9pcF9w b3N0X3NvZnRfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+IMKgwqDCoMKgwqAg cmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgLS8qKgo+PiAtICogYW1kZ3B1X2RldmljZV9yZWNvdmVy X3ZyYW1fZnJvbV9zaGFkb3cgLSByZXN0b3JlIHNoYWRvd2VkIFZSQU0gCj4+IGJ1ZmZlcnMKPj4g LSAqCj4+IC0gKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4+IC0gKiBAcmluZzogYW1k Z3B1X3JpbmcgZm9yIHRoZSBlbmdpbmUgaGFuZGxpbmcgdGhlIGJ1ZmZlciBvcGVyYXRpb25zCj4+ IC0gKiBAYm86IGFtZGdwdV9ibyBidWZmZXIgd2hvc2Ugc2hhZG93IGlzIGJlaW5nIHJlc3RvcmVk Cj4+IC0gKiBAZmVuY2U6IGRtYV9mZW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIG9wZXJhdGlvbgo+ PiAtICoKPj4gLSAqIFJlc3RvcmVzIHRoZSBWUkFNIGJ1ZmZlciBjb250ZW50cyBmcm9tIHRoZSBz aGFkb3cgaW4gR1RULiBVc2VkIHRvCj4+IC0gKiByZXN0b3JlIHRoaW5ncyBsaWtlIEdQVVZNIHBh Z2UgdGFibGVzIGFmdGVyIGEgR1BVIHJlc2V0IHdoZXJlCj4+IC0gKiB0aGUgY29udGVudHMgb2Yg VlJBTSBtaWdodCBiZSBsb3N0Lgo+PiAtICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZl IGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPj4gLSAqLwo+PiAtc3RhdGljIGludCBhbWRncHVfZGV2 aWNlX3JlY292ZXJfdnJhbV9mcm9tX3NoYWRvdyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFf ZmVuY2UgKipmZW5jZSkKPj4gLXsKPj4gLcKgwqDCoCB1aW50MzJfdCBkb21haW47Cj4+IC3CoMKg wqAgaW50IHI7Cj4+IC0KPj4gLcKgwqDCoCBpZiAoIWJvLT5zaGFkb3cpCj4+IC3CoMKgwqDCoMKg wqDCoCByZXR1cm4gMDsKPj4gLQo+PiAtwqDCoMKgIHIgPSBhbWRncHVfYm9fcmVzZXJ2ZShibywg dHJ1ZSk7Cj4+IC3CoMKgwqAgaWYgKHIpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsKPj4g LcKgwqDCoCBkb21haW4gPSBhbWRncHVfbWVtX3R5cGVfdG9fZG9tYWluKGJvLT50Ym8ubWVtLm1l bV90eXBlKTsKPj4gLcKgwqDCoCAvKiBpZiBibyBoYXMgYmVlbiBldmljdGVkLCB0aGVuIG5vIG5l ZWQgdG8gcmVjb3ZlciAqLwo+PiAtwqDCoMKgIGlmIChkb21haW4gPT0gQU1ER1BVX0dFTV9ET01B SU5fVlJBTSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV9ib192YWxpZGF0ZShiby0+ c2hhZG93KTsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChyKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIERSTV9FUlJPUigiYm8gdmFsaWRhdGUgZmFpbGVkIVxuIik7Cj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+PiAtwqDCoMKgwqDCoMKgwqAgfQo+PiAtCj4+IC3CoMKg wqDCoMKgwqDCoCByID0gYW1kZ3B1X2JvX3Jlc3RvcmVfZnJvbV9zaGFkb3coYWRldiwgcmluZywg Ym8sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg TlVMTCwgZmVuY2UsIHRydWUpOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJyZWNvdmVyIHBhZ2UgdGFibGUgZmFpbGVkIVxu Iik7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+PiAtwqDCoMKgwqDCoMKg wqAgfQo+PiAtwqDCoMKgIH0KPj4gLWVycjoKPj4gLcKgwqDCoCBhbWRncHVfYm9fdW5yZXNlcnZl KGJvKTsKPj4gLcKgwqDCoCByZXR1cm4gcjsKPj4gLX0KPj4gLQo+PiDCoCAvKioKPj4gwqDCoCAq IGFtZGdwdV9kZXZpY2VfcmVjb3Zlcl92cmFtIC0gUmVjb3ZlciBzb21lIFZSQU0gY29udGVudHMK Pj4gwqDCoCAqCj4+IEBAIC0yOTk2LDE2ICsyOTQ4LDE1IEBAIHN0YXRpYyBpbnQgCj4+IGFtZGdw dV9kZXZpY2VfcmVjb3Zlcl92cmFtX2Zyb21fc2hhZG93KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAo+PiDCoMKgICogUmVzdG9yZXMgdGhlIGNvbnRlbnRzIG9mIFZSQU0gYnVmZmVycyBmcm9t IHRoZSBzaGFkb3dzIGluIEdUVC7CoCAKPj4gVXNlZCB0bwo+PiDCoMKgICogcmVzdG9yZSB0aGlu Z3MgbGlrZSBHUFVWTSBwYWdlIHRhYmxlcyBhZnRlciBhIEdQVSByZXNldCB3aGVyZQo+PiDCoMKg ICogdGhlIGNvbnRlbnRzIG9mIFZSQU0gbWlnaHQgYmUgbG9zdC4KPj4gLSAqIFJldHVybnMgMCBv biBzdWNjZXNzLCAxIG9uIGZhaWx1cmUuCj4+ICsgKgo+PiArICogUmV0dXJuczoKPj4gKyAqIDAg b24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+PiDCoMKgICovCj4+ IMKgIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9yZWNvdmVyX3ZyYW0oc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCj4+IMKgIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcg PSBhZGV2LT5tbWFuLmJ1ZmZlcl9mdW5jc19yaW5nOwo+PiAtwqDCoMKgIHN0cnVjdCBhbWRncHVf Ym8gKmJvLCAqdG1wOwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gTlVM TCwgKm5leHQgPSBOVUxMOwo+PiAtwqDCoMKgIGxvbmcgciA9IDE7Cj4+IC3CoMKgwqAgaW50IGkg PSAwOwo+PiAtwqDCoMKgIGxvbmcgdG1vOwo+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKnNo YWRvdzsKPj4gK8KgwqDCoCBsb25nIHIgPSAxLCB0bW87Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKGFt ZGdwdV9zcmlvdl9ydW50aW1lKGFkZXYpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdG1vID0gbXNl Y3NfdG9famlmZmllcyg4MDAwKTsKPj4gQEAgLTMwMTQsNDQgKzI5NjUsNDAgQEAgc3RhdGljIGlu dCBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbShzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCj4+IMKgIMKgwqDCoMKgwqAgRFJNX0lORk8oInJlY292ZXIgdnJhbSBibyBmcm9tIHNoYWRv dyBzdGFydFxuIik7Cj4+IMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmYWRldi0+c2hhZG93X2xpc3Rf bG9jayk7Cj4+IC3CoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGJvLCB0bXAsICZhZGV2 LT5zaGFkb3dfbGlzdCwgCj4+IHNoYWRvd19saXN0KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBuZXh0 ID0gTlVMTDsKPj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfcmVjb3Zlcl92cmFtX2Zy b21fc2hhZG93KGFkZXYsIHJpbmcsIGJvLCAmbmV4dCk7Cj4+ICvCoMKgwqAgbGlzdF9mb3JfZWFj aF9lbnRyeShzaGFkb3csICZhZGV2LT5zaGFkb3dfbGlzdCwgc2hhZG93X2xpc3QpIHsKPj4gKwo+ PiArwqDCoMKgwqDCoMKgwqAgLyogTm8gbmVlZCB0byByZWNvdmVyIGFuIGV2aWN0ZWQgQk8gKi8K Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzaGFkb3ctPnRiby5tZW0ubWVtX3R5cGUgIT0gVFRNX1BM X1RUIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNoYWRvdy0+cGFyZW50LT50Ym8ubWVt Lm1lbV90eXBlICE9IFRUTV9QTF9WUkFNKQo+IGlzIHRoZXJlIGEgY2hhbmdlIHRoYXQgc2hhZG93 IGJvIGV2aWN0ZWQgdG8gb3RoZXIgZG9tYWluPwo+IGxpa2UgU1lTVEVNPwoKWWVzLCB0aGF0J3Mg d2h5IEkgdGVzdCAiIT0gVFRNX1BMX1RUIiBoZXJlLgoKV2hhdCBjYW4gaGFwcGVuIGlzIHRoYXQg ZWl0aGVyIHRoZSBzaGFkb3cgb3IgdGhlIHBhZ2UgdGFibGUgb3IgcGFnZSAKZGlyZWN0b3J5IGlz IGV2aWN0ZWQuCgpCdXQgaW4gdGhpcyBjYXNlIHdlIGRvbid0IG5lZWQgdG8gcmVzdG9yZSBhbnl0 aGluZyBiZWNhdXNlIG9mIHBhdGNoICMxIAppbiB0aGlzIHNlcmllcy4KClJlZ2FyZHMsCkNocmlz dGlhbi4KCj4KPiBSZWdhcmRzLAo+IEplcnJ5Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNv bnRpbnVlOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X2JvX3Jlc3RvcmVfc2hh ZG93KHNoYWRvdywgJm5leHQpOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHIpCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZmVu Y2UpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGRtYV9mZW5jZV93YWl0X3Rp bWVvdXQoZmVuY2UsIGZhbHNlLCB0bW8pOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo ciA9PSAwKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2Vycigid2FpdCBm ZW5jZSAlcFslZF0gdGltZW91dFxuIiwgZmVuY2UsIGkpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBlbHNlIGlmIChyIDwgMCkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw cl9lcnIoIndhaXQgZmVuY2UgJXBbJWRdIGludGVycnVwdGVkXG4iLCBmZW5jZSwgaSk7Cj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyIDwgMSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZlbmNlID0gbmV4dDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1h X2ZlbmNlX3B1dChmZW5jZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZlbmNlID0gbmV4 dDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIgPD0gMCkKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpKys7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVs c2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmZW5jZSA9IG5leHQ7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGRtYV9mZW5jZV9wdXQoZmVuY2Up Owo+PiAtwqDCoMKgwqDCoMKgwqAgZmVuY2UgPSBuZXh0Owo+PiDCoMKgwqDCoMKgIH0KPj4gwqDC oMKgwqDCoCBtdXRleF91bmxvY2soJmFkZXYtPnNoYWRvd19saXN0X2xvY2spOwo+PiDCoCAtwqDC oMKgIGlmIChmZW5jZSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgciA9IGRtYV9mZW5jZV93YWl0X3Rp bWVvdXQoZmVuY2UsIGZhbHNlLCB0bW8pOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIgPT0gMCkK Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJ3YWl0IGZlbmNlICVwWyVkXSB0aW1l b3V0XG4iLCBmZW5jZSwgaSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChyIDwgMCkKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCJ3YWl0IGZlbmNlICVwWyVkXSBpbnRlcnJ1 cHRlZFxuIiwgZmVuY2UsIGkpOwo+PiAtCj4+IC3CoMKgwqAgfQo+PiArwqDCoMKgIGlmIChmZW5j ZSkKPj4gK8KgwqDCoMKgwqDCoMKgIHRtbyA9IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZmVuY2Us IGZhbHNlLCB0bW8pOwo+PiDCoMKgwqDCoMKgIGRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+PiDCoCAt wqDCoMKgIGlmIChyID4gMCkKPj4gLcKgwqDCoMKgwqDCoMKgIERSTV9JTkZPKCJyZWNvdmVyIHZy YW0gYm8gZnJvbSBzaGFkb3cgZG9uZVxuIik7Cj4+IC3CoMKgwqAgZWxzZQo+PiArwqDCoMKgIGlm IChyIDw9IDAgfHwgdG1vIDw9IDApIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigi cmVjb3ZlciB2cmFtIGJvIGZyb20gc2hhZG93IGZhaWxlZFxuIik7Cj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVJTzsKPj4gK8KgwqDCoCB9Cj4+IMKgIC3CoMKgwqAgcmV0dXJuIChyID4gMCkg PyAwIDogMTsKPj4gK8KgwqDCoCBEUk1fSU5GTygicmVjb3ZlciB2cmFtIGJvIGZyb20gc2hhZG93 IGRvbmVcbiIpOwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIMKgIC8qKgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jIAo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+PiBpbmRleCAz YTZmOTJkZTU1MDQuLjViNmQ1ZmNjMjE1MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+PiBAQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X2JvX2NyZWF0ZV9zaGFkb3coc3RydWN0IAo+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+ PiDCoMKgwqDCoMKgIGlmICghcikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYm8tPnNoYWRvdy0+ cGFyZW50ID0gYW1kZ3B1X2JvX3JlZihibyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF9s b2NrKCZhZGV2LT5zaGFkb3dfbGlzdF9sb2NrKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGxpc3RfYWRk X3RhaWwoJmJvLT5zaGFkb3dfbGlzdCwgJmFkZXYtPnNoYWRvd19saXN0KTsKPj4gK8KgwqDCoMKg wqDCoMKgIGxpc3RfYWRkX3RhaWwoJmJvLT5zaGFkb3ctPnNoYWRvd19saXN0LCAmYWRldi0+c2hh ZG93X2xpc3QpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZhZGV2LT5zaGFk b3dfbGlzdF9sb2NrKTsKPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIEBAIC02NjksMTMgKzY2OSwxMCBA QCBpbnQgYW1kZ3B1X2JvX3ZhbGlkYXRlKHN0cnVjdCBhbWRncHVfYm8gKmJvKQo+PiDCoCB9Cj4+ IMKgIMKgIC8qKgo+PiAtICogYW1kZ3B1X2JvX3Jlc3RvcmVfZnJvbV9zaGFkb3cgLSByZXN0b3Jl IGFuICZhbWRncHVfYm8gYnVmZmVyIG9iamVjdAo+PiAtICogQGFkZXY6IGFtZGdwdSBkZXZpY2Ug b2JqZWN0Cj4+IC0gKiBAcmluZzogYW1kZ3B1X3JpbmcgZm9yIHRoZSBlbmdpbmUgaGFuZGxpbmcg dGhlIGJ1ZmZlciBvcGVyYXRpb25zCj4+IC0gKiBAYm86ICZhbWRncHVfYm8gYnVmZmVyIHRvIGJl IHJlc3RvcmVkCj4+IC0gKiBAcmVzdjogcmVzZXJ2YXRpb24gb2JqZWN0IHdpdGggZW1iZWRkZWQg ZmVuY2UKPj4gKyAqIGFtZGdwdV9ib19yZXN0b3JlX3NoYWRvdyAtIHJlc3RvcmUgYW4gJmFtZGdw dV9ibyBzaGFkb3cKPj4gKyAqCj4+ICsgKiBAc2hhZG93OiAmYW1kZ3B1X2JvIHNoYWRvdyB0byBi ZSByZXN0b3JlZAo+PiDCoMKgICogQGZlbmNlOiBkbWFfZmVuY2UgYXNzb2NpYXRlZCB3aXRoIHRo ZSBvcGVyYXRpb24KPj4gLSAqIEBkaXJlY3Q6IHdoZXRoZXIgdG8gc3VibWl0IHRoZSBqb2IgZGly ZWN0bHkKPj4gwqDCoCAqCj4+IMKgwqAgKiBDb3BpZXMgYSBidWZmZXIgb2JqZWN0J3Mgc2hhZG93 IGNvbnRlbnQgYmFjayB0byB0aGUgb2JqZWN0Lgo+PiDCoMKgICogVGhpcyBpcyB1c2VkIGZvciBy ZWNvdmVyaW5nIGEgYnVmZmVyIGZyb20gaXRzIHNoYWRvdyBpbiBjYXNlIG9mIAo+PiBhIGdwdQo+ PiBAQCAtNjg0LDM2ICs2ODEsMTkgQEAgaW50IGFtZGdwdV9ib192YWxpZGF0ZShzdHJ1Y3QgYW1k Z3B1X2JvICpibykKPj4gwqDCoCAqIFJldHVybnM6Cj4+IMKgwqAgKiAwIGZvciBzdWNjZXNzIG9y IGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+PiDCoMKgICovCj4+IC1pbnQgYW1k Z3B1X2JvX3Jlc3RvcmVfZnJvbV9zaGFkb3coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdw dV9ibyAqYm8sCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBy ZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYm9vbCBkaXJlY3QpCj4+ICtpbnQgYW1kZ3B1X2JvX3Jlc3RvcmVfc2hh ZG93KHN0cnVjdCBhbWRncHVfYm8gKnNoYWRvdywgc3RydWN0IAo+PiBkbWFfZmVuY2UgKipmZW5j ZSkKPj4gwqAgwqAgewo+PiAtwqDCoMKgIHN0cnVjdCBhbWRncHVfYm8gKnNoYWRvdyA9IGJvLT5z aGFkb3c7Cj4+IC3CoMKgwqAgdWludDY0X3QgYm9fYWRkciwgc2hhZG93X2FkZHI7Cj4+IC3CoMKg wqAgaW50IHI7Cj4+IC0KPj4gLcKgwqDCoCBpZiAoIXNoYWRvdykKPj4gLcKgwqDCoMKgwqDCoMKg IHJldHVybiAtRUlOVkFMOwo+PiAtCj4+IC3CoMKgwqAgYm9fYWRkciA9IGFtZGdwdV9ib19ncHVf b2Zmc2V0KGJvKTsKPj4gLcKgwqDCoCBzaGFkb3dfYWRkciA9IGFtZGdwdV9ib19ncHVfb2Zmc2V0 KGJvLT5zaGFkb3cpOwo+PiAtCj4+IC3CoMKgwqAgciA9IHJlc2VydmF0aW9uX29iamVjdF9yZXNl cnZlX3NoYXJlZChiby0+dGJvLnJlc3YpOwo+PiAtwqDCoMKgIGlmIChyKQo+PiAtwqDCoMKgwqDC oMKgwqAgZ290byBlcnI7Cj4+ICvCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBh bWRncHVfdHRtX2FkZXYoc2hhZG93LT50Ym8uYmRldik7Cj4+ICvCoMKgwqAgc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nID0gYWRldi0+bW1hbi5idWZmZXJfZnVuY3NfcmluZzsKPj4gK8KgwqDCoCB1 aW50NjRfdCBzaGFkb3dfYWRkciwgcGFyZW50X2FkZHI7Cj4+IMKgIC3CoMKgwqAgciA9IGFtZGdw dV9jb3B5X2J1ZmZlcihyaW5nLCBzaGFkb3dfYWRkciwgYm9fYWRkciwKPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfYm9fc2l6ZShibyksIHJlc3YsIGZlbmNl LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpcmVjdCwgZmFsc2Up Owo+PiAtwqDCoMKgIGlmICghcikKPj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9ib19mZW5jZShi bywgKmZlbmNlLCB0cnVlKTsKPj4gK8KgwqDCoCBzaGFkb3dfYWRkciA9IGFtZGdwdV9ib19ncHVf b2Zmc2V0KHNoYWRvdyk7Cj4+ICvCoMKgwqAgcGFyZW50X2FkZHIgPSBhbWRncHVfYm9fZ3B1X29m ZnNldChzaGFkb3ctPnBhcmVudCk7Cj4+IMKgIC1lcnI6Cj4+IC3CoMKgwqAgcmV0dXJuIHI7Cj4+ ICvCoMKgwqAgcmV0dXJuIGFtZGdwdV9jb3B5X2J1ZmZlcihyaW5nLCBzaGFkb3dfYWRkciwgcGFy ZW50X2FkZHIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9i b19zaXplKHNoYWRvdyksIE5VTEwsIGZlbmNlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB0cnVlLCBmYWxzZSk7Cj4+IMKgIH0KPj4gwqAgwqAgLyoqCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmggCj4+IGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCj4+IGluZGV4IDkwN2ZkZjQ2 ZDg5NS4uMzYzZGI0MTdmYjJlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X29iamVjdC5oCj4+IEBAIC0yNzMsMTIgKzI3Myw4IEBAIGludCBhbWRncHVfYm9fYmFj a3VwX3RvX3NoYWRvdyhzdHJ1Y3QgCj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHJlc2VydmF0aW9uX29iamVj dCAqcmVzdiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZG1hX2ZlbmNlICoqZmVuY2UsIGJvb2wgZGlyZWN0KTsKPj4gwqAgaW50IGFtZGdwdV9ib192 YWxpZGF0ZShzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7Cj4+IC1pbnQgYW1kZ3B1X2JvX3Jlc3RvcmVf ZnJvbV9zaGFkb3coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9ibyAqYm8sCj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3QgKnJlc3YsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk bWFfZmVuY2UgKipmZW5jZSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ym9vbCBkaXJlY3QpOwo+PiAraW50IGFtZGdwdV9ib19yZXN0b3JlX3NoYWRvdyhzdHJ1Y3QgYW1k Z3B1X2JvICpzaGFkb3csCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3QgZG1hX2ZlbmNlICoqZmVuY2UpOwo+PiDCoCB1aW50MzJfdCBhbWRncHVfYm9fZ2V0X3ByZWZl cnJlZF9waW5fZG9tYWluKHN0cnVjdCBhbWRncHVfZGV2aWNlIAo+PiAqYWRldiwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3QgZG9t YWluKTsKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K YW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==