From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 5/5] drm/vkms: Implement CRC debugfs API Date: Tue, 17 Jul 2018 16:43:16 -0400 Message-ID: <20180717204316.GA20303@art_vandelay> References: <20180716182256.GY20303@art_vandelay> <20180716235220.GA12258@haneenDRM> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-x232.google.com (mail-yw0-x232.google.com [IPv6:2607:f8b0:4002:c05::232]) by gabe.freedesktop.org (Postfix) with ESMTPS id 759A26E279 for ; Tue, 17 Jul 2018 20:43:18 +0000 (UTC) Received: by mail-yw0-x232.google.com with SMTP id w76-v6so896248ywg.4 for ; Tue, 17 Jul 2018 13:43:18 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180716235220.GA12258@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 T24gVHVlLCBKdWwgMTcsIDIwMTggYXQgMDI6NTI6MjBBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIE1vbiwgSnVsIDE2LCAyMDE4IGF0IDAyOjIyOjU2UE0gLTA0MDAsIFNlYW4g UGF1bCB3cm90ZToKPiA+IE9uIFNhdCwgSnVsIDE0LCAyMDE4IGF0IDAzOjIzOjMyUE0gKzAzMDAs IEhhbmVlbiBNb2hhbW1lZCB3cm90ZToKPiA+ID4gSW1wbGVtZW50IHRoZSBzZXRfY3JjX3NvdXJj ZSgpIGNhbGxiYWNrLgo+ID4gPiBDb21wdXRlIENSQyB1c2luZyBjcmMzMiBvbiB0aGUgdmlzaWJs ZSBwYXJ0IG9mIHRoZSBmcmFtZWJ1ZmZlci4KPiA+ID4gVXNlIG9yZGVyZWQgd29ya3F1ZXVlIHRv IGNvbXB1dGUgYW5kIGFkZCBDUkMgYXQgdGhlIGVuZCBvZiBhIHZibGFuay4KPiA+ID4gCj4gPiA+ IFVzZSBhcHByb3ByaWF0ZSBzeW5jaHJvbml6YXRpb24gbWV0aG9kcyBzaW5jZSB0aGUgY3JjIGNv bXB1dGF0aW9uIG11c3QKPiA+ID4gYmUgYXRvbWljIHdydCB0aGUgZ2VuZXJhdGVkIHZibGFuayBl dmVudCBmb3IgYSBnaXZlbiBhdG9taWMgdXBkYXRlLAo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1i eTogSGFuZWVuIE1vaGFtbWVkIDxoYW1vaGFtbWVkLnNhQGdtYWlsLmNvbT4KPiA+IAo+ID4gSGV5 IEhhbmVlbiwKPiA+IFRoYW5rcyBmb3IgcmV2aXNpbmcgdGhpcyBwYXRjaCBzZXQuIFRoaW5ncyBh cmUgbG9va2luZyBnb29kIGFjcm9zcyB0aGUgc2VyaWVzLAo+ID4ganVzdCBhIGZldyBtb3JlIGNv bW1lbnRzIDotKQo+ID4gCj4gCj4gVGhhbmsgeW91IHNvIG11Y2ggZm9yIHRoZSByZXZpZXchIAo+ IAo+ID4gPiAtLS0KPiA+ID4gQ2hhbmdlcyBpbiB2MjoKPiA+ID4gLSBJbmNsdWRlIHRoaXMgcGF0 Y2ggaW4gdGhpcyBwYXRjaHNldC4KPiA+ID4gCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy9N YWtlZmlsZSAgICAgfCAgMiArLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRj LmMgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gPiAgZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19kcnYuYyAgIHwgIDEgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3Zr bXMvdmttc19kcnYuaCAgIHwgMjEgKysrKysrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfcGxhbmUuYyB8IDEwICsrKysrKwo+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCA4NSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZp bGUKPiA+ID4gaW5kZXggOTg2Mjk3ZGE1MWJmLi4zNzk2NjkxNGY3MGIgMTAwNjQ0Cj4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS92a21zL01ha2VmaWxlCj4gPiA+IEBAIC0xLDMgKzEsMyBAQAo+ID4gPiAtdmttcy15IDo9 IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmttc19jcnRjLm8gdmttc19n ZW0ubwo+ID4gPiArdmttcy15IDo9IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0 Lm8gdmttc19jcnRjLm8gdmttc19nZW0ubyB2a21zX2NyYy5vCj4gPiA+ICAKPiA+ID4gIG9iai0k KENPTkZJR19EUk1fVktNUykgKz0gdmttcy5vCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5j Cj4gPiA+IGluZGV4IDI2YmFiYjg1Y2E3Ny4uZjNhNjc0ZGIzM2I4IDEwMDY0NAo+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2NydGMuYwo+ID4gPiBAQCAtMTAsMTggKzEwLDM2IEBACj4gPiA+ICAj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjX2hlbHBlci5oPgo+ID4gPiAgCj4gPiA+IC1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3Rh cnQgdmttc192Ymxhbmtfc2ltdWxhdGUoc3RydWN0IGhydGltZXIgKnRpbWVyKQo+ID4gPiArc3Rh dGljIHZvaWQgX3ZibGFua19oYW5kbGUoc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQpCj4gPiA+ ICB7Cj4gPiA+IC0Jc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQgPSBjb250YWluZXJfb2YodGlt ZXIsIHN0cnVjdCB2a21zX291dHB1dCwKPiA+ID4gLQkJCQkJCSAgdmJsYW5rX2hydGltZXIpOwo+ ID4gPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZvdXRwdXQtPmNydGM7Cj4gPiA+IC0JaW50 IHJldF9vdmVycnVuOwo+ID4gPiArCXN0cnVjdCB2a21zX2NydGNfc3RhdGUgKnN0YXRlID0gdG9f dmttc19jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4gIAlib29sIHJldDsKPiA+ID4gIAo+ ID4gPiArCWludCBjcmNfZW5hYmxlZCA9IDA7Cj4gPiA+ICsKPiA+ID4gKwlzcGluX2xvY2soJm91 dHB1dC0+bG9jayk7Cj4gPiA+ICsJY3JjX2VuYWJsZWQgPSBvdXRwdXQtPmNyY19lbmFibGVkOwo+ ID4gCj4gPiBBc2lkZSBmcm9tIHRoZSBpbXBsaWNpdCBib29sIC0+IGludCBjYXN0LCBJIGRvbid0 IHRoaW5rIHlvdSBuZWVkIHRoaXMgbG9jYWwgdmFyLAo+ID4ganVzdCB1c2Ugb3V0cHV0LT5jcmNf ZW5hYmxlZCBkaXJlY3RseSBiZWxvdy4KPiA+IAo+ID4gPiAgCXJldCA9IGRybV9jcnRjX2hhbmRs ZV92YmxhbmsoY3J0Yyk7Cj4gPiA+ICAJaWYgKCFyZXQpCj4gPiA+ICAJCURSTV9FUlJPUigidmtt cyBmYWlsdXJlIG9uIGhhbmRsaW5nIHZibGFuayIpOwo+ID4gCj4gPiBUaGlzIHdvdWxkIGJlIG1v cmUgdXNlZnVsIHdpdGggdGhlIGVycm9yIGNvZGUgcHJpbnRlZC4KPiA+IAo+IAo+IEkgdGhpbmsg dGhpcyBvbmx5IHJldHVybnMgZmFsc2Ugb24gZmFpbHVyZS4gQWxzbyBJJ3ZlIG5vdGljZWQgbW9z dCBvZiB0aGUgdXNhZ2Ugb2YKPiBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rIGRvbid0IGNoZWNrIHRo ZSByZXR1cm4gdmFsdWUsIHNob3VsZCBJIGRvIHRoZQo+IHNhbWUgYXMgd2VsbCBhbmQgZHJvcCBy ZXQgYW5kIGVycm9yIG1lc3NhZ2U/CgpBaGgsIEkgZGlkbid0IHNlZSB0aGF0IHJldCB3YXMgYm9v bC4gSW4gdGhhdCBjYXNlLCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBmaW5lLgpJdCdzIGFsd2F5cyBn b29kIHByYWN0aWNlIHRvIGFzc3VtZSB0aGF0IGlmIGEgZnVuY3Rpb24gcmV0dXJucyBhIHN0YXR1 cywgaXQncwp3b3J0aCBjaGVja2luZy4KCj4gCj4gPiA+ICAKPiA+ID4gKwlpZiAoc3RhdGUgJiYg Y3JjX2VuYWJsZWQpIHsKPiA+ID4gKwkJc3RhdGUtPm5fZnJhbWUgPSBkcm1fY3J0Y19hY2N1cmF0 ZV92YmxhbmtfY291bnQoY3J0Yyk7Cj4gPiA+ICsJCXF1ZXVlX3dvcmsob3V0cHV0LT5jcmNfd29y a3EsICZzdGF0ZS0+Y3JjX3dvcmspOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXNwaW5fdW5s b2NrKCZvdXRwdXQtPmxvY2spOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgZW51bSBo cnRpbWVyX3Jlc3RhcnQgdmttc192Ymxhbmtfc2ltdWxhdGUoc3RydWN0IGhydGltZXIgKnRpbWVy KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqb3V0cHV0ID0gY29udGFpbmVy X29mKHRpbWVyLCBzdHJ1Y3Qgdmttc19vdXRwdXQsCj4gPiA+ICsJCQkJCQkgIHZibGFua19ocnRp bWVyKTsKPiA+ID4gKwlpbnQgcmV0X292ZXJydW47Cj4gPiA+ICsKPiA+ID4gKwlfdmJsYW5rX2hh bmRsZShvdXRwdXQpOwo+ID4gPiArCj4gPiA+ICAJcmV0X292ZXJydW4gPSBocnRpbWVyX2Zvcndh cmRfbm93KCZvdXRwdXQtPnZibGFua19ocnRpbWVyLAo+ID4gPiAgCQkJCQkgIG91dHB1dC0+cGVy aW9kX25zKTsKPiA+ID4gIAo+ID4gPiBAQCAtOTcsNiArMTE1LDggQEAgdmttc19hdG9taWNfY3J0 Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gPiAgCj4gPiA+ICAJ X19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShjcnRjLCAmdmttc19zdGF0 ZS0+YmFzZSk7Cj4gPiA+ICAKPiA+ID4gKwlJTklUX1dPUksoJnZrbXNfc3RhdGUtPmNyY193b3Jr LCB2a21zX2NyY193b3JrX2hhbmRsZSk7Cj4gPiA+ICsKPiA+ID4gIAlyZXR1cm4gJnZrbXNfc3Rh dGUtPmJhc2U7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gQEAgLTEwNCwxMSArMTI0LDE4IEBAIHN0 YXRpYyB2b2lkIHZrbXNfYXRvbWljX2NydGNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gPiA+ICAJCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiA+ ICB7Cj4gPiA+ICAJc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSAqdmttc19zdGF0ZTsKPiA+ID4gKwlz dHJ1Y3Qgdmttc19vdXRwdXQgKnZrbXNfb3V0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0 Yyk7Cj4gPiA+ICAKPiA+ID4gIAl2a21zX3N0YXRlID0gdG9fdmttc19jcnRjX3N0YXRlKHN0YXRl KTsKPiA+ID4gIAo+ID4gPiAgCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRl KHN0YXRlKTsKPiA+ID4gLQlrZnJlZSh2a21zX3N0YXRlKTsKPiA+ID4gKwo+ID4gPiArCWlmICh2 a21zX3N0YXRlKSB7Cj4gPiA+ICsJCWZsdXNoX3dvcmtxdWV1ZSh2a21zX291dC0+Y3JjX3dvcmtx KTsKPiA+IAo+ID4gSSdtIGEgbGl0dGxlIHdvcnJpZWQgYWJvdXQgdGhpcyBiaXQuIFNpbmNlIHRo ZSB3b3JrcXVldWUgaXMgcGVyLW91dHB1dCwgaXMgaXQKPiA+IHBvc3NpYmxlIHlvdSdsbCBiZSB3 YWl0aW5nIGZvciBtb3JlIGZyYW1lcyB0byBjb21wbGV0ZSB0aGFuIHlvdSBuZWVkIHRvIGJlPwo+ ID4gCj4gCj4gSSBzZWUsIG1heWJlIEkgc2hvdWxkIGZsdXNoIHBlciB3b3JrX3N0cnVjdCBpbnN0 ZWFkPwoKWWVhaCwgdGhhdCB3b3VsZCBtYWtlIG1vcmUgc2Vuc2UgSU1PLgoKPiAKPiA+ID4gKwkJ ZHJtX2ZyYW1lYnVmZmVyX3B1dCgmdmttc19zdGF0ZS0+ZGF0YS5mYik7Cj4gPiA+ICsJCW1lbXNl dCgmdmttc19zdGF0ZS0+ZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCB2a21zX2NyY19kYXRhKSk7Cj4g PiA+ICsJCWtmcmVlKHZrbXNfc3RhdGUpOwo+ID4gPiArCX0KPiA+ID4gIH0KPiA+ID4gIAo+ID4g PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyB2a21zX2NydGNfZnVuY3MgPSB7 Cj4gPiA+IEBAIC0xMjAsNiArMTQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19m dW5jcyB2a21zX2NydGNfZnVuY3MgPSB7Cj4gPiA+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlICAg PSB2a21zX2F0b21pY19jcnRjX2Rlc3Ryb3lfc3RhdGUsCj4gPiA+ICAJLmVuYWJsZV92YmxhbmsJ CT0gdmttc19lbmFibGVfdmJsYW5rLAo+ID4gPiAgCS5kaXNhYmxlX3ZibGFuawkJPSB2a21zX2Rp c2FibGVfdmJsYW5rLAo+ID4gPiArCS5zZXRfY3JjX3NvdXJjZQkJPSB2a21zX3NldF9jcmNfc291 cmNlLAo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAgc3RhdGljIHZvaWQgdmttc19jcnRjX2F0b21p Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiBAQCAtMTM0LDI2ICsxNjIsMzcg QEAgc3RhdGljIHZvaWQgdmttc19jcnRjX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiA+ID4gIAlkcm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMpOwo+ID4gPiAgfQo+ID4gPiAg Cj4gPiA+ICtzdGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ID4gKwkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXRwdXQgPSBk cm1fY3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+ID4gKwo+ID4gPiArCXNwaW5fbG9ja19p cnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiA+IAo+ID4gSG1tLCB5b3UgY2FuJ3QgbG9jayBhY3Jv c3MgYXRvbWljX2JlZ2luL2ZsdXNoLiBXaGF0IGlzIHRoaXMgcHJvdGVjdGluZyBhZ2FpbnN0Pwo+ ID4gCj4gCj4gSSBkaWQgdGhpcyBwZXIgRGFuaWVsIHJlY29tbWVuZGF0aW9uOgo+IDEtIHNwaW5f bG9ja19pcnEgLT4gdmttc19jcnRjX2F0b21pY19iZWdpbgo+IDItIHVwZGF0ZSB2a21zX2NyY19k YXRhIGFuZCBnZXQgcmVmIHRvIGZiIC0+IHZrbXNfcHJpbWFyeV9wbGFuZV91cGRhdGUKPiAzLSBz cGluX3VubG9ja19pcnEgYWZ0ZXIgdmJsYW5rIGV2ZW50IC0+IHZrbXNfY3J0Y19hdG9taWNfZmx1 c2gKCkkgdGhpbmsgSSdtIGludGVycHJldGluZyBoaXMgbWFpbCBhIGxpdHRsZSBkaWZmZXJlbnRs eS4gVGhlIHBvaW50IG9mIHRoZQpzcGlubG9jayBpcyB0byBwcm90ZWN0IHRoZSBwb2ludGVyIHRv IHRoZSBjcmNfZGF0YSBpbiB2a21zX2NydGMgKHJpZ2h0IG5vdyBpdCdzCm5vdCBhIHBvaW50ZXIs IGJ1dCBpdCBzaG91bGQgYmUpLgoKU28gSSB0aGluayB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93 aW5nOgotIENoYW5nZSBjcmNfZGF0YSB0byBhIHBvaW50ZXIKLSBJbiBwbGFuZV91cGRhdGUsIGFs bG9jYXRlIG5ldyBtZW1vcnkgdG8gaG9sZCBjcmNfZGF0YSBhbmQsIHVuZGVyIHRoZSBzcGlubG9j aywKICB1cGRhdGUgdGhlIGNyY19kYXRhIHRvIHBvaW50IHRvIHRoZSBuZXcgbWVtb3J5IChhZGQg YSBXQVJOX09OIGlmIHRoZSBwb2ludGVyCiAgaXMgTlVMTCkKLSBJbiB0aGUgaHJ0aW1lciwgd2hp bGUgaG9sZGluZyB0aGUgc3BpbmxvY2ssIHRha2UgdGhlIHBvaW50ZXIgZnJvbSBjcmNfZGF0YQog IGludG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2xlYXIgdGhlIGNydGMtPmNyY19kYXRhIHBvaW50 ZXIKLSBQYXNzIHRoZSBwb2ludGVyIChmcm9tIHRoZSBsb2NhbCB2YXJpYWJsZSkgdG8gdGhlIGNy Y193b3JrZXIKCkkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdG8gaG9sZCB0aGUgc3BpbmxvY2sgYWNy b3NzIHRoZSBhdG9taWMgaG9va3MsIGp1c3QgZ3JhYgppdCBpbiBwbGFuZV91cGRhdGUuCgpTZWFu Cgo+IAo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWlj X2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gIAkJCQkgICBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ID4gPiAgewo+ID4gPiAtCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gPiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICp2a21zX291dHB1dCA9IGRybV9jcnRj X3RvX3ZrbXNfb3V0cHV0KGNydGMpOwo+ID4gPiAgCj4gPiA+ICAJaWYgKGNydGMtPnN0YXRlLT5l dmVudCkgewo+ID4gPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2Nr LCBmbGFncyk7Cj4gPiA+ICsJCXNwaW5fbG9jaygmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiA+ IAo+ID4gV2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgY2hhbmdlPwo+ID4gCj4gCj4g aG0gSSBhbSBub3Qgc3VyZSBpZiB0aGlzIGlzIGNvcnJlY3QsIGJ1dCBJIGFzc3VtZSBiZWNhdXNl IHNwaW5fbG9ja19pcnEgaW4gYXRvbWljX2JlZ2luCj4gd291bGQgZGlzYWJsZSBpbnRlcnJ1cHRz IGFuZCBzaW5jZSB0aGlzIGlzIGJlZm9yZSB3ZSB1bmxvY2sgdmttc19vdXRwdXQtPmxvY2sgd2l0 aCAKPiBzcGluX3VubG9ja19pcnEgc28gaXJxc2F2ZSBoZXJlIGlzIG5vdCBuZWNlc3Nhcnk/Cj4g CgpPbmNlIHlvdSBsaW1pdCB0aGUgc2NvcGUgb2YgdGhlIHNwaW5sb2NrIGFib3ZlLCB5b3Ugd2ls bCB3YW50IHRvIHJldmVydCB0aGlzCmNoYW5nZS4KCj4gPiA+ICAKPiA+ID4gIAkJaWYgKGRybV9j cnRjX3ZibGFua19nZXQoY3J0YykgIT0gMCkKPiA+ID4gIAkJCWRybV9jcnRjX3NlbmRfdmJsYW5r X2V2ZW50KGNydGMsIGNydGMtPnN0YXRlLT5ldmVudCk7Cj4gPiA+ICAJCWVsc2UKPiA+ID4gIAkJ CWRybV9jcnRjX2FybV92YmxhbmtfZXZlbnQoY3J0YywgY3J0Yy0+c3RhdGUtPmV2ZW50KTsKPiA+ ID4gIAo+ID4gPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjcnRjLT5kZXYtPmV2ZW50X2xv Y2ssIGZsYWdzKTsKPiA+ID4gKwkJc3Bpbl91bmxvY2soJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7 Cj4gPiA+ICAKPiA+ID4gIAkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiA+ID4gIAl9Cj4g PiA+ICsKPiA+ID4gKwlzcGluX3VubG9ja19pcnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiA+ID4g IH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVu Y3Mgdmttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKPiA+ID4gKwkuYXRvbWljX2JlZ2luCT0gdmtt c19jcnRjX2F0b21pY19iZWdpbiwKPiA+ID4gIAkuYXRvbWljX2ZsdXNoCT0gdmttc19jcnRjX2F0 b21pY19mbHVzaCwKPiA+ID4gIAkuYXRvbWljX2VuYWJsZQk9IHZrbXNfY3J0Y19hdG9taWNfZW5h YmxlLAo+ID4gPiAgCS5hdG9taWNfZGlzYWJsZQk9IHZrbXNfY3J0Y19hdG9taWNfZGlzYWJsZSwK PiA+ID4gQEAgLTE2Miw2ICsyMDEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hl bHBlcl9mdW5jcyB2a21zX2NydGNfaGVscGVyX2Z1bmNzID0gewo+ID4gPiAgaW50IHZrbXNfY3J0 Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ ID4gIAkJICAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3RydWN0IGRybV9wbGFuZSAqY3Vy c29yKQo+ID4gPiAgewo+ID4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXQgPSBkcm1f Y3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiAgCj4gPiA+ ICAJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMsIHByaW1hcnksIGN1 cnNvciwKPiA+ID4gQEAgLTE3Myw1ICsyMTMsOSBAQCBpbnQgdmttc19jcnRjX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiAgCj4gPiA+ICAJ ZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAmdmttc19jcnRjX2hlbHBlcl9mdW5jcyk7Cj4gPiA+ ICAKPiA+ID4gKwlzcGluX2xvY2tfaW5pdCgmdmttc19vdXQtPmxvY2spOwo+ID4gPiArCj4gPiA+ ICsJdmttc19vdXQtPmNyY193b3JrcSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJ2a21zX2Ny Y193b3JrcSIsIDApOwo+ID4gPiArCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gIH0KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2Rydi5jCj4gPiA+IGluZGV4IDM3YWEyZWYzM2IyMS4uNWQ3OGJkOTdl NjljIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiA+ID4gQEAgLTQ2LDYg KzQ2LDcgQEAgc3RhdGljIHZvaWQgdmttc19yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gPiA+ICAJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIodmttcy0+cGxhdGZvcm0pOwo+ID4g PiAgCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKCZ2a21zLT5kcm0pOwo+ID4gPiAgCWRybV9kZXZf ZmluaSgmdmttcy0+ZHJtKTsKPiA+ID4gKwlkZXN0cm95X3dvcmtxdWV1ZSh2a21zLT5vdXRwdXQu Y3JjX3dvcmtxKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIHN0cnVjdCBkcm1fZHJp dmVyIHZrbXNfZHJpdmVyID0gewo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zr bXMvdmttc19kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gaW5k ZXggYmY4MTFkMGVjMzQ5Li45NTk4NTY0OTc2OGMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19kcnYuaAo+ID4gPiBAQCAtMjAsMTIgKzIwLDIzIEBAIHN0YXRpYyBjb25zdCB1MzIgdmtt c19mb3JtYXRzW10gPSB7Cj4gPiA+ICAJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiA+ID4gIH07Cj4g PiA+ICAKPiA+ID4gK3N0cnVjdCB2a21zX2NyY19kYXRhIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX3Jl Y3Qgc3JjOwo+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmI7Cj4gPiA+ICt9Owo+ID4g PiArCj4gPiA+ICAvKioKPiA+ID4gICAqIHZrbXNfY3J0Y19zdGF0ZSAtIERyaXZlciBzcGVjaWZp YyBDUlRDIHN0YXRlCj4gPiA+ICAgKiBAYmFzZTogYmFzZSBDUlRDIHN0YXRlCj4gPiA+ICsgKiBA Y3JjX3dvcms6IHdvcmsgc3RydWN0IHRvIGNvbXB1dGUgYW5kIGFkZCBDUkMgZW50cmllcwo+ID4g PiArICogQGRhdGE6IGRhdGEgcmVxdWlyZWQgZm9yIENSQyBjb21wdXRhdGlvbgo+ID4gPiArICog QG5fZnJhbWU6IGZyYW1lIG51bWJlciBmb3IgY29tcHV0ZWQgQ1JDCj4gPiA+ICAgKi8KPiA+ID4g IHN0cnVjdCB2a21zX2NydGNfc3RhdGUgewo+ID4gPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBi YXNlOwo+ID4gPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBjcmNfd29yazsKPiA+ID4gKwlzdHJ1Y3Qg dmttc19jcmNfZGF0YSBkYXRhOwo+ID4gPiArCXVuc2lnbmVkIGludCBuX2ZyYW1lOwo+ID4gPiAg fTsKPiA+ID4gIAo+ID4gPiAgc3RydWN0IHZrbXNfb3V0cHV0IHsKPiA+ID4gQEAgLTM1LDYgKzQ2 LDExIEBAIHN0cnVjdCB2a21zX291dHB1dCB7Cj4gPiA+ICAJc3RydWN0IGhydGltZXIgdmJsYW5r X2hydGltZXI7Cj4gPiA+ICAJa3RpbWVfdCBwZXJpb2RfbnM7Cj4gPiA+ICAJc3RydWN0IGRybV9w ZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4gPiA+ICsJYm9vbCBjcmNfZW5hYmxlZDsKPiA+ IAo+ID4gV2hlcmUgaXMgdGhpcyBzZXQgdG8gdHJ1ZT8KPiA+IAo+IAo+IE9oIHNvcnJ5IEkgZm9y Z290IHRvIGFkZCBhIHZrbXNfY3JjLmMgd2hpY2ggc2V0cyBjcmNfZW5hYmxlZCBpbgo+IHNldF9j cmNfc291cmNlIGNhbGxiYWNrISAKPiAKPiBJJ2xsIHdvcmsgb24gZml4aW5nIHRoZSBpc3N1ZXMg eW91IG1lbnRpb25lZCBoZXJlIGFuZCB0aGUgb3RoZXIgcGF0Y2hlcwo+IGFzIHdlbGwsIHRoYW5r IHlvdSBzbyBtdWNoIGFnYWluIQoKVGhhbmtzIGZvciB3b3JraW5nIHRocm91Z2ggdGhpcyEKClNl YW4KCj4gSGFuZWVuCj4gCj4gPiA+ICsJLyogb3JkZXJlZCB3cSBmb3IgY3JjX3dvcmsgKi8KPiA+ ID4gKwlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqY3JjX3dvcmtxOwo+ID4gPiArCS8qIHByb3Rl Y3RzIGNvbmN1cnJlbnQgYWNjZXNzIHRvIGNyY19kYXRhICovCj4gPiA+ICsJc3BpbmxvY2tfdCBs b2NrOwo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAgc3RydWN0IHZrbXNfZGV2aWNlIHsKPiA+ID4g QEAgLTk1LDQgKzExMSw5IEBAIHZvaWQgKnZrbXNfZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopOwo+ID4gPiAgCj4gPiA+ICB2b2lkIHZrbXNfZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7Cj4gPiA+ICAKPiA+ID4gKy8qIENSQyBTdXBwb3J0ICovCj4gPiA+ ICtpbnQgdmttc19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGNvbnN0IGNo YXIgKnNyY19uYW1lLAo+ID4gPiArCQkJc2l6ZV90ICp2YWx1ZXNfY250KTsKPiA+ID4gK3ZvaWQg dmttc19jcmNfd29ya19oYW5kbGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKPiA+ID4gKwo+ ID4gPiAgI2VuZGlmIC8qIF9WS01TX0RSVl9IXyAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19w bGFuZS5jCj4gPiA+IGluZGV4IGFhZjdjMzVmYWVkNi4uMWUwZWU4Y2E4YmQ2IDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiA+IEBAIC0yNCw2ICsyNCwxNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyB2a21zX3BsYW5lX2Z1bmNzID0gewo+ ID4gPiAgc3RhdGljIHZvaWQgdmttc19wcmltYXJ5X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiA+ID4gIAkJCQkgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRf c3RhdGUpCj4gPiA+ICB7Cj4gPiA+ICsJc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSAqc3RhdGU7Cj4g PiA+ICsKPiA+ID4gKwlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0YXRlLT5m YikKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJc3RhdGUgPSB0b192a21zX2NydGNf c3RhdGUocGxhbmUtPnN0YXRlLT5jcnRjLT5zdGF0ZSk7Cj4gPiA+ICsJbWVtY3B5KCZzdGF0ZS0+ ZGF0YS5zcmMsICZwbGFuZS0+c3RhdGUtPnNyYywgc2l6ZW9mKHN0cnVjdCBkcm1fcmVjdCkpOwo+ ID4gPiArCW1lbWNweSgmc3RhdGUtPmRhdGEuZmIsIHBsYW5lLT5zdGF0ZS0+ZmIsCj4gPiA+ICsJ ICAgICAgIHNpemVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4gPiA+ICsJZHJtX2ZyYW1l YnVmZmVyX2dldCgmc3RhdGUtPmRhdGEuZmIpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0 aWMgaW50IHZrbXNfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ID4gPiAtLSAKPiA+ID4gMi4xNy4xCj4gPiA+IAo+ID4gCj4gPiAtLSAKPiA+IFNlYW4gUGF1bCwg U29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCgotLSAKU2VhbiBQYXVsLCBT b2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==