From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5322089CAD for ; Mon, 22 Oct 2018 14:27:01 +0000 (UTC) From: Ramalingam C Date: Mon, 22 Oct 2018 19:53:49 +0530 Message-Id: <1540218229-10693-2-git-send-email-ramalingam.c@intel.com> In-Reply-To: <1540218229-10693-1-git-send-email-ramalingam.c@intel.com> References: <1540218229-10693-1-git-send-email-ramalingam.c@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 2/2] kms_content_protection: Add Content Protection test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org, daniel.vetter@ffwll.ch List-ID: UHJldHR5IHNpbXBsZSB0ZXN0OgotIHBpY2tzIHRoZSBoZGNwIGNhcGFibGUgb3V0cHV0IHdpdGgg c3VpdGFibGUgcGlwZSBhbmQgYXBwbHkgbW9kZXNldC4KLSBjaGVja3MgdGhlIGNvbm5lY3RlZCBz aW5rJ3MgaGRjcCBjYXBhYmlsaXR5IHRocm91Z2ggZGVidWdmcwotIGFwcGx5IGEgRkIgYW5kIHdh aXQgZm9yIHRoZSBmbGlwIGNvbXBsZXRpb24uCi0gY2xlYXJzIHRoZSBjb250ZW50IHByb3RlY3Rp b24gcHJvcGVydHkKLSB2ZXJpZmllcyB0aGF0IGl0IGNsZWFycwotIHNldHMgdGhlIGNvbnRlbnQg cHJvdGVjdGlvbiBwcm9wZXJ0eSB0byBkZXNpcmVkCi0gdmVyaWZpZXMgdGhhdCBpdCB0cmFuc2l0 aW9ucyB0byBlbmFibGVkCi0gaW5jYXNlIG9mIHRpbWVvdXQgdGhyZWUgcmVhdHRlbXB0cyBhcmUg aW1wbGVtZW50ZWQKLSBjbGVhciB0aGUgY29udGVudCBwcm90ZWN0aW9uIHByb3BlcnR5IGFuZCBt b2Rlc2V0IG9uIHRoZSBjcnRjCgpBYm92ZSBzdGVwcyBhcmUgcmVwZWF0ZWQgb24gYWxsIEhEQ1Ag Y2FwYWJsZSBjb25uZWN0b3JzIGZvciBib3RoCmxlZ2FjeSBhbmQgYXRvbWljIHN1YnRlc3RzLgoK djI6CiAgZHluYW1pYyBzdWJ0ZXN0cyBhcmUgZHJvcHBlZCBbRGFuaWVsXQp2MzoKICBkZWJ1Z2Zz IGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBzaW5rJ3MgaGRjcCBjYXBhYmlsaXR5IFtEYW5pZWxdCiAg ZGF0YSBzdHJ1Y3R1cmUgaXMgbWFkZSBhcyBnbG9iYWwgdmFyaWFibGUuCnY0OgogIGRlYnVnZnMg ZmlsZSBmcm9tIGNvbm5lY3RvcidzIGRlYnVnZnMgZGlyIGlzIHVzZWQgW0RhbmllbF0KClNpZ25l ZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpTaWduZWQtb2ZmLWJ5 OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Ci0tLQogbGliL2lndF9rbXMu YyAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICAgICAg ICB8ICAgMSArCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAgfCAgIDEgKwogdGVzdHMv a21zX2NvbnRlbnRfcHJvdGVjdGlvbi5jIHwgMzAxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgIDEgKwog NSBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RzL2ttc19jb250ZW50X3Byb3RlY3Rpb24uYwoKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMg Yi9saWIvaWd0X2ttcy5jCmluZGV4IDYyZDg0Njg0MTVjNi4uNDIzMTk5NmM2NWNhIDEwMDY0NAot LS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21zLmMKQEAgLTE5NCw2ICsxOTQsNyBA QCBjb25zdCBjaGFyICogY29uc3QgaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9OVU1fQ09O TkVDVE9SX1BST1BTXSA9IHsKIAlbSUdUX0NPTk5FQ1RPUl9DUlRDX0lEXSA9ICJDUlRDX0lEIiwK IAlbSUdUX0NPTk5FQ1RPUl9EUE1TXSA9ICJEUE1TIiwKIAlbSUdUX0NPTk5FQ1RPUl9CUk9BRENB U1RfUkdCXSA9ICJCcm9hZGNhc3QgUkdCIiwKKwlbSUdUX0NPTk5FQ1RPUl9DT05URU5UX1BST1RF Q1RJT05dID0gIkNvbnRlbnQgUHJvdGVjdGlvbiIsCiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvbGli L2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggM2ExMmYyNzgyZWVkLi5hYTA2OGU1OGU2 MDcgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmgKKysrIGIvbGliL2lndF9rbXMuaApAQCAtMTIw LDYgKzEyMCw3IEBAIGVudW0gaWd0X2F0b21pY19jb25uZWN0b3JfcHJvcGVydGllcyB7CiAgICAg ICAgSUdUX0NPTk5FQ1RPUl9DUlRDX0lELAogICAgICAgIElHVF9DT05ORUNUT1JfRFBNUywKICAg ICAgICBJR1RfQ09OTkVDVE9SX0JST0FEQ0FTVF9SR0IsCisgICAgICAgSUdUX0NPTk5FQ1RPUl9D T05URU5UX1BST1RFQ1RJT04sCiAgICAgICAgSUdUX05VTV9DT05ORUNUT1JfUFJPUFMKIH07CiAK ZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzCmluZGV4IGM4NDkzM2YxZDk3MS4uNWFmNjhhNjFkZjUxIDEwMDY0NAotLS0gYS90ZXN0cy9N YWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTE3NCw2ICsx NzQsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlrbXNfY2h2X2N1cnNvcl9mYWlsIFwKIAlrbXNfY29s b3IgXAogCWttc19jb25jdXJyZW50IFwKKwlrbXNfY29udGVudF9wcm90ZWN0aW9uXAogCWttc19j cnRjX2JhY2tncm91bmRfY29sb3IgXAogCWttc19jdXJzb3JfY3JjIFwKIAlrbXNfY3Vyc29yX2xl Z2FjeSBcCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNfY29udGVudF9wcm90ZWN0aW9uLmMgYi90ZXN0 cy9rbXNfY29udGVudF9wcm90ZWN0aW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5lOGRlN2QzNTlkMDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9rbXNfY29u dGVudF9wcm90ZWN0aW9uLmMKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRI RSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPHBvbGwuaD4KKyNpbmNsdWRlICJpZ3Qu aCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKKworSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3Qg Y29udGVudCBwcm90ZWN0aW9uIChIRENQKSIpOworCitzdHJ1Y3QgZGF0YSB7CisJaW50IGRybV9m ZDsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7Cit9IGRhdGE7CisKKworc3RhdGljIHZvaWQgZmxp cF9oYW5kbGVyKGludCBmZCwgdW5zaWduZWQgaW50IHNlcXVlbmNlLCB1bnNpZ25lZCBpbnQgdHZf c2VjLAorCQkJIHVuc2lnbmVkIGludCB0dl91c2VjLCB2b2lkICpfZGF0YSkKK3sKKwlpZ3RfZGVi dWcoIkZsaXAgZXZlbnQgcmVjZWl2ZWQuXG4iKTsKK30KKworc3RhdGljIGludCB3YWl0X2ZsaXBf ZXZlbnQodm9pZCkKK3sKKwlpbnQgcmM7CisJZHJtRXZlbnRDb250ZXh0IGV2Y3R4OworCXN0cnVj dCBwb2xsZmQgcGZkOworCisJZXZjdHgudmVyc2lvbiA9IDI7CisJZXZjdHgudmJsYW5rX2hhbmRs ZXIgPSBOVUxMOworCWV2Y3R4LnBhZ2VfZmxpcF9oYW5kbGVyID0gZmxpcF9oYW5kbGVyOworCisJ cGZkLmZkID0gZGF0YS5kcm1fZmQ7CisJcGZkLmV2ZW50cyA9IFBPTExJTjsKKwlwZmQucmV2ZW50 cyA9IDA7CisKKwlyYyA9IHBvbGwoJnBmZCwgMSwgMTAwMCk7CisJc3dpdGNoIChyYykgeworCWNh c2UgMDoKKwkJaWd0X2luZm8oIlBvbGwgdGltZW91dC4gMVNlYy5cbiIpOworCQlyYyA9IC1FVElN RURPVVQ7CisJCWJyZWFrOworCWNhc2UgMToKKwkJcmMgPSBkcm1IYW5kbGVFdmVudChkYXRhLmRy bV9mZCwgJmV2Y3R4KTsKKwkJaWd0X2Fzc2VydF9lcShyYywgMCk7CisJCXJjID0gMDsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJaWd0X2luZm8oIlVuZXhwZWN0ZWQgcG9sbCByYyAlZFxuIiwgcmMp OworCQlyYyA9IC0xOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBi b29sCit3YWl0X2Zvcl9wcm9wX3ZhbHVlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50NjRfdCBl eHBlY3RlZCwKKwkJICAgIHVpbnQzMl90IHRpbWVvdXRfbVNlYykKK3sKKwl1aW50NjRfdCB2YWw7 CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgdGltZW91dF9tU2VjOyBpKyspIHsKKwkJdmFs ID0gaWd0X291dHB1dF9nZXRfcHJvcChvdXRwdXQsCisJCQkJCSAgSUdUX0NPTk5FQ1RPUl9DT05U RU5UX1BST1RFQ1RJT04pOworCQlpZiAodmFsID09IGV4cGVjdGVkKQorCQkJcmV0dXJuIHRydWU7 CisJCXVzbGVlcCgxMDAwKTsKKwl9CisJaWd0X2luZm8oInByb3BfdmFsdWUgbWlzbWF0Y2ggJWxk ICE9ICVsZFxuIiwgdmFsLCBleHBlY3RlZCk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp YyB2b2lkCitjb21taXRfZGlzcGxheV9hbmRfd2FpdF9mb3JfZmxpcChlbnVtIGlndF9jb21taXRf c3R5bGUgcykKK3sKKwlpbnQgcmV0OworCXVpbnQzMl90IGZsYWc7CisKKwlpZiAocyA9PSBDT01N SVRfQVRPTUlDKSB7CisJCWZsYWcgPSBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQgfCBEUk1fTU9E RV9BVE9NSUNfQUxMT1dfTU9ERVNFVDsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYygmZGF0 YS5kaXNwbGF5LCBmbGFnLCBOVUxMKTsKKworCQlyZXQgPSB3YWl0X2ZsaXBfZXZlbnQoKTsKKwkJ aWd0X2Fzc2VydF9mKCFyZXQsICJ3YWl0X2ZsaXBfZXZlbnQgZmFpbGVkLiAlZFxuIiwgcmV0KTsK Kwl9IGVsc2UgeworCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLmRpc3BsYXksIHMpOworCisJ CS8qIFdhaXQgZm9yIDUwbVNlYyAqLworCQl1c2xlZXAoNTAgKiAxMDAwKTsKKwl9Cit9CisKK3N0 YXRpYyB2b2lkCit0ZXN0X2NwX2VuYWJsZV9kaXNhYmxlKGNvbnN0IGVudW0gcGlwZSBwaXBlLCBp Z3Rfb3V0cHV0X3QgKm91dHB1dCwKKwkJICAgICAgIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzKQor eworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS5kaXNwbGF5OworCWRybU1vZGVNb2Rl SW5mbyBtb2RlOworCWlndF9wbGFuZV90ICpwcmltYXJ5OworCXN0cnVjdCBpZ3RfZmIgcmVkLCBn cmVlbjsKKwlib29sIHJldDsKKwlpbnQgcmV0cnkgPSAzOworCisJaWd0X2Fzc2VydChrbXN0ZXN0 X2dldF9jb25uZWN0b3JfZGVmYXVsdF9tb2RlKAorCQkJZGlzcGxheS0+ZHJtX2ZkLCBvdXRwdXQt PmNvbmZpZy5jb25uZWN0b3IsICZtb2RlKSk7CisKKwlpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUo b3V0cHV0LCAmbW9kZSk7CisJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOworCisJ aWd0X2NyZWF0ZV9jb2xvcl9mYihkaXNwbGF5LT5kcm1fZmQsIG1vZGUuaGRpc3BsYXksIG1vZGUu dmRpc3BsYXksCisJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9N T0RfTk9ORSwKKwkJCSAgICAxLmYsIDAuZiwgMC5mLCAmcmVkKTsKKwlpZ3RfY3JlYXRlX2NvbG9y X2ZiKGRpc3BsYXktPmRybV9mZCwgbW9kZS5oZGlzcGxheSwgbW9kZS52ZGlzcGxheSwKKwkJCSAg ICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAg IDAuZiwgMS5mLCAwLmYsICZncmVlbik7CisKKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxh bmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCWlndF9kaXNwbGF5X2Nv bW1pdDIoZGlzcGxheSwgcyk7CisKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZyZWQpOwor CisJLyogV2FpdCBmb3IgRmxpcCBjb21wbGV0aW9uIGJlZm9yZSBzdGFydGluZyB0aGUgSERDUCBh dXRoZW50aWNhdGlvbiAqLworCWNvbW1pdF9kaXNwbGF5X2FuZF93YWl0X2Zvcl9mbGlwKHMpOwor CisJZG8geworCQlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVlKG91dHB1dCwKKwkJCQkJICBJR1Rf Q09OTkVDVE9SX0NPTlRFTlRfUFJPVEVDVElPTiwgMCk7CisJCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgcyk7CisKKwkJLyogV2FpdCBmb3IgSERDUCB0byBiZSBkaXNhYmxlZCBmb3IgZnJl c2ggc3RhcnQuICovCisJCXJldCA9IHdhaXRfZm9yX3Byb3BfdmFsdWUob3V0cHV0LCAwLCAxMDAw KTsKKwkJaWd0X2Fzc2VydF9mKHJldCwgIkNvbnRlbnQgUHJvdGVjdGlvbiBub3QgY2xlYXJlZFxu Iik7CisKKwkJaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShvdXRwdXQsCisJCQkJCSAgSUdUX0NP Tk5FQ1RPUl9DT05URU5UX1BST1RFQ1RJT04sIDEpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIHMpOworCisJCS8qIFdhaXQgZm9yIDE4MDAwbVNlYyAoMyBhdXRoZW50aWNhdGlvbiAq IDZTZWMpICovCisJCXJldCA9IHdhaXRfZm9yX3Byb3BfdmFsdWUob3V0cHV0LCAyLCAxODAwMCk7 CisJCWlmIChyZXQpIHsKKwkJCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmdyZWVuKTsKKwkJ CWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgcyk7CisJCX0KKworCQlpZiAoIXJldCAmJiAt LXJldHJ5KQorCQkJaWd0X2RlYnVnKCJSZXRyeSAoJWQvMikgLi4uXG4iLCAzIC0gcmV0cnkpOwor CX0gd2hpbGUgKHJldHJ5ICYmICFyZXQpOworCisJaWd0X2Fzc2VydF9mKHJldCwgIkNvbnRlbnQg UHJvdGVjdGlvbiBub3QgZW5hYmxlZFxuIik7CisKKwlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVl KG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9DT05URU5UX1BST1RFQ1RJT04sIDApOworCWlndF9wbGFu ZV9zZXRfZmIocHJpbWFyeSwgJnJlZCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBz KTsKKworCS8qIFdhaXQgZm9yIEhEQ1AgdG8gYmUgZGlzYWJsZWQsIGJlZm9yZSBjcnRjIG9mZiAq LworCXdhaXRfZm9yX3Byb3BfdmFsdWUob3V0cHV0LCAwLCAxMDAwKTsKKworCWlndF9wbGFuZV9z ZXRfZmIocHJpbWFyeSwgTlVMTCk7CisJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVf Tk9ORSk7Cit9CisKK3N0YXRpYyBib29sIGlndF9waXBlX2lzX2ZyZWUoaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSwgZW51bSBwaXBlIHBpcGUpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwg ZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspCisJCWlmIChkaXNwbGF5LT5vdXRwdXRzW2ldLnBlbmRp bmdfcGlwZSA9PSBwaXBlKQorCQkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisK K3N0YXRpYyB2b2lkCit0ZXN0X2NvbnRlbnRfcHJvdGVjdGlvbl9vbl9vdXRwdXQoaWd0X291dHB1 dF90ICpvdXRwdXQsCisJCQkJICBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKK3sKKwlpZ3RfZGlz cGxheV90ICpkaXNwbGF5ID0gJmRhdGEuZGlzcGxheTsKKwllbnVtIHBpcGUgcGlwZTsKKworCWZv cl9lYWNoX3BpcGUoZGlzcGxheSwgcGlwZSkgeworCQlpZiAoIWlndF9waXBlX2Nvbm5lY3Rvcl92 YWxpZChwaXBlLCBvdXRwdXQpKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogSWYgcHJldmlv dXMgc3VidGVzdCBvZiBjb25uZWN0b3IgZmFpbGVkLCBwaXBlCisJCSAqIGF0dGFjaGVkIHRvIHRo YXQgY29ubmVjdG9yIGlzIG5vdCByZWxlYXNlZC4KKwkJICogQmVjYXVzZSBvZiB0aGF0IHdlIGhh dmUgdG8gY2hvb3NlIHRoZSBub24KKwkJICogYXR0YWNoZWQgcGlwZSBmb3IgdGhpcyBzdWJ0ZXN0 LgorCQkgKi8KKwkJaWYgKCFpZ3RfcGlwZV9pc19mcmVlKGRpc3BsYXksIHBpcGUpKQorCQkJY29u dGludWU7CisKKwkJdGVzdF9jcF9lbmFibGVfZGlzYWJsZShwaXBlLCBvdXRwdXQsIHMpOworCisJ CS8qCisJCSAqIFRlc3RpbmcgYSBvdXRwdXQgd2l0aCBhIHBpcGUgaXMgZW5vdWdoIGZvciBIRENQ CisJCSAqIHRlc3RpbmcuIE5vIFJPSSBpbiB0ZXN0aW5nIHRoZSBjb25uZWN0b3Igd2l0aCBvdGhl cgorCQkgKiBwaXBlcy4gU28gQnJlYWsgdGhlIGxvb3Agb24gcGlwZS4KKwkJICovCisJCWJyZWFr OworCX0KKworfQorCitzdGF0aWMgdm9pZCBfX2RlYnVnZnNfcmVhZChpbnQgZmQsIGNvbnN0IGNo YXIgKnBhcmFtLCBjaGFyICpidWYsIGludCBsZW4pCit7CisJbGVuID0gaWd0X2RlYnVnZnNfc2lt cGxlX3JlYWQoZmQsIHBhcmFtLCBidWYsIGxlbik7CisJaWYgKGxlbiA8IDApCisJCWlndF9hc3Nl cnRfZXEobGVuLCAtRU5PREVWKTsKK30KKworI2RlZmluZSBkZWJ1Z2ZzX3JlYWQoZmQsIHAsIGFy cikgX19kZWJ1Z2ZzX3JlYWQoZmQsIHAsIGFyciwgc2l6ZW9mKGFycikpCisKKyNkZWZpbmUgTUFY X1NJTktfSERDUF9DQVBfQlVGX0xFTgk1MDAKK3N0YXRpYyBib29sIHNpbmtfaGRjcF9jYXBhYmxl KGlndF9vdXRwdXRfdCAqb3V0cHV0KQoreworCWNoYXIgYnVmW01BWF9TSU5LX0hEQ1BfQ0FQX0JV Rl9MRU5dOworCWludCBmZDsKKworCWZkID0gaWd0X2RlYnVnZnNfY29ubmVjdG9yX2RpcihkYXRh LmRybV9mZCwgb3V0cHV0LT5uYW1lKTsKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gZmFsc2U7CisK KwlkZWJ1Z2ZzX3JlYWQoZmQsICJpOTE1X2hkY3Bfc2lua19jYXBhYmlsaXR5IiwgYnVmKTsKKwlj bG9zZShmZCk7CisKKwlpZ3RfZGVidWcoIlNpbmsgY2FwYWJpbGl0eTogJXNcbiIsIGJ1Zik7CisK KwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkhEQ1AxLjQiKTsKK30KKworCitzdGF0aWMgdm9pZAordGVz dF9jb250ZW50X3Byb3RlY3Rpb24oZW51bSBpZ3RfY29tbWl0X3N0eWxlIHMpCit7CisJaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLmRpc3BsYXk7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7 CisJaW50IHZhbGlkX3Rlc3RzID0gMDsKKworCWZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoZGlz cGxheSwgb3V0cHV0KSB7CisJCWlmICghb3V0cHV0LT5wcm9wc1tJR1RfQ09OTkVDVE9SX0NPTlRF TlRfUFJPVEVDVElPTl0pCisJCQljb250aW51ZTsKKworCQlpZ3RfaW5mbygiQ1AgVGVzdCBleGVj dXRpb24gb24gJXNcbiIsIG91dHB1dC0+bmFtZSk7CisJCWlmICghc2lua19oZGNwX2NhcGFibGUo b3V0cHV0KSkgeworCQkJaWd0X2luZm8oIlx0U2tpcCAlcyAoU2luayBoYXMgbm8gSERDUCBzdXBw b3J0KVxuIiwKKwkJCQkgb3V0cHV0LT5uYW1lKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJdGVz dF9jb250ZW50X3Byb3RlY3Rpb25fb25fb3V0cHV0KG91dHB1dCwgcyk7CisJCXZhbGlkX3Rlc3Rz Kys7CisJfQorCisJaWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywgIk5vIGNvbm5lY3RvciBmb3Vu ZCB3aXRoIEhEQ1AgY2FwYWJpbGl0eVxuIik7Cit9CisKK2lndF9tYWluCit7CisJaWd0X2ZpeHR1 cmUgeworCQlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7CisKKwkJZGF0YS5kcm1fZmQgPSBkcm1f b3Blbl9kcml2ZXIoRFJJVkVSX0FOWSk7CisKKwkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5kaXNw bGF5LCBkYXRhLmRybV9mZCk7CisJfQorCisJaWd0X3N1YnRlc3QoImxlZ2FjeSIpCisJCXRlc3Rf Y29udGVudF9wcm90ZWN0aW9uKENPTU1JVF9MRUdBQ1kpOworCisJaWd0X3N1YnRlc3QoImF0b21p YyIpIHsKKwkJaWd0X3JlcXVpcmUoZGF0YS5kaXNwbGF5LmlzX2F0b21pYyk7CisJCXRlc3RfY29u dGVudF9wcm90ZWN0aW9uKENPTU1JVF9BVE9NSUMpOworCX0KKworCWlndF9maXh0dXJlCisJCWln dF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNv bi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDE3ZGViOTQ1ZWM5NS4uYTc0ZGU0ZmYw ZWNlIDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWls ZApAQCAtMTQ5LDYgKzE0OSw3IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2ttc19jaHZfY3Vyc29yX2Zh aWwnLAogCSdrbXNfY29sb3InLAogCSdrbXNfY29uY3VycmVudCcsCisJJ2ttc19jb250ZW50X3By b3RlY3Rpb24nLAogCSdrbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yJywKIAkna21zX2N1cnNvcl9j cmMnLAogCSdrbXNfY3Vyc29yX2xlZ2FjeScsCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==