From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: [PATCH i-g-t v3 1/4] chamelium: Calculate CRC from framebuffer instead of hardcoding it Date: Wed, 5 Jul 2017 11:04:32 +0300 Message-ID: <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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6C81489395 for ; Wed, 5 Jul 2017 08:04:40 +0000 (UTC) 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 PgotLS0KIGxpYi9pZ3RfY2hhbWVsaXVtLmMgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2lndF9jaGFtZWxpdW0uaCB8ICAgNSAr KwogdGVzdHMvY2hhbWVsaXVtLmMgICB8ICA3NiArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAz IGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaWd0X2NoYW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwppbmRleCBi ZmYwOGMwZS4uYjlkODBiNmIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKKysrIGIv bGliL2lndF9jaGFtZWxpdW0uYwpAQCAtOTQsNiArOTQsMTQgQEAgc3RydWN0IGNoYW1lbGl1bV9m cmFtZV9kdW1wIHsKIAlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQ7CiB9OwogCitzdHJ1Y3Qg Y2hhbWVsaXVtX2ZiX2NyYyB7CisJaW50IGZkOworCXN0cnVjdCBpZ3RfZmIgKmZiOworCisJcHRo cmVhZF90IHRocmVhZF9pZDsKKwlpZ3RfY3JjX3QgKnJldDsKK307CisKIHN0cnVjdCBjaGFtZWxp dW0gewogCXhtbHJwY19lbnYgZW52OwogCXhtbHJwY19jbGllbnQgKmNsaWVudDsKQEAgLTEwMDMs NiArMTAxMSwxNTggQEAgaW50IGNoYW1lbGl1bV9nZXRfZnJhbWVfbGltaXQoc3RydWN0IGNoYW1l bGl1bSAqY2hhbWVsaXVtLAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB1aW50MzJfdCBjaGFt ZWxpdW1feHJnYl9oYXNoMTYodW5zaWduZWQgY2hhciAqYnVmZmVyLCBpbnQgd2lkdGgsCisJCQkJ ICAgICAgaW50IGhlaWdodCwgaW50IGssIGludCBtKQoreworCXVuc2lnbmVkIGNoYXIgciwgZywg YjsKKwl1aW50NjRfdCBzdW0gPSAwOworCXVpbnQ2NF90IGNvdW50ID0gMDsKKwl1aW50NjRfdCB2 YWx1ZTsKKwl1aW50MzJfdCBoYXNoOworCWludCBpbmRleDsKKwlpbnQgaTsKKworCWZvciAoaT0w OyBpIDwgd2lkdGggKiBoZWlnaHQ7IGkrKykgeworCQlpZiAoKGkgJSBtKSAhPSBrKQorCQkJY29u dGludWU7CisKKwkJaW5kZXggPSBpICogNDsKKworCQlyID0gYnVmZmVyW2luZGV4ICsgMl07CisJ CWcgPSBidWZmZXJbaW5kZXggKyAxXTsKKwkJYiA9IGJ1ZmZlcltpbmRleCArIDBdOworCisJCXZh bHVlID0gciB8IChnIDw8IDgpIHwgKGIgPDwgMTYpOworCQlzdW0gKz0gKytjb3VudCAqIHZhbHVl OworCX0KKworCWhhc2ggPSAoKHN1bSA+PiAwKSBeIChzdW0gPj4gMTYpIF4gKHN1bSA+PiAzMikg XiAoc3VtID4+IDQ4KSkgJiAweGZmZmY7CisKKwlyZXR1cm4gaGFzaDsKK30KKworLyoqCisgKiBj aGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyYzoKKyAqIEBmZDogVGhlIGRybSBmaWxlIGRlc2NyaXB0 b3IKKyAqIEBmYjogVGhlIGZyYW1lYnVmZmVyIHRvIGNhbGN1bGF0ZSB0aGUgQ1JDIGZvcgorICoK KyAqIENhbGN1bGF0ZXMgYSBDUkMgZm9yIHRoZSBwcm92aWRlZCBmcmFtZWJ1ZmZlciwgdGhlIHNh bWUgd2F5IGFzIHRoZSBDaGFtZWxpdW0uCisgKiBUaGlzIGNhbGN1bGF0ZXMgdGhlIENSQyBpbiBh IG5vbi10aHJlYWRlZCBmYXNoaW9uLgorICoKKyAqIFJldHVybnM6IFRoZSBjYWxjdWxhdGVkIENS QworICovCitpZ3RfY3JjX3QgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjKGludCBmZCwgc3Ry dWN0IGlndF9mYiAqZmIpCit7CisJaWd0X2NyY190ICpyZXQ7CisJY2Fpcm9fdCAqY3I7CisJY2Fp cm9fc3VyZmFjZV90ICpmYl9zdXJmYWNlOworCXVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKwlpbnQg biA9IDQ7CisJaW50IHcsIGg7CisJaW50IGksIGo7CisKKwlyZXQgPSBjYWxsb2MoMSwgc2l6ZW9m KGlndF9jcmNfdCkpOworCisJLyogR2V0IHRoZSBjYWlybyBzdXJmYWNlIGZvciB0aGUgZnJhbWVi dWZmZXIgKi8KKwljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGZkLCBmYik7CisJZmJfc3VyZmFjZSA9 IGNhaXJvX2dldF90YXJnZXQoY3IpOworCWNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKGZiX3N1cmZh Y2UpOworCWNhaXJvX2Rlc3Ryb3koY3IpOworCisJYnVmZmVyID0gY2Fpcm9faW1hZ2Vfc3VyZmFj ZV9nZXRfZGF0YShmYl9zdXJmYWNlKTsKKwl3ID0gZmItPndpZHRoOworCWggPSBmYi0+aGVpZ2h0 OworCisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlqID0gbiAtIGkgLSAxOworCQlyZXQt PmNyY1tpXSA9IGNoYW1lbGl1bV94cmdiX2hhc2gxNihidWZmZXIsIHcsIGgsIGosIG4pOworCX0K KworCXJldC0+bl93b3JkcyA9IG47CisJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGZiX3N1cmZhY2Up OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgKmNoYW1lbGl1bV9jYWxjdWxhdGVf ZmJfY3JjX3RocmVhZCh2b2lkICpkYXRhKQoreworCXN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjICpm Yl9jcmMgPSAoc3RydWN0IGNoYW1lbGl1bV9mYl9jcmMgKikgZGF0YTsKKwljYWlyb190ICpjcjsK KwljYWlyb19zdXJmYWNlX3QgKmZiX3N1cmZhY2U7CisJdW5zaWduZWQgY2hhciAqYnVmZmVyOwor CWludCBuID0gNDsKKwlpbnQgdywgaDsKKwlpbnQgaSwgajsKKworCS8qIEdldCB0aGUgY2Fpcm8g c3VyZmFjZSBmb3IgdGhlIGZyYW1lYnVmZmVyICovCisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChm Yl9jcmMtPmZkLCBmYl9jcmMtPmZiKTsKKwlmYl9zdXJmYWNlID0gY2Fpcm9fZ2V0X3RhcmdldChj cik7CisJY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoZmJfc3VyZmFjZSk7CisJY2Fpcm9fZGVzdHJv eShjcik7CisKKwlidWZmZXIgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGZiX3N1cmZh Y2UpOworCXcgPSBmYl9jcmMtPmZiLT53aWR0aDsKKwloID0gZmJfY3JjLT5mYi0+aGVpZ2h0Owor CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlqID0gbiAtIGkgLSAxOworCQlmYl9jcmMt PnJldC0+Y3JjW2ldID0gY2hhbWVsaXVtX3hyZ2JfaGFzaDE2KGJ1ZmZlciwgdywgaCwgaiwgbik7 CisJfQorCisJZmJfY3JjLT5yZXQtPm5fd29yZHMgPSBuOworCWNhaXJvX3N1cmZhY2VfZGVzdHJv eShmYl9zdXJmYWNlKTsKKworCXJldHVybiBOVUxMOworfQorCisvKioKKyAqIGNoYW1lbGl1bV9j YWxjdWxhdGVfZmJfY3JjX2xhdW5jaDoKKyAqIEBmZDogVGhlIGRybSBmaWxlIGRlc2NyaXB0b3IK KyAqIEBmYjogVGhlIGZyYW1lYnVmZmVyIHRvIGNhbGN1bGF0ZSB0aGUgQ1JDIGZvcgorICoKKyAq IExhdW5jaGVzIHRoZSBDUkMgY2FsY3VsYXRpb24gZm9yIHRoZSBwcm92aWRlZCBmcmFtZWJ1ZmZl ciwgdGhlIHNhbWUgd2F5IGFzCisgKiB0aGUgQ2hhbWVsaXVtLiBUaGlzIGNhbGN1bGF0ZXMgdGhl IENSQyBpbiBhIHRocmVhZGVkIGZhc2hpb24uCisgKiBUaHJlYWQtcmVsYXRlZCBpbmZvcm1hdGlv biBpcyByZXR1cm5lZCBhbmQgc2hvdWxkIGJlIHBhc3NlZCB0byBhIHN1YnNlcXVlbnQKKyAqIGNh bGwgdG8gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfcmVzdWx0LiBJdCBzaG91bGQgbm90IGJl IGZyZWVkLgorICoKKyAqIFJldHVybnM6IEFuIGludGVybWVkaWF0ZSBzdHJ1Y3R1cmUgd2l0aCB0 aHJlYWQtcmVsYXRlZCBpbmZvcm1hdGlvbgorICovCitzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyYyAq Y2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfbGF1bmNoKGludCBmZCwKKwkJCQkJCQkgICBzdHJ1 Y3QgaWd0X2ZiICpmYikKK3sKKwlzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyYyAqZmJfY3JjOworCisJ ZmJfY3JjID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgY2hhbWVsaXVtX2ZiX2NyYykpOworCWZi X2NyYy0+cmV0ID0gY2FsbG9jKDEsIHNpemVvZihpZ3RfY3JjX3QpKTsKKwlmYl9jcmMtPmZkID0g ZmQ7CisJZmJfY3JjLT5mYiA9IGZiOworCisJcHRocmVhZF9jcmVhdGUoJmZiX2NyYy0+dGhyZWFk X2lkLCBOVUxMLAorCQkgICAgICAgY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfdGhyZWFkLCBm Yl9jcmMpOworCisJcmV0dXJuIGZiX2NyYzsKK30KKworLyoqCisgKiBjaGFtZWxpdW1fY2FsY3Vs YXRlX2ZiX2NyY19yZXN1bHQ6CisgKiBAZmJfY3JjOiBBbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJl IHdpdGggdGhyZWFkLXJlbGF0ZWQgaW5mb3JtYXRpb24KKyAqCisgKiBQcm92aWRlcyB0aGUgcmVz dWx0IGZvciB0aGUgcHJldmlvdXNseS1sYXVuY2hlZCBDUkMgY2FsY3VsYXRpb24uCisgKgorICog UmV0dXJuczogVGhlIGNhbGN1bGF0ZWQgQ1JDCisgKi8KK2lndF9jcmNfdCAqY2hhbWVsaXVtX2Nh bGN1bGF0ZV9mYl9jcmNfcmVzdWx0KHN0cnVjdCBjaGFtZWxpdW1fZmJfY3JjICpmYl9jcmMpCit7 CisJaWd0X2NyY190ICpyZXQ7CisKKwlwdGhyZWFkX2pvaW4oZmJfY3JjLT50aHJlYWRfaWQsIE5V TEwpOworCisJcmV0ID0gZmJfY3JjLT5yZXQ7CisJZnJlZShmYl9jcmMpOworCisJcmV0dXJuIHJl dDsKK30KKwogc3RhdGljIHVuc2lnbmVkIGludCBjaGFtZWxpdW1fZ2V0X3BvcnRfdHlwZShzdHJ1 Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCiAJCQkJCSAgICBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQg KnBvcnQpCiB7CmRpZmYgLS1naXQgYS9saWIvaWd0X2NoYW1lbGl1bS5oIGIvbGliL2lndF9jaGFt ZWxpdW0uaAppbmRleCA4MTMyMmFkMi4uZTUxY2Y0ZjkgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hh bWVsaXVtLmgKKysrIGIvbGliL2lndF9jaGFtZWxpdW0uaApAQCAtMzYsNiArMzYsNyBAQAogc3Ry dWN0IGNoYW1lbGl1bTsKIHN0cnVjdCBjaGFtZWxpdW1fcG9ydDsKIHN0cnVjdCBjaGFtZWxpdW1f ZnJhbWVfZHVtcDsKK3N0cnVjdCBjaGFtZWxpdW1fZmJfY3JjOwogCiBzdHJ1Y3QgY2hhbWVsaXVt ICpjaGFtZWxpdW1faW5pdChpbnQgZHJtX2ZkKTsKIHZvaWQgY2hhbWVsaXVtX2RlaW5pdChzdHJ1 Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pOwpAQCAtOTIsNiArOTMsMTAgQEAgc3RydWN0IGNoYW1l bGl1bV9mcmFtZV9kdW1wICpjaGFtZWxpdW1fcG9ydF9kdW1wX3BpeGVscyhzdHJ1Y3QgY2hhbWVs aXVtICpjaGFtZWwKIAkJCQkJCQlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQsCiAJCQkJCQkJ aW50IHgsIGludCB5LAogCQkJCQkJCWludCB3LCBpbnQgaCk7CitpZ3RfY3JjX3QgKmNoYW1lbGl1 bV9jYWxjdWxhdGVfZmJfY3JjKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpOworc3RydWN0IGNo YW1lbGl1bV9mYl9jcmMgKmNoYW1lbGl1bV9jYWxjdWxhdGVfZmJfY3JjX2xhdW5jaChpbnQgZmQs CisJCQkJCQkJICAgc3RydWN0IGlndF9mYiAqZmIpOworaWd0X2NyY190ICpjaGFtZWxpdW1fY2Fs Y3VsYXRlX2ZiX2NyY19yZXN1bHQoc3RydWN0IGNoYW1lbGl1bV9mYl9jcmMgKmZiX2NyYyk7CiBp bnQgY2hhbWVsaXVtX2dldF9jYXB0dXJlZF9mcmFtZV9jb3VudChzdHJ1Y3QgY2hhbWVsaXVtICpj aGFtZWxpdW0pOwogaW50IGNoYW1lbGl1bV9nZXRfZnJhbWVfbGltaXQoc3RydWN0IGNoYW1lbGl1 bSAqY2hhbWVsaXVtLAogCQkJICAgICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LApkaWZm IC0tZ2l0IGEvdGVzdHMvY2hhbWVsaXVtLmMgYi90ZXN0cy9jaGFtZWxpdW0uYwppbmRleCBlMzA2 NzY2NC4uM2ZkMmIwMmMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoYW1lbGl1bS5jCisrKyBiL3Rlc3Rz L2NoYW1lbGl1bS5jCkBAIC00OSw0MyArNDksNiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVmaW5l IEhQRF9UT0dHTEVfQ09VTlRfVkdBIDUKICNkZWZpbmUgSFBEX1RPR0dMRV9DT1VOVF9EUF9IRE1J IDE1CiAKLS8qIFByZS1jYWxjdWxhdGVkIENSQ3MgZm9yIHRoZSBwYXR0ZXJuIGZiLCBmb3IgYWxs IHRoZSBtb2RlcyBpbiB0aGUgZGVmYXVsdAotICogY2hhbWVsaXVtIGVkaWQKLSAqLwotc3RydWN0 IGNyY19lbnRyeSB7Ci0JaW50IHdpZHRoOwotCWludCBoZWlnaHQ7Ci0JaWd0X2NyY190IGNyYzsK LX07Ci0KLSNkZWZpbmUgQ1JDX0VOVFJZKHdfLCBoXywgLi4uKSBcCi0JeyB3XywgaF8sIHsgLm5f d29yZHMgPSA0LCAuY3JjID0geyBfX1ZBX0FSR1NfXyB9IH0gfQotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNyY19lbnRyeSBwYXR0ZXJuX2ZiX2NyY3NbXSA9IHsKLQlDUkNfRU5UUlkoMTkyMCwgMTA4 MCwgMHhmODU5LCAweGE3NTEsIDB4OGM4MSwgMHg0NWExKSwKLQlDUkNfRU5UUlkoMTI4MCwgIDcy MCwgMHhjZWMyLCAweDQyNDYsIDB4NmNmZCwgMHhlYjQzKSwKLQlDUkNfRU5UUlkoMTAyNCwgIDc2 OCwgMHg4NWU1LCAweGYwY2QsIDB4YWZlMywgMHg3ZjE4KSwKLQlDUkNfRU5UUlkoIDgwMCwgIDYw MCwgMHg2YjM5LCAweDMyYjYsIDB4ODMxYSwgMHhiMDNlKSwKLQlDUkNfRU5UUlkoIDY0MCwgIDQ4 MCwgMHhhMTIxLCAweDI0NzMsIDB4YjE1MCwgMHg4YzQ3KSwKLX07Ci0jdW5kZWYgQ1JDX0VOVFJZ Ci0KLXN0YXRpYyBjb25zdCBpZ3RfY3JjX3QgKgotZ2V0X3ByZWNhbGN1bGF0ZWRfY3JjKHN0cnVj dCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwgaW50IHcsIGludCBoKQotewotCWludCBpOwotCWNvbnN0 IHN0cnVjdCBjcmNfZW50cnkgKmVudHJ5OwotCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo cGF0dGVybl9mYl9jcmNzKTsgaSsrKSB7Ci0JCWVudHJ5ID0gJnBhdHRlcm5fZmJfY3Jjc1tpXTsK LQotCQlpZiAoZW50cnktPndpZHRoID09IHcgJiYgZW50cnktPmhlaWdodCA9PSBoKQotCQkJcmV0 dXJuICZlbnRyeS0+Y3JjOwotCX0KLQotCXJldHVybiBOVUxMOwotfQotCiBzdGF0aWMgdm9pZAog cmVxdWlyZV9jb25uZWN0b3JfcHJlc2VudChkYXRhX3QgKmRhdGEsIHVuc2lnbmVkIGludCB0eXBl KQogewpAQCAtNDI0LDcgKzM4Nyw4IEBAIHRlc3RfZGlzcGxheV9jcmNfc2luZ2xlKGRhdGFfdCAq ZGF0YSwgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0KQogCWlndF9vdXRwdXRfdCAqb3V0cHV0 OwogCWlndF9wbGFuZV90ICpwcmltYXJ5OwogCWlndF9jcmNfdCAqY3JjOwotCWNvbnN0IGlndF9j cmNfdCAqZXhwZWN0ZWRfY3JjOworCWlndF9jcmNfdCAqZXhwZWN0ZWRfY3JjOworCXN0cnVjdCBj aGFtZWxpdW1fZmJfY3JjICpmYl9jcmM7CiAJc3RydWN0IGlndF9mYiBmYjsKIAlkcm1Nb2RlTW9k ZUluZm8gKm1vZGU7CiAJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwpAQCAtNDQ3LDI0ICs0 MTEsMjEgQEAgdGVzdF9kaXNwbGF5X2NyY19zaW5nbGUoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hh bWVsaXVtX3BvcnQgKnBvcnQpCiAJCQkJCQkgICAgMCwgMCwgMCwgJmZiKTsKIAkJaWd0X2Fzc2Vy dChmYl9pZCA+IDApOwogCi0JCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2Rl LCAmZmIpOworCQlmYl9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19sYXVuY2goZGF0 YS0+ZHJtX2ZkLCAmZmIpOwogCi0JCWV4cGVjdGVkX2NyYyA9IGdldF9wcmVjYWxjdWxhdGVkX2Ny Yyhwb3J0LAotCQkJCQkJICAgICBtb2RlLT5oZGlzcGxheSwKLQkJCQkJCSAgICAgbW9kZS0+dmRp c3BsYXkpOwotCQlpZiAoIWV4cGVjdGVkX2NyYykgewotCQkJaWd0X3dhcm4oIk5vIHByZWNhbGN1 bGF0ZWQgQ1JDIGZvdW5kIGZvciAlZHglZCwgc2tpcHBpbmcgQ1JDIGNoZWNrXG4iLAotCQkJCSBt b2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwotCQkJZ290byBuZXh0OwotCQl9CisJCWVu YWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAmZmIpOwogCiAJCWlndF9kZWJ1 ZygiVGVzdGluZyBzaW5nbGUgQ1JDIGZldGNoXG4iKTsKKwogCQljcmMgPSBjaGFtZWxpdW1fZ2V0 X2NyY19mb3JfYXJlYShkYXRhLT5jaGFtZWxpdW0sIHBvcnQsCiAJCQkJCQkgMCwgMCwgMCwgMCk7 CisKKwkJZXhwZWN0ZWRfY3JjID0gY2hhbWVsaXVtX2NhbGN1bGF0ZV9mYl9jcmNfcmVzdWx0KGZi X2NyYyk7CisKIAkJaWd0X2Fzc2VydF9jcmNfZXF1YWwoY3JjLCBleHBlY3RlZF9jcmMpOworCQlm cmVlKGV4cGVjdGVkX2NyYyk7CiAJCWZyZWUoY3JjKTsKIAotbmV4dDoKIAkJZGlzYWJsZV9vdXRw dXQoZGF0YSwgcG9ydCwgb3V0cHV0KTsKIAkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZm Yik7CiAJfQpAQCAtNDgwLDcgKzQ0MSw4IEBAIHRlc3RfZGlzcGxheV9jcmNfbXVsdGlwbGUoZGF0 YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiAJaWd0X291dHB1dF90ICpv dXRwdXQ7CiAJaWd0X3BsYW5lX3QgKnByaW1hcnk7CiAJaWd0X2NyY190ICpjcmM7Ci0JY29uc3Qg aWd0X2NyY190ICpleHBlY3RlZF9jcmM7CisJaWd0X2NyY190ICpleHBlY3RlZF9jcmM7CisJc3Ry dWN0IGNoYW1lbGl1bV9mYl9jcmMgKmZiX2NyYzsKIAlzdHJ1Y3QgaWd0X2ZiIGZiOwogCWRybU1v ZGVNb2RlSW5mbyAqbW9kZTsKIAlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7CkBAIC01MDMs MTUgKzQ2NSw5IEBAIHRlc3RfZGlzcGxheV9jcmNfbXVsdGlwbGUoZGF0YV90ICpkYXRhLCBzdHJ1 Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiAJCQkJCQkgICAgMCwgMCwgMCwgJmZiKTsKIAkJaWd0 X2Fzc2VydChmYl9pZCA+IDApOwogCi0JCWVuYWJsZV9vdXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0 LCBtb2RlLCAmZmIpOworCQlmYl9jcmMgPSBjaGFtZWxpdW1fY2FsY3VsYXRlX2ZiX2NyY19sYXVu Y2goZGF0YS0+ZHJtX2ZkLCAmZmIpOwogCi0JCWV4cGVjdGVkX2NyYyA9IGdldF9wcmVjYWxjdWxh dGVkX2NyYyhwb3J0LCBtb2RlLT5oZGlzcGxheSwKLQkJCQkJCSAgICAgbW9kZS0+dmRpc3BsYXkp OwotCQlpZiAoIWV4cGVjdGVkX2NyYykgewotCQkJaWd0X3dhcm4oIk5vIHByZWNhbGN1bGF0ZWQg Q1JDIGZvdW5kIGZvciAlZHglZCwgc2tpcHBpbmcgQ1JDIGNoZWNrXG4iLAotCQkJCSBtb2RlLT5o ZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwotCQkJZ290byBuZXh0OwotCQl9CisJCWVuYWJsZV9v dXRwdXQoZGF0YSwgcG9ydCwgb3V0cHV0LCBtb2RlLCAmZmIpOwogCiAJCS8qIFdlIHdhbnQgdG8g a2VlcCB0aGUgZGlzcGxheSBydW5uaW5nIGZvciBhIGxpdHRsZSBiaXQsIHNpbmNlCiAJCSAqIHRo ZXJlJ3MgYWx3YXlzIHRoZSBwb3RlbnRpYWwgdGhlIGRyaXZlciBpc24ndCBhYmxlIHRvIGtlZXAK QEAgLTUyMiwxMSArNDc4LDE1IEBAIHRlc3RfZGlzcGxheV9jcmNfbXVsdGlwbGUoZGF0YV90ICpk YXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiAJCQkJCQkgICAmY2FwdHVyZWRfZnJh bWVfY291bnQpOwogCiAJCWlndF9kZWJ1ZygiQ2FwdHVyZWQgJWQgZnJhbWVzXG4iLCBjYXB0dXJl ZF9mcmFtZV9jb3VudCk7CisKKwkJZXhwZWN0ZWRfY3JjID0gY2hhbWVsaXVtX2NhbGN1bGF0ZV9m Yl9jcmNfcmVzdWx0KGZiX2NyYyk7CisKIAkJZm9yIChqID0gMDsgaiA8IGNhcHR1cmVkX2ZyYW1l X2NvdW50OyBqKyspCiAJCQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjW2pdLCBleHBlY3RlZF9j cmMpOworCisJCWZyZWUoZXhwZWN0ZWRfY3JjKTsKIAkJZnJlZShjcmMpOwogCi1uZXh0OgogCQlk aXNhYmxlX291dHB1dChkYXRhLCBwb3J0LCBvdXRwdXQpOwogCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmRybV9mZCwgJmZiKTsKIAl9Ci0tIAoyLjEzLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=