From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haneen Mohammed Subject: Re: [PATCH v2 2/2] drm/vkms: Implement CRC debugfs API Date: Fri, 3 Aug 2018 22:36:05 +0300 Message-ID: <20180803193605.GA9907@haneenDRM> References: <20180803165336.GL20303@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 48A576E7B2 for ; Fri, 3 Aug 2018 19:36:09 +0000 (UTC) Received: by mail-pg1-x52d.google.com with SMTP id x5-v6so3285496pgp.7 for ; Fri, 03 Aug 2018 12:36:09 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180803165336.GL20303@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 T24gRnJpLCBBdWcgMDMsIDIwMTggYXQgMTI6NTM6MzZQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIFRodSwgQXVnIDAyLCAyMDE4IGF0IDA0OjEwOjI2QU0gKzAzMDAsIEhhbmVlbiBNb2hh bW1lZCB3cm90ZToKPiA+IFRoaXMgcGF0Y2ggaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgZnVuY3Rp b25zIHRvIGNvbXB1dGUgYW5kIGFkZCBDUkNzCj4gPiBlbnRyaWVzOgo+ID4gCj4gPiAtIEltcGxl bWVudCB0aGUgc2V0X2NyY19zb3VyY2UoKSBjYWxsYmFjay4KPiA+IC0gQ29tcHV0ZSBDUkMgdXNp bmcgY3JjMzIgb24gdGhlIHZpc2libGUgcGFydCBvZiB0aGUgZnJhbWVidWZmZXIuCj4gPiAtIFVz ZSBvcmRlcmVkIHdvcmtxdWV1ZSBwZXIgb3V0cHV0IHRvIGNvbXB1dGUgYW5kIGFkZCBDUkMgYXQg dGhlIGVuZAo+ID4gICBvZiBhIHZibGFuay4KPiA+IC0gVXNlIGFwcHJvcHJpYXRlIHN5bmNocm9u aXphdGlvbiBtZXRob2RzIHNpbmNlIHRoZSBDUkMgY29tcHV0YXRpb24gbXVzdAo+ID4gICBiZSBh dG9taWMgd3J0IHRoZSBnZW5lcmF0ZWQgdmJsYW5rIGV2ZW50IGZvciBhIGdpdmVuIGF0b21pYyB1 cGRhdGUsIGJ5Cj4gPiAgIHVzaW5nIHNwaW5sb2NrIGFjcm9zcyBhdG9taWNfYmVnaW4vYXRvbWlj X2ZsdXNoIHRvIHdyYXAgdGhlIGV2ZW50Cj4gPiAgIGhhbmRsaW5nIGNvZGUgY29tcGxldGVseSBh bmQgbWF0Y2ggdGhlIGZsaXAgZXZlbnQgd2l0aCB0aGUgQ1JDLgo+ID4gCj4gPiBTaW5jZSB2a21z X2NyY193b3JrX2hhbmRsZSgpIGNhbiBzbGVlcCwgc3BpbmxvY2sgY2FuJ3QgYmUgYWNxdWlyZWQK PiA+IHdoaWxlIGFjY2Vzc2luZyB2a21zX291dHB1dC0+cHJpbWFyeV9jcmMgdG8gY29tcHV0ZSBD UkMuCj4gPiBUbyBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgdXBkYXRlZCBhbmQgcmVsZWFzZWQgd2l0 aG91dCBjb25mbGljdCB3aXRoCj4gPiB0aGUgdmttc19jcmNfd29ya19oYW5kbGUoKSwgdGhlIHdv cmtfc3RydWN0IGlzIGZsdXNoZWQgQGNydGNfZGVzdHJveQo+ID4gYW5kIHRoZSBkYXRhIGlzIHVw ZGF0ZWQgYmVmb3JlIHNjaGVkdWxpbmcgdGhlIHdvcmsgaGFuZGxlIGFnYWluLCBhcwo+ID4gZm9s bG93Ogo+ID4gCj4gPiAqIENSQyBkYXRhIHVwZGF0ZToKPiA+IDEtIHN0b3JlIHZrbXNfY3JjX2Rh dGEge2ZiLCBzcmN9IHBlciBwbGFuZV9zdGF0ZQo+ID4gMi0gQHBsYW5lX2R1cGxpY2F0ZV9zdGF0 ZSAtPiBhbGxvY2F0ZSB2a21zX2NyY19kYXRhCj4gPiAzLSBkdXJpbmcgYXRvbWljIGNvbW1pdCAo QGF0b21pY191cGRhdGUpIC0+Cj4gPiAJYSkgY29weSB7ZmIsIHNyY30gdG8gcGxhbmVfc3RhdGUt PmNyY19kYXRhCj4gPiAJYikgZ2V0IHJlZmVyZW5jZSB0byBmYiwKPiA+IDMtIEBwbGFuZV9kZXN0 cm95X3N0YXRlIC0+IGEpIGlmIChmYiByZWZjb3VudCkgcmVtb3ZlIHJlZmVyZW5jZSB0byBmYgo+ ID4gCQkJICAgYikgZGVhbGxvY2F0ZSBjcmNfZGF0YQo+ID4gCj4gPiAqIEF0b21pYyBDb21taXQ6 Cj4gPiAxLSB2a21zX3BsYW5lX2F0b21pY19jaGVjawo+ID4gMi0gdmttc19wcmVwYXJlX2ZiIC0+ IHZtYXAgdmttc19nZW1fb2JqLT52YWRkcgo+ID4gMy0gYXRvbWljX2JlZ2luIC0+IGhvbGQgY3Jj IHNwaW5sb2NrCj4gPiA0LSBhdG9taWNfcGxhbmVfdXBkYXRlIC0+IGEpIHVwZGF0ZSB2a21zX291 dHB1dC0+cHJpbWFyeV9jcmMKPiA+IAkJCSAgYikgZ2V0IHJlZmVyZW5jZSB0byBmYgo+ID4gNS0g YXRvbWljX2ZsdXNoIC0+IGEpIHNlbmQgdmJsYW5rIGV2ZW50IHdoaWxlIGhvbGRpbmcgZXZlbnRf bG9jawo+ID4gCQkgICBiKSByZWxlYXNlIGNyYyBzcGlubG9jawo+ID4gCj4gPiAqIGhydGltZXIg cmVndWxhciBjYWxsYmFjazoKPiA+IDEtIGhvbGQgY3JjIHNwaW5sb2NrCj4gPiAyLSBkcm1fY3J0 Y19oYW5kbGVfdmJsYW5rKCkKPiA+IDMtIHF1ZXVlIHZrbXNfY3JjX3dvcmtfaGFuZGxlCj4gPiA0 LSByZWxlYXNlIGNyYyBzcGlubG9jawo+ID4gCj4gPiAqIGNsZWFudXA6Cj4gPiAxLSBAY2xlYW51 cF9mYiAtPnZ1bm1hcCB2a21zX2dlbV9vYmotPnZhZGRyCj4gPiAyLSBAY3J0Y19kZXN0cm95IC0+ IGZsdXNoIHdvcmsgc3RydWN0Cj4gPiAzLSBAcGxhbmVfZGVzdHJveSAtPiBhKSBpZiAoZmIgcmVm Y291bnQpIHJlbW92ZSByZWZlcmVuY2UgdG8gZmIKPiA+IAkJICAgICBiKSBkZWFsbG9jYXRlIGNy Y19kYXRhCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEhhbmVlbiBNb2hhbW1lZCA8aGFtb2hhbW1l ZC5zYUBnbWFpbC5jb20+Cj4gCj4gT2ssIGV2ZXJ5dGhpbmcgbG9va3MgZ29vZCB0byBtZSAoYXNp ZGUgZnJvbSB0aGUgInZibGFtayIgdHlwbywgd2hpY2ggd2UgY2FuCj4gZml4dXAgb24gYXBwbHkp Lgo+IAo+IEknbGwgd2FpdCBmb3IgR3VzdGF2byB0byByZXNwb25kIHRvIHRoZSBvdGhlciB0aHJl YWQgYW5kIHRoZW4gd2UnbGwgZ28gZnJvbQo+IHRoZXJlLgo+IAo+IFJldmlld2VkLWJ5OiBTZWFu IFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiAKPiBUaGFua3MhCj4gCj4gU2Vhbgo+IAoK VGhhbmsgeW91ISBJJ20gc29ycnkgSSd2ZSBmYWlsZWQgdG8gbm90aWNlIHRoYXQgSSBkaWRudCBy ZWxlYXNlIHBhZ2VzX2xvY2sgd2hlbgp2a21zX29iai0+dmFkZHIgaXMgTlVMTCBpbiB2a21zX2dl dF9jcmMoKS4gSSdsbCBzZW5kIGEgcGF0Y2ggdG8gZml4IHRoYXQgaW1tZWRpYXRlbHkuCgo+ID4g LS0tCj4gPiBDaGFuZ2VzIGluIHYyOiAKPiA+IC0gcmVtb3ZlIHZrbXNfY3JjX2RhdGEgZm9yIHBy aW1hcnkgcGxhbmUgZnJvbSB2a21zX291dHB1dAo+ID4gICBhbmQgYWNjZXNzIGl0IGZyb20gdmtt c19wbGFuZV9zdGF0ZSBpbnN0ZWFkLgo+ID4gLSBmbHVzaCBjcmNfd29ya3EgaW4gdmttc19zZXRf Y3JjX3NvdXJjZSBiZWZvcmUgY2hhbmdpbmcgb3V0LT5lbmFibGVkCj4gPiAgIHZhbHVlLgo+ID4g Cj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUgICAgIHwgIDIgKy0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jICAgfCA5NSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgIHwgNTYgKysr KysrKysrKysrKysrLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYyAgIHwg IDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICB8IDIxICsrKysrKysK PiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgfCAzMCArKysrKysrKysrCj4g PiAgNiBmaWxlcyBjaGFuZ2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4g Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gaW5kZXggOTg2Mjk3ZGE1MWJmLi4zNzk2NjkxNGY3 MGIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUKPiA+IEBAIC0xLDMgKzEsMyBAQAo+ID4g LXZrbXMteSA6PSB2a21zX2Rydi5vIHZrbXNfcGxhbmUubyB2a21zX291dHB1dC5vIHZrbXNfY3J0 Yy5vIHZrbXNfZ2VtLm8KPiA+ICt2a21zLXkgOj0gdmttc19kcnYubyB2a21zX3BsYW5lLm8gdmtt c19vdXRwdXQubyB2a21zX2NydGMubyB2a21zX2dlbS5vIHZrbXNfY3JjLm8KPiA+ICAKPiA+ICBv YmotJChDT05GSUdfRFJNX1ZLTVMpICs9IHZrbXMubwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92a21zL3ZrbXNfY3JjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5j Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi45YjkwOTIy MTk0M2YKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3Zr bXNfY3JjLmMKPiA+IEBAIC0wLDAgKzEsOTUgQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMAo+ID4gKyNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ID4gKyNpbmNsdWRlIDxs aW51eC9jcmMzMi5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxw ZXIuaD4KPiA+ICsKPiA+ICtzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmtt c19jcmNfZGF0YSAqY3JjX2RhdGEpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9ICZjcmNfZGF0YS0+ZmI7Cj4gPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29i aiA9IGRybV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7Cj4gPiArCXN0cnVjdCB2a21zX2dlbV9vYmpl Y3QgKnZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShnZW1fb2JqKTsKPiA+ICsJdTMyIGNy YyA9IDA7Cj4gPiArCWludCBpID0gMDsKPiA+ICsJdW5zaWduZWQgaW50IHggPSBjcmNfZGF0YS0+ c3JjLngxID4+IDE2Owo+ID4gKwl1bnNpZ25lZCBpbnQgeSA9IGNyY19kYXRhLT5zcmMueTEgPj4g MTY7Cj4gPiArCXVuc2lnbmVkIGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJmNyY19kYXRh LT5zcmMpID4+IDE2Owo+ID4gKwl1bnNpZ25lZCBpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgm Y3JjX2RhdGEtPnNyYykgPj4gMTY7Cj4gPiArCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0 LT5jcHBbMF07Cj4gPiArCXVuc2lnbmVkIGludCBzcmNfb2Zmc2V0Owo+ID4gKwl1bnNpZ25lZCBp bnQgc2l6ZV9ieXRlID0gd2lkdGggKiBjcHA7Cj4gPiArCXZvaWQgKnZhZGRyOwo+ID4gKwo+ID4g KwltdXRleF9sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7Cj4gPiArCXZhZGRyID0gdmttc19v YmotPnZhZGRyOwo+ID4gKwlpZiAoV0FSTl9PTighdmFkZHIpKQo+ID4gKwkJcmV0dXJuIGNyYzsK PiA+ICsKPiA+ICsJZm9yIChpID0geTsgaSA8IHkgKyBoZWlnaHQ7IGkrKykgewo+ID4gKwkJc3Jj X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgKGkgKiBmYi0+cGl0Y2hlc1swXSkgKyAoeCAqIGNw cCk7Cj4gPiArCQljcmMgPSBjcmMzMl9sZShjcmMsIHZhZGRyICsgc3JjX29mZnNldCwgc2l6ZV9i eXRlKTsKPiA+ICsJfQo+ID4gKwltdXRleF91bmxvY2soJnZrbXNfb2JqLT5wYWdlc19sb2NrKTsK PiA+ICsKPiA+ICsJcmV0dXJuIGNyYzsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCB2a21zX2NyY193 b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiArewo+ID4gKwlzdHJ1Y3Qg dmttc19jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gY29udGFpbmVyX29mKHdvcmssCj4gPiArCQkJ CQkJc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSwKPiA+ICsJCQkJCQljcmNfd29yayk7Cj4gPiArCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiA+ICsJc3RydWN0 IHZrbXNfb3V0cHV0ICpvdXQgPSBkcm1fY3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+ICsJ c3RydWN0IHZrbXNfZGV2aWNlICp2ZGV2ID0gY29udGFpbmVyX29mKG91dCwgc3RydWN0IHZrbXNf ZGV2aWNlLAo+ID4gKwkJCQkJCW91dHB1dCk7Cj4gPiArCXN0cnVjdCB2a21zX2NyY19kYXRhICpw cmltYXJ5X2NyYyA9IE5VTEw7Cj4gPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gKwo+ ID4gKwl1MzIgY3JjMzIgPSAwOwo+ID4gKwo+ID4gKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUs ICZ2ZGV2LT5kcm0pIHsKPiA+ICsJCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2cGxhbmVfc3Rh dGU7Cj4gPiArCQlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGE7Cj4gPiArCj4gPiArCQl2 cGxhbmVfc3RhdGUgPSB0b192a21zX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4gPiArCQlj cmNfZGF0YSA9IHZwbGFuZV9zdGF0ZS0+Y3JjX2RhdGE7Cj4gPiArCj4gPiArCQlpZiAoZHJtX2Zy YW1lYnVmZmVyX3JlYWRfcmVmY291bnQoJmNyY19kYXRhLT5mYikgPT0gMCkKPiA+ICsJCQljb250 aW51ZTsKPiA+ICsKPiA+ICsJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKSB7Cj4gPiArCQkJcHJpbWFyeV9jcmMgPSBjcmNfZGF0YTsKPiA+ICsJCQlicmVhazsKPiA+ ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAocHJpbWFyeV9jcmMpCj4gPiArCQljcmMzMiA9 IF92a21zX2dldF9jcmMocHJpbWFyeV9jcmMpOwo+ID4gKwo+ID4gKwlkcm1fY3J0Y19hZGRfY3Jj X2VudHJ5KGNydGMsIHRydWUsIGNydGNfc3RhdGUtPm5fZnJhbWUsICZjcmMzMik7Cj4gPiArfQo+ ID4gKwo+ID4gK2ludCB2a21zX3NldF9jcmNfc291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg Y29uc3QgY2hhciAqc3JjX25hbWUsCj4gPiArCQkJc2l6ZV90ICp2YWx1ZXNfY250KQo+ID4gK3sK PiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXQgPSBkcm1fY3J0Y190b192a21zX291dHB1dChj cnRjKTsKPiA+ICsJYm9vbCBlbmFibGVkID0gZmFsc2U7Cj4gPiArCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gPiArCWludCByZXQgPSAwOwo+ID4gKwo+ID4gKwlpZiAoc3JjX25hbWUgJiYgc3RyY21w KHNyY19uYW1lLCAiYXV0byIpID09IDApCj4gPiArCQllbmFibGVkID0gdHJ1ZTsKPiA+ICsJZWxz ZSBpZiAoc3JjX25hbWUpCj4gPiArCQlyZXQgPSAtRUlOVkFMOwo+ID4gKwo+ID4gKwkqdmFsdWVz X2NudCA9IDE7Cj4gPiArCj4gPiArCS8qIG1ha2Ugc3VyZSBub3RoaW5nIGlzIHNjaGVkdWxlZCBv biBjcnRjIHdvcmtxICovCj4gPiArCWZsdXNoX3dvcmtxdWV1ZShvdXQtPmNyY193b3JrcSk7Cj4g PiArCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZvdXQtPmxvY2ssIGZsYWdzKTsKPiA+ICsJb3V0 LT5jcmNfZW5hYmxlZCA9IGVuYWJsZWQ7Cj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm91 dC0+bG9jaywgZmxhZ3MpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfY3J0Yy5jCj4gPiBpbmRleCAyNmJhYmI4NWNhNzcuLmE2YzA4MGQ3ZjdhZSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ID4gQEAgLTEwLDE4ICsxMCwzMyBA QAo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ICAjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4gIAo+ID4gLXN0YXRpYyBlbnVtIGhydGltZXJfcmVz dGFydCB2a21zX3ZibGFua19zaW11bGF0ZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCj4gPiArc3Rh dGljIHZvaWQgX3ZibGFua19oYW5kbGUoc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQpCj4gPiAg ewo+ID4gLQlzdHJ1Y3Qgdmttc19vdXRwdXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwg c3RydWN0IHZrbXNfb3V0cHV0LAo+ID4gLQkJCQkJCSAgdmJsYW5rX2hydGltZXIpOwo+ID4gIAlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmb3V0cHV0LT5jcnRjOwo+ID4gLQlpbnQgcmV0X292ZXJy dW47Cj4gPiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKnN0YXRlID0gdG9fdmttc19jcnRjX3N0 YXRlKGNydGMtPnN0YXRlKTsKPiA+ICAJYm9vbCByZXQ7Cj4gPiAgCj4gPiArCXNwaW5fbG9jaygm b3V0cHV0LT5sb2NrKTsKPiA+ICAJcmV0ID0gZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsK PiA+ICAJaWYgKCFyZXQpCj4gPiAgCQlEUk1fRVJST1IoInZrbXMgZmFpbHVyZSBvbiBoYW5kbGlu ZyB2YmxhbmsiKTsKPiA+ICAKPiA+ICsJaWYgKHN0YXRlICYmIG91dHB1dC0+Y3JjX2VuYWJsZWQp IHsKPiA+ICsJCXN0YXRlLT5uX2ZyYW1lID0gZHJtX2NydGNfYWNjdXJhdGVfdmJsYW5rX2NvdW50 KGNydGMpOwo+ID4gKwkJcXVldWVfd29yayhvdXRwdXQtPmNyY193b3JrcSwgJnN0YXRlLT5jcmNf d29yayk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJc3Bpbl91bmxvY2soJm91dHB1dC0+bG9jayk7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCB2a21zX3ZibGFua19z aW11bGF0ZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCj4gPiArewo+ID4gKwlzdHJ1Y3Qgdmttc19v dXRwdXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHZrbXNfb3V0cHV0LAo+ ID4gKwkJCQkJCSAgdmJsYW5rX2hydGltZXIpOwo+ID4gKwlpbnQgcmV0X292ZXJydW47Cj4gPiAr Cj4gPiArCV92YmxhbmtfaGFuZGxlKG91dHB1dCk7Cj4gPiArCj4gPiAgCXJldF9vdmVycnVuID0g aHJ0aW1lcl9mb3J3YXJkX25vdygmb3V0cHV0LT52YmxhbmtfaHJ0aW1lciwKPiA+ICAJCQkJCSAg b3V0cHV0LT5wZXJpb2RfbnMpOwo+ID4gIAo+ID4gQEAgLTk3LDE4ICsxMTIsMjIgQEAgdmttc19h dG9taWNfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gIAo+ ID4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKGNydGMsICZ2a21z X3N0YXRlLT5iYXNlKTsKPiA+ICAKPiA+ICsJSU5JVF9XT1JLKCZ2a21zX3N0YXRlLT5jcmNfd29y aywgdmttc19jcmNfd29ya19oYW5kbGUpOwo+ID4gKwo+ID4gIAlyZXR1cm4gJnZrbXNfc3RhdGUt PmJhc2U7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIHZrbXNfYXRvbWljX2NydGNfZGVz dHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJCQkgICBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+IC0Jc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSAq dmttc19zdGF0ZTsKPiA+IC0KPiA+IC0Jdmttc19zdGF0ZSA9IHRvX3ZrbXNfY3J0Y19zdGF0ZShz dGF0ZSk7Cj4gPiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKnZrbXNfc3RhdGUgPSB0b192a21z X2NydGNfc3RhdGUoc3RhdGUpOwo+ID4gIAo+ID4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNf ZGVzdHJveV9zdGF0ZShzdGF0ZSk7Cj4gPiAtCWtmcmVlKHZrbXNfc3RhdGUpOwo+ID4gKwo+ID4g KwlpZiAodmttc19zdGF0ZSkgewo+ID4gKwkJZmx1c2hfd29yaygmdmttc19zdGF0ZS0+Y3JjX3dv cmspOwo+ID4gKwkJa2ZyZWUodmttc19zdGF0ZSk7Cj4gPiArCX0KPiA+ICB9Cj4gPiAgCj4gPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyB2a21zX2NydGNfZnVuY3MgPSB7Cj4g PiBAQCAtMTIwLDYgKzEzOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mg dmttc19jcnRjX2Z1bmNzID0gewo+ID4gIAkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgICA9IHZrbXNf YXRvbWljX2NydGNfZGVzdHJveV9zdGF0ZSwKPiA+ICAJLmVuYWJsZV92YmxhbmsJCT0gdmttc19l bmFibGVfdmJsYW5rLAo+ID4gIAkuZGlzYWJsZV92YmxhbmsJCT0gdmttc19kaXNhYmxlX3ZibGFu aywKPiA+ICsJLnNldF9jcmNfc291cmNlCQk9IHZrbXNfc2V0X2NyY19zb3VyY2UsCj4gPiAgfTsK PiA+ICAKPiA+ICBzdGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gPiBAQCAtMTM0LDkgKzE1NCwyMSBAQCBzdGF0aWMgdm9pZCB2a21zX2Ny dGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAlkcm1fY3J0Y192 Ymxhbmtfb2ZmKGNydGMpOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgdm9pZCB2a21zX2NydGNf YXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICsJCQkJICAgc3RydWN0IGRy bV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCB2a21zX291 dHB1dCAqdmttc19vdXRwdXQgPSBkcm1fY3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+ICsK PiA+ICsJLyogVGhpcyBsb2NrIGlzIGhlbGQgYWNyb3NzIHRoZSBhdG9taWMgY29tbWl0IHRvIGJs b2NrIHZibGFtayB0aW1lcgo+ID4gKwkgKiBmcm9tIHNjaGVkdWxpbmcgdmttc19jcmNfd29ya19o YW5kbGUgdW50aWwgdGhlIGNyY19kYXRhIGlzIHVwZGF0ZWQKPiA+ICsJICovCj4gPiArCXNwaW5f bG9ja19pcnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZv aWQgdmttc19jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJ CSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gPiAgewo+ID4gKwlz dHJ1Y3Qgdmttc19vdXRwdXQgKnZrbXNfb3V0cHV0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQo Y3J0Yyk7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPiAgCj4gPiAgCWlmIChjcnRjLT5z dGF0ZS0+ZXZlbnQpIHsKPiA+IEBAIC0xNTEsOSArMTgzLDEyIEBAIHN0YXRpYyB2b2lkIHZrbXNf Y3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAo+ID4gIAkJY3J0 Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiA+ICAJfQo+ID4gKwo+ID4gKwlzcGluX3VubG9ja19p cnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3Mgdmttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKPiA+ ICsJLmF0b21pY19iZWdpbgk9IHZrbXNfY3J0Y19hdG9taWNfYmVnaW4sCj4gPiAgCS5hdG9taWNf Zmx1c2gJPSB2a21zX2NydGNfYXRvbWljX2ZsdXNoLAo+ID4gIAkuYXRvbWljX2VuYWJsZQk9IHZr bXNfY3J0Y19hdG9taWNfZW5hYmxlLAo+ID4gIAkuYXRvbWljX2Rpc2FibGUJPSB2a21zX2NydGNf YXRvbWljX2Rpc2FibGUsCj4gPiBAQCAtMTYyLDYgKzE5Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIHZrbXNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gPiAg aW50IHZrbXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ICAJCSAgIHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksIHN0cnVjdCBkcm1f cGxhbmUgKmN1cnNvcikKPiA+ICB7Cj4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXQg PSBkcm1fY3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+ ICAJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMsIHByaW1hcnksIGN1 cnNvciwKPiA+IEBAIC0xNzMsNSArMjA5LDkgQEAgaW50IHZrbXNfY3J0Y19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAKPiA+ICAJZHJtX2Ny dGNfaGVscGVyX2FkZChjcnRjLCAmdmttc19jcnRjX2hlbHBlcl9mdW5jcyk7Cj4gPiAgCj4gPiAr CXNwaW5fbG9ja19pbml0KCZ2a21zX291dC0+bG9jayk7Cj4gPiArCj4gPiArCXZrbXNfb3V0LT5j cmNfd29ya3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgidmttc19jcmNfd29ya3EiLCAwKTsK PiA+ICsKPiA+ICAJcmV0dXJuIHJldDsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMK PiA+IGluZGV4IGUzNDBhYTEyOGI2MS4uNTE5YTM1M2NkOTA5IDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zr bXMvdmttc19kcnYuYwo+ID4gQEAgLTc5LDYgKzc5LDcgQEAgc3RhdGljIHZvaWQgdmttc19yZWxl YXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgCWRybV9hdG9taWNfaGVscGVyX3NodXRk b3duKCZ2a21zLT5kcm0pOwo+ID4gIAlkcm1fbW9kZV9jb25maWdfY2xlYW51cCgmdmttcy0+ZHJt KTsKPiA+ICAJZHJtX2Rldl9maW5pKCZ2a21zLT5kcm0pOwo+ID4gKwlkZXN0cm95X3dvcmtxdWV1 ZSh2a21zLT5vdXRwdXQuY3JjX3dvcmtxKTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHN0cnVj dCBkcm1fZHJpdmVyIHZrbXNfZHJpdmVyID0gewo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4g PiBpbmRleCBhMWIyMDY2NDNjMTAuLmRlMWRkZjMxMzQxYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21z L3ZrbXNfZHJ2LmgKPiA+IEBAIC0yMCwyMCArMjAsMzEgQEAgc3RhdGljIGNvbnN0IHUzMiB2a21z X2Zvcm1hdHNbXSA9IHsKPiA+ICAJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+ICB9Owo+ID4gIAo+ ID4gK3N0cnVjdCB2a21zX2NyY19kYXRhIHsKPiA+ICsJc3RydWN0IGRybV9yZWN0IHNyYzsKPiA+ ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYjsKPiA+ICt9Owo+ID4gKwo+ID4gIC8qKgo+ID4g ICAqIHZrbXNfcGxhbmVfc3RhdGUgLSBEcml2ZXIgc3BlY2lmaWMgcGxhbmUgc3RhdGUKPiA+ICAg KiBAYmFzZTogYmFzZSBwbGFuZSBzdGF0ZQo+ID4gKyAqIEBjcmNfZGF0YTogZGF0YSByZXF1aXJl ZCBmb3IgQ1JDIGNvbXB1dGF0aW9uCj4gPiAgICovCj4gPiAgc3RydWN0IHZrbXNfcGxhbmVfc3Rh dGUgewo+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7Cj4gPiArCXN0cnVjdCB2a21z X2NyY19kYXRhICpjcmNfZGF0YTsKPiA+ICB9Owo+ID4gIAo+ID4gIC8qKgo+ID4gICAqIHZrbXNf Y3J0Y19zdGF0ZSAtIERyaXZlciBzcGVjaWZpYyBDUlRDIHN0YXRlCj4gPiAgICogQGJhc2U6IGJh c2UgQ1JUQyBzdGF0ZQo+ID4gKyAqIEBjcmNfd29yazogd29yayBzdHJ1Y3QgdG8gY29tcHV0ZSBh bmQgYWRkIENSQyBlbnRyaWVzCj4gPiArICogQG5fZnJhbWU6IGZyYW1lIG51bWJlciBmb3IgY29t cHV0ZWQgQ1JDCj4gPiAgICovCj4gPiAgc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSB7Cj4gPiAgCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOwo+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgY3JjX3dv cms7Cj4gPiArCXVuc2lnbmVkIGludCBuX2ZyYW1lOwo+ID4gIH07Cj4gPiAgCj4gPiAgc3RydWN0 IHZrbXNfb3V0cHV0IHsKPiA+IEBAIC00Myw2ICs1NCwxMSBAQCBzdHJ1Y3Qgdmttc19vdXRwdXQg ewo+ID4gIAlzdHJ1Y3QgaHJ0aW1lciB2YmxhbmtfaHJ0aW1lcjsKPiA+ICAJa3RpbWVfdCBwZXJp b2RfbnM7Cj4gPiAgCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50Owo+ID4g Kwlib29sIGNyY19lbmFibGVkOwo+ID4gKwkvKiBvcmRlcmVkIHdxIGZvciBjcmNfd29yayAqLwo+ ID4gKwlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqY3JjX3dvcmtxOwo+ID4gKwkvKiBwcm90ZWN0 cyBjb25jdXJyZW50IGFjY2VzcyB0byBjcmNfZGF0YSAqLwo+ID4gKwlzcGlubG9ja190IGxvY2s7 Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdHJ1Y3Qgdmttc19kZXZpY2Ugewo+ID4gQEAgLTEwNiw0ICsx MjIsOSBAQCBpbnQgdmttc19nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4g PiAgCj4gPiAgdm9pZCB2a21zX2dlbV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop Owo+ID4gIAo+ID4gKy8qIENSQyBTdXBwb3J0ICovCj4gPiAraW50IHZrbXNfc2V0X2NyY19zb3Vy Y2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBjaGFyICpzcmNfbmFtZSwKPiA+ICsJCQlz aXplX3QgKnZhbHVlc19jbnQpOwo+ID4gK3ZvaWQgdmttc19jcmNfd29ya19oYW5kbGUoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKTsKPiA+ICsKPiA+ICAjZW5kaWYgLyogX1ZLTVNfRFJWX0hfICov Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIGIvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiBpbmRleCA3MGZjYTIyYmM1MWIuLmM5 MTY2MTYzMWM3NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxh bmUuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiBAQCAt MTYsMTEgKzE2LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoKPiA+ICB2a21z X3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiA+ICB7Cj4g PiAgCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3N0YXRlOwo+ID4gKwlzdHJ1Y3Qgdmtt c19jcmNfZGF0YSAqY3JjX2RhdGE7Cj4gPiAgCj4gPiAgCXZrbXNfc3RhdGUgPSBremFsbG9jKHNp emVvZigqdmttc19zdGF0ZSksIEdGUF9LRVJORUwpOwo+ID4gIAlpZiAoIXZrbXNfc3RhdGUpCj4g PiAgCQlyZXR1cm4gTlVMTDsKPiA+ICAKPiA+ICsJY3JjX2RhdGEgPSBremFsbG9jKHNpemVvZigq Y3JjX2RhdGEpLCBHRlBfS0VSTkVMKTsKPiA+ICsJaWYgKFdBUk5fT04oIWNyY19kYXRhKSkKPiA+ ICsJCURSTV9JTkZPKCJDb3VsZG4ndCBhbGxvY2F0ZSBjcmNfZGF0YSIpOwo+ID4gKwo+ID4gKwl2 a21zX3N0YXRlLT5jcmNfZGF0YSA9IGNyY19kYXRhOwo+ID4gKwo+ID4gIAlfX2RybV9hdG9taWNf aGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShwbGFuZSwKPiA+ICAJCQkJCQkgICZ2a21zX3N0 YXRlLT5iYXNlKTsKPiA+ICAKPiA+IEBAIC0zMSw2ICszOCwxOCBAQCBzdGF0aWMgdm9pZCB2a21z X3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCQkJCSAg ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0 IHZrbXNfcGxhbmVfc3RhdGUgKnZrbXNfc3RhdGUgPSB0b192a21zX3BsYW5lX3N0YXRlKG9sZF9z dGF0ZSk7Cj4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHZrbXNfc3RhdGUtPmJhc2UuY3J0 YzsKPiA+ICsKPiA+ICsJaWYgKGNydGMpIHsKPiA+ICsJCS8qIGRyb3BwaW5nIHRoZSByZWZlcmVu Y2Ugd2UgYWNxdWlyZWQgaW4KPiA+ICsJCSAqIHZrbXNfcHJpbWFyeV9wbGFuZV91cGRhdGUoKQo+ ID4gKwkJICovCj4gPiArCQlpZiAoZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVmY291bnQoJnZrbXNf c3RhdGUtPmNyY19kYXRhLT5mYikpCj4gPiArCQkJZHJtX2ZyYW1lYnVmZmVyX3B1dCgmdmttc19z dGF0ZS0+Y3JjX2RhdGEtPmZiKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlrZnJlZSh2a21zX3N0YXRl LT5jcmNfZGF0YSk7Cj4gPiArCXZrbXNfc3RhdGUtPmNyY19kYXRhID0gTlVMTDsKPiA+ICAKPiA+ ICAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKG9sZF9zdGF0ZSk7Cj4g PiAgCWtmcmVlKHZrbXNfc3RhdGUpOwo+ID4gQEAgLTY1LDYgKzg0LDE3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHZrbXNfcGxhbmVfZnVuY3MgPSB7Cj4gPiAgc3RhdGlj IHZvaWQgdmttc19wcmltYXJ5X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiA+ICAJCQkJICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gIHsK PiA+ICsJc3RydWN0IHZrbXNfcGxhbmVfc3RhdGUgKnZrbXNfcGxhbmVfc3RhdGU7Cj4gPiArCXN0 cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YTsKPiA+ICsKPiA+ICsJaWYgKCFwbGFuZS0+c3Rh dGUtPmNydGMgfHwgIXBsYW5lLT5zdGF0ZS0+ZmIpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiAr CXZrbXNfcGxhbmVfc3RhdGUgPSB0b192a21zX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4g PiArCWNyY19kYXRhID0gdmttc19wbGFuZV9zdGF0ZS0+Y3JjX2RhdGE7Cj4gPiArCW1lbWNweSgm Y3JjX2RhdGEtPnNyYywgJnBsYW5lLT5zdGF0ZS0+c3JjLCBzaXplb2Yoc3RydWN0IGRybV9yZWN0 KSk7Cj4gPiArCW1lbWNweSgmY3JjX2RhdGEtPmZiLCBwbGFuZS0+c3RhdGUtPmZiLCBzaXplb2Yo c3RydWN0IGRybV9mcmFtZWJ1ZmZlcikpOwo+ID4gKwlkcm1fZnJhbWVidWZmZXJfZ2V0KCZjcmNf ZGF0YS0+ZmIpOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgaW50IHZrbXNfcGxhbmVfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gLS0gCj4gPiAyLjE3LjEKPiA+IAo+ IAo+IC0tIAo+IFNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVt IE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=