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 15:41:57 -0400 Message-ID: <20180803194157.GN20303@art_vandelay> References: <20180803165336.GL20303@art_vandelay> <20180803193605.GA9907@haneenDRM> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yb0-x241.google.com (mail-yb0-x241.google.com [IPv6:2607:f8b0:4002:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 820BE6E7B8 for ; Fri, 3 Aug 2018 19:41:59 +0000 (UTC) Received: by mail-yb0-x241.google.com with SMTP id x15-v6so3080264ybm.2 for ; Fri, 03 Aug 2018 12:41:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180803193605.GA9907@haneenDRM> 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 T24gRnJpLCBBdWcgMDMsIDIwMTggYXQgMTA6MzY6MDVQTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIEZyaSwgQXVnIDAzLCAyMDE4IGF0IDEyOjUzOjM2UE0gLTA0MDAsIFNlYW4g UGF1bCB3cm90ZToKPiA+IE9uIFRodSwgQXVnIDAyLCAyMDE4IGF0IDA0OjEwOjI2QU0gKzAzMDAs IEhhbmVlbiBNb2hhbW1lZCB3cm90ZToKPiA+ID4gVGhpcyBwYXRjaCBpbXBsZW1lbnQgdGhlIG5l Y2Vzc2FyeSBmdW5jdGlvbnMgdG8gY29tcHV0ZSBhbmQgYWRkIENSQ3MKPiA+ID4gZW50cmllczoK PiA+ID4gCj4gPiA+IC0gSW1wbGVtZW50IHRoZSBzZXRfY3JjX3NvdXJjZSgpIGNhbGxiYWNrLgo+ ID4gPiAtIENvbXB1dGUgQ1JDIHVzaW5nIGNyYzMyIG9uIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhl IGZyYW1lYnVmZmVyLgo+ID4gPiAtIFVzZSBvcmRlcmVkIHdvcmtxdWV1ZSBwZXIgb3V0cHV0IHRv IGNvbXB1dGUgYW5kIGFkZCBDUkMgYXQgdGhlIGVuZAo+ID4gPiAgIG9mIGEgdmJsYW5rLgo+ID4g PiAtIFVzZSBhcHByb3ByaWF0ZSBzeW5jaHJvbml6YXRpb24gbWV0aG9kcyBzaW5jZSB0aGUgQ1JD IGNvbXB1dGF0aW9uIG11c3QKPiA+ID4gICBiZSBhdG9taWMgd3J0IHRoZSBnZW5lcmF0ZWQgdmJs YW5rIGV2ZW50IGZvciBhIGdpdmVuIGF0b21pYyB1cGRhdGUsIGJ5Cj4gPiA+ICAgdXNpbmcgc3Bp bmxvY2sgYWNyb3NzIGF0b21pY19iZWdpbi9hdG9taWNfZmx1c2ggdG8gd3JhcCB0aGUgZXZlbnQK PiA+ID4gICBoYW5kbGluZyBjb2RlIGNvbXBsZXRlbHkgYW5kIG1hdGNoIHRoZSBmbGlwIGV2ZW50 IHdpdGggdGhlIENSQy4KPiA+ID4gCj4gPiA+IFNpbmNlIHZrbXNfY3JjX3dvcmtfaGFuZGxlKCkg Y2FuIHNsZWVwLCBzcGlubG9jayBjYW4ndCBiZSBhY3F1aXJlZAo+ID4gPiB3aGlsZSBhY2Nlc3Np bmcgdmttc19vdXRwdXQtPnByaW1hcnlfY3JjIHRvIGNvbXB1dGUgQ1JDLgo+ID4gPiBUbyBtYWtl IHN1cmUgdGhlIGRhdGEgaXMgdXBkYXRlZCBhbmQgcmVsZWFzZWQgd2l0aG91dCBjb25mbGljdCB3 aXRoCj4gPiA+IHRoZSB2a21zX2NyY193b3JrX2hhbmRsZSgpLCB0aGUgd29ya19zdHJ1Y3QgaXMg Zmx1c2hlZCBAY3J0Y19kZXN0cm95Cj4gPiA+IGFuZCB0aGUgZGF0YSBpcyB1cGRhdGVkIGJlZm9y ZSBzY2hlZHVsaW5nIHRoZSB3b3JrIGhhbmRsZSBhZ2FpbiwgYXMKPiA+ID4gZm9sbG93Ogo+ID4g PiAKPiA+ID4gKiBDUkMgZGF0YSB1cGRhdGU6Cj4gPiA+IDEtIHN0b3JlIHZrbXNfY3JjX2RhdGEg e2ZiLCBzcmN9IHBlciBwbGFuZV9zdGF0ZQo+ID4gPiAyLSBAcGxhbmVfZHVwbGljYXRlX3N0YXRl IC0+IGFsbG9jYXRlIHZrbXNfY3JjX2RhdGEKPiA+ID4gMy0gZHVyaW5nIGF0b21pYyBjb21taXQg KEBhdG9taWNfdXBkYXRlKSAtPgo+ID4gPiAJYSkgY29weSB7ZmIsIHNyY30gdG8gcGxhbmVfc3Rh dGUtPmNyY19kYXRhCj4gPiA+IAliKSBnZXQgcmVmZXJlbmNlIHRvIGZiLAo+ID4gPiAzLSBAcGxh bmVfZGVzdHJveV9zdGF0ZSAtPiBhKSBpZiAoZmIgcmVmY291bnQpIHJlbW92ZSByZWZlcmVuY2Ug dG8gZmIKPiA+ID4gCQkJICAgYikgZGVhbGxvY2F0ZSBjcmNfZGF0YQo+ID4gPiAKPiA+ID4gKiBB dG9taWMgQ29tbWl0Ogo+ID4gPiAxLSB2a21zX3BsYW5lX2F0b21pY19jaGVjawo+ID4gPiAyLSB2 a21zX3ByZXBhcmVfZmIgLT4gdm1hcCB2a21zX2dlbV9vYmotPnZhZGRyCj4gPiA+IDMtIGF0b21p Y19iZWdpbiAtPiBob2xkIGNyYyBzcGlubG9jawo+ID4gPiA0LSBhdG9taWNfcGxhbmVfdXBkYXRl IC0+IGEpIHVwZGF0ZSB2a21zX291dHB1dC0+cHJpbWFyeV9jcmMKPiA+ID4gCQkJICBiKSBnZXQg cmVmZXJlbmNlIHRvIGZiCj4gPiA+IDUtIGF0b21pY19mbHVzaCAtPiBhKSBzZW5kIHZibGFuayBl dmVudCB3aGlsZSBob2xkaW5nIGV2ZW50X2xvY2sKPiA+ID4gCQkgICBiKSByZWxlYXNlIGNyYyBz cGlubG9jawo+ID4gPiAKPiA+ID4gKiBocnRpbWVyIHJlZ3VsYXIgY2FsbGJhY2s6Cj4gPiA+IDEt IGhvbGQgY3JjIHNwaW5sb2NrCj4gPiA+IDItIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoKQo+ID4g PiAzLSBxdWV1ZSB2a21zX2NyY193b3JrX2hhbmRsZQo+ID4gPiA0LSByZWxlYXNlIGNyYyBzcGlu bG9jawo+ID4gPiAKPiA+ID4gKiBjbGVhbnVwOgo+ID4gPiAxLSBAY2xlYW51cF9mYiAtPnZ1bm1h cCB2a21zX2dlbV9vYmotPnZhZGRyCj4gPiA+IDItIEBjcnRjX2Rlc3Ryb3kgLT4gZmx1c2ggd29y ayBzdHJ1Y3QKPiA+ID4gMy0gQHBsYW5lX2Rlc3Ryb3kgLT4gYSkgaWYgKGZiIHJlZmNvdW50KSBy ZW1vdmUgcmVmZXJlbmNlIHRvIGZiCj4gPiA+IAkJICAgICBiKSBkZWFsbG9jYXRlIGNyY19kYXRh Cj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBIYW5lZW4gTW9oYW1tZWQgPGhhbW9oYW1tZWQu c2FAZ21haWwuY29tPgo+ID4gCj4gPiBPaywgZXZlcnl0aGluZyBsb29rcyBnb29kIHRvIG1lIChh c2lkZSBmcm9tIHRoZSAidmJsYW1rIiB0eXBvLCB3aGljaCB3ZSBjYW4KPiA+IGZpeHVwIG9uIGFw cGx5KS4KPiA+IAo+ID4gSSdsbCB3YWl0IGZvciBHdXN0YXZvIHRvIHJlc3BvbmQgdG8gdGhlIG90 aGVyIHRocmVhZCBhbmQgdGhlbiB3ZSdsbCBnbyBmcm9tCj4gPiB0aGVyZS4KPiA+IAo+ID4gUmV2 aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ID4gCj4gPiBUaGFu a3MhCj4gPiAKPiA+IFNlYW4KPiA+IAo+IAo+IFRoYW5rIHlvdSEgSSdtIHNvcnJ5IEkndmUgZmFp bGVkIHRvIG5vdGljZSB0aGF0IEkgZGlkbnQgcmVsZWFzZSBwYWdlc19sb2NrIHdoZW4KPiB2a21z X29iai0+dmFkZHIgaXMgTlVMTCBpbiB2a21zX2dldF9jcmMoKS4gSSdsbCBzZW5kIGEgcGF0Y2gg dG8gZml4IHRoYXQgaW1tZWRpYXRlbHkuCgpBaGhoIHNob290LCBJIHNob3VsZCd2ZSBjYXVnaHQg dGhhdCA6LSkuIE5vIHdvcnJpZXMsIEknbGwgbG9vayBvdXQgZm9yIHlvdXIKcGF0Y2guCgpTZWFu Cgo+IAo+ID4gPiAtLS0KPiA+ID4gQ2hhbmdlcyBpbiB2MjogCj4gPiA+IC0gcmVtb3ZlIHZrbXNf Y3JjX2RhdGEgZm9yIHByaW1hcnkgcGxhbmUgZnJvbSB2a21zX291dHB1dAo+ID4gPiAgIGFuZCBh Y2Nlc3MgaXQgZnJvbSB2a21zX3BsYW5lX3N0YXRlIGluc3RlYWQuCj4gPiA+IC0gZmx1c2ggY3Jj X3dvcmtxIGluIHZrbXNfc2V0X2NyY19zb3VyY2UgYmVmb3JlIGNoYW5naW5nIG91dC0+ZW5hYmxl ZAo+ID4gPiAgIHZhbHVlLgo+ID4gPiAKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL01ha2Vm aWxlICAgICB8ICAyICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jICAg fCA5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX2NydGMuYyAgfCA1NiArKysrKysrKysrKysrKystLS0KPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgICB8ICAxICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZHJ2LmggICB8IDIxICsrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYyB8IDMwICsrKysrKysrKysKPiA+ID4gIDYgZmlsZXMgY2hhbmdlZCwg MTk2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMv TWFrZWZpbGUKPiA+ID4gaW5kZXggOTg2Mjk3ZGE1MWJmLi4zNzk2NjkxNGY3MGIgMTAwNjQ0Cj4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gPiA+IEBAIC0xLDMgKzEsMyBAQAo+ID4gPiAtdmtt cy15IDo9IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmttc19jcnRjLm8g dmttc19nZW0ubwo+ID4gPiArdmttcy15IDo9IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNf b3V0cHV0Lm8gdmttc19jcnRjLm8gdmttc19nZW0ubyB2a21zX2NyYy5vCj4gPiA+ICAKPiA+ID4g IG9iai0kKENPTkZJR19EUk1fVktNUykgKz0gdmttcy5vCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19j cmMuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAu LjliOTA5MjIxOTQzZgo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfY3JjLmMKPiA+ID4gQEAgLTAsMCArMSw5NSBAQAo+ID4gPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ID4gKyNpbmNsdWRlICJ2a21zX2Rydi5o Igo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2NyYzMyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB1aW50MzJf dCBfdmttc19nZXRfY3JjKHN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YSkKPiA+ID4gK3sK PiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZjcmNfZGF0YS0+ZmI7Cj4gPiA+ ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqID0gZHJtX2dlbV9mYl9nZXRfb2JqKGZi LCAwKTsKPiA+ID4gKwlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICp2a21zX29iaiA9IGRybV9nZW1f dG9fdmttc19nZW0oZ2VtX29iaik7Cj4gPiA+ICsJdTMyIGNyYyA9IDA7Cj4gPiA+ICsJaW50IGkg PSAwOwo+ID4gPiArCXVuc2lnbmVkIGludCB4ID0gY3JjX2RhdGEtPnNyYy54MSA+PiAxNjsKPiA+ ID4gKwl1bnNpZ25lZCBpbnQgeSA9IGNyY19kYXRhLT5zcmMueTEgPj4gMTY7Cj4gPiA+ICsJdW5z aWduZWQgaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmY3JjX2RhdGEtPnNyYykgPj4gMTY7 Cj4gPiA+ICsJdW5zaWduZWQgaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmNyY19kYXRhLT5z cmMpID4+IDE2Owo+ID4gPiArCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07 Cj4gPiA+ICsJdW5zaWduZWQgaW50IHNyY19vZmZzZXQ7Cj4gPiA+ICsJdW5zaWduZWQgaW50IHNp emVfYnl0ZSA9IHdpZHRoICogY3BwOwo+ID4gPiArCXZvaWQgKnZhZGRyOwo+ID4gPiArCj4gPiA+ ICsJbXV0ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4gPiArCXZhZGRyID0gdmtt c19vYmotPnZhZGRyOwo+ID4gPiArCWlmIChXQVJOX09OKCF2YWRkcikpCj4gPiA+ICsJCXJldHVy biBjcmM7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGkgPSB5OyBpIDwgeSArIGhlaWdodDsgaSsrKSB7 Cj4gPiA+ICsJCXNyY19vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIChpICogZmItPnBpdGNoZXNb MF0pICsgKHggKiBjcHApOwo+ID4gPiArCQljcmMgPSBjcmMzMl9sZShjcmMsIHZhZGRyICsgc3Jj X29mZnNldCwgc2l6ZV9ieXRlKTsKPiA+ID4gKwl9Cj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZ2a21z X29iai0+cGFnZXNfbG9jayk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gY3JjOwo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICt2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICpjcnRjX3N0 YXRlID0gY29udGFpbmVyX29mKHdvcmssCj4gPiA+ICsJCQkJCQlzdHJ1Y3Qgdmttc19jcnRjX3N0 YXRlLAo+ID4gPiArCQkJCQkJY3JjX3dvcmspOwo+ID4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiA+ID4gKwlzdHJ1Y3Qgdmttc19vdXRwdXQgKm91 dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ID4gPiArCXN0cnVjdCB2a21zX2Rl dmljZSAqdmRldiA9IGNvbnRhaW5lcl9vZihvdXQsIHN0cnVjdCB2a21zX2RldmljZSwKPiA+ID4g KwkJCQkJCW91dHB1dCk7Cj4gPiA+ICsJc3RydWN0IHZrbXNfY3JjX2RhdGEgKnByaW1hcnlfY3Jj ID0gTlVMTDsKPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+ID4gKwo+ID4gPiAr CXUzMiBjcmMzMiA9IDA7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUs ICZ2ZGV2LT5kcm0pIHsKPiA+ID4gKwkJc3RydWN0IHZrbXNfcGxhbmVfc3RhdGUgKnZwbGFuZV9z dGF0ZTsKPiA+ID4gKwkJc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kYXRhOwo+ID4gPiArCj4g PiA+ICsJCXZwbGFuZV9zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsK PiA+ID4gKwkJY3JjX2RhdGEgPSB2cGxhbmVfc3RhdGUtPmNyY19kYXRhOwo+ID4gPiArCj4gPiA+ ICsJCWlmIChkcm1fZnJhbWVidWZmZXJfcmVhZF9yZWZjb3VudCgmY3JjX2RhdGEtPmZiKSA9PSAw KQo+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKHBsYW5lLT50eXBlID09 IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpIHsKPiA+ID4gKwkJCXByaW1hcnlfY3JjID0gY3JjX2Rh dGE7Cj4gPiA+ICsJCQlicmVhazsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAr CWlmIChwcmltYXJ5X2NyYykKPiA+ID4gKwkJY3JjMzIgPSBfdmttc19nZXRfY3JjKHByaW1hcnlf Y3JjKTsKPiA+ID4gKwo+ID4gPiArCWRybV9jcnRjX2FkZF9jcmNfZW50cnkoY3J0YywgdHJ1ZSwg Y3J0Y19zdGF0ZS0+bl9mcmFtZSwgJmNyYzMyKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAraW50 IHZrbXNfc2V0X2NyY19zb3VyY2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBjaGFyICpz cmNfbmFtZSwKPiA+ID4gKwkJCXNpemVfdCAqdmFsdWVzX2NudCkKPiA+ID4gK3sKPiA+ID4gKwlz dHJ1Y3Qgdmttc19vdXRwdXQgKm91dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ ID4gPiArCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ID4gPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Cj4gPiA+ICsJaW50IHJldCA9IDA7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoc3JjX25hbWUgJiYgc3Ry Y21wKHNyY19uYW1lLCAiYXV0byIpID09IDApCj4gPiA+ICsJCWVuYWJsZWQgPSB0cnVlOwo+ID4g PiArCWVsc2UgaWYgKHNyY19uYW1lKQo+ID4gPiArCQlyZXQgPSAtRUlOVkFMOwo+ID4gPiArCj4g PiA+ICsJKnZhbHVlc19jbnQgPSAxOwo+ID4gPiArCj4gPiA+ICsJLyogbWFrZSBzdXJlIG5vdGhp bmcgaXMgc2NoZWR1bGVkIG9uIGNydGMgd29ya3EgKi8KPiA+ID4gKwlmbHVzaF93b3JrcXVldWUo b3V0LT5jcmNfd29ya3EpOwo+ID4gPiArCj4gPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJm91dC0+ bG9jaywgZmxhZ3MpOwo+ID4gPiArCW91dC0+Y3JjX2VuYWJsZWQgPSBlbmFibGVkOwo+ID4gPiAr CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm91dC0+bG9jaywgZmxhZ3MpOwo+ID4gPiArCj4gPiA+ ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+ ID4gaW5kZXggMjZiYWJiODVjYTc3Li5hNmMwODBkN2Y3YWUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfY3J0Yy5jCj4gPiA+IEBAIC0xMCwxOCArMTAsMzMgQEAKPiA+ID4gICNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2Ny dGNfaGVscGVyLmg+Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCB2 a21zX3ZibGFua19zaW11bGF0ZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCj4gPiA+ICtzdGF0aWMg dm9pZCBfdmJsYW5rX2hhbmRsZShzdHJ1Y3Qgdmttc19vdXRwdXQgKm91dHB1dCkKPiA+ID4gIHsK PiA+ID4gLQlzdHJ1Y3Qgdmttc19vdXRwdXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwg c3RydWN0IHZrbXNfb3V0cHV0LAo+ID4gPiAtCQkJCQkJICB2YmxhbmtfaHJ0aW1lcik7Cj4gPiA+ ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJm91dHB1dC0+Y3J0YzsKPiA+ID4gLQlpbnQgcmV0 X292ZXJydW47Cj4gPiA+ICsJc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSAqc3RhdGUgPSB0b192a21z X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ID4gPiAgCWJvb2wgcmV0Owo+ID4gPiAgCj4gPiA+ ICsJc3Bpbl9sb2NrKCZvdXRwdXQtPmxvY2spOwo+ID4gPiAgCXJldCA9IGRybV9jcnRjX2hhbmRs ZV92YmxhbmsoY3J0Yyk7Cj4gPiA+ICAJaWYgKCFyZXQpCj4gPiA+ICAJCURSTV9FUlJPUigidmtt cyBmYWlsdXJlIG9uIGhhbmRsaW5nIHZibGFuayIpOwo+ID4gPiAgCj4gPiA+ICsJaWYgKHN0YXRl ICYmIG91dHB1dC0+Y3JjX2VuYWJsZWQpIHsKPiA+ID4gKwkJc3RhdGUtPm5fZnJhbWUgPSBkcm1f Y3J0Y19hY2N1cmF0ZV92YmxhbmtfY291bnQoY3J0Yyk7Cj4gPiA+ICsJCXF1ZXVlX3dvcmsob3V0 cHV0LT5jcmNfd29ya3EsICZzdGF0ZS0+Y3JjX3dvcmspOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4g PiArCXNwaW5fdW5sb2NrKCZvdXRwdXQtPmxvY2spOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtz dGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgdmttc192Ymxhbmtfc2ltdWxhdGUoc3RydWN0IGhy dGltZXIgKnRpbWVyKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqb3V0cHV0 ID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3Qgdmttc19vdXRwdXQsCj4gPiA+ICsJCQkJCQkg IHZibGFua19ocnRpbWVyKTsKPiA+ID4gKwlpbnQgcmV0X292ZXJydW47Cj4gPiA+ICsKPiA+ID4g KwlfdmJsYW5rX2hhbmRsZShvdXRwdXQpOwo+ID4gPiArCj4gPiA+ICAJcmV0X292ZXJydW4gPSBo cnRpbWVyX2ZvcndhcmRfbm93KCZvdXRwdXQtPnZibGFua19ocnRpbWVyLAo+ID4gPiAgCQkJCQkg IG91dHB1dC0+cGVyaW9kX25zKTsKPiA+ID4gIAo+ID4gPiBAQCAtOTcsMTggKzExMiwyMiBAQCB2 a21zX2F0b21pY19jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g PiA+ICAKPiA+ID4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKGNy dGMsICZ2a21zX3N0YXRlLT5iYXNlKTsKPiA+ID4gIAo+ID4gPiArCUlOSVRfV09SSygmdmttc19z dGF0ZS0+Y3JjX3dvcmssIHZrbXNfY3JjX3dvcmtfaGFuZGxlKTsKPiA+ID4gKwo+ID4gPiAgCXJl dHVybiAmdmttc19zdGF0ZS0+YmFzZTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIHZv aWQgdmttc19hdG9taWNfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiA+ID4gIAkJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ID4gIHsKPiA+ ID4gLQlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICp2a21zX3N0YXRlOwo+ID4gPiAtCj4gPiA+IC0J dmttc19zdGF0ZSA9IHRvX3ZrbXNfY3J0Y19zdGF0ZShzdGF0ZSk7Cj4gPiA+ICsJc3RydWN0IHZr bXNfY3J0Y19zdGF0ZSAqdmttc19zdGF0ZSA9IHRvX3ZrbXNfY3J0Y19zdGF0ZShzdGF0ZSk7Cj4g PiA+ICAKPiA+ID4gIAlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZShzdGF0 ZSk7Cj4gPiA+IC0Ja2ZyZWUodmttc19zdGF0ZSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAodmttc19z dGF0ZSkgewo+ID4gPiArCQlmbHVzaF93b3JrKCZ2a21zX3N0YXRlLT5jcmNfd29yayk7Cj4gPiA+ ICsJCWtmcmVlKHZrbXNfc3RhdGUpOwo+ID4gPiArCX0KPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyB2a21zX2NydGNfZnVuY3MgPSB7Cj4g PiA+IEBAIC0xMjAsNiArMTM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5j cyB2a21zX2NydGNfZnVuY3MgPSB7Cj4gPiA+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlICAgPSB2 a21zX2F0b21pY19jcnRjX2Rlc3Ryb3lfc3RhdGUsCj4gPiA+ICAJLmVuYWJsZV92YmxhbmsJCT0g dmttc19lbmFibGVfdmJsYW5rLAo+ID4gPiAgCS5kaXNhYmxlX3ZibGFuawkJPSB2a21zX2Rpc2Fi bGVfdmJsYW5rLAo+ID4gPiArCS5zZXRfY3JjX3NvdXJjZQkJPSB2a21zX3NldF9jcmNfc291cmNl LAo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAgc3RhdGljIHZvaWQgdmttc19jcnRjX2F0b21pY19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiBAQCAtMTM0LDkgKzE1NCwyMSBAQCBz dGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ID4gPiAgCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ ID4gK3N0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ID4gPiArCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUp Cj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICp2a21zX291dHB1dCA9IGRybV9j cnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ID4gPiArCj4gPiA+ICsJLyogVGhpcyBsb2NrIGlz IGhlbGQgYWNyb3NzIHRoZSBhdG9taWMgY29tbWl0IHRvIGJsb2NrIHZibGFtayB0aW1lcgo+ID4g PiArCSAqIGZyb20gc2NoZWR1bGluZyB2a21zX2NyY193b3JrX2hhbmRsZSB1bnRpbCB0aGUgY3Jj X2RhdGEgaXMgdXBkYXRlZAo+ID4gPiArCSAqLwo+ID4gPiArCXNwaW5fbG9ja19pcnEoJnZrbXNf b3V0cHV0LT5sb2NrKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgc3RhdGljIHZvaWQgdmttc19j cnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ICAJCQkJICAgc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiA+ID4gIHsKPiA+ID4gKwlzdHJ1 Y3Qgdmttc19vdXRwdXQgKnZrbXNfb3V0cHV0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0 Yyk7Cj4gPiA+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ID4gIAo+ID4gPiAgCWlmIChjcnRj LT5zdGF0ZS0+ZXZlbnQpIHsKPiA+ID4gQEAgLTE1MSw5ICsxODMsMTIgQEAgc3RhdGljIHZvaWQg dmttc19jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ICAKPiA+ ID4gIAkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiA+ID4gIAl9Cj4gPiA+ICsKPiA+ID4g KwlzcGluX3VubG9ja19pcnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiA+ID4gIH0KPiA+ID4gIAo+ ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3Mgdmttc19jcnRj X2hlbHBlcl9mdW5jcyA9IHsKPiA+ID4gKwkuYXRvbWljX2JlZ2luCT0gdmttc19jcnRjX2F0b21p Y19iZWdpbiwKPiA+ID4gIAkuYXRvbWljX2ZsdXNoCT0gdmttc19jcnRjX2F0b21pY19mbHVzaCwK PiA+ID4gIAkuYXRvbWljX2VuYWJsZQk9IHZrbXNfY3J0Y19hdG9taWNfZW5hYmxlLAo+ID4gPiAg CS5hdG9taWNfZGlzYWJsZQk9IHZrbXNfY3J0Y19hdG9taWNfZGlzYWJsZSwKPiA+ID4gQEAgLTE2 Miw2ICsxOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB2 a21zX2NydGNfaGVscGVyX2Z1bmNzID0gewo+ID4gPiAgaW50IHZrbXNfY3J0Y19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gIAkJICAgc3Ry dWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKQo+ID4gPiAg ewo+ID4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXQgPSBkcm1fY3J0Y190b192a21z X291dHB1dChjcnRjKTsKPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiAgCj4gPiA+ICAJcmV0ID0gZHJt X2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMsIHByaW1hcnksIGN1cnNvciwKPiA+ID4g QEAgLTE3Myw1ICsyMDksOSBAQCBpbnQgdmttc19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiAgCj4gPiA+ICAJZHJtX2NydGNfaGVs cGVyX2FkZChjcnRjLCAmdmttc19jcnRjX2hlbHBlcl9mdW5jcyk7Cj4gPiA+ICAKPiA+ID4gKwlz cGluX2xvY2tfaW5pdCgmdmttc19vdXQtPmxvY2spOwo+ID4gPiArCj4gPiA+ICsJdmttc19vdXQt PmNyY193b3JrcSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJ2a21zX2NyY193b3JrcSIsIDAp Owo+ID4gPiArCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gIH0KPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX2Rydi5jCj4gPiA+IGluZGV4IGUzNDBhYTEyOGI2MS4uNTE5YTM1M2NkOTA5IDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiA+ID4gQEAgLTc5LDYgKzc5LDcgQEAgc3Rh dGljIHZvaWQgdmttc19yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ICAJZHJt X2F0b21pY19oZWxwZXJfc2h1dGRvd24oJnZrbXMtPmRybSk7Cj4gPiA+ICAJZHJtX21vZGVfY29u ZmlnX2NsZWFudXAoJnZrbXMtPmRybSk7Cj4gPiA+ICAJZHJtX2Rldl9maW5pKCZ2a21zLT5kcm0p Owo+ID4gPiArCWRlc3Ryb3lfd29ya3F1ZXVlKHZrbXMtPm91dHB1dC5jcmNfd29ya3EpOwo+ID4g PiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgdmttc19kcml2ZXIg PSB7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4gPiBpbmRleCBhMWIyMDY2NDNjMTAu LmRlMWRkZjMxMzQxYiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmtt c19kcnYuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+ IEBAIC0yMCwyMCArMjAsMzEgQEAgc3RhdGljIGNvbnN0IHUzMiB2a21zX2Zvcm1hdHNbXSA9IHsK PiA+ID4gIAlEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiArc3Ry dWN0IHZrbXNfY3JjX2RhdGEgewo+ID4gPiArCXN0cnVjdCBkcm1fcmVjdCBzcmM7Cj4gPiA+ICsJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYjsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gIC8qKgo+ ID4gPiAgICogdmttc19wbGFuZV9zdGF0ZSAtIERyaXZlciBzcGVjaWZpYyBwbGFuZSBzdGF0ZQo+ ID4gPiAgICogQGJhc2U6IGJhc2UgcGxhbmUgc3RhdGUKPiA+ID4gKyAqIEBjcmNfZGF0YTogZGF0 YSByZXF1aXJlZCBmb3IgQ1JDIGNvbXB1dGF0aW9uCj4gPiA+ICAgKi8KPiA+ID4gIHN0cnVjdCB2 a21zX3BsYW5lX3N0YXRlIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7Cj4g PiA+ICsJc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kYXRhOwo+ID4gPiAgfTsKPiA+ID4gIAo+ ID4gPiAgLyoqCj4gPiA+ICAgKiB2a21zX2NydGNfc3RhdGUgLSBEcml2ZXIgc3BlY2lmaWMgQ1JU QyBzdGF0ZQo+ID4gPiAgICogQGJhc2U6IGJhc2UgQ1JUQyBzdGF0ZQo+ID4gPiArICogQGNyY193 b3JrOiB3b3JrIHN0cnVjdCB0byBjb21wdXRlIGFuZCBhZGQgQ1JDIGVudHJpZXMKPiA+ID4gKyAq IEBuX2ZyYW1lOiBmcmFtZSBudW1iZXIgZm9yIGNvbXB1dGVkIENSQwo+ID4gPiAgICovCj4gPiA+ ICBzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg YmFzZTsKPiA+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgY3JjX3dvcms7Cj4gPiA+ICsJdW5zaWdu ZWQgaW50IG5fZnJhbWU7Cj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICBzdHJ1Y3Qgdmttc19vdXRw dXQgewo+ID4gPiBAQCAtNDMsNiArNTQsMTEgQEAgc3RydWN0IHZrbXNfb3V0cHV0IHsKPiA+ID4g IAlzdHJ1Y3QgaHJ0aW1lciB2YmxhbmtfaHJ0aW1lcjsKPiA+ID4gIAlrdGltZV90IHBlcmlvZF9u czsKPiA+ID4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKPiA+ID4g Kwlib29sIGNyY19lbmFibGVkOwo+ID4gPiArCS8qIG9yZGVyZWQgd3EgZm9yIGNyY193b3JrICov Cj4gPiA+ICsJc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmNyY193b3JrcTsKPiA+ID4gKwkvKiBw cm90ZWN0cyBjb25jdXJyZW50IGFjY2VzcyB0byBjcmNfZGF0YSAqLwo+ID4gPiArCXNwaW5sb2Nr X3QgbG9jazsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIHN0cnVjdCB2a21zX2RldmljZSB7Cj4g PiA+IEBAIC0xMDYsNCArMTIyLDkgQEAgaW50IHZrbXNfZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopOwo+ID4gPiAgCj4gPiA+ICB2b2lkIHZrbXNfZ2VtX3Z1bm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gPiA+ICAKPiA+ID4gKy8qIENSQyBTdXBwb3J0ICovCj4g PiA+ICtpbnQgdmttc19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGNvbnN0 IGNoYXIgKnNyY19uYW1lLAo+ID4gPiArCQkJc2l6ZV90ICp2YWx1ZXNfY250KTsKPiA+ID4gK3Zv aWQgdmttc19jcmNfd29ya19oYW5kbGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKPiA+ID4g Kwo+ID4gPiAgI2VuZGlmIC8qIF9WS01TX0RSVl9IXyAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmtt c19wbGFuZS5jCj4gPiA+IGluZGV4IDcwZmNhMjJiYzUxYi4uYzkxNjYxNjMxYzc2IDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiA+IEBAIC0xNiwxMSArMTYsMTgg QEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKgo+ID4gPiAgdmttc19wbGFuZV9kdXBs aWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gPiA+ICB7Cj4gPiA+ICAJc3Ry dWN0IHZrbXNfcGxhbmVfc3RhdGUgKnZrbXNfc3RhdGU7Cj4gPiA+ICsJc3RydWN0IHZrbXNfY3Jj X2RhdGEgKmNyY19kYXRhOwo+ID4gPiAgCj4gPiA+ICAJdmttc19zdGF0ZSA9IGt6YWxsb2Moc2l6 ZW9mKCp2a21zX3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICAJaWYgKCF2a21zX3N0YXRlKQo+ ID4gPiAgCQlyZXR1cm4gTlVMTDsKPiA+ID4gIAo+ID4gPiArCWNyY19kYXRhID0ga3phbGxvYyhz aXplb2YoKmNyY19kYXRhKSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJaWYgKFdBUk5fT04oIWNyY19k YXRhKSkKPiA+ID4gKwkJRFJNX0lORk8oIkNvdWxkbid0IGFsbG9jYXRlIGNyY19kYXRhIik7Cj4g PiA+ICsKPiA+ID4gKwl2a21zX3N0YXRlLT5jcmNfZGF0YSA9IGNyY19kYXRhOwo+ID4gPiArCj4g PiA+ICAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUsCj4g PiA+ICAJCQkJCQkgICZ2a21zX3N0YXRlLT5iYXNlKTsKPiA+ID4gIAo+ID4gPiBAQCAtMzEsNiAr MzgsMTggQEAgc3RhdGljIHZvaWQgdmttc19wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ID4gPiAgCQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xk X3N0YXRlKQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3N0 YXRlID0gdG9fdmttc19wbGFuZV9zdGF0ZShvbGRfc3RhdGUpOwo+ID4gPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IHZrbXNfc3RhdGUtPmJhc2UuY3J0YzsKPiA+ID4gKwo+ID4gPiArCWlmIChj cnRjKSB7Cj4gPiA+ICsJCS8qIGRyb3BwaW5nIHRoZSByZWZlcmVuY2Ugd2UgYWNxdWlyZWQgaW4K PiA+ID4gKwkJICogdmttc19wcmltYXJ5X3BsYW5lX3VwZGF0ZSgpCj4gPiA+ICsJCSAqLwo+ID4g PiArCQlpZiAoZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVmY291bnQoJnZrbXNfc3RhdGUtPmNyY19k YXRhLT5mYikpCj4gPiA+ICsJCQlkcm1fZnJhbWVidWZmZXJfcHV0KCZ2a21zX3N0YXRlLT5jcmNf ZGF0YS0+ZmIpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWtmcmVlKHZrbXNfc3RhdGUtPmNy Y19kYXRhKTsKPiA+ID4gKwl2a21zX3N0YXRlLT5jcmNfZGF0YSA9IE5VTEw7Cj4gPiA+ICAKPiA+ ID4gIAlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUob2xkX3N0YXRlKTsK PiA+ID4gIAlrZnJlZSh2a21zX3N0YXRlKTsKPiA+ID4gQEAgLTY1LDYgKzg0LDE3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHZrbXNfcGxhbmVfZnVuY3MgPSB7Cj4gPiA+ ICBzdGF0aWMgdm9pZCB2a21zX3ByaW1hcnlfcGxhbmVfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ID4gPiAgCQkJCSAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0 ZSkKPiA+ID4gIHsKPiA+ID4gKwlzdHJ1Y3Qgdmttc19wbGFuZV9zdGF0ZSAqdmttc19wbGFuZV9z dGF0ZTsKPiA+ID4gKwlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RhdGE7Cj4gPiA+ICsKPiA+ ID4gKwlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0YXRlLT5mYikKPiA+ID4g KwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJdmttc19wbGFuZV9zdGF0ZSA9IHRvX3ZrbXNfcGxh bmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiA+ID4gKwljcmNfZGF0YSA9IHZrbXNfcGxhbmVfc3Rh dGUtPmNyY19kYXRhOwo+ID4gPiArCW1lbWNweSgmY3JjX2RhdGEtPnNyYywgJnBsYW5lLT5zdGF0 ZS0+c3JjLCBzaXplb2Yoc3RydWN0IGRybV9yZWN0KSk7Cj4gPiA+ICsJbWVtY3B5KCZjcmNfZGF0 YS0+ZmIsIHBsYW5lLT5zdGF0ZS0+ZmIsIHNpemVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7 Cj4gPiA+ICsJZHJtX2ZyYW1lYnVmZmVyX2dldCgmY3JjX2RhdGEtPmZiKTsKPiA+ID4gIH0KPiA+ ID4gIAo+ID4gPiAgc3RhdGljIGludCB2a21zX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiA+ID4gLS0gCj4gPiA+IDIuMTcuMQo+ID4gPiAKPiA+IAo+ID4gLS0g Cj4gPiBTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwoK LS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=