From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm/vkms: Compute CRC with Cursor Plane Date: Tue, 14 Aug 2018 10:21:29 +0200 Message-ID: <20180814082129.GA21634@phenom.ffwll.local> References: <44b546fedbcf65fd20f7a65d5443fbb50493cf32.1533526327.git.hamohammed.sa@gmail.com> <20180807163336.GA3008@phenom.ffwll.local> <20180808035317.GA1708@haneenDRM> <20180808082327.GH3008@phenom.ffwll.local> <20180813200411.GA17331@haneenDRM> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id A54656E043 for ; Tue, 14 Aug 2018 08:21:37 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id s24-v6so9640740edr.8 for ; Tue, 14 Aug 2018 01:21:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180813200411.GA17331@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 T24gTW9uLCBBdWcgMTMsIDIwMTggYXQgMTE6MDQ6MTFQTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIFdlZCwgQXVnIDA4LCAyMDE4IGF0IDEwOjIzOjI3QU0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBXZWQsIEF1ZyAwOCwgMjAxOCBhdCAwNjo1MzoxN0FNICsw MzAwLCBIYW5lZW4gTW9oYW1tZWQgd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgQXVnIDA3LCAyMDE4IGF0 IDA2OjMzOjM2UE0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gT24gTW9uLCBB dWcgMDYsIDIwMTggYXQgMDY6NTg6MjlBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVkIHdyb3RlOgo+ ID4gPiA+ID4gVGhpcyBwYXRjaCBjb21wdXRlIENSQyBmb3Igb3V0cHV0IGZyYW1lIHdpdGggY3Vy c29yIGFuZCBwcmltYXJ5IHBsYW5lLgo+ID4gPiA+ID4gQmxlbmQgY3Vyc29yIHdpdGggcHJpbWFy eSBwbGFuZSBhbmQgY29tcHV0ZSBDUkMgb24gdGhlIHJlc3VsdGVkIGZyYW1lLgo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBIYW5lZW4gTW9oYW1tZWQgPGhhbW9oYW1tZWQuc2FA Z21haWwuY29tPgo+ID4gPiA+IAo+ID4gPiA+IE5pY2UhCj4gPiA+ID4gCj4gPiA+ID4gSSBhc3N1 bWUgd2l0aCB0aGlzIHlvdSdyZSBwYXNzaW5nIGFsbCB0aGUgY3JjIGJhc2VkIGN1cnNvciB0ZXN0 cyBpbiBpZ3Q/Cj4gPiA+ID4gSWYgc28sIHBsZWFzZSBtZW50aW9uIHRoaXMgaW4gdGhlIGNvbW1p dCBtZXNzYWdlLCBzbyB0aGF0IHRoZXJlJ3MgYSByZWNvcmQKPiA+ID4gPiBvZiB0aGUgdGVzdGlu ZyBkb25lIG9uIHRoaXMuCj4gPiA+ID4gCj4gPiA+IAo+ID4gPiBTdXJlLCBJJ2xsIHVwZGF0ZSB0 aGUgY29tbWl0IG1lc3NhZ2UuCj4gPiA+IElzIHRoZXJlIGFueSBvdGhlciBjaGFuZ2UgSSBzaG91 bGQgYWRkL2ZpeCB0byB0aGlzIHBhdGNoc2V0Pwo+ID4gPiAKPiA+ID4gPiBPbmUgZmFpcmx5IGh1 Z2UgZ2FwIHdlIGlpcmMgaGF2ZSBpbiBvdXIgY3Vyc29yIHRlc3RpbmcgaXMgdGhhdCB0aGVyZSdz IG5vdAo+ID4gPiA+IG11Y2ggKGlmIGFueT8pIGFscGhhIGJsZW5kaW5nIGNvdmVyYWdlLiBXZSBr aW5kYSBuZWVkIHRoYXQgdG8gbWFrZSBzdXJlCj4gPiA+ID4gdGhpcyBhbGwgd29ya3MgY29ycmVj dGx5LiBUaGUgdXN1YWwgdHJpY2sgaXMgdG8gb25seSBjaGVjayB0aGUgZXh0cmVtZQo+ID4gPiA+ IGFscGhhIHZhbHVlcywgaS5lLiBmdWxseSBvcGFxdWUgYW5kIGZ1bGx5IHRyYW5zcGFyZW50LCBz aW5jZSBpbnRlcm1lZGlhdGUKPiA+ID4gPiB2YWx1ZXMgYXJlIGFmZmVjdGVkIGJ5IGh3LXNwZWNp ZmljIHJvdW5kaW5nIG1vZGVzLgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19jcmMuYyAgIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICB8ICAgNSArLQo+ ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYyB8ICAxMCArLQo+ID4g PiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygt KQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19jcmMuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiA+ID4gPiA+IGlu ZGV4IDM3ZDcxN2YzOGUzYy4uNDg1M2E3MzlhZTVhIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4gPiA+ID4gQEAgLTEsMzYgKzEsMTM3IEBACj4gPiA+ID4g PiAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ID4gPiA+ICAjaW5jbHVk ZSAidmttc19kcnYuaCIKPiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvY3JjMzIuaD4KPiA+ID4g PiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8ZHJt L2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2Zy YW1lYnVmZmVyX2hlbHBlci5oPgo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gLXN0YXRpYyB1aW50MzJf dCBfdmttc19nZXRfY3JjKHN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YSkKPiA+ID4gPiA+ ICsvKioKPiA+ID4gPiA+ICsgKiBjb21wdXRlX2NyYyAtIENvbXB1dGUgQ1JDIHZhbHVlIG9uIG91 dHB1dCBmcmFtZQo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogQHZhZGRyX291dDogYWRkcmVz cyB0byBmaW5hbCBmcmFtZWJ1ZmZlcgo+ID4gPiA+ID4gKyAqIEBjcmNfb3V0OiBmcmFtZWJ1ZmZl cidzIG1ldGFkYXRhCj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiByZXR1cm5zIENSQyB2YWx1 ZSBjb21wdXRlZCB1c2luZyBjcmMzMiBvbiB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mCj4gPiA+ID4g PiArICogdGhlIGZpbmFsIGZyYW1lYnVmZmVyIGF0IHZhZGRyX291dAo+ID4gPiA+ID4gKyAqLwo+ ID4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBjb21wdXRlX2NyYyh2b2lkICp2YWRkcl9vdXQsIHN0 cnVjdCB2a21zX2NyY19kYXRhICpjcmNfb3V0KQo+ID4gPiA+ID4gIHsKPiA+ID4gPiA+IC0Jc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAmY3JjX2RhdGEtPmZiOwo+ID4gPiA+ID4gKwlpbnQg aSwgc3JjX29mZnNldDsKPiA+ID4gPiA+ICsJaW50IHhfc3JjID0gY3JjX291dC0+c3JjLngxID4+ IDE2Owo+ID4gPiA+ID4gKwlpbnQgeV9zcmMgPSBjcmNfb3V0LT5zcmMueTEgPj4gMTY7Cj4gPiA+ ID4gPiArCWludCBoX3NyYyA9IGRybV9yZWN0X2hlaWdodCgmY3JjX291dC0+c3JjKSA+PiAxNjsK PiA+ID4gPiA+ICsJaW50IHdfc3JjID0gZHJtX3JlY3Rfd2lkdGgoJmNyY19vdXQtPnNyYykgPj4g MTY7Cj4gPiA+ID4gPiArCWludCBzaXplX2J5dGUgPSB3X3NyYyAqIGNyY19vdXQtPmNwcDsKPiA+ ID4gPiA+ICsJdTMyIGNyYyA9IDA7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWZvciAoaSA9IHlf c3JjOyBpIDwgeV9zcmMgKyBoX3NyYzsgaSsrKSB7Cj4gPiA+ID4gPiArCQlzcmNfb2Zmc2V0ID0g Y3JjX291dC0+b2Zmc2V0Cj4gPiA+ID4gPiArCQkJICAgICArIChpICogY3JjX291dC0+cGl0Y2gp Cj4gPiA+ID4gPiArCQkJICAgICArICh4X3NyYyAqIGNyY19vdXQtPmNwcCk7Cj4gPiA+ID4gPiAr CQljcmMgPSBjcmMzMl9sZShjcmMsIHZhZGRyX291dCArIHNyY19vZmZzZXQsIHNpemVfYnl0ZSk7 Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJcmV0dXJuIGNyYzsKPiA+ID4g PiA+ICt9Cj4gPiA+ID4gPiArCj4gCj4gSGV5IERhbmllbCwgCj4gCj4gV2hlbiBJIGNoYW5nZSB0 aGUgYWJvdmUgZnVuY3Rpb24gImNvbXB1dGVfY3JjIiB0byBjb21wdXRlIHRoZSBDUkMgZm9yCj4g ZWFjaCBwaXhlbCBzbyB3ZSBjYW4gY2xlYXIgdGhlIEFscGhhIHZhbHVlIGJlZm9yZSBjb21wdXRp bmcgdGhlIENSQyBhcyBiZWxsb3csCj4gdGhlIHRlc3QgIm5vbmJsb2NraW5nLWNyYy1waXBlLUEt ZnJhbWUtc2VxdWVuY2UiIHNvbWV0aW1lcyBmYWlsZXMgYW5kCj4gc29tZXRpbWVzIHBhc3Nlcy4g U2hvdWxkIEkgc3RpbGwgY29udGludWUgd2l0aCB0aGUgY2hhbmdlLCBvciBsZWF2ZSBpdAo+IGFz IGl0IGlzPwoKSG0sIGhvdyBkb2VzIGl0IGZhaWw/IENvdWxkIGJlIHRoYXQgdGhlIGNvZGUgYmVj b21lcyB0b28gc2xvdywgYW5kIHRoZW4KdGhlIGZyYW1lIGNvdW50ZXJzIGRvbid0IGluY3JlbWVu dCBuaWNlbHkgYW55bW9yZS4gT3IgdGhlcmUncyBhIHJhY2UKc29tZXdoZXJlIGluIHRoZSBDUkMg Y29kZSB0aGF0IGdldHMgZXhwb3NlZC4gQnV0IHRoYXQncyBqdXN0IG1lIGd1ZXNzaW5nLgotRGFu aWVsCgo+IAo+IC0tLS0tLS0tLS0tLS0tLS0tIHZrbXNfY3JjLmMgLS0tLS0tLS0tLS0tLS0tLS0K PiAJZm9yIChpID0geV9zcmM7IGkgPCB5X3NyYyArIGhfc3JjOyArK2kpIHsKPiAJCWZvciAoaiA9 IHhfc3JjOyBqIDwgeF9zcmMgKyB3X3NyYzsgKytqKSB7Cj4gCQkJc3JjX29mZnNldCA9IGNyY19v dXQtPm9mZnNldAo+IAkJCQkgICAgICsgKGkgKiBjcmNfb3V0LT5waXRjaCkKPiAJCQkJICAgICAr IChqICogY3JjX291dC0+Y3BwKTsKPiAJCQltZW1zZXQodmFkZHJfb3V0ICsgc3JjX29mZnNldCAr IDI0LCAwLCAgOCk7Cj4gCQkJY3JjID0gY3JjMzJfbGUoY3JjLCB2YWRkcl9vdXQgKyBzcmNfb2Zm c2V0LCBzaXplb2YodTMyKSk7Cj4gCQl9Cj4gCX0KPiAtLS0tLS0tLS0tLS0tLS0tLSB2a21zX2Ny Yy5jIC0tLS0tLS0tLS0tLS0tLS0tCj4gCj4gVGhhbmsgeW91LAo+IEhhbmVlbgo+IAo+ID4gPiA+ ID4gKy8qKgo+ID4gPiA+ID4gKyAqIGJsZW5kIC0gYmVsbmQgdmFsdWUgYXQgdmFkZHJfc3JjIHdp dGggdmFsdWUgYXQgdmFkZHJfZHN0Cj4gPiA+ID4gPiArICogQHZhZGRyX2RzdDogZGVzdGluYXRp b24gYWRkcmVzcwo+ID4gPiA+ID4gKyAqIEB2YWRkcl9zcmM6IHNvdXJjZSBhZGRyZXNzCj4gPiA+ ID4gPiArICogQGNyY19kc3Q6IGRlc3RpbmF0aW9uIGZyYW1lYnVmZmVyJ3MgbWV0YWRhdGEKPiA+ ID4gPiA+ICsgKiBAY3JjX3NyYzogc291cmNlIGZyYW1lYnVmZmVyJ3MgbWV0YWRhdGEKPiA+ID4g PiA+ICsgKgo+ID4gPiA+ID4gKyAqIEJsZW5kIHZhbHVlIGF0IHZhZGRyX3NyYyB3aXRoIHZhbHVl IGF0IHZhZGRyX2RzdC4KPiA+ID4gPiA+ICsgKiBDdXJyZW50bHksIHRoaXMgZnVuY3Rpb24gd3Jp dGUgdmFsdWUgYXQgdmFkZHJfc3JjIG9uIHZhbHVlCj4gPiA+ID4gPiArICogYXQgdmFkZHJfZHN0 IHVzaW5nIGJ1ZmZlcidzIG1ldGFkYXRhIHRvIGxvY2F0ZSB0aGUgbmV3IHZhbHVlcwo+ID4gPiA+ ID4gKyAqIGZyb20gdmFkZHJfc3JjIGFuZCB0aGVpciBkaXN0ZW5hdGlvbiBhdCB2YWRkcl9kc3Qu Cj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiBUb2RvOiBVc2UgdGhlIGFscGhhIHZhbHVlIHRv IGJsZW5kIHZhZGRyX3NyYyB3aXRoIHZhZGRyX2RzdAo+ID4gPiA+ID4gKyAqCSBpbnN0ZWFkIG9m IG92ZXJ3cml0aW5nIGl0Lgo+ID4gPiA+IAo+ID4gPiA+IEFub3RoZXIgdG9kbzogV2UgbXVzdCBj bGVhciB0aGUgYWxwaGEgY2hhbm5lbCBpbiB0aGUgcmVzdWx0IGFmdGVyCj4gPiA+ID4gYmxlbmRp bmcuIFRoaXMgYWxzbyBhcHBsaWVzIHRvIHRoZSBwcmltYXJ5IHBsYW5lLCB3aGVyZSB0aGUgWFJH QiBmb3IgdGhlCj4gPiA+ID4gcGl4ZWwgZm9ybWF0IG1hbmRhdGVzIHRoYXQgd2UgZW50aXJlbHkg aWdub3JlIHRoZSBhbHBoYSBjaGFubmVsLgo+ID4gPiA+IAo+ID4gPiA+IFRoaXMgaXMgYWxzbyBz b21ldGhpbmcgd2Ugc2hvdWxkIHByb2JhYmx5IGhhdmUgYW4gaWd0IHRlc3RjYXNlIGZvci4KPiA+ ID4gPiAKPiA+ID4gPiBTaW5jZSB0aGVyZSdzIGEgZmV3IG9wZW4gZW5kczogSG93IG1hbnkgd2Vl a3MgYXJlIGxlZnQgaW4geW91ciBvdXRyZWFjaHkKPiA+ID4gPiBpbnRlcm5zaGlwPyBXZSBuZWVk IHRvIG1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0IGFsbCB0aGUgaXNzdWVzIGFyZSBjb3ZlcmVkCj4g PiA+ID4gaW4gYSB2a21zIHRvZG8gZmlsZS4gV291bGQgYmUgZ3JlYXQgdG8gYWRkIHRoYXQgaW4K PiA+ID4gPiBEb2N1bWVudGF0aW9uL2dwdS92a21zLnJzdCwgbGlrZSB3ZSBoYXZlIGZvciBvdGhl ciBkcml2ZXJzLgo+ID4gPiA+IC1EYW5pZWwKPiA+ID4gPiAKPiA+ID4gCj4gPiA+IEkndmUgb25l IG1vcmUgd2VlayEgSSBjYW4gdXNlIHRoaXMgd2VlayB0byBwcmVwYXJlIHRoZSB0b2RvIGZpbGUg YW5kCj4gPiA+IGZpbmFsaXplIHRoaXMgcGF0Y2g/Cj4gPiAKPiA+IFllYWggc291bmRzIGxpa2Ug dGhlIHBlcmZlY3Qgd3JhcC11cCB3b3JrLiBTaW5jZSB0aGlzIHdvbnQgYmUgZW5vdWdoIHRvCj4g PiBmaW5pc2ggdGhlIGN1cnNvciB3b3JrIGl0IHdvdWxkIGJlIGdvb2QgdG8gaGlkZSB0aGUgY3Vy c29yIHNldHVwIGJlaGluZCBhCj4gPiBtb2R1bGUgb3B0aW9uLCBwZXJoYXBzICJlbmFibGVfY3Vy c29yIiBvciBzby4gVGhhdCB3YXkgd2Ugd29udCBoYXZlCj4gPiBub3QtdG90YWxseS1jb3JyZWN0 IGZlYXR1cmVzIGVuYWJsZWQuIEFuZCBlbmFibGluZy9kaXNhYmxpbmcgY3Vyc29yCj4gPiBzdXBw b3J0IGNvdWxkIGJlIHVzZWZ1bCBmb3IgdGVzdGluZy4KPiA+IC1EYW5pZWwKPiA+IAo+ID4gPiAK PiA+ID4gVGhhbmsgeW91LAo+ID4gPiBIYW5lZW4KPiA+ID4gCj4gPiA+ID4gPiArICovCj4gPiA+ ID4gPiArc3RhdGljIHZvaWQgYmxlbmQodm9pZCAqdmFkZHJfZHN0LCB2b2lkICp2YWRkcl9zcmMs Cj4gPiA+ID4gPiArCQkgIHN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZHN0LAo+ID4gPiA+ID4g KwkJICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX3NyYykKPiA+ID4gPiA+ICt7Cj4gPiA+ID4g PiArCWludCBpLCBqLCBqX2RzdCwgaV9kc3Q7Cj4gPiA+ID4gPiArCWludCBvZmZzZXRfc3JjLCBv ZmZzZXRfZHN0Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpbnQgeF9zcmMgPSBjcmNfc3JjLT5z cmMueDEgPj4gMTY7Cj4gPiA+ID4gPiArCWludCB5X3NyYyA9IGNyY19zcmMtPnNyYy55MSA+PiAx NjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaW50IHhfZHN0ID0gY3JjX3NyYy0+ZHN0LngxOwo+ ID4gPiA+ID4gKwlpbnQgeV9kc3QgPSBjcmNfc3JjLT5kc3QueTE7Cj4gPiA+ID4gPiArCWludCBo X2RzdCA9IGRybV9yZWN0X2hlaWdodCgmY3JjX3NyYy0+ZHN0KTsKPiA+ID4gPiA+ICsJaW50IHdf ZHN0ID0gZHJtX3JlY3Rfd2lkdGgoJmNyY19zcmMtPmRzdCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArCWludCB5X2xpbWl0ID0geV9zcmMgKyBoX2RzdDsKPiA+ID4gPiA+ICsJaW50IHhfbGltaXQg PSB4X3NyYyArIHdfZHN0Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlmb3IgKGkgPSB5X3NyYywg aV9kc3QgPSB5X2RzdDsgaSA8IHlfbGltaXQ7ICsraSkgewo+ID4gPiA+ID4gKwkJZm9yIChqID0g eF9zcmMsIGpfZHN0ID0geF9kc3Q7IGogPCB4X2xpbWl0OyArK2opIHsKPiA+ID4gPiA+ICsJCQlv ZmZzZXRfZHN0ID0gY3JjX2RzdC0+b2Zmc2V0Cj4gPiA+ID4gPiArCQkJCSAgICAgKyAoaV9kc3Qg KiBjcmNfZHN0LT5waXRjaCkKPiA+ID4gPiA+ICsJCQkJICAgICArIChqX2RzdCsrICogY3JjX2Rz dC0+Y3BwKTsKPiA+ID4gPiA+ICsJCQlvZmZzZXRfc3JjID0gY3JjX3NyYy0+b2Zmc2V0Cj4gPiA+ ID4gPiArCQkJCSAgICAgKyAoaSAqIGNyY19zcmMtPnBpdGNoKQo+ID4gPiA+ID4gKwkJCQkgICAg ICsgKGogKiBjcmNfc3JjLT5jcHApOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJCW1lbWNweSh2 YWRkcl9kc3QgKyBvZmZzZXRfZHN0LAo+ID4gPiA+ID4gKwkJCSAgICAgICB2YWRkcl9zcmMgKyBv ZmZzZXRfc3JjLCBzaXplb2YodTMyKSk7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiArCQlpX2Rz dCsrOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0 YXRpYyB2b2lkIGNvbXBvc2VfY3Vyc29yKHN0cnVjdCB2a21zX2NyY19kYXRhICpjdXJzb3JfY3Jj LAo+ID4gPiA+ID4gKwkJCSAgIHN0cnVjdCB2a21zX2NyY19kYXRhICpwcmltYXJ5X2NyYywgdm9p ZCAqdmFkZHJfb3V0KQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpjdXJzb3Jfb2JqOwo+ID4gPiA+ID4gKwlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICpjdXJz b3Jfdmttc19vYmo7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWN1cnNvcl9vYmogPSBkcm1fZ2Vt X2ZiX2dldF9vYmooJmN1cnNvcl9jcmMtPmZiLCAwKTsKPiA+ID4gPiA+ICsJY3Vyc29yX3ZrbXNf b2JqID0gZHJtX2dlbV90b192a21zX2dlbShjdXJzb3Jfb2JqKTsKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICsJbXV0ZXhfbG9jaygmY3Vyc29yX3ZrbXNfb2JqLT5wYWdlc19sb2NrKTsKPiA+ID4gPiA+ ICsJaWYgKFdBUk5fT04oIWN1cnNvcl92a21zX29iai0+dmFkZHIpKQo+ID4gPiA+ID4gKwkJZ290 byBvdXQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWJsZW5kKHZhZGRyX291dCwgY3Vyc29yX3Zr bXNfb2JqLT52YWRkciwgcHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMpOwo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gK291dDoKPiA+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZjdXJzb3Jfdmttc19vYmotPnBh Z2VzX2xvY2spOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgdWlu dDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9jcmMsCj4g PiA+ID4gPiArCQkJICAgICAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMpCj4gPiA+ ID4gPiArewo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZwcmltYXJ5 X2NyYy0+ZmI7Cj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiA9IGRy bV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7Cj4gPiA+ID4gPiAgCXN0cnVjdCB2a21zX2dlbV9vYmpl Y3QgKnZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShnZW1fb2JqKTsKPiA+ID4gPiA+ICsJ dm9pZCAqdmFkZHJfb3V0ID0ga3phbGxvYyh2a21zX29iai0+Z2VtLnNpemUsIEdGUF9LRVJORUwp Owo+ID4gPiA+ID4gIAl1MzIgY3JjID0gMDsKPiA+ID4gPiA+IC0JaW50IGkgPSAwOwo+ID4gPiA+ ID4gLQl1bnNpZ25lZCBpbnQgeCA9IGNyY19kYXRhLT5zcmMueDEgPj4gMTY7Cj4gPiA+ID4gPiAt CXVuc2lnbmVkIGludCB5ID0gY3JjX2RhdGEtPnNyYy55MSA+PiAxNjsKPiA+ID4gPiA+IC0JdW5z aWduZWQgaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmY3JjX2RhdGEtPnNyYykgPj4gMTY7 Cj4gPiA+ID4gPiAtCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZjcmNfZGF0 YS0+c3JjKSA+PiAxNjsKPiA+ID4gPiA+IC0JdW5zaWduZWQgaW50IGNwcCA9IGZiLT5mb3JtYXQt PmNwcFswXTsKPiA+ID4gPiA+IC0JdW5zaWduZWQgaW50IHNyY19vZmZzZXQ7Cj4gPiA+ID4gPiAt CXVuc2lnbmVkIGludCBzaXplX2J5dGUgPSB3aWR0aCAqIGNwcDsKPiA+ID4gPiA+IC0Jdm9pZCAq dmFkZHI7Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAtCW11dGV4X2xvY2soJnZrbXNfb2JqLT5wYWdl c19sb2NrKTsKPiA+ID4gPiA+IC0JdmFkZHIgPSB2a21zX29iai0+dmFkZHI7Cj4gPiA+ID4gPiAt CWlmIChXQVJOX09OKCF2YWRkcikpCj4gPiA+ID4gPiAtCQlnb3RvIG91dDsKPiA+ID4gPiA+ICsJ aWYgKCF2YWRkcl9vdXQpIHsKPiA+ID4gPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9j YXRlIG1lbW9yeSBmb3Igb3V0cHV0IGZyYW1lLiIpOwo+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4g PiA+ID4gPiArCX0KPiA+ID4gPiA+ICAKPiA+ID4gPiA+IC0JZm9yIChpID0geTsgaSA8IHkgKyBo ZWlnaHQ7IGkrKykgewo+ID4gPiA+ID4gLQkJc3JjX29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsg KGkgKiBmYi0+cGl0Y2hlc1swXSkgKyAoeCAqIGNwcCk7Cj4gPiA+ID4gPiAtCQljcmMgPSBjcmMz Ml9sZShjcmMsIHZhZGRyICsgc3JjX29mZnNldCwgc2l6ZV9ieXRlKTsKPiA+ID4gPiA+ICsJbXV0 ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4gPiA+ID4gKwlpZiAoV0FSTl9PTigh dmttc19vYmotPnZhZGRyKSkgewo+ID4gPiA+ID4gKwkJbXV0ZXhfbG9jaygmdmttc19vYmotPnBh Z2VzX2xvY2spOwo+ID4gPiA+ID4gKwkJcmV0dXJuIGNyYzsKPiA+ID4gPiA+ICAJfQo+ID4gPiA+ ID4gIAo+ID4gPiA+ID4gLW91dDoKPiA+ID4gPiA+ICsJbWVtY3B5KHZhZGRyX291dCwgdmttc19v YmotPnZhZGRyLCB2a21zX29iai0+Z2VtLnNpemUpOwo+ID4gPiA+ID4gIAltdXRleF91bmxvY2so JnZrbXNfb2JqLT5wYWdlc19sb2NrKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKGN1cnNv cl9jcmMpCj4gPiA+ID4gPiArCQljb21wb3NlX2N1cnNvcihjdXJzb3JfY3JjLCBwcmltYXJ5X2Ny YywgdmFkZHJfb3V0KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJY3JjID0gY29tcHV0ZV9jcmMo dmFkZHJfb3V0LCBwcmltYXJ5X2NyYyk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWtmcmVlKHZh ZGRyX291dCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgCXJldHVybiBjcmM7Cj4gPiA+ID4gPiAg fQo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gQEAgLTQ0LDggKzE0NSw4IEBAIHZvaWQgdmttc19jcmNf d29ya19oYW5kbGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ID4gPiA+ID4gIAlzdHJ1Y3Qg dmttc19kZXZpY2UgKnZkZXYgPSBjb250YWluZXJfb2Yob3V0LCBzdHJ1Y3Qgdmttc19kZXZpY2Us Cj4gPiA+ID4gPiAgCQkJCQkJb3V0cHV0KTsKPiA+ID4gPiA+ICAJc3RydWN0IHZrbXNfY3JjX2Rh dGEgKnByaW1hcnlfY3JjID0gTlVMTDsKPiA+ID4gPiA+ICsJc3RydWN0IHZrbXNfY3JjX2RhdGEg KmN1cnNvcl9jcmMgPSBOVUxMOwo+ID4gPiA+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK PiA+ID4gPiA+IC0KPiA+ID4gPiA+ICAJdTMyIGNyYzMyID0gMDsKPiA+ID4gPiA+ICAKPiA+ID4g PiA+ICAJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCAmdmRldi0+ZHJtKSB7Cj4gPiA+ID4gPiBA QCAtNTgsMTQgKzE1OSwxNCBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPiA+ID4gPiA+ICAJCWlmIChkcm1fZnJhbWVidWZmZXJfcmVhZF9yZWZj b3VudCgmY3JjX2RhdGEtPmZiKSA9PSAwKQo+ID4gPiA+ID4gIAkJCWNvbnRpbnVlOwo+ID4gPiA+ ID4gIAo+ID4gPiA+ID4gLQkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1B UlkpIHsKPiA+ID4gPiA+ICsJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQo+ID4gPiA+ID4gIAkJCXByaW1hcnlfY3JjID0gY3JjX2RhdGE7Cj4gPiA+ID4gPiAtCQkJ YnJlYWs7Cj4gPiA+ID4gPiAtCQl9Cj4gPiA+ID4gPiArCQllbHNlCj4gPiA+ID4gPiArCQkJY3Vy c29yX2NyYyA9IGNyY19kYXRhOwo+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAg CWlmIChwcmltYXJ5X2NyYykKPiA+ID4gPiA+IC0JCWNyYzMyID0gX3ZrbXNfZ2V0X2NyYyhwcmlt YXJ5X2NyYyk7Cj4gPiA+ID4gPiArCQljcmMzMiA9IF92a21zX2dldF9jcmMocHJpbWFyeV9jcmMs IGN1cnNvcl9jcmMpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIAlkcm1fY3J0Y19hZGRfY3JjX2Vu dHJ5KGNydGMsIHRydWUsIGNydGNfc3RhdGUtPm5fZnJhbWUsICZjcmMzMik7Cj4gPiA+ID4gPiAg fQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiA+ID4gPiBpbmRleCAzNmU1MjRm NzkxZmUuLjE3Mzg3NWRjMzYxZSAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3Zr bXNfZHJ2LmgKPiA+ID4gPiA+IEBAIC0yNSw4ICsyNSwxMSBAQCBzdGF0aWMgY29uc3QgdTMyIHZr bXNfY3Vyc29yX2Zvcm1hdHNbXSA9IHsKPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4gIAo+ID4gPiA+ ID4gIHN0cnVjdCB2a21zX2NyY19kYXRhIHsKPiA+ID4gPiA+IC0Jc3RydWN0IGRybV9yZWN0IHNy YzsKPiA+ID4gPiA+ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciBmYjsKPiA+ID4gPiA+ICsJc3Ry dWN0IGRybV9yZWN0IHNyYywgZHN0Owo+ID4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgb2Zmc2V0Owo+ ID4gPiA+ID4gKwl1bnNpZ25lZCBpbnQgcGl0Y2g7Cj4gPiA+ID4gPiArCXVuc2lnbmVkIGludCBj cHA7Cj4gPiA+ID4gPiAgfTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAvKioKPiA+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgYi9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gPiA+IGluZGV4IDQyODI0N2Q0MDNkYy4uNzA0 MTAwNzM5NmFlIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmtt c19wbGFuZS5jCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5l LmMKPiA+ID4gPiA+IEBAIC04NSwxNiArODUsMjIgQEAgc3RhdGljIHZvaWQgdmttc19wbGFuZV9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ID4gIAkJCQkgICAg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ID4gPiA+ICB7Cj4gPiA+ID4g PiAgCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2a21zX3BsYW5lX3N0YXRlOwo+ID4gPiA+ID4g KwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7Cj4gPiA+ID4g PiAgCXN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YTsKPiA+ID4gPiA+ICAKPiA+ID4gPiA+ IC0JaWYgKCFwbGFuZS0+c3RhdGUtPmNydGMgfHwgIXBsYW5lLT5zdGF0ZS0+ZmIpCj4gPiA+ID4g PiArCWlmICghcGxhbmUtPnN0YXRlLT5jcnRjIHx8ICFmYikKPiA+ID4gPiA+ICAJCXJldHVybjsK PiA+ID4gPiA+ICAKPiA+ID4gPiA+ICAJdmttc19wbGFuZV9zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVf c3RhdGUocGxhbmUtPnN0YXRlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICAJY3JjX2RhdGEgPSB2 a21zX3BsYW5lX3N0YXRlLT5jcmNfZGF0YTsKPiA+ID4gPiA+ICAJbWVtY3B5KCZjcmNfZGF0YS0+ c3JjLCAmcGxhbmUtPnN0YXRlLT5zcmMsIHNpemVvZihzdHJ1Y3QgZHJtX3JlY3QpKTsKPiA+ID4g PiA+IC0JbWVtY3B5KCZjcmNfZGF0YS0+ZmIsIHBsYW5lLT5zdGF0ZS0+ZmIsIHNpemVvZihzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyKSk7Cj4gPiA+ID4gPiArCW1lbWNweSgmY3JjX2RhdGEtPmRzdCwg JnBsYW5lLT5zdGF0ZS0+ZHN0LCBzaXplb2Yoc3RydWN0IGRybV9yZWN0KSk7Cj4gPiA+ID4gPiAr CW1lbWNweSgmY3JjX2RhdGEtPmZiLCBmYiwgc2l6ZW9mKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIp KTsKPiA+ID4gPiA+ICAJZHJtX2ZyYW1lYnVmZmVyX2dldCgmY3JjX2RhdGEtPmZiKTsKPiA+ID4g PiA+ICsJY3JjX2RhdGEtPm9mZnNldCA9IGZiLT5vZmZzZXRzWzBdOwo+ID4gPiA+ID4gKwljcmNf ZGF0YS0+cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiA+ID4gPiA+ICsJY3JjX2RhdGEtPmNwcCA9 IGZiLT5mb3JtYXQtPmNwcFswXTsKPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAg c3RhdGljIGludCB2a21zX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiA+ID4gPiA+IC0tIAo+ID4gPiA+ID4gMi4xNy4xCj4gPiA+ID4gPiAKPiA+ID4gPiAKPiA+ ID4gPiAtLSAKPiA+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+ID4gU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCj4gPiA+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+IAo+ID4g LS0gCj4gPiBEYW5pZWwgVmV0dGVyCj4gPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9y YXRpb24KPiA+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==