From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haneen Mohammed Subject: Re: [PATCH 2/2] drm/vkms: Compute CRC with Cursor Plane Date: Mon, 13 Aug 2018 23:04:11 +0300 Message-ID: <20180813200411.GA17331@haneenDRM> References: <44b546fedbcf65fd20f7a65d5443fbb50493cf32.1533526327.git.hamohammed.sa@gmail.com> <20180807163336.GA3008@phenom.ffwll.local> <20180808035317.GA1708@haneenDRM> <20180808082327.GH3008@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-x244.google.com (mail-qt0-x244.google.com [IPv6:2607:f8b0:400d:c0d::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9597389BFB for ; Mon, 13 Aug 2018 20:04:15 +0000 (UTC) Received: by mail-qt0-x244.google.com with SMTP id e19-v6so18805293qtp.8 for ; Mon, 13 Aug 2018 13:04:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180808082327.GH3008@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: rodrigosiqueiramelo@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBdWcgMDgsIDIwMTggYXQgMTA6MjM6MjdBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBXZWQsIEF1ZyAwOCwgMjAxOCBhdCAwNjo1MzoxN0FNICswMzAwLCBIYW5lZW4g TW9oYW1tZWQgd3JvdGU6Cj4gPiBPbiBUdWUsIEF1ZyAwNywgMjAxOCBhdCAwNjozMzozNlBNICsw MjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBNb24sIEF1ZyAwNiwgMjAxOCBhdCAw Njo1ODoyOUFNICswMzAwLCBIYW5lZW4gTW9oYW1tZWQgd3JvdGU6Cj4gPiA+ID4gVGhpcyBwYXRj aCBjb21wdXRlIENSQyBmb3Igb3V0cHV0IGZyYW1lIHdpdGggY3Vyc29yIGFuZCBwcmltYXJ5IHBs YW5lLgo+ID4gPiA+IEJsZW5kIGN1cnNvciB3aXRoIHByaW1hcnkgcGxhbmUgYW5kIGNvbXB1dGUg Q1JDIG9uIHRoZSByZXN1bHRlZCBmcmFtZS4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBIYW5lZW4gTW9oYW1tZWQgPGhhbW9oYW1tZWQuc2FAZ21haWwuY29tPgo+ID4gPiAKPiA+ID4g TmljZSEKPiA+ID4gCj4gPiA+IEkgYXNzdW1lIHdpdGggdGhpcyB5b3UncmUgcGFzc2luZyBhbGwg dGhlIGNyYyBiYXNlZCBjdXJzb3IgdGVzdHMgaW4gaWd0Pwo+ID4gPiBJZiBzbywgcGxlYXNlIG1l bnRpb24gdGhpcyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UsIHNvIHRoYXQgdGhlcmUncyBhIHJlY29y ZAo+ID4gPiBvZiB0aGUgdGVzdGluZyBkb25lIG9uIHRoaXMuCj4gPiA+IAo+ID4gCj4gPiBTdXJl LCBJJ2xsIHVwZGF0ZSB0aGUgY29tbWl0IG1lc3NhZ2UuCj4gPiBJcyB0aGVyZSBhbnkgb3RoZXIg Y2hhbmdlIEkgc2hvdWxkIGFkZC9maXggdG8gdGhpcyBwYXRjaHNldD8KPiA+IAo+ID4gPiBPbmUg ZmFpcmx5IGh1Z2UgZ2FwIHdlIGlpcmMgaGF2ZSBpbiBvdXIgY3Vyc29yIHRlc3RpbmcgaXMgdGhh dCB0aGVyZSdzIG5vdAo+ID4gPiBtdWNoIChpZiBhbnk/KSBhbHBoYSBibGVuZGluZyBjb3ZlcmFn ZS4gV2Uga2luZGEgbmVlZCB0aGF0IHRvIG1ha2Ugc3VyZQo+ID4gPiB0aGlzIGFsbCB3b3JrcyBj b3JyZWN0bHkuIFRoZSB1c3VhbCB0cmljayBpcyB0byBvbmx5IGNoZWNrIHRoZSBleHRyZW1lCj4g PiA+IGFscGhhIHZhbHVlcywgaS5lLiBmdWxseSBvcGFxdWUgYW5kIGZ1bGx5IHRyYW5zcGFyZW50 LCBzaW5jZSBpbnRlcm1lZGlhdGUKPiA+ID4gdmFsdWVzIGFyZSBhZmZlY3RlZCBieSBody1zcGVj aWZpYyByb3VuZGluZyBtb2Rlcy4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJt L3ZrbXMvdmttc19jcmMuYyAgIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oICAgfCAgIDUgKy0KPiA+ID4g PiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIHwgIDEwICstCj4gPiA+ID4gIDMg ZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQo+ID4gPiA+ IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4gPiA+IGluZGV4IDM3ZDcxN2YzOGUz Yy4uNDg1M2E3MzlhZTVhIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21z L3ZrbXNfY3JjLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5j Cj4gPiA+ID4gQEAgLTEsMzYgKzEsMTM3IEBACj4gPiA+ID4gIC8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wCj4gPiA+ID4gICNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ID4gPiA+ICAj aW5jbHVkZSA8bGludXgvY3JjMzIuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj Lmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ID4gPiAg I2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgo+ID4gPiA+ICAKPiA+ ID4gPiAtc3RhdGljIHVpbnQzMl90IF92a21zX2dldF9jcmMoc3RydWN0IHZrbXNfY3JjX2RhdGEg KmNyY19kYXRhKQo+ID4gPiA+ICsvKioKPiA+ID4gPiArICogY29tcHV0ZV9jcmMgLSBDb21wdXRl IENSQyB2YWx1ZSBvbiBvdXRwdXQgZnJhbWUKPiA+ID4gPiArICoKPiA+ID4gPiArICogQHZhZGRy X291dDogYWRkcmVzcyB0byBmaW5hbCBmcmFtZWJ1ZmZlcgo+ID4gPiA+ICsgKiBAY3JjX291dDog ZnJhbWVidWZmZXIncyBtZXRhZGF0YQo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiByZXR1cm5zIENS QyB2YWx1ZSBjb21wdXRlZCB1c2luZyBjcmMzMiBvbiB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mCj4g PiA+ID4gKyAqIHRoZSBmaW5hbCBmcmFtZWJ1ZmZlciBhdCB2YWRkcl9vdXQKPiA+ID4gPiArICov Cj4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBjb21wdXRlX2NyYyh2b2lkICp2YWRkcl9vdXQsIHN0 cnVjdCB2a21zX2NyY19kYXRhICpjcmNfb3V0KQo+ID4gPiA+ICB7Cj4gPiA+ID4gLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZjcmNfZGF0YS0+ZmI7Cj4gPiA+ID4gKwlpbnQgaSwgc3Jj X29mZnNldDsKPiA+ID4gPiArCWludCB4X3NyYyA9IGNyY19vdXQtPnNyYy54MSA+PiAxNjsKPiA+ ID4gPiArCWludCB5X3NyYyA9IGNyY19vdXQtPnNyYy55MSA+PiAxNjsKPiA+ID4gPiArCWludCBo X3NyYyA9IGRybV9yZWN0X2hlaWdodCgmY3JjX291dC0+c3JjKSA+PiAxNjsKPiA+ID4gPiArCWlu dCB3X3NyYyA9IGRybV9yZWN0X3dpZHRoKCZjcmNfb3V0LT5zcmMpID4+IDE2Owo+ID4gPiA+ICsJ aW50IHNpemVfYnl0ZSA9IHdfc3JjICogY3JjX291dC0+Y3BwOwo+ID4gPiA+ICsJdTMyIGNyYyA9 IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJZm9yIChpID0geV9zcmM7IGkgPCB5X3NyYyArIGhfc3Jj OyBpKyspIHsKPiA+ID4gPiArCQlzcmNfb2Zmc2V0ID0gY3JjX291dC0+b2Zmc2V0Cj4gPiA+ID4g KwkJCSAgICAgKyAoaSAqIGNyY19vdXQtPnBpdGNoKQo+ID4gPiA+ICsJCQkgICAgICsgKHhfc3Jj ICogY3JjX291dC0+Y3BwKTsKPiA+ID4gPiArCQljcmMgPSBjcmMzMl9sZShjcmMsIHZhZGRyX291 dCArIHNyY19vZmZzZXQsIHNpemVfYnl0ZSk7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJcmV0dXJuIGNyYzsKPiA+ID4gPiArfQo+ID4gPiA+ICsKCkhleSBEYW5pZWwsIAoKV2hlbiBJ IGNoYW5nZSB0aGUgYWJvdmUgZnVuY3Rpb24gImNvbXB1dGVfY3JjIiB0byBjb21wdXRlIHRoZSBD UkMgZm9yCmVhY2ggcGl4ZWwgc28gd2UgY2FuIGNsZWFyIHRoZSBBbHBoYSB2YWx1ZSBiZWZvcmUg Y29tcHV0aW5nIHRoZSBDUkMgYXMgYmVsbG93LAp0aGUgdGVzdCAibm9uYmxvY2tpbmctY3JjLXBp cGUtQS1mcmFtZS1zZXF1ZW5jZSIgc29tZXRpbWVzIGZhaWxlcyBhbmQKc29tZXRpbWVzIHBhc3Nl cy4gU2hvdWxkIEkgc3RpbGwgY29udGludWUgd2l0aCB0aGUgY2hhbmdlLCBvciBsZWF2ZSBpdAph cyBpdCBpcz8KCi0tLS0tLS0tLS0tLS0tLS0tIHZrbXNfY3JjLmMgLS0tLS0tLS0tLS0tLS0tLS0K CWZvciAoaSA9IHlfc3JjOyBpIDwgeV9zcmMgKyBoX3NyYzsgKytpKSB7CgkJZm9yIChqID0geF9z cmM7IGogPCB4X3NyYyArIHdfc3JjOyArK2opIHsKCQkJc3JjX29mZnNldCA9IGNyY19vdXQtPm9m ZnNldAoJCQkJICAgICArIChpICogY3JjX291dC0+cGl0Y2gpCgkJCQkgICAgICsgKGogKiBjcmNf b3V0LT5jcHApOwoJCQltZW1zZXQodmFkZHJfb3V0ICsgc3JjX29mZnNldCArIDI0LCAwLCAgOCk7 CgkJCWNyYyA9IGNyYzMyX2xlKGNyYywgdmFkZHJfb3V0ICsgc3JjX29mZnNldCwgc2l6ZW9mKHUz MikpOwoJCX0KCX0KLS0tLS0tLS0tLS0tLS0tLS0gdmttc19jcmMuYyAtLS0tLS0tLS0tLS0tLS0t LQoKVGhhbmsgeW91LApIYW5lZW4KCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBibGVuZCAtIGJl bG5kIHZhbHVlIGF0IHZhZGRyX3NyYyB3aXRoIHZhbHVlIGF0IHZhZGRyX2RzdAo+ID4gPiA+ICsg KiBAdmFkZHJfZHN0OiBkZXN0aW5hdGlvbiBhZGRyZXNzCj4gPiA+ID4gKyAqIEB2YWRkcl9zcmM6 IHNvdXJjZSBhZGRyZXNzCj4gPiA+ID4gKyAqIEBjcmNfZHN0OiBkZXN0aW5hdGlvbiBmcmFtZWJ1 ZmZlcidzIG1ldGFkYXRhCj4gPiA+ID4gKyAqIEBjcmNfc3JjOiBzb3VyY2UgZnJhbWVidWZmZXIn cyBtZXRhZGF0YQo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBCbGVuZCB2YWx1ZSBhdCB2YWRkcl9z cmMgd2l0aCB2YWx1ZSBhdCB2YWRkcl9kc3QuCj4gPiA+ID4gKyAqIEN1cnJlbnRseSwgdGhpcyBm dW5jdGlvbiB3cml0ZSB2YWx1ZSBhdCB2YWRkcl9zcmMgb24gdmFsdWUKPiA+ID4gPiArICogYXQg dmFkZHJfZHN0IHVzaW5nIGJ1ZmZlcidzIG1ldGFkYXRhIHRvIGxvY2F0ZSB0aGUgbmV3IHZhbHVl cwo+ID4gPiA+ICsgKiBmcm9tIHZhZGRyX3NyYyBhbmQgdGhlaXIgZGlzdGVuYXRpb24gYXQgdmFk ZHJfZHN0Lgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBUb2RvOiBVc2UgdGhlIGFscGhhIHZhbHVl IHRvIGJsZW5kIHZhZGRyX3NyYyB3aXRoIHZhZGRyX2RzdAo+ID4gPiA+ICsgKgkgaW5zdGVhZCBv ZiBvdmVyd3JpdGluZyBpdC4KPiA+ID4gCj4gPiA+IEFub3RoZXIgdG9kbzogV2UgbXVzdCBjbGVh ciB0aGUgYWxwaGEgY2hhbm5lbCBpbiB0aGUgcmVzdWx0IGFmdGVyCj4gPiA+IGJsZW5kaW5nLiBU aGlzIGFsc28gYXBwbGllcyB0byB0aGUgcHJpbWFyeSBwbGFuZSwgd2hlcmUgdGhlIFhSR0IgZm9y IHRoZQo+ID4gPiBwaXhlbCBmb3JtYXQgbWFuZGF0ZXMgdGhhdCB3ZSBlbnRpcmVseSBpZ25vcmUg dGhlIGFscGhhIGNoYW5uZWwuCj4gPiA+IAo+ID4gPiBUaGlzIGlzIGFsc28gc29tZXRoaW5nIHdl IHNob3VsZCBwcm9iYWJseSBoYXZlIGFuIGlndCB0ZXN0Y2FzZSBmb3IuCj4gPiA+IAo+ID4gPiBT aW5jZSB0aGVyZSdzIGEgZmV3IG9wZW4gZW5kczogSG93IG1hbnkgd2Vla3MgYXJlIGxlZnQgaW4g eW91ciBvdXRyZWFjaHkKPiA+ID4gaW50ZXJuc2hpcD8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhh dCBhdCBsZWFzdCBhbGwgdGhlIGlzc3VlcyBhcmUgY292ZXJlZAo+ID4gPiBpbiBhIHZrbXMgdG9k byBmaWxlLiBXb3VsZCBiZSBncmVhdCB0byBhZGQgdGhhdCBpbgo+ID4gPiBEb2N1bWVudGF0aW9u L2dwdS92a21zLnJzdCwgbGlrZSB3ZSBoYXZlIGZvciBvdGhlciBkcml2ZXJzLgo+ID4gPiAtRGFu aWVsCj4gPiA+IAo+ID4gCj4gPiBJJ3ZlIG9uZSBtb3JlIHdlZWshIEkgY2FuIHVzZSB0aGlzIHdl ZWsgdG8gcHJlcGFyZSB0aGUgdG9kbyBmaWxlIGFuZAo+ID4gZmluYWxpemUgdGhpcyBwYXRjaD8K PiAKPiBZZWFoIHNvdW5kcyBsaWtlIHRoZSBwZXJmZWN0IHdyYXAtdXAgd29yay4gU2luY2UgdGhp cyB3b250IGJlIGVub3VnaCB0bwo+IGZpbmlzaCB0aGUgY3Vyc29yIHdvcmsgaXQgd291bGQgYmUg Z29vZCB0byBoaWRlIHRoZSBjdXJzb3Igc2V0dXAgYmVoaW5kIGEKPiBtb2R1bGUgb3B0aW9uLCBw ZXJoYXBzICJlbmFibGVfY3Vyc29yIiBvciBzby4gVGhhdCB3YXkgd2Ugd29udCBoYXZlCj4gbm90 LXRvdGFsbHktY29ycmVjdCBmZWF0dXJlcyBlbmFibGVkLiBBbmQgZW5hYmxpbmcvZGlzYWJsaW5n IGN1cnNvcgo+IHN1cHBvcnQgY291bGQgYmUgdXNlZnVsIGZvciB0ZXN0aW5nLgo+IC1EYW5pZWwK PiAKPiA+IAo+ID4gVGhhbmsgeW91LAo+ID4gSGFuZWVuCj4gPiAKPiA+ID4gPiArICovCj4gPiA+ ID4gK3N0YXRpYyB2b2lkIGJsZW5kKHZvaWQgKnZhZGRyX2RzdCwgdm9pZCAqdmFkZHJfc3JjLAo+ ID4gPiA+ICsJCSAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kc3QsCj4gPiA+ID4gKwkJICBz dHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX3NyYykKPiA+ID4gPiArewo+ID4gPiA+ICsJaW50IGks IGosIGpfZHN0LCBpX2RzdDsKPiA+ID4gPiArCWludCBvZmZzZXRfc3JjLCBvZmZzZXRfZHN0Owo+ ID4gPiA+ICsKPiA+ID4gPiArCWludCB4X3NyYyA9IGNyY19zcmMtPnNyYy54MSA+PiAxNjsKPiA+ ID4gPiArCWludCB5X3NyYyA9IGNyY19zcmMtPnNyYy55MSA+PiAxNjsKPiA+ID4gPiArCj4gPiA+ ID4gKwlpbnQgeF9kc3QgPSBjcmNfc3JjLT5kc3QueDE7Cj4gPiA+ID4gKwlpbnQgeV9kc3QgPSBj cmNfc3JjLT5kc3QueTE7Cj4gPiA+ID4gKwlpbnQgaF9kc3QgPSBkcm1fcmVjdF9oZWlnaHQoJmNy Y19zcmMtPmRzdCk7Cj4gPiA+ID4gKwlpbnQgd19kc3QgPSBkcm1fcmVjdF93aWR0aCgmY3JjX3Ny Yy0+ZHN0KTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpbnQgeV9saW1pdCA9IHlfc3JjICsgaF9kc3Q7 Cj4gPiA+ID4gKwlpbnQgeF9saW1pdCA9IHhfc3JjICsgd19kc3Q7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJZm9yIChpID0geV9zcmMsIGlfZHN0ID0geV9kc3Q7IGkgPCB5X2xpbWl0OyArK2kpIHsKPiA+ ID4gPiArCQlmb3IgKGogPSB4X3NyYywgal9kc3QgPSB4X2RzdDsgaiA8IHhfbGltaXQ7ICsraikg ewo+ID4gPiA+ICsJCQlvZmZzZXRfZHN0ID0gY3JjX2RzdC0+b2Zmc2V0Cj4gPiA+ID4gKwkJCQkg ICAgICsgKGlfZHN0ICogY3JjX2RzdC0+cGl0Y2gpCj4gPiA+ID4gKwkJCQkgICAgICsgKGpfZHN0 KysgKiBjcmNfZHN0LT5jcHApOwo+ID4gPiA+ICsJCQlvZmZzZXRfc3JjID0gY3JjX3NyYy0+b2Zm c2V0Cj4gPiA+ID4gKwkJCQkgICAgICsgKGkgKiBjcmNfc3JjLT5waXRjaCkKPiA+ID4gPiArCQkJ CSAgICAgKyAoaiAqIGNyY19zcmMtPmNwcCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCQltZW1jcHko dmFkZHJfZHN0ICsgb2Zmc2V0X2RzdCwKPiA+ID4gPiArCQkJICAgICAgIHZhZGRyX3NyYyArIG9m ZnNldF9zcmMsIHNpemVvZih1MzIpKTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwkJaV9kc3QrKzsK PiA+ID4gPiArCX0KPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHZvaWQgY29t cG9zZV9jdXJzb3Ioc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMsCj4gPiA+ID4gKwkJ CSAgIHN0cnVjdCB2a21zX2NyY19kYXRhICpwcmltYXJ5X2NyYywgdm9pZCAqdmFkZHJfb3V0KQo+ ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmN1cnNvcl9vYmo7Cj4g PiA+ID4gKwlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICpjdXJzb3Jfdmttc19vYmo7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJY3Vyc29yX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaigmY3Vyc29yX2NyYy0+ ZmIsIDApOwo+ID4gPiA+ICsJY3Vyc29yX3ZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShj dXJzb3Jfb2JqKTsKPiA+ID4gPiArCj4gPiA+ID4gKwltdXRleF9sb2NrKCZjdXJzb3Jfdmttc19v YmotPnBhZ2VzX2xvY2spOwo+ID4gPiA+ICsJaWYgKFdBUk5fT04oIWN1cnNvcl92a21zX29iai0+ dmFkZHIpKQo+ID4gPiA+ICsJCWdvdG8gb3V0Owo+ID4gPiA+ICsKPiA+ID4gPiArCWJsZW5kKHZh ZGRyX291dCwgY3Vyc29yX3ZrbXNfb2JqLT52YWRkciwgcHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMp Owo+ID4gPiA+ICsKPiA+ID4gPiArb3V0Ogo+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZjdXJzb3Jf dmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0 aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9j cmMsCj4gPiA+ID4gKwkJCSAgICAgIHN0cnVjdCB2a21zX2NyY19kYXRhICpjdXJzb3JfY3JjKQo+ ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZwcmltYXJ5 X2NyYy0+ZmI7Cj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmogPSBkcm1f Z2VtX2ZiX2dldF9vYmooZmIsIDApOwo+ID4gPiA+ICAJc3RydWN0IHZrbXNfZ2VtX29iamVjdCAq dmttc19vYmogPSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ID4gPiA+ICsJdm9pZCAq dmFkZHJfb3V0ID0ga3phbGxvYyh2a21zX29iai0+Z2VtLnNpemUsIEdGUF9LRVJORUwpOwo+ID4g PiA+ICAJdTMyIGNyYyA9IDA7Cj4gPiA+ID4gLQlpbnQgaSA9IDA7Cj4gPiA+ID4gLQl1bnNpZ25l ZCBpbnQgeCA9IGNyY19kYXRhLT5zcmMueDEgPj4gMTY7Cj4gPiA+ID4gLQl1bnNpZ25lZCBpbnQg eSA9IGNyY19kYXRhLT5zcmMueTEgPj4gMTY7Cj4gPiA+ID4gLQl1bnNpZ25lZCBpbnQgaGVpZ2h0 ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcmNfZGF0YS0+c3JjKSA+PiAxNjsKPiA+ID4gPiAtCXVuc2ln bmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZjcmNfZGF0YS0+c3JjKSA+PiAxNjsKPiA+ ID4gPiAtCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4gPiA+ID4gLQl1 bnNpZ25lZCBpbnQgc3JjX29mZnNldDsKPiA+ID4gPiAtCXVuc2lnbmVkIGludCBzaXplX2J5dGUg PSB3aWR0aCAqIGNwcDsKPiA+ID4gPiAtCXZvaWQgKnZhZGRyOwo+ID4gPiA+ICAKPiA+ID4gPiAt CW11dGV4X2xvY2soJnZrbXNfb2JqLT5wYWdlc19sb2NrKTsKPiA+ID4gPiAtCXZhZGRyID0gdmtt c19vYmotPnZhZGRyOwo+ID4gPiA+IC0JaWYgKFdBUk5fT04oIXZhZGRyKSkKPiA+ID4gPiAtCQln b3RvIG91dDsKPiA+ID4gPiArCWlmICghdmFkZHJfb3V0KSB7Cj4gPiA+ID4gKwkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBvdXRwdXQgZnJhbWUuIik7Cj4gPiA+ID4g KwkJcmV0dXJuIDA7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gIAo+ID4gPiA+IC0JZm9yIChpID0geTsg aSA8IHkgKyBoZWlnaHQ7IGkrKykgewo+ID4gPiA+IC0JCXNyY19vZmZzZXQgPSBmYi0+b2Zmc2V0 c1swXSArIChpICogZmItPnBpdGNoZXNbMF0pICsgKHggKiBjcHApOwo+ID4gPiA+IC0JCWNyYyA9 IGNyYzMyX2xlKGNyYywgdmFkZHIgKyBzcmNfb2Zmc2V0LCBzaXplX2J5dGUpOwo+ID4gPiA+ICsJ bXV0ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4gPiA+ICsJaWYgKFdBUk5fT04o IXZrbXNfb2JqLT52YWRkcikpIHsKPiA+ID4gPiArCQltdXRleF9sb2NrKCZ2a21zX29iai0+cGFn ZXNfbG9jayk7Cj4gPiA+ID4gKwkJcmV0dXJuIGNyYzsKPiA+ID4gPiAgCX0KPiA+ID4gPiAgCj4g PiA+ID4gLW91dDoKPiA+ID4gPiArCW1lbWNweSh2YWRkcl9vdXQsIHZrbXNfb2JqLT52YWRkciwg dmttc19vYmotPmdlbS5zaXplKTsKPiA+ID4gPiAgCW11dGV4X3VubG9jaygmdmttc19vYmotPnBh Z2VzX2xvY2spOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChjdXJzb3JfY3JjKQo+ID4gPiA+ICsJ CWNvbXBvc2VfY3Vyc29yKGN1cnNvcl9jcmMsIHByaW1hcnlfY3JjLCB2YWRkcl9vdXQpOwo+ID4g PiA+ICsKPiA+ID4gPiArCWNyYyA9IGNvbXB1dGVfY3JjKHZhZGRyX291dCwgcHJpbWFyeV9jcmMp Owo+ID4gPiA+ICsKPiA+ID4gPiArCWtmcmVlKHZhZGRyX291dCk7Cj4gPiA+ID4gKwo+ID4gPiA+ ICAJcmV0dXJuIGNyYzsKPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtNDQsOCArMTQ1 LDggQEAgdm9pZCB2a21zX2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp Cj4gPiA+ID4gIAlzdHJ1Y3Qgdmttc19kZXZpY2UgKnZkZXYgPSBjb250YWluZXJfb2Yob3V0LCBz dHJ1Y3Qgdmttc19kZXZpY2UsCj4gPiA+ID4gIAkJCQkJCW91dHB1dCk7Cj4gPiA+ID4gIAlzdHJ1 Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMgPSBOVUxMOwo+ID4gPiA+ICsJc3RydWN0IHZr bXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMgPSBOVUxMOwo+ID4gPiA+ICAJc3RydWN0IGRybV9wbGFu ZSAqcGxhbmU7Cj4gPiA+ID4gLQo+ID4gPiA+ICAJdTMyIGNyYzMyID0gMDsKPiA+ID4gPiAgCj4g PiA+ID4gIAlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsICZ2ZGV2LT5kcm0pIHsKPiA+ID4gPiBA QCAtNTgsMTQgKzE1OSwxNCBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPiA+ID4gPiAgCQlpZiAoZHJtX2ZyYW1lYnVmZmVyX3JlYWRfcmVmY291 bnQoJmNyY19kYXRhLT5mYikgPT0gMCkKPiA+ID4gPiAgCQkJY29udGludWU7Cj4gPiA+ID4gIAo+ ID4gPiA+IC0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7Cj4g PiA+ID4gKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gPiA+ ID4gIAkJCXByaW1hcnlfY3JjID0gY3JjX2RhdGE7Cj4gPiA+ID4gLQkJCWJyZWFrOwo+ID4gPiA+ IC0JCX0KPiA+ID4gPiArCQllbHNlCj4gPiA+ID4gKwkJCWN1cnNvcl9jcmMgPSBjcmNfZGF0YTsK PiA+ID4gPiAgCX0KPiA+ID4gPiAgCj4gPiA+ID4gIAlpZiAocHJpbWFyeV9jcmMpCj4gPiA+ID4g LQkJY3JjMzIgPSBfdmttc19nZXRfY3JjKHByaW1hcnlfY3JjKTsKPiA+ID4gPiArCQljcmMzMiA9 IF92a21zX2dldF9jcmMocHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMpOwo+ID4gPiA+ICAKPiA+ID4g PiAgCWRybV9jcnRjX2FkZF9jcmNfZW50cnkoY3J0YywgdHJ1ZSwgY3J0Y19zdGF0ZS0+bl9mcmFt ZSwgJmNyYzMyKTsKPiA+ID4gPiAgfQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4g PiA+IGluZGV4IDM2ZTUyNGY3OTFmZS4uMTczODc1ZGMzNjFlIDEwMDY0NAo+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+ID4gQEAgLTI1LDggKzI1LDExIEBAIHN0YXRpYyBj b25zdCB1MzIgdmttc19jdXJzb3JfZm9ybWF0c1tdID0gewo+ID4gPiA+ICB9Owo+ID4gPiA+ICAK PiA+ID4gPiAgc3RydWN0IHZrbXNfY3JjX2RhdGEgewo+ID4gPiA+IC0Jc3RydWN0IGRybV9yZWN0 IHNyYzsKPiA+ID4gPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmI7Cj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX3JlY3Qgc3JjLCBkc3Q7Cj4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgb2Zmc2V0Owo+ID4g PiA+ICsJdW5zaWduZWQgaW50IHBpdGNoOwo+ID4gPiA+ICsJdW5zaWduZWQgaW50IGNwcDsKPiA+ ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gIC8qKgo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21z X3BsYW5lLmMKPiA+ID4gPiBpbmRleCA0MjgyNDdkNDAzZGMuLjcwNDEwMDczOTZhZSAxMDA2NDQK PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gPiBAQCAtODUsMTYg Kzg1LDIyIEBAIHN0YXRpYyB2b2lkIHZrbXNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiA+ID4gPiAgCQkJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq b2xkX3N0YXRlKQo+ID4gPiA+ICB7Cj4gPiA+ID4gIAlzdHJ1Y3Qgdmttc19wbGFuZV9zdGF0ZSAq dmttc19wbGFuZV9zdGF0ZTsKPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmUtPnN0YXRlLT5mYjsKPiA+ID4gPiAgCXN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0 YTsKPiA+ID4gPiAgCj4gPiA+ID4gLQlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUt PnN0YXRlLT5mYikKPiA+ID4gPiArCWlmICghcGxhbmUtPnN0YXRlLT5jcnRjIHx8ICFmYikKPiA+ ID4gPiAgCQlyZXR1cm47Cj4gPiA+ID4gIAo+ID4gPiA+ICAJdmttc19wbGFuZV9zdGF0ZSA9IHRv X3ZrbXNfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiA+ID4gPiArCj4gPiA+ID4gIAljcmNf ZGF0YSA9IHZrbXNfcGxhbmVfc3RhdGUtPmNyY19kYXRhOwo+ID4gPiA+ICAJbWVtY3B5KCZjcmNf ZGF0YS0+c3JjLCAmcGxhbmUtPnN0YXRlLT5zcmMsIHNpemVvZihzdHJ1Y3QgZHJtX3JlY3QpKTsK PiA+ID4gPiAtCW1lbWNweSgmY3JjX2RhdGEtPmZiLCBwbGFuZS0+c3RhdGUtPmZiLCBzaXplb2Yo c3RydWN0IGRybV9mcmFtZWJ1ZmZlcikpOwo+ID4gPiA+ICsJbWVtY3B5KCZjcmNfZGF0YS0+ZHN0 LCAmcGxhbmUtPnN0YXRlLT5kc3QsIHNpemVvZihzdHJ1Y3QgZHJtX3JlY3QpKTsKPiA+ID4gPiAr CW1lbWNweSgmY3JjX2RhdGEtPmZiLCBmYiwgc2l6ZW9mKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIp KTsKPiA+ID4gPiAgCWRybV9mcmFtZWJ1ZmZlcl9nZXQoJmNyY19kYXRhLT5mYik7Cj4gPiA+ID4g KwljcmNfZGF0YS0+b2Zmc2V0ID0gZmItPm9mZnNldHNbMF07Cj4gPiA+ID4gKwljcmNfZGF0YS0+ cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiA+ID4gPiArCWNyY19kYXRhLT5jcHAgPSBmYi0+Zm9y bWF0LT5jcHBbMF07Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4gIHN0YXRpYyBpbnQgdmtt c19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+ID4gLS0g Cj4gPiA+ID4gMi4xNy4xCj4gPiA+ID4gCj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4gRGFuaWVsIFZl dHRlcgo+ID4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==