From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH v2 2/2] drm/vkms: Implement CRC debugfs API Date: Thu, 2 Aug 2018 08:09:51 -0300 Message-ID: <20180802110951.GA29358@juma> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-f182.google.com (mail-qt0-f182.google.com [209.85.216.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E7F66E58D for ; Thu, 2 Aug 2018 11:09:58 +0000 (UTC) Received: by mail-qt0-f182.google.com with SMTP id c15-v6so1817844qtp.0 for ; Thu, 02 Aug 2018 04:09:58 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Haneen Mohammed Cc: rodrigosiqueiramelo@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgSGFuZWVuLAoKT24gVGh1LCBBdWcgMDIsIDIwMTggYXQgMDQ6MTA6MjZBTSArMDMwMCwgSGFu ZWVuIE1vaGFtbWVkIHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW1wbGVtZW50IHRoZSBuZWNlc3Nhcnkg ZnVuY3Rpb25zIHRvIGNvbXB1dGUgYW5kIGFkZCBDUkNzCj4gZW50cmllczoKPiAKPiAtIEltcGxl bWVudCB0aGUgc2V0X2NyY19zb3VyY2UoKSBjYWxsYmFjay4KPiAtIENvbXB1dGUgQ1JDIHVzaW5n IGNyYzMyIG9uIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGZyYW1lYnVmZmVyLgo+IC0gVXNlIG9y ZGVyZWQgd29ya3F1ZXVlIHBlciBvdXRwdXQgdG8gY29tcHV0ZSBhbmQgYWRkIENSQyBhdCB0aGUg ZW5kCj4gICBvZiBhIHZibGFuay4KPiAtIFVzZSBhcHByb3ByaWF0ZSBzeW5jaHJvbml6YXRpb24g bWV0aG9kcyBzaW5jZSB0aGUgQ1JDIGNvbXB1dGF0aW9uIG11c3QKPiAgIGJlIGF0b21pYyB3cnQg dGhlIGdlbmVyYXRlZCB2YmxhbmsgZXZlbnQgZm9yIGEgZ2l2ZW4gYXRvbWljIHVwZGF0ZSwgYnkK PiAgIHVzaW5nIHNwaW5sb2NrIGFjcm9zcyBhdG9taWNfYmVnaW4vYXRvbWljX2ZsdXNoIHRvIHdy YXAgdGhlIGV2ZW50Cj4gICBoYW5kbGluZyBjb2RlIGNvbXBsZXRlbHkgYW5kIG1hdGNoIHRoZSBm bGlwIGV2ZW50IHdpdGggdGhlIENSQy4KPiAKPiBTaW5jZSB2a21zX2NyY193b3JrX2hhbmRsZSgp IGNhbiBzbGVlcCwgc3BpbmxvY2sgY2FuJ3QgYmUgYWNxdWlyZWQKPiB3aGlsZSBhY2Nlc3Npbmcg dmttc19vdXRwdXQtPnByaW1hcnlfY3JjIHRvIGNvbXB1dGUgQ1JDLgo+IFRvIG1ha2Ugc3VyZSB0 aGUgZGF0YSBpcyB1cGRhdGVkIGFuZCByZWxlYXNlZCB3aXRob3V0IGNvbmZsaWN0IHdpdGgKPiB0 aGUgdmttc19jcmNfd29ya19oYW5kbGUoKSwgdGhlIHdvcmtfc3RydWN0IGlzIGZsdXNoZWQgQGNy dGNfZGVzdHJveQo+IGFuZCB0aGUgZGF0YSBpcyB1cGRhdGVkIGJlZm9yZSBzY2hlZHVsaW5nIHRo ZSB3b3JrIGhhbmRsZSBhZ2FpbiwgYXMKPiBmb2xsb3c6CgpJJ20gbm90IHN1cmUgSSBnZXQgd2h5 IHRoaXMgaXMgYSBzcGlubG9jayBhbmQgbm90IGEgbXV0ZXguIFdpdGggdGhlCmxhdGVyIHlvdSBh cmUgYWJsZSB0byBzbGVlcC4gQWxzbywgeW91ciBzcGlubG9jayBoZWxkIHRocm91Z2ggdGhlIHdo b2xlCmF0b21pYyBjb21taXQgKGZyb20gdGhlIGJlZ2luIHRvIGZsdXNoKSB3aGljaCBzZWVtcyB0 b28gbXVjaCB0aW1lIGZvcgpidXN5IHdhaXRpbmcuIE9yIGFtIEkgbWlzc2luZyBzb21ldGhpbmcg aGVyZT8KCkd1c3Rhdm8KCj4gCj4gKiBDUkMgZGF0YSB1cGRhdGU6Cj4gMS0gc3RvcmUgdmttc19j cmNfZGF0YSB7ZmIsIHNyY30gcGVyIHBsYW5lX3N0YXRlCj4gMi0gQHBsYW5lX2R1cGxpY2F0ZV9z dGF0ZSAtPiBhbGxvY2F0ZSB2a21zX2NyY19kYXRhCj4gMy0gZHVyaW5nIGF0b21pYyBjb21taXQg KEBhdG9taWNfdXBkYXRlKSAtPgo+IAlhKSBjb3B5IHtmYiwgc3JjfSB0byBwbGFuZV9zdGF0ZS0+ Y3JjX2RhdGEKPiAJYikgZ2V0IHJlZmVyZW5jZSB0byBmYiwKPiAzLSBAcGxhbmVfZGVzdHJveV9z dGF0ZSAtPiBhKSBpZiAoZmIgcmVmY291bnQpIHJlbW92ZSByZWZlcmVuY2UgdG8gZmIKPiAJCQkg ICBiKSBkZWFsbG9jYXRlIGNyY19kYXRhCj4gCj4gKiBBdG9taWMgQ29tbWl0Ogo+IDEtIHZrbXNf cGxhbmVfYXRvbWljX2NoZWNrCj4gMi0gdmttc19wcmVwYXJlX2ZiIC0+IHZtYXAgdmttc19nZW1f b2JqLT52YWRkcgo+IDMtIGF0b21pY19iZWdpbiAtPiBob2xkIGNyYyBzcGlubG9jawo+IDQtIGF0 b21pY19wbGFuZV91cGRhdGUgLT4gYSkgdXBkYXRlIHZrbXNfb3V0cHV0LT5wcmltYXJ5X2NyYwo+ IAkJCSAgYikgZ2V0IHJlZmVyZW5jZSB0byBmYgo+IDUtIGF0b21pY19mbHVzaCAtPiBhKSBzZW5k IHZibGFuayBldmVudCB3aGlsZSBob2xkaW5nIGV2ZW50X2xvY2sKPiAJCSAgIGIpIHJlbGVhc2Ug Y3JjIHNwaW5sb2NrCj4gCj4gKiBocnRpbWVyIHJlZ3VsYXIgY2FsbGJhY2s6Cj4gMS0gaG9sZCBj cmMgc3BpbmxvY2sKPiAyLSBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCkKPiAzLSBxdWV1ZSB2a21z X2NyY193b3JrX2hhbmRsZQo+IDQtIHJlbGVhc2UgY3JjIHNwaW5sb2NrCj4gCj4gKiBjbGVhbnVw Ogo+IDEtIEBjbGVhbnVwX2ZiIC0+dnVubWFwIHZrbXNfZ2VtX29iai0+dmFkZHIKPiAyLSBAY3J0 Y19kZXN0cm95IC0+IGZsdXNoIHdvcmsgc3RydWN0Cj4gMy0gQHBsYW5lX2Rlc3Ryb3kgLT4gYSkg aWYgKGZiIHJlZmNvdW50KSByZW1vdmUgcmVmZXJlbmNlIHRvIGZiCj4gCQkgICAgIGIpIGRlYWxs b2NhdGUgY3JjX2RhdGEKPiAKPiBTaWduZWQtb2ZmLWJ5OiBIYW5lZW4gTW9oYW1tZWQgPGhhbW9o YW1tZWQuc2FAZ21haWwuY29tPgo+IC0tLQo+IENoYW5nZXMgaW4gdjI6IAo+IC0gcmVtb3ZlIHZr bXNfY3JjX2RhdGEgZm9yIHByaW1hcnkgcGxhbmUgZnJvbSB2a21zX291dHB1dAo+ICAgYW5kIGFj Y2VzcyBpdCBmcm9tIHZrbXNfcGxhbmVfc3RhdGUgaW5zdGVhZC4KPiAtIGZsdXNoIGNyY193b3Jr cSBpbiB2a21zX3NldF9jcmNfc291cmNlIGJlZm9yZSBjaGFuZ2luZyBvdXQtPmVuYWJsZWQKPiAg IHZhbHVlLgo+IAo+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZSAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jICAgfCA5NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jICB8IDU2 ICsrKysrKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jICAg fCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICB8IDIxICsrKysrKysK PiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIHwgMzAgKysrKysrKysrKwo+ICA2 IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL01ha2VmaWxlCj4gaW5kZXggOTg2Mjk3ZGE1MWJmLi4zNzk2NjkxNGY3MGIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vdmttcy9NYWtlZmlsZQo+IEBAIC0xLDMgKzEsMyBAQAo+IC12a21zLXkgOj0gdmttc19kcnYu byB2a21zX3BsYW5lLm8gdmttc19vdXRwdXQubyB2a21zX2NydGMubyB2a21zX2dlbS5vCj4gK3Zr bXMteSA6PSB2a21zX2Rydi5vIHZrbXNfcGxhbmUubyB2a21zX291dHB1dC5vIHZrbXNfY3J0Yy5v IHZrbXNfZ2VtLm8gdmttc19jcmMubwo+ICAKPiAgb2JqLSQoQ09ORklHX0RSTV9WS01TKSArPSB2 a21zLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uOWI5MDkyMjE5NDNmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiBAQCAtMCwwICsxLDk1IEBACj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKyNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ ICsjaW5jbHVkZSA8bGludXgvY3JjMzIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1l YnVmZmVyX2hlbHBlci5oPgo+ICsKPiArc3RhdGljIHVpbnQzMl90IF92a21zX2dldF9jcmMoc3Ry dWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9ICZjcmNfZGF0YS0+ZmI7Cj4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9v YmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooZmIsIDApOwo+ICsJc3RydWN0IHZrbXNfZ2VtX29iamVj dCAqdmttc19vYmogPSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ICsJdTMyIGNyYyA9 IDA7Cj4gKwlpbnQgaSA9IDA7Cj4gKwl1bnNpZ25lZCBpbnQgeCA9IGNyY19kYXRhLT5zcmMueDEg Pj4gMTY7Cj4gKwl1bnNpZ25lZCBpbnQgeSA9IGNyY19kYXRhLT5zcmMueTEgPj4gMTY7Cj4gKwl1 bnNpZ25lZCBpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcmNfZGF0YS0+c3JjKSA+PiAx NjsKPiArCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZjcmNfZGF0YS0+c3Jj KSA+PiAxNjsKPiArCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwl1 bnNpZ25lZCBpbnQgc3JjX29mZnNldDsKPiArCXVuc2lnbmVkIGludCBzaXplX2J5dGUgPSB3aWR0 aCAqIGNwcDsKPiArCXZvaWQgKnZhZGRyOwo+ICsKPiArCW11dGV4X2xvY2soJnZrbXNfb2JqLT5w YWdlc19sb2NrKTsKPiArCXZhZGRyID0gdmttc19vYmotPnZhZGRyOwo+ICsJaWYgKFdBUk5fT04o IXZhZGRyKSkKPiArCQlyZXR1cm4gY3JjOwo+ICsKPiArCWZvciAoaSA9IHk7IGkgPCB5ICsgaGVp Z2h0OyBpKyspIHsKPiArCQlzcmNfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF0gKyAoaSAqIGZiLT5w aXRjaGVzWzBdKSArICh4ICogY3BwKTsKPiArCQljcmMgPSBjcmMzMl9sZShjcmMsIHZhZGRyICsg c3JjX29mZnNldCwgc2l6ZV9ieXRlKTsKPiArCX0KPiArCW11dGV4X3VubG9jaygmdmttc19vYmot PnBhZ2VzX2xvY2spOwo+ICsKPiArCXJldHVybiBjcmM7Cj4gK30KPiArCj4gK3ZvaWQgdmttc19j cmNfd29ya19oYW5kbGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICt7Cj4gKwlzdHJ1Y3Qg dmttc19jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gY29udGFpbmVyX29mKHdvcmssCj4gKwkJCQkJ CXN0cnVjdCB2a21zX2NydGNfc3RhdGUsCj4gKwkJCQkJCWNyY193b3JrKTsKPiArCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCB2a21zX291 dHB1dCAqb3V0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0Yyk7Cj4gKwlzdHJ1Y3Qgdmtt c19kZXZpY2UgKnZkZXYgPSBjb250YWluZXJfb2Yob3V0LCBzdHJ1Y3Qgdmttc19kZXZpY2UsCj4g KwkJCQkJCW91dHB1dCk7Cj4gKwlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMgPSBO VUxMOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gKwo+ICsJdTMyIGNyYzMyID0gMDsK PiArCj4gKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsICZ2ZGV2LT5kcm0pIHsKPiArCQlzdHJ1 Y3Qgdmttc19wbGFuZV9zdGF0ZSAqdnBsYW5lX3N0YXRlOwo+ICsJCXN0cnVjdCB2a21zX2NyY19k YXRhICpjcmNfZGF0YTsKPiArCj4gKwkJdnBsYW5lX3N0YXRlID0gdG9fdmttc19wbGFuZV9zdGF0 ZShwbGFuZS0+c3RhdGUpOwo+ICsJCWNyY19kYXRhID0gdnBsYW5lX3N0YXRlLT5jcmNfZGF0YTsK PiArCj4gKwkJaWYgKGRybV9mcmFtZWJ1ZmZlcl9yZWFkX3JlZmNvdW50KCZjcmNfZGF0YS0+ZmIp ID09IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSkgewo+ICsJCQlwcmltYXJ5X2NyYyA9IGNyY19kYXRhOwo+ICsJCQli cmVhazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKHByaW1hcnlfY3JjKQo+ICsJCWNyYzMyID0g X3ZrbXNfZ2V0X2NyYyhwcmltYXJ5X2NyYyk7Cj4gKwo+ICsJZHJtX2NydGNfYWRkX2NyY19lbnRy eShjcnRjLCB0cnVlLCBjcnRjX3N0YXRlLT5uX2ZyYW1lLCAmY3JjMzIpOwo+ICt9Cj4gKwo+ICtp bnQgdmttc19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGNvbnN0IGNoYXIg KnNyY19uYW1lLAo+ICsJCQlzaXplX3QgKnZhbHVlc19jbnQpCj4gK3sKPiArCXN0cnVjdCB2a21z X291dHB1dCAqb3V0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0Yyk7Cj4gKwlib29sIGVu YWJsZWQgPSBmYWxzZTsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwlpbnQgcmV0ID0gMDsK PiArCj4gKwlpZiAoc3JjX25hbWUgJiYgc3RyY21wKHNyY19uYW1lLCAiYXV0byIpID09IDApCj4g KwkJZW5hYmxlZCA9IHRydWU7Cj4gKwllbHNlIGlmIChzcmNfbmFtZSkKPiArCQlyZXQgPSAtRUlO VkFMOwo+ICsKPiArCSp2YWx1ZXNfY250ID0gMTsKPiArCj4gKwkvKiBtYWtlIHN1cmUgbm90aGlu ZyBpcyBzY2hlZHVsZWQgb24gY3J0YyB3b3JrcSAqLwo+ICsJZmx1c2hfd29ya3F1ZXVlKG91dC0+ Y3JjX3dvcmtxKTsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmb3V0LT5sb2NrLCBmbGFncyk7 Cj4gKwlvdXQtPmNyY19lbmFibGVkID0gZW5hYmxlZDsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJm91dC0+bG9jaywgZmxhZ3MpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX2NydGMuYwo+IGluZGV4IDI2YmFiYjg1Y2E3Ny4uYTZjMDgwZDdmN2FlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiBAQCAtMTAsMTggKzEwLDMzIEBACj4gICNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19o ZWxwZXIuaD4KPiAgCj4gLXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCB2a21zX3ZibGFua19z aW11bGF0ZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCj4gK3N0YXRpYyB2b2lkIF92YmxhbmtfaGFu ZGxlKHN0cnVjdCB2a21zX291dHB1dCAqb3V0cHV0KQo+ICB7Cj4gLQlzdHJ1Y3Qgdmttc19vdXRw dXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHZrbXNfb3V0cHV0LAo+IC0J CQkJCQkgIHZibGFua19ocnRpbWVyKTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZvdXRw dXQtPmNydGM7Cj4gLQlpbnQgcmV0X292ZXJydW47Cj4gKwlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRl ICpzdGF0ZSA9IHRvX3ZrbXNfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAlib29sIHJldDsK PiAgCj4gKwlzcGluX2xvY2soJm91dHB1dC0+bG9jayk7Cj4gIAlyZXQgPSBkcm1fY3J0Y19oYW5k bGVfdmJsYW5rKGNydGMpOwo+ICAJaWYgKCFyZXQpCj4gIAkJRFJNX0VSUk9SKCJ2a21zIGZhaWx1 cmUgb24gaGFuZGxpbmcgdmJsYW5rIik7Cj4gIAo+ICsJaWYgKHN0YXRlICYmIG91dHB1dC0+Y3Jj X2VuYWJsZWQpIHsKPiArCQlzdGF0ZS0+bl9mcmFtZSA9IGRybV9jcnRjX2FjY3VyYXRlX3ZibGFu a19jb3VudChjcnRjKTsKPiArCQlxdWV1ZV93b3JrKG91dHB1dC0+Y3JjX3dvcmtxLCAmc3RhdGUt PmNyY193b3JrKTsKPiArCX0KPiArCj4gKwlzcGluX3VubG9jaygmb3V0cHV0LT5sb2NrKTsKPiAr fQo+ICsKPiArc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRl KHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiArewo+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRw dXQgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB2a21zX291dHB1dCwKPiArCQkJCQkJICB2 YmxhbmtfaHJ0aW1lcik7Cj4gKwlpbnQgcmV0X292ZXJydW47Cj4gKwo+ICsJX3ZibGFua19oYW5k bGUob3V0cHV0KTsKPiArCj4gIAlyZXRfb3ZlcnJ1biA9IGhydGltZXJfZm9yd2FyZF9ub3coJm91 dHB1dC0+dmJsYW5rX2hydGltZXIsCj4gIAkJCQkJICBvdXRwdXQtPnBlcmlvZF9ucyk7Cj4gIAo+ IEBAIC05NywxOCArMTEyLDIyIEBAIHZrbXNfYXRvbWljX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVw bGljYXRlX3N0YXRlKGNydGMsICZ2a21zX3N0YXRlLT5iYXNlKTsKPiAgCj4gKwlJTklUX1dPUkso JnZrbXNfc3RhdGUtPmNyY193b3JrLCB2a21zX2NyY193b3JrX2hhbmRsZSk7Cj4gKwo+ICAJcmV0 dXJuICZ2a21zX3N0YXRlLT5iYXNlOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCB2a21zX2F0b21p Y19jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJCSAgIHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCB2a21zX2NydGNfc3Rh dGUgKnZrbXNfc3RhdGU7Cj4gLQo+IC0Jdmttc19zdGF0ZSA9IHRvX3ZrbXNfY3J0Y19zdGF0ZShz dGF0ZSk7Cj4gKwlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICp2a21zX3N0YXRlID0gdG9fdmttc19j cnRjX3N0YXRlKHN0YXRlKTsKPiAgCj4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJv eV9zdGF0ZShzdGF0ZSk7Cj4gLQlrZnJlZSh2a21zX3N0YXRlKTsKPiArCj4gKwlpZiAodmttc19z dGF0ZSkgewo+ICsJCWZsdXNoX3dvcmsoJnZrbXNfc3RhdGUtPmNyY193b3JrKTsKPiArCQlrZnJl ZSh2a21zX3N0YXRlKTsKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19mdW5jcyB2a21zX2NydGNfZnVuY3MgPSB7Cj4gQEAgLTEyMCw2ICsxMzksNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIHZrbXNfY3J0Y19mdW5jcyA9IHsKPiAgCS5h dG9taWNfZGVzdHJveV9zdGF0ZSAgID0gdmttc19hdG9taWNfY3J0Y19kZXN0cm95X3N0YXRlLAo+ ICAJLmVuYWJsZV92YmxhbmsJCT0gdmttc19lbmFibGVfdmJsYW5rLAo+ICAJLmRpc2FibGVfdmJs YW5rCQk9IHZrbXNfZGlzYWJsZV92YmxhbmssCj4gKwkuc2V0X2NyY19zb3VyY2UJCT0gdmttc19z ZXRfY3JjX3NvdXJjZSwKPiAgfTsKPiAgCj4gIHN0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9taWNf ZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiBAQCAtMTM0LDkgKzE1NCwyMSBAQCBzdGF0 aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgdmtt c19jcnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkgICBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3Qgdmttc19v dXRwdXQgKnZrbXNfb3V0cHV0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0Yyk7Cj4gKwo+ ICsJLyogVGhpcyBsb2NrIGlzIGhlbGQgYWNyb3NzIHRoZSBhdG9taWMgY29tbWl0IHRvIGJsb2Nr IHZibGFtayB0aW1lcgo+ICsJICogZnJvbSBzY2hlZHVsaW5nIHZrbXNfY3JjX3dvcmtfaGFuZGxl IHVudGlsIHRoZSBjcmNfZGF0YSBpcyB1cGRhdGVkCj4gKwkgKi8KPiArCXNwaW5fbG9ja19pcnEo JnZrbXNfb3V0cHV0LT5sb2NrKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgdmttc19jcnRjX2F0 b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3Qgdmttc19vdXRwdXQgKnZr bXNfb3V0cHV0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0Yyk7Cj4gIAl1bnNpZ25lZCBs b25nIGZsYWdzOwo+ICAKPiAgCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpIHsKPiBAQCAtMTUxLDkg KzE4MywxMiBAQCBzdGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAgCj4gIAkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiAgCX0KPiAr Cj4gKwlzcGluX3VubG9ja19pcnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiAgfQo+ICAKPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3Mgdmttc19jcnRjX2hlbHBlcl9m dW5jcyA9IHsKPiArCS5hdG9taWNfYmVnaW4JPSB2a21zX2NydGNfYXRvbWljX2JlZ2luLAo+ICAJ LmF0b21pY19mbHVzaAk9IHZrbXNfY3J0Y19hdG9taWNfZmx1c2gsCj4gIAkuYXRvbWljX2VuYWJs ZQk9IHZrbXNfY3J0Y19hdG9taWNfZW5hYmxlLAo+ICAJLmF0b21pY19kaXNhYmxlCT0gdmttc19j cnRjX2F0b21pY19kaXNhYmxlLAo+IEBAIC0xNjIsNiArMTk3LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3Mgdmttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKPiAg aW50IHZrbXNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCQkgICBzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCBzdHJ1Y3QgZHJtX3Bs YW5lICpjdXJzb3IpCj4gIHsKPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXQgPSBkcm1f Y3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gZHJt X2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMsIHByaW1hcnksIGN1cnNvciwKPiBAQCAt MTczLDUgKzIwOSw5IEBAIGludCB2a21zX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJZHJtX2NydGNfaGVscGVyX2FkZChjcnRj LCAmdmttc19jcnRjX2hlbHBlcl9mdW5jcyk7Cj4gIAo+ICsJc3Bpbl9sb2NrX2luaXQoJnZrbXNf b3V0LT5sb2NrKTsKPiArCj4gKwl2a21zX291dC0+Y3JjX3dvcmtxID0gYWxsb2Nfb3JkZXJlZF93 b3JrcXVldWUoInZrbXNfY3JjX3dvcmtxIiwgMCk7Cj4gKwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19kcnYuYwo+IGluZGV4IGUzNDBhYTEyOGI2MS4uNTE5YTM1M2NkOTA5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4gQEAgLTc5LDYgKzc5LDcgQEAgc3RhdGlj IHZvaWQgdmttc19yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlkcm1fYXRvbWlj X2hlbHBlcl9zaHV0ZG93bigmdmttcy0+ZHJtKTsKPiAgCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVw KCZ2a21zLT5kcm0pOwo+ICAJZHJtX2Rldl9maW5pKCZ2a21zLT5kcm0pOwo+ICsJZGVzdHJveV93 b3JrcXVldWUodmttcy0+b3V0cHV0LmNyY193b3JrcSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1 Y3QgZHJtX2RyaXZlciB2a21zX2RyaXZlciA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiBp bmRleCBhMWIyMDY2NDNjMTAuLmRlMWRkZjMxMzQxYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19k cnYuaAo+IEBAIC0yMCwyMCArMjAsMzEgQEAgc3RhdGljIGNvbnN0IHUzMiB2a21zX2Zvcm1hdHNb XSA9IHsKPiAgCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gIH07Cj4gIAo+ICtzdHJ1Y3Qgdmttc19j cmNfZGF0YSB7Cj4gKwlzdHJ1Y3QgZHJtX3JlY3Qgc3JjOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciBmYjsKPiArfTsKPiArCj4gIC8qKgo+ICAgKiB2a21zX3BsYW5lX3N0YXRlIC0gRHJpdmVy IHNwZWNpZmljIHBsYW5lIHN0YXRlCj4gICAqIEBiYXNlOiBiYXNlIHBsYW5lIHN0YXRlCj4gKyAq IEBjcmNfZGF0YTogZGF0YSByZXF1aXJlZCBmb3IgQ1JDIGNvbXB1dGF0aW9uCj4gICAqLwo+ICBz dHJ1Y3Qgdmttc19wbGFuZV9zdGF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7 Cj4gKwlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGE7Cj4gIH07Cj4gIAo+ICAvKioKPiAg ICogdmttc19jcnRjX3N0YXRlIC0gRHJpdmVyIHNwZWNpZmljIENSVEMgc3RhdGUKPiAgICogQGJh c2U6IGJhc2UgQ1JUQyBzdGF0ZQo+ICsgKiBAY3JjX3dvcms6IHdvcmsgc3RydWN0IHRvIGNvbXB1 dGUgYW5kIGFkZCBDUkMgZW50cmllcwo+ICsgKiBAbl9mcmFtZTogZnJhbWUgbnVtYmVyIGZvciBj b21wdXRlZCBDUkMKPiAgICovCj4gIHN0cnVjdCB2a21zX2NydGNfc3RhdGUgewo+ICAJc3RydWN0 IGRybV9jcnRjX3N0YXRlIGJhc2U7Cj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgY3JjX3dvcms7Cj4g Kwl1bnNpZ25lZCBpbnQgbl9mcmFtZTsKPiAgfTsKPiAgCj4gIHN0cnVjdCB2a21zX291dHB1dCB7 Cj4gQEAgLTQzLDYgKzU0LDExIEBAIHN0cnVjdCB2a21zX291dHB1dCB7Cj4gIAlzdHJ1Y3QgaHJ0 aW1lciB2YmxhbmtfaHJ0aW1lcjsKPiAgCWt0aW1lX3QgcGVyaW9kX25zOwo+ICAJc3RydWN0IGRy bV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4gKwlib29sIGNyY19lbmFibGVkOwo+ICsJ Lyogb3JkZXJlZCB3cSBmb3IgY3JjX3dvcmsgKi8KPiArCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0 ICpjcmNfd29ya3E7Cj4gKwkvKiBwcm90ZWN0cyBjb25jdXJyZW50IGFjY2VzcyB0byBjcmNfZGF0 YSAqLwo+ICsJc3BpbmxvY2tfdCBsb2NrOwo+ICB9Owo+ICAKPiAgc3RydWN0IHZrbXNfZGV2aWNl IHsKPiBAQCAtMTA2LDQgKzEyMiw5IEBAIGludCB2a21zX2dlbV92bWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKTsKPiAgCj4gIHZvaWQgdmttc19nZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKTsKPiAgCj4gKy8qIENSQyBTdXBwb3J0ICovCj4gK2ludCB2a21zX3NldF9j cmNfc291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29uc3QgY2hhciAqc3JjX25hbWUsCj4g KwkJCXNpemVfdCAqdmFsdWVzX2NudCk7Cj4gK3ZvaWQgdmttc19jcmNfd29ya19oYW5kbGUoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKPiArCj4gICNlbmRpZiAvKiBfVktNU19EUlZfSF8gKi8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIGIvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gaW5kZXggNzBmY2EyMmJjNTFiLi5jOTE2NjE2 MzFjNzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gQEAgLTE2LDExICsxNiwx OCBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqCj4gIHZrbXNfcGxhbmVfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ICB7Cj4gIAlzdHJ1Y3Qgdmttc19w bGFuZV9zdGF0ZSAqdmttc19zdGF0ZTsKPiArCXN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0 YTsKPiAgCj4gIAl2a21zX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKnZrbXNfc3RhdGUpLCBHRlBf S0VSTkVMKTsKPiAgCWlmICghdmttc19zdGF0ZSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gKwlj cmNfZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKCpjcmNfZGF0YSksIEdGUF9LRVJORUwpOwo+ICsJaWYg KFdBUk5fT04oIWNyY19kYXRhKSkKPiArCQlEUk1fSU5GTygiQ291bGRuJ3QgYWxsb2NhdGUgY3Jj X2RhdGEiKTsKPiArCj4gKwl2a21zX3N0YXRlLT5jcmNfZGF0YSA9IGNyY19kYXRhOwo+ICsKPiAg CV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHBsYW5lLAo+ICAJCQkJ CQkgICZ2a21zX3N0YXRlLT5iYXNlKTsKPiAgCj4gQEAgLTMxLDYgKzM4LDE4IEBAIHN0YXRpYyB2 b2lkIHZrbXNfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg CQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1 Y3Qgdmttc19wbGFuZV9zdGF0ZSAqdmttc19zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVfc3RhdGUob2xk X3N0YXRlKTsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHZrbXNfc3RhdGUtPmJhc2UuY3J0 YzsKPiArCj4gKwlpZiAoY3J0Yykgewo+ICsJCS8qIGRyb3BwaW5nIHRoZSByZWZlcmVuY2Ugd2Ug YWNxdWlyZWQgaW4KPiArCQkgKiB2a21zX3ByaW1hcnlfcGxhbmVfdXBkYXRlKCkKPiArCQkgKi8K PiArCQlpZiAoZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVmY291bnQoJnZrbXNfc3RhdGUtPmNyY19k YXRhLT5mYikpCj4gKwkJCWRybV9mcmFtZWJ1ZmZlcl9wdXQoJnZrbXNfc3RhdGUtPmNyY19kYXRh LT5mYik7Cj4gKwl9Cj4gKwo+ICsJa2ZyZWUodmttc19zdGF0ZS0+Y3JjX2RhdGEpOwo+ICsJdmtt c19zdGF0ZS0+Y3JjX2RhdGEgPSBOVUxMOwo+ICAKPiAgCV9fZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfZGVzdHJveV9zdGF0ZShvbGRfc3RhdGUpOwo+ICAJa2ZyZWUodmttc19zdGF0ZSk7Cj4gQEAg LTY1LDYgKzg0LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHZrbXNf cGxhbmVfZnVuY3MgPSB7Cj4gIHN0YXRpYyB2b2lkIHZrbXNfcHJpbWFyeV9wbGFuZV91cGRhdGUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCQkgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpvbGRfc3RhdGUpCj4gIHsKPiArCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3Bs YW5lX3N0YXRlOwo+ICsJc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kYXRhOwo+ICsKPiArCWlm ICghcGxhbmUtPnN0YXRlLT5jcnRjIHx8ICFwbGFuZS0+c3RhdGUtPmZiKQo+ICsJCXJldHVybjsK PiArCj4gKwl2a21zX3BsYW5lX3N0YXRlID0gdG9fdmttc19wbGFuZV9zdGF0ZShwbGFuZS0+c3Rh dGUpOwo+ICsJY3JjX2RhdGEgPSB2a21zX3BsYW5lX3N0YXRlLT5jcmNfZGF0YTsKPiArCW1lbWNw eSgmY3JjX2RhdGEtPnNyYywgJnBsYW5lLT5zdGF0ZS0+c3JjLCBzaXplb2Yoc3RydWN0IGRybV9y ZWN0KSk7Cj4gKwltZW1jcHkoJmNyY19kYXRhLT5mYiwgcGxhbmUtPnN0YXRlLT5mYiwgc2l6ZW9m KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIpKTsKPiArCWRybV9mcmFtZWJ1ZmZlcl9nZXQoJmNyY19k YXRhLT5mYik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgdmttc19wbGFuZV9hdG9taWNfY2hlY2so c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gLS0gCj4gMi4xNy4xCj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=