From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Matt Roper Date: Wed, 20 Feb 2019 16:41:51 -0800 Message-Id: <20190221004151.5763-1-matthew.d.roper@intel.com> In-Reply-To: <20190221003422.5413-2-matthew.d.roper@intel.com> References: <20190221003422.5413-2-matthew.d.roper@intel.com> Subject: [igt-dev] [PATCH i-g-t 2/2] tests/kms_crtc_background_color: overhaul to match upstream ABI (v5.1) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org, Heiko Stuebner , Daniel Vetter List-ID: Q1JUQyBiYWNrZ3JvdW5kIGNvbG9yIGtlcm5lbCBwYXRjaGVzIHdlcmUgd3JpdHRlbiBhYm91dCAy LjUgeWVhcnMgYWdvCmFuZCBmbG9hdGVkIG9uIHRoZSB1cHN0cmVhbSBtYWlsaW5nIGxpc3QsIGJ1 dCBzaW5jZSBubyBvcGVuc291cmNlCnVzZXJzcGFjZSBtYXRlcmlhbGl6ZWQsIHdlIG5ldmVyIGFj dHVhbGx5IG1lcmdlZCB0aGVtLiAgSG93ZXZlciB0aGUKY29ycmVzcG9uZGluZyBJR1QgdGVzdCBk aWQgZ2V0IG1lcmdlZCBhbmQgaGFzIGJhc2ljYWxseSBiZWVuIGRlYWQgY29kZQpldmVyIHNpbmNl LgoKQSBjb3VwbGUgeWVhcnMgbGF0ZXIgd2UgZmluYWxseSBoYXZlIGFuIG9wZW4gc291cmNlIHVz ZXJzcGFjZQooQ2hyb21lT1MpLCBzbyBsZXRzIHVwZGF0ZSB0aGUgSUdUIHRlc3QgdG8gbWF0Y2gg dGhlIEFCSSB0aGF0J3MgYWN0dWFsbHkKZ29pbmcgdXBzdHJlYW0gYW5kIHRvIHJlbW92ZSBzb21l IG9mIHRoZSBjcnVmdCBmcm9tIHRoZSBvcmlnaW5hbCB0ZXN0CnRoYXQgd291bGRuJ3QgYWN0dWFs bHkgd29yay4KCkl0J3Mgd29ydGggbm90aW5nIHRoYXQgQ1JDJ3MgZG9uJ3Qgc2VlbSB0byB3b3Jr IHByb3Blcmx5IG9uIEludGVsIGdlbjkuClRoZSBic3BlYyBkb2VzIHRlbGwgdXMgdGhhdCB3ZSBt dXN0IGhhdmUgb25lIHBsYW5lIGVuYWJsZWQgYmVmb3JlIHRha2luZwphIHBpcGUtbGV2ZWwgKCJk bXV4IikgQ1JDLCBzbyB0aGlzIHRlc3QgaXMgdmlvbGF0aW5nIHRoYXQgYnkgZGlzYWJsaW5nCmFs bCBwbGFuZXM7IGl0J3MgcXVpdGUgcG9zc2libGUgdGhhdCB0aGlzIGlzIHRoZSBzb3VyY2Ugb2Yg dGhlIENSQwptaXNtYXRjaC4gIElmIHJ1bm5pbmcgb24gYW4gSW50ZWwgcGxhdGZvcm0sIHlvdSBt YXkgd2FudCB0byBydW4gaW4KaW50ZXJhY3RpdmUgbW9kZSAoIi0taW50ZXJhY3RpdmUtZGVidWc9 Ymdjb2xvciAtLXNraXAtY3JjLWNvbXBhcmUiKSB0bwplbnN1cmUgdGhhdCB0aGUgY29sb3JzIGJl aW5nIGdlbmVyYXRlZCBhY3R1YWxseSBkbyBtYXRjaCB2aXN1YWxseSBzaW5jZQp0aGUgQ1JDJ3Mg Y2FuJ3QgYmUgdHJ1c3RlZC4KCnYyOgogLSBTd2FwIHJlZCBhbmQgYmx1ZSBvcmRlcmluZyBpbiBw cm9wZXJ0eSB2YWx1ZSB0byByZWZsZWN0IGNoYW5nZQogICBpbiB2MiBvZiBrZXJuZWwgc2VyaWVz LgoKdjM6CiAtIE1pbm9yIHVwZGF0ZXMgdG8gcHJvcG9zZWQgdWFwaSBoZWxwZXJzIChzL3JnYmEv YXJnYi8pLgoKdjQ6CiAtIEdlbmVyYWwgcmVzdHJ1Y3R1cmluZyBpbnRvIHBpcGUvY29sb3Igc3Vi dGVzdHMuCiAtIFVzZSBSR0IyMTAxMDEwIGZyYW1lYnVmZmVycyBmb3IgY29tcGFyaXNvbiBzbyB0 aGF0IHdlIG1hdGNoIHRoZSBiaXRzCiAgIG9mIHByZWNpc2lvbiB0aGF0IEludGVsIGhhcmR3YXJl IGJhY2tncm91bmQgY29sb3IgYWNjZXB0cwoKdjU6CiAtIFJlLWVuYWJsZSBDUkMgY29tcGFyaXNv bnM7IGp1c3QgYmVjYXVzZSB0aGVzZSBkb24ndCB3b3JrIG9uIEludGVsCiAgIGRvZXNuJ3QgbWVh biB3ZSBzaG91bGRuJ3QgdXNlIHRoZW0gb24gb3RoZXIgdmVuZG9ycycgcGxhdGZvcm1zCiAgIChE YW5pZWwpLgogLSBVc2UgRFJJVkVSX0FOWSByYXRoZXIgdGhhbiBEUklWRVJfSU5URUwuIChIZWlr byBTdHVlYm5lcikKCnY1LjE6CiAtIFVwZGF0ZSBjb21taXQgbWVzc2FnZSBib2R5IGRpc2N1c3Np b24gb2YgQ1JDIGlzc3Vlcy4KCkNjOiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpDYzog RGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpDYzogSGVpa28gU3R1ZWJuZXIgPGhlaWtv QHNudGVjaC5kZT4KU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHRlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYyB8IDI2MyArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygr KSwgMTM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0 X2ttcy5jCmluZGV4IDA4MGY5MGFlLi5jNTJlYzVlNiAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMu YworKysgYi9saWIvaWd0X2ttcy5jCkBAIC0xODAsNyArMTgwLDcgQEAgY29uc3QgY2hhciAqIGNv bnN0IGlndF9wbGFuZV9wcm9wX25hbWVzW0lHVF9OVU1fUExBTkVfUFJPUFNdID0gewogfTsKIAog Y29uc3QgY2hhciAqIGNvbnN0IGlndF9jcnRjX3Byb3BfbmFtZXNbSUdUX05VTV9DUlRDX1BST1BT XSA9IHsKLQlbSUdUX0NSVENfQkFDS0dST1VORF0gPSAiYmFja2dyb3VuZF9jb2xvciIsCisJW0lH VF9DUlRDX0JBQ0tHUk9VTkRdID0gIkJBQ0tHUk9VTkRfQ09MT1IiLAogCVtJR1RfQ1JUQ19DVE1d ID0gIkNUTSIsCiAJW0lHVF9DUlRDX0dBTU1BX0xVVF0gPSAiR0FNTUFfTFVUIiwKIAlbSUdUX0NS VENfR0FNTUFfTFVUX1NJWkVdID0gIkdBTU1BX0xVVF9TSVpFIiwKZGlmZiAtLWdpdCBhL3Rlc3Rz L2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYyBiL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRf Y29sb3IuYwppbmRleCAzZGYzNDAxZi4uNThjZGQ3YTkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19j cnRjX2JhY2tncm91bmRfY29sb3IuYworKysgYi90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2Nv bG9yLmMKQEAgLTI1LDE2NCArMjUsMTUzIEBACiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSA8 bWF0aC5oPgogCi0KIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGNydGMgYmFja2dyb3VuZCBj b2xvciBmZWF0dXJlIik7CiAKKy8qCisgKiBQYWludHMgYSBkZXNpcmVkIGNvbG9yIGludG8gYSBm dWxsLXNjcmVlbiBwcmltYXJ5IHBsYW5lIGFuZCB0aGVuIGNvbXBhcmVzCisgKiB0aGF0IENSQyB3 aXRoIHR1cm5pbmcgb2ZmIGFsbCBwbGFuZXMgYW5kIHNldHRpbmcgdGhlIENSVEMgYmFja2dyb3Vu ZCB0byB0aGUKKyAqIHNhbWUgY29sb3IuCisgKgorICogQXQgbGVhc3Qgb24gY3VycmVudCBJbnRl bCBwbGF0Zm9ybXMsIHRoZSBDUkMgdGVzdHMgYXBwZWFyIHRvIGFsd2F5cyBmYWlsLAorICogZXZl biB0aG91Z2ggdGhlIHJlc3VsdGluZyBwaXBlIG91dHB1dCBzZWVtcyB0byBiZSB0aGUgc2FtZS4g IFRoZSBic3BlYyB0ZWxscworICogdXMgdGhhdCB3ZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHBs YW5lIHR1cm5lZCBvbiB3aGVuIHRha2luZyBhIHBpcGUtbGV2ZWwKKyAqIENSQywgc28gdGhlIGZh Y3QgdGhhdCB3ZSdyZSB2aW9sYXRpbmcgdGhhdCBtYXkgZXhwbGFpbiB0aGUgZmFpbHVyZXMuICBJ ZgorICogeW91ciBwbGF0Zm9ybSBnaXZlcyBmYWlsdXJlcyBmb3IgYWxsIHRlc3RzLCB5b3UgbWF5 IHdhbnQgdG8gcnVuIHdpdGgKKyAqIC0taW50ZXJhY3RpdmUtZGVidWc9Ymdjb2xvciAtLXNraXAt Y3JjLWNvbXBhcmUgdG8gdmlzdWFsbHkgaW5zcGVjdCB0aGF0IHRoZQorICogYmFja2dyb3VuZCBj b2xvciBtYXRjaGVzIHRoZSBlcXVpdmFsZW50IHNvbGlkIHBsYW5lLgorICovCisKIHR5cGVkZWYg c3RydWN0IHsKLQlpbnQgZ2Z4X2ZkOwogCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKLQlzdHJ1Y3Qg aWd0X2ZiIGZiOwotCWlndF9jcmNfdCByZWZfY3JjOworCWludCBnZnhfZmQ7CisJaWd0X291dHB1 dF90ICpvdXRwdXQ7CiAJaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOworCWRybU1vZGVNb2RlSW5m byAqbW9kZTsKIH0gZGF0YV90OwogCi0jZGVmaW5lIEJMQUNLICAgICAgMHgwMDAwMDAgICAgICAg ICAgIC8qIEJHUiA4YnBjICovCi0jZGVmaW5lIENZQU4gICAgICAgMHhGRkZGMDAgICAgICAgICAg IC8qIEJHUiA4YnBjICovCi0jZGVmaW5lIFBVUlBMRSAgICAgMHhGRjAwRkYgICAgICAgICAgIC8q IEJHUiA4YnBjICovCi0jZGVmaW5lIFdISVRFICAgICAgMHhGRkZGRkYgICAgICAgICAgIC8qIEJH UiA4YnBjICovCi0KLSNkZWZpbmUgQkxBQ0s2NCAgICAweDAwMDAwMDAwMDAwMCAgICAgLyogQkdS IDE2YnBjICovCi0jZGVmaW5lIENZQU42NCAgICAgMHhGRkZGRkZGRjAwMDAgICAgIC8qIEJHUiAx NmJwYyAqLwotI2RlZmluZSBQVVJQTEU2NCAgIDB4RkZGRjAwMDBGRkZGICAgICAvKiBCR1IgMTZi cGMgKi8KLSNkZWZpbmUgWUVMTE9XNjQgICAweDAwMDBGRkZGRkZGRiAgICAgLyogQkdSIDE2YnBj ICovCi0jZGVmaW5lIFdISVRFNjQgICAgMHhGRkZGRkZGRkZGRkYgICAgIC8qIEJHUiAxNmJwYyAq LwotI2RlZmluZSBSRUQ2NCAgICAgIDB4MDAwMDAwMDBGRkZGICAgICAvKiBCR1IgMTZicGMgKi8K LSNkZWZpbmUgR1JFRU42NCAgICAweDAwMDBGRkZGMDAwMCAgICAgLyogQkdSIDE2YnBjICovCi0j ZGVmaW5lIEJMVUU2NCAgICAgMHhGRkZGMDAwMDAwMDAgICAgIC8qIEJHUiAxNmJwYyAqLwotCi1z dGF0aWMgdm9pZAotcGFpbnRfYmFja2dyb3VuZChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfZmIg KmZiLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCi0JCXVpbnQzMl90IGJhY2tncm91bmQsIGRvdWJs ZSBhbHBoYSkKKy8qCisgKiBMb2NhbCBjb3B5IG9mIGtlcm5lbCB1YXBpCisgKi8KK3N0YXRpYyBp bmxpbmUgX191NjQKK2xvY2FsX2FyZ2IoX191OCBicGMsIF9fdTE2IGFscGhhLCBfX3UxNiByZWQs IF9fdTE2IGdyZWVuLCBfX3UxNiBibHVlKQogewotCWNhaXJvX3QgKmNyOwotCWludCB3LCBoOwot CWRvdWJsZSByLCBnLCBiOwotCi0JdyA9IG1vZGUtPmhkaXNwbGF5OwotCWggPSBtb2RlLT52ZGlz cGxheTsKLQotCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmIp OworICAgICAgIGludCBtc2Jfc2hpZnQgPSAxNiAtIGJwYzsKIAotCS8qIFBhaW50IHdpdGggYmFj a2dyb3VuZCBjb2xvciAqLwotCXIgPSAoZG91YmxlKSAoYmFja2dyb3VuZCAmIDB4RkYpIC8gMjU1 LjA7Ci0JZyA9IChkb3VibGUpICgoYmFja2dyb3VuZCAmIDB4RkYwMCkgPj4gOCkgLyAyNTUuMDsK LQliID0gKGRvdWJsZSkgKChiYWNrZ3JvdW5kICYgMHhGRjAwMDApID4+IDE2KSAvIDI1NS4wOwot CWlndF9wYWludF9jb2xvcl9hbHBoYShjciwgMCwgMCwgdywgaCwgciwgZywgYiwgYWxwaGEpOwot Ci0JaWd0X3B1dF9jYWlyb19jdHgoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmIsIGNyKTsKKyAgICAg ICByZXR1cm4gKF9fdTY0KWFscGhhIDw8IG1zYl9zaGlmdCA8PCA0OCB8CisgICAgICAgICAgICAg IChfX3U2NClyZWQgICA8PCBtc2Jfc2hpZnQgPDwgMzIgfAorICAgICAgICAgICAgICAoX191NjQp Z3JlZW4gPDwgbXNiX3NoaWZ0IDw8IDE2IHwKKyAgICAgICAgICAgICAgKF9fdTY0KWJsdWUgIDw8 IG1zYl9zaGlmdDsKIH0KIAotc3RhdGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwg aWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlLAotCQkJaWd0X3BsYW5lX3QgKnBs YW5lLCBpbnQgb3BhcXVlX2J1ZmZlciwgaW50IHBsYW5lX2NvbG9yLAotCQkJdWludDY0X3QgcGlw ZV9iYWNrZ3JvdW5kX2NvbG9yKQorc3RhdGljIHZvaWQgdGVzdF9iYWNrZ3JvdW5kKGRhdGFfdCAq ZGF0YSwgZW51bSBwaXBlIHBpcGUsIGludCB3LCBpbnQgaCwKKwkJCSAgICBfX3U2NCByLCBfX3U2 NCBnLCBfX3U2NCBiKQogewotCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKLQlpZ3RfZGlzcGxheV90 ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Ci0JaW50IGZiX2lkOwotCWRvdWJsZSBhbHBoYTsK LQotCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKLQotCS8qIGNyZWF0ZSB0aGUg cGlwZV9jcmMgb2JqZWN0IGZvciB0aGlzIHBpcGUgKi8KLQlpZ3RfcGlwZV9jcmNfZnJlZShkYXRh LT5waXBlX2NyYyk7Ci0JZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmdm eF9mZCwgcGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOwotCi0JbW9kZSA9IGlndF9v dXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKLQotCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5n ZnhfZmQsCi0JCQltb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCi0JCQlEUk1fRk9STUFU X1hSR0I4ODg4LAotCQkJTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwgLyogdGlsZWQgKi8KLQkJ CSZkYXRhLT5mYik7Ci0JaWd0X2Fzc2VydChmYl9pZCk7Ci0KLQkvKiBUbyBtYWtlIEZCIHBpeGVs IHdpbiB3aXRoIGJhY2tncm91bmQgY29sb3IsIHNldCBhbHBoYSBhcyBmdWxsIG9wYXF1ZSAqLwot CWlndF9waXBlX3NldF9wcm9wX3ZhbHVlKGRpc3BsYXksIHBpcGUsIElHVF9DUlRDX0JBQ0tHUk9V TkQsIHBpcGVfYmFja2dyb3VuZF9jb2xvcik7Ci0JaWYgKG9wYXF1ZV9idWZmZXIpCi0JCWFscGhh ID0gMS4wOyAgICAvKiBhbHBoYSAxIGlzIGZ1bGx5IG9wcXVlICovCi0JZWxzZQotCQlhbHBoYSA9 IDAuMDsgICAgLyogYWxwaGEgMCBpcyBmdWxseSB0cmFuc3BhcmVudCAqLwotCXBhaW50X2JhY2tn cm91bmQoZGF0YSwgJmRhdGEtPmZiLCBtb2RlLCBwbGFuZV9jb2xvciwgYWxwaGEpOwotCi0JaWd0 X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmZiKTsKLQlpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwotfQotCi1zdGF0aWMgdm9pZCBjbGVhbnVwX2NydGMo ZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBsYW5lKQot ewotCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKLQotCWlndF9waXBl X2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKLQlkYXRhLT5waXBlX2NyYyA9IE5VTEw7Ci0KLQlp Z3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPmZiKTsKLQotCWlndF9waXBlX29ial9z ZXRfcHJvcF92YWx1ZShwbGFuZS0+cGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgQkxBQ0s2NCk7 CisJaWd0X2NyY190IHBsYW5lX2NyYywgYmdfY3JjOworCXN0cnVjdCBpZ3RfZmIgY29sb3JmYjsK KwlpZ3RfcGxhbmVfdCAqcGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGRhdGEtPm91 dHB1dCwKKwkJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKworCisJLyogRmls bCB0aGUgcHJpbWFyeSBwbGFuZSBhbmQgc2V0IHRoZSBiYWNrZ3JvdW5kIHRvIHRoZSBzYW1lIGNv bG9yICovCisJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5nZnhfZmQsIHcsIGgsIERSTV9GT1JN QVRfWFJHQjIxMDEwMTAsCisJCQkgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAg ICAoZG91YmxlKXIgLyAweEZGRkYsCisJCQkgICAgKGRvdWJsZSlnIC8gMHhGRkZGLAorCQkJICAg IChkb3VibGUpYiAvIDB4RkZGRiwKKwkJCSAgICAmY29sb3JmYik7CisJaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgJmNvbG9yZmIpOworCWlndF9waXBlX3NldF9wcm9wX3ZhbHVlKCZkYXRhLT5kaXNw bGF5LCBwaXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5ELAorCQkJCWxvY2FsX2FyZ2IoMTYsIDB4ZmZm ZiwgciwgZywgYikpOworCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1J VF9BVE9NSUMpOworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJnBs YW5lX2NyYyk7CisJaWd0X2RlYnVnX3dhaXRfZm9yX2tleXByZXNzKCJiZ2NvbG9yIik7CisKKwkv KiBUdXJuIG9mZiB0aGUgcHJpbWFyeSBwbGFuZSBzbyBvbmx5IGJnIHNob3dzICovCiAJaWd0X3Bs YW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Ci0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJ UEVfQU5ZKTsKLQotCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNB TCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7 CisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmYmdfY3JjKTsKKwlp Z3RfZGVidWdfd2FpdF9mb3Jfa2V5cHJlc3MoImJnY29sb3IiKTsKKworCS8qCisJICogVGhlIGZv bGxvd2luZyB0ZXN0IHJlbGllcyBvbiBoYXJkd2FyZSB0aGF0IGdlbmVyYXRlcyB2YWxpZCBDUkNz CisJICogZXZlbiB3aGVuIG5vIHBsYW5lcyBhcmUgb24uICBTYWRseSwgdGhpcyBkb2Vzbid0IGFw cGVhciB0byBiZSB0aGUKKwkgKiBjYXNlIGZvciBjdXJyZW50IEludGVsIHBsYXRmb3JtczsgcGlw ZSBDUkMncyBuZXZlciBtYXRjaCBiZ2NvbG9yCisJICogQ1JDJ3MsIGxpa2VseSBiZWNhdXNlIHdl J3JlIHZpb2xhdGluZyB0aGUgYnNwZWMncyBndWlkYW5jZSB0aGF0IHRoZXJlCisJICogbXVzdCBh bHdheXMgYmUgYXQgbGVhc3Qgb25lIHJlYWwgcGxhbmUgdHVybmVkIG9uIHdoZW4gdGFraW5nIHRo ZQorCSAqIHBpcGUtbGV2ZWwgKCJkbXV4IikgQ1JDLgorCSAqLworCWlndF9hc3NlcnRfY3JjX2Vx dWFsKCZwbGFuZV9jcmMsICZiZ19jcmMpOwogfQogCi1zdGF0aWMgdm9pZCB0ZXN0X2NydGNfYmFj a2dyb3VuZChkYXRhX3QgKmRhdGEpCitpZ3RfbWFpbgogewotCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlkYXRhX3QgZGF0YSA9IHt9OwogCWlndF9vdXRwdXRfdCAq b3V0cHV0OworCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlpbnQgdywgaDsKIAllbnVtIHBpcGUg cGlwZTsKLQlpbnQgdmFsaWRfdGVzdHMgPSAwOwotCi0JZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlk X291dHB1dChkaXNwbGF5LCBwaXBlLCBvdXRwdXQpIHsKLQkJaWd0X3BsYW5lX3QgKnBsYW5lOwot Ci0JCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKLQotCQlwbGFuZSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKLQkJ aWd0X3JlcXVpcmUoaWd0X3BpcGVfaGFzX3Byb3AoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFD S0dST1VORCkpOwotCi0JCXByZXBhcmVfY3J0YyhkYXRhLCBvdXRwdXQsIHBpcGUsIHBsYW5lLCAx LCBQVVJQTEUsIEJMQUNLNjQpOwotCi0JCS8qIE5vdyBzZXQgYmFja2dyb3VuZCB3aXRob3V0IHVz aW5nIGEgcGxhbmUsIGkuZS4sCi0JCSAqIERpc2FibGUgdGhlIHBsYW5lIHRvIGxldCBodyBiYWNr Z3JvdW5kIGNvbG9yIHdpbiBibGVuZC4gKi8KLQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVM TCk7Ci0JCWlndF9waXBlX3NldF9wcm9wX3ZhbHVlKGRpc3BsYXksIHBpcGUsIElHVF9DUlRDX0JB Q0tHUk9VTkQsIFBVUlBMRTY0KTsKLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01N SVRfVU5JVkVSU0FMKTsKLQotCQkvKiBUcnkgZmV3IG90aGVyIGJhY2tncm91bmQgY29sb3JzICov Ci0JCWlndF9waXBlX3NldF9wcm9wX3ZhbHVlKGRpc3BsYXksIHBpcGUsIElHVF9DUlRDX0JBQ0tH Uk9VTkQsIENZQU42NCk7Ci0JCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VO SVZFUlNBTCk7Ci0KLQkJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdU X0NSVENfQkFDS0dST1VORCwgWUVMTE9XNjQpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9VTklWRVJTQUwpOwogCi0JCWlndF9waXBlX3NldF9wcm9wX3ZhbHVlKGRpc3Bs YXksIHBpcGUsIElHVF9DUlRDX0JBQ0tHUk9VTkQsIFJFRDY0KTsKLQkJaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZml4dHVyZSB7CisJCWRhdGEu Z2Z4X2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5ZKTsKKwkJa21zdGVzdF9z ZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogCi0JCWlndF9waXBlX3NldF9wcm9wX3ZhbHVlKGRpc3Bs YXksIHBpcGUsIElHVF9DUlRDX0JBQ0tHUk9VTkQsIEdSRUVONjQpOwotCQlpZ3RfZGlzcGxheV9j b21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwotCi0JCWlndF9waXBlX3NldF9wcm9w X3ZhbHVlKGRpc3BsYXksIHBpcGUsIElHVF9DUlRDX0JBQ0tHUk9VTkQsIEJMVUU2NCk7Ci0JCWln dF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Ci0KLQkJaWd0X3Bp cGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgV0hJ VEU2NCk7Ci0JCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7 Ci0KLQkJdmFsaWRfdGVzdHMrKzsKLQkJY2xlYW51cF9jcnRjKGRhdGEsIG91dHB1dCwgcGxhbmUp OworCQlpZ3RfcmVxdWlyZV9waXBlX2NyYyhkYXRhLmdmeF9mZCk7CisJCWlndF9kaXNwbGF5X3Jl cXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5nZnhfZmQpOwogCX0KLQlpZ3RfcmVxdWlyZV9mKHZh bGlkX3Rlc3RzLCAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IgY29tYmluYXRpb25zIGZvdW5kXG4i KTsKLX0KIAotaWd0X3NpbXBsZV9tYWluCi17Ci0JZGF0YV90IGRhdGEgPSB7fTsKLQotCWlndF9z a2lwX29uX3NpbXVsYXRpb24oKTsKLQotCWRhdGEuZ2Z4X2ZkID0gZHJtX29wZW5fZHJpdmVyKERS SVZFUl9JTlRFTCk7Ci0JaWd0X3JlcXVpcmVfcGlwZV9jcmMoZGF0YS5nZnhfZmQpOwotCWlndF9k aXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxheSwgZGF0YS5nZnhfZmQpOwotCi0JdGVzdF9jcnRj X2JhY2tncm91bmQoJmRhdGEpOworCWZvcl9lYWNoX3BpcGVfc3RhdGljKHBpcGUpIGlndF9zdWJ0 ZXN0X2dyb3VwIHsKKwkJaWd0X2ZpeHR1cmUgeworCQkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRw dXRfb25fcGlwZSgmZGF0YS5kaXNwbGF5LCBwaXBlKTsKKwkJCWlndF9yZXF1aXJlKGlndF9waXBl X2hhc19wcm9wKCZkYXRhLmRpc3BsYXksIHBpcGUsCisJCQkJCQkgICAgICBJR1RfQ1JUQ19CQUNL R1JPVU5EKSk7CisKKwkJCW91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlwZSgm ZGF0YS5kaXNwbGF5LAorCQkJCQkJCQlwaXBlKTsKKwkJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0 cHV0LCBwaXBlKTsKKwkJCWRhdGEub3V0cHV0ID0gb3V0cHV0OworCisJCQltb2RlID0gaWd0X291 dHB1dF9nZXRfbW9kZShvdXRwdXQpOworCQkJdyA9IG1vZGUtPmhkaXNwbGF5OworCQkJaCA9IG1v ZGUtPnZkaXNwbGF5OworCisJCQlkYXRhLnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRh LmdmeF9mZCwgcGlwZSwKKwkJCQkJCQkgIElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKKwkJ fQorCisJCWlndF9zdWJ0ZXN0X2YoImJhY2tncm91bmQtY29sb3ItcGlwZS0lcy1ibGFjayIsCisJ CQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCXRlc3RfYmFja2dyb3VuZCgmZGF0 YSwgcGlwZSwgdywgaCwKKwkJCQkJMCwgMCwgMCk7CisKKwkJaWd0X3N1YnRlc3RfZigiYmFja2dy b3VuZC1jb2xvci1waXBlLSVzLXdoaXRlIiwKKwkJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBp cGUpKQorCQkJdGVzdF9iYWNrZ3JvdW5kKCZkYXRhLCBwaXBlLCB3LCBoLAorCQkJCQkweEZGRkYs IDB4RkZGRiwgMHhGRkZGKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJiYWNrZ3JvdW5kLWNvbG9yLXBp cGUtJXMtcmVkIiwKKwkJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQorCQkJdGVzdF9i YWNrZ3JvdW5kKCZkYXRhLCBwaXBlLCB3LCBoLAorCQkJCQkweEZGRkYsIDAsIDApOworCisJCWln dF9zdWJ0ZXN0X2YoImJhY2tncm91bmQtY29sb3ItcGlwZS0lcy1ncmVlbiIsCisJCQkgICAgICBr bXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKworCQkJdGVzdF9iYWNrZ3JvdW5kKCZkYXRhLCBwaXBl LCB3LCBoLAorCQkJCQkwLCAweEZGRkYsIDApOworCisJCWlndF9zdWJ0ZXN0X2YoImJhY2tncm91 bmQtY29sb3ItcGlwZS0lcy1ibHVlIiwKKwkJCSAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUp KQorCQkJdGVzdF9iYWNrZ3JvdW5kKCZkYXRhLCBwaXBlLCB3LCBoLAorCQkJCQkwLCAwLCAweEZG RkYpOworCisJCWlndF9maXh0dXJlIHsKKwkJCWlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLmRpc3Bs YXkpOworCQkJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS5waXBlX2NyYyk7CisJCQlkYXRhLnBpcGVf Y3JjID0gTlVMTDsKKwkJfQorCX0KIAotCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7 CisJaWd0X2ZpeHR1cmUgeworCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOworCX0K IH0KLS0gCjIuMTQuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2