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 17:05:03 -0400 Message-ID: <20180717210503.GC20359@art_vandelay> References: <20180716182256.GY20303@art_vandelay> <20180716235220.GA12258@haneenDRM> <20180717204316.GA20303@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-x241.google.com (mail-yw0-x241.google.com [IPv6:2607:f8b0:4002:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 531D66E8EE for ; Tue, 17 Jul 2018 21:05:05 +0000 (UTC) Received: by mail-yw0-x241.google.com with SMTP id c135-v6so926855ywa.0 for ; Tue, 17 Jul 2018 14:05:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180717204316.GA20303@art_vandelay> 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 T24gVHVlLCBKdWwgMTcsIDIwMTggYXQgMDQ6NDM6MTZQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIFR1ZSwgSnVsIDE3LCAyMDE4IGF0IDAyOjUyOjIwQU0gKzAzMDAsIEhhbmVlbiBNb2hh bW1lZCB3cm90ZToKPiA+IE9uIE1vbiwgSnVsIDE2LCAyMDE4IGF0IDAyOjIyOjU2UE0gLTA0MDAs IFNlYW4gUGF1bCB3cm90ZToKPiA+ID4gT24gU2F0LCBKdWwgMTQsIDIwMTggYXQgMDM6MjM6MzJQ TSArMDMwMCwgSGFuZWVuIE1vaGFtbWVkIHdyb3RlOgo+ID4gPiA+IEltcGxlbWVudCB0aGUgc2V0 X2NyY19zb3VyY2UoKSBjYWxsYmFjay4KPiA+ID4gPiBDb21wdXRlIENSQyB1c2luZyBjcmMzMiBv biB0aGUgdmlzaWJsZSBwYXJ0IG9mIHRoZSBmcmFtZWJ1ZmZlci4KPiA+ID4gPiBVc2Ugb3JkZXJl ZCB3b3JrcXVldWUgdG8gY29tcHV0ZSBhbmQgYWRkIENSQyBhdCB0aGUgZW5kIG9mIGEgdmJsYW5r Lgo+ID4gPiA+IAo+ID4gPiA+IFVzZSBhcHByb3ByaWF0ZSBzeW5jaHJvbml6YXRpb24gbWV0aG9k cyBzaW5jZSB0aGUgY3JjIGNvbXB1dGF0aW9uIG11c3QKPiA+ID4gPiBiZSBhdG9taWMgd3J0IHRo ZSBnZW5lcmF0ZWQgdmJsYW5rIGV2ZW50IGZvciBhIGdpdmVuIGF0b21pYyB1cGRhdGUsCj4gPiA+ ID4gCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSGFuZWVuIE1vaGFtbWVkIDxoYW1vaGFtbWVkLnNh QGdtYWlsLmNvbT4KPiA+ID4gCj4gPiA+IEhleSBIYW5lZW4sCj4gPiA+IFRoYW5rcyBmb3IgcmV2 aXNpbmcgdGhpcyBwYXRjaCBzZXQuIFRoaW5ncyBhcmUgbG9va2luZyBnb29kIGFjcm9zcyB0aGUg c2VyaWVzLAo+ID4gPiBqdXN0IGEgZmV3IG1vcmUgY29tbWVudHMgOi0pCj4gPiA+IAo+ID4gCj4g PiBUaGFuayB5b3Ugc28gbXVjaCBmb3IgdGhlIHJldmlldyEgCj4gPiAKPiA+ID4gPiAtLS0KPiA+ ID4gPiBDaGFuZ2VzIGluIHYyOgo+ID4gPiA+IC0gSW5jbHVkZSB0aGlzIHBhdGNoIGluIHRoaXMg cGF0Y2hzZXQuCj4gPiA+ID4gCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxl ICAgICB8ICAyICstCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jICB8 IDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19kcnYuYyAgIHwgIDEgKwo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2Rydi5oICAgfCAyMSArKysrKysrKysrKwo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX3BsYW5lLmMgfCAxMCArKysrKysKPiA+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCA4 NSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS92a21z L01ha2VmaWxlCj4gPiA+ID4gaW5kZXggOTg2Mjk3ZGE1MWJmLi4zNzk2NjkxNGY3MGIgMTAwNjQ0 Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUKPiA+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gPiA+IEBAIC0xLDMgKzEsMyBAQAo+ ID4gPiA+IC12a21zLXkgOj0gdmttc19kcnYubyB2a21zX3BsYW5lLm8gdmttc19vdXRwdXQubyB2 a21zX2NydGMubyB2a21zX2dlbS5vCj4gPiA+ID4gK3ZrbXMteSA6PSB2a21zX2Rydi5vIHZrbXNf cGxhbmUubyB2a21zX291dHB1dC5vIHZrbXNfY3J0Yy5vIHZrbXNfZ2VtLm8gdmttc19jcmMubwo+ ID4gPiA+ICAKPiA+ID4gPiAgb2JqLSQoQ09ORklHX0RSTV9WS01TKSArPSB2a21zLm8KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ID4gPiA+IGluZGV4IDI2YmFiYjg1Y2E3Ny4uZjNh Njc0ZGIzM2I4IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNf Y3J0Yy5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+ ID4gPiBAQCAtMTAsMTggKzEwLDM2IEBACj4gPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Y19oZWxwZXIuaD4KPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ ID4gPiAgCj4gPiA+ID4gLXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCB2a21zX3ZibGFua19z aW11bGF0ZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCj4gPiA+ID4gK3N0YXRpYyB2b2lkIF92Ymxh bmtfaGFuZGxlKHN0cnVjdCB2a21zX291dHB1dCAqb3V0cHV0KQo+ID4gPiA+ICB7Cj4gPiA+ID4g LQlzdHJ1Y3Qgdmttc19vdXRwdXQgKm91dHB1dCA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0 IHZrbXNfb3V0cHV0LAo+ID4gPiA+IC0JCQkJCQkgIHZibGFua19ocnRpbWVyKTsKPiA+ID4gPiAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZvdXRwdXQtPmNydGM7Cj4gPiA+ID4gLQlpbnQgcmV0 X292ZXJydW47Cj4gPiA+ID4gKwlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICpzdGF0ZSA9IHRvX3Zr bXNfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gPiA+ID4gIAlib29sIHJldDsKPiA+ID4gPiAg Cj4gPiA+ID4gKwlpbnQgY3JjX2VuYWJsZWQgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArCXNwaW5f bG9jaygmb3V0cHV0LT5sb2NrKTsKPiA+ID4gPiArCWNyY19lbmFibGVkID0gb3V0cHV0LT5jcmNf ZW5hYmxlZDsKPiA+ID4gCj4gPiA+IEFzaWRlIGZyb20gdGhlIGltcGxpY2l0IGJvb2wgLT4gaW50 IGNhc3QsIEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdGhpcyBsb2NhbCB2YXIsCj4gPiA+IGp1c3Qg dXNlIG91dHB1dC0+Y3JjX2VuYWJsZWQgZGlyZWN0bHkgYmVsb3cuCj4gPiA+IAo+ID4gPiA+ICAJ cmV0ID0gZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsKPiA+ID4gPiAgCWlmICghcmV0KQo+ ID4gPiA+ICAJCURSTV9FUlJPUigidmttcyBmYWlsdXJlIG9uIGhhbmRsaW5nIHZibGFuayIpOwo+ ID4gPiAKPiA+ID4gVGhpcyB3b3VsZCBiZSBtb3JlIHVzZWZ1bCB3aXRoIHRoZSBlcnJvciBjb2Rl IHByaW50ZWQuCj4gPiA+IAo+ID4gCj4gPiBJIHRoaW5rIHRoaXMgb25seSByZXR1cm5zIGZhbHNl IG9uIGZhaWx1cmUuIEFsc28gSSd2ZSBub3RpY2VkIG1vc3Qgb2YgdGhlIHVzYWdlIG9mCj4gPiBk cm1fY3J0Y19oYW5kbGVfdmJsYW5rIGRvbid0IGNoZWNrIHRoZSByZXR1cm4gdmFsdWUsIHNob3Vs ZCBJIGRvIHRoZQo+ID4gc2FtZSBhcyB3ZWxsIGFuZCBkcm9wIHJldCBhbmQgZXJyb3IgbWVzc2Fn ZT8KPiAKPiBBaGgsIEkgZGlkbid0IHNlZSB0aGF0IHJldCB3YXMgYm9vbC4gSW4gdGhhdCBjYXNl LCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBmaW5lLgo+IEl0J3MgYWx3YXlzIGdvb2QgcHJhY3RpY2Ug dG8gYXNzdW1lIHRoYXQgaWYgYSBmdW5jdGlvbiByZXR1cm5zIGEgc3RhdHVzLCBpdCdzCj4gd29y dGggY2hlY2tpbmcuCj4gCj4gPiAKPiA+ID4gPiAgCj4gPiA+ID4gKwlpZiAoc3RhdGUgJiYgY3Jj X2VuYWJsZWQpIHsKPiA+ID4gPiArCQlzdGF0ZS0+bl9mcmFtZSA9IGRybV9jcnRjX2FjY3VyYXRl X3ZibGFua19jb3VudChjcnRjKTsKPiA+ID4gPiArCQlxdWV1ZV93b3JrKG91dHB1dC0+Y3JjX3dv cmtxLCAmc3RhdGUtPmNyY193b3JrKTsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwlz cGluX3VubG9jaygmb3V0cHV0LT5sb2NrKTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiAr c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRlKHN0cnVjdCBo cnRpbWVyICp0aW1lcikKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpv dXRwdXQgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB2a21zX291dHB1dCwKPiA+ID4gPiAr CQkJCQkJICB2YmxhbmtfaHJ0aW1lcik7Cj4gPiA+ID4gKwlpbnQgcmV0X292ZXJydW47Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJX3ZibGFua19oYW5kbGUob3V0cHV0KTsKPiA+ID4gPiArCj4gPiA+ID4g IAlyZXRfb3ZlcnJ1biA9IGhydGltZXJfZm9yd2FyZF9ub3coJm91dHB1dC0+dmJsYW5rX2hydGlt ZXIsCj4gPiA+ID4gIAkJCQkJICBvdXRwdXQtPnBlcmlvZF9ucyk7Cj4gPiA+ID4gIAo+ID4gPiA+ IEBAIC05Nyw2ICsxMTUsOCBAQCB2a21zX2F0b21pY19jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gPiA+ID4gIAo+ID4gPiA+ICAJX19kcm1fYXRvbWljX2hlbHBl cl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShjcnRjLCAmdmttc19zdGF0ZS0+YmFzZSk7Cj4gPiA+ID4g IAo+ID4gPiA+ICsJSU5JVF9XT1JLKCZ2a21zX3N0YXRlLT5jcmNfd29yaywgdmttc19jcmNfd29y a19oYW5kbGUpOwo+ID4gPiA+ICsKPiA+ID4gPiAgCXJldHVybiAmdmttc19zdGF0ZS0+YmFzZTsK PiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtMTA0LDExICsxMjQsMTggQEAgc3RhdGlj IHZvaWQgdmttc19hdG9taWNfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiA+ID4gPiAgCQkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gPiA+ ICB7Cj4gPiA+ID4gIAlzdHJ1Y3Qgdmttc19jcnRjX3N0YXRlICp2a21zX3N0YXRlOwo+ID4gPiA+ ICsJc3RydWN0IHZrbXNfb3V0cHV0ICp2a21zX291dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0 KGNydGMpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCXZrbXNfc3RhdGUgPSB0b192a21zX2NydGNfc3Rh dGUoc3RhdGUpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19k ZXN0cm95X3N0YXRlKHN0YXRlKTsKPiA+ID4gPiAtCWtmcmVlKHZrbXNfc3RhdGUpOwo+ID4gPiA+ ICsKPiA+ID4gPiArCWlmICh2a21zX3N0YXRlKSB7Cj4gPiA+ID4gKwkJZmx1c2hfd29ya3F1ZXVl KHZrbXNfb3V0LT5jcmNfd29ya3EpOwo+ID4gPiAKPiA+ID4gSSdtIGEgbGl0dGxlIHdvcnJpZWQg YWJvdXQgdGhpcyBiaXQuIFNpbmNlIHRoZSB3b3JrcXVldWUgaXMgcGVyLW91dHB1dCwgaXMgaXQK PiA+ID4gcG9zc2libGUgeW91J2xsIGJlIHdhaXRpbmcgZm9yIG1vcmUgZnJhbWVzIHRvIGNvbXBs ZXRlIHRoYW4geW91IG5lZWQgdG8gYmU/Cj4gPiA+IAo+ID4gCj4gPiBJIHNlZSwgbWF5YmUgSSBz aG91bGQgZmx1c2ggcGVyIHdvcmtfc3RydWN0IGluc3RlYWQ/Cj4gCj4gWWVhaCwgdGhhdCB3b3Vs ZCBtYWtlIG1vcmUgc2Vuc2UgSU1PLgo+IAo+ID4gCj4gPiA+ID4gKwkJZHJtX2ZyYW1lYnVmZmVy X3B1dCgmdmttc19zdGF0ZS0+ZGF0YS5mYik7Cj4gPiA+ID4gKwkJbWVtc2V0KCZ2a21zX3N0YXRl LT5kYXRhLCAwLCBzaXplb2Yoc3RydWN0IHZrbXNfY3JjX2RhdGEpKTsKPiA+ID4gPiArCQlrZnJl ZSh2a21zX3N0YXRlKTsKPiA+ID4gPiArCX0KPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyB2a21zX2NydGNfZnVuY3MgPSB7Cj4g PiA+ID4gQEAgLTEyMCw2ICsxNDcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1 bmNzIHZrbXNfY3J0Y19mdW5jcyA9IHsKPiA+ID4gPiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSAg ID0gdmttc19hdG9taWNfY3J0Y19kZXN0cm95X3N0YXRlLAo+ID4gPiA+ICAJLmVuYWJsZV92Ymxh bmsJCT0gdmttc19lbmFibGVfdmJsYW5rLAo+ID4gPiA+ICAJLmRpc2FibGVfdmJsYW5rCQk9IHZr bXNfZGlzYWJsZV92YmxhbmssCj4gPiA+ID4gKwkuc2V0X2NyY19zb3VyY2UJCT0gdmttc19zZXRf Y3JjX3NvdXJjZSwKPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gIHN0YXRpYyB2b2lkIHZr bXNfY3J0Y19hdG9taWNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPiBAQCAt MTM0LDI2ICsxNjIsMzcgQEAgc3RhdGljIHZvaWQgdmttc19jcnRjX2F0b21pY19kaXNhYmxlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPiAgCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7 Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHZrbXNfY3J0Y19hdG9t aWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiA+ICsJCQkJICAgc3RydWN0IGRy bV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0 IHZrbXNfb3V0cHV0ICp2a21zX291dHB1dCA9IGRybV9jcnRjX3RvX3ZrbXNfb3V0cHV0KGNydGMp Owo+ID4gPiA+ICsKPiA+ID4gPiArCXNwaW5fbG9ja19pcnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsK PiA+ID4gCj4gPiA+IEhtbSwgeW91IGNhbid0IGxvY2sgYWNyb3NzIGF0b21pY19iZWdpbi9mbHVz aC4gV2hhdCBpcyB0aGlzIHByb3RlY3RpbmcgYWdhaW5zdD8KPiA+ID4gCj4gPiAKPiA+IEkgZGlk IHRoaXMgcGVyIERhbmllbCByZWNvbW1lbmRhdGlvbjoKPiA+IDEtIHNwaW5fbG9ja19pcnEgLT4g dmttc19jcnRjX2F0b21pY19iZWdpbgo+ID4gMi0gdXBkYXRlIHZrbXNfY3JjX2RhdGEgYW5kIGdl dCByZWYgdG8gZmIgLT4gdmttc19wcmltYXJ5X3BsYW5lX3VwZGF0ZQo+ID4gMy0gc3Bpbl91bmxv Y2tfaXJxIGFmdGVyIHZibGFuayBldmVudCAtPiB2a21zX2NydGNfYXRvbWljX2ZsdXNoCj4gCj4g SSB0aGluayBJJ20gaW50ZXJwcmV0aW5nIGhpcyBtYWlsIGEgbGl0dGxlIGRpZmZlcmVudGx5LiBU aGUgcG9pbnQgb2YgdGhlCj4gc3BpbmxvY2sgaXMgdG8gcHJvdGVjdCB0aGUgcG9pbnRlciB0byB0 aGUgY3JjX2RhdGEgaW4gdmttc19jcnRjIChyaWdodCBub3cgaXQncwo+IG5vdCBhIHBvaW50ZXIs IGJ1dCBpdCBzaG91bGQgYmUpLgo+IAo+IFNvIEkgdGhpbmsgeW91IG5lZWQgdG8gZG8gdGhlIGZv bGxvd2luZzoKPiAtIENoYW5nZSBjcmNfZGF0YSB0byBhIHBvaW50ZXIKPiAtIEluIHBsYW5lX3Vw ZGF0ZSwgYWxsb2NhdGUgbmV3IG1lbW9yeSB0byBob2xkIGNyY19kYXRhIGFuZCwgdW5kZXIgdGhl IHNwaW5sb2NrLAo+ICAgdXBkYXRlIHRoZSBjcmNfZGF0YSB0byBwb2ludCB0byB0aGUgbmV3IG1l bW9yeSAoYWRkIGEgV0FSTl9PTiBpZiB0aGUgcG9pbnRlcgo+ICAgaXMgTlVMTCkKPiAtIEluIHRo ZSBocnRpbWVyLCB3aGlsZSBob2xkaW5nIHRoZSBzcGlubG9jaywgdGFrZSB0aGUgcG9pbnRlciBm cm9tIGNyY19kYXRhCj4gICBpbnRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNsZWFyIHRoZSBjcnRj LT5jcmNfZGF0YSBwb2ludGVyCj4gLSBQYXNzIHRoZSBwb2ludGVyIChmcm9tIHRoZSBsb2NhbCB2 YXJpYWJsZSkgdG8gdGhlIGNyY193b3JrZXIKPiAKPiBJIGRvbid0IHRoaW5rIHlvdSBuZWVkIHRv IGhvbGQgdGhlIHNwaW5sb2NrIGFjcm9zcyB0aGUgYXRvbWljIGhvb2tzLCBqdXN0IGdyYWIKPiBp dCBpbiBwbGFuZV91cGRhdGUuCgpTbyB0aGUgbW9yZSBJIHRoaW5rIGFib3V0IHRoaXMsIEkgZG9u J3QgdGhpbmsgaXQncyBxdWl0ZSByaWdodC4gUGVyaGFwcyBJJ20KbWlzc2luZyBhbiBlbWFpbCBm cm9tIERhbmllbCwgb3IgKG1vcmUgbGlrZWx5KSBtaXN1bmRlcnN0YW5kaW5nIHdoYXQgeW91J3Jl CnRyeWluZyB0byBkby4gSG93ZXZlciwgdGhlIGVtYWlsIEkgcmVhZCBzdWdnZXN0ZWQgc3Rvcmlu ZyB0aGUgY3JjX2RhdGEKdG8gYmUgY29uc3VtZWQgYnkgdGhlIGNyYyB3b3JrZXIgaW4gdmttc19j cnRjLiBIb3dldmVyIGluIHRoaXMgcGF0Y2ggaXQncyBiZWluZwpzdG9yZWQgKGFsb25nIHdpdGgg dGhlIHdvcmsgaXRlbSkgaW4gY3J0YyBzdGF0ZS4gRnVydGhlciwgdGhlIHN0YXRlIGNhbm5vdCBi ZQpkZXN0cm95ZWQgd2l0aG91dCBjb21wbGV0aW5nIHRoZSBjcmNfd29yaywgd2hpY2gga2luZCBv ZiBkZWZlYXRzIHRoZSBwdXJwb3NlIG9mCnRoZSB3b3JrcXVldWUgaW4gdGhlIGZpcnN0IHBsYWNl LgoKU3RvcmluZyBhIGNvcHkgb2YgdGhlIGNyY19kYXRhIGluIGNydGMgYWxsb3dzIHlvdSB0byBm cmVlIHRoZSBjcnRjX3N0YXRlLCBzbyB5b3UKY2FuIHN0YXJ0IHdvcmtpbmcgb24gdGhlIG5leHQg ZnJhbWUgd2hpbGUgdGhlIGNyYyB3b3JrZXIgaXMgc2NoZWR1bGVkIGFuZCBwaWNrcwp1cCB0aGUg Y3JjX2RhdGEgZnJvbSBjcnRjLiBTdG9yaW5nIHRoZSBjcmNfZGF0YSBpbiBjcnRjX3N0YXRlIGFu ZCB3YWl0aW5nIGZvcgp0aGUgd29yayB0byBmaW5pc2ggaXMgZWFzaWVyIHNpbmNlIHlvdSBkb24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNvcHlpbmcgYW5kCmxvY2tpbmcgKHNvIG11Y2gpLiBIb3dl dmVyLCBpdCBzZWVtcyBsaWtlIHdlJ3JlIGRvaW5nIGJvdGggaW4gdGhpcyBwYXRjaC4KCkFnYWlu LCBJJ20gbGlrZWx5IGp1c3Qgbm90IHVuZGVyc3RhbmRpbmcgd2hhdCB0aGUgZ29hbCBvZiB0aGlz IGlzLCBzbyBhbnkKY2xhcmlmaWNhdGlvbiB3b3VsZCBiZSBncmVhdGx5IGFwcHJlY2lhdGVkIDop CgpTZWFuCgo+IAo+IFNlYW4KPiAKPiA+IAo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICBz dGF0aWMgdm9pZCB2a21zX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiA+ID4gPiAgCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4g PiA+ID4gIHsKPiA+ID4gPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPiA+ID4gKwlzdHJ1Y3Qg dmttc19vdXRwdXQgKnZrbXNfb3V0cHV0ID0gZHJtX2NydGNfdG9fdmttc19vdXRwdXQoY3J0Yyk7 Cj4gPiA+ID4gIAo+ID4gPiA+ICAJaWYgKGNydGMtPnN0YXRlLT5ldmVudCkgewo+ID4gPiA+IC0J CXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiA+ID4g PiArCQlzcGluX2xvY2soJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7Cj4gPiA+IAo+ID4gPiBXaGF0 J3MgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBjaGFuZ2U/Cj4gPiA+IAo+ID4gCj4gPiBobSBJ IGFtIG5vdCBzdXJlIGlmIHRoaXMgaXMgY29ycmVjdCwgYnV0IEkgYXNzdW1lIGJlY2F1c2Ugc3Bp bl9sb2NrX2lycSBpbiBhdG9taWNfYmVnaW4KPiA+IHdvdWxkIGRpc2FibGUgaW50ZXJydXB0cyBh bmQgc2luY2UgdGhpcyBpcyBiZWZvcmUgd2UgdW5sb2NrIHZrbXNfb3V0cHV0LT5sb2NrIHdpdGgg Cj4gPiBzcGluX3VubG9ja19pcnEgc28gaXJxc2F2ZSBoZXJlIGlzIG5vdCBuZWNlc3Nhcnk/Cj4g PiAKPiAKPiBPbmNlIHlvdSBsaW1pdCB0aGUgc2NvcGUgb2YgdGhlIHNwaW5sb2NrIGFib3ZlLCB5 b3Ugd2lsbCB3YW50IHRvIHJldmVydCB0aGlzCj4gY2hhbmdlLgo+IAo+ID4gPiA+ICAKPiA+ID4g PiAgCQlpZiAoZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSAhPSAwKQo+ID4gPiA+ICAJCQlkcm1f Y3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOwo+ID4gPiA+ ICAJCWVsc2UKPiA+ID4gPiAgCQkJZHJtX2NydGNfYXJtX3ZibGFua19ldmVudChjcnRjLCBjcnRj LT5zdGF0ZS0+ZXZlbnQpOwo+ID4gPiA+ICAKPiA+ID4gPiAtCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPiA+ID4gPiArCQlzcGluX3VubG9j aygmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsKPiA+ID4gPiAgCj4gPiA+ID4gIAkJY3J0Yy0+c3Rh dGUtPmV2ZW50ID0gTlVMTDsKPiA+ID4gPiAgCX0KPiA+ID4gPiArCj4gPiA+ID4gKwlzcGluX3Vu bG9ja19pcnEoJnZrbXNfb3V0cHV0LT5sb2NrKTsKPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4g PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3Mgdmttc19jcnRjX2hl bHBlcl9mdW5jcyA9IHsKPiA+ID4gPiArCS5hdG9taWNfYmVnaW4JPSB2a21zX2NydGNfYXRvbWlj X2JlZ2luLAo+ID4gPiA+ICAJLmF0b21pY19mbHVzaAk9IHZrbXNfY3J0Y19hdG9taWNfZmx1c2gs Cj4gPiA+ID4gIAkuYXRvbWljX2VuYWJsZQk9IHZrbXNfY3J0Y19hdG9taWNfZW5hYmxlLAo+ID4g PiA+ICAJLmF0b21pY19kaXNhYmxlCT0gdmttc19jcnRjX2F0b21pY19kaXNhYmxlLAo+ID4gPiA+ IEBAIC0xNjIsNiArMjAxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJf ZnVuY3Mgdmttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKPiA+ID4gPiAgaW50IHZrbXNfY3J0Y19p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4g PiAgCQkgICBzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCBzdHJ1Y3QgZHJtX3BsYW5lICpjdXJz b3IpCj4gPiA+ID4gIHsKPiA+ID4gPiArCXN0cnVjdCB2a21zX291dHB1dCAqdmttc19vdXQgPSBk cm1fY3J0Y190b192a21zX291dHB1dChjcnRjKTsKPiA+ID4gPiAgCWludCByZXQ7Cj4gPiA+ID4g IAo+ID4gPiA+ICAJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNydGMsIHBy aW1hcnksIGN1cnNvciwKPiA+ID4gPiBAQCAtMTczLDUgKzIxMyw5IEBAIGludCB2a21zX2NydGNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ ID4gIAo+ID4gPiA+ICAJZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAmdmttc19jcnRjX2hlbHBl cl9mdW5jcyk7Cj4gPiA+ID4gIAo+ID4gPiA+ICsJc3Bpbl9sb2NrX2luaXQoJnZrbXNfb3V0LT5s b2NrKTsKPiA+ID4gPiArCj4gPiA+ID4gKwl2a21zX291dC0+Y3JjX3dvcmtxID0gYWxsb2Nfb3Jk ZXJlZF93b3JrcXVldWUoInZrbXNfY3JjX3dvcmtxIiwgMCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICAJ cmV0dXJuIHJldDsKPiA+ID4gPiAgfQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYwo+ID4g PiA+IGluZGV4IDM3YWEyZWYzM2IyMS4uNWQ3OGJkOTdlNjljIDEwMDY0NAo+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2Rydi5jCj4gPiA+ID4gQEAgLTQ2LDYgKzQ2LDcgQEAgc3RhdGljIHZv aWQgdmttc19yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ID4gIAlwbGF0Zm9y bV9kZXZpY2VfdW5yZWdpc3Rlcih2a21zLT5wbGF0Zm9ybSk7Cj4gPiA+ID4gIAlkcm1fbW9kZV9j b25maWdfY2xlYW51cCgmdmttcy0+ZHJtKTsKPiA+ID4gPiAgCWRybV9kZXZfZmluaSgmdmttcy0+ ZHJtKTsKPiA+ID4gPiArCWRlc3Ryb3lfd29ya3F1ZXVlKHZrbXMtPm91dHB1dC5jcmNfd29ya3Ep Owo+ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+ICBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIg dmttc19kcml2ZXIgPSB7Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21z L3ZrbXNfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+ID4gaW5k ZXggYmY4MTFkMGVjMzQ5Li45NTk4NTY0OTc2OGMgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfZHJ2LmgKPiA+ID4gPiBAQCAtMjAsMTIgKzIwLDIzIEBAIHN0YXRpYyBjb25zdCB1 MzIgdmttc19mb3JtYXRzW10gPSB7Cj4gPiA+ID4gIAlEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4g PiA+ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiArc3RydWN0IHZrbXNfY3JjX2RhdGEgewo+ID4gPiA+ ICsJc3RydWN0IGRybV9yZWN0IHNyYzsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg ZmI7Cj4gPiA+ID4gK307Cj4gPiA+ID4gKwo+ID4gPiA+ICAvKioKPiA+ID4gPiAgICogdmttc19j cnRjX3N0YXRlIC0gRHJpdmVyIHNwZWNpZmljIENSVEMgc3RhdGUKPiA+ID4gPiAgICogQGJhc2U6 IGJhc2UgQ1JUQyBzdGF0ZQo+ID4gPiA+ICsgKiBAY3JjX3dvcms6IHdvcmsgc3RydWN0IHRvIGNv bXB1dGUgYW5kIGFkZCBDUkMgZW50cmllcwo+ID4gPiA+ICsgKiBAZGF0YTogZGF0YSByZXF1aXJl ZCBmb3IgQ1JDIGNvbXB1dGF0aW9uCj4gPiA+ID4gKyAqIEBuX2ZyYW1lOiBmcmFtZSBudW1iZXIg Zm9yIGNvbXB1dGVkIENSQwo+ID4gPiA+ICAgKi8KPiA+ID4gPiAgc3RydWN0IHZrbXNfY3J0Y19z dGF0ZSB7Cj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgYmFzZTsKPiA+ID4gPiArCXN0 cnVjdCB3b3JrX3N0cnVjdCBjcmNfd29yazsKPiA+ID4gPiArCXN0cnVjdCB2a21zX2NyY19kYXRh IGRhdGE7Cj4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgbl9mcmFtZTsKPiA+ID4gPiAgfTsKPiA+ID4g PiAgCj4gPiA+ID4gIHN0cnVjdCB2a21zX291dHB1dCB7Cj4gPiA+ID4gQEAgLTM1LDYgKzQ2LDEx IEBAIHN0cnVjdCB2a21zX291dHB1dCB7Cj4gPiA+ID4gIAlzdHJ1Y3QgaHJ0aW1lciB2Ymxhbmtf aHJ0aW1lcjsKPiA+ID4gPiAgCWt0aW1lX3QgcGVyaW9kX25zOwo+ID4gPiA+ICAJc3RydWN0IGRy bV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4gPiA+ID4gKwlib29sIGNyY19lbmFibGVk Owo+ID4gPiAKPiA+ID4gV2hlcmUgaXMgdGhpcyBzZXQgdG8gdHJ1ZT8KPiA+ID4gCj4gPiAKPiA+ IE9oIHNvcnJ5IEkgZm9yZ290IHRvIGFkZCBhIHZrbXNfY3JjLmMgd2hpY2ggc2V0cyBjcmNfZW5h YmxlZCBpbgo+ID4gc2V0X2NyY19zb3VyY2UgY2FsbGJhY2shIAo+ID4gCj4gPiBJJ2xsIHdvcmsg b24gZml4aW5nIHRoZSBpc3N1ZXMgeW91IG1lbnRpb25lZCBoZXJlIGFuZCB0aGUgb3RoZXIgcGF0 Y2hlcwo+ID4gYXMgd2VsbCwgdGhhbmsgeW91IHNvIG11Y2ggYWdhaW4hCj4gCj4gVGhhbmtzIGZv ciB3b3JraW5nIHRocm91Z2ggdGhpcyEKPiAKPiBTZWFuCj4gCj4gPiBIYW5lZW4KPiA+IAo+ID4g PiA+ICsJLyogb3JkZXJlZCB3cSBmb3IgY3JjX3dvcmsgKi8KPiA+ID4gPiArCXN0cnVjdCB3b3Jr cXVldWVfc3RydWN0ICpjcmNfd29ya3E7Cj4gPiA+ID4gKwkvKiBwcm90ZWN0cyBjb25jdXJyZW50 IGFjY2VzcyB0byBjcmNfZGF0YSAqLwo+ID4gPiA+ICsJc3BpbmxvY2tfdCBsb2NrOwo+ID4gPiA+ ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiAgc3RydWN0IHZrbXNfZGV2aWNlIHsKPiA+ID4gPiBAQCAt OTUsNCArMTExLDkgQEAgdm9pZCAqdmttc19nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaik7Cj4gPiA+ID4gIAo+ID4gPiA+ICB2b2lkIHZrbXNfZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7Cj4gPiA+ID4gIAo+ID4gPiA+ICsvKiBDUkMgU3VwcG9ydCAqLwo+ ID4gPiA+ICtpbnQgdmttc19zZXRfY3JjX3NvdXJjZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGNv bnN0IGNoYXIgKnNyY19uYW1lLAo+ID4gPiA+ICsJCQlzaXplX3QgKnZhbHVlc19jbnQpOwo+ID4g PiA+ICt2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICAjZW5kaWYgLyogX1ZLTVNfRFJWX0hfICovCj4gPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfcGxhbmUuYwo+ID4gPiA+IGluZGV4IGFhZjdjMzVmYWVkNi4uMWUwZWU4 Y2E4YmQ2IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxh bmUuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYwo+ID4g PiA+IEBAIC0yNCw2ICsyNCwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5j cyB2a21zX3BsYW5lX2Z1bmNzID0gewo+ID4gPiA+ICBzdGF0aWMgdm9pZCB2a21zX3ByaW1hcnlf cGxhbmVfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ICAJCQkJICAgICAg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ID4gPiA+ICB7Cj4gPiA+ID4gKwlz dHJ1Y3Qgdmttc19jcnRjX3N0YXRlICpzdGF0ZTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoIXBs YW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0YXRlLT5mYikKPiA+ID4gPiArCQlyZXR1cm47 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3RhdGUgPSB0b192a21zX2NydGNfc3RhdGUocGxhbmUtPnN0 YXRlLT5jcnRjLT5zdGF0ZSk7Cj4gPiA+ID4gKwltZW1jcHkoJnN0YXRlLT5kYXRhLnNyYywgJnBs YW5lLT5zdGF0ZS0+c3JjLCBzaXplb2Yoc3RydWN0IGRybV9yZWN0KSk7Cj4gPiA+ID4gKwltZW1j cHkoJnN0YXRlLT5kYXRhLmZiLCBwbGFuZS0+c3RhdGUtPmZiLAo+ID4gPiA+ICsJICAgICAgIHNp emVvZihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4gPiA+ID4gKwlkcm1fZnJhbWVidWZmZXJf Z2V0KCZzdGF0ZS0+ZGF0YS5mYik7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4gIHN0YXRp YyBpbnQgdmttc19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g PiA+ID4gLS0gCj4gPiA+ID4gMi4xNy4xCj4gPiA+ID4gCj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4g U2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKPiAKPiAt LSAKPiBTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwoK LS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=