From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH i-g-t v4 2/7] chamelium: Calculate CRC from framebuffer instead of hardcoding it Date: Wed, 19 Jul 2017 14:11:16 +0300 Message-ID: <1500462676.1329.6.camel@linux.intel.com> References: <20170705080435.26789-1-paul.kocialkowski@linux.intel.com> <20170712145031.3531-1-paul.kocialkowski@linux.intel.com> <20170712145031.3531-3-paul.kocialkowski@linux.intel.com> <1500308952.4421.3.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id D7C0E89829 for ; Wed, 19 Jul 2017 11:11:37 +0000 (UTC) In-Reply-To: <1500308952.4421.3.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE3LTA3LTE3IGF0IDEyOjI5IC0wNDAwLCBMeXVkZSBQYXVsIHdyb3RlOgo+IE9u IFdlZCwgMjAxNy0wNy0xMiBhdCAxNzo1MCArMDMwMCwgUGF1bCBLb2NpYWxrb3dza2kgd3JvdGU6 Cj4gPiBUaGlzIGludHJvZHVjZXMgQ1JDIGNhbGN1bGF0aW9uIGZvciByZWZlcmVuY2UgZnJhbWVz LCBpbnN0ZWFkIG9mCj4gPiB1c2luZwo+ID4gaGFyZGNvZGVkIHZhbHVlcyBmb3IgdGhlbS4gVGhl IHJlbmRlcmluZyBvZiByZWZlcmVuY2UgZnJhbWVzIG1heQo+ID4gZGlmZmVyCj4gPiBmcm9tIG1h Y2hpbmUgdG8gbWFjaGluZSwgZXNwZWNpYWxseSBkdWUgdG8gZm9udCByZW5kZXJpbmcsIGFuZCB0 aGUKPiA+IGZyYW1lIGl0c2VsZiBtYXkgY2hhbmdlIHdpdGggc3Vic2VxdWVudCBJR1QgY2hhbmdl cy4KPiA+IAo+ID4gVGhlc2UgZGlmZmVyZW5jZXMgd291bGQgY2F1c2UgdGhlIENSQyBjaGVja3Mg dG8gZmFpbCBvbiBkaWZmZXJlbnQKPiA+IHNldHVwcy4gVGhpcyBhbGxvd3MgdGhlbSB0byBwYXNz IHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHVwLgo+IAo+IEp1c3Qgb25lIHF1ZXN0aW9uIGJlZm9yZSBJ IHB1c2ggdGhpcyBzaW5jZSBJIGRpZG4ndCB0aGluayBvZiB0ZXN0aW5nCj4gdGhpcyBwcmV2aW91 c2x5IGFuZCBkb24ndCBoYXZlIGFjY2VzcyB0byBteSBjaGFtZWxpdW0gYXQgdGhlIG1vbWVudC4K PiBIYXZlIHlvdSBtYWRlIHN1cmUgdGhhdCB0aGlzIGRvZXNuJ3QgYnJlYWsgdGhpbmdzIHdpdGgg aWd0IGlmIGEgdGVzdAo+IGdldHMgaW50ZXJydXB0ZWQgZHVlIHRvIGZhaWx1cmUgaW4gdGhlIG1p ZGRsZSBvZiBhbiBhc3luY2hyb25vdXMgQ1JDCj4gY2FsY3VsYXRpb24/CgpTbyBJIGhhdmUgbm93 IHRlc3RlZCB0aGF0IGEgZmFpbGVkIGFzc2VydCAoaW4gdGhlIG1haW4gdGhyZWFkKSBpbiB0aGUK bWlkZGxlIG9mIHRoZSB0aHJlYWRlZCBjYWxjdWxhdGlvbiB3aWxsIG5vdCBjYXVzZSBhbnkgc2Vn ZmF1bHQuIFRoZXJlIGlzCm5vIHJlYXNvbiB3aHkgaXQgc2hvdWxkLCBiZWNhdXNlIG5vbmUgb2Yg dGhlIHJlc3NvdXJjZXMgdXNlZCBmb3IgdGhlCmNhbGN1bGF0aW9uIGFyZSBsaWJlcmF0ZWQgcHJp b3IgdG8gdGhlIGVuZCBvZiB0aGUgcHJvY2Vzcy4gRXZlcnl0aGluZyBpcwpyZWFsbHkgY2xlYW5l ZCB1cCB3aGVuIHRoZSBwcm9jZXNzIGRpZXMuCgpPbiB0aGUgb3RoZXIgaGFuZCwgaXQgbWF5IGhh cHBlbiwgZHVlIHRvIHRoZSBjYWxsIHRvCmlndF9nZXRfY2Fpcm9fc3VyZmFjZSB0aGF0IGFuIGln dF9hc3NlcnQgZmFpbHMgaW4gdGhlIGNhbGN1bGF0aW9uCnRocmVhZCwgd2hpY2ggZGVmaW5pdGVs eSBjYXVzZXMgYSBzZWdmYXVsdC4KCkkgd2lsbCByZXdvcmsgdGhlIHBhdGNoZXMgc28gdGhhdCB0 aGUgY2FsbCB0byB0aGUgZnVuY3Rpb24gaXMgbWFkZSBwcmlvcgp0byBzdGFydGluZyB0aGUgdGhy ZWFkLCB0aHVzIGF2b2lkaW5nIGFueSBwb3NzaWJpbGl0eSBvZiBoaXR0aW5nIGEKZmFpbGVkIGln dF9hc3NlcnQgaW4gdGhlIHRocmVhZCBpdHNlbGYuCgo+IE90aGVyIHRoZW4gdGhhdCwgZXZlcnl0 aGluZyBoZXJlIGxvb2tzIGdvb2QuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgS29jaWFs a293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBs aWIvaWd0X2NoYW1lbGl1bS5jIHwgMTQzCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgbGliL2lndF9jaGFtZWxpdW0uaCB8ICAgNSAr Kwo+ID4gIHRlc3RzL2NoYW1lbGl1bS5jICAgfCAgNzcgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9u cygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9jaGFtZWxpdW0uYyBiL2xpYi9pZ3Rf Y2hhbWVsaXVtLmMKPiA+IGluZGV4IDkzMzkyYWY3Li5iYWE2Mzk5YyAxMDA2NDQKPiA+IC0tLSBh L2xpYi9pZ3RfY2hhbWVsaXVtLmMKPiA+ICsrKyBiL2xpYi9pZ3RfY2hhbWVsaXVtLmMKPiA+IEBA IC05NCw2ICs5NCwxNCBAQCBzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1lX2R1bXAgewo+ID4gIAlzdHJ1 Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQ7Cj4gPiAgfTsKPiA+ICAKPiA+ICtzdHJ1Y3QgY2hhbWVs aXVtX2ZiX2NyY19hc3luY19kYXRhIHsKPiA+ICsJaW50IGZkOwo+ID4gKwlzdHJ1Y3QgaWd0X2Zi ICpmYjsKPiA+ICsKPiA+ICsJcHRocmVhZF90IHRocmVhZF9pZDsKPiA+ICsJaWd0X2NyY190ICpy ZXQ7Cj4gPiArfTsKPiA+ICsKPiA+ICBzdHJ1Y3QgY2hhbWVsaXVtIHsKPiA+ICAJeG1scnBjX2Vu diBlbnY7Cj4gPiAgCXhtbHJwY19jbGllbnQgKmNsaWVudDsKPiA+IEBAIC05OTgsNiArMTAwNiwx NDEgQEAgaW50IGNoYW1lbGl1bV9nZXRfZnJhbWVfbGltaXQoc3RydWN0Cj4gPiBjaGFtZWxpdW0K PiA+ICpjaGFtZWxpdW0sCj4gPiAgCXJldHVybiByZXQ7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRp YyB1aW50MzJfdCBjaGFtZWxpdW1feHJnYl9oYXNoMTYoY29uc3QgdW5zaWduZWQgY2hhciAqYnVm ZmVyLAo+ID4gaW50IHdpZHRoLAo+ID4gKwkJCQkgICAgICBpbnQgaGVpZ2h0LCBpbnQgaywgaW50 IG0pCj4gPiArewo+ID4gKwl1bnNpZ25lZCBjaGFyIHIsIGcsIGI7Cj4gPiArCXVpbnQ2NF90IHN1 bSA9IDA7Cj4gPiArCXVpbnQ2NF90IGNvdW50ID0gMDsKPiA+ICsJdWludDY0X3QgdmFsdWU7Cj4g PiArCXVpbnQzMl90IGhhc2g7Cj4gPiArCWludCBpbmRleDsKPiA+ICsJaW50IGk7Cj4gPiArCj4g PiArCWZvciAoaT0wOyBpIDwgd2lkdGggKiBoZWlnaHQ7IGkrKykgewo+ID4gKwkJaWYgKChpICUg bSkgIT0gaykKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJCWluZGV4ID0gaSAqIDQ7Cj4g PiArCj4gPiArCQlyID0gYnVmZmVyW2luZGV4ICsgMl07Cj4gPiArCQlnID0gYnVmZmVyW2luZGV4 ICsgMV07Cj4gPiArCQliID0gYnVmZmVyW2luZGV4ICsgMF07Cj4gPiArCj4gPiArCQl2YWx1ZSA9 IHIgfCAoZyA8PCA4KSB8IChiIDw8IDE2KTsKPiA+ICsJCXN1bSArPSArK2NvdW50ICogdmFsdWU7 Cj4gPiArCX0KPiA+ICsKPiA+ICsJaGFzaCA9ICgoc3VtID4+IDApIF4gKHN1bSA+PiAxNikgXiAo c3VtID4+IDMyKSBeIChzdW0gPj4KPiA+IDQ4KSkgJiAweGZmZmY7Cj4gPiArCj4gPiArCXJldHVy biBoYXNoOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjaGFtZWxpdW1fZG9fY2FsY3Vs YXRlX2ZiX2NyYyhpbnQgZmQsIHN0cnVjdCBpZ3RfZmIKPiA+ICpmYiwKPiA+ICsJCQkJCSAgaWd0 X2NyY190ICpvdXQpCj4gPiArewo+ID4gKwl1bnNpZ25lZCBjaGFyICpidWZmZXI7Cj4gPiArCWNh aXJvX3N1cmZhY2VfdCAqZmJfc3VyZmFjZTsKPiA+ICsJaW50IG4gPSA0Owo+ID4gKwlpbnQgdywg aDsKPiA+ICsJaW50IGksIGo7Cj4gPiArCj4gPiArCS8qIEdldCB0aGUgY2Fpcm8gc3VyZmFjZSBm b3IgdGhlIGZyYW1lYnVmZmVyICovCj4gPiArCWZiX3N1cmZhY2UgPSBpZ3RfZ2V0X2NhaXJvX3N1 cmZhY2UoZmQsIGZiKTsKPiA+ICsKPiA+ICsJYnVmZmVyID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n ZXRfZGF0YShmYl9zdXJmYWNlKTsKPiA+ICsJdyA9IGZiLT53aWR0aDsKPiA+ICsJaCA9IGZiLT5o ZWlnaHQ7Cj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPiA+ICsJCWogPSBu IC0gaSAtIDE7Cj4gPiArCQlvdXQtPmNyY1tpXSA9IGNoYW1lbGl1bV94cmdiX2hhc2gxNihidWZm ZXIsIHcsIGgsCj4gPiBqLAo+ID4gbik7Cj4gPiArCX0KPiA+ICsKPiA+ICsJb3V0LT5uX3dvcmRz ID0gbjsKPiA+ICt9Cj4gPiArCj4gPiArLyoqCj4gPiArICogY2hhbWVsaXVtX2NhbGN1bGF0ZV9m Yl9jcmM6Cj4gPiArICogQGZkOiBUaGUgZHJtIGZpbGUgZGVzY3JpcHRvcgo+ID4gKyAqIEBmYjog VGhlIGZyYW1lYnVmZmVyIHRvIGNhbGN1bGF0ZSB0aGUgQ1JDIGZvcgo+ID4gKyAqCj4gPiArICog Q2FsY3VsYXRlcyB0aGUgQ1JDIGZvciB0aGUgcHJvdmlkZWQgZnJhbWVidWZmZXIsIHVzaW5nIHRo ZQo+ID4gQ2hhbWVsaXVtJ3MgQ1JDCj4gPiArICogYWxnb3JpdGhtLiBUaGlzIGNhbGN1bGF0ZXMg dGhlIENSQyBpbiBhIHN5bmNocm9ub3VzIGZhc2hpb24uCj4gPiArICoKPiA+ICsgKiBSZXR1cm5z OiBUaGUgY2FsY3VsYXRlZCBDUkMKPiA+ICsgKi8KPiA+ICtpZ3RfY3JjX3QgKmNoYW1lbGl1bV9j YWxjdWxhdGVfZmJfY3JjKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gPiArewo+ID4gKwlp Z3RfY3JjX3QgKnJldCA9IGNhbGxvYygxLCBzaXplb2YoaWd0X2NyY190KSk7Cj4gPiArCj4gPiAr CWNoYW1lbGl1bV9kb19jYWxjdWxhdGVfZmJfY3JjKGZkLCBmYiwgcmV0KTsKPiA+ICsKPiA+ICsJ cmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgKmNoYW1lbGl1bV9jYWxj dWxhdGVfZmJfY3JjX2FzeW5jX3dvcmsodm9pZCAqZGF0YSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBj aGFtZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYzsKPiA+ICsKPiA+ICsJZmJfY3JjID0g KHN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEgKikgZGF0YTsKPiA+ICsKPiA+ICsJ Y2hhbWVsaXVtX2RvX2NhbGN1bGF0ZV9mYl9jcmMoZmJfY3JjLT5mZCwgZmJfY3JjLT5mYiwKPiA+ IGZiX2NyYy0+cmV0KTsKPiA+ICsKPiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4g Ky8qKgo+ID4gKyAqIGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2xhdW5jaDoKPiA+ICsgKiBA ZmQ6IFRoZSBkcm0gZmlsZSBkZXNjcmlwdG9yCj4gPiArICogQGZiOiBUaGUgZnJhbWVidWZmZXIg dG8gY2FsY3VsYXRlIHRoZSBDUkMgZm9yCj4gPiArICoKPiA+ICsgKiBMYXVuY2hlcyB0aGUgQ1JD IGNhbGN1bGF0aW9uIGZvciB0aGUgcHJvdmlkZWQgZnJhbWVidWZmZXIsIHVzaW5nCj4gPiB0aGUK PiA+ICsgKiBDaGFtZWxpdW0ncyBDUkMgYWxnb3JpdGhtLiBUaGlzIGNhbGN1bGF0ZXMgdGhlIENS QyBpbiBhbgo+ID4gYXN5bmNocm9ub3VzCj4gPiArICogZmFzaGlvbi4KPiA+ICsgKgo+ID4gKyAq IFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgc2hvdWxkIGJlIHBhc3NlZCB0byBhIHN1YnNlcXVlbnQg Y2FsbCB0bwo+ID4gKyAqIGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX3Jlc3VsdC4gSXQgc2hv dWxkIG5vdCBiZSBmcmVlZC4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6IEFuIGludGVybWVkaWF0 ZSBzdHJ1Y3R1cmUgZm9yIHRoZSBDUkMgY2FsY3VsYXRpb24gd29yay4KPiA+ICsgKi8KPiA+ICtz dHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhCj4gPiAqY2hhbWVsaXVtX2NhbGN1bGF0 ZV9mYl9jcmNfYXN5bmNfc3RhcnQoaW50IGZkLAo+ID4gKwkJCQkJCQkJCQo+ID4gICAgc3RydWN0 IGlndF9mYiAqZmIpCj4gPiArewo+ID4gKwlzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19k YXRhICpmYl9jcmM7Cj4gPiArCj4gPiArCWZiX2NyYyA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0 Cj4gPiBjaGFtZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEpKTsKPiA+ICsJZmJfY3JjLT5yZXQgPSBj YWxsb2MoMSwgc2l6ZW9mKGlndF9jcmNfdCkpOwo+ID4gKwlmYl9jcmMtPmZkID0gZmQ7Cj4gPiAr CWZiX2NyYy0+ZmIgPSBmYjsKPiA+ICsKPiA+ICsJcHRocmVhZF9jcmVhdGUoJmZiX2NyYy0+dGhy ZWFkX2lkLCBOVUxMLAo+ID4gKwkJICAgICAgIGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2Fz eW5jX3dvcmssCj4gPiBmYl9jcmMpOwo+ID4gKwo+ID4gKwlyZXR1cm4gZmJfY3JjOwo+ID4gK30K PiA+ICsKPiA+ICsvKioKPiA+ICsgKiBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19yZXN1bHQ6 Cj4gPiArICogQGZiX2NyYzogQW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZSB3aXRoIHRocmVhZC1y ZWxhdGVkCj4gPiBpbmZvcm1hdGlvbgo+ID4gKyAqCj4gPiArICogQmxvY2tzIHVudGlsIHRoZSBh c3luY2hyb25vdXMgQ1JDIGNhbGN1bGF0aW9uIGlzIGZpbmlzaGVkLCBhbmQKPiA+IHRoZW4gcmV0 dXJucwo+ID4gKyAqIGl0cyByZXN1bHQuCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOiBUaGUgY2Fs Y3VsYXRlZCBDUkMKPiA+ICsgKi8KPiA+ICtpZ3RfY3JjX3QgKmNoYW1lbGl1bV9jYWxjdWxhdGVf ZmJfY3JjX2FzeW5jX2ZpbmlzaChzdHJ1Y3QKPiA+IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0 YSAqZmJfY3JjKQo+ID4gK3sKPiA+ICsJaWd0X2NyY190ICpyZXQ7Cj4gPiArCj4gPiArCXB0aHJl YWRfam9pbihmYl9jcmMtPnRocmVhZF9pZCwgTlVMTCk7Cj4gPiArCj4gPiArCXJldCA9IGZiX2Ny Yy0+cmV0Owo+ID4gKwlmcmVlKGZiX2NyYyk7Cj4gPiArCj4gPiArCXJldHVybiByZXQ7Cj4gPiAr fQo+ID4gKwo+ID4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2hhbWVsaXVtX2dldF9wb3J0X3R5cGUo c3RydWN0IGNoYW1lbGl1bQo+ID4gKmNoYW1lbGl1bSwKPiA+ICAJCQkJCSAgICBzdHJ1Y3QgY2hh bWVsaXVtX3BvcnQKPiA+ICpwb3J0KQo+ID4gIHsKPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2No YW1lbGl1bS5oIGIvbGliL2lndF9jaGFtZWxpdW0uaAo+ID4gaW5kZXggODEzMjJhZDIuLjJiZmJm ZGM3IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lndF9jaGFtZWxpdW0uaAo+ID4gKysrIGIvbGliL2ln dF9jaGFtZWxpdW0uaAo+ID4gQEAgLTM2LDYgKzM2LDcgQEAKPiA+ICBzdHJ1Y3QgY2hhbWVsaXVt Owo+ID4gIHN0cnVjdCBjaGFtZWxpdW1fcG9ydDsKPiA+ICBzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1l X2R1bXA7Cj4gPiArc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YTsKPiA+ICAKPiA+ ICBzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW1faW5pdChpbnQgZHJtX2ZkKTsKPiA+ICB2b2lk IGNoYW1lbGl1bV9kZWluaXQoc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtKTsKPiA+IEBAIC05 Miw2ICs5MywxMCBAQCBzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1lX2R1bXAKPiA+ICpjaGFtZWxpdW1f cG9ydF9kdW1wX3BpeGVscyhzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWwKPiA+ICAJCQkJCQkJc3Ry dWN0Cj4gPiBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiA+ICAJCQkJCQkJaW50IHgsIGludAo+ID4g eSwKPiA+ICAJCQkJCQkJaW50IHcsIGludAo+ID4gaCk7Cj4gPiAraWd0X2NyY190ICpjaGFtZWxp dW1fY2FsY3VsYXRlX2ZiX2NyYyhpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKTsKPiA+ICtzdHJ1 Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhCj4gPiAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9m Yl9jcmNfYXN5bmNfc3RhcnQoaW50IGZkLAo+ID4gKwkJCQkJCQkJCQo+ID4gICAgc3RydWN0IGln dF9mYiAqZmIpOwo+ID4gK2lndF9jcmNfdCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5 bmNfZmluaXNoKHN0cnVjdAo+ID4gY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhICpmYl9jcmMp Owo+ID4gIGludCBjaGFtZWxpdW1fZ2V0X2NhcHR1cmVkX2ZyYW1lX2NvdW50KHN0cnVjdCBjaGFt ZWxpdW0KPiA+ICpjaGFtZWxpdW0pOwo+ID4gIGludCBjaGFtZWxpdW1fZ2V0X2ZyYW1lX2xpbWl0 KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKPiA+ICAJCQkgICAgICBzdHJ1Y3QgY2hhbWVs aXVtX3BvcnQgKnBvcnQsCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvY2hhbWVsaXVtLmMgYi90ZXN0 cy9jaGFtZWxpdW0uYwo+ID4gaW5kZXggZTI2ZjA1NTcuLmRhOThkZTQ3IDEwMDY0NAo+ID4gLS0t IGEvdGVzdHMvY2hhbWVsaXVtLmMKPiA+ICsrKyBiL3Rlc3RzL2NoYW1lbGl1bS5jCj4gPiBAQCAt NDksNDMgKzQ5LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ID4gICNkZWZpbmUgSFBEX1RPR0dMRV9D T1VOVF9WR0EgNQo+ID4gICNkZWZpbmUgSFBEX1RPR0dMRV9DT1VOVF9EUF9IRE1JIDE1Cj4gPiAg Cj4gPiAtLyogUHJlLWNhbGN1bGF0ZWQgQ1JDcyBmb3IgdGhlIHBhdHRlcm4gZmIsIGZvciBhbGwg dGhlIG1vZGVzIGluIHRoZQo+ID4gZGVmYXVsdAo+ID4gLSAqIGNoYW1lbGl1bSBlZGlkCj4gPiAt ICovCj4gPiAtc3RydWN0IGNyY19lbnRyeSB7Cj4gPiAtCWludCB3aWR0aDsKPiA+IC0JaW50IGhl aWdodDsKPiA+IC0JaWd0X2NyY190IGNyYzsKPiA+IC19Owo+ID4gLQo+ID4gLSNkZWZpbmUgQ1JD X0VOVFJZKHdfLCBoXywgLi4uKSBcCj4gPiAtCXsgd18sIGhfLCB7IC5uX3dvcmRzID0gNCwgLmNy YyA9IHsgX19WQV9BUkdTX18gfSB9IH0KPiA+IC0KPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNy Y19lbnRyeSBwYXR0ZXJuX2ZiX2NyY3NbXSA9IHsKPiA+IC0JQ1JDX0VOVFJZKDE5MjAsIDEwODAs IDB4Zjg1OSwgMHhhNzUxLCAweDhjODEsIDB4NDVhMSksCj4gPiAtCUNSQ19FTlRSWSgxMjgwLCAg NzIwLCAweGNlYzIsIDB4NDI0NiwgMHg2Y2ZkLCAweGViNDMpLAo+ID4gLQlDUkNfRU5UUlkoMTAy NCwgIDc2OCwgMHg4NWU1LCAweGYwY2QsIDB4YWZlMywgMHg3ZjE4KSwKPiA+IC0JQ1JDX0VOVFJZ KCA4MDAsICA2MDAsIDB4NmIzOSwgMHgzMmI2LCAweDgzMWEsIDB4YjAzZSksCj4gPiAtCUNSQ19F TlRSWSggNjQwLCAgNDgwLCAweGExMjEsIDB4MjQ3MywgMHhiMTUwLCAweDhjNDcpLAo+ID4gLX07 Cj4gPiAtI3VuZGVmIENSQ19FTlRSWQo+ID4gLQo+ID4gLXN0YXRpYyBjb25zdCBpZ3RfY3JjX3Qg Kgo+ID4gLWdldF9wcmVjYWxjdWxhdGVkX2NyYyhzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQs IGludCB3LCBpbnQgaCkKPiA+IC17Cj4gPiAtCWludCBpOwo+ID4gLQljb25zdCBzdHJ1Y3QgY3Jj X2VudHJ5ICplbnRyeTsKPiA+IC0KPiA+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGF0 dGVybl9mYl9jcmNzKTsgaSsrKSB7Cj4gPiAtCQllbnRyeSA9ICZwYXR0ZXJuX2ZiX2NyY3NbaV07 Cj4gPiAtCj4gPiAtCQlpZiAoZW50cnktPndpZHRoID09IHcgJiYgZW50cnktPmhlaWdodCA9PSBo KQo+ID4gLQkJCXJldHVybiAmZW50cnktPmNyYzsKPiA+IC0JfQo+ID4gLQo+ID4gLQlyZXR1cm4g TlVMTDsKPiA+IC19Cj4gPiAtCj4gPiAgc3RhdGljIHZvaWQKPiA+ICByZXF1aXJlX2Nvbm5lY3Rv cl9wcmVzZW50KGRhdGFfdCAqZGF0YSwgdW5zaWduZWQgaW50IHR5cGUpCj4gPiAgewo+ID4gQEAg LTQyMiw3ICszODUsOCBAQCB0ZXN0X2Rpc3BsYXlfY3JjX3NpbmdsZShkYXRhX3QgKmRhdGEsIHN0 cnVjdAo+ID4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4gPiAgCWlndF9vdXRwdXRfdCAqb3V0cHV0 Owo+ID4gIAlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+ICAJaWd0X2NyY190ICpjcmM7Cj4gPiAt CWNvbnN0IGlndF9jcmNfdCAqZXhwZWN0ZWRfY3JjOwo+ID4gKwlpZ3RfY3JjX3QgKmV4cGVjdGVk X2NyYzsKPiA+ICsJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSAqZmJfY3JjOwo+ ID4gIAlzdHJ1Y3QgaWd0X2ZiIGZiOwo+ID4gIAlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gPiAg CWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+IEBAIC00NDUsMjQgKzQwOSwyMSBAQCB0 ZXN0X2Rpc3BsYXlfY3JjX3NpbmdsZShkYXRhX3QgKmRhdGEsIHN0cnVjdAo+ID4gY2hhbWVsaXVt X3BvcnQgKnBvcnQpCj4gPiAgCQkJCQkJICAgIDAsIDAsIDAsICZmYik7Cj4gPiAgCQlpZ3RfYXNz ZXJ0KGZiX2lkID4gMCk7Cj4gPiAgCj4gPiArCQlmYl9jcmMgPQo+ID4gY2hhbWVsaXVtX2NhbGN1 bGF0ZV9mYl9jcmNfYXN5bmNfc3RhcnQoZGF0YS0+ZHJtX2ZkLAo+ID4gKwkJCQkJCQkJJmZiCj4g PiApCj4gPiA7Cj4gPiAgCQllbmFibGVfb3V0cHV0KGRhdGEsIHBvcnQsIG91dHB1dCwgbW9kZSwg JmZiKTsKPiA+ICAKPiA+IC0JCWV4cGVjdGVkX2NyYyA9IGdldF9wcmVjYWxjdWxhdGVkX2NyYyhw b3J0LAo+ID4gLQkJCQkJCSAgICAgbW9kZS0KPiA+ID5oZGlzcGxheSwKPiA+IC0JCQkJCQkgICAg IG1vZGUtCj4gPiA+IHZkaXNwbGF5KTsKPiA+IAo+ID4gLQkJaWYgKCFleHBlY3RlZF9jcmMpIHsK PiA+IC0JCQlpZ3Rfd2FybigiTm8gcHJlY2FsY3VsYXRlZCBDUkMgZm91bmQgZm9yCj4gPiAlZHgl ZCwgc2tpcHBpbmcgQ1JDIGNoZWNrXG4iLAo+ID4gLQkJCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUt PnZkaXNwbGF5KTsKPiA+IC0JCQlnb3RvIG5leHQ7Cj4gPiAtCQl9Cj4gPiAtCj4gPiAgCQlpZ3Rf ZGVidWcoIlRlc3Rpbmcgc2luZ2xlIENSQyBmZXRjaFxuIik7Cj4gPiArCj4gPiAgCQljcmMgPSBj aGFtZWxpdW1fZ2V0X2NyY19mb3JfYXJlYShkYXRhLT5jaGFtZWxpdW0sCj4gPiBwb3J0LAo+ID4g IAkJCQkJCSAwLCAwLCAwLCAwKTsKPiA+ICsKPiA+ICsJCWV4cGVjdGVkX2NyYyA9Cj4gPiBjaGFt ZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY19maW5pc2goZmJfY3JjKTsKPiA+ICsKPiA+ICAJ CWlndF9hc3NlcnRfY3JjX2VxdWFsKGNyYywgZXhwZWN0ZWRfY3JjKTsKPiA+ICsJCWZyZWUoZXhw ZWN0ZWRfY3JjKTsKPiA+ICAJCWZyZWUoY3JjKTsKPiA+ICAKPiA+IC1uZXh0Ogo+ID4gIAkJZGlz YWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0KTsKPiA+ICAJCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZmIpOwo+ID4gIAl9Cj4gPiBAQCAtNDc4LDcgKzQzOSw4IEBAIHRlc3RfZGlz cGxheV9jcmNfbXVsdGlwbGUoZGF0YV90ICpkYXRhLCBzdHJ1Y3QKPiA+IGNoYW1lbGl1bV9wb3J0 ICpwb3J0KQo+ID4gIAlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiA+ICAJaWd0X3BsYW5lX3QgKnBy aW1hcnk7Cj4gPiAgCWlndF9jcmNfdCAqY3JjOwo+ID4gLQljb25zdCBpZ3RfY3JjX3QgKmV4cGVj dGVkX2NyYzsKPiA+ICsJaWd0X2NyY190ICpleHBlY3RlZF9jcmM7Cj4gPiArCXN0cnVjdCBjaGFt ZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYzsKPiA+ICAJc3RydWN0IGlndF9mYiBmYjsK PiA+ICAJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ID4gIAlkcm1Nb2RlQ29ubmVjdG9yICpjb25u ZWN0b3I7Cj4gPiBAQCAtNTAxLDE1ICs0NjMsMTAgQEAgdGVzdF9kaXNwbGF5X2NyY19tdWx0aXBs ZShkYXRhX3QgKmRhdGEsIHN0cnVjdAo+ID4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4gPiAgCQkJ CQkJICAgIDAsIDAsIDAsICZmYik7Cj4gPiAgCQlpZ3RfYXNzZXJ0KGZiX2lkID4gMCk7Cj4gPiAg Cj4gPiAtCQllbmFibGVfb3V0cHV0KGRhdGEsIHBvcnQsIG91dHB1dCwgbW9kZSwgJmZiKTsKPiA+ ICsJCWZiX2NyYyA9Cj4gPiBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY19zdGFydChk YXRhLT5kcm1fZmQsCj4gPiArCQkJCQkJCQkmZmIKPiA+ICkKPiA+IDsKPiA+ICAKPiA+IC0JCWV4 cGVjdGVkX2NyYyA9IGdldF9wcmVjYWxjdWxhdGVkX2NyYyhwb3J0LCBtb2RlLQo+ID4gPiBoZGlz cGxheSwKPiA+IAo+ID4gLQkJCQkJCSAgICAgbW9kZS0KPiA+ID4gdmRpc3BsYXkpOwo+ID4gCj4g PiAtCQlpZiAoIWV4cGVjdGVkX2NyYykgewo+ID4gLQkJCWlndF93YXJuKCJObyBwcmVjYWxjdWxh dGVkIENSQyBmb3VuZCBmb3IKPiA+ICVkeCVkLCBza2lwcGluZyBDUkMgY2hlY2tcbiIsCj4gPiAt CQkJCSBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ID4gLQkJCWdvdG8gbmV4dDsK PiA+IC0JCX0KPiA+ICsJCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAm ZmIpOwo+ID4gIAo+ID4gIAkJLyogV2Ugd2FudCB0byBrZWVwIHRoZSBkaXNwbGF5IHJ1bm5pbmcg Zm9yIGEgbGl0dGxlCj4gPiBiaXQsIHNpbmNlCj4gPiAgCQkgKiB0aGVyZSdzIGFsd2F5cyB0aGUg cG90ZW50aWFsIHRoZSBkcml2ZXIgaXNuJ3QKPiA+IGFibGUgdG8ga2VlcAo+ID4gQEAgLTUyMCwx MSArNDc3LDE1IEBAIHRlc3RfZGlzcGxheV9jcmNfbXVsdGlwbGUoZGF0YV90ICpkYXRhLCBzdHJ1 Y3QKPiA+IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQo+ID4gIAkJCQkJCSAgICZjYXB0dXJlZF9mcmFt ZV8KPiA+IGMKPiA+IG91bnQpOwo+ID4gIAo+ID4gIAkJaWd0X2RlYnVnKCJDYXB0dXJlZCAlZCBm cmFtZXNcbiIsCj4gPiBjYXB0dXJlZF9mcmFtZV9jb3VudCk7Cj4gPiArCj4gPiArCQlleHBlY3Rl ZF9jcmMgPQo+ID4gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNfZmluaXNoKGZiX2Ny Yyk7Cj4gPiArCj4gPiAgCQlmb3IgKGogPSAwOyBqIDwgY2FwdHVyZWRfZnJhbWVfY291bnQ7IGor KykKPiA+ICAJCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjW2pdLAo+ID4gZXhwZWN0ZWRfY3Jj KTsKPiA+ICsKPiA+ICsJCWZyZWUoZXhwZWN0ZWRfY3JjKTsKPiA+ICAJCWZyZWUoY3JjKTsKPiA+ ICAKPiA+IC1uZXh0Ogo+ID4gIAkJZGlzYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0KTsK PiA+ICAJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmIpOwo+ID4gIAl9Ci0tIApQYXVs IEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29tPgpJbnRlbCBG aW5sYW5kIE95IC0gQklDIDAzNTc2MDYtNCAtIFdlc3RlbmRpbmthdHUgNywgMDIxNjAgRXNwb28s IEZpbmxhbmQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==