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: Wed, 8 Aug 2018 10:23:27 +0200 Message-ID: <20180808082327.GH3008@phenom.ffwll.local> References: <44b546fedbcf65fd20f7a65d5443fbb50493cf32.1533526327.git.hamohammed.sa@gmail.com> <20180807163336.GA3008@phenom.ffwll.local> <20180808035317.GA1708@haneenDRM> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by gabe.freedesktop.org (Postfix) with ESMTPS id C28486E4CE for ; Wed, 8 Aug 2018 08:23:31 +0000 (UTC) Received: by mail-ed1-x530.google.com with SMTP id f23-v6so816610edr.11 for ; Wed, 08 Aug 2018 01:23:31 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180808035317.GA1708@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 T24gV2VkLCBBdWcgMDgsIDIwMTggYXQgMDY6NTM6MTdBTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIFR1ZSwgQXVnIDA3LCAyMDE4IGF0IDA2OjMzOjM2UE0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBNb24sIEF1ZyAwNiwgMjAxOCBhdCAwNjo1ODoyOUFNICsw MzAwLCBIYW5lZW4gTW9oYW1tZWQgd3JvdGU6Cj4gPiA+IFRoaXMgcGF0Y2ggY29tcHV0ZSBDUkMg Zm9yIG91dHB1dCBmcmFtZSB3aXRoIGN1cnNvciBhbmQgcHJpbWFyeSBwbGFuZS4KPiA+ID4gQmxl bmQgY3Vyc29yIHdpdGggcHJpbWFyeSBwbGFuZSBhbmQgY29tcHV0ZSBDUkMgb24gdGhlIHJlc3Vs dGVkIGZyYW1lLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogSGFuZWVuIE1vaGFtbWVkIDxo YW1vaGFtbWVkLnNhQGdtYWlsLmNvbT4KPiA+IAo+ID4gTmljZSEKPiA+IAo+ID4gSSBhc3N1bWUg d2l0aCB0aGlzIHlvdSdyZSBwYXNzaW5nIGFsbCB0aGUgY3JjIGJhc2VkIGN1cnNvciB0ZXN0cyBp biBpZ3Q/Cj4gPiBJZiBzbywgcGxlYXNlIG1lbnRpb24gdGhpcyBpbiB0aGUgY29tbWl0IG1lc3Nh Z2UsIHNvIHRoYXQgdGhlcmUncyBhIHJlY29yZAo+ID4gb2YgdGhlIHRlc3RpbmcgZG9uZSBvbiB0 aGlzLgo+ID4gCj4gCj4gU3VyZSwgSSdsbCB1cGRhdGUgdGhlIGNvbW1pdCBtZXNzYWdlLgo+IElz IHRoZXJlIGFueSBvdGhlciBjaGFuZ2UgSSBzaG91bGQgYWRkL2ZpeCB0byB0aGlzIHBhdGNoc2V0 Pwo+IAo+ID4gT25lIGZhaXJseSBodWdlIGdhcCB3ZSBpaXJjIGhhdmUgaW4gb3VyIGN1cnNvciB0 ZXN0aW5nIGlzIHRoYXQgdGhlcmUncyBub3QKPiA+IG11Y2ggKGlmIGFueT8pIGFscGhhIGJsZW5k aW5nIGNvdmVyYWdlLiBXZSBraW5kYSBuZWVkIHRoYXQgdG8gbWFrZSBzdXJlCj4gPiB0aGlzIGFs bCB3b3JrcyBjb3JyZWN0bHkuIFRoZSB1c3VhbCB0cmljayBpcyB0byBvbmx5IGNoZWNrIHRoZSBl eHRyZW1lCj4gPiBhbHBoYSB2YWx1ZXMsIGkuZS4gZnVsbHkgb3BhcXVlIGFuZCBmdWxseSB0cmFu c3BhcmVudCwgc2luY2UgaW50ZXJtZWRpYXRlCj4gPiB2YWx1ZXMgYXJlIGFmZmVjdGVkIGJ5IGh3 LXNwZWNpZmljIHJvdW5kaW5nIG1vZGVzLgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfY3JjLmMgICB8IDE0OSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0K PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICB8ICAgNSArLQo+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jIHwgIDEwICstCj4gPiA+ICAzIGZpbGVz IGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jIGIvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ID4gPiBpbmRleCAzN2Q3MTdmMzhlM2MuLjQ4NTNhNzM5 YWU1YSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jCj4gPiA+IEBAIC0xLDM2 ICsxLDEzNyBAQAo+ID4gPiAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ ID4gICNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2NyYzMyLmg+ Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KPiA+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1 ZmZlcl9oZWxwZXIuaD4KPiA+ID4gIAo+ID4gPiAtc3RhdGljIHVpbnQzMl90IF92a21zX2dldF9j cmMoc3RydWN0IHZrbXNfY3JjX2RhdGEgKmNyY19kYXRhKQo+ID4gPiArLyoqCj4gPiA+ICsgKiBj b21wdXRlX2NyYyAtIENvbXB1dGUgQ1JDIHZhbHVlIG9uIG91dHB1dCBmcmFtZQo+ID4gPiArICoK PiA+ID4gKyAqIEB2YWRkcl9vdXQ6IGFkZHJlc3MgdG8gZmluYWwgZnJhbWVidWZmZXIKPiA+ID4g KyAqIEBjcmNfb3V0OiBmcmFtZWJ1ZmZlcidzIG1ldGFkYXRhCj4gPiA+ICsgKgo+ID4gPiArICog cmV0dXJucyBDUkMgdmFsdWUgY29tcHV0ZWQgdXNpbmcgY3JjMzIgb24gdGhlIHZpc2libGUgcG9y dGlvbiBvZgo+ID4gPiArICogdGhlIGZpbmFsIGZyYW1lYnVmZmVyIGF0IHZhZGRyX291dAo+ID4g PiArICovCj4gPiA+ICtzdGF0aWMgdWludDMyX3QgY29tcHV0ZV9jcmModm9pZCAqdmFkZHJfb3V0 LCBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX291dCkKPiA+ID4gIHsKPiA+ID4gLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZjcmNfZGF0YS0+ZmI7Cj4gPiA+ICsJaW50IGksIHNyY19v ZmZzZXQ7Cj4gPiA+ICsJaW50IHhfc3JjID0gY3JjX291dC0+c3JjLngxID4+IDE2Owo+ID4gPiAr CWludCB5X3NyYyA9IGNyY19vdXQtPnNyYy55MSA+PiAxNjsKPiA+ID4gKwlpbnQgaF9zcmMgPSBk cm1fcmVjdF9oZWlnaHQoJmNyY19vdXQtPnNyYykgPj4gMTY7Cj4gPiA+ICsJaW50IHdfc3JjID0g ZHJtX3JlY3Rfd2lkdGgoJmNyY19vdXQtPnNyYykgPj4gMTY7Cj4gPiA+ICsJaW50IHNpemVfYnl0 ZSA9IHdfc3JjICogY3JjX291dC0+Y3BwOwo+ID4gPiArCXUzMiBjcmMgPSAwOwo+ID4gPiArCj4g PiA+ICsJZm9yIChpID0geV9zcmM7IGkgPCB5X3NyYyArIGhfc3JjOyBpKyspIHsKPiA+ID4gKwkJ c3JjX29mZnNldCA9IGNyY19vdXQtPm9mZnNldAo+ID4gPiArCQkJICAgICArIChpICogY3JjX291 dC0+cGl0Y2gpCj4gPiA+ICsJCQkgICAgICsgKHhfc3JjICogY3JjX291dC0+Y3BwKTsKPiA+ID4g KwkJY3JjID0gY3JjMzJfbGUoY3JjLCB2YWRkcl9vdXQgKyBzcmNfb2Zmc2V0LCBzaXplX2J5dGUp Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldHVybiBjcmM7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gKy8qKgo+ID4gPiArICogYmxlbmQgLSBiZWxuZCB2YWx1ZSBhdCB2YWRkcl9zcmMgd2l0 aCB2YWx1ZSBhdCB2YWRkcl9kc3QKPiA+ID4gKyAqIEB2YWRkcl9kc3Q6IGRlc3RpbmF0aW9uIGFk ZHJlc3MKPiA+ID4gKyAqIEB2YWRkcl9zcmM6IHNvdXJjZSBhZGRyZXNzCj4gPiA+ICsgKiBAY3Jj X2RzdDogZGVzdGluYXRpb24gZnJhbWVidWZmZXIncyBtZXRhZGF0YQo+ID4gPiArICogQGNyY19z cmM6IHNvdXJjZSBmcmFtZWJ1ZmZlcidzIG1ldGFkYXRhCj4gPiA+ICsgKgo+ID4gPiArICogQmxl bmQgdmFsdWUgYXQgdmFkZHJfc3JjIHdpdGggdmFsdWUgYXQgdmFkZHJfZHN0Lgo+ID4gPiArICog Q3VycmVudGx5LCB0aGlzIGZ1bmN0aW9uIHdyaXRlIHZhbHVlIGF0IHZhZGRyX3NyYyBvbiB2YWx1 ZQo+ID4gPiArICogYXQgdmFkZHJfZHN0IHVzaW5nIGJ1ZmZlcidzIG1ldGFkYXRhIHRvIGxvY2F0 ZSB0aGUgbmV3IHZhbHVlcwo+ID4gPiArICogZnJvbSB2YWRkcl9zcmMgYW5kIHRoZWlyIGRpc3Rl bmF0aW9uIGF0IHZhZGRyX2RzdC4KPiA+ID4gKyAqCj4gPiA+ICsgKiBUb2RvOiBVc2UgdGhlIGFs cGhhIHZhbHVlIHRvIGJsZW5kIHZhZGRyX3NyYyB3aXRoIHZhZGRyX2RzdAo+ID4gPiArICoJIGlu c3RlYWQgb2Ygb3ZlcndyaXRpbmcgaXQuCj4gPiAKPiA+IEFub3RoZXIgdG9kbzogV2UgbXVzdCBj bGVhciB0aGUgYWxwaGEgY2hhbm5lbCBpbiB0aGUgcmVzdWx0IGFmdGVyCj4gPiBibGVuZGluZy4g VGhpcyBhbHNvIGFwcGxpZXMgdG8gdGhlIHByaW1hcnkgcGxhbmUsIHdoZXJlIHRoZSBYUkdCIGZv ciB0aGUKPiA+IHBpeGVsIGZvcm1hdCBtYW5kYXRlcyB0aGF0IHdlIGVudGlyZWx5IGlnbm9yZSB0 aGUgYWxwaGEgY2hhbm5lbC4KPiA+IAo+ID4gVGhpcyBpcyBhbHNvIHNvbWV0aGluZyB3ZSBzaG91 bGQgcHJvYmFibHkgaGF2ZSBhbiBpZ3QgdGVzdGNhc2UgZm9yLgo+ID4gCj4gPiBTaW5jZSB0aGVy ZSdzIGEgZmV3IG9wZW4gZW5kczogSG93IG1hbnkgd2Vla3MgYXJlIGxlZnQgaW4geW91ciBvdXRy ZWFjaHkKPiA+IGludGVybnNoaXA/IFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYXQgbGVhc3Qg YWxsIHRoZSBpc3N1ZXMgYXJlIGNvdmVyZWQKPiA+IGluIGEgdmttcyB0b2RvIGZpbGUuIFdvdWxk IGJlIGdyZWF0IHRvIGFkZCB0aGF0IGluCj4gPiBEb2N1bWVudGF0aW9uL2dwdS92a21zLnJzdCwg bGlrZSB3ZSBoYXZlIGZvciBvdGhlciBkcml2ZXJzLgo+ID4gLURhbmllbAo+ID4gCj4gCj4gSSd2 ZSBvbmUgbW9yZSB3ZWVrISBJIGNhbiB1c2UgdGhpcyB3ZWVrIHRvIHByZXBhcmUgdGhlIHRvZG8g ZmlsZSBhbmQKPiBmaW5hbGl6ZSB0aGlzIHBhdGNoPwoKWWVhaCBzb3VuZHMgbGlrZSB0aGUgcGVy ZmVjdCB3cmFwLXVwIHdvcmsuIFNpbmNlIHRoaXMgd29udCBiZSBlbm91Z2ggdG8KZmluaXNoIHRo ZSBjdXJzb3Igd29yayBpdCB3b3VsZCBiZSBnb29kIHRvIGhpZGUgdGhlIGN1cnNvciBzZXR1cCBi ZWhpbmQgYQptb2R1bGUgb3B0aW9uLCBwZXJoYXBzICJlbmFibGVfY3Vyc29yIiBvciBzby4gVGhh dCB3YXkgd2Ugd29udCBoYXZlCm5vdC10b3RhbGx5LWNvcnJlY3QgZmVhdHVyZXMgZW5hYmxlZC4g QW5kIGVuYWJsaW5nL2Rpc2FibGluZyBjdXJzb3IKc3VwcG9ydCBjb3VsZCBiZSB1c2VmdWwgZm9y IHRlc3RpbmcuCi1EYW5pZWwKCj4gCj4gVGhhbmsgeW91LAo+IEhhbmVlbgo+IAo+ID4gPiArICov Cj4gPiA+ICtzdGF0aWMgdm9pZCBibGVuZCh2b2lkICp2YWRkcl9kc3QsIHZvaWQgKnZhZGRyX3Ny YywKPiA+ID4gKwkJICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX2RzdCwKPiA+ID4gKwkJICBz dHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3JjX3NyYykKPiA+ID4gK3sKPiA+ID4gKwlpbnQgaSwgaiwg al9kc3QsIGlfZHN0Owo+ID4gPiArCWludCBvZmZzZXRfc3JjLCBvZmZzZXRfZHN0Owo+ID4gPiAr Cj4gPiA+ICsJaW50IHhfc3JjID0gY3JjX3NyYy0+c3JjLngxID4+IDE2Owo+ID4gPiArCWludCB5 X3NyYyA9IGNyY19zcmMtPnNyYy55MSA+PiAxNjsKPiA+ID4gKwo+ID4gPiArCWludCB4X2RzdCA9 IGNyY19zcmMtPmRzdC54MTsKPiA+ID4gKwlpbnQgeV9kc3QgPSBjcmNfc3JjLT5kc3QueTE7Cj4g PiA+ICsJaW50IGhfZHN0ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcmNfc3JjLT5kc3QpOwo+ID4gPiAr CWludCB3X2RzdCA9IGRybV9yZWN0X3dpZHRoKCZjcmNfc3JjLT5kc3QpOwo+ID4gPiArCj4gPiA+ ICsJaW50IHlfbGltaXQgPSB5X3NyYyArIGhfZHN0Owo+ID4gPiArCWludCB4X2xpbWl0ID0geF9z cmMgKyB3X2RzdDsKPiA+ID4gKwo+ID4gPiArCWZvciAoaSA9IHlfc3JjLCBpX2RzdCA9IHlfZHN0 OyBpIDwgeV9saW1pdDsgKytpKSB7Cj4gPiA+ICsJCWZvciAoaiA9IHhfc3JjLCBqX2RzdCA9IHhf ZHN0OyBqIDwgeF9saW1pdDsgKytqKSB7Cj4gPiA+ICsJCQlvZmZzZXRfZHN0ID0gY3JjX2RzdC0+ b2Zmc2V0Cj4gPiA+ICsJCQkJICAgICArIChpX2RzdCAqIGNyY19kc3QtPnBpdGNoKQo+ID4gPiAr CQkJCSAgICAgKyAoal9kc3QrKyAqIGNyY19kc3QtPmNwcCk7Cj4gPiA+ICsJCQlvZmZzZXRfc3Jj ID0gY3JjX3NyYy0+b2Zmc2V0Cj4gPiA+ICsJCQkJICAgICArIChpICogY3JjX3NyYy0+cGl0Y2gp Cj4gPiA+ICsJCQkJICAgICArIChqICogY3JjX3NyYy0+Y3BwKTsKPiA+ID4gKwo+ID4gPiArCQkJ bWVtY3B5KHZhZGRyX2RzdCArIG9mZnNldF9kc3QsCj4gPiA+ICsJCQkgICAgICAgdmFkZHJfc3Jj ICsgb2Zmc2V0X3NyYywgc2l6ZW9mKHUzMikpOwo+ID4gPiArCQl9Cj4gPiA+ICsJCWlfZHN0Kys7 Cj4gPiA+ICsJfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBjb21wb3NlX2N1 cnNvcihzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3Vyc29yX2NyYywKPiA+ID4gKwkJCSAgIHN0cnVj dCB2a21zX2NyY19kYXRhICpwcmltYXJ5X2NyYywgdm9pZCAqdmFkZHJfb3V0KQo+ID4gPiArewo+ ID4gPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqY3Vyc29yX29iajsKPiA+ID4gKwlzdHJ1Y3Qg dmttc19nZW1fb2JqZWN0ICpjdXJzb3Jfdmttc19vYmo7Cj4gPiA+ICsKPiA+ID4gKwljdXJzb3Jf b2JqID0gZHJtX2dlbV9mYl9nZXRfb2JqKCZjdXJzb3JfY3JjLT5mYiwgMCk7Cj4gPiA+ICsJY3Vy c29yX3ZrbXNfb2JqID0gZHJtX2dlbV90b192a21zX2dlbShjdXJzb3Jfb2JqKTsKPiA+ID4gKwo+ ID4gPiArCW11dGV4X2xvY2soJmN1cnNvcl92a21zX29iai0+cGFnZXNfbG9jayk7Cj4gPiA+ICsJ aWYgKFdBUk5fT04oIWN1cnNvcl92a21zX29iai0+dmFkZHIpKQo+ID4gPiArCQlnb3RvIG91dDsK PiA+ID4gKwo+ID4gPiArCWJsZW5kKHZhZGRyX291dCwgY3Vyc29yX3ZrbXNfb2JqLT52YWRkciwg cHJpbWFyeV9jcmMsIGN1cnNvcl9jcmMpOwo+ID4gPiArCj4gPiA+ICtvdXQ6Cj4gPiA+ICsJbXV0 ZXhfdW5sb2NrKCZjdXJzb3Jfdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4gPiArfQo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19jcmNfZGF0 YSAqcHJpbWFyeV9jcmMsCj4gPiA+ICsJCQkgICAgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3Vy c29yX2NyYykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZw cmltYXJ5X2NyYy0+ZmI7Cj4gPiA+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqID0g ZHJtX2dlbV9mYl9nZXRfb2JqKGZiLCAwKTsKPiA+ID4gIAlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0 ICp2a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0oZ2VtX29iaik7Cj4gPiA+ICsJdm9pZCAq dmFkZHJfb3V0ID0ga3phbGxvYyh2a21zX29iai0+Z2VtLnNpemUsIEdGUF9LRVJORUwpOwo+ID4g PiAgCXUzMiBjcmMgPSAwOwo+ID4gPiAtCWludCBpID0gMDsKPiA+ID4gLQl1bnNpZ25lZCBpbnQg eCA9IGNyY19kYXRhLT5zcmMueDEgPj4gMTY7Cj4gPiA+IC0JdW5zaWduZWQgaW50IHkgPSBjcmNf ZGF0YS0+c3JjLnkxID4+IDE2Owo+ID4gPiAtCXVuc2lnbmVkIGludCBoZWlnaHQgPSBkcm1fcmVj dF9oZWlnaHQoJmNyY19kYXRhLT5zcmMpID4+IDE2Owo+ID4gPiAtCXVuc2lnbmVkIGludCB3aWR0 aCA9IGRybV9yZWN0X3dpZHRoKCZjcmNfZGF0YS0+c3JjKSA+PiAxNjsKPiA+ID4gLQl1bnNpZ25l ZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+ID4gPiAtCXVuc2lnbmVkIGludCBzcmNf b2Zmc2V0Owo+ID4gPiAtCXVuc2lnbmVkIGludCBzaXplX2J5dGUgPSB3aWR0aCAqIGNwcDsKPiA+ ID4gLQl2b2lkICp2YWRkcjsKPiA+ID4gIAo+ID4gPiAtCW11dGV4X2xvY2soJnZrbXNfb2JqLT5w YWdlc19sb2NrKTsKPiA+ID4gLQl2YWRkciA9IHZrbXNfb2JqLT52YWRkcjsKPiA+ID4gLQlpZiAo V0FSTl9PTighdmFkZHIpKQo+ID4gPiAtCQlnb3RvIG91dDsKPiA+ID4gKwlpZiAoIXZhZGRyX291 dCkgewo+ID4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG91 dHB1dCBmcmFtZS4iKTsKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsJfQo+ID4gPiAgCj4gPiA+ IC0JZm9yIChpID0geTsgaSA8IHkgKyBoZWlnaHQ7IGkrKykgewo+ID4gPiAtCQlzcmNfb2Zmc2V0 ID0gZmItPm9mZnNldHNbMF0gKyAoaSAqIGZiLT5waXRjaGVzWzBdKSArICh4ICogY3BwKTsKPiA+ ID4gLQkJY3JjID0gY3JjMzJfbGUoY3JjLCB2YWRkciArIHNyY19vZmZzZXQsIHNpemVfYnl0ZSk7 Cj4gPiA+ICsJbXV0ZXhfbG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4gPiArCWlmIChX QVJOX09OKCF2a21zX29iai0+dmFkZHIpKSB7Cj4gPiA+ICsJCW11dGV4X2xvY2soJnZrbXNfb2Jq LT5wYWdlc19sb2NrKTsKPiA+ID4gKwkJcmV0dXJuIGNyYzsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ ID4gLW91dDoKPiA+ID4gKwltZW1jcHkodmFkZHJfb3V0LCB2a21zX29iai0+dmFkZHIsIHZrbXNf b2JqLT5nZW0uc2l6ZSk7Cj4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZ2a21zX29iai0+cGFnZXNfbG9j ayk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoY3Vyc29yX2NyYykKPiA+ID4gKwkJY29tcG9zZV9jdXJz b3IoY3Vyc29yX2NyYywgcHJpbWFyeV9jcmMsIHZhZGRyX291dCk7Cj4gPiA+ICsKPiA+ID4gKwlj cmMgPSBjb21wdXRlX2NyYyh2YWRkcl9vdXQsIHByaW1hcnlfY3JjKTsKPiA+ID4gKwo+ID4gPiAr CWtmcmVlKHZhZGRyX291dCk7Cj4gPiA+ICsKPiA+ID4gIAlyZXR1cm4gY3JjOwo+ID4gPiAgfQo+ ID4gPiAgCj4gPiA+IEBAIC00NCw4ICsxNDUsOCBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxl KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gIAlzdHJ1Y3Qgdmttc19kZXZpY2UgKnZk ZXYgPSBjb250YWluZXJfb2Yob3V0LCBzdHJ1Y3Qgdmttc19kZXZpY2UsCj4gPiA+ICAJCQkJCQlv dXRwdXQpOwo+ID4gPiAgCXN0cnVjdCB2a21zX2NyY19kYXRhICpwcmltYXJ5X2NyYyA9IE5VTEw7 Cj4gPiA+ICsJc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNvcl9jcmMgPSBOVUxMOwo+ID4gPiAg CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gPiAtCj4gPiA+ICAJdTMyIGNyYzMyID0gMDsK PiA+ID4gIAo+ID4gPiAgCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgJnZkZXYtPmRybSkgewo+ ID4gPiBAQCAtNTgsMTQgKzE1OSwxNCBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gIAkJaWYgKGRybV9mcmFtZWJ1ZmZlcl9yZWFkX3Jl ZmNvdW50KCZjcmNfZGF0YS0+ZmIpID09IDApCj4gPiA+ICAJCQljb250aW51ZTsKPiA+ID4gIAo+ ID4gPiAtCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkgewo+ID4g PiArCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKPiA+ID4gIAkJ CXByaW1hcnlfY3JjID0gY3JjX2RhdGE7Cj4gPiA+IC0JCQlicmVhazsKPiA+ID4gLQkJfQo+ID4g PiArCQllbHNlCj4gPiA+ICsJCQljdXJzb3JfY3JjID0gY3JjX2RhdGE7Cj4gPiA+ICAJfQo+ID4g PiAgCj4gPiA+ICAJaWYgKHByaW1hcnlfY3JjKQo+ID4gPiAtCQljcmMzMiA9IF92a21zX2dldF9j cmMocHJpbWFyeV9jcmMpOwo+ID4gPiArCQljcmMzMiA9IF92a21zX2dldF9jcmMocHJpbWFyeV9j cmMsIGN1cnNvcl9jcmMpOwo+ID4gPiAgCj4gPiA+ICAJZHJtX2NydGNfYWRkX2NyY19lbnRyeShj cnRjLCB0cnVlLCBjcnRjX3N0YXRlLT5uX2ZyYW1lLCAmY3JjMzIpOwo+ID4gPiAgfQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ID4gaW5kZXggMzZlNTI0Zjc5MWZlLi4xNzM4NzVkYzM2 MWUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4gPiBAQCAtMjUsOCAr MjUsMTEgQEAgc3RhdGljIGNvbnN0IHUzMiB2a21zX2N1cnNvcl9mb3JtYXRzW10gPSB7Cj4gPiA+ ICB9Owo+ID4gPiAgCj4gPiA+ICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSB7Cj4gPiA+IC0Jc3RydWN0 IGRybV9yZWN0IHNyYzsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZiOwo+ID4gPiAr CXN0cnVjdCBkcm1fcmVjdCBzcmMsIGRzdDsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgb2Zmc2V0Owo+ ID4gPiArCXVuc2lnbmVkIGludCBwaXRjaDsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgY3BwOwo+ID4g PiAgfTsKPiA+ID4gIAo+ID4gPiAgLyoqCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMK PiA+ID4gaW5kZXggNDI4MjQ3ZDQwM2RjLi43MDQxMDA3Mzk2YWUgMTAwNjQ0Cj4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+ID4gQEAgLTg1LDE2ICs4NSwyMiBAQCBzdGF0aWMg dm9pZCB2a21zX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g PiA+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCj4gPiA+ICB7 Cj4gPiA+ICAJc3RydWN0IHZrbXNfcGxhbmVfc3RhdGUgKnZrbXNfcGxhbmVfc3RhdGU7Cj4gPiA+ ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+ID4gPiAg CXN0cnVjdCB2a21zX2NyY19kYXRhICpjcmNfZGF0YTsKPiA+ID4gIAo+ID4gPiAtCWlmICghcGxh bmUtPnN0YXRlLT5jcnRjIHx8ICFwbGFuZS0+c3RhdGUtPmZiKQo+ID4gPiArCWlmICghcGxhbmUt PnN0YXRlLT5jcnRjIHx8ICFmYikKPiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAgCj4gPiA+ICAJdmtt c19wbGFuZV9zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiA+ID4g Kwo+ID4gPiAgCWNyY19kYXRhID0gdmttc19wbGFuZV9zdGF0ZS0+Y3JjX2RhdGE7Cj4gPiA+ICAJ bWVtY3B5KCZjcmNfZGF0YS0+c3JjLCAmcGxhbmUtPnN0YXRlLT5zcmMsIHNpemVvZihzdHJ1Y3Qg ZHJtX3JlY3QpKTsKPiA+ID4gLQltZW1jcHkoJmNyY19kYXRhLT5mYiwgcGxhbmUtPnN0YXRlLT5m Yiwgc2l6ZW9mKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIpKTsKPiA+ID4gKwltZW1jcHkoJmNyY19k YXRhLT5kc3QsICZwbGFuZS0+c3RhdGUtPmRzdCwgc2l6ZW9mKHN0cnVjdCBkcm1fcmVjdCkpOwo+ ID4gPiArCW1lbWNweSgmY3JjX2RhdGEtPmZiLCBmYiwgc2l6ZW9mKHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIpKTsKPiA+ID4gIAlkcm1fZnJhbWVidWZmZXJfZ2V0KCZjcmNfZGF0YS0+ZmIpOwo+ID4g PiArCWNyY19kYXRhLT5vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXTsKPiA+ID4gKwljcmNfZGF0YS0+ cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPiA+ID4gKwljcmNfZGF0YS0+Y3BwID0gZmItPmZvcm1h dC0+Y3BwWzBdOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgaW50IHZrbXNfcGxhbmVf YXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiAtLSAKPiA+ID4gMi4x Ny4xCj4gPiA+IAo+ID4gCj4gPiAtLSAKPiA+IERhbmllbCBWZXR0ZXIKPiA+IFNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK