From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: [PATCH i-g-t v5 2/7] chamelium: Calculate CRC from framebuffer instead of hardcoding it Date: Wed, 19 Jul 2017 16:46:05 +0300 Message-ID: <20170719134610.8278-3-paul.kocialkowski@linux.intel.com> References: <20170705080435.26789-1-paul.kocialkowski@linux.intel.com> <20170719134610.8278-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C7976E51D for ; Wed, 19 Jul 2017 13:46:18 +0000 (UTC) In-Reply-To: <20170719134610.8278-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBpbnRyb2R1Y2VzIENSQyBjYWxjdWxhdGlvbiBmb3IgcmVmZXJlbmNlIGZyYW1lcywgaW5z dGVhZCBvZiB1c2luZwpoYXJkY29kZWQgdmFsdWVzIGZvciB0aGVtLiBUaGUgcmVuZGVyaW5nIG9m IHJlZmVyZW5jZSBmcmFtZXMgbWF5IGRpZmZlcgpmcm9tIG1hY2hpbmUgdG8gbWFjaGluZSwgZXNw ZWNpYWxseSBkdWUgdG8gZm9udCByZW5kZXJpbmcsIGFuZCB0aGUKZnJhbWUgaXRzZWxmIG1heSBj aGFuZ2Ugd2l0aCBzdWJzZXF1ZW50IElHVCBjaGFuZ2VzLgoKVGhlc2UgZGlmZmVyZW5jZXMgd291 bGQgY2F1c2UgdGhlIENSQyBjaGVja3MgdG8gZmFpbCBvbiBkaWZmZXJlbnQKc2V0dXBzLiBUaGlz IGFsbG93cyB0aGVtIHRvIHBhc3MgcmVnYXJkbGVzcyBvZiB0aGUgc2V0dXAuCgpTaWduZWQtb2Zm LWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29t PgotLS0KIGxpYi9pZ3RfY2hhbWVsaXVtLmMgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2lndF9jaGFtZWxpdW0uaCB8ICAgNSAr KwogdGVzdHMvY2hhbWVsaXVtLmMgICB8ICA3NyArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAzIGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwppbmRl eCA5MzM5MmFmNy4uYWJjZGM1MjIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKKysr IGIvbGliL2lndF9jaGFtZWxpdW0uYwpAQCAtOTQsNiArOTQsMTMgQEAgc3RydWN0IGNoYW1lbGl1 bV9mcmFtZV9kdW1wIHsKIAlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQ7CiB9OwogCitzdHJ1 Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhIHsKKwljYWlyb19zdXJmYWNlX3QgKmZiX3N1 cmZhY2U7CisKKwlwdGhyZWFkX3QgdGhyZWFkX2lkOworCWlndF9jcmNfdCAqcmV0OworfTsKKwog c3RydWN0IGNoYW1lbGl1bSB7CiAJeG1scnBjX2VudiBlbnY7CiAJeG1scnBjX2NsaWVudCAqY2xp ZW50OwpAQCAtOTk4LDYgKzEwMDUsMTQyIEBAIGludCBjaGFtZWxpdW1fZ2V0X2ZyYW1lX2xpbWl0 KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMg dWludDMyX3QgY2hhbWVsaXVtX3hyZ2JfaGFzaDE2KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZl ciwgaW50IHdpZHRoLAorCQkJCSAgICAgIGludCBoZWlnaHQsIGludCBrLCBpbnQgbSkKK3sKKwl1 bnNpZ25lZCBjaGFyIHIsIGcsIGI7CisJdWludDY0X3Qgc3VtID0gMDsKKwl1aW50NjRfdCBjb3Vu dCA9IDA7CisJdWludDY0X3QgdmFsdWU7CisJdWludDMyX3QgaGFzaDsKKwlpbnQgaW5kZXg7CisJ aW50IGk7CisKKwlmb3IgKGk9MDsgaSA8IHdpZHRoICogaGVpZ2h0OyBpKyspIHsKKwkJaWYgKChp ICUgbSkgIT0gaykKKwkJCWNvbnRpbnVlOworCisJCWluZGV4ID0gaSAqIDQ7CisKKwkJciA9IGJ1 ZmZlcltpbmRleCArIDJdOworCQlnID0gYnVmZmVyW2luZGV4ICsgMV07CisJCWIgPSBidWZmZXJb aW5kZXggKyAwXTsKKworCQl2YWx1ZSA9IHIgfCAoZyA8PCA4KSB8IChiIDw8IDE2KTsKKwkJc3Vt ICs9ICsrY291bnQgKiB2YWx1ZTsKKwl9CisKKwloYXNoID0gKChzdW0gPj4gMCkgXiAoc3VtID4+ IDE2KSBeIChzdW0gPj4gMzIpIF4gKHN1bSA+PiA0OCkpICYgMHhmZmZmOworCisJcmV0dXJuIGhh c2g7Cit9CisKK3N0YXRpYyB2b2lkIGNoYW1lbGl1bV9kb19jYWxjdWxhdGVfZmJfY3JjKGNhaXJv X3N1cmZhY2VfdCAqZmJfc3VyZmFjZSwKKwkJCQkJICBpZ3RfY3JjX3QgKm91dCkKK3sKKwl1bnNp Z25lZCBjaGFyICpidWZmZXI7CisJaW50IG4gPSA0OworCWludCB3LCBoOworCWludCBpLCBqOwor CisJYnVmZmVyID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmYl9zdXJmYWNlKTsKKwl3 ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoZmJfc3VyZmFjZSk7CisJaCA9IGNhaXJv X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChmYl9zdXJmYWNlKTsKKworCWZvciAoaSA9IDA7IGkg PCBuOyBpKyspIHsKKwkJaiA9IG4gLSBpIC0gMTsKKwkJb3V0LT5jcmNbaV0gPSBjaGFtZWxpdW1f eHJnYl9oYXNoMTYoYnVmZmVyLCB3LCBoLCBqLCBuKTsKKwl9CisKKwlvdXQtPm5fd29yZHMgPSBu OworfQorCisvKioKKyAqIGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjOgorICogQGZkOiBUaGUg ZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGZiOiBUaGUgZnJhbWVidWZmZXIgdG8gY2FsY3VsYXRl IHRoZSBDUkMgZm9yCisgKgorICogQ2FsY3VsYXRlcyB0aGUgQ1JDIGZvciB0aGUgcHJvdmlkZWQg ZnJhbWVidWZmZXIsIHVzaW5nIHRoZSBDaGFtZWxpdW0ncyBDUkMKKyAqIGFsZ29yaXRobS4gVGhp cyBjYWxjdWxhdGVzIHRoZSBDUkMgaW4gYSBzeW5jaHJvbm91cyBmYXNoaW9uLgorICoKKyAqIFJl dHVybnM6IFRoZSBjYWxjdWxhdGVkIENSQworICovCitpZ3RfY3JjX3QgKmNoYW1lbGl1bV9jYWxj dWxhdGVfZmJfY3JjKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCit7CisJaWd0X2NyY190ICpy ZXQgPSBjYWxsb2MoMSwgc2l6ZW9mKGlndF9jcmNfdCkpOworCWNhaXJvX3N1cmZhY2VfdCAqZmJf c3VyZmFjZTsKKworCS8qIEdldCB0aGUgY2Fpcm8gc3VyZmFjZSBmb3IgdGhlIGZyYW1lYnVmZmVy ICovCisJZmJfc3VyZmFjZSA9IGlndF9nZXRfY2Fpcm9fc3VyZmFjZShmZCwgZmIpOworCisJY2hh bWVsaXVtX2RvX2NhbGN1bGF0ZV9mYl9jcmMoZmJfc3VyZmFjZSwgcmV0KTsKKworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyB2b2lkICpjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY193 b3JrKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSAq ZmJfY3JjOworCisJZmJfY3JjID0gKHN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEg KikgZGF0YTsKKworCWNoYW1lbGl1bV9kb19jYWxjdWxhdGVfZmJfY3JjKGZiX2NyYy0+ZmJfc3Vy ZmFjZSwgZmJfY3JjLT5yZXQpOworCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogY2hhbWVs aXVtX2NhbGN1bGF0ZV9mYl9jcmNfbGF1bmNoOgorICogQGZkOiBUaGUgZHJtIGZpbGUgZGVzY3Jp cHRvcgorICogQGZiOiBUaGUgZnJhbWVidWZmZXIgdG8gY2FsY3VsYXRlIHRoZSBDUkMgZm9yCisg KgorICogTGF1bmNoZXMgdGhlIENSQyBjYWxjdWxhdGlvbiBmb3IgdGhlIHByb3ZpZGVkIGZyYW1l YnVmZmVyLCB1c2luZyB0aGUKKyAqIENoYW1lbGl1bSdzIENSQyBhbGdvcml0aG0uIFRoaXMgY2Fs Y3VsYXRlcyB0aGUgQ1JDIGluIGFuIGFzeW5jaHJvbm91cworICogZmFzaGlvbi4KKyAqCisgKiBU aGUgcmV0dXJuZWQgc3RydWN0dXJlIHNob3VsZCBiZSBwYXNzZWQgdG8gYSBzdWJzZXF1ZW50IGNh bGwgdG8KKyAqIGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX3Jlc3VsdC4gSXQgc2hvdWxkIG5v dCBiZSBmcmVlZC4KKyAqCisgKiBSZXR1cm5zOiBBbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlIGZv ciB0aGUgQ1JDIGNhbGN1bGF0aW9uIHdvcmsuCisgKi8KK3N0cnVjdCBjaGFtZWxpdW1fZmJfY3Jj X2FzeW5jX2RhdGEgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX3N0YXJ0KGludCBm ZCwKKwkJCQkJCQkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiKQoreworCXN0cnVjdCBjaGFtZWxpdW1f ZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYzsKKworCWZiX2NyYyA9IGNhbGxvYygxLCBzaXplb2Yo c3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSkpOworCWZiX2NyYy0+cmV0ID0gY2Fs bG9jKDEsIHNpemVvZihpZ3RfY3JjX3QpKTsKKworCS8qIEdldCB0aGUgY2Fpcm8gc3VyZmFjZSBm b3IgdGhlIGZyYW1lYnVmZmVyICovCisJZmJfY3JjLT5mYl9zdXJmYWNlID0gaWd0X2dldF9jYWly b19zdXJmYWNlKGZkLCBmYik7CisKKwlwdGhyZWFkX2NyZWF0ZSgmZmJfY3JjLT50aHJlYWRfaWQs IE5VTEwsCisJCSAgICAgICBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY193b3JrLCBm Yl9jcmMpOworCisJcmV0dXJuIGZiX2NyYzsKK30KKworLyoqCisgKiBjaGFtZWxpdW1fY2FsY3Vs YXRlX2ZiX2NyY19yZXN1bHQ6CisgKiBAZmJfY3JjOiBBbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJl IHdpdGggdGhyZWFkLXJlbGF0ZWQgaW5mb3JtYXRpb24KKyAqCisgKiBCbG9ja3MgdW50aWwgdGhl IGFzeW5jaHJvbm91cyBDUkMgY2FsY3VsYXRpb24gaXMgZmluaXNoZWQsIGFuZCB0aGVuIHJldHVy bnMKKyAqIGl0cyByZXN1bHQuCisgKgorICogUmV0dXJuczogVGhlIGNhbGN1bGF0ZWQgQ1JDCisg Ki8KK2lndF9jcmNfdCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNfZmluaXNoKHN0 cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYykKK3sKKwlpZ3RfY3JjX3Qg KnJldDsKKworCXB0aHJlYWRfam9pbihmYl9jcmMtPnRocmVhZF9pZCwgTlVMTCk7CisKKwlyZXQg PSBmYl9jcmMtPnJldDsKKwlmcmVlKGZiX2NyYyk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0 aWMgdW5zaWduZWQgaW50IGNoYW1lbGl1bV9nZXRfcG9ydF90eXBlKHN0cnVjdCBjaGFtZWxpdW0g KmNoYW1lbGl1bSwKIAkJCQkJICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKIHsKZGlm ZiAtLWdpdCBhL2xpYi9pZ3RfY2hhbWVsaXVtLmggYi9saWIvaWd0X2NoYW1lbGl1bS5oCmluZGV4 IDgxMzIyYWQyLi4yYmZiZmRjNyAxMDA2NDQKLS0tIGEvbGliL2lndF9jaGFtZWxpdW0uaAorKysg Yi9saWIvaWd0X2NoYW1lbGl1bS5oCkBAIC0zNiw2ICszNiw3IEBACiBzdHJ1Y3QgY2hhbWVsaXVt Owogc3RydWN0IGNoYW1lbGl1bV9wb3J0Owogc3RydWN0IGNoYW1lbGl1bV9mcmFtZV9kdW1wOwor c3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YTsKIAogc3RydWN0IGNoYW1lbGl1bSAq Y2hhbWVsaXVtX2luaXQoaW50IGRybV9mZCk7CiB2b2lkIGNoYW1lbGl1bV9kZWluaXQoc3RydWN0 IGNoYW1lbGl1bSAqY2hhbWVsaXVtKTsKQEAgLTkyLDYgKzkzLDEwIEBAIHN0cnVjdCBjaGFtZWxp dW1fZnJhbWVfZHVtcCAqY2hhbWVsaXVtX3BvcnRfZHVtcF9waXhlbHMoc3RydWN0IGNoYW1lbGl1 bSAqY2hhbWVsCiAJCQkJCQkJc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAogCQkJCQkJCWlu dCB4LCBpbnQgeSwKIAkJCQkJCQlpbnQgdywgaW50IGgpOworaWd0X2NyY190ICpjaGFtZWxpdW1f Y2FsY3VsYXRlX2ZiX2NyYyhpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKTsKK3N0cnVjdCBjaGFt ZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5j X3N0YXJ0KGludCBmZCwKKwkJCQkJCQkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiKTsKK2lndF9jcmNf dCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNfZmluaXNoKHN0cnVjdCBjaGFtZWxp dW1fZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYyk7CiBpbnQgY2hhbWVsaXVtX2dldF9jYXB0dXJl ZF9mcmFtZV9jb3VudChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pOwogaW50IGNoYW1lbGl1 bV9nZXRfZnJhbWVfbGltaXQoc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAogCQkJICAgICAg c3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hhbWVsaXVt LmMgYi90ZXN0cy9jaGFtZWxpdW0uYwppbmRleCAwNTI4ZmZiMy4uZWNkMDQzNGMgMTAwNjQ0Ci0t LSBhL3Rlc3RzL2NoYW1lbGl1bS5jCisrKyBiL3Rlc3RzL2NoYW1lbGl1bS5jCkBAIC00OSw0MyAr NDksNiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVmaW5lIEhQRF9UT0dHTEVfQ09VTlRfVkdBIDUK ICNkZWZpbmUgSFBEX1RPR0dMRV9DT1VOVF9EUF9IRE1JIDE1CiAKLS8qIFByZS1jYWxjdWxhdGVk IENSQ3MgZm9yIHRoZSBwYXR0ZXJuIGZiLCBmb3IgYWxsIHRoZSBtb2RlcyBpbiB0aGUgZGVmYXVs dAotICogY2hhbWVsaXVtIGVkaWQKLSAqLwotc3RydWN0IGNyY19lbnRyeSB7Ci0JaW50IHdpZHRo OwotCWludCBoZWlnaHQ7Ci0JaWd0X2NyY190IGNyYzsKLX07Ci0KLSNkZWZpbmUgQ1JDX0VOVFJZ KHdfLCBoXywgLi4uKSBcCi0JeyB3XywgaF8sIHsgLm5fd29yZHMgPSA0LCAuY3JjID0geyBfX1ZB X0FSR1NfXyB9IH0gfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNyY19lbnRyeSBwYXR0ZXJuX2Zi X2NyY3NbXSA9IHsKLQlDUkNfRU5UUlkoMTkyMCwgMTA4MCwgMHhmODU5LCAweGE3NTEsIDB4OGM4 MSwgMHg0NWExKSwKLQlDUkNfRU5UUlkoMTI4MCwgIDcyMCwgMHhjZWMyLCAweDQyNDYsIDB4NmNm ZCwgMHhlYjQzKSwKLQlDUkNfRU5UUlkoMTAyNCwgIDc2OCwgMHg4NWU1LCAweGYwY2QsIDB4YWZl MywgMHg3ZjE4KSwKLQlDUkNfRU5UUlkoIDgwMCwgIDYwMCwgMHg2YjM5LCAweDMyYjYsIDB4ODMx YSwgMHhiMDNlKSwKLQlDUkNfRU5UUlkoIDY0MCwgIDQ4MCwgMHhhMTIxLCAweDI0NzMsIDB4YjE1 MCwgMHg4YzQ3KSwKLX07Ci0jdW5kZWYgQ1JDX0VOVFJZCi0KLXN0YXRpYyBjb25zdCBpZ3RfY3Jj X3QgKgotZ2V0X3ByZWNhbGN1bGF0ZWRfY3JjKHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwg aW50IHcsIGludCBoKQotewotCWludCBpOwotCWNvbnN0IHN0cnVjdCBjcmNfZW50cnkgKmVudHJ5 OwotCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGF0dGVybl9mYl9jcmNzKTsgaSsrKSB7 Ci0JCWVudHJ5ID0gJnBhdHRlcm5fZmJfY3Jjc1tpXTsKLQotCQlpZiAoZW50cnktPndpZHRoID09 IHcgJiYgZW50cnktPmhlaWdodCA9PSBoKQotCQkJcmV0dXJuICZlbnRyeS0+Y3JjOwotCX0KLQot CXJldHVybiBOVUxMOwotfQotCiBzdGF0aWMgdm9pZAogZ2V0X2Nvbm5lY3RvcnNfbGlua19zdGF0 dXNfZmFpbGVkKGRhdGFfdCAqZGF0YSwgYm9vbCAqbGlua19zdGF0dXNfZmFpbGVkKQogewpAQCAt NDYzLDcgKzQyNiw4IEBAIHRlc3RfZGlzcGxheV9jcmNfc2luZ2xlKGRhdGFfdCAqZGF0YSwgc3Ry dWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQogCWlndF9vdXRwdXRfdCAqb3V0cHV0OwogCWlndF9w bGFuZV90ICpwcmltYXJ5OwogCWlndF9jcmNfdCAqY3JjOwotCWNvbnN0IGlndF9jcmNfdCAqZXhw ZWN0ZWRfY3JjOworCWlndF9jcmNfdCAqZXhwZWN0ZWRfY3JjOworCXN0cnVjdCBjaGFtZWxpdW1f ZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYzsKIAlzdHJ1Y3QgaWd0X2ZiIGZiOwogCWRybU1vZGVN b2RlSW5mbyAqbW9kZTsKIAlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7CkBAIC00ODYsMjQg KzQ1MCwyMSBAQCB0ZXN0X2Rpc3BsYXlfY3JjX3NpbmdsZShkYXRhX3QgKmRhdGEsIHN0cnVjdCBj aGFtZWxpdW1fcG9ydCAqcG9ydCkKIAkJCQkJCSAgICAwLCAwLCAwLCAmZmIpOwogCQlpZ3RfYXNz ZXJ0KGZiX2lkID4gMCk7CiAKKwkJZmJfY3JjID0gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNf YXN5bmNfc3RhcnQoZGF0YS0+ZHJtX2ZkLAorCQkJCQkJCQkmZmIpOwogCQllbmFibGVfb3V0cHV0 KGRhdGEsIHBvcnQsIG91dHB1dCwgbW9kZSwgJmZiKTsKIAotCQlleHBlY3RlZF9jcmMgPSBnZXRf cHJlY2FsY3VsYXRlZF9jcmMocG9ydCwKLQkJCQkJCSAgICAgbW9kZS0+aGRpc3BsYXksCi0JCQkJ CQkgICAgIG1vZGUtPnZkaXNwbGF5KTsKLQkJaWYgKCFleHBlY3RlZF9jcmMpIHsKLQkJCWlndF93 YXJuKCJObyBwcmVjYWxjdWxhdGVkIENSQyBmb3VuZCBmb3IgJWR4JWQsIHNraXBwaW5nIENSQyBj aGVja1xuIiwKLQkJCQkgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKLQkJCWdvdG8g bmV4dDsKLQkJfQotCiAJCWlndF9kZWJ1ZygiVGVzdGluZyBzaW5nbGUgQ1JDIGZldGNoXG4iKTsK KwogCQljcmMgPSBjaGFtZWxpdW1fZ2V0X2NyY19mb3JfYXJlYShkYXRhLT5jaGFtZWxpdW0sIHBv cnQsCiAJCQkJCQkgMCwgMCwgMCwgMCk7CisKKwkJZXhwZWN0ZWRfY3JjID0gY2hhbWVsaXVtX2Nh bGN1bGF0ZV9mYl9jcmNfYXN5bmNfZmluaXNoKGZiX2NyYyk7CisKIAkJaWd0X2Fzc2VydF9jcmNf ZXF1YWwoY3JjLCBleHBlY3RlZF9jcmMpOworCQlmcmVlKGV4cGVjdGVkX2NyYyk7CiAJCWZyZWUo Y3JjKTsKIAotbmV4dDoKIAkJZGlzYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0KTsKIAkJ aWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZmYik7CiAJfQpAQCAtNTE5LDcgKzQ4MCw4IEBA IHRlc3RfZGlzcGxheV9jcmNfbXVsdGlwbGUoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVt X3BvcnQgKnBvcnQpCiAJaWd0X291dHB1dF90ICpvdXRwdXQ7CiAJaWd0X3BsYW5lX3QgKnByaW1h cnk7CiAJaWd0X2NyY190ICpjcmM7Ci0JY29uc3QgaWd0X2NyY190ICpleHBlY3RlZF9jcmM7CisJ aWd0X2NyY190ICpleHBlY3RlZF9jcmM7CisJc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNf ZGF0YSAqZmJfY3JjOwogCXN0cnVjdCBpZ3RfZmIgZmI7CiAJZHJtTW9kZU1vZGVJbmZvICptb2Rl OwogCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKQEAgLTU0MiwxNSArNTA0LDEwIEBAIHRl c3RfZGlzcGxheV9jcmNfbXVsdGlwbGUoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3Bv cnQgKnBvcnQpCiAJCQkJCQkgICAgMCwgMCwgMCwgJmZiKTsKIAkJaWd0X2Fzc2VydChmYl9pZCA+ IDApOwogCi0JCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAmZmIpOwor CQlmYl9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY19zdGFydChkYXRhLT5k cm1fZmQsCisJCQkJCQkJCSZmYik7CiAKLQkJZXhwZWN0ZWRfY3JjID0gZ2V0X3ByZWNhbGN1bGF0 ZWRfY3JjKHBvcnQsIG1vZGUtPmhkaXNwbGF5LAotCQkJCQkJICAgICBtb2RlLT52ZGlzcGxheSk7 Ci0JCWlmICghZXhwZWN0ZWRfY3JjKSB7Ci0JCQlpZ3Rfd2FybigiTm8gcHJlY2FsY3VsYXRlZCBD UkMgZm91bmQgZm9yICVkeCVkLCBza2lwcGluZyBDUkMgY2hlY2tcbiIsCi0JCQkJIG1vZGUtPmhk aXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7Ci0JCQlnb3RvIG5leHQ7Ci0JCX0KKwkJZW5hYmxlX291 dHB1dChkYXRhLCBwb3J0LCBvdXRwdXQsIG1vZGUsICZmYik7CiAKIAkJLyogV2Ugd2FudCB0byBr ZWVwIHRoZSBkaXNwbGF5IHJ1bm5pbmcgZm9yIGEgbGl0dGxlIGJpdCwgc2luY2UKIAkJICogdGhl cmUncyBhbHdheXMgdGhlIHBvdGVudGlhbCB0aGUgZHJpdmVyIGlzbid0IGFibGUgdG8ga2VlcApA QCAtNTYxLDExICs1MTgsMTUgQEAgdGVzdF9kaXNwbGF5X2NyY19tdWx0aXBsZShkYXRhX3QgKmRh dGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKIAkJCQkJCSAgICZjYXB0dXJlZF9mcmFt ZV9jb3VudCk7CiAKIAkJaWd0X2RlYnVnKCJDYXB0dXJlZCAlZCBmcmFtZXNcbiIsIGNhcHR1cmVk X2ZyYW1lX2NvdW50KTsKKworCQlleHBlY3RlZF9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2Zi X2NyY19hc3luY19maW5pc2goZmJfY3JjKTsKKwogCQlmb3IgKGogPSAwOyBqIDwgY2FwdHVyZWRf ZnJhbWVfY291bnQ7IGorKykKIAkJCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZjcmNbal0sIGV4cGVj dGVkX2NyYyk7CisKKwkJZnJlZShleHBlY3RlZF9jcmMpOwogCQlmcmVlKGNyYyk7CiAKLW5leHQ6 CiAJCWRpc2FibGVfb3V0cHV0KGRhdGEsIHBvcnQsIG91dHB1dCk7CiAJCWlndF9yZW1vdmVfZmIo ZGF0YS0+ZHJtX2ZkLCAmZmIpOwogCX0KLS0gCjIuMTMuMgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==