From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: [PATCH i-g-t v4 2/7] chamelium: Calculate CRC from framebuffer instead of hardcoding it Date: Wed, 12 Jul 2017 17:50:26 +0300 Message-ID: <20170712145031.3531-3-paul.kocialkowski@linux.intel.com> References: <20170705080435.26789-1-paul.kocialkowski@linux.intel.com> <20170712145031.3531-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id A01986E424 for ; Wed, 12 Jul 2017 14:51:09 +0000 (UTC) In-Reply-To: <20170712145031.3531-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 Cc: Lyude List-Id: intel-gfx@lists.freedesktop.org VGhpcyBpbnRyb2R1Y2VzIENSQyBjYWxjdWxhdGlvbiBmb3IgcmVmZXJlbmNlIGZyYW1lcywgaW5z dGVhZCBvZiB1c2luZwpoYXJkY29kZWQgdmFsdWVzIGZvciB0aGVtLiBUaGUgcmVuZGVyaW5nIG9m IHJlZmVyZW5jZSBmcmFtZXMgbWF5IGRpZmZlcgpmcm9tIG1hY2hpbmUgdG8gbWFjaGluZSwgZXNw ZWNpYWxseSBkdWUgdG8gZm9udCByZW5kZXJpbmcsIGFuZCB0aGUKZnJhbWUgaXRzZWxmIG1heSBj aGFuZ2Ugd2l0aCBzdWJzZXF1ZW50IElHVCBjaGFuZ2VzLgoKVGhlc2UgZGlmZmVyZW5jZXMgd291 bGQgY2F1c2UgdGhlIENSQyBjaGVja3MgdG8gZmFpbCBvbiBkaWZmZXJlbnQKc2V0dXBzLiBUaGlz IGFsbG93cyB0aGVtIHRvIHBhc3MgcmVnYXJkbGVzcyBvZiB0aGUgc2V0dXAuCgpTaWduZWQtb2Zm LWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29t PgotLS0KIGxpYi9pZ3RfY2hhbWVsaXVtLmMgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2lndF9jaGFtZWxpdW0uaCB8ICAgNSAr KwogdGVzdHMvY2hhbWVsaXVtLmMgICB8ICA3NyArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAzIGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwppbmRl eCA5MzM5MmFmNy4uYmFhNjM5OWMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKKysr IGIvbGliL2lndF9jaGFtZWxpdW0uYwpAQCAtOTQsNiArOTQsMTQgQEAgc3RydWN0IGNoYW1lbGl1 bV9mcmFtZV9kdW1wIHsKIAlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQ7CiB9OwogCitzdHJ1 Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhIHsKKwlpbnQgZmQ7CisJc3RydWN0IGlndF9m YiAqZmI7CisKKwlwdGhyZWFkX3QgdGhyZWFkX2lkOworCWlndF9jcmNfdCAqcmV0OworfTsKKwog c3RydWN0IGNoYW1lbGl1bSB7CiAJeG1scnBjX2VudiBlbnY7CiAJeG1scnBjX2NsaWVudCAqY2xp ZW50OwpAQCAtOTk4LDYgKzEwMDYsMTQxIEBAIGludCBjaGFtZWxpdW1fZ2V0X2ZyYW1lX2xpbWl0 KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMg dWludDMyX3QgY2hhbWVsaXVtX3hyZ2JfaGFzaDE2KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZl ciwgaW50IHdpZHRoLAorCQkJCSAgICAgIGludCBoZWlnaHQsIGludCBrLCBpbnQgbSkKK3sKKwl1 bnNpZ25lZCBjaGFyIHIsIGcsIGI7CisJdWludDY0X3Qgc3VtID0gMDsKKwl1aW50NjRfdCBjb3Vu dCA9IDA7CisJdWludDY0X3QgdmFsdWU7CisJdWludDMyX3QgaGFzaDsKKwlpbnQgaW5kZXg7CisJ aW50IGk7CisKKwlmb3IgKGk9MDsgaSA8IHdpZHRoICogaGVpZ2h0OyBpKyspIHsKKwkJaWYgKChp ICUgbSkgIT0gaykKKwkJCWNvbnRpbnVlOworCisJCWluZGV4ID0gaSAqIDQ7CisKKwkJciA9IGJ1 ZmZlcltpbmRleCArIDJdOworCQlnID0gYnVmZmVyW2luZGV4ICsgMV07CisJCWIgPSBidWZmZXJb aW5kZXggKyAwXTsKKworCQl2YWx1ZSA9IHIgfCAoZyA8PCA4KSB8IChiIDw8IDE2KTsKKwkJc3Vt ICs9ICsrY291bnQgKiB2YWx1ZTsKKwl9CisKKwloYXNoID0gKChzdW0gPj4gMCkgXiAoc3VtID4+ IDE2KSBeIChzdW0gPj4gMzIpIF4gKHN1bSA+PiA0OCkpICYgMHhmZmZmOworCisJcmV0dXJuIGhh c2g7Cit9CisKK3N0YXRpYyB2b2lkIGNoYW1lbGl1bV9kb19jYWxjdWxhdGVfZmJfY3JjKGludCBm ZCwgc3RydWN0IGlndF9mYiAqZmIsCisJCQkJCSAgaWd0X2NyY190ICpvdXQpCit7CisJdW5zaWdu ZWQgY2hhciAqYnVmZmVyOworCWNhaXJvX3N1cmZhY2VfdCAqZmJfc3VyZmFjZTsKKwlpbnQgbiA9 IDQ7CisJaW50IHcsIGg7CisJaW50IGksIGo7CisKKwkvKiBHZXQgdGhlIGNhaXJvIHN1cmZhY2Ug Zm9yIHRoZSBmcmFtZWJ1ZmZlciAqLworCWZiX3N1cmZhY2UgPSBpZ3RfZ2V0X2NhaXJvX3N1cmZh Y2UoZmQsIGZiKTsKKworCWJ1ZmZlciA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoZmJf c3VyZmFjZSk7CisJdyA9IGZiLT53aWR0aDsKKwloID0gZmItPmhlaWdodDsKKworCWZvciAoaSA9 IDA7IGkgPCBuOyBpKyspIHsKKwkJaiA9IG4gLSBpIC0gMTsKKwkJb3V0LT5jcmNbaV0gPSBjaGFt ZWxpdW1feHJnYl9oYXNoMTYoYnVmZmVyLCB3LCBoLCBqLCBuKTsKKwl9CisKKwlvdXQtPm5fd29y ZHMgPSBuOworfQorCisvKioKKyAqIGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjOgorICogQGZk OiBUaGUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGZiOiBUaGUgZnJhbWVidWZmZXIgdG8gY2Fs Y3VsYXRlIHRoZSBDUkMgZm9yCisgKgorICogQ2FsY3VsYXRlcyB0aGUgQ1JDIGZvciB0aGUgcHJv dmlkZWQgZnJhbWVidWZmZXIsIHVzaW5nIHRoZSBDaGFtZWxpdW0ncyBDUkMKKyAqIGFsZ29yaXRo bS4gVGhpcyBjYWxjdWxhdGVzIHRoZSBDUkMgaW4gYSBzeW5jaHJvbm91cyBmYXNoaW9uLgorICoK KyAqIFJldHVybnM6IFRoZSBjYWxjdWxhdGVkIENSQworICovCitpZ3RfY3JjX3QgKmNoYW1lbGl1 bV9jYWxjdWxhdGVfZmJfY3JjKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCit7CisJaWd0X2Ny Y190ICpyZXQgPSBjYWxsb2MoMSwgc2l6ZW9mKGlndF9jcmNfdCkpOworCisJY2hhbWVsaXVtX2Rv X2NhbGN1bGF0ZV9mYl9jcmMoZmQsIGZiLCByZXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHZvaWQgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX3dvcmsodm9pZCAqZGF0 YSkKK3sKKwlzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhICpmYl9jcmM7CisKKwlm Yl9jcmMgPSAoc3RydWN0IGNoYW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSAqKSBkYXRhOworCisJ Y2hhbWVsaXVtX2RvX2NhbGN1bGF0ZV9mYl9jcmMoZmJfY3JjLT5mZCwgZmJfY3JjLT5mYiwgZmJf Y3JjLT5yZXQpOworCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogY2hhbWVsaXVtX2NhbGN1 bGF0ZV9mYl9jcmNfbGF1bmNoOgorICogQGZkOiBUaGUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICog QGZiOiBUaGUgZnJhbWVidWZmZXIgdG8gY2FsY3VsYXRlIHRoZSBDUkMgZm9yCisgKgorICogTGF1 bmNoZXMgdGhlIENSQyBjYWxjdWxhdGlvbiBmb3IgdGhlIHByb3ZpZGVkIGZyYW1lYnVmZmVyLCB1 c2luZyB0aGUKKyAqIENoYW1lbGl1bSdzIENSQyBhbGdvcml0aG0uIFRoaXMgY2FsY3VsYXRlcyB0 aGUgQ1JDIGluIGFuIGFzeW5jaHJvbm91cworICogZmFzaGlvbi4KKyAqCisgKiBUaGUgcmV0dXJu ZWQgc3RydWN0dXJlIHNob3VsZCBiZSBwYXNzZWQgdG8gYSBzdWJzZXF1ZW50IGNhbGwgdG8KKyAq IGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX3Jlc3VsdC4gSXQgc2hvdWxkIG5vdCBiZSBmcmVl ZC4KKyAqCisgKiBSZXR1cm5zOiBBbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlIGZvciB0aGUgQ1JD IGNhbGN1bGF0aW9uIHdvcmsuCisgKi8KK3N0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2FzeW5jX2Rh dGEgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX3N0YXJ0KGludCBmZCwKKwkJCQkJ CQkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiKQoreworCXN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjX2Fz eW5jX2RhdGEgKmZiX2NyYzsKKworCWZiX2NyYyA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGNo YW1lbGl1bV9mYl9jcmNfYXN5bmNfZGF0YSkpOworCWZiX2NyYy0+cmV0ID0gY2FsbG9jKDEsIHNp emVvZihpZ3RfY3JjX3QpKTsKKwlmYl9jcmMtPmZkID0gZmQ7CisJZmJfY3JjLT5mYiA9IGZiOwor CisJcHRocmVhZF9jcmVhdGUoJmZiX2NyYy0+dGhyZWFkX2lkLCBOVUxMLAorCQkgICAgICAgY2hh bWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNfd29yaywgZmJfY3JjKTsKKworCXJldHVybiBm Yl9jcmM7Cit9CisKKy8qKgorICogY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfcmVzdWx0Ogor ICogQGZiX2NyYzogQW4gaW50ZXJtZWRpYXRlIHN0cnVjdHVyZSB3aXRoIHRocmVhZC1yZWxhdGVk IGluZm9ybWF0aW9uCisgKgorICogQmxvY2tzIHVudGlsIHRoZSBhc3luY2hyb25vdXMgQ1JDIGNh bGN1bGF0aW9uIGlzIGZpbmlzaGVkLCBhbmQgdGhlbiByZXR1cm5zCisgKiBpdHMgcmVzdWx0Lgor ICoKKyAqIFJldHVybnM6IFRoZSBjYWxjdWxhdGVkIENSQworICovCitpZ3RfY3JjX3QgKmNoYW1l bGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX2ZpbmlzaChzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2Ny Y19hc3luY19kYXRhICpmYl9jcmMpCit7CisJaWd0X2NyY190ICpyZXQ7CisKKwlwdGhyZWFkX2pv aW4oZmJfY3JjLT50aHJlYWRfaWQsIE5VTEwpOworCisJcmV0ID0gZmJfY3JjLT5yZXQ7CisJZnJl ZShmYl9jcmMpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIHVuc2lnbmVkIGludCBjaGFt ZWxpdW1fZ2V0X3BvcnRfdHlwZShzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCiAJCQkJCSAg ICBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiB7CmRpZmYgLS1naXQgYS9saWIvaWd0X2No YW1lbGl1bS5oIGIvbGliL2lndF9jaGFtZWxpdW0uaAppbmRleCA4MTMyMmFkMi4uMmJmYmZkYzcg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmgKKysrIGIvbGliL2lndF9jaGFtZWxpdW0u aApAQCAtMzYsNiArMzYsNyBAQAogc3RydWN0IGNoYW1lbGl1bTsKIHN0cnVjdCBjaGFtZWxpdW1f cG9ydDsKIHN0cnVjdCBjaGFtZWxpdW1fZnJhbWVfZHVtcDsKK3N0cnVjdCBjaGFtZWxpdW1fZmJf Y3JjX2FzeW5jX2RhdGE7CiAKIHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bV9pbml0KGludCBk cm1fZmQpOwogdm9pZCBjaGFtZWxpdW1fZGVpbml0KHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1 bSk7CkBAIC05Miw2ICs5MywxMCBAQCBzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1lX2R1bXAgKmNoYW1l bGl1bV9wb3J0X2R1bXBfcGl4ZWxzKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbAogCQkJCQkJCXN0 cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAkJCQkJCQlpbnQgeCwgaW50IHksCiAJCQkJCQkJ aW50IHcsIGludCBoKTsKK2lndF9jcmNfdCAqY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmMoaW50 IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYik7CitzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19k YXRhICpjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19hc3luY19zdGFydChpbnQgZmQsCisJCQkJ CQkJCQkgICBzdHJ1Y3QgaWd0X2ZiICpmYik7CitpZ3RfY3JjX3QgKmNoYW1lbGl1bV9jYWxjdWxh dGVfZmJfY3JjX2FzeW5jX2ZpbmlzaChzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRh ICpmYl9jcmMpOwogaW50IGNoYW1lbGl1bV9nZXRfY2FwdHVyZWRfZnJhbWVfY291bnQoc3RydWN0 IGNoYW1lbGl1bSAqY2hhbWVsaXVtKTsKIGludCBjaGFtZWxpdW1fZ2V0X2ZyYW1lX2xpbWl0KHN0 cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKIAkJCSAgICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9y dCAqcG9ydCwKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoYW1lbGl1bS5jIGIvdGVzdHMvY2hhbWVsaXVt LmMKaW5kZXggZTI2ZjA1NTcuLmRhOThkZTQ3IDEwMDY0NAotLS0gYS90ZXN0cy9jaGFtZWxpdW0u YworKysgYi90ZXN0cy9jaGFtZWxpdW0uYwpAQCAtNDksNDMgKzQ5LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgewogI2RlZmluZSBIUERfVE9HR0xFX0NPVU5UX1ZHQSA1CiAjZGVmaW5lIEhQRF9UT0dHTEVf Q09VTlRfRFBfSERNSSAxNQogCi0vKiBQcmUtY2FsY3VsYXRlZCBDUkNzIGZvciB0aGUgcGF0dGVy biBmYiwgZm9yIGFsbCB0aGUgbW9kZXMgaW4gdGhlIGRlZmF1bHQKLSAqIGNoYW1lbGl1bSBlZGlk Ci0gKi8KLXN0cnVjdCBjcmNfZW50cnkgewotCWludCB3aWR0aDsKLQlpbnQgaGVpZ2h0OwotCWln dF9jcmNfdCBjcmM7Ci19OwotCi0jZGVmaW5lIENSQ19FTlRSWSh3XywgaF8sIC4uLikgXAotCXsg d18sIGhfLCB7IC5uX3dvcmRzID0gNCwgLmNyYyA9IHsgX19WQV9BUkdTX18gfSB9IH0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBjcmNfZW50cnkgcGF0dGVybl9mYl9jcmNzW10gPSB7Ci0JQ1JDX0VO VFJZKDE5MjAsIDEwODAsIDB4Zjg1OSwgMHhhNzUxLCAweDhjODEsIDB4NDVhMSksCi0JQ1JDX0VO VFJZKDEyODAsICA3MjAsIDB4Y2VjMiwgMHg0MjQ2LCAweDZjZmQsIDB4ZWI0MyksCi0JQ1JDX0VO VFJZKDEwMjQsICA3NjgsIDB4ODVlNSwgMHhmMGNkLCAweGFmZTMsIDB4N2YxOCksCi0JQ1JDX0VO VFJZKCA4MDAsICA2MDAsIDB4NmIzOSwgMHgzMmI2LCAweDgzMWEsIDB4YjAzZSksCi0JQ1JDX0VO VFJZKCA2NDAsICA0ODAsIDB4YTEyMSwgMHgyNDczLCAweGIxNTAsIDB4OGM0NyksCi19OwotI3Vu ZGVmIENSQ19FTlRSWQotCi1zdGF0aWMgY29uc3QgaWd0X2NyY190ICoKLWdldF9wcmVjYWxjdWxh dGVkX2NyYyhzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsIGludCB3LCBpbnQgaCkKLXsKLQlp bnQgaTsKLQljb25zdCBzdHJ1Y3QgY3JjX2VudHJ5ICplbnRyeTsKLQotCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKHBhdHRlcm5fZmJfY3Jjcyk7IGkrKykgewotCQllbnRyeSA9ICZwYXR0ZXJu X2ZiX2NyY3NbaV07Ci0KLQkJaWYgKGVudHJ5LT53aWR0aCA9PSB3ICYmIGVudHJ5LT5oZWlnaHQg PT0gaCkKLQkJCXJldHVybiAmZW50cnktPmNyYzsKLQl9Ci0KLQlyZXR1cm4gTlVMTDsKLX0KLQog c3RhdGljIHZvaWQKIHJlcXVpcmVfY29ubmVjdG9yX3ByZXNlbnQoZGF0YV90ICpkYXRhLCB1bnNp Z25lZCBpbnQgdHlwZSkKIHsKQEAgLTQyMiw3ICszODUsOCBAQCB0ZXN0X2Rpc3BsYXlfY3JjX3Np bmdsZShkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKIAlpZ3Rfb3V0 cHV0X3QgKm91dHB1dDsKIAlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKIAlpZ3RfY3JjX3QgKmNyYzsK LQljb25zdCBpZ3RfY3JjX3QgKmV4cGVjdGVkX2NyYzsKKwlpZ3RfY3JjX3QgKmV4cGVjdGVkX2Ny YzsKKwlzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyY19hc3luY19kYXRhICpmYl9jcmM7CiAJc3RydWN0 IGlndF9mYiBmYjsKIAlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CiAJZHJtTW9kZUNvbm5lY3RvciAq Y29ubmVjdG9yOwpAQCAtNDQ1LDI0ICs0MDksMjEgQEAgdGVzdF9kaXNwbGF5X2NyY19zaW5nbGUo ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiAJCQkJCQkgICAgMCwg MCwgMCwgJmZiKTsKIAkJaWd0X2Fzc2VydChmYl9pZCA+IDApOwogCisJCWZiX2NyYyA9IGNoYW1l bGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX3N0YXJ0KGRhdGEtPmRybV9mZCwKKwkJCQkJCQkJ JmZiKTsKIAkJZW5hYmxlX291dHB1dChkYXRhLCBwb3J0LCBvdXRwdXQsIG1vZGUsICZmYik7CiAK LQkJZXhwZWN0ZWRfY3JjID0gZ2V0X3ByZWNhbGN1bGF0ZWRfY3JjKHBvcnQsCi0JCQkJCQkgICAg IG1vZGUtPmhkaXNwbGF5LAotCQkJCQkJICAgICBtb2RlLT52ZGlzcGxheSk7Ci0JCWlmICghZXhw ZWN0ZWRfY3JjKSB7Ci0JCQlpZ3Rfd2FybigiTm8gcHJlY2FsY3VsYXRlZCBDUkMgZm91bmQgZm9y ICVkeCVkLCBza2lwcGluZyBDUkMgY2hlY2tcbiIsCi0JCQkJIG1vZGUtPmhkaXNwbGF5LCBtb2Rl LT52ZGlzcGxheSk7Ci0JCQlnb3RvIG5leHQ7Ci0JCX0KLQogCQlpZ3RfZGVidWcoIlRlc3Rpbmcg c2luZ2xlIENSQyBmZXRjaFxuIik7CisKIAkJY3JjID0gY2hhbWVsaXVtX2dldF9jcmNfZm9yX2Fy ZWEoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LAogCQkJCQkJIDAsIDAsIDAsIDApOworCisJCWV4cGVj dGVkX2NyYyA9IGNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2FzeW5jX2ZpbmlzaChmYl9jcmMp OworCiAJCWlndF9hc3NlcnRfY3JjX2VxdWFsKGNyYywgZXhwZWN0ZWRfY3JjKTsKKwkJZnJlZShl eHBlY3RlZF9jcmMpOwogCQlmcmVlKGNyYyk7CiAKLW5leHQ6CiAJCWRpc2FibGVfb3V0cHV0KGRh dGEsIHBvcnQsIG91dHB1dCk7CiAJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZmIpOwog CX0KQEAgLTQ3OCw3ICs0MzksOCBAQCB0ZXN0X2Rpc3BsYXlfY3JjX211bHRpcGxlKGRhdGFfdCAq ZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQogCWlndF9vdXRwdXRfdCAqb3V0cHV0 OwogCWlndF9wbGFuZV90ICpwcmltYXJ5OwogCWlndF9jcmNfdCAqY3JjOwotCWNvbnN0IGlndF9j cmNfdCAqZXhwZWN0ZWRfY3JjOworCWlndF9jcmNfdCAqZXhwZWN0ZWRfY3JjOworCXN0cnVjdCBj aGFtZWxpdW1fZmJfY3JjX2FzeW5jX2RhdGEgKmZiX2NyYzsKIAlzdHJ1Y3QgaWd0X2ZiIGZiOwog CWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKIAlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7CkBA IC01MDEsMTUgKzQ2MywxMCBAQCB0ZXN0X2Rpc3BsYXlfY3JjX211bHRpcGxlKGRhdGFfdCAqZGF0 YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQogCQkJCQkJICAgIDAsIDAsIDAsICZmYik7 CiAJCWlndF9hc3NlcnQoZmJfaWQgPiAwKTsKIAotCQllbmFibGVfb3V0cHV0KGRhdGEsIHBvcnQs IG91dHB1dCwgbW9kZSwgJmZiKTsKKwkJZmJfY3JjID0gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9j cmNfYXN5bmNfc3RhcnQoZGF0YS0+ZHJtX2ZkLAorCQkJCQkJCQkmZmIpOwogCi0JCWV4cGVjdGVk X2NyYyA9IGdldF9wcmVjYWxjdWxhdGVkX2NyYyhwb3J0LCBtb2RlLT5oZGlzcGxheSwKLQkJCQkJ CSAgICAgbW9kZS0+dmRpc3BsYXkpOwotCQlpZiAoIWV4cGVjdGVkX2NyYykgewotCQkJaWd0X3dh cm4oIk5vIHByZWNhbGN1bGF0ZWQgQ1JDIGZvdW5kIGZvciAlZHglZCwgc2tpcHBpbmcgQ1JDIGNo ZWNrXG4iLAotCQkJCSBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwotCQkJZ290byBu ZXh0OwotCQl9CisJCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAmZmIp OwogCiAJCS8qIFdlIHdhbnQgdG8ga2VlcCB0aGUgZGlzcGxheSBydW5uaW5nIGZvciBhIGxpdHRs ZSBiaXQsIHNpbmNlCiAJCSAqIHRoZXJlJ3MgYWx3YXlzIHRoZSBwb3RlbnRpYWwgdGhlIGRyaXZl ciBpc24ndCBhYmxlIHRvIGtlZXAKQEAgLTUyMCwxMSArNDc3LDE1IEBAIHRlc3RfZGlzcGxheV9j cmNfbXVsdGlwbGUoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiAJ CQkJCQkgICAmY2FwdHVyZWRfZnJhbWVfY291bnQpOwogCiAJCWlndF9kZWJ1ZygiQ2FwdHVyZWQg JWQgZnJhbWVzXG4iLCBjYXB0dXJlZF9mcmFtZV9jb3VudCk7CisKKwkJZXhwZWN0ZWRfY3JjID0g Y2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfYXN5bmNfZmluaXNoKGZiX2NyYyk7CisKIAkJZm9y IChqID0gMDsgaiA8IGNhcHR1cmVkX2ZyYW1lX2NvdW50OyBqKyspCiAJCQlpZ3RfYXNzZXJ0X2Ny Y19lcXVhbCgmY3JjW2pdLCBleHBlY3RlZF9jcmMpOworCisJCWZyZWUoZXhwZWN0ZWRfY3JjKTsK IAkJZnJlZShjcmMpOwogCi1uZXh0OgogCQlkaXNhYmxlX291dHB1dChkYXRhLCBwb3J0LCBvdXRw dXQpOwogCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiKTsKIAl9Ci0tIAoyLjEzLjIK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=