From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: [PATCH i-g-t v2 20/33] tests/kms_plane_multiple: Add support for dynamic number of planes Date: Tue, 24 Jan 2017 18:33:47 -0500 Message-ID: <20170124233400.5053-21-robert.foss@collabora.com> References: <20170124233400.5053-1-robert.foss@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id D893B6E8C7 for ; Tue, 24 Jan 2017 23:34:55 +0000 (UTC) In-Reply-To: <20170124233400.5053-1-robert.foss@collabora.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, Tomeu Vizoso , Maarten Lankhorst , Gustavo Padovan , Daniel Stone , Mika Kahola , Petri Latvala List-Id: intel-gfx@lists.freedesktop.org QWRkIGNoYW5nZXMgcmVmbGVjdGluZyB0aGUgbmV3IHN1cHBvcnQgZm9yIGR5bmFtaWMgbnVtYmVy IG9mIHBsYW5lcyBwZXIgcGlwZS4KClNpZ25lZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxyb2JlcnQu Zm9zc0Bjb2xsYWJvcmEuY29tPgotLS0KIHRlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jIHwgMjA5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90 ZXN0cy9rbXNfcGxhbmVfbXVsdGlwbGUuYyBiL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jCmlu ZGV4IDJiNDNmMGM1Li5lMTBiYmVhMyAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3BsYW5lX211bHRp cGxlLmMKKysrIGIvdGVzdHMva21zX3BsYW5lX211bHRpcGxlLmMKQEAgLTQ3LDggKzQ3LDggQEAg dHlwZWRlZiBzdHJ1Y3QgewogCWludCBkcm1fZmQ7CiAJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owog CWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKLQlpZ3RfcGxhbmVfdCAqcGxhbmVbSUdUX01BWF9Q TEFORVNdOwotCXN0cnVjdCBpZ3RfZmIgZmJbSUdUX01BWF9QTEFORVNdOworCWlndF9wbGFuZV90 ICoqcGxhbmU7CisJc3RydWN0IGlndF9mYiAqZmI7CiB9IGRhdGFfdDsKIAogdHlwZWRlZiBzdHJ1 Y3QgewpAQCAtNzAsMjAgKzcwLDM1IEBAIHN0cnVjdCB7CiAvKgogICogQ29tbW9uIGNvZGUgYWNy b3NzIGFsbCB0ZXN0cywgYWN0aW5nIG9uIGRhdGFfdAogICovCi1zdGF0aWMgdm9pZCB0ZXN0X2lu aXQoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkKK3N0YXRpYyB2b2lkIHRlc3RfaW5pdChk YXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpbnQgbWF4X3BsYW5lcykKIHsKIAlkYXRhLT5w aXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcocGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNFX0FV VE8pOworCisJZGF0YS0+cGxhbmUgPSBtYWxsb2MobWF4X3BsYW5lcyAqIHNpemVvZihkYXRhLT5w bGFuZSkpOworCWlndF9hc3NlcnRfZihkYXRhLT5wbGFuZSAhPSBOVUxMLCAiRmFpbGVkIHRvIGFs bG9jYXRlIG1lbW9yeSBmb3IgcGxhbmVzXG4iKTsKKworCWRhdGEtPmZiID0gbWFsbG9jKG1heF9w bGFuZXMgKiBzaXplb2Yoc3RydWN0IGlndF9mYikpOworCWlndF9hc3NlcnRfZihkYXRhLT5mYiAh PSBOVUxMLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgRkJzXG4iKTsKIH0KIAogc3Rh dGljIHZvaWQgdGVzdF9maW5pKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGlu dCBtYXhfcGxhbmVzKQogewotCWZvciAoaW50IGkgPSBJR1RfUExBTkVfUFJJTUFSWTsgaSA8PSBt YXhfcGxhbmVzOyBpKyspCi0JCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cGxhbmVbaV0sIE5VTEwp OworCWZvciAoaW50IGkgPSAwOyBpIDw9IG1heF9wbGFuZXM7IGkrKykgeworCQlpZ3RfcGxhbmVf dCAqcGxhbmUgPSBkYXRhLT5wbGFuZVtpXTsKKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpCisJCQljb250aW51ZTsKKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwg TlVMTCk7CisJfQogCiAJLyogcmVzZXQgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBpcGUgKi8KIAlp Z3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwogCiAJaWd0X3BpcGVfY3JjX2Zy ZWUoZGF0YS0+cGlwZV9jcmMpOworCisJZnJlZShkYXRhLT5wbGFuZSk7CisJZGF0YS0+cGxhbmUg PSBOVUxMOworCWZyZWUoZGF0YS0+ZmIpOworCWRhdGEtPmZiID0gTlVMTDsKIH0KIAogc3RhdGlj IHZvaWQKQEAgLTkxLDExICsxMDYsMTMgQEAgdGVzdF9ncmFiX2NyYyhkYXRhX3QgKmRhdGEsIGln dF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBhdG9taWMsCiAJICAgICAg Y29sb3JfdCAqY29sb3IsIHVpbnQ2NF90IHRpbGluZywgaWd0X2NyY190ICpjcmMgLyogb3V0ICov KQogewogCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKIAlp bnQgcmV0LCBuOwogCiAJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwogCi0JZGF0 YS0+cGxhbmVbSUdUX1BMQU5FX1BSSU1BUlldID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0 LCBJR1RfUExBTkVfUFJJTUFSWSk7CisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5 cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlkYXRhLT5wbGFuZVtwcmltYXJ5 LT5pbmRleF0gPSBwcmltYXJ5OwogCiAJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0 KTsKIApAQCAtMTAzLDkgKzEyMCw5IEBAIHRlc3RfZ3JhYl9jcmMoZGF0YV90ICpkYXRhLCBpZ3Rf b3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsIGJvb2wgYXRvbWljLAogCQkJICAgIERS TV9GT1JNQVRfWFJHQjg4ODgsCiAJCQkgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKIAkJ CSAgICBjb2xvci0+cmVkLCBjb2xvci0+Z3JlZW4sIGNvbG9yLT5ibHVlLAotCQkJICAgICZkYXRh LT5mYltJR1RfUExBTkVfUFJJTUFSWV0pOworCQkJICAgICZkYXRhLT5mYltwcmltYXJ5LT5pbmRl eF0pOwogCi0JaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wbGFuZVtJR1RfUExBTkVfUFJJTUFSWV0s ICZkYXRhLT5mYltJR1RfUExBTkVfUFJJTUFSWV0pOworCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+ cGxhbmVbcHJpbWFyeS0+aW5kZXhdLCAmZGF0YS0+ZmJbcHJpbWFyeS0+aW5kZXhdKTsKIAogCXJl dCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LAogCQkJCSAgICAgIGF0 b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsKQEAgLTEyOCwyOSArMTQ1LDM1 IEBAIHRlc3RfZ3JhYl9jcmMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51 bSBwaXBlIHBpcGUsIGJvb2wgYXRvbWljLAogICovCiAKIHN0YXRpYyB2b2lkCi1jcmVhdGVfZmJf Zm9yX21vZGVfcG9zaXRpb24oZGF0YV90ICpkYXRhLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCitj cmVhdGVfZmJfZm9yX21vZGVfcG9zaXRpb24oZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91 dHB1dCwgZHJtTW9kZU1vZGVJbmZvICptb2RlLAogCQkJICAgIGNvbG9yX3QgKmNvbG9yLCBpbnQg KnJlY3RfeCwgaW50ICpyZWN0X3ksCiAJCQkgICAgaW50ICpyZWN0X3csIGludCAqcmVjdF9oLCB1 aW50NjRfdCB0aWxpbmcsCiAJCQkgICAgaW50IG1heF9wbGFuZXMpCiB7CiAJdW5zaWduZWQgaW50 IGZiX2lkOwogCWNhaXJvX3QgKmNyOworCWlndF9wbGFuZV90ICpwcmltYXJ5OworCisJcHJpbWFy eSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklN QVJZKTsKIAogCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsCiAJCQkgICAgICBt b2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCiAJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4 ODg4LAogCQkJICAgICAgdGlsaW5nLAotCQkJICAgICAgJmRhdGEtPmZiW0lHVF9QTEFORV9QUklN QVJZXSk7CisJCQkgICAgICAmZGF0YS0+ZmJbcHJpbWFyeS0+aW5kZXhdKTsKIAlpZ3RfYXNzZXJ0 KGZiX2lkKTsKIAotCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ ZmJbSUdUX1BMQU5FX1BSSU1BUlldKTsKKwljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmRy bV9mZCwgJmRhdGEtPmZiW3ByaW1hcnktPmluZGV4XSk7CiAJaWd0X3BhaW50X2NvbG9yKGNyLCBy ZWN0X3hbMF0sIHJlY3RfeVswXSwKIAkJCW1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwK IAkJCWNvbG9yLT5yZWQsIGNvbG9yLT5ncmVlbiwgY29sb3ItPmJsdWUpOwogCi0JZm9yIChpbnQg aSA9IElHVF9QTEFORV8yOyBpIDw9IG1heF9wbGFuZXM7IGkrKykKKwlmb3IgKGludCBpID0gMDsg aSA8PSBtYXhfcGxhbmVzOyBpKyspIHsKKwkJaWYgKGRhdGEtPnBsYW5lW2ldLT50eXBlID09IERS TV9QTEFORV9UWVBFX1BSSU1BUlkpCisJCQljb250aW51ZTsKIAkJaWd0X3BhaW50X2NvbG9yKGNy LCByZWN0X3hbaV0sIHJlY3RfeVtpXSwKIAkJCQlyZWN0X3dbaV0sIHJlY3RfaFtpXSwgMC4wLCAw LjAsIDAuMCk7CisJCX0KIAogCWlndF9hc3NlcnQoY2Fpcm9fc3RhdHVzKGNyKSA9PSAwKTsKIAlj YWlyb19kZXN0cm95KGNyKTsKQEAgLTE1OCwzNyArMTgxLDUyIEBAIGNyZWF0ZV9mYl9mb3JfbW9k ZV9wb3NpdGlvbihkYXRhX3QgKmRhdGEsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKIAogCiBzdGF0 aWMgdm9pZAotcHJlcGFyZV9wbGFuZXMoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgY29s b3JfdCAqY29sb3IsCitwcmVwYXJlX3BsYW5lcyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBl X2lkLCBjb2xvcl90ICpjb2xvciwKIAkgICAgICAgdWludDY0X3QgdGlsaW5nLCBpbnQgbWF4X3Bs YW5lcywgaWd0X291dHB1dF90ICpvdXRwdXQpCiB7CiAJZHJtTW9kZU1vZGVJbmZvICptb2RlOwot CWludCB4W0lHVF9NQVhfUExBTkVTXTsKLQlpbnQgeVtJR1RfTUFYX1BMQU5FU107Ci0JaW50IHNp emVbSUdUX01BWF9QTEFORVNdOworCWlndF9waXBlX3QgKnBpcGU7CisJaWd0X3BsYW5lX3QgKnBy aW1hcnk7CisJaW50ICp4OworCWludCAqeTsKKwlpbnQgKnNpemU7CiAJaW50IGk7CiAKLQlpZ3Rf b3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7CisJaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIHBpcGVfaWQpOworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1 dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJcGlwZSA9IHByaW1hcnktPnBpcGU7CisKKwl4 ID0gbWFsbG9jKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9mKCp4KSk7CisJaWd0X2Fzc2VydF9mKHgs ICJGYWlsZWQgdG8gYWxsb2NhdGUgJWxkIGJ5dGVzIGZvciB2YXJpYWJsZSB4XG4iLCAobG9uZyBp bnQpIChwaXBlLT5uX3BsYW5lcyAqIHNpemVvZigqeCkpKTsKKwl5ID0gbWFsbG9jKHBpcGUtPm5f cGxhbmVzICogc2l6ZW9mKCp5KSk7CisJaWd0X2Fzc2VydF9mKHksICJGYWlsZWQgdG8gYWxsb2Nh dGUgJWxkIGJ5dGVzIGZvciB2YXJpYWJsZSB5XG4iLCAobG9uZyBpbnQpIChwaXBlLT5uX3BsYW5l cyAqIHNpemVvZigqeSkpKTsKKwlzaXplID0gbWFsbG9jKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9m KCpzaXplKSk7CisJaWd0X2Fzc2VydF9mKHNpemUsICJGYWlsZWQgdG8gYWxsb2NhdGUgJWxkIGJ5 dGVzIGZvciB2YXJpYWJsZSBzaXplXG4iLCAobG9uZyBpbnQpIChwaXBlLT5uX3BsYW5lcyAqIHNp emVvZigqc2l6ZSkpKTsKIAogCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CiAK IAkvKiBwbGFuZXMgd2l0aCByYW5kb20gcG9zaXRpb25zICovCi0JeFtJR1RfUExBTkVfUFJJTUFS WV0gPSAwOwotCXlbSUdUX1BMQU5FX1BSSU1BUlldID0gMDsKLQlmb3IgKGkgPSBJR1RfUExBTkVf MjsgaSA8PSBtYXhfcGxhbmVzOyBpKyspIHsKLQkJaWYgKGkgPT0gSUdUX1BMQU5FX0NVUlNPUikK Kwl4W3ByaW1hcnktPmluZGV4XSA9IDA7CisJeVtwcmltYXJ5LT5pbmRleF0gPSAwOworCWZvciAo aSA9IDE7IGkgPD0gbWF4X3BsYW5lczsgaSsrKSB7CisJCWlndF9wbGFuZV90ICpwbGFuZSA9IGln dF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgaSk7CisKKwkJaWYgKHBsYW5lLT50eXBlID09IERS TV9QTEFORV9UWVBFX0NVUlNPUikKIAkJCXNpemVbaV0gPSBTSVpFX0NVUlNPUjsKKwkJZWxzZSBp ZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKKwkJCWNvbnRpbnVlOwog CQllbHNlCiAJCQlzaXplW2ldID0gU0laRV9QTEFORTsKIAogCQl4W2ldID0gcmFuZCgpICUgKG1v ZGUtPmhkaXNwbGF5IC0gc2l6ZVtpXSk7CiAJCXlbaV0gPSByYW5kKCkgJSAobW9kZS0+dmRpc3Bs YXkgLSBzaXplW2ldKTsKIAotCQlkYXRhLT5wbGFuZVtpXSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5l KG91dHB1dCwgaSk7CisJCWRhdGEtPnBsYW5lW2ldID0gcGxhbmU7CiAKIAkJaWd0X2NyZWF0ZV9j b2xvcl9mYihkYXRhLT5kcm1fZmQsCiAJCQkJICAgIHNpemVbaV0sIHNpemVbaV0sCi0JCQkJICAg IGRhdGEtPnBsYW5lW2ldLT5pc19jdXJzb3IgPyBEUk1fRk9STUFUX0FSR0I4ODg4IDogRFJNX0ZP Uk1BVF9YUkdCODg4OCwKLQkJCQkgICAgZGF0YS0+cGxhbmVbaV0tPmlzX2N1cnNvciA/IExPQ0FM X0RSTV9GT1JNQVRfTU9EX05PTkUgOiB0aWxpbmcsCisJCQkJICAgIGRhdGEtPnBsYW5lW2ldLT50 eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUiA/IERSTV9GT1JNQVRfQVJHQjg4ODggOiBEUk1f Rk9STUFUX1hSR0I4ODg4LAorCQkJCSAgICBkYXRhLT5wbGFuZVtpXS0+dHlwZSA9PSBEUk1fUExB TkVfVFlQRV9DVVJTT1IgPyBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FIDogdGlsaW5nLAogCQkJ CSAgICBjb2xvci0+cmVkLCBjb2xvci0+Z3JlZW4sIGNvbG9yLT5ibHVlLAogCQkJCSAgICAmZGF0 YS0+ZmJbaV0pOwogCkBAIC0xOTcsMTAgKzIzNSwxMCBAQCBwcmVwYXJlX3BsYW5lcyhkYXRhX3Qg KmRhdGEsIGVudW0gcGlwZSBwaXBlLCBjb2xvcl90ICpjb2xvciwKIAl9CiAKIAkvKiBwcmltYXJ5 IHBsYW5lICovCi0JZGF0YS0+cGxhbmVbSUdUX1BMQU5FX1BSSU1BUlldID0gaWd0X291dHB1dF9n ZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7Ci0JY3JlYXRlX2ZiX2Zvcl9tb2Rl X3Bvc2l0aW9uKGRhdGEsIG1vZGUsIGNvbG9yLCB4LCB5LAorCWRhdGEtPnBsYW5lW3ByaW1hcnkt PmluZGV4XSA9IHByaW1hcnk7CisJY3JlYXRlX2ZiX2Zvcl9tb2RlX3Bvc2l0aW9uKGRhdGEsIG91 dHB1dCwgbW9kZSwgY29sb3IsIHgsIHksCiAJCQkJICAgIHNpemUsIHNpemUsIHRpbGluZywgbWF4 X3BsYW5lcyk7Ci0JaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wbGFuZVtJR1RfUExBTkVfUFJJTUFS WV0sICZkYXRhLT5mYltJR1RfUExBTkVfUFJJTUFSWV0pOworCWlndF9wbGFuZV9zZXRfZmIoZGF0 YS0+cGxhbmVbcHJpbWFyeS0+aW5kZXhdLCAmZGF0YS0+ZmJbcHJpbWFyeS0+aW5kZXhdKTsKIH0K IAogc3RhdGljIHZvaWQKQEAgLTIzMiw3ICsyNzAsNyBAQCB0ZXN0X2F0b21pY19wbGFuZV9wb3Np dGlvbl93aXRoX291dHB1dChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLAogCQkgaWd0X291 dHB1dF9uYW1lKG91dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzLAog CQkgaW5mbywgb3B0LnNlZWQpOwogCi0JdGVzdF9pbml0KGRhdGEsIHBpcGUpOworCXRlc3RfaW5p dChkYXRhLCBwaXBlLCBtYXhfcGxhbmVzKTsKIAogCXRlc3RfZ3JhYl9jcmMoZGF0YSwgb3V0cHV0 LCBwaXBlLCB0cnVlLCAmYmx1ZSwgdGlsaW5nLAogCQkgICAgICAmdGVzdC5yZWZlcmVuY2VfY3Jj KTsKQEAgLTI5OCw3ICszMzYsNyBAQCB0ZXN0X2xlZ2FjeV9wbGFuZV9wb3NpdGlvbl93aXRoX291 dHB1dChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLAogCQkgaWd0X291dHB1dF9uYW1lKG91 dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzLAogCQkgaW5mbywgb3B0 LnNlZWQpOwogCi0JdGVzdF9pbml0KGRhdGEsIHBpcGUpOworCXRlc3RfaW5pdChkYXRhLCBwaXBl LCBtYXhfcGxhbmVzKTsKIAogCXRlc3RfZ3JhYl9jcmMoZGF0YSwgb3V0cHV0LCBwaXBlLCBmYWxz ZSwgJmJsdWUsIHRpbGluZywKIAkJICAgICAgJnRlc3QucmVmZXJlbmNlX2NyYyk7CkBAIC0zNjcs NTQgKzQwNSw3MSBAQCB0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBl IHBpcGUsIGJvb2wgYXRvbWljLCBpbnQgbWF4X3BsYW5lcywKIH0KIAogc3RhdGljIHZvaWQKLXJ1 bl90ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpbnQg bWF4X3BsYW5lcykKK3J1bl90ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhX3QgKmRhdGEsIGVudW0g cGlwZSBwaXBlKQogewotCWlndF9zdWJ0ZXN0X2YoImxlZ2FjeS1waXBlLSVzLXRpbGluZy1ub25l LXBsYW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVz KQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBtYXhfcGxhbmVzLAot CQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FKTsKLQotCWlndF9zdWJ0ZXN0X2YoImF0 b21pYy1waXBlLSVzLXRpbGluZy1ub25lLXBsYW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlw ZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBp cGUsIHRydWUsIG1heF9wbGFuZXMsCi0JCQkJICAgIExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJ TEVEKTsKLQotCWlndF9zdWJ0ZXN0X2YoImxlZ2FjeS1waXBlLSVzLXRpbGluZy14LXBsYW5lcy0l ZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQotCQl0ZXN0 X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBtYXhfcGxhbmVzLAotCQkJCSAgICBM T0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCk7Ci0KLQlpZ3Rfc3VidGVzdF9mKCJhdG9taWMt cGlwZS0lcy10aWxpbmcteC1wbGFuZXMtJWQiLAotCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShw aXBlKSwgbWF4X3BsYW5lcykKLQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCB0cnVl LCBtYXhfcGxhbmVzLAotCQkJCSAgICBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCk7Ci0K LQlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxpbmcteS1wbGFuZXMtJWQiLAotCQkg ICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgbWF4X3BsYW5lcykKLQkJdGVzdF9wbGFuZV9w b3NpdGlvbihkYXRhLCBwaXBlLCBmYWxzZSwgbWF4X3BsYW5lcywKLQkJCQkgICAgTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1lfVElMRUQpOwotCi0JaWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUtJXMt dGlsaW5nLXktcGxhbmVzLSVkIiwKLQkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSksIG1h eF9wbGFuZXMpCi0JCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgbWF4X3Bs YW5lcywKLQkJCQkgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQpOwotCi0JaWd0X3N1 YnRlc3RfZigibGVnYWN5LXBpcGUtJXMtdGlsaW5nLXlmLXBsYW5lcy0lZCIsCi0JCSAgICAgIGtt c3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9u KGRhdGEsIHBpcGUsIGZhbHNlLCBtYXhfcGxhbmVzLAotCQkJCSAgICBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQpOwotCi0JaWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUtJXMtdGlsaW5n LXlmLXBsYW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxh bmVzKQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIHRydWUsIG1heF9wbGFuZXMs Ci0JCQkJICAgIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCk7Ci19CisJaWd0X3N1YnRl c3RfZigibGVnYWN5LXBpcGUtJXMtdGlsaW5nLW5vbmUtcGxhbmVzIiwKKwkJICAgICAga21zdGVz dF9waXBlX25hbWUocGlwZSkpIHsKKwkJaW50IG5fcGxhbmVzID0gZGF0YS0+ZGlzcGxheS5waXBl c1twaXBlXS5uX3BsYW5lczsKKwkJZm9yIChpbnQgcGxhbmVzID0gMDsgcGxhbmVzIDwgbl9wbGFu ZXM7IHBsYW5lcysrKQorCQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCBmYWxzZSwg cGxhbmVzLAorCQkJCUxPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUpOworCX0KIAotc3RhdGljIHZv aWQKLXJ1bl90ZXN0c19mb3JfcGlwZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQotewot CWZvciAoaW50IHBsYW5lcyA9IElHVF9QTEFORV9QUklNQVJZOyBwbGFuZXMgPCBJR1RfTUFYX1BM QU5FUzsgcGxhbmVzKyspCi0JCXJ1bl90ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhLCBwaXBlLCBw bGFuZXMpOworCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy1ub25lLXBsYW5l cyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7CisJCWludCBuX3BsYW5lcyA9 IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7CisJCWZvciAoaW50IHBsYW5lcyA9 IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKKwkJCXRlc3RfcGxhbmVfcG9zaXRpb24o ZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJ TEVEKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxpbmcteC1wbGFu ZXMiLAorCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkgeworCQlpbnQgbl9wbGFuZXMg PSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOworCQlmb3IgKGludCBwbGFuZXMg PSAwOyBwbGFuZXMgPCBuX3BsYW5lczsgcGxhbmVzKyspCisJCQl0ZXN0X3BsYW5lX3Bvc2l0aW9u KGRhdGEsIHBpcGUsIGZhbHNlLCBwbGFuZXMsCisJCQkJTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQpOworCX0KKworCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy14LXBs YW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7CisJCWludCBuX3BsYW5l cyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7CisJCWZvciAoaW50IHBsYW5l cyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKKwkJCXRlc3RfcGxhbmVfcG9zaXRp b24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9Y X1RJTEVEKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxpbmcteS1w bGFuZXMiLAorCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkgeworCQlpbnQgbl9wbGFu ZXMgPSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOworCQlmb3IgKGludCBwbGFu ZXMgPSAwOyBwbGFuZXMgPCBuX3BsYW5lczsgcGxhbmVzKyspCisJCQl0ZXN0X3BsYW5lX3Bvc2l0 aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBwbGFuZXMsCisJCQkJTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQpOworCX0KKworCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy15 LXBsYW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7CisJCWludCBuX3Bs YW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7CisJCWZvciAoaW50IHBs YW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKKwkJCXRlc3RfcGxhbmVfcG9z aXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJCUxPQ0FMX0k5MTVfRk9STUFUX01P RF9ZX1RJTEVEKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxpbmct eWYtcGxhbmVzIiwKKwkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpIHsKKwkJaW50IG5f cGxhbmVzID0gZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlXS5uX3BsYW5lczsKKwkJZm9yIChpbnQg cGxhbmVzID0gMDsgcGxhbmVzIDwgbl9wbGFuZXM7IHBsYW5lcysrKQorCQkJdGVzdF9wbGFuZV9w b3NpdGlvbihkYXRhLCBwaXBlLCBmYWxzZSwgcGxhbmVzLAorCQkJCUxPQ0FMX0k5MTVfRk9STUFU X01PRF9ZZl9USUxFRCk7CisJfQorCisJaWd0X3N1YnRlc3RfZigiYXRvbWljLXBpcGUtJXMtdGls aW5nLXlmLXBsYW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKSB7CisJCWlu dCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7CisJCWZvciAo aW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKKwkJCXRlc3RfcGxh bmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJCUxPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZZl9USUxFRCk7CisJfQogfQogCiBzdGF0aWMgZGF0YV90IGRhdGE7CkBAIC00NjEs MTUgKzUxNiwxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWd0X2Zp eHR1cmUgewogCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lO VEVMKTsKLQogCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Ci0KIAkJaWd0X3JlcXVp cmVfcGlwZV9jcmMoKTsKIAkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5kaXNwbGF5LCBkYXRhLmRy bV9mZCk7CiAJfQogCiAJZm9yIChpbnQgcGlwZSA9IDA7IHBpcGUgPCBJOTE1X01BWF9QSVBFUzsg cGlwZSsrKQotCQlydW5fdGVzdHNfZm9yX3BpcGUoJmRhdGEsIHBpcGUpOworCQlydW5fdGVzdHNf Zm9yX3BpcGVfcGxhbmUoJmRhdGEsIHBpcGUpOwogCiAJaWd0X2ZpeHR1cmUgewogCQlpZ3RfZGlz cGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwotLSAKMi4xMS4wLjQ1My5nNzg3Zjc1ZjA1CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK