From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haneen Mohammed Subject: Re: [PATCH v2 5/5] drm/vkms: Implement CRC debugfs API Date: Wed, 18 Jul 2018 19:24:34 +0300 Message-ID: <20180718162434.GA1417@haneenDRM> References: <20180716182256.GY20303@art_vandelay> <20180716235220.GA12258@haneenDRM> <20180717204316.GA20303@art_vandelay> <20180717210503.GC20359@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A8B589D5C for ; Wed, 18 Jul 2018 16:24:41 +0000 (UTC) Received: by mail-wr1-x42a.google.com with SMTP id e7-v6so5288011wrs.9 for ; Wed, 18 Jul 2018 09:24:41 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180717210503.GC20359@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: rodrigosiqueiramelo@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Rmlyc3QsIGp1c3Qgc28geW91IGhhdmUgdGhlIGNvbXBsZXRlIHZpZXcsIHRoaXMgaXMgdGhlIG1p c3NpbmcgcGFydCBpbiB0aGlzIHBhdGNoOgotLS0tLS0gdmttc19jcmMuYwpzdGF0aWMgdWludDMy X3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGEpCnsKCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gJmNyY19kYXRhLT5mYjsKCXN0cnVjdCBkcm1fZ2VtX29i amVjdCAqZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7CglzdHJ1Y3Qgdmttc19n ZW1fb2JqZWN0ICp2a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0oZ2VtX29iaik7Cgl1MzIg Y3JjID0gMDsKCWludCBpID0gMDsKCXVuc2lnbmVkIGludCB4ID0gY3JjX2RhdGEtPnNyYy54MSA+ PiAxNjsKCXVuc2lnbmVkIGludCB5ID0gY3JjX2RhdGEtPnNyYy55MSA+PiAxNjsKCXVuc2lnbmVk IGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJmNyY19kYXRhLT5zcmMpID4+IDE2OwoJdW5z aWduZWQgaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmNyY19kYXRhLT5zcmMpID4+IDE2OwoJ dW5zaWduZWQgaW50IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKCXVuc2lnbmVkIGludCBzcmNf b2Zmc2V0OwoJdW5zaWduZWQgaW50IHNpemVfYnl0ZSA9IHdpZHRoICogY3BwOwoJdm9pZCAqdmFk ZHIgPSB2a21zX29iai0+dmFkZHI7CgoJaWYgKFdBUk5fT04oIXZhZGRyKSkKCQlyZXR1cm4gY3Jj OwoKCWZvciAoaSA9IHk7IGkgPCB5ICsgaGVpZ2h0OyBpKyspIHsKCQlzcmNfb2Zmc2V0ID0gZmIt Pm9mZnNldHNbMF0gKyAoaSAqIGZiLT5waXRjaGVzWzBdKSArICh4ICogY3BwKTsKCQljcmMgPSBj cmMzMl9sZShjcmMsIHZhZGRyICsgc3JjX29mZnNldCwgc2l6ZV9ieXRlKTsKCX0KCglyZXR1cm4g Y3JjOwp9Cgp2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKewoJc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGNvbnRhaW5lcl9vZih3 b3JrLAoJCQkJCQlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlLAoJCQkJCQljcmNfd29yayk7CglzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGM7CglzdHJ1Y3Qgdmttc19v dXRwdXQgKm91dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwoKCWlmIChjcnRjX3N0 YXRlICYmIG91dC0+Y3JjX2VuYWJsZWQpIHsKCQl1MzIgY3JjMzIgPSBfdmttc19nZXRfY3JjKCZj cnRjX3N0YXRlLT5kYXRhKTsKCQl1bnNpZ25lZCBpbnQgbl9mcmFtZSA9IGNydGNfc3RhdGUtPm5f ZnJhbWU7CgoJCWRybV9jcnRjX2FkZF9jcmNfZW50cnkoY3J0YywgdHJ1ZSwgbl9mcmFtZSwgJmNy YzMyKTsKCX0KfQoKaW50IHZrbXNfc2V0X2NyY19zb3VyY2Uoc3RydWN0IGRybV9jcnRjICpjcnRj LCBjb25zdCBjaGFyICpzcmNfbmFtZSwKCQkJc2l6ZV90ICp2YWx1ZXNfY250KQp7CglzdHJ1Y3Qg dmttc19vdXRwdXQgKm91dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwoKCWlmICgh c3JjX25hbWUpIHsKCQlvdXQtPmNyY19lbmFibGVkID0gZmFsc2U7Cgl9IGVsc2UgaWYgKHN0cmNt cChzcmNfbmFtZSwgImF1dG8iKSA9PSAwKSB7CgkJb3V0LT5jcmNfZW5hYmxlZCA9IHRydWU7Cgl9 IGVsc2UgewoJCW91dC0+Y3JjX2VuYWJsZWQgPSBmYWxzZTsKCQlyZXR1cm4gLUVJTlZBTDsKCX0K CgkqdmFsdWVzX2NudCA9IDE7CgoJcmV0dXJuIDA7Cn0KLS0tIGVuZCB2a21zX2NyYy5jCgpPbiBU dWUsIEp1bCAxNywgMjAxOCBhdCAwNTowNTowM1BNIC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4g T24gVHVlLCBKdWwgMTcsIDIwMTggYXQgMDQ6NDM6MTZQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+ID4gT24gVHVlLCBKdWwgMTcsIDIwMTggYXQgMDI6NTI6MjBBTSArMDMwMCwgSGFuZWVuIE1v aGFtbWVkIHdyb3RlOgo+ID4gPiBPbiBNb24sIEp1bCAxNiwgMjAxOCBhdCAwMjoyMjo1NlBNIC0w NDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gPiA+ID4gT24gU2F0LCBKdWwgMTQsIDIwMTggYXQgMDM6 MjM6MzJQTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVkIHdyb3RlOgo+ID4gPiA+ID4gSW1wbGVtZW50 IHRoZSBzZXRfY3JjX3NvdXJjZSgpIGNhbGxiYWNrLgo+ID4gPiA+ID4gQ29tcHV0ZSBDUkMgdXNp bmcgY3JjMzIgb24gdGhlIHZpc2libGUgcGFydCBvZiB0aGUgZnJhbWVidWZmZXIuCj4gPiA+ID4g PiBVc2Ugb3JkZXJlZCB3b3JrcXVldWUgdG8gY29tcHV0ZSBhbmQgYWRkIENSQyBhdCB0aGUgZW5k IG9mIGEgdmJsYW5rLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBVc2UgYXBwcm9wcmlhdGUgc3luY2hy b25pemF0aW9uIG1ldGhvZHMgc2luY2UgdGhlIGNyYyBjb21wdXRhdGlvbiBtdXN0Cj4gPiA+ID4g PiBiZSBhdG9taWMgd3J0IHRoZSBnZW5lcmF0ZWQgdmJsYW5rIGV2ZW50IGZvciBhIGdpdmVuIGF0 b21pYyB1cGRhdGUsCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEhhbmVlbiBN b2hhbW1lZCA8aGFtb2hhbW1lZC5zYUBnbWFpbC5jb20+Cj4gPiA+ID4gCj4gPiA+ID4gSGV5IEhh bmVlbiwKPiA+ID4gPiBUaGFua3MgZm9yIHJldmlzaW5nIHRoaXMgcGF0Y2ggc2V0LiBUaGluZ3Mg YXJlIGxvb2tpbmcgZ29vZCBhY3Jvc3MgdGhlIHNlcmllcywKPiA+ID4gPiBqdXN0IGEgZmV3IG1v cmUgY29tbWVudHMgOi0pCj4gPiA+ID4gCj4gPiA+IAo+ID4gPiBUaGFuayB5b3Ugc28gbXVjaCBm b3IgdGhlIHJldmlldyEgCj4gPiA+IAo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiBDaGFuZ2VzIGlu IHYyOgo+ID4gPiA+ID4gLSBJbmNsdWRlIHRoaXMgcGF0Y2ggaW4gdGhpcyBwYXRjaHNldC4KPiA+ ID4gPiA+IAo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlICAgICB8ICAy ICstCj4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgIHwgNjAgKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfZHJ2LmMgICB8ICAxICsKPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX2Rydi5oICAgfCAyMSArKysrKysrKysrKwo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYyB8IDEwICsrKysrKwo+ID4gPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwg ODUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPiA+ID4gPiA+IAo+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L3ZrbXMvTWFrZWZpbGUKPiA+ID4gPiA+IGluZGV4IDk4NjI5N2RhNTFiZi4uMzc5NjY5MTRmNzBi IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUKPiA+ ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gPiA+ID4gPiBAQCAt MSwzICsxLDMgQEAKPiA+ID4gPiA+IC12a21zLXkgOj0gdmttc19kcnYubyB2a21zX3BsYW5lLm8g dmttc19vdXRwdXQubyB2a21zX2NydGMubyB2a21zX2dlbS5vCj4gPiA+ID4gPiArdmttcy15IDo9 IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmttc19jcnRjLm8gdmttc19n ZW0ubyB2a21zX2NyYy5vCj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgb2JqLSQoQ09ORklHX0RSTV9W S01TKSArPSB2a21zLm8KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gPiA+ID4g PiBpbmRleCAyNmJhYmI4NWNhNzcuLmYzYTY3NGRiMzNiOCAxMDA2NDQKPiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ID4gPiA+ID4gQEAgLTEwLDE4ICsxMCwzNiBAQAo+ ID4gPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ID4gPiA+ICAj aW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gLXN0 YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCB2a21zX3ZibGFua19zaW11bGF0ZShzdHJ1Y3QgaHJ0 aW1lciAqdGltZXIpCj4gPiA+ID4gPiArc3RhdGljIHZvaWQgX3ZibGFua19oYW5kbGUoc3RydWN0 IHZrbXNfb3V0cHV0ICpvdXRwdXQpCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gLQlzdHJ1Y3Qgdmtt c19vdXRwdXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHZrbXNfb3V0cHV0 LAo+ID4gPiA+ID4gLQkJCQkJCSAgdmJsYW5rX2hydGltZXIpOwo+ID4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSAmb3V0cHV0LT5jcnRjOwo+ID4gPiA+ID4gLQlpbnQgcmV0X292ZXJy dW47Cj4gPiA+ID4gPiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKnN0YXRlID0gdG9fdmttc19j cnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4gPiA+ICAJYm9vbCByZXQ7Cj4gPiA+ID4gPiAg Cj4gPiA+ID4gPiArCWludCBjcmNfZW5hYmxlZCA9IDA7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr CXNwaW5fbG9jaygmb3V0cHV0LT5sb2NrKTsKPiA+ID4gPiA+ICsJY3JjX2VuYWJsZWQgPSBvdXRw dXQtPmNyY19lbmFibGVkOwo+ID4gPiA+IAo+ID4gPiA+IEFzaWRlIGZyb20gdGhlIGltcGxpY2l0 IGJvb2wgLT4gaW50IGNhc3QsIEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdGhpcyBsb2NhbCB2YXIs Cj4gPiA+ID4ganVzdCB1c2Ugb3V0cHV0LT5jcmNfZW5hYmxlZCBkaXJlY3RseSBiZWxvdy4KPiA+ ID4gPiAKPiA+ID4gPiA+ICAJcmV0ID0gZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsKPiA+ ID4gPiA+ICAJaWYgKCFyZXQpCj4gPiA+ID4gPiAgCQlEUk1fRVJST1IoInZrbXMgZmFpbHVyZSBv biBoYW5kbGluZyB2YmxhbmsiKTsKPiA+ID4gPiAKPiA+ID4gPiBUaGlzIHdvdWxkIGJlIG1vcmUg dXNlZnVsIHdpdGggdGhlIGVycm9yIGNvZGUgcHJpbnRlZC4KPiA+ID4gPiAKPiA+ID4gCj4gPiA+ IEkgdGhpbmsgdGhpcyBvbmx5IHJldHVybnMgZmFsc2Ugb24gZmFpbHVyZS4gQWxzbyBJJ3ZlIG5v dGljZWQgbW9zdCBvZiB0aGUgdXNhZ2Ugb2YKPiA+ID4gZHJtX2NydGNfaGFuZGxlX3ZibGFuayBk b24ndCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlLCBzaG91bGQgSSBkbyB0aGUKPiA+ID4gc2FtZSBh cyB3ZWxsIGFuZCBkcm9wIHJldCBhbmQgZXJyb3IgbWVzc2FnZT8KPiA+IAo+ID4gQWhoLCBJIGRp ZG4ndCBzZWUgdGhhdCByZXQgd2FzIGJvb2wuIEluIHRoYXQgY2FzZSwgdGhlIGVycm9yIG1lc3Nh Z2UgaXMgZmluZS4KPiA+IEl0J3MgYWx3YXlzIGdvb2QgcHJhY3RpY2UgdG8gYXNzdW1lIHRoYXQg aWYgYSBmdW5jdGlvbiByZXR1cm5zIGEgc3RhdHVzLCBpdCdzCj4gPiB3b3J0aCBjaGVja2luZy4K PiA+IAo+ID4gPiAKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICsJaWYgKHN0YXRlICYmIGNyY19lbmFi bGVkKSB7Cj4gPiA+ID4gPiArCQlzdGF0ZS0+bl9mcmFtZSA9IGRybV9jcnRjX2FjY3VyYXRlX3Zi bGFua19jb3VudChjcnRjKTsKPiA+ID4gPiA+ICsJCXF1ZXVlX3dvcmsob3V0cHV0LT5jcmNfd29y a3EsICZzdGF0ZS0+Y3JjX3dvcmspOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCXNwaW5fdW5sb2NrKCZvdXRwdXQtPmxvY2spOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgdmttc192Ymxhbmtfc2ltdWxh dGUoc3RydWN0IGhydGltZXIgKnRpbWVyKQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJc3RydWN0 IHZrbXNfb3V0cHV0ICpvdXRwdXQgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB2a21zX291 dHB1dCwKPiA+ID4gPiA+ICsJCQkJCQkgIHZibGFua19ocnRpbWVyKTsKPiA+ID4gPiA+ICsJaW50 IHJldF9vdmVycnVuOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlfdmJsYW5rX2hhbmRsZShvdXRw dXQpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gIAlyZXRfb3ZlcnJ1biA9IGhydGltZXJfZm9yd2Fy ZF9ub3coJm91dHB1dC0+dmJsYW5rX2hydGltZXIsCj4gPiA+ID4gPiAgCQkJCQkgIG91dHB1dC0+ cGVyaW9kX25zKTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+IEBAIC05Nyw2ICsxMTUsOCBAQCB2a21z X2F0b21pY19jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiA+ ID4gPiAgCj4gPiA+ID4gPiAgCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3Rh dGUoY3J0YywgJnZrbXNfc3RhdGUtPmJhc2UpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gKwlJTklU X1dPUksoJnZrbXNfc3RhdGUtPmNyY193b3JrLCB2a21zX2NyY193b3JrX2hhbmRsZSk7Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiAgCXJldHVybiAmdmttc19zdGF0ZS0+YmFzZTsKPiA+ID4gPiA+ICB9 Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiBAQCAtMTA0LDExICsxMjQsMTggQEAgc3RhdGljIHZvaWQg dmttc19hdG9taWNfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ ID4gPiA+ICAJCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiA+ID4gPiAg ewo+ID4gPiA+ID4gIAlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICp2a21zX3N0YXRlOwo+ID4gPiA+ ID4gKwlzdHJ1Y3Qgdmttc19vdXRwdXQgKnZrbXNfb3V0ID0gZHJtX2NydGNfdG9fdmttc19vdXRw dXQoY3J0Yyk7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgCXZrbXNfc3RhdGUgPSB0b192a21zX2Ny dGNfc3RhdGUoc3RhdGUpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIAlfX2RybV9hdG9taWNfaGVs cGVyX2NydGNfZGVzdHJveV9zdGF0ZShzdGF0ZSk7Cj4gPiA+ID4gPiAtCWtmcmVlKHZrbXNfc3Rh dGUpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAodmttc19zdGF0ZSkgewo+ID4gPiA+ID4g KwkJZmx1c2hfd29ya3F1ZXVlKHZrbXNfb3V0LT5jcmNfd29ya3EpOwo+ID4gPiA+IAo+ID4gPiA+ IEknbSBhIGxpdHRsZSB3b3JyaWVkIGFib3V0IHRoaXMgYml0LiBTaW5jZSB0aGUgd29ya3F1ZXVl IGlzIHBlci1vdXRwdXQsIGlzIGl0Cj4gPiA+ID4gcG9zc2libGUgeW91J2xsIGJlIHdhaXRpbmcg Zm9yIG1vcmUgZnJhbWVzIHRvIGNvbXBsZXRlIHRoYW4geW91IG5lZWQgdG8gYmU/Cj4gPiA+ID4g Cj4gPiA+IAo+ID4gPiBJIHNlZSwgbWF5YmUgSSBzaG91bGQgZmx1c2ggcGVyIHdvcmtfc3RydWN0 IGluc3RlYWQ/Cj4gPiAKPiA+IFllYWgsIHRoYXQgd291bGQgbWFrZSBtb3JlIHNlbnNlIElNTy4K PiA+IAo+ID4gPiAKPiA+ID4gPiA+ICsJCWRybV9mcmFtZWJ1ZmZlcl9wdXQoJnZrbXNfc3RhdGUt PmRhdGEuZmIpOwo+ID4gPiA+ID4gKwkJbWVtc2V0KCZ2a21zX3N0YXRlLT5kYXRhLCAwLCBzaXpl b2Yoc3RydWN0IHZrbXNfY3JjX2RhdGEpKTsKPiA+ID4gPiA+ICsJCWtmcmVlKHZrbXNfc3RhdGUp Owo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mgdmttc19jcnRjX2Z1bmNzID0gewo+ID4gPiA+ ID4gQEAgLTEyMCw2ICsxNDcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNz IHZrbXNfY3J0Y19mdW5jcyA9IHsKPiA+ID4gPiA+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlICAg PSB2a21zX2F0b21pY19jcnRjX2Rlc3Ryb3lfc3RhdGUsCj4gPiA+ID4gPiAgCS5lbmFibGVfdmJs YW5rCQk9IHZrbXNfZW5hYmxlX3ZibGFuaywKPiA+ID4gPiA+ICAJLmRpc2FibGVfdmJsYW5rCQk9 IHZrbXNfZGlzYWJsZV92YmxhbmssCj4gPiA+ID4gPiArCS5zZXRfY3JjX3NvdXJjZQkJPSB2a21z X3NldF9jcmNfc291cmNlLAo+ID4gPiA+ID4gIH07Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgc3Rh dGljIHZvaWQgdmttc19jcnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ID4gPiA+ID4gQEAgLTEzNCwyNiArMTYyLDM3IEBAIHN0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9t aWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gPiAgCWRybV9jcnRjX3Zi bGFua19vZmYoY3J0Yyk7Cj4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gK3N0YXRp YyB2b2lkIHZrbXNfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4g PiA+ID4gKwkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ID4g PiA+ID4gK3sKPiA+ID4gPiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICp2a21zX291dHB1dCA9IGRy bV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlzcGlu X2xvY2tfaXJxKCZ2a21zX291dHB1dC0+bG9jayk7Cj4gPiA+ID4gCj4gPiA+ID4gSG1tLCB5b3Ug Y2FuJ3QgbG9jayBhY3Jvc3MgYXRvbWljX2JlZ2luL2ZsdXNoLiBXaGF0IGlzIHRoaXMgcHJvdGVj dGluZyBhZ2FpbnN0Pwo+ID4gPiA+IAo+ID4gPiAKPiA+ID4gSSBkaWQgdGhpcyBwZXIgRGFuaWVs IHJlY29tbWVuZGF0aW9uOgo+ID4gPiAxLSBzcGluX2xvY2tfaXJxIC0+IHZrbXNfY3J0Y19hdG9t aWNfYmVnaW4KPiA+ID4gMi0gdXBkYXRlIHZrbXNfY3JjX2RhdGEgYW5kIGdldCByZWYgdG8gZmIg LT4gdmttc19wcmltYXJ5X3BsYW5lX3VwZGF0ZQo+ID4gPiAzLSBzcGluX3VubG9ja19pcnEgYWZ0 ZXIgdmJsYW5rIGV2ZW50IC0+IHZrbXNfY3J0Y19hdG9taWNfZmx1c2gKPiA+IAo+ID4gSSB0aGlu ayBJJ20gaW50ZXJwcmV0aW5nIGhpcyBtYWlsIGEgbGl0dGxlIGRpZmZlcmVudGx5LiBUaGUgcG9p bnQgb2YgdGhlCj4gPiBzcGlubG9jayBpcyB0byBwcm90ZWN0IHRoZSBwb2ludGVyIHRvIHRoZSBj cmNfZGF0YSBpbiB2a21zX2NydGMgKHJpZ2h0IG5vdyBpdCdzCj4gPiBub3QgYSBwb2ludGVyLCBi dXQgaXQgc2hvdWxkIGJlKS4KPiA+IAo+ID4gU28gSSB0aGluayB5b3UgbmVlZCB0byBkbyB0aGUg Zm9sbG93aW5nOgo+ID4gLSBDaGFuZ2UgY3JjX2RhdGEgdG8gYSBwb2ludGVyCj4gPiAtIEluIHBs YW5lX3VwZGF0ZSwgYWxsb2NhdGUgbmV3IG1lbW9yeSB0byBob2xkIGNyY19kYXRhIGFuZCwgdW5k ZXIgdGhlIHNwaW5sb2NrLAo+ID4gICB1cGRhdGUgdGhlIGNyY19kYXRhIHRvIHBvaW50IHRvIHRo ZSBuZXcgbWVtb3J5IChhZGQgYSBXQVJOX09OIGlmIHRoZSBwb2ludGVyCj4gPiAgIGlzIE5VTEwp Cj4gPiAtIEluIHRoZSBocnRpbWVyLCB3aGlsZSBob2xkaW5nIHRoZSBzcGlubG9jaywgdGFrZSB0 aGUgcG9pbnRlciBmcm9tIGNyY19kYXRhCj4gPiAgIGludG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQg Y2xlYXIgdGhlIGNydGMtPmNyY19kYXRhIHBvaW50ZXIKPiA+IC0gUGFzcyB0aGUgcG9pbnRlciAo ZnJvbSB0aGUgbG9jYWwgdmFyaWFibGUpIHRvIHRoZSBjcmNfd29ya2VyCj4gPiAKClRoZSBwcm9i bGVtIHdpdGggdGhpcyBhcHByb2FjaCBpcyBtYW5hZ2luZyB0aGUgcG9pbnRlciBhbGxvY2F0aW9u IGFuZApkZWFsbG9jYXRpb24uIElmIEkgZ3JhYiBpdCBpbiB0aGUgaHJ0aW1lciwgdGhlbiB3aGVy ZS93aGVuIHNob3VsZCBJIGZyZWUgaXQ/CkkgY2FuJ3QgYWZ0ZXIgdGhlIGNyYyB3b3JrZXIgaXMg ZG9uZSB3aXRoIGl0IGJlY2F1c2Ugd2hhdCBJIG5vdGljZWQgaXMKdGhhdCB0aGUgY3JjIGNvbXB1 dGF0aW9uIGlzIGV4cGVjdGVkIHRvIHJ1biBtdWx0aXBsZSB0aW1lcyBhZnRlciBvbmUKcGxhbmVf YXRvbWljX3VwZGF0ZS4KCj4gPiBJIGRvbid0IHRoaW5rIHlvdSBuZWVkIHRvIGhvbGQgdGhlIHNw aW5sb2NrIGFjcm9zcyB0aGUgYXRvbWljIGhvb2tzLCBqdXN0IGdyYWIKPiA+IGl0IGluIHBsYW5l X3VwZGF0ZS4KPiAKCkkgYXNrZWQgRGFuaWVsIGluIGlyYyBhYm91dCByZWxlYXNpbmcgdGhlIHZr bXNfb3V0cHV0LT5sb2NrIGluIHRoZSBiZWdnaW5uaW5nIG9mIGF0b21pY19mbHVzaAp0byBhdm9p ZCBtb2RpZnlpbmcgdGhlIGV2ZW50X2xvY2sgYW5kIGhlIG1lbnRpb25lZCB0aGF0ICJvdXRwdXQt PmxvY2sgbXVzdCB3cmFwIHRoZSBldmVudApoYW5kbGluZyBjb2RlIGNvbXBsZXRlbHkgc2luY2Ug d2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZmxpcCBldmVudAphbmQgdGhlIGNyYyBhbGwg bWF0Y2ggdXAiLgoKU28gbWF5YmUgSSBjYW4gZ3JhYiB0aGUgc3BpbmxvY2sgaW4gcGxhbmVfYXRv bWljX3VwZGF0ZSBhbmQgcmVsZWFzZSBpdCBhdAp0aGUgZW5kIG9mIGNydGNfYXRvbWljX2ZsdXNo PyBJcyBwbGFuZV9hdG9taWNfdXBkYXRlIGFsd2F5cyBjYWxsZWQKYmVmb3JlIGNydGNfYXRvbWlj X2ZsdXNoPwoKT3RoZXJ3aXNlIGlmIEkgZ3JhYiB0aGUgc3BpbmxvY2sgaW4gYXRvbWljX2JlZ2lu IEkgd29uJ3QgYmUgYWJsZSB0bwp1c2UgcG9pbnRlciBmb3IgY3JjX2RhdGEgYW5kIGFsbG9jYXRl IGl0IGluIHBsYW5lX2F0b21pY191cGRhdGUgc2luY2UKSSdsbCBiZSBob2xkaW5nIGEgc3Bpbmxv Y2sgYWxyZWFkeS4gCgpJIGhhdmUgYmFzZWQgdGhpcyBwYXRjaCBvbiBEYW5pZWwncyBzZWNvbmQg ZmVlZGJhY2sgdG8gbXkgZW1haWwKIltQQVRDSF0gZHJtL3ZrbXM6IFVwZGF0ZSBDUkMgc3VwcG9y dCBhZnRlciBsb2NrIHJldmlldyIgd2hpY2ggSSBkaWRuJ3QKY2MgdGhlIGRyaSBtYWlsaW5nIGxp c3QgaW4gaXQsIHF1b3RpbmcgRGFuaWVsOgoKIk92ZXJhbGwgZmxvdzoKMS4gaW4gY3J0Y19mdW5j cy0+YXRvbWljX2JlZ2luIGdyYWIgdGhlIHNwaW5sb2NrLCB0byBtYWtlIHN1cmUKZXZlcnl0aGlu ZyBpcyB2aXNpYmxlIGNvbXBsZXRlbHkgb3Igbm90IGF0IGFsbCB0byB0aGUgdmJsYW5rIGhhbmRs ZXIuCkFsc28gdXBkYXRlIGEgcG9pbnRlciB0byB0aGUgdmttc19jcnRjX3N0YXRlIGluIHZrbXNf b3V0cHV0LT5jcmNfZGF0YQoob3Igc29tZXRoaW5nIGxpa2UgdGhhdC4KMi4gY29weSB0aGUgcGxh bmUgZGF0YSAobGlrZSB5b3UgZG8gaGVyZSkgaW4gcGxhbmVfZnVuY3MtPmF0b21pY19jb21taXQu CjMuIGRyb3AgdGhlIHNwaW5sb2NrIGluIGNydGNfZnVuY3MtPmF0b21pY19mbHVzaCBhZnRlciB0 aGUgdmJsYW5rCmV2ZW50IGlzIGFybWVkLgoKSW4gdGhlIHZibGFuayBocnRpbWVyIGhhbmRsZXI6 CjEuIGdyYWIgdGhlIHNwaW5sb2NrCjIuIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoKSAtIHdlIG11 c3QgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZQpzcGlubG9jaywgb3RoZXJ3aXNlIHRoZSBldmVu dCBhbmQgY3JjIG1pZ2h0IGdldCBvdXQgb2Ygc3luYy4gQWxzbyBncmFiCnRoZSBjdXJyZW50IHZi bGFuayBudW1iZXIgaGVyZSBhbmQgc3RvcmUgaXQgc29tZXdoZXJlIGluCnZrbXNfY3J0Y19zdGF0 ZSBzbyB0aGF0IHRoZSB3b3JrZXIgY2FuIHVzZSB0aGUgcmlnaHQgb25lLgozLiBsYXVuY2ggdGhl IHdvcmtlci4gTm90ZSB0aGF0IHRoZSBzdHJ1Y3Rfd29yayBuZWVkcyB0byBiZSB3aXRoaW4gdGhl CnZrbXNfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUsIG90aGVyd2lzZSB0aGUgY3JjIGNvbXB1dGF0aW9u IHdvcmtlcgpkb2Vzbid0IGtub3cgcmVhbGx5IGZvciB3aGljaCBkYXRhIGl0IHNob3VsZCBjb21w dXRlIHRoZSBjcmMgLSBqdXN0CmhhdmluZyBvbmUgY29weSBpbiBkYXRhWzFdIGRvZXNuJ3QgcmVh bGx5IHNvbHZlIHRoaXMgcmFjZS4KNC4gZHJvcCBzcGlubG9jawoKU28gb25lIGJpZyBwcm9ibGVt IHdlIGhhdmUgaGVyZSBzdGlsbCBpcyB3aGF0IGhhcHBlbnMgaWYgdGhlIGNyYwp3b3JrZXIgZmFs bHMgYmVoaW5kIHdpdGggY29tcHV0aW5nIGNyY3MuIFRoZXJlJ3MgMiBjYXNlcywgbGV0J3MgZmly c3QKbG9vayBhdCBob3cgdG8gZml4ZSB0aGUgY3JjIHdvcmtlciBmYWxsaW5nIGJlaGluZCBhdG9t aWMgdXBkYXRlcy4gVGhlCnByb2JsZW0gdGhlcmUgaXMgdGhhdCB0aGUgbmV4dCBhdG9taWMgdXBk YXRlIG1pZ2h0IGZyZWUgdGhlCnZrbXNfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUgYmVmb3JlIHRoZSB3 b3JrZXIgaXMgZG9uZSB3aXRoIGl0LiBUaGF0J3MKZmFpcmx5IGVhc3kgdG8gZml4OgotIGFkZCBh IGZsdXNoX3dvcmsgY2FsbCB0byB5b3VyIHZrbXNfY3J0Y19zdGF0ZV9kZXN0cm95IGZ1bmN0aW9u LiBUaGlzCm1lYW5zIHlvdSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHdvcmsgYWxyZWFkeSBpbgp2 a21zX2NydGNfc3RhdGVfZHVwbGljYXRlICh5b3UnbGwgY3JlYXRlIGJvdGggb2YgdGhlc2Ugd2hl biBkb2luZyB0aGUKdmttc19jcnRjX3N0YXRlIHN1YmNsYXNzaW5nKS4KLSAybmQgd2UgbmVlZCB0 byBtYWtlIHN1cmUgY3JjIHdvcmtlcnMgYXJlIHJ1biBpbiBvcmRlciBlYXNpZXN0IGZpeApmb3Ig dGhhdCBpcyB0byBjcmVhdGUgeW91ciBvd24gcHJpdmF0ZSBjcmMgd29yayBxdWV1ZSAoMSBwZXIg Y3J0YyB3ZQpoYXZlKSB3aXRoIHRoZSBXUV9PUkRFUkVEIGZsYWcuCgoybmQgaXNzdWUgaWYgdGhl IHZibGFua3MgZ2V0IGFoZWFkIG9mIHRoZSBjcmMgd29ya2VyLiBUaGlzIGhhcHBlbnMKd2hlbiBl LmcuIHRoZXJlJ3Mgbm8gYXRvbWljIHVwZGF0ZXMsIGJ1dCAgd2Ugc3RpbGwgd2FudCB0byBnZW5l cmF0ZSAxCnZibGFuayBwZXIgZnJhbWUuIFRoaXMgaXMgcHJvYmFibHkgYmV0dGVyIGRvbmUgaW4g YSBmb2xsb3ctdXAgcGF0Y2gsCmJ1dCByb3VnaCBzb2x1dGlvbiBpczoKLSBpbiB0aGUgdmJsYW5r IGhydGltZXIgY2hlY2sgd2hldGhlciB0aGUgd29yayBpcyBzdGlsbCBzY2hlZHVsZWQgYW5kCm5v dCB5ZXQgY29tcGxldGUgKHdoaWxlIGhvbGRpbmcgdGhlIHNwaW5sb2NrKS4gaW4gdGhhdCBjYXNl IHNpbXBseQp0ZWxsIHRoZSB3b3JrZXIgdG8gZmlsbCBvdXQgdGhlIHNhbWUgY3JjIGZvciBtdWx0 aXBsZSB2YmxhbmtzLCBieQp1c2luZyBhIHZibGFua19zZXFub19zdGFydC9lbmQuCi0gaWYgdGhl IHdvcmtlciBpcyBub3QgYnVzeSwgdGhlbiB3ZSB0ZWxsIGl0IHRvIGNvbXB1dGUgYSBuZXcgY3Jj IChpbgpjYXNlIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVycyBoYXMgY2hhbmdlZCAtIGluIHRoZSBm dXR1cmUgd2UgbWlnaHQKY2hhbmdlIHRoaXMgYmVoYXZpb3VyKS4iCgo+IFNvIHRoZSBtb3JlIEkg dGhpbmsgYWJvdXQgdGhpcywgSSBkb24ndCB0aGluayBpdCdzIHF1aXRlIHJpZ2h0LiBQZXJoYXBz IEknbQo+IG1pc3NpbmcgYW4gZW1haWwgZnJvbSBEYW5pZWwsIG9yIChtb3JlIGxpa2VseSkgbWlz dW5kZXJzdGFuZGluZyB3aGF0IHlvdSdyZQo+IHRyeWluZyB0byBkby4gSG93ZXZlciwgdGhlIGVt YWlsIEkgcmVhZCBzdWdnZXN0ZWQgc3RvcmluZyB0aGUgY3JjX2RhdGEKPiB0byBiZSBjb25zdW1l ZCBieSB0aGUgY3JjIHdvcmtlciBpbiB2a21zX2NydGMuIEhvd2V2ZXIgaW4gdGhpcyBwYXRjaCBp dCdzIGJlaW5nCj4gc3RvcmVkIChhbG9uZyB3aXRoIHRoZSB3b3JrIGl0ZW0pIGluIGNydGMgc3Rh dGUuIEZ1cnRoZXIsIHRoZSBzdGF0ZSBjYW5ub3QgYmUKPiBkZXN0cm95ZWQgd2l0aG91dCBjb21w bGV0aW5nIHRoZSBjcmNfd29yaywgd2hpY2gga2luZCBvZiBkZWZlYXRzIHRoZSBwdXJwb3NlIG9m Cj4gdGhlIHdvcmtxdWV1ZSBpbiB0aGUgZmlyc3QgcGxhY2UuCj4gCj4gU3RvcmluZyBhIGNvcHkg b2YgdGhlIGNyY19kYXRhIGluIGNydGMgYWxsb3dzIHlvdSB0byBmcmVlIHRoZSBjcnRjX3N0YXRl LCBzbyB5b3UKPiBjYW4gc3RhcnQgd29ya2luZyBvbiB0aGUgbmV4dCBmcmFtZSB3aGlsZSB0aGUg Y3JjIHdvcmtlciBpcyBzY2hlZHVsZWQgYW5kIHBpY2tzCj4gdXAgdGhlIGNyY19kYXRhIGZyb20g Y3J0Yy4gU3RvcmluZyB0aGUgY3JjX2RhdGEgaW4gY3J0Y19zdGF0ZSBhbmQgd2FpdGluZyBmb3IK PiB0aGUgd29yayB0byBmaW5pc2ggaXMgZWFzaWVyIHNpbmNlIHlvdSBkb24ndCBuZWVkIHRvIHdv cnJ5IGFib3V0IGNvcHlpbmcgYW5kCj4gbG9ja2luZyAoc28gbXVjaCkuIEhvd2V2ZXIsIGl0IHNl ZW1zIGxpa2Ugd2UncmUgZG9pbmcgYm90aCBpbiB0aGlzIHBhdGNoLgo+IAo+IEFnYWluLCBJJ20g bGlrZWx5IGp1c3Qgbm90IHVuZGVyc3RhbmRpbmcgd2hhdCB0aGUgZ29hbCBvZiB0aGlzIGlzLCBz byBhbnkKPiBjbGFyaWZpY2F0aW9uIHdvdWxkIGJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQgOikKPiAK PiBTZWFuCj4gCj4gPiAKPiA+IFNlYW4KPiA+IAo+ID4gPiAKPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgdmttc19jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gPiAgCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGUpCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gLQl1bnNpZ25lZCBsb25nIGZs YWdzOwo+ID4gPiA+ID4gKwlzdHJ1Y3Qgdmttc19vdXRwdXQgKnZrbXNfb3V0cHV0ID0gZHJtX2Ny dGNfdG9fdmttc19vdXRwdXQoY3J0Yyk7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgCWlmIChjcnRj LT5zdGF0ZS0+ZXZlbnQpIHsKPiA+ID4gPiA+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5k ZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiA+ID4gPiA+ICsJCXNwaW5fbG9jaygmY3J0Yy0+ZGV2 LT5ldmVudF9sb2NrKTsKPiA+ID4gPiAKPiA+ID4gPiBXaGF0J3MgdGhlIHJhdGlvbmFsZSBiZWhp bmQgdGhpcyBjaGFuZ2U/Cj4gPiA+ID4gCj4gPiA+IAo+ID4gPiBobSBJIGFtIG5vdCBzdXJlIGlm IHRoaXMgaXMgY29ycmVjdCwgYnV0IEkgYXNzdW1lIGJlY2F1c2Ugc3Bpbl9sb2NrX2lycSBpbiBh dG9taWNfYmVnaW4KPiA+ID4gd291bGQgZGlzYWJsZSBpbnRlcnJ1cHRzIGFuZCBzaW5jZSB0aGlz IGlzIGJlZm9yZSB3ZSB1bmxvY2sgdmttc19vdXRwdXQtPmxvY2sgd2l0aCAKPiA+ID4gc3Bpbl91 bmxvY2tfaXJxIHNvIGlycXNhdmUgaGVyZSBpcyBub3QgbmVjZXNzYXJ5Pwo+ID4gPiAKPiA+IAo+ ID4gT25jZSB5b3UgbGltaXQgdGhlIHNjb3BlIG9mIHRoZSBzcGlubG9jayBhYm92ZSwgeW91IHdp bGwgd2FudCB0byByZXZlcnQgdGhpcwo+ID4gY2hhbmdlLgo+ID4gCj4gPiA+ID4gPiAgCj4gPiA+ ID4gPiAgCQlpZiAoZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSAhPSAwKQo+ID4gPiA+ID4gIAkJ CWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGNydGMtPnN0YXRlLT5ldmVudCk7Cj4g PiA+ID4gPiAgCQllbHNlCj4gPiA+ID4gPiAgCQkJZHJtX2NydGNfYXJtX3ZibGFua19ldmVudChj cnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gLQkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7Cj4gPiA+ID4g PiArCQlzcGluX3VubG9jaygmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiA+ID4gPiA+ICAKPiA+ ID4gPiA+ICAJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gPiA+ID4gPiAgCX0KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJc3Bpbl91bmxvY2tfaXJxKCZ2a21zX291dHB1dC0+bG9jayk7Cj4g PiA+ID4gPiAgfQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2NydGNfaGVscGVyX2Z1bmNzIHZrbXNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gPiA+ID4gPiAr CS5hdG9taWNfYmVnaW4JPSB2a21zX2NydGNfYXRvbWljX2JlZ2luLAo+ID4gPiA+ID4gIAkuYXRv bWljX2ZsdXNoCT0gdmttc19jcnRjX2F0b21pY19mbHVzaCwKPiA+ID4gPiA+ICAJLmF0b21pY19l bmFibGUJPSB2a21zX2NydGNfYXRvbWljX2VuYWJsZSwKPiA+ID4gPiA+ICAJLmF0b21pY19kaXNh YmxlCT0gdmttc19jcnRjX2F0b21pY19kaXNhYmxlLAo+ID4gPiA+ID4gQEAgLTE2Miw2ICsyMDEs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB2a21zX2NydGNf aGVscGVyX2Z1bmNzID0gewo+ID4gPiA+ID4gIGludCB2a21zX2NydGNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gPiAgCQkgICBzdHJ1 Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCBzdHJ1Y3QgZHJtX3BsYW5lICpjdXJzb3IpCj4gPiA+ID4g PiAgewo+ID4gPiA+ID4gKwlzdHJ1Y3Qgdmttc19vdXRwdXQgKnZrbXNfb3V0ID0gZHJtX2NydGNf dG9fdmttc19vdXRwdXQoY3J0Yyk7Cj4gPiA+ID4gPiAgCWludCByZXQ7Cj4gPiA+ID4gPiAgCj4g PiA+ID4gPiAgCXJldCA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZGV2LCBjcnRjLCBwcmlt YXJ5LCBjdXJzb3IsCj4gPiA+ID4gPiBAQCAtMTczLDUgKzIxMyw5IEBAIGludCB2a21zX2NydGNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ ID4gPiAgCj4gPiA+ID4gPiAgCWRybV9jcnRjX2hlbHBlcl9hZGQoY3J0YywgJnZrbXNfY3J0Y19o ZWxwZXJfZnVuY3MpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gKwlzcGluX2xvY2tfaW5pdCgmdmtt c19vdXQtPmxvY2spOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwl2a21zX291dC0+Y3JjX3dvcmtx ID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoInZrbXNfY3JjX3dvcmtxIiwgMCk7Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiAgCXJldHVybiByZXQ7Cj4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX2Rydi5jCj4gPiA+ID4gPiBpbmRleCAzN2FhMmVmMzNiMjEuLjVkNzhiZDk3ZTY5 YyAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMK PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiA+ID4gPiA+ IEBAIC00Niw2ICs0Niw3IEBAIHN0YXRpYyB2b2lkIHZrbXNfcmVsZWFzZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ID4gPiA+ID4gIAlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3Rlcih2a21zLT5w bGF0Zm9ybSk7Cj4gPiA+ID4gPiAgCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKCZ2a21zLT5kcm0p Owo+ID4gPiA+ID4gIAlkcm1fZGV2X2ZpbmkoJnZrbXMtPmRybSk7Cj4gPiA+ID4gPiArCWRlc3Ry b3lfd29ya3F1ZXVlKHZrbXMtPm91dHB1dC5jcmNfd29ya3EpOwo+ID4gPiA+ID4gIH0KPiA+ID4g PiA+ICAKPiA+ID4gPiA+ICBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgdmttc19kcml2ZXIgPSB7 Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gPiA+IGluZGV4IGJmODExZDBl YzM0OS4uOTU5ODU2NDk3NjhjIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19kcnYuaAo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmtt c19kcnYuaAo+ID4gPiA+ID4gQEAgLTIwLDEyICsyMCwyMyBAQCBzdGF0aWMgY29uc3QgdTMyIHZr bXNfZm9ybWF0c1tdID0gewo+ID4gPiA+ID4gIAlEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4gPiA+ ID4gIH07Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiArc3RydWN0IHZrbXNfY3JjX2RhdGEgewo+ID4g PiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3Qgc3JjOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyIGZiOwo+ID4gPiA+ID4gK307Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgLyoqCj4gPiA+ ID4gPiAgICogdmttc19jcnRjX3N0YXRlIC0gRHJpdmVyIHNwZWNpZmljIENSVEMgc3RhdGUKPiA+ ID4gPiA+ICAgKiBAYmFzZTogYmFzZSBDUlRDIHN0YXRlCj4gPiA+ID4gPiArICogQGNyY193b3Jr OiB3b3JrIHN0cnVjdCB0byBjb21wdXRlIGFuZCBhZGQgQ1JDIGVudHJpZXMKPiA+ID4gPiA+ICsg KiBAZGF0YTogZGF0YSByZXF1aXJlZCBmb3IgQ1JDIGNvbXB1dGF0aW9uCj4gPiA+ID4gPiArICog QG5fZnJhbWU6IGZyYW1lIG51bWJlciBmb3IgY29tcHV0ZWQgQ1JDCj4gPiA+ID4gPiAgICovCj4g PiA+ID4gPiAgc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSB7Cj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSBiYXNlOwo+ID4gPiA+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgY3JjX3dvcms7 Cj4gPiA+ID4gPiArCXN0cnVjdCB2a21zX2NyY19kYXRhIGRhdGE7Cj4gPiA+ID4gPiArCXVuc2ln bmVkIGludCBuX2ZyYW1lOwo+ID4gPiA+ID4gIH07Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgc3Ry dWN0IHZrbXNfb3V0cHV0IHsKPiA+ID4gPiA+IEBAIC0zNSw2ICs0NiwxMSBAQCBzdHJ1Y3Qgdmtt c19vdXRwdXQgewo+ID4gPiA+ID4gIAlzdHJ1Y3QgaHJ0aW1lciB2YmxhbmtfaHJ0aW1lcjsKPiA+ ID4gPiA+ICAJa3RpbWVfdCBwZXJpb2RfbnM7Cj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1fcGVuZGlu Z192YmxhbmtfZXZlbnQgKmV2ZW50Owo+ID4gPiA+ID4gKwlib29sIGNyY19lbmFibGVkOwo+ID4g PiA+IAo+ID4gPiA+IFdoZXJlIGlzIHRoaXMgc2V0IHRvIHRydWU/Cj4gPiA+ID4gCj4gPiA+IAo+ ID4gPiBPaCBzb3JyeSBJIGZvcmdvdCB0byBhZGQgYSB2a21zX2NyYy5jIHdoaWNoIHNldHMgY3Jj X2VuYWJsZWQgaW4KPiA+ID4gc2V0X2NyY19zb3VyY2UgY2FsbGJhY2shIAo+ID4gPiAKPiA+ID4g SSdsbCB3b3JrIG9uIGZpeGluZyB0aGUgaXNzdWVzIHlvdSBtZW50aW9uZWQgaGVyZSBhbmQgdGhl IG90aGVyIHBhdGNoZXMKPiA+ID4gYXMgd2VsbCwgdGhhbmsgeW91IHNvIG11Y2ggYWdhaW4hCj4g PiAKPiA+IFRoYW5rcyBmb3Igd29ya2luZyB0aHJvdWdoIHRoaXMhCj4gPiAKClRoYW5rIHlvdSBm b3IgeW91ciBmZWVkYmFjayEKCi0gSGFuZWVuCgo+ID4gU2Vhbgo+ID4gCj4gPiA+IEhhbmVlbgo+ ID4gPiAKPiA+ID4gPiA+ICsJLyogb3JkZXJlZCB3cSBmb3IgY3JjX3dvcmsgKi8KPiA+ID4gPiA+ ICsJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmNyY193b3JrcTsKPiA+ID4gPiA+ICsJLyogcHJv dGVjdHMgY29uY3VycmVudCBhY2Nlc3MgdG8gY3JjX2RhdGEgKi8KPiA+ID4gPiA+ICsJc3Bpbmxv Y2tfdCBsb2NrOwo+ID4gPiA+ID4gIH07Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgc3RydWN0IHZr bXNfZGV2aWNlIHsKPiA+ID4gPiA+IEBAIC05NSw0ICsxMTEsOSBAQCB2b2lkICp2a21zX2dlbV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICB2 b2lkIHZrbXNfZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gPiA+ID4g PiAgCj4gPiA+ID4gPiArLyogQ1JDIFN1cHBvcnQgKi8KPiA+ID4gPiA+ICtpbnQgdmttc19zZXRf Y3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGNvbnN0IGNoYXIgKnNyY19uYW1lLAo+ ID4gPiA+ID4gKwkJCXNpemVfdCAqdmFsdWVzX2NudCk7Cj4gPiA+ID4gPiArdm9pZCB2a21zX2Ny Y193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gICNlbmRpZiAvKiBfVktNU19EUlZfSF8gKi8KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX3BsYW5lLmMKPiA+ID4gPiA+IGluZGV4IGFhZjdjMzVmYWVkNi4uMWUwZWU4Y2E4YmQ2IDEw MDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gPiA+ IEBAIC0yNCw2ICsyNCwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyB2 a21zX3BsYW5lX2Z1bmNzID0gewo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHZrbXNfcHJpbWFyeV9w bGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+ID4gPiAgCQkJCSAgICAg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ID4gPiA+ICB7Cj4gPiA+ID4g PiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKnN0YXRlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KwlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0YXRlLT5mYikKPiA+ID4gPiA+ ICsJCXJldHVybjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJc3RhdGUgPSB0b192a21zX2NydGNf c3RhdGUocGxhbmUtPnN0YXRlLT5jcnRjLT5zdGF0ZSk7Cj4gPiA+ID4gPiArCW1lbWNweSgmc3Rh dGUtPmRhdGEuc3JjLCAmcGxhbmUtPnN0YXRlLT5zcmMsIHNpemVvZihzdHJ1Y3QgZHJtX3JlY3Qp KTsKPiA+ID4gPiA+ICsJbWVtY3B5KCZzdGF0ZS0+ZGF0YS5mYiwgcGxhbmUtPnN0YXRlLT5mYiwK PiA+ID4gPiA+ICsJICAgICAgIHNpemVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4gPiA+ ID4gPiArCWRybV9mcmFtZWJ1ZmZlcl9nZXQoJnN0YXRlLT5kYXRhLmZiKTsKPiA+ID4gPiA+ICB9 Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgc3RhdGljIGludCB2a21zX3BsYW5lX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gPiA+IC0tIAo+ID4gPiA+ID4gMi4xNy4x Cj4gPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiAtLSAKPiA+ID4gPiBTZWFuIFBhdWwsIFNvZnR3 YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwo+ID4gCj4gPiAtLSAKPiA+IFNlYW4g UGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCj4gCj4gLS0gCj4g U2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==