From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 2/2] drm/vkms: Implement CRC debugfs API Date: Fri, 3 Aug 2018 12:53:36 -0400 Message-ID: <20180803165336.GL20303@art_vandelay> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw1-xc36.google.com (mail-yw1-xc36.google.com [IPv6:2607:f8b0:4864:20::c36]) by gabe.freedesktop.org (Postfix) with ESMTPS id A13B16E759 for ; Fri, 3 Aug 2018 16:53:38 +0000 (UTC) Received: by mail-yw1-xc36.google.com with SMTP id q129-v6so1204941ywg.8 for ; Fri, 03 Aug 2018 09:53:38 -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 T24gVGh1LCBBdWcgMDIsIDIwMTggYXQgMDQ6MTA6MjZBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25zIHRv IGNvbXB1dGUgYW5kIGFkZCBDUkNzCj4gZW50cmllczoKPiAKPiAtIEltcGxlbWVudCB0aGUgc2V0 X2NyY19zb3VyY2UoKSBjYWxsYmFjay4KPiAtIENvbXB1dGUgQ1JDIHVzaW5nIGNyYzMyIG9uIHRo ZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGZyYW1lYnVmZmVyLgo+IC0gVXNlIG9yZGVyZWQgd29ya3F1 ZXVlIHBlciBvdXRwdXQgdG8gY29tcHV0ZSBhbmQgYWRkIENSQyBhdCB0aGUgZW5kCj4gICBvZiBh IHZibGFuay4KPiAtIFVzZSBhcHByb3ByaWF0ZSBzeW5jaHJvbml6YXRpb24gbWV0aG9kcyBzaW5j ZSB0aGUgQ1JDIGNvbXB1dGF0aW9uIG11c3QKPiAgIGJlIGF0b21pYyB3cnQgdGhlIGdlbmVyYXRl ZCB2YmxhbmsgZXZlbnQgZm9yIGEgZ2l2ZW4gYXRvbWljIHVwZGF0ZSwgYnkKPiAgIHVzaW5nIHNw aW5sb2NrIGFjcm9zcyBhdG9taWNfYmVnaW4vYXRvbWljX2ZsdXNoIHRvIHdyYXAgdGhlIGV2ZW50 Cj4gICBoYW5kbGluZyBjb2RlIGNvbXBsZXRlbHkgYW5kIG1hdGNoIHRoZSBmbGlwIGV2ZW50IHdp dGggdGhlIENSQy4KPiAKPiBTaW5jZSB2a21zX2NyY193b3JrX2hhbmRsZSgpIGNhbiBzbGVlcCwg c3BpbmxvY2sgY2FuJ3QgYmUgYWNxdWlyZWQKPiB3aGlsZSBhY2Nlc3Npbmcgdmttc19vdXRwdXQt PnByaW1hcnlfY3JjIHRvIGNvbXB1dGUgQ1JDLgo+IFRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcyB1 cGRhdGVkIGFuZCByZWxlYXNlZCB3aXRob3V0IGNvbmZsaWN0IHdpdGgKPiB0aGUgdmttc19jcmNf d29ya19oYW5kbGUoKSwgdGhlIHdvcmtfc3RydWN0IGlzIGZsdXNoZWQgQGNydGNfZGVzdHJveQo+ IGFuZCB0aGUgZGF0YSBpcyB1cGRhdGVkIGJlZm9yZSBzY2hlZHVsaW5nIHRoZSB3b3JrIGhhbmRs ZSBhZ2FpbiwgYXMKPiBmb2xsb3c6Cj4gCj4gKiBDUkMgZGF0YSB1cGRhdGU6Cj4gMS0gc3RvcmUg dmttc19jcmNfZGF0YSB7ZmIsIHNyY30gcGVyIHBsYW5lX3N0YXRlCj4gMi0gQHBsYW5lX2R1cGxp Y2F0ZV9zdGF0ZSAtPiBhbGxvY2F0ZSB2a21zX2NyY19kYXRhCj4gMy0gZHVyaW5nIGF0b21pYyBj b21taXQgKEBhdG9taWNfdXBkYXRlKSAtPgo+IAlhKSBjb3B5IHtmYiwgc3JjfSB0byBwbGFuZV9z dGF0ZS0+Y3JjX2RhdGEKPiAJYikgZ2V0IHJlZmVyZW5jZSB0byBmYiwKPiAzLSBAcGxhbmVfZGVz dHJveV9zdGF0ZSAtPiBhKSBpZiAoZmIgcmVmY291bnQpIHJlbW92ZSByZWZlcmVuY2UgdG8gZmIK PiAJCQkgICBiKSBkZWFsbG9jYXRlIGNyY19kYXRhCj4gCj4gKiBBdG9taWMgQ29tbWl0Ogo+IDEt IHZrbXNfcGxhbmVfYXRvbWljX2NoZWNrCj4gMi0gdmttc19wcmVwYXJlX2ZiIC0+IHZtYXAgdmtt c19nZW1fb2JqLT52YWRkcgo+IDMtIGF0b21pY19iZWdpbiAtPiBob2xkIGNyYyBzcGlubG9jawo+ IDQtIGF0b21pY19wbGFuZV91cGRhdGUgLT4gYSkgdXBkYXRlIHZrbXNfb3V0cHV0LT5wcmltYXJ5 X2NyYwo+IAkJCSAgYikgZ2V0IHJlZmVyZW5jZSB0byBmYgo+IDUtIGF0b21pY19mbHVzaCAtPiBh KSBzZW5kIHZibGFuayBldmVudCB3aGlsZSBob2xkaW5nIGV2ZW50X2xvY2sKPiAJCSAgIGIpIHJl bGVhc2UgY3JjIHNwaW5sb2NrCj4gCj4gKiBocnRpbWVyIHJlZ3VsYXIgY2FsbGJhY2s6Cj4gMS0g aG9sZCBjcmMgc3BpbmxvY2sKPiAyLSBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCkKPiAzLSBxdWV1 ZSB2a21zX2NyY193b3JrX2hhbmRsZQo+IDQtIHJlbGVhc2UgY3JjIHNwaW5sb2NrCj4gCj4gKiBj bGVhbnVwOgo+IDEtIEBjbGVhbnVwX2ZiIC0+dnVubWFwIHZrbXNfZ2VtX29iai0+dmFkZHIKPiAy LSBAY3J0Y19kZXN0cm95IC0+IGZsdXNoIHdvcmsgc3RydWN0Cj4gMy0gQHBsYW5lX2Rlc3Ryb3kg LT4gYSkgaWYgKGZiIHJlZmNvdW50KSByZW1vdmUgcmVmZXJlbmNlIHRvIGZiCj4gCQkgICAgIGIp IGRlYWxsb2NhdGUgY3JjX2RhdGEKPiAKPiBTaWduZWQtb2ZmLWJ5OiBIYW5lZW4gTW9oYW1tZWQg PGhhbW9oYW1tZWQuc2FAZ21haWwuY29tPgoKT2ssIGV2ZXJ5dGhpbmcgbG9va3MgZ29vZCB0byBt ZSAoYXNpZGUgZnJvbSB0aGUgInZibGFtayIgdHlwbywgd2hpY2ggd2UgY2FuCmZpeHVwIG9uIGFw cGx5KS4KCkknbGwgd2FpdCBmb3IgR3VzdGF2byB0byByZXNwb25kIHRvIHRoZSBvdGhlciB0aHJl YWQgYW5kIHRoZW4gd2UnbGwgZ28gZnJvbQp0aGVyZS4KClJldmlld2VkLWJ5OiBTZWFuIFBhdWwg PHNlYW5wYXVsQGNocm9taXVtLm9yZz4KClRoYW5rcyEKClNlYW4KCj4gLS0tCj4gQ2hhbmdlcyBp biB2MjogCj4gLSByZW1vdmUgdmttc19jcmNfZGF0YSBmb3IgcHJpbWFyeSBwbGFuZSBmcm9tIHZr bXNfb3V0cHV0Cj4gICBhbmQgYWNjZXNzIGl0IGZyb20gdmttc19wbGFuZV9zdGF0ZSBpbnN0ZWFk Lgo+IC0gZmx1c2ggY3JjX3dvcmtxIGluIHZrbXNfc2V0X2NyY19zb3VyY2UgYmVmb3JlIGNoYW5n aW5nIG91dC0+ZW5hYmxlZAo+ICAgdmFsdWUuCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL01h a2VmaWxlICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMgICB8 IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL3Zr bXMvdmttc19jcnRjLmMgIHwgNTYgKysrKysrKysrKysrKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZHJ2LmMgICB8ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19k cnYuaCAgIHwgMjEgKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMg fCAzMCArKysrKysrKysrCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTk2IGluc2VydGlvbnMoKyksIDkg ZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX2NyYy5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUKPiBpbmRleCA5ODYyOTdkYTUxYmYuLjM3 OTY2OTE0ZjcwYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gQEAgLTEsMyArMSwzIEBACj4g LXZrbXMteSA6PSB2a21zX2Rydi5vIHZrbXNfcGxhbmUubyB2a21zX291dHB1dC5vIHZrbXNfY3J0 Yy5vIHZrbXNfZ2VtLm8KPiArdmttcy15IDo9IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNf b3V0cHV0Lm8gdmttc19jcnRjLm8gdmttc19nZW0ubyB2a21zX2NyYy5vCj4gIAo+ICBvYmotJChD T05GSUdfRFJNX1ZLTVMpICs9IHZrbXMubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX2NyYy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45YjkwOTIyMTk0M2YKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+IEBAIC0w LDAgKzEsOTUgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArI2lu Y2x1ZGUgInZrbXNfZHJ2LmgiCj4gKyNpbmNsdWRlIDxsaW51eC9jcmMzMi5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gKwo+ICtzdGF0aWMgdWludDMy X3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGEpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gJmNyY19kYXRhLT5mYjsKPiArCXN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7Cj4gKwlz dHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICp2a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0oZ2Vt X29iaik7Cj4gKwl1MzIgY3JjID0gMDsKPiArCWludCBpID0gMDsKPiArCXVuc2lnbmVkIGludCB4 ID0gY3JjX2RhdGEtPnNyYy54MSA+PiAxNjsKPiArCXVuc2lnbmVkIGludCB5ID0gY3JjX2RhdGEt PnNyYy55MSA+PiAxNjsKPiArCXVuc2lnbmVkIGludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQo JmNyY19kYXRhLT5zcmMpID4+IDE2Owo+ICsJdW5zaWduZWQgaW50IHdpZHRoID0gZHJtX3JlY3Rf d2lkdGgoJmNyY19kYXRhLT5zcmMpID4+IDE2Owo+ICsJdW5zaWduZWQgaW50IGNwcCA9IGZiLT5m b3JtYXQtPmNwcFswXTsKPiArCXVuc2lnbmVkIGludCBzcmNfb2Zmc2V0Owo+ICsJdW5zaWduZWQg aW50IHNpemVfYnl0ZSA9IHdpZHRoICogY3BwOwo+ICsJdm9pZCAqdmFkZHI7Cj4gKwo+ICsJbXV0 ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ICsJdmFkZHIgPSB2a21zX29iai0+dmFk ZHI7Cj4gKwlpZiAoV0FSTl9PTighdmFkZHIpKQo+ICsJCXJldHVybiBjcmM7Cj4gKwo+ICsJZm9y IChpID0geTsgaSA8IHkgKyBoZWlnaHQ7IGkrKykgewo+ICsJCXNyY19vZmZzZXQgPSBmYi0+b2Zm c2V0c1swXSArIChpICogZmItPnBpdGNoZXNbMF0pICsgKHggKiBjcHApOwo+ICsJCWNyYyA9IGNy YzMyX2xlKGNyYywgdmFkZHIgKyBzcmNfb2Zmc2V0LCBzaXplX2J5dGUpOwo+ICsJfQo+ICsJbXV0 ZXhfdW5sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9jayk7Cj4gKwo+ICsJcmV0dXJuIGNyYzsKPiAr fQo+ICsKPiArdm9pZCB2a21zX2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCj4gK3sKPiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBjb250YWlu ZXJfb2Yod29yaywKPiArCQkJCQkJc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSwKPiArCQkJCQkJY3Jj X3dvcmspOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0ZS0+YmFzZS5jcnRj Owo+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXQgPSBkcm1fY3J0Y190b192a21zX291dHB1dChj cnRjKTsKPiArCXN0cnVjdCB2a21zX2RldmljZSAqdmRldiA9IGNvbnRhaW5lcl9vZihvdXQsIHN0 cnVjdCB2a21zX2RldmljZSwKPiArCQkJCQkJb3V0cHV0KTsKPiArCXN0cnVjdCB2a21zX2NyY19k YXRhICpwcmltYXJ5X2NyYyA9IE5VTEw7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAr Cj4gKwl1MzIgY3JjMzIgPSAwOwo+ICsKPiArCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgJnZk ZXYtPmRybSkgewo+ICsJCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2cGxhbmVfc3RhdGU7Cj4g KwkJc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kYXRhOwo+ICsKPiArCQl2cGxhbmVfc3RhdGUg PSB0b192a21zX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4gKwkJY3JjX2RhdGEgPSB2cGxh bmVfc3RhdGUtPmNyY19kYXRhOwo+ICsKPiArCQlpZiAoZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVm Y291bnQoJmNyY19kYXRhLT5mYikgPT0gMCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChw bGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7Cj4gKwkJCXByaW1hcnlfY3Jj ID0gY3JjX2RhdGE7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAocHJpbWFy eV9jcmMpCj4gKwkJY3JjMzIgPSBfdmttc19nZXRfY3JjKHByaW1hcnlfY3JjKTsKPiArCj4gKwlk cm1fY3J0Y19hZGRfY3JjX2VudHJ5KGNydGMsIHRydWUsIGNydGNfc3RhdGUtPm5fZnJhbWUsICZj cmMzMik7Cj4gK30KPiArCj4gK2ludCB2a21zX3NldF9jcmNfc291cmNlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywgY29uc3QgY2hhciAqc3JjX25hbWUsCj4gKwkJCXNpemVfdCAqdmFsdWVzX2NudCkK PiArewo+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXQgPSBkcm1fY3J0Y190b192a21zX291dHB1 dChjcnRjKTsKPiArCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFn czsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCWlmIChzcmNfbmFtZSAmJiBzdHJjbXAoc3JjX25h bWUsICJhdXRvIikgPT0gMCkKPiArCQllbmFibGVkID0gdHJ1ZTsKPiArCWVsc2UgaWYgKHNyY19u YW1lKQo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwo+ICsJKnZhbHVlc19jbnQgPSAxOwo+ICsKPiAr CS8qIG1ha2Ugc3VyZSBub3RoaW5nIGlzIHNjaGVkdWxlZCBvbiBjcnRjIHdvcmtxICovCj4gKwlm bHVzaF93b3JrcXVldWUob3V0LT5jcmNfd29ya3EpOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZl KCZvdXQtPmxvY2ssIGZsYWdzKTsKPiArCW91dC0+Y3JjX2VuYWJsZWQgPSBlbmFibGVkOwo+ICsJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb3V0LT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJcmV0dXJu IHJldDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMu YyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gaW5kZXggMjZiYWJiODVjYTc3 Li5hNmMwODBkN2Y3YWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19j cnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+IEBAIC0xMCwx OCArMTAsMzMgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICAjaW5j bHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICAKPiAtc3RhdGljIGVudW0gaHJ0aW1lcl9y ZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRlKHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiArc3Rh dGljIHZvaWQgX3ZibGFua19oYW5kbGUoc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQpCj4gIHsK PiAtCXN0cnVjdCB2a21zX291dHB1dCAqb3V0cHV0ID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1 Y3Qgdmttc19vdXRwdXQsCj4gLQkJCQkJCSAgdmJsYW5rX2hydGltZXIpOwo+ICAJc3RydWN0IGRy bV9jcnRjICpjcnRjID0gJm91dHB1dC0+Y3J0YzsKPiAtCWludCByZXRfb3ZlcnJ1bjsKPiArCXN0 cnVjdCB2a21zX2NydGNfc3RhdGUgKnN0YXRlID0gdG9fdmttc19jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKTsKPiAgCWJvb2wgcmV0Owo+ICAKPiArCXNwaW5fbG9jaygmb3V0cHV0LT5sb2NrKTsKPiAg CXJldCA9IGRybV9jcnRjX2hhbmRsZV92YmxhbmsoY3J0Yyk7Cj4gIAlpZiAoIXJldCkKPiAgCQlE Uk1fRVJST1IoInZrbXMgZmFpbHVyZSBvbiBoYW5kbGluZyB2YmxhbmsiKTsKPiAgCj4gKwlpZiAo c3RhdGUgJiYgb3V0cHV0LT5jcmNfZW5hYmxlZCkgewo+ICsJCXN0YXRlLT5uX2ZyYW1lID0gZHJt X2NydGNfYWNjdXJhdGVfdmJsYW5rX2NvdW50KGNydGMpOwo+ICsJCXF1ZXVlX3dvcmsob3V0cHV0 LT5jcmNfd29ya3EsICZzdGF0ZS0+Y3JjX3dvcmspOwo+ICsJfQo+ICsKPiArCXNwaW5fdW5sb2Nr KCZvdXRwdXQtPmxvY2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQg dmttc192Ymxhbmtfc2ltdWxhdGUoc3RydWN0IGhydGltZXIgKnRpbWVyKQo+ICt7Cj4gKwlzdHJ1 Y3Qgdmttc19vdXRwdXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHZrbXNf b3V0cHV0LAo+ICsJCQkJCQkgIHZibGFua19ocnRpbWVyKTsKPiArCWludCByZXRfb3ZlcnJ1bjsK PiArCj4gKwlfdmJsYW5rX2hhbmRsZShvdXRwdXQpOwo+ICsKPiAgCXJldF9vdmVycnVuID0gaHJ0 aW1lcl9mb3J3YXJkX25vdygmb3V0cHV0LT52YmxhbmtfaHJ0aW1lciwKPiAgCQkJCQkgIG91dHB1 dC0+cGVyaW9kX25zKTsKPiAgCj4gQEAgLTk3LDE4ICsxMTIsMjIgQEAgdmttc19hdG9taWNfY3J0 Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCV9fZHJtX2F0 b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUoY3J0YywgJnZrbXNfc3RhdGUtPmJhc2Up Owo+ICAKPiArCUlOSVRfV09SSygmdmttc19zdGF0ZS0+Y3JjX3dvcmssIHZrbXNfY3JjX3dvcmtf aGFuZGxlKTsKPiArCj4gIAlyZXR1cm4gJnZrbXNfc3RhdGUtPmJhc2U7Cj4gIH0KPiAgCj4gIHN0 YXRpYyB2b2lkIHZrbXNfYXRvbWljX2NydGNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAkJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0J c3RydWN0IHZrbXNfY3J0Y19zdGF0ZSAqdmttc19zdGF0ZTsKPiAtCj4gLQl2a21zX3N0YXRlID0g dG9fdmttc19jcnRjX3N0YXRlKHN0YXRlKTsKPiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKnZr bXNfc3RhdGUgPSB0b192a21zX2NydGNfc3RhdGUoc3RhdGUpOwo+ICAKPiAgCV9fZHJtX2F0b21p Y19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKHN0YXRlKTsKPiAtCWtmcmVlKHZrbXNfc3RhdGUp Owo+ICsKPiArCWlmICh2a21zX3N0YXRlKSB7Cj4gKwkJZmx1c2hfd29yaygmdmttc19zdGF0ZS0+ Y3JjX3dvcmspOwo+ICsJCWtmcmVlKHZrbXNfc3RhdGUpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIHZrbXNfY3J0Y19mdW5jcyA9IHsKPiBAQCAt MTIwLDYgKzEzOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mgdmttc19j cnRjX2Z1bmNzID0gewo+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlICAgPSB2a21zX2F0b21pY19j cnRjX2Rlc3Ryb3lfc3RhdGUsCj4gIAkuZW5hYmxlX3ZibGFuawkJPSB2a21zX2VuYWJsZV92Ymxh bmssCj4gIAkuZGlzYWJsZV92YmxhbmsJCT0gdmttc19kaXNhYmxlX3ZibGFuaywKPiArCS5zZXRf Y3JjX3NvdXJjZQkJPSB2a21zX3NldF9jcmNfc291cmNlLAo+ICB9Owo+ICAKPiAgc3RhdGljIHZv aWQgdmttc19jcnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IEBAIC0x MzQsOSArMTU0LDIxIEBAIHN0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlkcm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMpOwo+ICB9Cj4g IAo+ICtzdGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiArCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4g K3sKPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXRwdXQgPSBkcm1fY3J0Y190b192a21z X291dHB1dChjcnRjKTsKPiArCj4gKwkvKiBUaGlzIGxvY2sgaXMgaGVsZCBhY3Jvc3MgdGhlIGF0 b21pYyBjb21taXQgdG8gYmxvY2sgdmJsYW1rIHRpbWVyCj4gKwkgKiBmcm9tIHNjaGVkdWxpbmcg dmttc19jcmNfd29ya19oYW5kbGUgdW50aWwgdGhlIGNyY19kYXRhIGlzIHVwZGF0ZWQKPiArCSAq Lwo+ICsJc3Bpbl9sb2NrX2lycSgmdmttc19vdXRwdXQtPmxvY2spOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAg CQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gIHsKPiArCXN0 cnVjdCB2a21zX291dHB1dCAqdmttc19vdXRwdXQgPSBkcm1fY3J0Y190b192a21zX291dHB1dChj cnRjKTsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAo+ICAJaWYgKGNydGMtPnN0YXRlLT5l dmVudCkgewo+IEBAIC0xNTEsOSArMTgzLDEyIEBAIHN0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9t aWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCQljcnRjLT5zdGF0ZS0+ZXZl bnQgPSBOVUxMOwo+ICAJfQo+ICsKPiArCXNwaW5fdW5sb2NrX2lycSgmdmttc19vdXRwdXQtPmxv Y2spOwo+ICB9Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5j cyB2a21zX2NydGNfaGVscGVyX2Z1bmNzID0gewo+ICsJLmF0b21pY19iZWdpbgk9IHZrbXNfY3J0 Y19hdG9taWNfYmVnaW4sCj4gIAkuYXRvbWljX2ZsdXNoCT0gdmttc19jcnRjX2F0b21pY19mbHVz aCwKPiAgCS5hdG9taWNfZW5hYmxlCT0gdmttc19jcnRjX2F0b21pY19lbmFibGUsCj4gIAkuYXRv bWljX2Rpc2FibGUJPSB2a21zX2NydGNfYXRvbWljX2Rpc2FibGUsCj4gQEAgLTE2Miw2ICsxOTcs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB2a21zX2NydGNf aGVscGVyX2Z1bmNzID0gewo+ICBpbnQgdmttc19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSAgIHN0cnVjdCBkcm1fcGxhbmUgKnBy aW1hcnksIHN0cnVjdCBkcm1fcGxhbmUgKmN1cnNvcikKPiAgewo+ICsJc3RydWN0IHZrbXNfb3V0 cHV0ICp2a21zX291dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ICAJaW50IHJl dDsKPiAgCj4gIAlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwgY3J0YywgcHJp bWFyeSwgY3Vyc29yLAo+IEBAIC0xNzMsNSArMjA5LDkgQEAgaW50IHZrbXNfY3J0Y19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlkcm1f Y3J0Y19oZWxwZXJfYWRkKGNydGMsICZ2a21zX2NydGNfaGVscGVyX2Z1bmNzKTsKPiAgCj4gKwlz cGluX2xvY2tfaW5pdCgmdmttc19vdXQtPmxvY2spOwo+ICsKPiArCXZrbXNfb3V0LT5jcmNfd29y a3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgidmttc19jcmNfd29ya3EiLCAwKTsKPiArCj4g IAlyZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3Zr bXNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4gaW5kZXggZTM0MGFh MTI4YjYxLi41MTlhMzUzY2Q5MDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiBAQCAt NzksNiArNzksNyBAQCBzdGF0aWMgdm9pZCB2a21zX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKCZ2a21zLT5kcm0pOwo+ICAJZHJt X21vZGVfY29uZmlnX2NsZWFudXAoJnZrbXMtPmRybSk7Cj4gIAlkcm1fZGV2X2ZpbmkoJnZrbXMt PmRybSk7Cj4gKwlkZXN0cm95X3dvcmtxdWV1ZSh2a21zLT5vdXRwdXQuY3JjX3dvcmtxKTsKPiAg fQo+ICAKPiAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHZrbXNfZHJpdmVyID0gewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19kcnYuaAo+IGluZGV4IGExYjIwNjY0M2MxMC4uZGUxZGRmMzEzNDFiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gQEAgLTIwLDIwICsyMCwzMSBAQCBzdGF0aWMgY29u c3QgdTMyIHZrbXNfZm9ybWF0c1tdID0gewo+ICAJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiAgfTsK PiAgCj4gK3N0cnVjdCB2a21zX2NyY19kYXRhIHsKPiArCXN0cnVjdCBkcm1fcmVjdCBzcmM7Cj4g KwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiOwo+ICt9Owo+ICsKPiAgLyoqCj4gICAqIHZrbXNf cGxhbmVfc3RhdGUgLSBEcml2ZXIgc3BlY2lmaWMgcGxhbmUgc3RhdGUKPiAgICogQGJhc2U6IGJh c2UgcGxhbmUgc3RhdGUKPiArICogQGNyY19kYXRhOiBkYXRhIHJlcXVpcmVkIGZvciBDUkMgY29t cHV0YXRpb24KPiAgICovCj4gIHN0cnVjdCB2a21zX3BsYW5lX3N0YXRlIHsKPiAgCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgYmFzZTsKPiArCXN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YTsK PiAgfTsKPiAgCj4gIC8qKgo+ICAgKiB2a21zX2NydGNfc3RhdGUgLSBEcml2ZXIgc3BlY2lmaWMg Q1JUQyBzdGF0ZQo+ICAgKiBAYmFzZTogYmFzZSBDUlRDIHN0YXRlCj4gKyAqIEBjcmNfd29yazog d29yayBzdHJ1Y3QgdG8gY29tcHV0ZSBhbmQgYWRkIENSQyBlbnRyaWVzCj4gKyAqIEBuX2ZyYW1l OiBmcmFtZSBudW1iZXIgZm9yIGNvbXB1dGVkIENSQwo+ICAgKi8KPiAgc3RydWN0IHZrbXNfY3J0 Y19zdGF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgYmFzZTsKPiArCXN0cnVjdCB3b3Jr X3N0cnVjdCBjcmNfd29yazsKPiArCXVuc2lnbmVkIGludCBuX2ZyYW1lOwo+ICB9Owo+ICAKPiAg c3RydWN0IHZrbXNfb3V0cHV0IHsKPiBAQCAtNDMsNiArNTQsMTEgQEAgc3RydWN0IHZrbXNfb3V0 cHV0IHsKPiAgCXN0cnVjdCBocnRpbWVyIHZibGFua19ocnRpbWVyOwo+ICAJa3RpbWVfdCBwZXJp b2RfbnM7Cj4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKPiArCWJv b2wgY3JjX2VuYWJsZWQ7Cj4gKwkvKiBvcmRlcmVkIHdxIGZvciBjcmNfd29yayAqLwo+ICsJc3Ry dWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmNyY193b3JrcTsKPiArCS8qIHByb3RlY3RzIGNvbmN1cnJl bnQgYWNjZXNzIHRvIGNyY19kYXRhICovCj4gKwlzcGlubG9ja190IGxvY2s7Cj4gIH07Cj4gIAo+ ICBzdHJ1Y3Qgdmttc19kZXZpY2Ugewo+IEBAIC0xMDYsNCArMTIyLDkgQEAgaW50IHZrbXNfZ2Vt X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICAKPiAgdm9pZCB2a21zX2dlbV92 dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICAKPiArLyogQ1JDIFN1cHBvcnQg Ki8KPiAraW50IHZrbXNfc2V0X2NyY19zb3VyY2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25z dCBjaGFyICpzcmNfbmFtZSwKPiArCQkJc2l6ZV90ICp2YWx1ZXNfY250KTsKPiArdm9pZCB2a21z X2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwo+ICsKPiAgI2VuZGlm IC8qIF9WS01TX0RSVl9IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiBpbmRleCA3 MGZjYTIyYmM1MWIuLmM5MTY2MTYzMWM3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5l LmMKPiBAQCAtMTYsMTEgKzE2LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoK PiAgdmttc19wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4g IHsKPiAgCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3N0YXRlOwo+ICsJc3RydWN0IHZr bXNfY3JjX2RhdGEgKmNyY19kYXRhOwo+ICAKPiAgCXZrbXNfc3RhdGUgPSBremFsbG9jKHNpemVv Zigqdmttc19zdGF0ZSksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCF2a21zX3N0YXRlKQo+ICAJCXJl dHVybiBOVUxMOwo+ICAKPiArCWNyY19kYXRhID0ga3phbGxvYyhzaXplb2YoKmNyY19kYXRhKSwg R0ZQX0tFUk5FTCk7Cj4gKwlpZiAoV0FSTl9PTighY3JjX2RhdGEpKQo+ICsJCURSTV9JTkZPKCJD b3VsZG4ndCBhbGxvY2F0ZSBjcmNfZGF0YSIpOwo+ICsKPiArCXZrbXNfc3RhdGUtPmNyY19kYXRh ID0gY3JjX2RhdGE7Cj4gKwo+ICAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVf c3RhdGUocGxhbmUsCj4gIAkJCQkJCSAgJnZrbXNfc3RhdGUtPmJhc2UpOwo+ICAKPiBAQCAtMzEs NiArMzgsMTggQEAgc3RhdGljIHZvaWQgdmttc19wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRf c3RhdGUpCj4gIHsKPiAgCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3N0YXRlID0gdG9f dmttc19wbGFuZV9zdGF0ZShvbGRfc3RhdGUpOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0g dmttc19zdGF0ZS0+YmFzZS5jcnRjOwo+ICsKPiArCWlmIChjcnRjKSB7Cj4gKwkJLyogZHJvcHBp bmcgdGhlIHJlZmVyZW5jZSB3ZSBhY3F1aXJlZCBpbgo+ICsJCSAqIHZrbXNfcHJpbWFyeV9wbGFu ZV91cGRhdGUoKQo+ICsJCSAqLwo+ICsJCWlmIChkcm1fZnJhbWVidWZmZXJfcmVhZF9yZWZjb3Vu dCgmdmttc19zdGF0ZS0+Y3JjX2RhdGEtPmZiKSkKPiArCQkJZHJtX2ZyYW1lYnVmZmVyX3B1dCgm dmttc19zdGF0ZS0+Y3JjX2RhdGEtPmZiKTsKPiArCX0KPiArCj4gKwlrZnJlZSh2a21zX3N0YXRl LT5jcmNfZGF0YSk7Cj4gKwl2a21zX3N0YXRlLT5jcmNfZGF0YSA9IE5VTEw7Cj4gIAo+ICAJX19k cm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKG9sZF9zdGF0ZSk7Cj4gIAlrZnJl ZSh2a21zX3N0YXRlKTsKPiBAQCAtNjUsNiArODQsMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfZnVuY3Mgdmttc19wbGFuZV9mdW5jcyA9IHsKPiAgc3RhdGljIHZvaWQgdmttc19w cmltYXJ5X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJCSAgICAg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ICsJc3RydWN0IHZrbXNf cGxhbmVfc3RhdGUgKnZrbXNfcGxhbmVfc3RhdGU7Cj4gKwlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAq Y3JjX2RhdGE7Cj4gKwo+ICsJaWYgKCFwbGFuZS0+c3RhdGUtPmNydGMgfHwgIXBsYW5lLT5zdGF0 ZS0+ZmIpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXZrbXNfcGxhbmVfc3RhdGUgPSB0b192a21zX3Bs YW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4gKwljcmNfZGF0YSA9IHZrbXNfcGxhbmVfc3RhdGUt PmNyY19kYXRhOwo+ICsJbWVtY3B5KCZjcmNfZGF0YS0+c3JjLCAmcGxhbmUtPnN0YXRlLT5zcmMs IHNpemVvZihzdHJ1Y3QgZHJtX3JlY3QpKTsKPiArCW1lbWNweSgmY3JjX2RhdGEtPmZiLCBwbGFu ZS0+c3RhdGUtPmZiLCBzaXplb2Yoc3RydWN0IGRybV9mcmFtZWJ1ZmZlcikpOwo+ICsJZHJtX2Zy YW1lYnVmZmVyX2dldCgmY3JjX2RhdGEtPmZiKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCB2a21z X3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAtLSAKPiAyLjE3 LjEKPiAKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1 bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK