From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH i-g-t 4/4] kms_plane: Add clipping subtests Date: Fri, 12 Jan 2018 16:56:53 +0200 Message-ID: <20180112145653.16384-4-imre.deak@intel.com> References: <20180112145653.16384-1-imre.deak@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 C63356E7B4 for ; Fri, 12 Jan 2018 14:56:58 +0000 (UTC) In-Reply-To: <20180112145653.16384-1-imre.deak@intel.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 List-Id: intel-gfx@lists.freedesktop.org QWRkIHBsYW5lIGNsaXBwaW5nIHN1YnRlc3RzIGRpc3BsYXlpbmcgYSBzaW5nbGUgY2xpcHBlZCBw bGFuZSwgd2l0aCB0aGUKZm9sbG93aW5nIHRlc3QgY2FzZXM6CmEpIHBsYW5lIGNvdmVyaW5nIHRo ZSB3aG9sZSBzY3JlZW4sIHNvIHRoYXQgY2xpcHBpbmcgaXMgZG9uZSBhdCBhbGwgNAogICBzY3Jl ZW4gZWRnZXMKYikgcGxhbmUgYXQgZWl0aGVyIG9mIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVl biBjbGlwcGVkLCBzbyB0aGF0IGEKICAgNHg0IHBpeGVsIHBhcnQgb2YgdGhlIHBsYW5lIGlzIHZp c2libGUKYykgcGxhbmUgYXQgZWl0aGVyIG9mIHRoZSA0IGNvcm5lcnMgb2YgdGhlIHNjcmVlbiBj bGlwcGVkLCBzbyB0aGF0IGEKICAgMngyIHBpeGVsIHBhcnQgb2YgdGhlIHBsYW5lIGlzIHZpc2li bGUKCkVhY2ggb2YgdGhlIGFib3ZlIGNhc2VzIGFyZSB0ZXN0ZWQgd2l0aCBhbGwgc3VwcG9ydGVk IHBsYW5lcywgdGlsaW5nCm1vZGVzLCByb3RhdGlvbiBkZWdyZWVzIGFuZCBkaWZmZXJpbmcgcGl4 ZWwgZm9ybWF0IHNpemVzIChvbmx5IDE2IGJwcAphbmQgMzIgYnBwIGZvciBub3cpLiBXaGlsZSB0 aGUgYSkgYW5kIGIpIGNhc2VzIGFib3ZlIGFyZSBzdXBwb3J0ZWQgb24KYWxsIHBsYXRmb3JtcyBj KSBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIG9uIEdMSyBhbmQgQ05MICh3aGljaCB3YXMgdGhlCnBy aW1hcnkgbW90aXZhdGlvbiBmb3IgdGhpcyB0ZXN0Y2FzZSkuCgpTaWduZWQtb2ZmLWJ5OiBJbXJl IERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Ci0tLQogdGVzdHMva21zX3BsYW5lLmMgfCA0NDEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAx IGZpbGUgY2hhbmdlZCwgNDQxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0cy9rbXNf cGxhbmUuYyBiL3Rlc3RzL2ttc19wbGFuZS5jCmluZGV4IDM1ODEyNmI2Li4wZDMyZjllZiAxMDA2 NDQKLS0tIGEvdGVzdHMva21zX3BsYW5lLmMKKysrIGIvdGVzdHMva21zX3BsYW5lLmMKQEAgLTQx LDExICs0MSwzNCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJaW50IGRybV9mZDsKIAlpZ3RfZGlzcGxh eV90IGRpc3BsYXk7CiAJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOworCXVpbnQzMl90IGRldmlk OworCXVpbnQ2NF90IG1heF9jdXJ3OworCXVpbnQ2NF90IG1heF9jdXJoOwogfSBkYXRhX3Q7CiAK IHN0YXRpYyBjb2xvcl90IHJlZCAgID0geyAxLjBmLCAwLjBmLCAwLjBmIH07CiBzdGF0aWMgY29s b3JfdCBncmVlbiA9IHsgMC4wZiwgMS4wZiwgMC4wZiB9Oworc3RhdGljIGNvbG9yX3QgeWVsbG93 ID0geyAxLjBmLCAxLjBmLCAwLjBmIH07CiBzdGF0aWMgY29sb3JfdCBibHVlICA9IHsgMC4wZiwg MC4wZiwgMS4wZiB9Oworc3RhdGljIGNvbG9yX3Qgd2hpdGUgPSB7IDEuMGYsIDEuMGYsIDEuMGYg fTsKKworCisvKgorICogU2l6ZSBvZiBhIHNxdWFyZSBwbGFuZSB1c2VkIHRvIHRlc3QgY2xpcHBp bmcgYXQgdGhlIDQgY291cm5lcnMgb2YgdGhlCisgKiBkaXNwbGF5LgorICovCisjZGVmaW5lIENM SVBQRURfUExBTkVfU01BTExfU0laRQk2NAorCisvKgorICogVmlzaWJsZSBwbGFuZSBzaXplIGFm dGVyIGNsaXBwaW5nIHRoYXQgd29ya3Mgb24gYWxsIHBsYXRmb3JtcyBmb3IgYWxsIHBsYW5lCisg KiBwb3NpdGlvbnMuCisgKiBUaGUgZXhjZXB0aW9ucyBhcmUgR0xLL0NOTCB3aGVyZSB0aGVyZSBt dXN0IGJlIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHMKKyAqIHZpc2libGUgZnJvbSB0aGUgcGxh bmUgYWZ0ZXIgaXQncyBjbGlwcGVkIHRvIHRoZSBsZWZ0L3JpZ2h0IGVkZ2Ugb2YgdGhlCisgKiBz Y3JlZW4uIE5vdCBtZWV0aW5nIHRoaXMgY29uZGl0aW9uIG1heSB0cmlnZ2VyIEZJRk8gdW5kZXJm bG93cyBhbmQgc2NyZWVuCisgKiBjb3JydXB0aW9uLiBUaGUgY3Vyc29yIHBsYW5lIGlzIGFuIGV4 Y2VwdGlvbiB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGlzIHByb2JsZW0KKyAqIGV2ZW4gb24gR0xLL0NO TC4KKyAqLworI2RlZmluZSBDTElQUEVEX1BMQU5FX01JTl9WQUxJRAkJNAogCiAvKgogICogQ29t bW9uIGNvZGUgYWNyb3NzIGFsbCB0ZXN0cywgYWN0aW5nIG9uIGRhdGFfdApAQCAtMTQzLDYgKzE2 NiwxMTEgQEAgY3JlYXRlX2ZiX2Zvcl9tb2RlX19wb3NpdGlvbihkYXRhX3QgKmRhdGEsIGRybU1v ZGVNb2RlSW5mbyAqbW9kZSwKIAljYWlyb19kZXN0cm95KGNyKTsKIH0KIAorLyoKKyAqIENyZWF0 ZSBhIHNxdWFyZSBGQiBmb3IgdGhlIHBsYW5lIGluIHRoZSBjbGlwcGluZyB0ZXN0LCBkaXZpZGVk IGludG8gNAorICogcXVhcnRlcnMgc29saWQgZmlsbGVkIHdpdGggZGlmZmVyZW50IGNvbG9ycy4g VXNlIHRoZSBnaXZlbiB0aWxpbmcsIGZvcm1hdAorICogYW5kIHNpemUgYW5kIHJvdGF0ZSB0aGUg RkIgY2xvY2t3aXNlIHdpdGggdGhlIGdpdmVuIHJvdGF0aW9uIGRlZ3JlZXMsIHNvCisgKiB0aGF0 IHRoZSBjb3VudGVyY2xvY2t3aXNlIHJvdGF0aW9uIHdpdGggdGhlIHNhbWUgZGVncmVlcyBkb25l IGJ5IHRoZSBIVworICogd2lsbCBhbHdheXMgcmVzdWx0IGluIHRoZSBzYW1lIHJlZmVyZW5jZSBG QiBpbWFnZS4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9mYl9mb3JfbW9kZV9fY2xpcHBpbmdf cGxhbmUoZGF0YV90ICpkYXRhLCBpZ3Rfcm90YXRpb25fdCByb3RhdGlvbiwKKwkJCQkgICB1aW50 NjRfdCB0aWxpbmcsCisJCQkJICAgdWludDMyX3QgZm9ybWF0LAorCQkJCSAgIGludCBzaXplLAor CQkJCSAgIHN0cnVjdCBpZ3RfZmIgKmZiIC8qIG91dCAqLykKK3sKKwljb2xvcl90IGNvcm5lcnNb XSA9IHsgcmVkLCB3aGl0ZSwgeWVsbG93LCBibHVlIH07CisJY29sb3JfdCBjb2xvcjsKKwl1bnNp Z25lZCBpbnQgZmJfaWQ7CisJY2Fpcm9fdCAqY3I7CisJY29uc3QgaW50IHFzaXplID0gc2l6ZSAv IDI7CisJaW50IGlkeDsKKworCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsIHNp emUsIHNpemUsIGZvcm1hdCwgdGlsaW5nLCBmYik7CisJaWd0X2Fzc2VydChmYl9pZCk7CisKKwlj ciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmRybV9mZCwgZmIpOworCisJc3dpdGNoIChyb3Rh dGlvbikgeworCWNhc2UgSUdUX1JPVEFUSU9OXzA6CisJCWlkeCA9IDA7CisJCWJyZWFrOworCWNh c2UgSUdUX1JPVEFUSU9OXzkwOgorCQlpZHggPSAzOworCQlicmVhazsKKwljYXNlIElHVF9ST1RB VElPTl8xODA6CisJCWlkeCA9IDI7CisJCWJyZWFrOworCWNhc2UgSUdUX1JPVEFUSU9OXzI3MDoK KwkJaWR4ID0gMTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJaWd0X2Fzc2VydCgwKTsKKwl9CisK Kwljb2xvciA9IGNvcm5lcnNbaWR4XTsKKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIHFzaXpl LCBxc2l6ZSwKKwkJCWNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNvbG9yLmJsdWUpOworCisJY29s b3IgPSBjb3JuZXJzWygrK2lkeCkgJSA0XTsKKwlpZ3RfcGFpbnRfY29sb3IoY3IsIHFzaXplLCAw LCBxc2l6ZSwgcXNpemUsCisJCQljb2xvci5yZWQsIGNvbG9yLmdyZWVuLCBjb2xvci5ibHVlKTsK KworCWNvbG9yID0gY29ybmVyc1soKytpZHgpICUgNF07CisJaWd0X3BhaW50X2NvbG9yKGNyLCBx c2l6ZSwgcXNpemUsIHFzaXplLCBxc2l6ZSwKKwkJCWNvbG9yLnJlZCwgY29sb3IuZ3JlZW4sIGNv bG9yLmJsdWUpOworCisJY29sb3IgPSBjb3JuZXJzWygrK2lkeCkgJSA0XTsKKwlpZ3RfcGFpbnRf Y29sb3IoY3IsIDAsIHFzaXplLCBxc2l6ZSwgcXNpemUsCisJCQljb2xvci5yZWQsIGNvbG9yLmdy ZWVuLCBjb2xvci5ibHVlKTsKKworCWlndF9hc3NlcnQoY2Fpcm9fc3RhdHVzKGNyKSA9PSAwKTsK KwljYWlyb19kZXN0cm95KGNyKTsKK30KKworLyoKKyAqIENyZWF0ZSBhIHNxdWFyZSByZWZlcmVu Y2UgRkIgZm9yIHRoZSB3aG9sZSBzY3JlZW4gaW4gdGhlIGNsaXBwaW5nIHRlc3QsCisgKiB3aXRo IHRoZSBnaXZlbiB0ZXN0IHBsYW5lIHBvc2l0aW9uIGFuZCBzaXplLiBTZWUKKyAqIGNyZWF0ZV9m Yl9mb3JfbW9kZV9fY2xpcHBpbmdfcGxhbmUoKSBmb3IgdGhlIGxheW91dCBvZiB0aGUgdGVzdCBw bGFuZS4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZV9mYl9mb3JfbW9kZV9fY2xpcHBpbmdfZGlz cGxheShkYXRhX3QgKmRhdGEsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKKwkJCQkgICAgIGludCBw bGFuZV94LCBpbnQgcGxhbmVfeSwKKwkJCQkgICAgIGludCBwbGFuZV9zaXplLAorCQkJCSAgICAg c3RydWN0IGlndF9mYiAqZmIgLyogb3V0ICovKQoreworCXN0cnVjdCBpZ3RfZmIgcGxhbmVfZmI7 CisJdW5zaWduZWQgaW50IGZiX2lkOworCWNhaXJvX3QgKmNyOworCWNhaXJvX3N1cmZhY2VfdCAq c3JjOworCisJZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwKKwkJCQkgIG1vZGUt PmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCQkgIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJ CQkJICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJCSAgZmIpOworCWlndF9hc3NlcnQo ZmJfaWQpOworCisJY3JlYXRlX2ZiX2Zvcl9tb2RlX19jbGlwcGluZ19wbGFuZShkYXRhLCBJR1Rf Uk9UQVRJT05fMCwKKwkJCQkJICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCQkJICAg RFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCQkJICAgcGxhbmVfc2l6ZSwgJnBsYW5lX2ZiKTsKKwor CXNyYyA9IGlndF9nZXRfY2Fpcm9fc3VyZmFjZShkYXRhLT5kcm1fZmQsICZwbGFuZV9mYik7CisK KwljciA9IGlndF9nZXRfY2Fpcm9fY3R4KGRhdGEtPmRybV9mZCwgZmIpOworCWlndF9wYWludF9j b2xvcihjciwgMCwgMCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJMCwgMCwg MCk7CisKKwljYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHNyYywgcGxhbmVfeCwgcGxhbmVf eSk7CisJY2Fpcm9fcmVjdGFuZ2xlKGNyLCBwbGFuZV94LCBwbGFuZV95LAorCQkJcGxhbmVfc2l6 ZSwgcGxhbmVfc2l6ZSk7CisJY2Fpcm9fZmlsbChjcik7CisJaWd0X2Fzc2VydChjYWlyb19zdGF0 dXMoY3IpID09IDApOworCWNhaXJvX2Rlc3Ryb3koY3IpOworfQorCiBlbnVtIHsKIAlURVNUX1BP U0lUSU9OX0ZVTExZX0NPVkVSRUQgPSAxIDw8IDAsCiAJVEVTVF9EUE1TID0gMSA8PCAxLApAQCAt MzgxLDYgKzUwOSwzMDMgQEAgdGVzdF9wbGFuZV9wYW5uaW5nKGRhdGFfdCAqZGF0YSwgZW51bSBw aXBlIHBpcGUsIHVuc2lnbmVkIGludCBmbGFncykKIAlpZ3Rfc2tpcF9vbihjb25uZWN0ZWRfb3V0 cyA9PSAwKTsKIH0KIAorc3RhdGljIGJvb2wKK2JvZ3VzX3BsYW5lX2NvbmYodWludDMyX3QgZGV2 aWQsIGlndF9wbGFuZV90ICpwbGFuZV9vYmosCisJCSBpbnQgaGRpc3BsYXksIGludCBwbGFuZV94 LCBpbnQgcGxhbmVfd2lkdGgpCit7CisJaWYgKCEoSVNfR0VNSU5JTEFLRShkZXZpZCkgfHwgSVNf Q0FOTk9OTEFLRShkZXZpZCkpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAocGxhbmVfb2JqLT50 eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKHBs YW5lX3ggKyBwbGFuZV93aWR0aCA+PSBDTElQUEVEX1BMQU5FX01JTl9WQUxJRCAmJgorCSAgICBw bGFuZV94IDw9IGhkaXNwbGF5IC0gQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQpCisJCXJldHVybiBm YWxzZTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbAorc3VwcG9ydGVkX3BsYW5l X2NvbmYoZGF0YV90ICpkYXRhLCBpbnQgcGxhbmVfdHlwZSwgdWludDY0X3QgdGlsaW5nLAorCQkg ICAgIHVpbnQzMl90IGZvcm1hdCwgaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24sCisJCSAgICAgZHJt TW9kZU1vZGVJbmZvICptb2RlLAorCQkgICAgIGludCBwbGFuZV94LCBpbnQgcGxhbmVfeSwgaW50 IHBsYW5lX3NpemUpCit7CisJaWYgKGludGVsX2dlbihkYXRhLT5kZXZpZCkgPCA5ICYmCisJICAg IHRpbGluZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FKQorCQlyZXR1cm4gZmFsc2U7CisK KwkvKiBPbiBHRU48OSB0aGUgcHJpbWFyeSBwbGFuZSBtdXN0IGNvdmVyIHRoZSBmdWxsIHNjcmVl bi4gKi8KKwlpZiAoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDkgJiYKKwkgICAgcGxhbmVfdHlw ZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZICYmCisJICAgIChwbGFuZV94ID4gMCB8fCBwbGFu ZV95ID4gMCB8fAorCSAgICAgKHBsYW5lX3ggKyBwbGFuZV9zaXplIDwgbW9kZS0+aGRpc3BsYXkp IHx8CisJICAgICAocGxhbmVfeSArIHBsYW5lX3NpemUgPCBtb2RlLT52ZGlzcGxheSkpKQorCQly ZXR1cm4gZmFsc2U7CisKKwlpZiAocGxhbmVfdHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1Ip IHsKKwkJLyogRm9yIGN1cnNvciBwbGFuZXMgb25seSBsaW5lYXIvYWxwaGEgZm9ybWF0IGlzIHN1 cHBvcnRlZC4gKi8KKwkJaWYgKHRpbGluZyAhPSBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FIHx8 CisJCSAgICBmb3JtYXQgIT0gRFJNX0ZPUk1BVF9BUkdCODg4OCkKKwkJCXJldHVybiBmYWxzZTsK KworCQlpZiAocGxhbmVfc2l6ZSA+IGRhdGEtPm1heF9jdXJ3IHx8IHBsYW5lX3NpemUgPiBkYXRh LT5tYXhfY3VyaCkKKwkJCXJldHVybiBmYWxzZTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBGb3Ig bm9uLWN1cnNvciBwbGFuZXMgZm9ybWF0cyB3aXRoIGFscGhhIG1heSByZXN1bHQgaW4KKwkJICog dW5kZXRlcm1pbmlzdGljIENSQ3MsIHdlIHVzZSB0aGUgc2FtZSBzaXplZAorCQkgKiBub24tYWxw aGEgWFJHQjg4ODggZm9ybWF0IGluc3RlYWQuCisJCSAqLworCQlpZiAoZm9ybWF0ID09IERSTV9G T1JNQVRfQVJHQjg4ODgpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJaWYgKGZvcm1hdCA9PSBEUk1f Rk9STUFUX1JHQjU2NSAmJgorCQkgICAgaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA8IDkgJiYKKwkJ ICAgICFJU19WQUxMRVlWSUVXKGRhdGEtPmRldmlkKSAmJiAhSVNfQ0hFUlJZVklFVyhkYXRhLT5k ZXZpZCkpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogUkdCNTY1IHdpdGggcm90YXRpb24g aXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiAqLworCWlmIChmb3JtYXQgPT0gRFJNX0ZPUk1BVF9S R0I1NjUgJiYgcm90YXRpb24gIT0gSUdUX1JPVEFUSU9OXzApCisJCXJldHVybiBmYWxzZTsKKwor CXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZAordGVzdF9wbGFuZV9jbGlwcGluZ19mb3Jt YXQoZGF0YV90ICpkYXRhLAorCQkJICAgIGVudW0gcGlwZSBwaXBlLAorCQkJICAgIGludCBwbGFu ZSwKKwkJCSAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKKwkJCSAgICBkcm1Nb2RlTW9kZUluZm8g Km1vZGUsCisJCQkgICAgaW50IHBsYW5lX3gsIGludCBwbGFuZV95LAorCQkJICAgIGludCBwbGFu ZV9zaXplLAorCQkJICAgIHVpbnQ2NF90IHRpbGluZywKKwkJCSAgICBpZ3Rfcm90YXRpb25fdCBy b3RhdGlvbiwKKwkJCSAgICB1aW50MzJfdCBmb3JtYXQsCisJCQkgICAgaWd0X2NyY190ICpyZWZl cmVuY2VfY3JjKQoreworCWlndF9wbGFuZV90ICpwbGFuZV9vYmo7CisJc3RydWN0IGlndF9mYiBy ZWZlcmVuY2VfZmI7CisJaWd0X2NyY190IGNyYzsKKwlpbnQgcmV0OworCisJaWd0X2RlYnVnKCIg IHBsYW5lICVkIHJvdGF0aW9uICVzIHRpbGluZyAlcyBmb3JtYXQgJXNcbiIsCisJCSAgcGxhbmUs CisJCSAgaWd0X3JvdGF0aW9uX2RlZ3JlZXNfc3RyKHJvdGF0aW9uKSwKKwkJICBpZ3RfdGlsaW5n X3N0cih0aWxpbmcpLAorCQkgIGlndF9mb3JtYXRfc3RyKGZvcm1hdCkpOworCisJaWd0X291dHB1 dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOworCXBsYW5lX29iaiA9IGlndF9vdXRwdXRfZ2V0X3Bs YW5lKG91dHB1dCwgcGxhbmUpOworCisJaWYgKCFzdXBwb3J0ZWRfcGxhbmVfY29uZihkYXRhLCBw bGFuZV9vYmotPnR5cGUsCisJCQkJICB0aWxpbmcsIGZvcm1hdCwgcm90YXRpb24sCisJCQkJICBt b2RlLAorCQkJCSAgcGxhbmVfeCwgcGxhbmVfeSwKKwkJCQkgIHBsYW5lX3NpemUpKQorCQlyZXR1 cm47CisKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7CisKKwljcmVhdGVfZmJf Zm9yX21vZGVfX2NsaXBwaW5nX3BsYW5lKGRhdGEsIHJvdGF0aW9uLCB0aWxpbmcsIGZvcm1hdCwK KwkJCQkJICAgcGxhbmVfc2l6ZSwgJnJlZmVyZW5jZV9mYik7CisKKwlpZ3RfcGxhbmVfc2V0X2Zi KHBsYW5lX29iaiwgJnJlZmVyZW5jZV9mYik7CisJaWd0X2ZiX3NldF9wb3NpdGlvbigmcmVmZXJl bmNlX2ZiLCBwbGFuZV9vYmosIDAsIDApOworCisJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lX29i aiwgcGxhbmVfc2l6ZSwgcGxhbmVfc2l6ZSk7CisJaWd0X3BsYW5lX3NldF9yb3RhdGlvbihwbGFu ZV9vYmosIHJvdGF0aW9uKTsKKwlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBsYW5lX29iaiwgcGxh bmVfeCwgcGxhbmVfeSk7CisKKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0MigmZGF0YS0+ ZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CisKKwlpZiAoIWJvZ3VzX3BsYW5lX2NvbmYoZGF0 YS0+ZGV2aWQsIHBsYW5lX29iaiwgbW9kZS0+aGRpc3BsYXksCisJCQkgICAgICBwbGFuZV94LCBw bGFuZV9zaXplKSkgeworCQlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKwkJaWd0X3BpcGVfY3JjX2Nv bGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKKwkJaWd0X2Fzc2VydF9jcmNfZXF1YWwo cmVmZXJlbmNlX2NyYywgJmNyYyk7CisJfSBlbHNlIHsKKwkJaWd0X2Fzc2VydChyZXQgPT0gLUVJ TlZBTCk7CisJfQorCisJaWd0X3BsYW5lX3NldF9mYihwbGFuZV9vYmosIE5VTEwpOworCWlndF9w bGFuZV9zZXRfcm90YXRpb24ocGxhbmVfb2JqLCBJR1RfUk9UQVRJT05fMCk7CisJaWd0X3BsYW5l X3NldF9wb3NpdGlvbihwbGFuZV9vYmosIDAsIDApOworCisJaWd0X291dHB1dF9zZXRfcGlwZShv dXRwdXQsIFBJUEVfQU5ZKTsKKworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmcmVmZXJl bmNlX2ZiKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJlKGRh dGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsCisJCQkgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwg ZHJtTW9kZU1vZGVJbmZvICptb2RlLAorCQkJICAgaW50IHBsYW5lX3gsIGludCBwbGFuZV95LCBp bnQgcGxhbmVfc2l6ZSkKK3sKKwljb25zdCBzdHJ1Y3QgeworCQl1aW50NjRfdCB0aWxpbmc7CisJ CWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOworCX0gcm90YXRpb25zW10gPSB7CisJCXsgTE9DQUxf RFJNX0ZPUk1BVF9NT0RfTk9ORSwJCUlHVF9ST1RBVElPTl8wIH0sCisKKwkJeyBMT0NBTF9JOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRCwJSUdUX1JPVEFUSU9OXzAgfSwKKworCQl7IExPQ0FMX0k5MTVf Rk9STUFUX01PRF9ZX1RJTEVELAlJR1RfUk9UQVRJT05fMCB9LAorCQl7IExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZX1RJTEVELAlJR1RfUk9UQVRJT05fOTAgfSwKKwkJeyBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWV9USUxFRCwJSUdUX1JPVEFUSU9OXzE4MCB9LAorCQl7IExPQ0FMX0k5MTVfRk9STUFU X01PRF9ZX1RJTEVELAlJR1RfUk9UQVRJT05fMjcwIH0sCisKKwkJeyBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQsCUlHVF9ST1RBVElPTl8wIH0sCisJCXsgTE9DQUxfSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVELAlJR1RfUk9UQVRJT05fOTAgfSwKKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9N T0RfWWZfVElMRUQsCUlHVF9ST1RBVElPTl8xODAgfSwKKwkJeyBMT0NBTF9JOTE1X0ZPUk1BVF9N T0RfWWZfVElMRUQsCUlHVF9ST1RBVElPTl8yNzAgfSwKKwl9OworCWNvbnN0IHVpbnQzMl90IGZv cm1hdHNbXSA9IHsKKwkJRFJNX0ZPUk1BVF9SR0I1NjUsCisJCURSTV9GT1JNQVRfWFJHQjg4ODgs CisJCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJfTsKKwlpbnQgbl9wbGFuZXMgPSBkYXRhLT5kaXNw bGF5LnBpcGVzW3BpcGVdLm5fcGxhbmVzOworCWlndF9mYl90IHJlZmVyZW5jZV9mYjsKKwlpZ3Rf Y3JjX3QgcmVmZXJlbmNlX2NyYzsKKworCWlndF9pbmZvKCJUZXN0aW5nIGNvbm5lY3RvciAlcyBt b2RlICVkeCVkIHVzaW5nIHBpcGUgJXM6ICVkLCVkQCVkLCVkXG4iLAorCQkgaWd0X291dHB1dF9u YW1lKG91dHB1dCksCisJCSBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCisJCSBrbXN0 ZXN0X3BpcGVfbmFtZShwaXBlKSwKKwkJIHBsYW5lX3NpemUsIHBsYW5lX3NpemUsCisJCSBwbGFu ZV94LCBwbGFuZV95KTsKKworCXRlc3RfaW5pdChkYXRhLCBwaXBlKTsKKworCWNyZWF0ZV9mYl9m b3JfbW9kZV9fY2xpcHBpbmdfZGlzcGxheShkYXRhLCBtb2RlLAorCQkJCQkgICAgIHBsYW5lX3gs IHBsYW5lX3ksCisJCQkJCSAgICAgcGxhbmVfc2l6ZSwKKwkJCQkJICAgICAmcmVmZXJlbmNlX2Zi KTsKKworCXRlc3RfZ3JhYl9jcmNfZm9yX2ZiKGRhdGEsIG91dHB1dCwgcGlwZSwgJnJlZmVyZW5j ZV9mYiwKKwkJCSAgICAgJnJlZmVyZW5jZV9jcmMpOworCisJaWd0X3JlbW92ZV9mYihkYXRhLT5k cm1fZmQsICZyZWZlcmVuY2VfZmIpOworCisJZm9yIChpbnQgcGxhbmUgPSAwOyBwbGFuZSA8IG5f cGxhbmVzOyBwbGFuZSsrKQorCQlmb3IgKGludCByb3RhdGlvbiA9IDA7IHJvdGF0aW9uIDwgQVJS QVlfU0laRShyb3RhdGlvbnMpOworCQkgICAgIHJvdGF0aW9uKyspCisJCQlmb3IgKGludCBmb3Jt YXQgPSAwOyBmb3JtYXQgPCBBUlJBWV9TSVpFKGZvcm1hdHMpOworCQkJICAgICBmb3JtYXQrKykK KwkJCQl0ZXN0X3BsYW5lX2NsaXBwaW5nX2Zvcm1hdChkYXRhLCBwaXBlLCBwbGFuZSwKKwkJCQkJ CQkgICAgb3V0cHV0LAorCQkJCQkJCSAgICBtb2RlLAorCQkJCQkJCSAgICBwbGFuZV94LCBwbGFu ZV95LAorCQkJCQkJCSAgICBwbGFuZV9zaXplLAorCQkJCQkJCSAgICByb3RhdGlvbnNbcm90YXRp b25dLnRpbGluZywKKwkJCQkJCQkgICAgcm90YXRpb25zW3JvdGF0aW9uXS5yb3RhdGlvbiwKKwkJ CQkJCQkgICAgZm9ybWF0c1tmb3JtYXRdLAorCQkJCQkJCSAgICAmcmVmZXJlbmNlX2NyYyk7CisK Kwl0ZXN0X2ZpbmkoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYW5lX2NsaXBwaW5n KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCit7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7 CisJaW50IGNvbm5lY3RlZF9vdXRzID0gMDsKKworCWZvcl9lYWNoX3ZhbGlkX291dHB1dF9vbl9w aXBlKCZkYXRhLT5kaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKKwkJZHJtTW9kZU1vZGVJbmZvICpt b2RlOworCQlpbnQgc3Ffc2l6ZTsKKworCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlw ZSk7CisJCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7CisKKwkJLyoKKwkJICog VGVzdCB3aXRoIGEgc3F1YXJlIHBsYW5lIGJpZ2dlciB0aGFuIGVpdGhlciB0aGUgd2lkdGggb3IK KwkJICogaGVpZ2h0IG9mIHRoZSBtb2RlLiBUaGlzIHNob3VsZCBwYXNzIG9uIGFsbCBwbGF0Zm9y bXMuCisJCSAqLworCQlzcV9zaXplID0gbW9kZS0+aGRpc3BsYXkgPiBtb2RlLT52ZGlzcGxheSA/ CisJCQkgIG1vZGUtPmhkaXNwbGF5IDogbW9kZS0+dmRpc3BsYXk7CisJCXRlc3RfcGxhbmVfY2xp cHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwKKwkJCQkJICAgLTIsCisJCQkJ CSAgIC0yLAorCQkJCQkgICBzcV9zaXplICsgNCk7CisKKwkJLyoKKwkJICogVGVzdCBwb3NpdGlv bnMgaW4gdGhlIDQgY29ybmVycyBvZiB0aGUgc2NyZWVuIHdpdGggYQorCQkgKiBDTElQUEVEX1BM QU5FX01JTl9WQUxJRCB4IENMSVBQRURfUExBTkVfTUlOX1ZBTElEIHNxdWFyZQorCQkgKiB2aXNp YmxlIGZyb20gdGhlIHBsYW5lLiBUaGVzZSBzaG91bGQgcGFzcyBvbiBhbGwgcGxhdGZvcm1zLgor CQkgKi8KKwkJdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YSwgcGlwZSwgb3V0cHV0LCBt b2RlLAorCQkJCQkgICAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsKKwkJCQkJICAgIENMSVBQ RURfUExBTkVfTUlOX1ZBTElELAorCQkJCQkgICAtQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFICsK KwkJCQkJICAgIENMSVBQRURfUExBTkVfTUlOX1ZBTElELAorCQkJCQkgICBDTElQUEVEX1BMQU5F X1NNQUxMX1NJWkUpOworCisJCXRlc3RfcGxhbmVfY2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUs IG91dHB1dCwgbW9kZSwKKwkJCQkJICAgLUNMSVBQRURfUExBTkVfU01BTExfU0laRSArCisJCQkJ CSAgICBDTElQUEVEX1BMQU5FX01JTl9WQUxJRCwKKwkJCQkJICAgbW9kZS0+dmRpc3BsYXkgLQor CQkJCQkgICAgQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQsCisJCQkJCSAgIENMSVBQRURfUExBTkVf U01BTExfU0laRSk7CisKKwkJdGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YSwgcGlwZSwg b3V0cHV0LCBtb2RlLAorCQkJCQkgICBtb2RlLT5oZGlzcGxheSAtCisJCQkJCSAgICBDTElQUEVE X1BMQU5FX01JTl9WQUxJRCwKKwkJCQkJICAgLUNMSVBQRURfUExBTkVfU01BTExfU0laRSArCisJ CQkJCSAgICBDTElQUEVEX1BMQU5FX01JTl9WQUxJRCwKKwkJCQkJICAgQ0xJUFBFRF9QTEFORV9T TUFMTF9TSVpFKTsKKworCQl0ZXN0X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhLCBwaXBlLCBv dXRwdXQsIG1vZGUsCisJCQkJCSAgIG1vZGUtPmhkaXNwbGF5IC0KKwkJCQkJICAgIENMSVBQRURf UExBTkVfTUlOX1ZBTElELAorCQkJCQkgICBtb2RlLT52ZGlzcGxheSAtCisJCQkJCSAgICBDTElQ UEVEX1BMQU5FX01JTl9WQUxJRCwKKwkJCQkJICAgQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpFKTsK KworCQkvKgorCQkgKiBUZXN0IHBvc2l0aW9ucyBpbiB0aGUgNCBjb3JuZXJzIG9mIHRoZSBzY3Jl ZW4gd2l0aCBhCisJCSAqIDIgeCAyIHNxdWFyZSB2aXNpYmxlIGZyb20gdGhlIHBsYW5lLiBUaGVz ZSBhcmUgdmFsaWQgb24gYWxsCisJCSAqIHBsYXRmb3JtcyBleGNlcHQgb24gR0xLL0NOTCB3aGVy ZSBsZXNzIHRoYW4KKwkJICogQ0xJUFBFRF9QTEFORV9NSU5fVkFMSUQgcGl4ZWxzIHZpc2libGUg b24gdGhlIGxlZnQvcmlnaHQKKwkJICogZWRnZXMgb2YgdGhlIHNjcmVlbiBtYXkgY2F1c2UgRklG TyB1bmRlcmZsb3cgYW5kIGRpc3BsYXkKKwkJICogY29ycnVwdGlvbi4KKwkJICoKKwkJICogVGhl IGN1cnNvciBwbGFuZSBpcyBhbiBleGNlcHRpb24gd2l0aG91dCB0aGlzIHByb2JsZW0uCisJCSAq CisJCSAqIFVzZSAyIHggMiBzaXplIGFzIG90aGVyIChvZGQpIHNpemVzIG1heSByZXN1bHQgaW4g YW4KKwkJICogaW5jb3JyZWN0IENSQyBmb3IgdGhlIGN1cnNvciBwbGFuZSBldmVuIHRob3VnaCBp dCBkaXNwbGF5cworCQkgKiBjb3JyZWN0bHkgYW5kIGNhdXNlcyBubyB1bmRlcmZsb3cuCisJCSAq LworCQl0ZXN0X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhLCBwaXBlLCBvdXRwdXQsIG1vZGUs CisJCQkJCSAgIC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUgKyAyLAorCQkJCQkgICAtQ0xJUFBF RF9QTEFORV9TTUFMTF9TSVpFICsgMiwKKwkJCQkJICAgQ0xJUFBFRF9QTEFORV9TTUFMTF9TSVpF KTsKKworCQl0ZXN0X3BsYW5lX2NsaXBwaW5nX3NxdWFyZShkYXRhLCBwaXBlLCBvdXRwdXQsIG1v ZGUsCisJCQkJCSAgIC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUgKyAyLAorCQkJCQkgICBtb2Rl LT52ZGlzcGxheSAtIDIsCisJCQkJCSAgIENMSVBQRURfUExBTkVfU01BTExfU0laRSk7CisKKwkJ dGVzdF9wbGFuZV9jbGlwcGluZ19zcXVhcmUoZGF0YSwgcGlwZSwgb3V0cHV0LCBtb2RlLAorCQkJ CQkgICBtb2RlLT5oZGlzcGxheSAtIDIsCisJCQkJCSAgIC1DTElQUEVEX1BMQU5FX1NNQUxMX1NJ WkUgKyAyLAorCQkJCQkgICBDTElQUEVEX1BMQU5FX1NNQUxMX1NJWkUpOworCisJCXRlc3RfcGxh bmVfY2xpcHBpbmdfc3F1YXJlKGRhdGEsIHBpcGUsIG91dHB1dCwgbW9kZSwKKwkJCQkJICAgbW9k ZS0+aGRpc3BsYXkgLSAyLAorCQkJCQkgICBtb2RlLT52ZGlzcGxheSAtIDIsCisJCQkJCSAgIENM SVBQRURfUExBTkVfU01BTExfU0laRSk7CisKKwkJY29ubmVjdGVkX291dHMrKzsKKwl9CisKKwlp Z3Rfc2tpcF9vbihjb25uZWN0ZWRfb3V0cyA9PSAwKTsKK30KKwogc3RhdGljIHZvaWQKIHJ1bl90 ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQogewpAQCAt NDEzLDYgKzgzOCw5IEBAIHJ1bl90ZXN0c19mb3JfcGlwZV9wbGFuZShkYXRhX3QgKmRhdGEsIGVu dW0gcGlwZSBwaXBlKQogCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKIAkJdGVzdF9w bGFuZV9wYW5uaW5nKGRhdGEsIHBpcGUsIFRFU1RfUEFOTklOR19CT1RUT01fUklHSFQgfAogCQkJ CQkgICAgICAgVEVTVF9TVVNQRU5EX1JFU1VNRSk7CisJaWd0X3N1YnRlc3RfZigicGxhbmUtY2xp cHBpbmctcGlwZS0lcy1wbGFuZXMiLAorCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkK KwkJdGVzdF9wbGFuZV9jbGlwcGluZyhkYXRhLCBwaXBlKTsKIH0KIAogCkBAIC00MjUsOCArODUz LDIxIEBAIGlndF9tYWluCiAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwogCiAJaWd0X2ZpeHR1 cmUgeworCQlpbnQgcmV0OworCiAJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3Rl cihEUklWRVJfSU5URUwpOwogCisJCWRhdGEuZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRh dGEuZHJtX2ZkKTsKKworCQlkYXRhLm1heF9jdXJ3ID0gNjQ7CisJCWRhdGEubWF4X2N1cmggPSA2 NDsKKwkJcmV0ID0gZHJtR2V0Q2FwKGRhdGEuZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9XSURUSCwK KwkJCQkmZGF0YS5tYXhfY3Vydyk7CisJCWlndF9hc3NlcnQocmV0ID09IDAgfHwgZXJybm8gPT0g RUlOVkFMKTsKKwkJcmV0ID0gZHJtR2V0Q2FwKGRhdGEuZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9I RUlHSFQsCisJCQkJJmRhdGEubWF4X2N1cmgpOworCQlpZ3RfYXNzZXJ0KHJldCA9PSAwIHx8IGVy cm5vID09IEVJTlZBTCk7CisKIAkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogCiAJ CWlndF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZHJtX2ZkKTsKLS0gCjIuMTMuMgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==