From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Matt Roper Date: Wed, 20 Feb 2019 16:34:22 -0800 Message-Id: <20190221003422.5413-2-matthew.d.roper@intel.com> In-Reply-To: <20190221003422.5413-1-matthew.d.roper@intel.com> References: <20190221002857.5007-1-matthew.d.roper@intel.com> <20190221003422.5413-1-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) 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 bHkgd29yay4KCkl0J3Mgd29ydGggbm90aW5nIHRoYXQgd2UgZG9uJ3Qgc2VlbSB0byBiZSBhYmxl IHRvIHRlc3QgdGhpcyBmZWF0dXJlCndpdGggQ1JDJ3MsIGF0IGxlYXN0IG9uIEludGVsIGdlbjku ICBPcmlnaW5hbGx5IHdlIHdhbnRlZCB0byBkcmF3IGEKY29sb3IgaW50byBhIHBsYW5lJ3MgRkIg KHdpdGggQ2Fpcm8pIGFuZCB0aGVuIGNvbXBhcmUgdGhlIENSQyB0byB0dXJuaW5nCm9mZiBhbGwg cGxhbmVzIGFuZCBqdXN0IHNldHRpbmcgdGhlIENSVEMgYmFja2dyb3VuZCB0byB0aGUgc2FtZSBj b2xvci4KSG93ZXZlciB0aGUgcHJlY2lzaW9uIGFuZCByb3VuZGluZyBvZiB0aGUgY29sb3IgY29t cG9uZW50cyBjYXVzZXMgdGhlCkNSQydzIHRvIGNvbWUgb3V0IGRpZmZlcmVudGx5LCBldmVuIHRo b3VnaCB0aGUgZW5kIHJlc3VsdCBpcyB2aXN1YWxseQppZGVudGljYWwuICBTbyBhdCB0aGUgbW9t ZW50IHRoaXMgdGVzdCBpcyBtYWlubHkgdXNlZnVsIGZvciB2aXN1YWwKaW5zcGVjdGlvbiBpbiBp bnRlcmFjdGl2ZSBtb2RlLgoKdjI6CiAtIFN3YXAgcmVkIGFuZCBibHVlIG9yZGVyaW5nIGluIHBy b3BlcnR5IHZhbHVlIHRvIHJlZmxlY3QgY2hhbmdlCiAgIGluIHYyIG9mIGtlcm5lbCBzZXJpZXMu Cgp2MzoKIC0gTWlub3IgdXBkYXRlcyB0byBwcm9wb3NlZCB1YXBpIGhlbHBlcnMgKHMvcmdiYS9h cmdiLykuCgp2NDoKIC0gR2VuZXJhbCByZXN0cnVjdHVyaW5nIGludG8gcGlwZS9jb2xvciBzdWJ0 ZXN0cy4KIC0gVXNlIFJHQjIxMDEwMTAgZnJhbWVidWZmZXJzIGZvciBjb21wYXJpc29uIHNvIHRo YXQgd2UgbWF0Y2ggdGhlIGJpdHMKICAgb2YgcHJlY2lzaW9uIHRoYXQgSW50ZWwgaGFyZHdhcmUg YmFja2dyb3VuZCBjb2xvciBhY2NlcHRzCgp2NToKIC0gUmUtZW5hYmxlIENSQyBjb21wYXJpc29u czsganVzdCBiZWNhdXNlIHRoZXNlIGRvbid0IHdvcmsgb24gSW50ZWwKICAgZG9lc24ndCBtZWFu IHdlIHNob3VsZG4ndCB1c2UgdGhlbSBvbiBvdGhlciB2ZW5kb3JzJyBwbGF0Zm9ybXMKICAgKERh bmllbCkuCiAtIFVzZSBEUklWRVJfQU5ZIHJhdGhlciB0aGFuIERSSVZFUl9JTlRFTC4gKEhlaWtv IFN0dWVibmVyKQoKQ2M6IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBEYW5pZWwg VmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+CkNjOiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNo LmRlPgpTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29t PgotLS0KIGxpYi9pZ3Rfa21zLmMgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogdGVzdHMv a21zX2NydGNfYmFja2dyb3VuZF9jb2xvci5jIHwgMjYzICsrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCAxMzgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMK aW5kZXggMDgwZjkwYWUuLmM1MmVjNWU2IDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBi L2xpYi9pZ3Rfa21zLmMKQEAgLTE4MCw3ICsxODAsNyBAQCBjb25zdCBjaGFyICogY29uc3QgaWd0 X3BsYW5lX3Byb3BfbmFtZXNbSUdUX05VTV9QTEFORV9QUk9QU10gPSB7CiB9OwogCiBjb25zdCBj aGFyICogY29uc3QgaWd0X2NydGNfcHJvcF9uYW1lc1tJR1RfTlVNX0NSVENfUFJPUFNdID0gewot CVtJR1RfQ1JUQ19CQUNLR1JPVU5EXSA9ICJiYWNrZ3JvdW5kX2NvbG9yIiwKKwlbSUdUX0NSVENf QkFDS0dST1VORF0gPSAiQkFDS0dST1VORF9DT0xPUiIsCiAJW0lHVF9DUlRDX0NUTV0gPSAiQ1RN IiwKIAlbSUdUX0NSVENfR0FNTUFfTFVUXSA9ICJHQU1NQV9MVVQiLAogCVtJR1RfQ1JUQ19HQU1N QV9MVVRfU0laRV0gPSAiR0FNTUFfTFVUX1NJWkUiLApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Ny dGNfYmFja2dyb3VuZF9jb2xvci5jIGIvdGVzdHMva21zX2NydGNfYmFja2dyb3VuZF9jb2xvci5j CmluZGV4IDNkZjM0MDFmLi41OGNkZDdhOSAxMDA2NDQKLS0tIGEvdGVzdHMva21zX2NydGNfYmFj a2dyb3VuZF9jb2xvci5jCisrKyBiL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYwpA QCAtMjUsMTY0ICsyNSwxNTMgQEAKICNpbmNsdWRlICJpZ3QuaCIKICNpbmNsdWRlIDxtYXRoLmg+ CiAKLQogSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgY3J0YyBiYWNrZ3JvdW5kIGNvbG9yIGZl YXR1cmUiKTsKIAorLyoKKyAqIFBhaW50cyBhIGRlc2lyZWQgY29sb3IgaW50byBhIGZ1bGwtc2Ny ZWVuIHByaW1hcnkgcGxhbmUgYW5kIHRoZW4gY29tcGFyZXMKKyAqIHRoYXQgQ1JDIHdpdGggdHVy bmluZyBvZmYgYWxsIHBsYW5lcyBhbmQgc2V0dGluZyB0aGUgQ1JUQyBiYWNrZ3JvdW5kIHRvIHRo ZQorICogc2FtZSBjb2xvci4KKyAqCisgKiBBdCBsZWFzdCBvbiBjdXJyZW50IEludGVsIHBsYXRm b3JtcywgdGhlIENSQyB0ZXN0cyBhcHBlYXIgdG8gYWx3YXlzIGZhaWwsCisgKiBldmVuIHRob3Vn aCB0aGUgcmVzdWx0aW5nIHBpcGUgb3V0cHV0IHNlZW1zIHRvIGJlIHRoZSBzYW1lLiAgVGhlIGJz cGVjIHRlbGxzCisgKiB1cyB0aGF0IHdlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgcGxhbmUgdHVy bmVkIG9uIHdoZW4gdGFraW5nIGEgcGlwZS1sZXZlbAorICogQ1JDLCBzbyB0aGUgZmFjdCB0aGF0 IHdlJ3JlIHZpb2xhdGluZyB0aGF0IG1heSBleHBsYWluIHRoZSBmYWlsdXJlcy4gIElmCisgKiB5 b3VyIHBsYXRmb3JtIGdpdmVzIGZhaWx1cmVzIGZvciBhbGwgdGVzdHMsIHlvdSBtYXkgd2FudCB0 byBydW4gd2l0aAorICogLS1pbnRlcmFjdGl2ZS1kZWJ1Zz1iZ2NvbG9yIC0tc2tpcC1jcmMtY29t cGFyZSB0byB2aXN1YWxseSBpbnNwZWN0IHRoYXQgdGhlCisgKiBiYWNrZ3JvdW5kIGNvbG9yIG1h dGNoZXMgdGhlIGVxdWl2YWxlbnQgc29saWQgcGxhbmUuCisgKi8KKwogdHlwZWRlZiBzdHJ1Y3Qg ewotCWludCBnZnhfZmQ7CiAJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5OwotCXN0cnVjdCBpZ3RfZmIg ZmI7Ci0JaWd0X2NyY190IHJlZl9jcmM7CisJaW50IGdmeF9mZDsKKwlpZ3Rfb3V0cHV0X3QgKm91 dHB1dDsKIAlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisJZHJtTW9kZU1vZGVJbmZvICptb2Rl OwogfSBkYXRhX3Q7CiAKLSNkZWZpbmUgQkxBQ0sgICAgICAweDAwMDAwMCAgICAgICAgICAgLyog QkdSIDhicGMgKi8KLSNkZWZpbmUgQ1lBTiAgICAgICAweEZGRkYwMCAgICAgICAgICAgLyogQkdS IDhicGMgKi8KLSNkZWZpbmUgUFVSUExFICAgICAweEZGMDBGRiAgICAgICAgICAgLyogQkdSIDhi cGMgKi8KLSNkZWZpbmUgV0hJVEUgICAgICAweEZGRkZGRiAgICAgICAgICAgLyogQkdSIDhicGMg Ki8KLQotI2RlZmluZSBCTEFDSzY0ICAgIDB4MDAwMDAwMDAwMDAwICAgICAvKiBCR1IgMTZicGMg Ki8KLSNkZWZpbmUgQ1lBTjY0ICAgICAweEZGRkZGRkZGMDAwMCAgICAgLyogQkdSIDE2YnBjICov Ci0jZGVmaW5lIFBVUlBMRTY0ICAgMHhGRkZGMDAwMEZGRkYgICAgIC8qIEJHUiAxNmJwYyAqLwot I2RlZmluZSBZRUxMT1c2NCAgIDB4MDAwMEZGRkZGRkZGICAgICAvKiBCR1IgMTZicGMgKi8KLSNk ZWZpbmUgV0hJVEU2NCAgICAweEZGRkZGRkZGRkZGRiAgICAgLyogQkdSIDE2YnBjICovCi0jZGVm aW5lIFJFRDY0ICAgICAgMHgwMDAwMDAwMEZGRkYgICAgIC8qIEJHUiAxNmJwYyAqLwotI2RlZmlu ZSBHUkVFTjY0ICAgIDB4MDAwMEZGRkYwMDAwICAgICAvKiBCR1IgMTZicGMgKi8KLSNkZWZpbmUg QkxVRTY0ICAgICAweEZGRkYwMDAwMDAwMCAgICAgLyogQkdSIDE2YnBjICovCi0KLXN0YXRpYyB2 b2lkCi1wYWludF9iYWNrZ3JvdW5kKGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9mYiAqZmIsIGRy bU1vZGVNb2RlSW5mbyAqbW9kZSwKLQkJdWludDMyX3QgYmFja2dyb3VuZCwgZG91YmxlIGFscGhh KQorLyoKKyAqIExvY2FsIGNvcHkgb2Yga2VybmVsIHVhcGkKKyAqLworc3RhdGljIGlubGluZSBf X3U2NAorbG9jYWxfYXJnYihfX3U4IGJwYywgX191MTYgYWxwaGEsIF9fdTE2IHJlZCwgX191MTYg Z3JlZW4sIF9fdTE2IGJsdWUpCiB7Ci0JY2Fpcm9fdCAqY3I7Ci0JaW50IHcsIGg7Ci0JZG91Ymxl IHIsIGcsIGI7Ci0KLQl3ID0gbW9kZS0+aGRpc3BsYXk7Ci0JaCA9IG1vZGUtPnZkaXNwbGF5Owot Ci0JY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5nZnhfZmQsICZkYXRhLT5mYik7CisgICAg ICAgaW50IG1zYl9zaGlmdCA9IDE2IC0gYnBjOwogCi0JLyogUGFpbnQgd2l0aCBiYWNrZ3JvdW5k IGNvbG9yICovCi0JciA9IChkb3VibGUpIChiYWNrZ3JvdW5kICYgMHhGRikgLyAyNTUuMDsKLQln ID0gKGRvdWJsZSkgKChiYWNrZ3JvdW5kICYgMHhGRjAwKSA+PiA4KSAvIDI1NS4wOwotCWIgPSAo ZG91YmxlKSAoKGJhY2tncm91bmQgJiAweEZGMDAwMCkgPj4gMTYpIC8gMjU1LjA7Ci0JaWd0X3Bh aW50X2NvbG9yX2FscGhhKGNyLCAwLCAwLCB3LCBoLCByLCBnLCBiLCBhbHBoYSk7Ci0KLQlpZ3Rf cHV0X2NhaXJvX2N0eChkYXRhLT5nZnhfZmQsICZkYXRhLT5mYiwgY3IpOworICAgICAgIHJldHVy biAoX191NjQpYWxwaGEgPDwgbXNiX3NoaWZ0IDw8IDQ4IHwKKyAgICAgICAgICAgICAgKF9fdTY0 KXJlZCAgIDw8IG1zYl9zaGlmdCA8PCAzMiB8CisgICAgICAgICAgICAgIChfX3U2NClncmVlbiA8 PCBtc2Jfc2hpZnQgPDwgMTYgfAorICAgICAgICAgICAgICAoX191NjQpYmx1ZSAgPDwgbXNiX3No aWZ0OwogfQogCi1zdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCi0JCQlpZ3RfcGxhbmVfdCAqcGxhbmUsIGlu dCBvcGFxdWVfYnVmZmVyLCBpbnQgcGxhbmVfY29sb3IsCi0JCQl1aW50NjRfdCBwaXBlX2JhY2tn cm91bmRfY29sb3IpCitzdGF0aWMgdm9pZCB0ZXN0X2JhY2tncm91bmQoZGF0YV90ICpkYXRhLCBl bnVtIHBpcGUgcGlwZSwgaW50IHcsIGludCBoLAorCQkJICAgIF9fdTY0IHIsIF9fdTY0IGcsIF9f dTY0IGIpCiB7Ci0JZHJtTW9kZU1vZGVJbmZvICptb2RlOwotCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS0+ZGlzcGxheTsKLQlpbnQgZmJfaWQ7Ci0JZG91YmxlIGFscGhhOwotCi0JaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwotCi0JLyogY3JlYXRlIHRoZSBwaXBlX2Ny YyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLwotCWlndF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVf Y3JjKTsKLQlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0YS0+Z2Z4X2ZkLCBw aXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Ci0KLQltb2RlID0gaWd0X291dHB1dF9n ZXRfbW9kZShvdXRwdXQpOwotCi0JZmJfaWQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmdmeF9mZCwK LQkJCW1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKLQkJCURSTV9GT1JNQVRfWFJHQjg4 ODgsCi0JCQlMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAvKiB0aWxlZCAqLwotCQkJJmRhdGEt PmZiKTsKLQlpZ3RfYXNzZXJ0KGZiX2lkKTsKLQotCS8qIFRvIG1ha2UgRkIgcGl4ZWwgd2luIHdp dGggYmFja2dyb3VuZCBjb2xvciwgc2V0IGFscGhhIGFzIGZ1bGwgb3BhcXVlICovCi0JaWd0X3Bp cGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgcGlw ZV9iYWNrZ3JvdW5kX2NvbG9yKTsKLQlpZiAob3BhcXVlX2J1ZmZlcikKLQkJYWxwaGEgPSAxLjA7 ICAgIC8qIGFscGhhIDEgaXMgZnVsbHkgb3BxdWUgKi8KLQllbHNlCi0JCWFscGhhID0gMC4wOyAg ICAvKiBhbHBoYSAwIGlzIGZ1bGx5IHRyYW5zcGFyZW50ICovCi0JcGFpbnRfYmFja2dyb3VuZChk YXRhLCAmZGF0YS0+ZmIsIG1vZGUsIHBsYW5lX2NvbG9yLCBhbHBoYSk7Ci0KLQlpZ3RfcGxhbmVf c2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmIpOwotCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwg Q09NTUlUX1VOSVZFUlNBTCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFudXBfY3J0YyhkYXRhX3Qg KmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfcGxhbmVfdCAqcGxhbmUpCi17Ci0JaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OwotCi0JaWd0X3BpcGVfY3JjX2Zy ZWUoZGF0YS0+cGlwZV9jcmMpOwotCWRhdGEtPnBpcGVfY3JjID0gTlVMTDsKLQotCWlndF9yZW1v dmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmIpOwotCi0JaWd0X3BpcGVfb2JqX3NldF9wcm9w X3ZhbHVlKHBsYW5lLT5waXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5ELCBCTEFDSzY0KTsKKwlpZ3Rf Y3JjX3QgcGxhbmVfY3JjLCBiZ19jcmM7CisJc3RydWN0IGlndF9mYiBjb2xvcmZiOworCWlndF9w bGFuZV90ICpwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoZGF0YS0+b3V0cHV0LAor CQkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCisKKwkvKiBGaWxsIHRoZSBw cmltYXJ5IHBsYW5lIGFuZCBzZXQgdGhlIGJhY2tncm91bmQgdG8gdGhlIHNhbWUgY29sb3IgKi8K KwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmdmeF9mZCwgdywgaCwgRFJNX0ZPUk1BVF9YUkdC MjEwMTAxMCwKKwkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAgIChkb3Vi bGUpciAvIDB4RkZGRiwKKwkJCSAgICAoZG91YmxlKWcgLyAweEZGRkYsCisJCQkgICAgKGRvdWJs ZSliIC8gMHhGRkZGLAorCQkJICAgICZjb2xvcmZiKTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCAmY29sb3JmYik7CisJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoJmRhdGEtPmRpc3BsYXksIHBp cGUsIElHVF9DUlRDX0JBQ0tHUk9VTkQsCisJCQkJbG9jYWxfYXJnYigxNiwgMHhmZmZmLCByLCBn LCBiKSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01J Qyk7CisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmcGxhbmVfY3Jj KTsKKwlpZ3RfZGVidWdfd2FpdF9mb3Jfa2V5cHJlc3MoImJnY29sb3IiKTsKKworCS8qIFR1cm4g b2ZmIHRoZSBwcmltYXJ5IHBsYW5lIHNvIG9ubHkgYmcgc2hvd3MgKi8KIAlpZ3RfcGxhbmVfc2V0 X2ZiKHBsYW5lLCBOVUxMKTsKLQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkp OwotCi0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlp Z3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKwlpZ3Rf cGlwZV9jcmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZiZ19jcmMpOworCWlndF9kZWJ1 Z193YWl0X2Zvcl9rZXlwcmVzcygiYmdjb2xvciIpOworCisJLyoKKwkgKiBUaGUgZm9sbG93aW5n IHRlc3QgcmVsaWVzIG9uIGhhcmR3YXJlIHRoYXQgZ2VuZXJhdGVzIHZhbGlkIENSQ3MKKwkgKiBl dmVuIHdoZW4gbm8gcGxhbmVzIGFyZSBvbi4gIFNhZGx5LCB0aGlzIGRvZXNuJ3QgYXBwZWFyIHRv IGJlIHRoZQorCSAqIGNhc2UgZm9yIGN1cnJlbnQgSW50ZWwgcGxhdGZvcm1zOyBwaXBlIENSQydz IG5ldmVyIG1hdGNoIGJnY29sb3IKKwkgKiBDUkMncywgbGlrZWx5IGJlY2F1c2Ugd2UncmUgdmlv bGF0aW5nIHRoZSBic3BlYydzIGd1aWRhbmNlIHRoYXQgdGhlcmUKKwkgKiBtdXN0IGFsd2F5cyBi ZSBhdCBsZWFzdCBvbmUgcmVhbCBwbGFuZSB0dXJuZWQgb24gd2hlbiB0YWtpbmcgdGhlCisJICog cGlwZS1sZXZlbCAoImRtdXgiKSBDUkMuCisJICovCisJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJnBs YW5lX2NyYywgJmJnX2NyYyk7CiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RfY3J0Y19iYWNrZ3JvdW5k KGRhdGFfdCAqZGF0YSkKK2lndF9tYWluCiB7Ci0JaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZk YXRhLT5kaXNwbGF5OworCWRhdGFfdCBkYXRhID0ge307CiAJaWd0X291dHB1dF90ICpvdXRwdXQ7 CisJZHJtTW9kZU1vZGVJbmZvICptb2RlOworCWludCB3LCBoOwogCWVudW0gcGlwZSBwaXBlOwot CWludCB2YWxpZF90ZXN0cyA9IDA7Ci0KLQlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0 KGRpc3BsYXksIHBpcGUsIG91dHB1dCkgewotCQlpZ3RfcGxhbmVfdCAqcGxhbmU7Ci0KLQkJaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwotCi0JCXBsYW5lID0gaWd0X291dHB1dF9n ZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwotCQlpZ3RfcmVx dWlyZShpZ3RfcGlwZV9oYXNfcHJvcChkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5E KSk7Ci0KLQkJcHJlcGFyZV9jcnRjKGRhdGEsIG91dHB1dCwgcGlwZSwgcGxhbmUsIDEsIFBVUlBM RSwgQkxBQ0s2NCk7Ci0KLQkJLyogTm93IHNldCBiYWNrZ3JvdW5kIHdpdGhvdXQgdXNpbmcgYSBw bGFuZSwgaS5lLiwKLQkJICogRGlzYWJsZSB0aGUgcGxhbmUgdG8gbGV0IGh3IGJhY2tncm91bmQg Y29sb3Igd2luIGJsZW5kLiAqLwotCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKLQkJ aWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VO RCwgUFVSUExFNjQpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklW RVJTQUwpOwotCi0JCS8qIFRyeSBmZXcgb3RoZXIgYmFja2dyb3VuZCBjb2xvcnMgKi8KLQkJaWd0 X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwg Q1lBTjY0KTsKLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FM KTsKLQotCQlpZ3RfcGlwZV9zZXRfcHJvcF92YWx1ZShkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19C QUNLR1JPVU5ELCBZRUxMT1c2NCk7Ci0JCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09N TUlUX1VOSVZFUlNBTCk7CiAKLQkJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlw ZSwgSUdUX0NSVENfQkFDS0dST1VORCwgUkVENjQpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCWlndF9maXh0dXJlIHsKKwkJZGF0YS5nZnhfZmQg PSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkpOworCQlrbXN0ZXN0X3NldF92dF9n cmFwaGljc19tb2RlKCk7CiAKLQkJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlw ZSwgSUdUX0NSVENfQkFDS0dST1VORCwgR1JFRU42NCk7Ci0JCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Ci0KLQkJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUo ZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgQkxVRTY0KTsKLQkJaWd0X2Rpc3Bs YXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKLQotCQlpZ3RfcGlwZV9zZXRf cHJvcF92YWx1ZShkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5ELCBXSElURTY0KTsK LQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKLQotCQl2 YWxpZF90ZXN0cysrOwotCQljbGVhbnVwX2NydGMoZGF0YSwgb3V0cHV0LCBwbGFuZSk7CisJCWln dF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZ2Z4X2ZkKTsKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZSgm ZGF0YS5kaXNwbGF5LCBkYXRhLmdmeF9mZCk7CiAJfQotCWlndF9yZXF1aXJlX2YodmFsaWRfdGVz dHMsICJubyB2YWxpZCBjcnRjL2Nvbm5lY3RvciBjb21iaW5hdGlvbnMgZm91bmRcbiIpOwotfQog Ci1pZ3Rfc2ltcGxlX21haW4KLXsKLQlkYXRhX3QgZGF0YSA9IHt9OwotCi0JaWd0X3NraXBfb25f c2ltdWxhdGlvbigpOwotCi0JZGF0YS5nZnhfZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lO VEVMKTsKLQlpZ3RfcmVxdWlyZV9waXBlX2NyYyhkYXRhLmdmeF9mZCk7Ci0JaWd0X2Rpc3BsYXlf cmVxdWlyZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmdmeF9mZCk7Ci0KLQl0ZXN0X2NydGNfYmFja2dy b3VuZCgmZGF0YSk7CisJZm9yX2VhY2hfcGlwZV9zdGF0aWMocGlwZSkgaWd0X3N1YnRlc3RfZ3Jv dXAgeworCQlpZ3RfZml4dHVyZSB7CisJCQlpZ3RfZGlzcGxheV9yZXF1aXJlX291dHB1dF9vbl9w aXBlKCZkYXRhLmRpc3BsYXksIHBpcGUpOworCQkJaWd0X3JlcXVpcmUoaWd0X3BpcGVfaGFzX3By b3AoJmRhdGEuZGlzcGxheSwgcGlwZSwKKwkJCQkJCSAgICAgIElHVF9DUlRDX0JBQ0tHUk9VTkQp KTsKKworCQkJb3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9waXBlKCZkYXRhLmRp c3BsYXksCisJCQkJCQkJCXBpcGUpOworCQkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBp cGUpOworCQkJZGF0YS5vdXRwdXQgPSBvdXRwdXQ7CisKKwkJCW1vZGUgPSBpZ3Rfb3V0cHV0X2dl dF9tb2RlKG91dHB1dCk7CisJCQl3ID0gbW9kZS0+aGRpc3BsYXk7CisJCQloID0gbW9kZS0+dmRp c3BsYXk7CisKKwkJCWRhdGEucGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEuZ2Z4X2Zk LCBwaXBlLAorCQkJCQkJCSAgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOworCQl9CisKKwkJ aWd0X3N1YnRlc3RfZigiYmFja2dyb3VuZC1jb2xvci1waXBlLSVzLWJsYWNrIiwKKwkJCSAgICAg IGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQorCQkJdGVzdF9iYWNrZ3JvdW5kKCZkYXRhLCBwaXBl LCB3LCBoLAorCQkJCQkwLCAwLCAwKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJiYWNrZ3JvdW5kLWNv bG9yLXBpcGUtJXMtd2hpdGUiLAorCQkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpCisJ CQl0ZXN0X2JhY2tncm91bmQoJmRhdGEsIHBpcGUsIHcsIGgsCisJCQkJCTB4RkZGRiwgMHhGRkZG LCAweEZGRkYpOworCisJCWlndF9zdWJ0ZXN0X2YoImJhY2tncm91bmQtY29sb3ItcGlwZS0lcy1y ZWQiLAorCQkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpCisJCQl0ZXN0X2JhY2tncm91 bmQoJmRhdGEsIHBpcGUsIHcsIGgsCisJCQkJCTB4RkZGRiwgMCwgMCk7CisKKwkJaWd0X3N1YnRl c3RfZigiYmFja2dyb3VuZC1jb2xvci1waXBlLSVzLWdyZWVuIiwKKwkJCSAgICAgIGttc3Rlc3Rf cGlwZV9uYW1lKHBpcGUpKQorCisJCQl0ZXN0X2JhY2tncm91bmQoJmRhdGEsIHBpcGUsIHcsIGgs CisJCQkJCTAsIDB4RkZGRiwgMCk7CisKKwkJaWd0X3N1YnRlc3RfZigiYmFja2dyb3VuZC1jb2xv ci1waXBlLSVzLWJsdWUiLAorCQkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpCisJCQl0 ZXN0X2JhY2tncm91bmQoJmRhdGEsIHBpcGUsIHcsIGgsCisJCQkJCTAsIDAsIDB4RkZGRik7CisK KwkJaWd0X2ZpeHR1cmUgeworCQkJaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGxheSk7CisJ CQlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLnBpcGVfY3JjKTsKKwkJCWRhdGEucGlwZV9jcmMgPSBO VUxMOworCQl9CisJfQogCi0JaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwlpZ3Rf Zml4dHVyZSB7CisJCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7CisJfQogfQotLSAK Mi4xNC41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=