From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH i-g-t v3 1/4] chamelium: Calculate CRC from framebuffer instead of hardcoding it Date: Wed, 05 Jul 2017 16:34:00 -0400 Message-ID: <1499286840.20388.4.camel@redhat.com> References: <20170705080435.26789-1-paul.kocialkowski@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 573F66E51F for ; Wed, 5 Jul 2017 20:34:03 +0000 (UTC) In-Reply-To: <20170705080435.26789-1-paul.kocialkowski@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paul Kocialkowski , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U28gYSBjb3VwbGUgb2Ygbm90ZXMgaGVyZSB0aGF0IHdpbGwgbWFrZSBpdCBhIGxvdCBlYXNpZXIg Zm9yIG1lIHRvCnJldmlldyB0aGVzZSBpbiB0aGUgZnV0dXJlCgogKiBXaGVuIHlvdSdyZSBkb2lu ZyBhIG5ldyByZXZpc2lvbiBvZiBhIHBhdGNoIHNlcmllcywgaXQncyBoZWxwZnVsIHRvCiAgIGtl ZXAgaXQgaW4gdGhlIHNhbWUgZW1haWwgdGhyZWFkIGFzIHRoZSBvcmlnaW5hbCB2MSBzbyBpdCdz IGVhc2llcgogICB0byBrZWVwIHRyYWNrIG9mIGluIHBlb3BsZSdzIG1haWwgY2xpZW50cyAoYXMg d2VsbCBhcyBhdm9pZGluZwogICBhY2NpZGVudGFsbHkgcmV2aWV3aW5nIG9sZGVyIHBhdGNoIHZl cnNpb25zLiBJIHVzdWFsbHkgZG8gc29tZXRoaW5nCiAgIGxpa2UgdGhpcyAob3RoZXIgcHJvamVj dHMgbWlnaHQgcmVxdWVzdCB5b3UgZG8gdGhpcyBzbGlnaHRseQogICBkaWZmZXJlbnRseSwgYnV0 IHRoaXMgc2hvdWxkIGJlIGZpbmUgaGVyZSk6CiAgICAqIFtQQVRDSCAwLzJdIENsZWFuaW5nIHVw IHRoZSBhbGlnbm1lbnQgb2YgdmFyaW91cyBmb29zCiAgICAgICAqIFtQQVRDSCAxLzJdIEZvbyB0 aGUgYmFyLCBub3QgdGhlIGJhegogICAgICAgKiBbUEFUQ0ggMi8yXSBJbnRyb2R1Y2UgdGhlIGFt YXppbmcgbmV3IGZvb19iYXIKICAgICAgICogW1BBVENIIHYyIDAvMl0gQ2xlYW5pbmcgdXAgdGhl IGFsaWdubWVudCBvZiB2YXJpb3VzIGZvb3MKICAgICAgICAgICogW1BBVENIIHYyIDEvMl0gRm9v IHRoZSBiYXIsIG5vdCB0aGUgYmF6CiAgICAgICAgICAqIFtQQVRDSCB2MiAyLzJdIEludHJvZHVj ZSB0aGUgYW1hemluZyBuZXcgZm9vX2JhcgogICAgICAgKiBbUEFUQ0ggdjMgMC8yXSBDbGVhbmlu ZyB1cCB0aGUgYWxpZ25tZW50IG9mIHZhcmlvdXMgZm9vcwogICAgICAgICAgKiBbUEFUQ0ggdjMg MS8yXSBGb28gdGhlIGJhciwgbm90IHRoZSBiYXoKICAgICAgICAgICogW1BBVENIIHYzIDIvMl0g SW50cm9kdWNlIHRoZSBhbWF6aW5nIG5ldyBmb29fYmFyCiAqIFRyeSBub3QgdG8gZ3JvdXAgdW5y ZWxhdGVkIHBhdGNoZXMgdG9nZXRoZXIgaW4gdGhlIHNhbWUgdGhyZWFkLiBUaGlzCiAgIGFsc28g bWFrZXMgc29ydGluZyB0aHJvdWdoIGFsbCBvZiB0aGVtIGEgbGl0dGxlIG1vcmUgZGlmZmljdWx0 LgogKiBXaGVuIHlvdSBtYWtlIG5ldyByZXZpc2lvbnMgb2YgcGF0Y2hlcywgaXQncyB2ZXJ5IHVz ZWZ1bCBpZiB5b3UgYWxzbwogICBpbmNsdWRlIGEgbGlzdCBvZiBjaGFuZ2VzIHlvdSBtYWRlIHRv IHRoZSBwYXRjaCBzaW5jZSB0aGUgbGFzdAogICByZXZpc2lvbi4gSXQgZG9lc24ndCBuZWVkIHRv IGJlIHZlcnkgZmluZWx5IGRldGFpbGVkLCBzb21ldGhpbmcgbGlrZQogICB0aGlzIHdvdWxkIHN1 ZmZpY2U6CiAgICAqIFZhcmlvdXMgc3R5bGUgZml4ZXMKICAgICogUmVuYW1lIGJheiB0byBtb28s IGFkZCBjb3cgbm9pc2VzCiAgICAqIFNwbGl0IGluaXRfY293KCkgaW50byBpbml0X3doaXRlX2Nv dygpIGFuZCBpbml0X2JsYWNrX2NvdygpCiAgICAgIGluc3RlYWQgb2YgaGFuZGxpbmcgYm90aCBr aW5kcyBvZiBjb3dzIGluIHRoZSBzYW1lIGZ1bmN0aW9uCiAgICAqIEZpeCBkb2N1bWVudGF0aW9u CiAgICBGb3IgaW50ZWwtZ3B1LXRvb2xzLCBpdCdzIGZpbmUgdG8ganVzdCBzdGljayB0aGlzIGlu IHRoZSBjb21taXQKICAgIG1lc3NhZ2UuIE90aGVyIHByb2plY3RzIG1heSByZXF1ZXN0IHlvdSBw dXQgdGhlIGNoYW5nZWxvZyBiZWxvdyB0aGUKICAgIC0tLS0tIHJpZ2h0IGFib3ZlIHRoZSBkaWZm IHN0YXRzICh0aGlzIGFsbG93cyB0aGUgY29tbWVudHMgbm90IHRvCiAgICBnZXQgaW5jbHVkZWQg aW4gdGhlIGZpbmFsIGNvbW1pdCBtZXNzYWdlKQogKiBVbmxlc3MgdGhleSBhcmUgYWxsIHZlcnkg c21hbGwgYW5kIGxlc3MgaW1wb3J0YW50IGZpeGVzLCBpbmNsdWRpbmcKICAgY292ZXIgbGV0dGVy cyBoZWxwcyBhcyB3ZWxsIHNpbmNlIGl0IGxldHMgcGF0Y2h3b3JrIGdyb3VwIHRvZ2V0aGVyCiAg IHBhdGNoIHNlcmllcyBsaWtlIHRoaXMuCgpBbnl3YXksIGJhY2sgdG8gdGhlIGFjdHVhbCBwYXRj aDoKQSBnb29kIHN0YXJ0ISBXaWxsIG5lZWQgYSBjb3VwbGUgb2YgY2hhbmdlcyB0aG91Z2gKCk9u IFdlZCwgMjAxNy0wNy0wNSBhdCAxMTowNCArMDMwMCwgUGF1bCBLb2NpYWxrb3dza2kgd3JvdGU6 Cj4gVGhpcyBpbnRyb2R1Y2VzIENSQyBjYWxjdWxhdGlvbiBmb3IgcmVmZXJlbmNlIGZyYW1lcywg aW5zdGVhZCBvZgo+IHVzaW5nCj4gaGFyZGNvZGVkIHZhbHVlcyBmb3IgdGhlbS4gVGhlIHJlbmRl cmluZyBvZiByZWZlcmVuY2UgZnJhbWVzIG1heQo+IGRpZmZlcgo+IGZyb20gbWFjaGluZSB0byBt YWNoaW5lLCBlc3BlY2lhbGx5IGR1ZSB0byBmb250IHJlbmRlcmluZywgYW5kIHRoZQo+IGZyYW1l IGl0c2VsZiBtYXkgY2hhbmdlIHdpdGggc3Vic2VxdWVudCBJR1QgY2hhbmdlcy4KPiAKPiBUaGVz ZSBkaWZmZXJlbmNlcyB3b3VsZCBjYXVzZSB0aGUgQ1JDIGNoZWNrcyB0byBmYWlsIG9uIGRpZmZl cmVudAo+IHNldHVwcy4gVGhpcyBhbGxvd3MgdGhlbSB0byBwYXNzIHJlZ2FyZGxlc3Mgb2YgdGhl IHNldHVwLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lh bGtvd3NraUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gwqBsaWIvaWd0X2NoYW1lbGl1bS5jIHwg MTYwCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+IMKgbGliL2lndF9jaGFtZWxpdW0uaCB8wqDCoMKgNSArKwo+IMKgdGVzdHMvY2hhbWVsaXVt LmPCoMKgwqB8wqDCoDc2ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiDCoDMgZmlsZXMgY2hh bmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwo+IGluZGV4IGJmZjA4 YzBlLi5iOWQ4MGI2YiAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2NoYW1lbGl1bS5jCj4gKysrIGIv bGliL2lndF9jaGFtZWxpdW0uYwo+IEBAIC05NCw2ICs5NCwxNCBAQCBzdHJ1Y3QgY2hhbWVsaXVt X2ZyYW1lX2R1bXAgewo+IMKgCXN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydDsKPiDCoH07Cj4g wqAKPiArc3RydWN0IGNoYW1lbGl1bV9mYl9jcmMgewo+ICsJaW50IGZkOwo+ICsJc3RydWN0IGln dF9mYiAqZmI7Cj4gKwo+ICsJcHRocmVhZF90IHRocmVhZF9pZDsKPiArCWlndF9jcmNfdCAqcmV0 Owo+ICt9Owo+ICsKVGhlIG5hbWUgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgYSBsaXR0bGUgbWlzbGVh ZGluZywgYmVjYXVzZSBub3cgd2UgaGF2ZQphbiBBUEkgdGhhdCBleHBvc2VzIGJvdGggYSBzdHJ1 Y3QgY2hhbWVsaXVtX2ZiX2NyYyBzdHJ1Y3QgaW4gYWRkaXRpb24KdG8gdGhlIGlndF9jcmNfdCBz dHJ1Y3QuIFJlbmFtZSB0aGlzIHRvIHNvbWV0aGluZyBsaWtlIHN0cnVjdApjaGFtZWxpdW1fZmJf Y3JjX3dvcmsKCj4gwqBzdHJ1Y3QgY2hhbWVsaXVtIHsKPiDCoAl4bWxycGNfZW52IGVudjsKPiDC oAl4bWxycGNfY2xpZW50ICpjbGllbnQ7Cj4gQEAgLTEwMDMsNiArMTAxMSwxNTggQEAgaW50IGNo YW1lbGl1bV9nZXRfZnJhbWVfbGltaXQoc3RydWN0Cj4gY2hhbWVsaXVtICpjaGFtZWxpdW0sCj4g wqAJcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgdWludDMyX3QgY2hhbWVsaXVtX3hy Z2JfaGFzaDE2KHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgaW50Cj4gd2lkdGgsCj4gKwkJCQnCoMKg wqDCoMKgwqBpbnQgaGVpZ2h0LCBpbnQgaywgaW50IG0pCj4gK3sKV2UncmUgbm90IG1vZGlmeWlu ZyBidWZmZXIsIHNvIG1ha2UgaXQgYSBjb25zdC4gQXMgd2VsbCwgZmVlbCBmcmVlIHRvCm1hcmsg dGhpcyBmdW5jdGlvbiBhcyBpbmxpbmUuCgo+ICsJdW5zaWduZWQgY2hhciByLCBnLCBiOwo+ICsJ dWludDY0X3Qgc3VtID0gMDsKPiArCXVpbnQ2NF90IGNvdW50ID0gMDsKPiArCXVpbnQ2NF90IHZh bHVlOwo+ICsJdWludDMyX3QgaGFzaDsKPiArCWludCBpbmRleDsKPiArCWludCBpOwo+ICsKPiAr CWZvciAoaT0wOyBpIDwgd2lkdGggKiBoZWlnaHQ7IGkrKykgewo+ICsJCWlmICgoaSAlIG0pICE9 IGspCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpbmRleCA9IGkgKiA0Owo+ICsKPiArCQlyID0g YnVmZmVyW2luZGV4ICsgMl07Cj4gKwkJZyA9IGJ1ZmZlcltpbmRleCArIDFdOwo+ICsJCWIgPSBi dWZmZXJbaW5kZXggKyAwXTsKPiArCj4gKwkJdmFsdWUgPSByIHwgKGcgPDwgOCkgfCAoYiA8PCAx Nik7Cj4gKwkJc3VtICs9ICsrY291bnQgKiB2YWx1ZTsKPiArCX0KPiArCj4gKwloYXNoID0gKChz dW0gPj4gMCkgXiAoc3VtID4+IDE2KSBeIChzdW0gPj4gMzIpIF4gKHN1bSA+Pgo+IDQ4KSkgJiAw eGZmZmY7Cj4gKwo+ICsJcmV0dXJuIGhhc2g7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBjaGFtZWxp dW1fY2FsY3VsYXRlX2ZiX2NyYzoKPiArICogQGZkOiBUaGUgZHJtIGZpbGUgZGVzY3JpcHRvcgo+ ICsgKiBAZmI6IFRoZSBmcmFtZWJ1ZmZlciB0byBjYWxjdWxhdGUgdGhlIENSQyBmb3IKPiArICoK PiArICogQ2FsY3VsYXRlcyBhIENSQyBmb3IgdGhlIHByb3ZpZGVkIGZyYW1lYnVmZmVyLCB0aGUg c2FtZSB3YXkgYXMKPiB0aGUgQ2hhbWVsaXVtLgpDYWxjdWxhdGUgdGhlIENSQyBmb3IgdGhlIHBy b3ZpZGVkIGZyYW1lYnVmZmVyLCB1c2luZyB0aGUgQ2hhbWVsaXVtJ3MKQ1JDIGFsZ29yaXRobQo+ ICsgKiBUaGlzIGNhbGN1bGF0ZXMgdGhlIENSQyBpbiBhIG5vbi10aHJlYWRlZCBmYXNoaW9uLgo+ ICsgKgo+ICsgKiBSZXR1cm5zOiBUaGUgY2FsY3VsYXRlZCBDUkMKPiArICovCj4gK2lndF9jcmNf dCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmMoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikK PiArewo+ICsJaWd0X2NyY190ICpyZXQ7Cj4gKwljYWlyb190ICpjcjsKPiArCWNhaXJvX3N1cmZh Y2VfdCAqZmJfc3VyZmFjZTsKPiArCXVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKPiArCWludCBuID0g NDsKPiArCWludCB3LCBoOwo+ICsJaW50IGksIGo7Cj4gKwo+ICsJcmV0ID0gY2FsbG9jKDEsIHNp emVvZihpZ3RfY3JjX3QpKTsKPiArCj4gKwkvKiBHZXQgdGhlIGNhaXJvIHN1cmZhY2UgZm9yIHRo ZSBmcmFtZWJ1ZmZlciAqLwo+ICsJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChmZCwgZmIpOwo+ICsJ ZmJfc3VyZmFjZSA9IGNhaXJvX2dldF90YXJnZXQoY3IpOwo+ICsJY2Fpcm9fc3VyZmFjZV9yZWZl cmVuY2UoZmJfc3VyZmFjZSk7Cj4gKwljYWlyb19kZXN0cm95KGNyKTsKPiArCj4gKwlidWZmZXIg PSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGZiX3N1cmZhY2UpOwo+ICsJdyA9IGZiLT53 aWR0aDsKPiArCWggPSBmYi0+aGVpZ2h0Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBuOyBpKysp IHsKPiArCQlqID0gbiAtIGkgLSAxOwo+ICsJCXJldC0+Y3JjW2ldID0gY2hhbWVsaXVtX3hyZ2Jf aGFzaDE2KGJ1ZmZlciwgdywgaCwgaiwKPiBuKTsKPiArCX0KPiArCj4gKwlyZXQtPm5fd29yZHMg PSBuOwo+ICsJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGZiX3N1cmZhY2UpOwo+ICsKPiArCXJldHVy biByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkICpjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2Ny Y190aHJlYWQodm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmMgKmZi X2NyYyA9IChzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyYwo+ICopIGRhdGE7Cj4gKwljYWlyb190ICpj cjsKPiArCWNhaXJvX3N1cmZhY2VfdCAqZmJfc3VyZmFjZTsKPiArCXVuc2lnbmVkIGNoYXIgKmJ1 ZmZlcjsKPiArCWludCBuID0gNDsKPiArCWludCB3LCBoOwo+ICsJaW50IGksIGo7Cj4gKwo+ICsJ LyogR2V0IHRoZSBjYWlybyBzdXJmYWNlIGZvciB0aGUgZnJhbWVidWZmZXIgKi8KPiArCWNyID0g aWd0X2dldF9jYWlyb19jdHgoZmJfY3JjLT5mZCwgZmJfY3JjLT5mYik7Cj4gKwlmYl9zdXJmYWNl ID0gY2Fpcm9fZ2V0X3RhcmdldChjcik7Cj4gKwljYWlyb19zdXJmYWNlX3JlZmVyZW5jZShmYl9z dXJmYWNlKTsKPiArCWNhaXJvX2Rlc3Ryb3koY3IpOwo+ICsKPiArCWJ1ZmZlciA9IGNhaXJvX2lt YWdlX3N1cmZhY2VfZ2V0X2RhdGEoZmJfc3VyZmFjZSk7Cj4gKwl3ID0gZmJfY3JjLT5mYi0+d2lk dGg7Cj4gKwloID0gZmJfY3JjLT5mYi0+aGVpZ2h0Owo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBu OyBpKyspIHsKPiArCQlqID0gbiAtIGkgLSAxOwo+ICsJCWZiX2NyYy0+cmV0LT5jcmNbaV0gPSBj aGFtZWxpdW1feHJnYl9oYXNoMTYoYnVmZmVyLAo+IHcsIGgsIGosIG4pOwo+ICsJfQo+ICsKPiAr CWZiX2NyYy0+cmV0LT5uX3dvcmRzID0gbjsKPiArCWNhaXJvX3N1cmZhY2VfZGVzdHJveShmYl9z dXJmYWNlKTsKPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGNoYW1l bGl1bV9jYWxjdWxhdGVfZmJfY3JjX2xhdW5jaDoKPiArICogQGZkOiBUaGUgZHJtIGZpbGUgZGVz Y3JpcHRvcgo+ICsgKiBAZmI6IFRoZSBmcmFtZWJ1ZmZlciB0byBjYWxjdWxhdGUgdGhlIENSQyBm b3IKPiArICoKPiArICogTGF1bmNoZXMgdGhlIENSQyBjYWxjdWxhdGlvbiBmb3IgdGhlIHByb3Zp ZGVkIGZyYW1lYnVmZmVyLCB0aGUKPiBzYW1lIHdheSBhcwo+ICsgKiB0aGUgQ2hhbWVsaXVtLiBU aGlzIGNhbGN1bGF0ZXMgdGhlIENSQyBpbiBhIHRocmVhZGVkIGZhc2hpb24uCj4gKyAqIFRocmVh ZC1yZWxhdGVkIGluZm9ybWF0aW9uIGlzIHJldHVybmVkIGFuZCBzaG91bGQgYmUgcGFzc2VkIHRv IGEKPiBzdWJzZXF1ZW50Cj4gKyAqIGNhbGwgdG8gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNf cmVzdWx0LiBJdCBzaG91bGQgbm90IGJlCj4gZnJlZWQuCj4gKyAqCj4gKyAqIFJldHVybnM6IEFu IGludGVybWVkaWF0ZSBzdHJ1Y3R1cmUgd2l0aCB0aHJlYWQtcmVsYXRlZAo+IGluZm9ybWF0aW9u ClRoZSB1c2VyIGRvZXNuJ3QgbmVlZCB0byBrbm93IGFib3V0IHRoZSBtYWdpYyBpbnNpZGUgdGhl IHN0cnVjdHVyZSwKc2luY2Ugd2UncmUgbm90IGdvaW5nIHRvIGV4cG9zZSBpdCdzIGRlZmluaXRp b24gb3V0c2lkZSBvZiB0aGlzIGZpbGUKYW55d2F5Lgo+ICsgKi8KPiArc3RydWN0IGNoYW1lbGl1 bV9mYl9jcmMgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2xhdW5jaChpbnQgZmQsCj4gKwkJ CQkJCQnCoMKgwqBzdHJ1Y3QKPiBpZ3RfZmIgKmZiKQo+ICt7Cj4gKwlzdHJ1Y3QgY2hhbWVsaXVt X2ZiX2NyYyAqZmJfY3JjOwo+ICsKPiArCWZiX2NyYyA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0 IGNoYW1lbGl1bV9mYl9jcmMpKTsKPiArCWZiX2NyYy0+cmV0ID0gY2FsbG9jKDEsIHNpemVvZihp Z3RfY3JjX3QpKTsKPiArCWZiX2NyYy0+ZmQgPSBmZDsKPiArCWZiX2NyYy0+ZmIgPSBmYjsKPiAr Cj4gKwlwdGhyZWFkX2NyZWF0ZSgmZmJfY3JjLT50aHJlYWRfaWQsIE5VTEwsCj4gKwkJwqDCoMKg wqDCoMKgwqBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY190aHJlYWQsIGZiX2NyYyk7Cj4gKwo+ ICsJcmV0dXJuIGZiX2NyYzsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGNoYW1lbGl1bV9jYWxjdWxh dGVfZmJfY3JjX3Jlc3VsdDoKPiArICogQGZiX2NyYzogQW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVy ZSB3aXRoIHRocmVhZC1yZWxhdGVkCj4gaW5mb3JtYXRpb24KPiArICoKPiArICogUHJvdmlkZXMg dGhlIHJlc3VsdCBmb3IgdGhlIHByZXZpb3VzbHktbGF1bmNoZWQgQ1JDIGNhbGN1bGF0aW9uLgpC bG9ja3MgdW50aWwgdGhlIGFzeW5jIENSQyBjYWxjdWxhdGlvbiBpcyBmaW5pc2hlZCwgYW5kIHRo ZW4gcmV0dXJucwp0aGUgcmVzdWx0Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOiBUaGUgY2FsY3VsYXRl ZCBDUkMKPiArICovCj4gK2lndF9jcmNfdCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfcmVz dWx0KHN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjCj4gKmZiX2NyYykKPiArewo+ICsJaWd0X2NyY190 ICpyZXQ7Cj4gKwo+ICsJcHRocmVhZF9qb2luKGZiX2NyYy0+dGhyZWFkX2lkLCBOVUxMKTsKPiAr Cj4gKwlyZXQgPSBmYl9jcmMtPnJldDsKPiArCWZyZWUoZmJfY3JjKTsKPiArCj4gKwlyZXR1cm4g cmV0Owo+ICt9Cj4gKwo+IMKgc3RhdGljIHVuc2lnbmVkIGludCBjaGFtZWxpdW1fZ2V0X3BvcnRf dHlwZShzdHJ1Y3QgY2hhbWVsaXVtCj4gKmNoYW1lbGl1bSwKPiDCoAkJCQkJwqDCoMKgwqBzdHJ1 Y3QgY2hhbWVsaXVtX3BvcnQKPiAqcG9ydCkKPiDCoHsKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9j aGFtZWxpdW0uaCBiL2xpYi9pZ3RfY2hhbWVsaXVtLmgKPiBpbmRleCA4MTMyMmFkMi4uZTUxY2Y0 ZjkgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9jaGFtZWxpdW0uaAo+ICsrKyBiL2xpYi9pZ3RfY2hh bWVsaXVtLmgKPiBAQCAtMzYsNiArMzYsNyBAQAo+IMKgc3RydWN0IGNoYW1lbGl1bTsKPiDCoHN0 cnVjdCBjaGFtZWxpdW1fcG9ydDsKPiDCoHN0cnVjdCBjaGFtZWxpdW1fZnJhbWVfZHVtcDsKPiAr c3RydWN0IGNoYW1lbGl1bV9mYl9jcmM7Cj4gwqAKPiDCoHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1l bGl1bV9pbml0KGludCBkcm1fZmQpOwo+IMKgdm9pZCBjaGFtZWxpdW1fZGVpbml0KHN0cnVjdCBj aGFtZWxpdW0gKmNoYW1lbGl1bSk7Cj4gQEAgLTkyLDYgKzkzLDEwIEBAIHN0cnVjdCBjaGFtZWxp dW1fZnJhbWVfZHVtcAo+ICpjaGFtZWxpdW1fcG9ydF9kdW1wX3BpeGVscyhzdHJ1Y3QgY2hhbWVs aXVtICpjaGFtZWwKPiDCoAkJCQkJCQlzdHJ1Y3QKPiBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiDC oAkJCQkJCQlpbnQgeCwgaW50Cj4geSwKPiDCoAkJCQkJCQlpbnQgdywgaW50Cj4gaCk7Cj4gK2ln dF9jcmNfdCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmMoaW50IGZkLCBzdHJ1Y3QgaWd0X2Zi ICpmYik7Cj4gK3N0cnVjdCBjaGFtZWxpdW1fZmJfY3JjICpjaGFtZWxpdW1fY2FsY3VsYXRlX2Zi X2NyY19sYXVuY2goaW50IGZkLAo+ICsJCQkJCQkJwqDCoMKgc3RydWN0Cj4gaWd0X2ZiICpmYik7 Cj4gK2lndF9jcmNfdCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfcmVzdWx0KHN0cnVjdCBj aGFtZWxpdW1fZmJfY3JjCj4gKmZiX2NyYyk7Cj4gwqBpbnQgY2hhbWVsaXVtX2dldF9jYXB0dXJl ZF9mcmFtZV9jb3VudChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pOwo+IMKgaW50IGNoYW1l bGl1bV9nZXRfZnJhbWVfbGltaXQoc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAo+IMKgCQkJ wqDCoMKgwqDCoMKgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAo+IGRpZmYgLS1naXQgYS90 ZXN0cy9jaGFtZWxpdW0uYyBiL3Rlc3RzL2NoYW1lbGl1bS5jCj4gaW5kZXggZTMwNjc2NjQuLjNm ZDJiMDJjIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2NoYW1lbGl1bS5jCj4gKysrIGIvdGVzdHMvY2hh bWVsaXVtLmMKPiBAQCAtNDksNDMgKzQ5LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+IMKgI2RlZmlu ZSBIUERfVE9HR0xFX0NPVU5UX1ZHQSA1Cj4gwqAjZGVmaW5lIEhQRF9UT0dHTEVfQ09VTlRfRFBf SERNSSAxNQo+IMKgCj4gLS8qIFByZS1jYWxjdWxhdGVkIENSQ3MgZm9yIHRoZSBwYXR0ZXJuIGZi LCBmb3IgYWxsIHRoZSBtb2RlcyBpbiB0aGUKPiBkZWZhdWx0Cj4gLSAqIGNoYW1lbGl1bSBlZGlk Cj4gLSAqLwo+IC1zdHJ1Y3QgY3JjX2VudHJ5IHsKPiAtCWludCB3aWR0aDsKPiAtCWludCBoZWln aHQ7Cj4gLQlpZ3RfY3JjX3QgY3JjOwo+IC19Owo+IC0KPiAtI2RlZmluZSBDUkNfRU5UUlkod18s IGhfLCAuLi4pIFwKPiAtCXsgd18sIGhfLCB7IC5uX3dvcmRzID0gNCwgLmNyYyA9IHsgX19WQV9B UkdTX18gfSB9IH0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3JjX2VudHJ5IHBhdHRlcm5f ZmJfY3Jjc1tdID0gewo+IC0JQ1JDX0VOVFJZKDE5MjAsIDEwODAsIDB4Zjg1OSwgMHhhNzUxLCAw eDhjODEsIDB4NDVhMSksCj4gLQlDUkNfRU5UUlkoMTI4MCzCoMKgNzIwLCAweGNlYzIsIDB4NDI0 NiwgMHg2Y2ZkLCAweGViNDMpLAo+IC0JQ1JDX0VOVFJZKDEwMjQswqDCoDc2OCwgMHg4NWU1LCAw eGYwY2QsIDB4YWZlMywgMHg3ZjE4KSwKPiAtCUNSQ19FTlRSWSggODAwLMKgwqA2MDAsIDB4NmIz OSwgMHgzMmI2LCAweDgzMWEsIDB4YjAzZSksCj4gLQlDUkNfRU5UUlkoIDY0MCzCoMKgNDgwLCAw eGExMjEsIDB4MjQ3MywgMHhiMTUwLCAweDhjNDcpLAo+IC19Owo+IC0jdW5kZWYgQ1JDX0VOVFJZ Cj4gLQo+IC1zdGF0aWMgY29uc3QgaWd0X2NyY190ICoKPiAtZ2V0X3ByZWNhbGN1bGF0ZWRfY3Jj KHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwgaW50IHcsIGludCBoKQo+IC17Cj4gLQlpbnQg aTsKPiAtCWNvbnN0IHN0cnVjdCBjcmNfZW50cnkgKmVudHJ5Owo+IC0KPiAtCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHBhdHRlcm5fZmJfY3Jjcyk7IGkrKykgewo+IC0JCWVudHJ5ID0gJnBh dHRlcm5fZmJfY3Jjc1tpXTsKPiAtCj4gLQkJaWYgKGVudHJ5LT53aWR0aCA9PSB3ICYmIGVudHJ5 LT5oZWlnaHQgPT0gaCkKPiAtCQkJcmV0dXJuICZlbnRyeS0+Y3JjOwo+IC0JfQo+IC0KPiAtCXJl dHVybiBOVUxMOwo+IC19Cj4gLQo+IMKgc3RhdGljIHZvaWQKPiDCoHJlcXVpcmVfY29ubmVjdG9y X3ByZXNlbnQoZGF0YV90ICpkYXRhLCB1bnNpZ25lZCBpbnQgdHlwZSkKPiDCoHsKPiBAQCAtNDI0 LDcgKzM4Nyw4IEBAIHRlc3RfZGlzcGxheV9jcmNfc2luZ2xlKGRhdGFfdCAqZGF0YSwgc3RydWN0 Cj4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4gwqAJaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gwqAJ aWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gwqAJaWd0X2NyY190ICpjcmM7Cj4gLQljb25zdCBpZ3Rf Y3JjX3QgKmV4cGVjdGVkX2NyYzsKPiArCWlndF9jcmNfdCAqZXhwZWN0ZWRfY3JjOwo+ICsJc3Ry dWN0IGNoYW1lbGl1bV9mYl9jcmMgKmZiX2NyYzsKPiDCoAlzdHJ1Y3QgaWd0X2ZiIGZiOwo+IMKg CWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiDCoAlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7 Cj4gQEAgLTQ0NywyNCArNDExLDIxIEBAIHRlc3RfZGlzcGxheV9jcmNfc2luZ2xlKGRhdGFfdCAq ZGF0YSwgc3RydWN0Cj4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4gwqAJCQkJCQnCoMKgwqDCoDAs IDAsIDAsICZmYik7Cj4gwqAJCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsKPiDCoAo+IC0JCWVuYWJs ZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAmZmIpOwo+ICsJCWZiX2NyYyA9IGNo YW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2xhdW5jaChkYXRhLQo+ID5kcm1fZmQsICZmYik7Cj4g wqAKPiAtCQlleHBlY3RlZF9jcmMgPSBnZXRfcHJlY2FsY3VsYXRlZF9jcmMocG9ydCwKPiAtCQkJ CQkJwqDCoMKgwqDCoG1vZGUtPmhkaXNwbGF5LAo+IC0JCQkJCQnCoMKgwqDCoMKgbW9kZS0KPiA+ dmRpc3BsYXkpOwo+IC0JCWlmICghZXhwZWN0ZWRfY3JjKSB7Cj4gLQkJCWlndF93YXJuKCJObyBw cmVjYWxjdWxhdGVkIENSQyBmb3VuZCBmb3IKPiAlZHglZCwgc2tpcHBpbmcgQ1JDIGNoZWNrXG4i LAo+IC0JCQkJwqBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+IC0JCQlnb3RvIG5l eHQ7Cj4gLQkJfQo+ICsJCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAm ZmIpOwo+IMKgCj4gwqAJCWlndF9kZWJ1ZygiVGVzdGluZyBzaW5nbGUgQ1JDIGZldGNoXG4iKTsK PiArCj4gwqAJCWNyYyA9IGNoYW1lbGl1bV9nZXRfY3JjX2Zvcl9hcmVhKGRhdGEtPmNoYW1lbGl1 bSwKPiBwb3J0LAo+IMKgCQkJCQkJwqAwLCAwLCAwLCAwKTsKPiArCj4gKwkJZXhwZWN0ZWRfY3Jj ID0KPiBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19yZXN1bHQoZmJfY3JjKTsKPiArCj4gwqAJ CWlndF9hc3NlcnRfY3JjX2VxdWFsKGNyYywgZXhwZWN0ZWRfY3JjKTsKPiArCQlmcmVlKGV4cGVj dGVkX2NyYyk7Cj4gwqAJCWZyZWUoY3JjKTsKPiDCoAo+IC1uZXh0Ogo+IMKgCQlkaXNhYmxlX291 dHB1dChkYXRhLCBwb3J0LCBvdXRwdXQpOwo+IMKgCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9m ZCwgJmZiKTsKPiDCoAl9Cj4gQEAgLTQ4MCw3ICs0NDEsOCBAQCB0ZXN0X2Rpc3BsYXlfY3JjX211 bHRpcGxlKGRhdGFfdCAqZGF0YSwgc3RydWN0Cj4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4gwqAJ aWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gwqAJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gwqAJaWd0 X2NyY190ICpjcmM7Cj4gLQljb25zdCBpZ3RfY3JjX3QgKmV4cGVjdGVkX2NyYzsKPiArCWlndF9j cmNfdCAqZXhwZWN0ZWRfY3JjOwo+ICsJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmMgKmZiX2NyYzsK PiDCoAlzdHJ1Y3QgaWd0X2ZiIGZiOwo+IMKgCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiDCoAlk cm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7Cj4gQEAgLTUwMywxNSArNDY1LDkgQEAgdGVzdF9k aXNwbGF5X2NyY19tdWx0aXBsZShkYXRhX3QgKmRhdGEsIHN0cnVjdAo+IGNoYW1lbGl1bV9wb3J0 ICpwb3J0KQo+IMKgCQkJCQkJwqDCoMKgwqAwLCAwLCAwLCAmZmIpOwo+IMKgCQlpZ3RfYXNzZXJ0 KGZiX2lkID4gMCk7Cj4gwqAKPiAtCQllbmFibGVfb3V0cHV0KGRhdGEsIHBvcnQsIG91dHB1dCwg bW9kZSwgJmZiKTsKPiArCQlmYl9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19sYXVu Y2goZGF0YS0KPiA+ZHJtX2ZkLCAmZmIpOwo+IMKgCj4gLQkJZXhwZWN0ZWRfY3JjID0gZ2V0X3By ZWNhbGN1bGF0ZWRfY3JjKHBvcnQsIG1vZGUtCj4gPmhkaXNwbGF5LAo+IC0JCQkJCQnCoMKgwqDC oMKgbW9kZS0KPiA+dmRpc3BsYXkpOwo+IC0JCWlmICghZXhwZWN0ZWRfY3JjKSB7Cj4gLQkJCWln dF93YXJuKCJObyBwcmVjYWxjdWxhdGVkIENSQyBmb3VuZCBmb3IKPiAlZHglZCwgc2tpcHBpbmcg Q1JDIGNoZWNrXG4iLAo+IC0JCQkJwqBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwo+ IC0JCQlnb3RvIG5leHQ7Cj4gLQkJfQo+ICsJCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0 cHV0LCBtb2RlLCAmZmIpOwo+IMKgCj4gwqAJCS8qIFdlIHdhbnQgdG8ga2VlcCB0aGUgZGlzcGxh eSBydW5uaW5nIGZvciBhIGxpdHRsZQo+IGJpdCwgc2luY2UKPiDCoAkJwqAqIHRoZXJlJ3MgYWx3 YXlzIHRoZSBwb3RlbnRpYWwgdGhlIGRyaXZlciBpc24ndAo+IGFibGUgdG8ga2VlcAo+IEBAIC01 MjIsMTEgKzQ3OCwxNSBAQCB0ZXN0X2Rpc3BsYXlfY3JjX211bHRpcGxlKGRhdGFfdCAqZGF0YSwg c3RydWN0Cj4gY2hhbWVsaXVtX3BvcnQgKnBvcnQpCj4gwqAJCQkJCQnCoMKgwqAmY2FwdHVyZWRf ZnJhbWVfYwo+IG91bnQpOwo+IMKgCj4gwqAJCWlndF9kZWJ1ZygiQ2FwdHVyZWQgJWQgZnJhbWVz XG4iLAo+IGNhcHR1cmVkX2ZyYW1lX2NvdW50KTsKPiArCj4gKwkJZXhwZWN0ZWRfY3JjID0KPiBj aGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19yZXN1bHQoZmJfY3JjKTsKPiArCj4gwqAJCWZvciAo aiA9IDA7IGogPCBjYXB0dXJlZF9mcmFtZV9jb3VudDsgaisrKQo+IMKgCQkJaWd0X2Fzc2VydF9j cmNfZXF1YWwoJmNyY1tqXSwgZXhwZWN0ZWRfY3JjKTsKPiArCj4gKwkJZnJlZShleHBlY3RlZF9j cmMpOwo+IMKgCQlmcmVlKGNyYyk7Cj4gwqAKPiAtbmV4dDoKPiDCoAkJZGlzYWJsZV9vdXRwdXQo ZGF0YSwgcG9ydCwgb3V0cHV0KTsKPiDCoAkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZm Yik7Cj4gwqAJfQotLSAKQ2hlZXJzLAoJTHl1ZGUKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==