From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 14/18] drm/i915: Read out HDMI infoframes Date: Thu, 20 Sep 2018 21:51:41 +0300 Message-ID: <20180920185145.1912-15-ville.syrjala@linux.intel.com> References: <20180920185145.1912-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180920185145.1912-1-ville.syrjala@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: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBjb2RlIHRvIHJlYWQgdGhlIGluZm9mcmFtZXMgZnJvbSB0aGUgdmlkZW8gRElQIGFuZCB1bnBh Y2sgdGhlbSBpbnRvCnRoZSBjcnRjIHN0YXRlLgoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYyAgfCAgMTcgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgfCAyMDMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjMwIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCmluZGV4IDVmM2JkNTM2 ZDI2MS4uYTU2Mjg5Zjc4MzI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwpAQCAtMzQ1OSw2 ICszNDU5LDIzIEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCiAJCQlieHRfZGRpX3BoeV9nZXRfbGFuZV9sYXRfb3B0aW1fbWFzayhlbmNv ZGVyKTsKIAogCWludGVsX2RkaV9jb21wdXRlX21pbl92b2x0YWdlX2xldmVsKGRldl9wcml2LCBw aXBlX2NvbmZpZyk7CisKKwlpbnRlbF9oZG1pX3JlYWRfZ2NwX2luZm9mcmFtZShlbmNvZGVyLCBw aXBlX2NvbmZpZyk7CisKKwlpZiAoIWludGVsX3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVf Y29uZmlnLAorCQkJCSAgSERNSV9JTkZPRlJBTUVfVFlQRV9BVkksCisJCQkJICAmcGlwZV9jb25m aWctPmluZm9mcmFtZXMuYXZpKSkKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVhZCBBVkkgaW5m b2ZyYW1lXG4iKTsKKworCWlmICghaW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9j b25maWcsCisJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKKwkJCQkgICZwaXBlX2NvbmZp Zy0+aW5mb2ZyYW1lcy5zcGQpKQorCQlEUk1fRVJST1IoImZhaWxlZCB0byByZWFkIFNQRCBpbmZv ZnJhbWU6XG4iKTsKKworCWlmICghaW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9j b25maWcsCisJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKKwkJCQkgICZwaXBlX2Nv bmZpZy0+aW5mb2ZyYW1lcy5oZG1pKSkKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVhZCBIRE1J IGluZm9mcmFtZVxuIik7CiB9CiAKIHN0YXRpYyBlbnVtIGludGVsX291dHB1dF90eXBlCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDM1NzYyNGE2YmZlMi4uNzVlYzk5Yjg1MjMyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTE4NSw2ICsxMTg1LDEwIEBAIHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgewogCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAogCQkJCXVuc2lnbmVkIGludCB0eXBlLAogCQkJCWNvbnN0IHZvaWQgKmZyYW1lLCBz c2l6ZV90IGxlbik7CisJc3NpemVfdCAoKnJlYWRfaW5mb2ZyYW1lKShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAorCQkJCSAgdW5zaWduZWQgaW50IHR5cGUsCisJCQkJICB2b2lkICpmcmFtZSwgc3Np emVfdCBsZW4pOwogCXZvaWQgKCpzZXRfaW5mb2ZyYW1lcykoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCiAJCQkgICAgICAgYm9vbCBlbmFibGUsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC0xODY3LDYgKzE4NzEsMTIgQEAgdm9p ZCBpbnRlbF9pbmZvZnJhbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCk7CiB1MzIgaW50ZWxfaGRtaV9pbmZvZnJhbWVzX2VuYWJsZWQoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCiAJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSk7CiB1MzIgaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKHVuc2lnbmVkIGlu dCB0eXBlKTsKK3ZvaWQgaW50ZWxfaGRtaV9yZWFkX2djcF9pbmZvZnJhbWUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpOworYm9vbCBpbnRlbF9yZWFkX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs CisJCQkgIGVudW0gaGRtaV9pbmZvZnJhbWVfdHlwZSB0eXBlLAorCQkJICB1bmlvbiBoZG1pX2lu Zm9mcmFtZSAqZnJhbWUpOwogCiAKIC8qIGludGVsX2x2ZHMuYyAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCmluZGV4IDQ5MTAwMWZjMGZhZC4uMjdjYjZlYzMyZTk0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRtaS5jCkBAIC0yMDMsNiArMjAzLDMxIEBAIHN0YXRpYyB2b2lkIGc0eF93cml0 ZV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJUE9TVElOR19SRUFE KFZJREVPX0RJUF9DVEwpOwogfQogCitzdGF0aWMgc3NpemVfdCBnNHhfcmVhZF9pbmZvZnJhbWUo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgIHVuc2lnbmVkIGludCB0eXBlLAorCQkJCSAg dm9pZCAqZnJhbWUsIHNzaXplX3QgbGVuKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCXUzMiB2YWwsICpkYXRhID0g ZnJhbWU7CisJaW50IGk7CisKKwl2YWwgPSBJOTE1X1JFQUQoVklERU9fRElQX0NUTCk7CisKKwlp ZiAoKHZhbCAmIGc0eF9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQorCQlyZXR1cm4gMDsK KworCXZhbCAmPSB+KFZJREVPX0RJUF9TRUxFQ1RfTUFTSyB8IDB4Zik7IC8qIGNsZWFyIERJUCBk YXRhIG9mZnNldCAqLworCXZhbCB8PSBnNHhfaW5mb2ZyYW1lX2luZGV4KHR5cGUpOworCisJSTkx NV9XUklURShWSURFT19ESVBfQ1RMLCB2YWwpOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSAr PSA0KQorCQkqZGF0YSsrID0gSTkxNV9SRUFEKFZJREVPX0RJUF9EQVRBKTsKKworCXJldHVybiBs ZW47Cit9CisKIHN0YXRpYyB1MzIgZzR4X2luZm9mcmFtZXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKIHsKQEAgLTI1OCw2ICsyODMsMzIgQEAgc3RhdGljIHZvaWQgaWJ4X3dyaXRl X2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlQT1NUSU5HX1JFQUQo cmVnKTsKIH0KIAorc3RhdGljIHNzaXplX3QgaWJ4X3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCisJCQkJICB1bnNpZ25lZCBpbnQgdHlwZSwKKwkJCQkgIHZvaWQgKmZyYW1l LCBzc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwl1MzIgdmFsLCAqZGF0YSA9IGZy YW1lOworCWludCBpOworCisJdmFsID0gSTkxNV9SRUFEKFRWSURFT19ESVBfQ1RMKGNydGMtPnBp cGUpKTsKKworCWlmICgodmFsICYgZzR4X2luZm9mcmFtZV9lbmFibGUodHlwZSkpID09IDApCisJ CXJldHVybiAwOworCisJdmFsICY9IH4oVklERU9fRElQX1NFTEVDVF9NQVNLIHwgMHhmKTsgLyog Y2xlYXIgRElQIGRhdGEgb2Zmc2V0ICovCisJdmFsIHw9IGc0eF9pbmZvZnJhbWVfaW5kZXgodHlw ZSk7CisKKwlJOTE1X1dSSVRFKFRWSURFT19ESVBfQ1RMKGNydGMtPnBpcGUpLCB2YWwpOworCisJ Zm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KQorCQkqZGF0YSsrID0gSTkxNV9SRUFEKFRWSURF T19ESVBfREFUQShjcnRjLT5waXBlKSk7CisKKwlyZXR1cm4gbGVuOworfQorCiBzdGF0aWMgdTMy IGlieF9pbmZvZnJhbWVzX2VuYWJsZWQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJ CQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CkBAIC0z MTksNiArMzcwLDMyIEBAIHN0YXRpYyB2b2lkIGNwdF93cml0ZV9pbmZvZnJhbWUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJUE9TVElOR19SRUFEKHJlZyk7CiB9CiAKK3N0YXRpYyBz c2l6ZV90IGNwdF9yZWFkX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAg dW5zaWduZWQgaW50IHR5cGUsCisJCQkJICB2b2lkICpmcmFtZSwgc3NpemVfdCBsZW4pCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPmJhc2UuY3J0Yyk7CisJdTMyIHZhbCwgKmRhdGEgPSBmcmFtZTsKKwlpbnQgaTsKKworCXZh bCA9IEk5MTVfUkVBRChUVklERU9fRElQX0NUTChjcnRjLT5waXBlKSk7CisKKwlpZiAoKHZhbCAm IGc0eF9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQorCQlyZXR1cm4gMDsKKworCXZhbCAm PSB+KFZJREVPX0RJUF9TRUxFQ1RfTUFTSyB8IDB4Zik7IC8qIGNsZWFyIERJUCBkYXRhIG9mZnNl dCAqLworCXZhbCB8PSBnNHhfaW5mb2ZyYW1lX2luZGV4KHR5cGUpOworCisJSTkxNV9XUklURShU VklERU9fRElQX0NUTChjcnRjLT5waXBlKSwgdmFsKTsKKworCWZvciAoaSA9IDA7IGkgPCBsZW47 IGkgKz0gNCkKKwkJKmRhdGErKyA9IEk5MTVfUkVBRChUVklERU9fRElQX0RBVEEoY3J0Yy0+cGlw ZSkpOworCisJcmV0dXJuIGxlbjsKK30KKwogc3RhdGljIHUzMiBjcHRfaW5mb2ZyYW1lc19lbmFi bGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewpAQCAtMzczLDYgKzQ1MCwzMiBAQCBzdGF0 aWMgdm9pZCB2bHZfd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAogCVBPU1RJTkdfUkVBRChyZWcpOwogfQogCitzdGF0aWMgc3NpemVfdCB2bHZfcmVhZF9pbmZv ZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgIHVuc2lnbmVkIGludCB0eXBlLAor CQkJCSAgdm9pZCAqZnJhbWUsIHNzaXplX3QgbGVuKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCXUz MiB2YWwsICpkYXRhID0gZnJhbWU7CisJaW50IGk7CisKKwl2YWwgPSBJOTE1X1JFQUQoVkxWX1RW SURFT19ESVBfQ1RMKGNydGMtPnBpcGUpKTsKKworCWlmICgodmFsICYgZzR4X2luZm9mcmFtZV9l bmFibGUodHlwZSkpID09IDApCisJCXJldHVybiAwOworCisJdmFsICY9IH4oVklERU9fRElQX1NF TEVDVF9NQVNLIHwgMHhmKTsgLyogY2xlYXIgRElQIGRhdGEgb2Zmc2V0ICovCisJdmFsIHw9IGc0 eF9pbmZvZnJhbWVfaW5kZXgodHlwZSk7CisKKwlJOTE1X1dSSVRFKFZMVl9UVklERU9fRElQX0NU TChjcnRjLT5waXBlKSwgdmFsKTsKKworCWZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkKKwkJ KmRhdGErKyA9IEk5MTVfUkVBRChWTFZfVFZJREVPX0RJUF9EQVRBKGNydGMtPnBpcGUpKTsKKwor CXJldHVybiBsZW47Cit9CisKIHN0YXRpYyB1MzIgdmx2X2luZm9mcmFtZXNfZW5hYmxlZChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKIHsKQEAgLTQyNSw2ICs1MjgsMjggQEAgc3RhdGljIHZvaWQg aHN3X3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlQT1NU SU5HX1JFQUQoY3RsX3JlZyk7CiB9CiAKK3N0YXRpYyBzc2l6ZV90IGhzd19yZWFkX2luZm9mcmFt ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAgdW5zaWduZWQgaW50IHR5cGUsCisJCQkJ ICB2b2lkICpmcmFtZSwgc3NpemVfdCBsZW4pCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJZW51bSB0cmFuc2NvZGVy IGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7CisJdTMyIHZhbCwg KmRhdGEgPSBmcmFtZTsKKwlpbnQgaTsKKworCXZhbCA9IEk5MTVfUkVBRChIU1dfVFZJREVPX0RJ UF9DVEwoY3B1X3RyYW5zY29kZXIpKTsKKworCWlmICgodmFsICYgaHN3X2luZm9mcmFtZV9lbmFi bGUodHlwZSkpID09IDApCisJCXJldHVybiAwOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSAr PSA0KQorCQkqZGF0YSsrID0gSTkxNV9SRUFEKGhzd19kaXBfZGF0YV9yZWcoZGV2X3ByaXYsIGNw dV90cmFuc2NvZGVyLAorCQkJCQkJICAgICB0eXBlLCBpID4+IDIpKTsKKworCXJldHVybiBsZW47 Cit9CisKIHN0YXRpYyB1MzIgaHN3X2luZm9mcmFtZXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKIAkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZykKIHsKQEAgLTUzMCw2ICs2NTUsMzkgQEAgc3RhdGljIHZvaWQgaW50ZWxfd3JpdGVf aW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWludGVsX2RpZ19wb3J0 LT53cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgdHlwZSwgYnVmZmVyLCBsZW4p OwogfQogCitib29sIGludGVsX3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAorCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK KwkJCSAgZW51bSBoZG1pX2luZm9mcmFtZV90eXBlIHR5cGUsCisJCQkgIHVuaW9uIGhkbWlfaW5m b2ZyYW1lICpmcmFtZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CisJdTggYnVmZmVyW1ZJREVP X0RJUF9EQVRBX1NJWkVdOworCXNzaXplX3QgbGVuOworCWludCByZXQ7CisKKwlpZiAoKGNydGNf c3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYKKwkgICAgIGludGVsX2hkbWlfaW5mb2ZyYW1lX2Vu YWJsZSh0eXBlKSkgPT0gMCkKKwkJcmV0dXJuIHRydWU7CisKKwlsZW4gPSBpbnRlbF9kaWdfcG9y dC0+cmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKKwkJCQkJICAgICB0eXBlLCBi dWZmZXIsIHNpemVvZihidWZmZXIpKTsKKwlpZiAobGVuID09IDApCisJCXJldHVybiB0cnVlOwor CisJLyogRmlsbCB0aGUgJ2hvbGUnIChzZWUgYmlnIGNvbW1lbnQgYWJvdmUpIGF0IHBvc2l0aW9u IDMgKi8KKwltZW1tb3ZlKCZidWZmZXJbMV0sICZidWZmZXJbMF0sIDMpOworCisJLyogc2VlIGNv bW1lbnQgYWJvdmUgZm9yIHRoZSByZWFzb24gZm9yIHRoaXMgb2Zmc2V0ICovCisJcmV0ID0gaGRt aV9pbmZvZnJhbWVfdW5wYWNrKGZyYW1lLCBidWZmZXIgKyAxLCBzaXplb2YoYnVmZmVyKSAtIDEp OworCWlmIChyZXQpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChmcmFtZS0+YW55LnR5cGUgIT0g dHlwZSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29s CiBpbnRlbF9oZG1pX2NvbXB1dGVfYXZpX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC03 ODQsNiArOTQyLDI5IEBAIHN0YXRpYyBib29sIGludGVsX2hkbWlfc2V0X2djcF9pbmZvZnJhbWUo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg aW50ZWxfaGRtaV9yZWFkX2djcF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PmJhc2UuY3J0Yyk7CisJaTkxNV9yZWdfdCByZWc7CisKKwlpZiAoKGNydGNfc3RhdGUtPmluZm9m cmFtZXMuZW5hYmxlICYKKwkgICAgIGludGVsX2hkbWlfaW5mb2ZyYW1lX2VuYWJsZShIRE1JX1BB Q0tFVF9UWVBFX0dFTkVSQUxfQ09OVFJPTCkpID09IDApCisJCXJldHVybjsKKworCWlmIChIQVNf RERJKGRldl9wcml2KSkKKwkJcmVnID0gSFNXX1RWSURFT19ESVBfR0NQKGNydGNfc3RhdGUtPmNw dV90cmFuc2NvZGVyKTsKKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkKKwkJcmVnID0gVkxWX1RWSURFT19ESVBfR0NQKGNydGMtPnBp cGUpOworCWVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKQorCQlyZWcgPSBUVklERU9f RElQX0dDUChjcnRjLT5waXBlKTsKKwllbHNlCisJCXJldHVybjsKKworCWNydGNfc3RhdGUtPmlu Zm9mcmFtZXMuZ2NwID0gSTkxNV9SRUFEKHJlZyk7Cit9CisKIHN0YXRpYyB2b2lkIGludGVsX2hk bWlfY29tcHV0ZV9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CQkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCQkgICAg IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQpAQCAtMTM4Miw2ICsxNTYz LDIzIEBAIHN0YXRpYyB2b2lkIGludGVsX2hkbWlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xv Y2sgPSBkb3RjbG9jazsKIAogCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gNDsKKworCWludGVs X2hkbWlfcmVhZF9nY3BfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKKworCWlmICgh aW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsCisJCQkJICBIRE1JX0lO Rk9GUkFNRV9UWVBFX0FWSSwKKwkJCQkgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5hdmkpKQor CQlEUk1fRVJST1IoImZhaWxlZCB0byByZWFkIEFWSSBpbmZvZnJhbWVcbiIpOworCisJaWYgKCFp bnRlbF9yZWFkX2luZm9mcmFtZShlbmNvZGVyLCBwaXBlX2NvbmZpZywKKwkJCQkgIEhETUlfSU5G T0ZSQU1FX1RZUEVfU1BELAorCQkJCSAgJnBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLnNwZCkpCisJ CURSTV9FUlJPUigiZmFpbGVkIHRvIHJlYWQgU1BEIGluZm9mcmFtZTpcbiIpOworCisJaWYgKCFp bnRlbF9yZWFkX2luZm9mcmFtZShlbmNvZGVyLCBwaXBlX2NvbmZpZywKKwkJCQkgIEhETUlfSU5G T0ZSQU1FX1RZUEVfVkVORE9SLAorCQkJCSAgJnBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLmhkbWkp KQorCQlEUk1fRVJST1IoImZhaWxlZCB0byByZWFkIEhETUkgaW5mb2ZyYW1lXG4iKTsKIH0KIAog c3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2hkbWlfYXVkaW8oc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCkBAIC0yNDgxLDIyICsyNjc5LDI3IEBAIHZvaWQgaW50ZWxfaW5mb2ZyYW1lX2lu aXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCiAKIAlpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJaW50 ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZSA9IHZsdl93cml0ZV9pbmZvZnJhbWU7CisJCWlu dGVsX2RpZ19wb3J0LT5yZWFkX2luZm9mcmFtZSA9IHZsdl9yZWFkX2luZm9mcmFtZTsKIAkJaW50 ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gdmx2X3NldF9pbmZvZnJhbWVzOwogCQlpbnRl bF9kaWdfcG9ydC0+aW5mb2ZyYW1lc19lbmFibGVkID0gdmx2X2luZm9mcmFtZXNfZW5hYmxlZDsK IAl9IGVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikpIHsKIAkJaW50ZWxfZGlnX3BvcnQtPndyaXRl X2luZm9mcmFtZSA9IGc0eF93cml0ZV9pbmZvZnJhbWU7CisJCWludGVsX2RpZ19wb3J0LT5yZWFk X2luZm9mcmFtZSA9IGc0eF9yZWFkX2luZm9mcmFtZTsKIAkJaW50ZWxfZGlnX3BvcnQtPnNldF9p bmZvZnJhbWVzID0gZzR4X3NldF9pbmZvZnJhbWVzOwogCQlpbnRlbF9kaWdfcG9ydC0+aW5mb2Zy YW1lc19lbmFibGVkID0gZzR4X2luZm9mcmFtZXNfZW5hYmxlZDsKIAl9IGVsc2UgaWYgKEhBU19E REkoZGV2X3ByaXYpKSB7CiAJCWludGVsX2RpZ19wb3J0LT53cml0ZV9pbmZvZnJhbWUgPSBoc3df d3JpdGVfaW5mb2ZyYW1lOworCQlpbnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUgPSBoc3df cmVhZF9pbmZvZnJhbWU7CiAJCWludGVsX2RpZ19wb3J0LT5zZXRfaW5mb2ZyYW1lcyA9IGhzd19z ZXRfaW5mb2ZyYW1lczsKIAkJaW50ZWxfZGlnX3BvcnQtPmluZm9mcmFtZXNfZW5hYmxlZCA9IGhz d19pbmZvZnJhbWVzX2VuYWJsZWQ7CiAJfSBlbHNlIGlmIChIQVNfUENIX0lCWChkZXZfcHJpdikp IHsKIAkJaW50ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZSA9IGlieF93cml0ZV9pbmZvZnJh bWU7CisJCWludGVsX2RpZ19wb3J0LT5yZWFkX2luZm9mcmFtZSA9IGlieF9yZWFkX2luZm9mcmFt ZTsKIAkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gaWJ4X3NldF9pbmZvZnJhbWVz OwogCQlpbnRlbF9kaWdfcG9ydC0+aW5mb2ZyYW1lc19lbmFibGVkID0gaWJ4X2luZm9mcmFtZXNf ZW5hYmxlZDsKIAl9IGVsc2UgewogCQlpbnRlbF9kaWdfcG9ydC0+d3JpdGVfaW5mb2ZyYW1lID0g Y3B0X3dyaXRlX2luZm9mcmFtZTsKKwkJaW50ZWxfZGlnX3BvcnQtPnJlYWRfaW5mb2ZyYW1lID0g Y3B0X3JlYWRfaW5mb2ZyYW1lOwogCQlpbnRlbF9kaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBj cHRfc2V0X2luZm9mcmFtZXM7CiAJCWludGVsX2RpZ19wb3J0LT5pbmZvZnJhbWVzX2VuYWJsZWQg PSBjcHRfaW5mb2ZyYW1lc19lbmFibGVkOwogCX0KLS0gCjIuMTYuNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==