From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: [PATCH i-g-t rfc 19/29] tests/kms_plane_multiple: Add support for dynamic number of planes Date: Wed, 11 Jan 2017 15:41:54 -0500 Message-ID: <20170111204204.7727-20-robert.foss@collabora.com> References: <20170111204204.7727-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 13EE66EA29 for ; Wed, 11 Jan 2017 20:42:39 +0000 (UTC) In-Reply-To: <20170111204204.7727-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 List-Id: intel-gfx@lists.freedesktop.org QWRkIGNoYW5nZXMgcmVmbGVjdGluZyB0aGUgbmV3IHN1cHBvcnQgZm9yIGR5bmFtaWMgbnVtYmVy IG9mIHBsYW5lcyBwZXIgcGlwZS4KClNpZ25lZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxyb2JlcnQu Zm9zc0Bjb2xsYWJvcmEuY29tPgotLS0KIHRlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jIHwgMjAz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90 ZXN0cy9rbXNfcGxhbmVfbXVsdGlwbGUuYyBiL3Rlc3RzL2ttc19wbGFuZV9tdWx0aXBsZS5jCmlu ZGV4IDVlMTJiZTQ1Li5kZWM1NDg4ZCAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3BsYW5lX211bHRp cGxlLmMKKysrIGIvdGVzdHMva21zX3BsYW5lX211bHRpcGxlLmMKQEAgLTQ3LDggKzQ3LDggQEAg dHlwZWRlZiBzdHJ1Y3QgewogCWludCBkcm1fZmQ7CiAJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owog CWlndF9waXBlX2NyY190ICpwaXBlX2NyYzsKLQlpZ3RfcGxhbmVfdCAqcGxhbmVbSUdUX01BWF9Q TEFORVNdOwotCXN0cnVjdCBpZ3RfZmIgZmJbSUdUX01BWF9QTEFORVNdOworCWlndF9wbGFuZV90 ICoqcGxhbmU7CisJc3RydWN0IGlndF9mYiAqZmI7CiB9IGRhdGFfdDsKIAogdHlwZWRlZiBzdHJ1 Y3QgewpAQCAtOTIsMjAgKzkyLDMyIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3ZibGFuayhp bnQgZmQsIGludCBwaXBlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAvKgogICogQ29tbW9uIGNvZGUg YWNyb3NzIGFsbCB0ZXN0cywgYWN0aW5nIG9uIGRhdGFfdAogICovCi1zdGF0aWMgdm9pZCB0ZXN0 X2luaXQoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkKK3N0YXRpYyB2b2lkIHRlc3RfaW5p dChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpbnQgbWF4X3BsYW5lcykKIHsKIAlkYXRh LT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcocGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNF X0FVVE8pOworCisJZGF0YS0+cGxhbmUgPSBtYWxsb2MobWF4X3BsYW5lcyAqIHNpemVvZihkYXRh LT5wbGFuZSkpOworCWlndF9hc3NlcnRfZihkYXRhLT5wbGFuZSAhPSBOVUxMLCAiRmFpbGVkIHRv IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGxhbmVzXG4iKTsKKworCWRhdGEtPmZiID0gbWFsbG9jKG1h eF9wbGFuZXMgKiBzaXplb2Yoc3RydWN0IGlndF9mYikpOworCWlndF9hc3NlcnRfZihkYXRhLT5m YiAhPSBOVUxMLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgRkJzXG4iKTsKIH0KIAog c3RhdGljIHZvaWQgdGVzdF9maW5pKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQs IGludCBtYXhfcGxhbmVzKQogewotCWZvciAoaW50IGkgPSBJR1RfUExBTkVfUFJJTUFSWTsgaSA8 PSBtYXhfcGxhbmVzOyBpKyspCi0JCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cGxhbmVbaV0sIE5V TEwpOworCWZvciAoaW50IGkgPSAwOyBpIDw9IG1heF9wbGFuZXM7IGkrKykgeworCQlpZ3RfcGxh bmVfdCAqcGxhbmUgPSBkYXRhLT5wbGFuZVtpXTsKKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9Q TEFORV9UWVBFX1BSSU1BUlkpCisJCQljb250aW51ZTsKKwkJaWd0X3BsYW5lX3NldF9mYihwbGFu ZSwgTlVMTCk7CisJfQogCiAJLyogcmVzZXQgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBpcGUgKi8K IAlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwogCiAJaWd0X3BpcGVfY3Jj X2ZyZWUoZGF0YS0+cGlwZV9jcmMpOworCWZyZWUoZGF0YS0+cGxhbmUpOworCWZyZWUoZGF0YS0+ ZmIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTEzLDExICsxMjUsMTMgQEAgdGVzdF9ncmFiX2Ny YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwgYm9v bCBhdG9taWMsCiAJICAgICAgY29sb3JfdCAqY29sb3IsIHVpbnQ2NF90IHRpbGluZywgaWd0X2Ny Y190ICpjcmMgLyogb3V0ICovKQogewogCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlpZ3RfcGxh bmVfdCAqcHJpbWFyeTsKIAlpbnQgcmV0LCBuOwogCiAJaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIHBpcGUpOwogCi0JZGF0YS0+cGxhbmVbSUdUX1BMQU5FX1BSSU1BUlldID0gaWd0X291dHB1 dF9nZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7CisJcHJpbWFyeSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlk YXRhLT5wbGFuZVtwcmltYXJ5LT5pbmRleF0gPSBwcmltYXJ5OwogCiAJbW9kZSA9IGlndF9vdXRw dXRfZ2V0X21vZGUob3V0cHV0KTsKIApAQCAtMTI1LDkgKzEzOSw5IEBAIHRlc3RfZ3JhYl9jcmMo ZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsIGJvb2wg YXRvbWljLAogCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCiAJCQkgICAgTE9DQUxfRFJNX0ZP Uk1BVF9NT0RfTk9ORSwKIAkJCSAgICBjb2xvci0+cmVkLCBjb2xvci0+Z3JlZW4sIGNvbG9yLT5i bHVlLAotCQkJICAgICZkYXRhLT5mYltJR1RfUExBTkVfUFJJTUFSWV0pOworCQkJICAgICZkYXRh LT5mYltwcmltYXJ5LT5pbmRleF0pOwogCi0JaWd0X3BsYW5lX3NldF9mYihkYXRhLT5wbGFuZVtJ R1RfUExBTkVfUFJJTUFSWV0sICZkYXRhLT5mYltJR1RfUExBTkVfUFJJTUFSWV0pOworCWlndF9w bGFuZV9zZXRfZmIoZGF0YS0+cGxhbmVbcHJpbWFyeS0+aW5kZXhdLCAmZGF0YS0+ZmJbcHJpbWFy eS0+aW5kZXhdKTsKIAogCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKCZkYXRhLT5kaXNw bGF5LAogCQkJCSAgICAgIGF0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsK QEAgLTE1MCwyOSArMTY0LDM1IEBAIHRlc3RfZ3JhYl9jcmMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsIGJvb2wgYXRvbWljLAogICovCiAKIHN0YXRp YyB2b2lkCi1jcmVhdGVfZmJfZm9yX21vZGVfcG9zaXRpb24oZGF0YV90ICpkYXRhLCBkcm1Nb2Rl TW9kZUluZm8gKm1vZGUsCitjcmVhdGVfZmJfZm9yX21vZGVfcG9zaXRpb24oZGF0YV90ICpkYXRh LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9kZU1vZGVJbmZvICptb2RlLAogCQkJICAgIGNv bG9yX3QgKmNvbG9yLCBpbnQgKnJlY3RfeCwgaW50ICpyZWN0X3ksCiAJCQkgICAgaW50ICpyZWN0 X3csIGludCAqcmVjdF9oLCB1aW50NjRfdCB0aWxpbmcsCiAJCQkgICAgaW50IG1heF9wbGFuZXMp CiB7CiAJdW5zaWduZWQgaW50IGZiX2lkOwogCWNhaXJvX3QgKmNyOworCWlndF9wbGFuZV90ICpw cmltYXJ5OworCisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBE Uk1fUExBTkVfVFlQRV9QUklNQVJZKTsKIAogCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5k cm1fZmQsCiAJCQkgICAgICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCiAJCQkgICAg ICBEUk1fRk9STUFUX1hSR0I4ODg4LAogCQkJICAgICAgdGlsaW5nLAotCQkJICAgICAgJmRhdGEt PmZiW0lHVF9QTEFORV9QUklNQVJZXSk7CisJCQkgICAgICAmZGF0YS0+ZmJbcHJpbWFyeS0+aW5k ZXhdKTsKIAlpZ3RfYXNzZXJ0KGZiX2lkKTsKIAotCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0 YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJbSUdUX1BMQU5FX1BSSU1BUlldKTsKKwljciA9IGlndF9nZXRf Y2Fpcm9fY3R4KGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiW3ByaW1hcnktPmluZGV4XSk7CiAJaWd0 X3BhaW50X2NvbG9yKGNyLCByZWN0X3hbMF0sIHJlY3RfeVswXSwKIAkJCW1vZGUtPmhkaXNwbGF5 LCBtb2RlLT52ZGlzcGxheSwKIAkJCWNvbG9yLT5yZWQsIGNvbG9yLT5ncmVlbiwgY29sb3ItPmJs dWUpOwogCi0JZm9yIChpbnQgaSA9IElHVF9QTEFORV8yOyBpIDw9IG1heF9wbGFuZXM7IGkrKykK Kwlmb3IgKGludCBpID0gMDsgaSA8PSBtYXhfcGxhbmVzOyBpKyspIHsKKwkJaWYgKGRhdGEtPnBs YW5lW2ldLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCisJCQljb250aW51ZTsKIAkJ aWd0X3BhaW50X2NvbG9yKGNyLCByZWN0X3hbaV0sIHJlY3RfeVtpXSwKIAkJCQlyZWN0X3dbaV0s IHJlY3RfaFtpXSwgMC4wLCAwLjAsIDAuMCk7CisJCX0KIAogCWlndF9hc3NlcnQoY2Fpcm9fc3Rh dHVzKGNyKSA9PSAwKTsKIAljYWlyb19kZXN0cm95KGNyKTsKQEAgLTE4MCwzNyArMjAwLDQ5IEBA IGNyZWF0ZV9mYl9mb3JfbW9kZV9wb3NpdGlvbihkYXRhX3QgKmRhdGEsIGRybU1vZGVNb2RlSW5m byAqbW9kZSwKIAogCiBzdGF0aWMgdm9pZAotcHJlcGFyZV9wbGFuZXMoZGF0YV90ICpkYXRhLCBl bnVtIHBpcGUgcGlwZSwgY29sb3JfdCAqY29sb3IsCitwcmVwYXJlX3BsYW5lcyhkYXRhX3QgKmRh dGEsIGVudW0gcGlwZSBwaXBlX2lkLCBjb2xvcl90ICpjb2xvciwKIAkgICAgICAgdWludDY0X3Qg dGlsaW5nLCBpbnQgbWF4X3BsYW5lcywgaWd0X291dHB1dF90ICpvdXRwdXQpCiB7CiAJZHJtTW9k ZU1vZGVJbmZvICptb2RlOwotCWludCB4W0lHVF9NQVhfUExBTkVTXTsKLQlpbnQgeVtJR1RfTUFY X1BMQU5FU107Ci0JaW50IHNpemVbSUdUX01BWF9QTEFORVNdOworCWlndF9waXBlX3QgKnBpcGU7 CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisJaW50ICp4OworCWludCAqeTsKKwlpbnQgKnNpemU7 CiAJaW50IGk7CiAKLQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7CisJaWd0X291 dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGVfaWQpOworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dl dF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CisJcGlwZSA9IHBy aW1hcnktPnBpcGU7CisKKwl4ID0gbWFsbG9jKHBpcGUtPm5fcGxhbmVzICogc2l6ZW9mKCp4KSk7 CisJeSA9IG1hbGxvYyhwaXBlLT5uX3BsYW5lcyAqIHNpemVvZigqeSkpOworCXNpemUgPSBtYWxs b2MocGlwZS0+bl9wbGFuZXMgKiBzaXplb2YoKnNpemUpKTsKIAogCW1vZGUgPSBpZ3Rfb3V0cHV0 X2dldF9tb2RlKG91dHB1dCk7CiAKIAkvKiBwbGFuZXMgd2l0aCByYW5kb20gcG9zaXRpb25zICov Ci0JeFtJR1RfUExBTkVfUFJJTUFSWV0gPSAwOwotCXlbSUdUX1BMQU5FX1BSSU1BUlldID0gMDsK LQlmb3IgKGkgPSBJR1RfUExBTkVfMjsgaSA8PSBtYXhfcGxhbmVzOyBpKyspIHsKLQkJaWYgKGkg PT0gSUdUX1BMQU5FX0NVUlNPUikKKwl4W3ByaW1hcnktPmluZGV4XSA9IDA7CisJeVtwcmltYXJ5 LT5pbmRleF0gPSAwOworCWZvciAoaSA9IDE7IGkgPD0gbWF4X3BsYW5lczsgaSsrKSB7CisJCWln dF9wbGFuZV90ICpwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgaSk7CisKKwkJ aWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikKIAkJCXNpemVbaV0gPSBT SVpFX0NVUlNPUjsKKwkJZWxzZSBpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSkKKwkJCWNvbnRpbnVlOwogCQllbHNlCiAJCQlzaXplW2ldID0gU0laRV9QTEFORTsKIAog CQl4W2ldID0gcmFuZCgpICUgKG1vZGUtPmhkaXNwbGF5IC0gc2l6ZVtpXSk7CiAJCXlbaV0gPSBy YW5kKCkgJSAobW9kZS0+dmRpc3BsYXkgLSBzaXplW2ldKTsKIAotCQlkYXRhLT5wbGFuZVtpXSA9 IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgaSk7CisJCWRhdGEtPnBsYW5lW2ldID0gcGxh bmU7CiAKIAkJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1fZmQsCiAJCQkJICAgIHNpemVb aV0sIHNpemVbaV0sCi0JCQkJICAgIGRhdGEtPnBsYW5lW2ldLT5pc19jdXJzb3IgPyBEUk1fRk9S TUFUX0FSR0I4ODg4IDogRFJNX0ZPUk1BVF9YUkdCODg4OCwKLQkJCQkgICAgZGF0YS0+cGxhbmVb aV0tPmlzX2N1cnNvciA/IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUgOiB0aWxpbmcsCisJCQkJ ICAgIGRhdGEtPnBsYW5lW2ldLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUiA/IERSTV9G T1JNQVRfQVJHQjg4ODggOiBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJCSAgICBkYXRhLT5wbGFu ZVtpXS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgPyBMT0NBTF9EUk1fRk9STUFUX01P RF9OT05FIDogdGlsaW5nLAogCQkJCSAgICBjb2xvci0+cmVkLCBjb2xvci0+Z3JlZW4sIGNvbG9y LT5ibHVlLAogCQkJCSAgICAmZGF0YS0+ZmJbaV0pOwogCkBAIC0yMTksMTAgKzI1MSwxMCBAQCBw cmVwYXJlX3BsYW5lcyhkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBjb2xvcl90ICpjb2xv ciwKIAl9CiAKIAkvKiBwcmltYXJ5IHBsYW5lICovCi0JZGF0YS0+cGxhbmVbSUdUX1BMQU5FX1BS SU1BUlldID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7 Ci0JY3JlYXRlX2ZiX2Zvcl9tb2RlX3Bvc2l0aW9uKGRhdGEsIG1vZGUsIGNvbG9yLCB4LCB5LAor CWRhdGEtPnBsYW5lW3ByaW1hcnktPmluZGV4XSA9IHByaW1hcnk7CisJY3JlYXRlX2ZiX2Zvcl9t b2RlX3Bvc2l0aW9uKGRhdGEsIG91dHB1dCwgbW9kZSwgY29sb3IsIHgsIHksCiAJCQkJICAgIHNp emUsIHNpemUsIHRpbGluZywgbWF4X3BsYW5lcyk7Ci0JaWd0X3BsYW5lX3NldF9mYihkYXRhLT5w bGFuZVtJR1RfUExBTkVfUFJJTUFSWV0sICZkYXRhLT5mYltJR1RfUExBTkVfUFJJTUFSWV0pOwor CWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cGxhbmVbcHJpbWFyeS0+aW5kZXhdLCAmZGF0YS0+ZmJb cHJpbWFyeS0+aW5kZXhdKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1NCw3ICsyODYsNyBAQCB0 ZXN0X2F0b21pY19wbGFuZV9wb3NpdGlvbl93aXRoX291dHB1dChkYXRhX3QgKmRhdGEsIGVudW0g cGlwZSBwaXBlLAogCQkgaWd0X291dHB1dF9uYW1lKG91dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1l KHBpcGUpLCBtYXhfcGxhbmVzLAogCQkgaW5mbywgb3B0LnNlZWQpOwogCi0JdGVzdF9pbml0KGRh dGEsIHBpcGUpOworCXRlc3RfaW5pdChkYXRhLCBwaXBlLCBtYXhfcGxhbmVzKTsKIAogCXRlc3Rf Z3JhYl9jcmMoZGF0YSwgb3V0cHV0LCBwaXBlLCB0cnVlLCAmYmx1ZSwgdGlsaW5nLAogCQkgICAg ICAmdGVzdC5yZWZlcmVuY2VfY3JjKTsKQEAgLTMxOCw3ICszNTAsNyBAQCB0ZXN0X2xlZ2FjeV9w bGFuZV9wb3NpdGlvbl93aXRoX291dHB1dChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLAog CQkgaWd0X291dHB1dF9uYW1lKG91dHB1dCksIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhf cGxhbmVzLAogCQkgaW5mbywgb3B0LnNlZWQpOwogCi0JdGVzdF9pbml0KGRhdGEsIHBpcGUpOwor CXRlc3RfaW5pdChkYXRhLCBwaXBlLCBtYXhfcGxhbmVzKTsKIAogCXRlc3RfZ3JhYl9jcmMoZGF0 YSwgb3V0cHV0LCBwaXBlLCBmYWxzZSwgJmJsdWUsIHRpbGluZywKIAkJICAgICAgJnRlc3QucmVm ZXJlbmNlX2NyYyk7CkBAIC0zODcsNTQgKzQxOSw3MSBAQCB0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRh dGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGJvb2wgYXRvbWljLCBpbnQgbWF4X3BsYW5lcywK IH0KIAogc3RhdGljIHZvaWQKLXJ1bl90ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhX3QgKmRhdGEs IGVudW0gcGlwZSBwaXBlLCBpbnQgbWF4X3BsYW5lcykKK3J1bl90ZXN0c19mb3JfcGlwZV9wbGFu ZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQogewotCWlndF9zdWJ0ZXN0X2YoImxlZ2Fj eS1waXBlLSVzLXRpbGluZy1ub25lLXBsYW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9u YW1lKHBpcGUpLCBtYXhfcGxhbmVzKQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUs IGZhbHNlLCBtYXhfcGxhbmVzLAotCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FKTsK LQotCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBlLSVzLXRpbGluZy1ub25lLXBsYW5lcy0lZCIs Ci0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQotCQl0ZXN0X3Bs YW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIHRydWUsIG1heF9wbGFuZXMsCi0JCQkJICAgIExPQ0FM X0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsKLQotCWlndF9zdWJ0ZXN0X2YoImxlZ2FjeS1waXBl LSVzLXRpbGluZy14LXBsYW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUp LCBtYXhfcGxhbmVzKQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBt YXhfcGxhbmVzLAotCQkJCSAgICBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCk7Ci0KLQlp Z3Rfc3VidGVzdF9mKCJhdG9taWMtcGlwZS0lcy10aWxpbmcteC1wbGFuZXMtJWQiLAotCQkgICAg ICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgbWF4X3BsYW5lcykKLQkJdGVzdF9wbGFuZV9wb3Np dGlvbihkYXRhLCBwaXBlLCB0cnVlLCBtYXhfcGxhbmVzLAotCQkJCSAgICBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRCk7Ci0KLQlpZ3Rfc3VidGVzdF9mKCJsZWdhY3ktcGlwZS0lcy10aWxp bmcteS1wbGFuZXMtJWQiLAotCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSwgbWF4X3Bs YW5lcykKLQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCBmYWxzZSwgbWF4X3BsYW5l cywKLQkJCQkgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQpOwotCi0JaWd0X3N1YnRl c3RfZigiYXRvbWljLXBpcGUtJXMtdGlsaW5nLXktcGxhbmVzLSVkIiwKLQkJICAgICAga21zdGVz dF9waXBlX25hbWUocGlwZSksIG1heF9wbGFuZXMpCi0JCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0 YSwgcGlwZSwgdHJ1ZSwgbWF4X3BsYW5lcywKLQkJCQkgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQpOwotCi0JaWd0X3N1YnRlc3RfZigibGVnYWN5LXBpcGUtJXMtdGlsaW5nLXlmLXBs YW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQot CQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBtYXhfcGxhbmVzLAotCQkJ CSAgICBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpOwotCi0JaWd0X3N1YnRlc3RfZigi YXRvbWljLXBpcGUtJXMtdGlsaW5nLXlmLXBsYW5lcy0lZCIsCi0JCSAgICAgIGttc3Rlc3RfcGlw ZV9uYW1lKHBpcGUpLCBtYXhfcGxhbmVzKQotCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBp cGUsIHRydWUsIG1heF9wbGFuZXMsCi0JCQkJICAgIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9U SUxFRCk7Ci19CisJaWd0X3N1YnRlc3RfZigibGVnYWN5LXBpcGUtJXMtdGlsaW5nLW5vbmUtcGxh bmVzIiwKKwkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpIHsKKwkJaW50IG5fcGxhbmVz ID0gZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlXS5uX3BsYW5lczsKKwkJZm9yIChpbnQgcGxhbmVz ID0gMDsgcGxhbmVzIDwgbl9wbGFuZXM7IHBsYW5lcysrKQorCQkJdGVzdF9wbGFuZV9wb3NpdGlv bihkYXRhLCBwaXBlLCBmYWxzZSwgcGxhbmVzLAorCQkJCUxPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkUpOworCX0KIAotc3RhdGljIHZvaWQKLXJ1bl90ZXN0c19mb3JfcGlwZShkYXRhX3QgKmRhdGEs IGVudW0gcGlwZSBwaXBlKQotewotCWZvciAoaW50IHBsYW5lcyA9IElHVF9QTEFORV9QUklNQVJZ OyBwbGFuZXMgPCBJR1RfTUFYX1BMQU5FUzsgcGxhbmVzKyspCi0JCXJ1bl90ZXN0c19mb3JfcGlw ZV9wbGFuZShkYXRhLCBwaXBlLCBwbGFuZXMpOworCWlndF9zdWJ0ZXN0X2YoImF0b21pYy1waXBl LSVzLXRpbGluZy1ub25lLXBsYW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUp KSB7CisJCWludCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7 CisJCWZvciAoaW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykKKwkJ CXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJCUxPQ0FM X0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJsZWdhY3kt cGlwZS0lcy10aWxpbmcteC1wbGFuZXMiLAorCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBl KSkgeworCQlpbnQgbl9wbGFuZXMgPSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVz OworCQlmb3IgKGludCBwbGFuZXMgPSAwOyBwbGFuZXMgPCBuX3BsYW5lczsgcGxhbmVzKyspCisJ CQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBwbGFuZXMsCisJCQkJTE9D QUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpOworCX0KKworCWlndF9zdWJ0ZXN0X2YoImF0b21p Yy1waXBlLSVzLXRpbGluZy14LXBsYW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBp cGUpKSB7CisJCWludCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFu ZXM7CisJCWZvciAoaW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMrKykK KwkJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJCUxP Q0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJsZWdh Y3ktcGlwZS0lcy10aWxpbmcteS1wbGFuZXMiLAorCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShw aXBlKSkgeworCQlpbnQgbl9wbGFuZXMgPSBkYXRhLT5kaXNwbGF5LnBpcGVzW3BpcGVdLm5fcGxh bmVzOworCQlmb3IgKGludCBwbGFuZXMgPSAwOyBwbGFuZXMgPCBuX3BsYW5lczsgcGxhbmVzKysp CisJCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uKGRhdGEsIHBpcGUsIGZhbHNlLCBwbGFuZXMsCisJCQkJ TE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQpOworCX0KKworCWlndF9zdWJ0ZXN0X2YoImF0 b21pYy1waXBlLSVzLXRpbGluZy15LXBsYW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1l KHBpcGUpKSB7CisJCWludCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9w bGFuZXM7CisJCWZvciAoaW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBwbGFuZXMr KykKKwkJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVzLAorCQkJ CUxPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9mKCJs ZWdhY3ktcGlwZS0lcy10aWxpbmcteWYtcGxhbmVzIiwKKwkJICAgICAga21zdGVzdF9waXBlX25h bWUocGlwZSkpIHsKKwkJaW50IG5fcGxhbmVzID0gZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlXS5u X3BsYW5lczsKKwkJZm9yIChpbnQgcGxhbmVzID0gMDsgcGxhbmVzIDwgbl9wbGFuZXM7IHBsYW5l cysrKQorCQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLCBmYWxzZSwgcGxhbmVzLAor CQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCk7CisJfQorCisJaWd0X3N1YnRlc3Rf ZigiYXRvbWljLXBpcGUtJXMtdGlsaW5nLXlmLXBsYW5lcyIsCisJCSAgICAgIGttc3Rlc3RfcGlw ZV9uYW1lKHBpcGUpKSB7CisJCWludCBuX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlw ZV0ubl9wbGFuZXM7CisJCWZvciAoaW50IHBsYW5lcyA9IDA7IHBsYW5lcyA8IG5fcGxhbmVzOyBw bGFuZXMrKykKKwkJCXRlc3RfcGxhbmVfcG9zaXRpb24oZGF0YSwgcGlwZSwgdHJ1ZSwgcGxhbmVz LAorCQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCk7CisJfQogfQogCiBzdGF0aWMg ZGF0YV90IGRhdGE7CkBAIC00ODEsMTUgKzUzMCwxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCiAJaWd0X2ZpeHR1cmUgewogCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2Ry aXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMKTsKLQogCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19t b2RlKCk7Ci0KIAkJaWd0X3JlcXVpcmVfcGlwZV9jcmMoKTsKIAkJaWd0X2Rpc3BsYXlfaW5pdCgm ZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7CiAJfQogCiAJZm9yIChpbnQgcGlwZSA9IDA7IHBp cGUgPCBJOTE1X01BWF9QSVBFUzsgcGlwZSsrKQotCQlydW5fdGVzdHNfZm9yX3BpcGUoJmRhdGEs IHBpcGUpOworCQlydW5fdGVzdHNfZm9yX3BpcGVfcGxhbmUoJmRhdGEsIHBpcGUpOwogCiAJaWd0 X2ZpeHR1cmUgewogCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwotLSAKMi4xMS4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK