From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Matt Roper Date: Wed, 30 Jan 2019 16:00:34 -0800 Message-Id: <20190131000034.7905-1-matthew.d.roper@intel.com> In-Reply-To: <20190130234850.GJ4563@mdroper-desk.amr.corp.intel.com> References: <20190130234850.GJ4563@mdroper-desk.amr.corp.intel.com> Subject: [igt-dev] [PATCH i-g-t] tests/kms_crtc_background_color: overhaul to match upstream ABI (v4) 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 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 YmFja2dyb3VuZCBjb2xvciBhY2NlcHRzCgpDYzogaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4K LS0tCiBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHRlc3RzL2tt c19jcnRjX2JhY2tncm91bmRfY29sb3IuYyB8IDI2MiArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgMTM4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCmlu ZGV4IDcxZGY5OGQyLi5jNzBjZGJhMyAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYworKysgYi9s aWIvaWd0X2ttcy5jCkBAIC0xODAsNyArMTgwLDcgQEAgY29uc3QgY2hhciAqIGNvbnN0IGlndF9w bGFuZV9wcm9wX25hbWVzW0lHVF9OVU1fUExBTkVfUFJPUFNdID0gewogfTsKIAogY29uc3QgY2hh ciAqIGNvbnN0IGlndF9jcnRjX3Byb3BfbmFtZXNbSUdUX05VTV9DUlRDX1BST1BTXSA9IHsKLQlb SUdUX0NSVENfQkFDS0dST1VORF0gPSAiYmFja2dyb3VuZF9jb2xvciIsCisJW0lHVF9DUlRDX0JB Q0tHUk9VTkRdID0gIkJBQ0tHUk9VTkRfQ09MT1IiLAogCVtJR1RfQ1JUQ19DVE1dID0gIkNUTSIs CiAJW0lHVF9DUlRDX0dBTU1BX0xVVF0gPSAiR0FNTUFfTFVUIiwKIAlbSUdUX0NSVENfR0FNTUFf TFVUX1NJWkVdID0gIkdBTU1BX0xVVF9TSVpFIiwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jcnRj X2JhY2tncm91bmRfY29sb3IuYyBiL3Rlc3RzL2ttc19jcnRjX2JhY2tncm91bmRfY29sb3IuYwpp bmRleCAzZGYzNDAxZi4uNDI0NTg1NDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19jcnRjX2JhY2tn cm91bmRfY29sb3IuYworKysgYi90ZXN0cy9rbXNfY3J0Y19iYWNrZ3JvdW5kX2NvbG9yLmMKQEAg LTI1LDE2NCArMjUsMTUyIEBACiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgog Ci0KIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGNydGMgYmFja2dyb3VuZCBjb2xvciBmZWF0 dXJlIik7CiAKKy8qCisgKiBUaGUgb3JpZ2luYWwgaWRlYSB3YXMgdG8gcGFpbnQgYSBkZXNpcmVk IGNvbG9yIGludG8gYSBmdWxsLXNjcmVlbiBwcmltYXJ5CisgKiBwbGFuZSBhbmQgdGhlbiBjb21w YXJlIHRoYXQgQ1JDIHdpdGggdHVybmluZyBvZmYgYWxsIHBsYW5lcyBhbmQgc2V0dGluZyB0aGUK KyAqIENSVEMgYmFja2dyb3VuZCB0byB0aGUgc2FtZSBjb2xvci4gIFVuZm9ydW5hdGVseSwgdGhl IHJvdW5kaW5nIGFuZCBwcmVjaXNpb24KKyAqIG9mIGNvbG9yIHZhbHVlcyBhcyByZW5kZXJlZCBi eSBjYWlybyB2cyBjcmVhdGVkIGJ5IHRoZSBkaXNwbGF5IGNvbnRyb2xsZXIKKyAqIGFyZSBzbGln aHRseSBkaWZmZXJlbnQgYW5kIGdpdmUgZGlmZmVyZW50IENSQydzLCBldmVuIHRob3VnaCB0aGV5 J3JlCisgKiB2aXN1YWxseSBpZGVudGljYWwuCisgKgorICogU2luY2Ugd2UgY2FuJ3QgcmVhbGx5 IHVzZSBDUkMncyBmb3IgdGVzdGluZywgdGhpcyB0ZXN0IGlzIG1haW5seSB1c2VmdWwgZm9yCisg KiB2aXN1YWwgaW5zcGVjdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlIGF0IHRoZSBtb21lbnQuCisg Ki8KKwogdHlwZWRlZiBzdHJ1Y3QgewotCWludCBnZnhfZmQ7CiAJaWd0X2Rpc3BsYXlfdCBkaXNw bGF5OwotCXN0cnVjdCBpZ3RfZmIgZmI7Ci0JaWd0X2NyY190IHJlZl9jcmM7CisJaW50IGdmeF9m ZDsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKIAlpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7CisJ ZHJtTW9kZU1vZGVJbmZvICptb2RlOwogfSBkYXRhX3Q7CiAKLSNkZWZpbmUgQkxBQ0sgICAgICAw eDAwMDAwMCAgICAgICAgICAgLyogQkdSIDhicGMgKi8KLSNkZWZpbmUgQ1lBTiAgICAgICAweEZG RkYwMCAgICAgICAgICAgLyogQkdSIDhicGMgKi8KLSNkZWZpbmUgUFVSUExFICAgICAweEZGMDBG RiAgICAgICAgICAgLyogQkdSIDhicGMgKi8KLSNkZWZpbmUgV0hJVEUgICAgICAweEZGRkZGRiAg ICAgICAgICAgLyogQkdSIDhicGMgKi8KLQotI2RlZmluZSBCTEFDSzY0ICAgIDB4MDAwMDAwMDAw MDAwICAgICAvKiBCR1IgMTZicGMgKi8KLSNkZWZpbmUgQ1lBTjY0ICAgICAweEZGRkZGRkZGMDAw MCAgICAgLyogQkdSIDE2YnBjICovCi0jZGVmaW5lIFBVUlBMRTY0ICAgMHhGRkZGMDAwMEZGRkYg ICAgIC8qIEJHUiAxNmJwYyAqLwotI2RlZmluZSBZRUxMT1c2NCAgIDB4MDAwMEZGRkZGRkZGICAg ICAvKiBCR1IgMTZicGMgKi8KLSNkZWZpbmUgV0hJVEU2NCAgICAweEZGRkZGRkZGRkZGRiAgICAg LyogQkdSIDE2YnBjICovCi0jZGVmaW5lIFJFRDY0ICAgICAgMHgwMDAwMDAwMEZGRkYgICAgIC8q IEJHUiAxNmJwYyAqLwotI2RlZmluZSBHUkVFTjY0ICAgIDB4MDAwMEZGRkYwMDAwICAgICAvKiBC R1IgMTZicGMgKi8KLSNkZWZpbmUgQkxVRTY0ICAgICAweEZGRkYwMDAwMDAwMCAgICAgLyogQkdS IDE2YnBjICovCi0KLXN0YXRpYyB2b2lkCi1wYWludF9iYWNrZ3JvdW5kKGRhdGFfdCAqZGF0YSwg c3RydWN0IGlndF9mYiAqZmIsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKLQkJdWludDMyX3QgYmFj a2dyb3VuZCwgZG91YmxlIGFscGhhKQorLyoKKyAqIExvY2FsIGNvcHkgb2Yga2VybmVsIHVhcGkK KyAqLworc3RhdGljIGlubGluZSBfX3U2NAorbG9jYWxfYXJnYihfX3U4IGJwYywgX191MTYgYWxw aGEsIF9fdTE2IHJlZCwgX191MTYgZ3JlZW4sIF9fdTE2IGJsdWUpCiB7Ci0JY2Fpcm9fdCAqY3I7 Ci0JaW50IHcsIGg7Ci0JZG91YmxlIHIsIGcsIGI7Ci0KLQl3ID0gbW9kZS0+aGRpc3BsYXk7Ci0J aCA9IG1vZGUtPnZkaXNwbGF5OwotCi0JY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5nZnhf ZmQsICZkYXRhLT5mYik7CisgICAgICAgaW50IG1zYl9zaGlmdCA9IDE2IC0gYnBjOwogCi0JLyog UGFpbnQgd2l0aCBiYWNrZ3JvdW5kIGNvbG9yICovCi0JciA9IChkb3VibGUpIChiYWNrZ3JvdW5k ICYgMHhGRikgLyAyNTUuMDsKLQlnID0gKGRvdWJsZSkgKChiYWNrZ3JvdW5kICYgMHhGRjAwKSA+ PiA4KSAvIDI1NS4wOwotCWIgPSAoZG91YmxlKSAoKGJhY2tncm91bmQgJiAweEZGMDAwMCkgPj4g MTYpIC8gMjU1LjA7Ci0JaWd0X3BhaW50X2NvbG9yX2FscGhhKGNyLCAwLCAwLCB3LCBoLCByLCBn LCBiLCBhbHBoYSk7Ci0KLQlpZ3RfcHV0X2NhaXJvX2N0eChkYXRhLT5nZnhfZmQsICZkYXRhLT5m YiwgY3IpOworICAgICAgIHJldHVybiAoX191NjQpYWxwaGEgPDwgbXNiX3NoaWZ0IDw8IDQ4IHwK KyAgICAgICAgICAgICAgKF9fdTY0KXJlZCAgIDw8IG1zYl9zaGlmdCA8PCAzMiB8CisgICAgICAg ICAgICAgIChfX3U2NClncmVlbiA8PCBtc2Jfc2hpZnQgPDwgMTYgfAorICAgICAgICAgICAgICAo X191NjQpYmx1ZSAgPDwgbXNiX3NoaWZ0OwogfQogCi1zdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMo ZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCi0JCQlp Z3RfcGxhbmVfdCAqcGxhbmUsIGludCBvcGFxdWVfYnVmZmVyLCBpbnQgcGxhbmVfY29sb3IsCi0J CQl1aW50NjRfdCBwaXBlX2JhY2tncm91bmRfY29sb3IpCitzdGF0aWMgdm9pZCB0ZXN0X2JhY2tn cm91bmQoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgaW50IHcsIGludCBoLAorCQkJICAg IF9fdTY0IHIsIF9fdTY0IGcsIF9fdTY0IGIpCiB7Ci0JZHJtTW9kZU1vZGVJbmZvICptb2RlOwot CWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKLQlpbnQgZmJfaWQ7Ci0J ZG91YmxlIGFscGhhOwotCi0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwotCi0J LyogY3JlYXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLwotCWlndF9waXBl X2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKLQlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2Ny Y19uZXcoZGF0YS0+Z2Z4X2ZkLCBwaXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Ci0K LQltb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwotCi0JZmJfaWQgPSBpZ3RfY3Jl YXRlX2ZiKGRhdGEtPmdmeF9mZCwKLQkJCW1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwK LQkJCURSTV9GT1JNQVRfWFJHQjg4ODgsCi0JCQlMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLCAv KiB0aWxlZCAqLwotCQkJJmRhdGEtPmZiKTsKLQlpZ3RfYXNzZXJ0KGZiX2lkKTsKLQotCS8qIFRv IG1ha2UgRkIgcGl4ZWwgd2luIHdpdGggYmFja2dyb3VuZCBjb2xvciwgc2V0IGFscGhhIGFzIGZ1 bGwgb3BhcXVlICovCi0JaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdU X0NSVENfQkFDS0dST1VORCwgcGlwZV9iYWNrZ3JvdW5kX2NvbG9yKTsKLQlpZiAob3BhcXVlX2J1 ZmZlcikKLQkJYWxwaGEgPSAxLjA7ICAgIC8qIGFscGhhIDEgaXMgZnVsbHkgb3BxdWUgKi8KLQll bHNlCi0JCWFscGhhID0gMC4wOyAgICAvKiBhbHBoYSAwIGlzIGZ1bGx5IHRyYW5zcGFyZW50ICov Ci0JcGFpbnRfYmFja2dyb3VuZChkYXRhLCAmZGF0YS0+ZmIsIG1vZGUsIHBsYW5lX2NvbG9yLCBh bHBoYSk7Ci0KLQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmIpOwotCWlndF9kaXNw bGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7Ci19Ci0KLXN0YXRpYyB2b2lk IGNsZWFudXBfY3J0YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfcGxh bmVfdCAqcGxhbmUpCi17Ci0JaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5 OwotCi0JaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwotCWRhdGEtPnBpcGVfY3Jj ID0gTlVMTDsKLQotCWlndF9yZW1vdmVfZmIoZGF0YS0+Z2Z4X2ZkLCAmZGF0YS0+ZmIpOwotCi0J aWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBsYW5lLT5waXBlLCBJR1RfQ1JUQ19CQUNLR1JP VU5ELCBCTEFDSzY0KTsKKwlpZ3RfY3JjX3QgcGxhbmVfY3JjLCBiZ19jcmM7CisJc3RydWN0IGln dF9mYiBjb2xvcmZiOworCWlndF9wbGFuZV90ICpwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5l X3R5cGUoZGF0YS0+b3V0cHV0LAorCQkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkp OworCisKKwkvKiBGaWxsIHRoZSBwcmltYXJ5IHBsYW5lIGFuZCBzZXQgdGhlIGJhY2tncm91bmQg dG8gdGhlIHNhbWUgY29sb3IgKi8KKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmdmeF9mZCwg dywgaCwgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwKKwkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01P RF9OT05FLAorCQkJICAgIChkb3VibGUpciAvIDB4RkZGRiwKKwkJCSAgICAoZG91YmxlKWcgLyAw eEZGRkYsCisJCQkgICAgKGRvdWJsZSliIC8gMHhGRkZGLAorCQkJICAgICZjb2xvcmZiKTsKKwlp Z3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmY29sb3JmYik7CisJaWd0X3BpcGVfc2V0X3Byb3BfdmFs dWUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIElHVF9DUlRDX0JBQ0tHUk9VTkQsCisJCQkJbG9jYWxf YXJnYigxNiwgMHhmZmZmLCByLCBnLCBiKSk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEt PnBpcGVfY3JjLCAmcGxhbmVfY3JjKTsKKworCS8qIFR1cm4gb2ZmIHRoZSBwcmltYXJ5IHBsYW5l IHNvIG9ubHkgYmcgc2hvd3MgKi8KIAlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKLQlp Z3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwotCi0JaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKCZk YXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKKwlpZ3RfcGlwZV9jcmNfY29sbGVjdF9jcmMo ZGF0YS0+cGlwZV9jcmMsICZiZ19jcmMpOworCisJLyoKKwkgKiBJbiB0aGVvcnkgd2Ugc2hvdWxk IGJlIGFibGUgdG8gY29tcGFyZSB0aGUgQ1JDJ3MgaGVyZSBhbmQgaGF2ZQorCSAqIHRoZW0gY29t ZSB1cCBlcXVhbC4gIEhvd2V2ZXIgb24gSW50ZWwgaGFyZHdhcmUgdGhpcyBuZXZlciBzZWVtcwor CSAqIHRvIGJlIHRoZSBjYXNlLCBldmVuIHRob3VnaCB0aGUgY29sb3JzIGFyZSB2aXN1YWxseSBp ZGVudGljYWwuCisJICogQmFja2dyb3VuZCBjb2xvciB0YWtlcyAxMCBiaXRzIG9mIHByZWNpc2lv biBwZXIgY29tcG9uZW50IG9uIEludGVsCisJICogaGFyZHdhcmUsIGJ1dCBldmVuIHdpdGggMTBi cGMgcGxhbmUgY29udGVudCB0aGUgQ1JDJ3MgZG9uJ3QgbWF0Y2guCisJICogRGlzYWJsaW5nIHRo ZSBDUkMgY2hlY2sgZm9yIG5vdzsgdGhpcyB0ZXN0IHN0aWxsIHByb3ZpZGVzIHNvbWUKKwkgKiB2 YWx1ZSB3aGVuIHJ1biBpbiBpbnRlcmFjdGl2ZSBtb2RlIHdpdGggdmlzdWFsIGluc3BlY3Rpb24u CisJICovCisjaWYgMAorCWlndF9hc3NlcnRfY3JjX2VxdWFsKCZwbGFuZV9jcmMsICZiZ19jcmMp OworI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHRlc3RfY3J0Y19iYWNrZ3JvdW5kKGRhdGFfdCAq ZGF0YSkKK2lndF9tYWluCiB7Ci0JaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNw bGF5OworCWRhdGFfdCBkYXRhID0ge307CiAJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJZHJtTW9k ZU1vZGVJbmZvICptb2RlOworCWludCB3LCBoOwogCWVudW0gcGlwZSBwaXBlOwotCWludCB2YWxp ZF90ZXN0cyA9IDA7Ci0KLQlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KGRpc3BsYXks IHBpcGUsIG91dHB1dCkgewotCQlpZ3RfcGxhbmVfdCAqcGxhbmU7Ci0KLQkJaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIHBpcGUpOwotCi0JCXBsYW5lID0gaWd0X291dHB1dF9nZXRfcGxhbmVf dHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwotCQlpZ3RfcmVxdWlyZShpZ3Rf cGlwZV9oYXNfcHJvcChkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5EKSk7Ci0KLQkJ cHJlcGFyZV9jcnRjKGRhdGEsIG91dHB1dCwgcGlwZSwgcGxhbmUsIDEsIFBVUlBMRSwgQkxBQ0s2 NCk7Ci0KLQkJLyogTm93IHNldCBiYWNrZ3JvdW5kIHdpdGhvdXQgdXNpbmcgYSBwbGFuZSwgaS5l LiwKLQkJICogRGlzYWJsZSB0aGUgcGxhbmUgdG8gbGV0IGh3IGJhY2tncm91bmQgY29sb3Igd2lu IGJsZW5kLiAqLwotCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKLQkJaWd0X3BpcGVf c2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgUFVSUExF NjQpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwot Ci0JCS8qIFRyeSBmZXcgb3RoZXIgYmFja2dyb3VuZCBjb2xvcnMgKi8KLQkJaWd0X3BpcGVfc2V0 X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NSVENfQkFDS0dST1VORCwgQ1lBTjY0KTsK LQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKLQotCQlp Z3RfcGlwZV9zZXRfcHJvcF92YWx1ZShkaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5E LCBZRUxMT1c2NCk7Ci0JCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZF UlNBTCk7CiAKLQkJaWd0X3BpcGVfc2V0X3Byb3BfdmFsdWUoZGlzcGxheSwgcGlwZSwgSUdUX0NS VENfQkFDS0dST1VORCwgUkVENjQpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENP TU1JVF9VTklWRVJTQUwpOworCWlndF9maXh0dXJlIHsKKwkJZGF0YS5nZnhfZmQgPSBkcm1fb3Bl bl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7CisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNz X21vZGUoKTsKIAotCQlpZ3RfcGlwZV9zZXRfcHJvcF92YWx1ZShkaXNwbGF5LCBwaXBlLCBJR1Rf Q1JUQ19CQUNLR1JPVU5ELCBHUkVFTjY0KTsKLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBDT01NSVRfVU5JVkVSU0FMKTsKLQotCQlpZ3RfcGlwZV9zZXRfcHJvcF92YWx1ZShkaXNwbGF5 LCBwaXBlLCBJR1RfQ1JUQ19CQUNLR1JPVU5ELCBCTFVFNjQpOwotCQlpZ3RfZGlzcGxheV9jb21t aXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwotCi0JCWlndF9waXBlX3NldF9wcm9wX3Zh bHVlKGRpc3BsYXksIHBpcGUsIElHVF9DUlRDX0JBQ0tHUk9VTkQsIFdISVRFNjQpOwotCQlpZ3Rf ZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwotCi0JCXZhbGlkX3Rl c3RzKys7Ci0JCWNsZWFudXBfY3J0YyhkYXRhLCBvdXRwdXQsIHBsYW5lKTsKKwkJaWd0X3JlcXVp cmVfcGlwZV9jcmMoZGF0YS5nZnhfZmQpOworCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRp c3BsYXksIGRhdGEuZ2Z4X2ZkKTsKIAl9Ci0JaWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywgIm5v IHZhbGlkIGNydGMvY29ubmVjdG9yIGNvbWJpbmF0aW9ucyBmb3VuZFxuIik7Ci19CiAKLWlndF9z aW1wbGVfbWFpbgotewotCWRhdGFfdCBkYXRhID0ge307Ci0KLQlpZ3Rfc2tpcF9vbl9zaW11bGF0 aW9uKCk7Ci0KLQlkYXRhLmdmeF9mZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOwot CWlndF9yZXF1aXJlX3BpcGVfY3JjKGRhdGEuZ2Z4X2ZkKTsKLQlpZ3RfZGlzcGxheV9yZXF1aXJl KCZkYXRhLmRpc3BsYXksIGRhdGEuZ2Z4X2ZkKTsKLQotCXRlc3RfY3J0Y19iYWNrZ3JvdW5kKCZk YXRhKTsKKwlmb3JfZWFjaF9waXBlX3N0YXRpYyhwaXBlKSBpZ3Rfc3VidGVzdF9ncm91cCB7CisJ CWlndF9maXh0dXJlIHsKKwkJCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0X29uX3BpcGUoJmRh dGEuZGlzcGxheSwgcGlwZSk7CisJCQlpZ3RfcmVxdWlyZShpZ3RfcGlwZV9oYXNfcHJvcCgmZGF0 YS5kaXNwbGF5LCBwaXBlLAorCQkJCQkJICAgICAgSUdUX0NSVENfQkFDS0dST1VORCkpOworCisJ CQlvdXRwdXQgPSBpZ3RfZ2V0X3NpbmdsZV9vdXRwdXRfZm9yX3BpcGUoJmRhdGEuZGlzcGxheSwK KwkJCQkJCQkJcGlwZSk7CisJCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7CisJ CQlkYXRhLm91dHB1dCA9IG91dHB1dDsKKworCQkJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUo b3V0cHV0KTsKKwkJCXcgPSBtb2RlLT5oZGlzcGxheTsKKwkJCWggPSBtb2RlLT52ZGlzcGxheTsK KworCQkJZGF0YS5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXcoZGF0YS5nZnhfZmQsIHBpcGUs CisJCQkJCQkJICBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7CisJCX0KKworCQlpZ3Rfc3Vi dGVzdF9mKCJiYWNrZ3JvdW5kLWNvbG9yLXBpcGUtJXMtYmxhY2siLAorCQkJICAgICAga21zdGVz dF9waXBlX25hbWUocGlwZSkpCisJCQl0ZXN0X2JhY2tncm91bmQoJmRhdGEsIHBpcGUsIHcsIGgs CisJCQkJCTAsIDAsIDApOworCisJCWlndF9zdWJ0ZXN0X2YoImJhY2tncm91bmQtY29sb3ItcGlw ZS0lcy13aGl0ZSIsCisJCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCXRlc3Rf YmFja2dyb3VuZCgmZGF0YSwgcGlwZSwgdywgaCwKKwkJCQkJMHhGRkZGLCAweEZGRkYsIDB4RkZG Rik7CisKKwkJaWd0X3N1YnRlc3RfZigiYmFja2dyb3VuZC1jb2xvci1waXBlLSVzLXJlZCIsCisJ CQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCXRlc3RfYmFja2dyb3VuZCgmZGF0 YSwgcGlwZSwgdywgaCwKKwkJCQkJMHhGRkZGLCAwLCAwKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJi YWNrZ3JvdW5kLWNvbG9yLXBpcGUtJXMtZ3JlZW4iLAorCQkJICAgICAga21zdGVzdF9waXBlX25h bWUocGlwZSkpCisKKwkJCXRlc3RfYmFja2dyb3VuZCgmZGF0YSwgcGlwZSwgdywgaCwKKwkJCQkJ MCwgMHhGRkZGLCAwKTsKKworCQlpZ3Rfc3VidGVzdF9mKCJiYWNrZ3JvdW5kLWNvbG9yLXBpcGUt JXMtYmx1ZSIsCisJCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKKwkJCXRlc3RfYmFj a2dyb3VuZCgmZGF0YSwgcGlwZSwgdywgaCwKKwkJCQkJMCwgMCwgMHhGRkZGKTsKKworCQlpZ3Rf Zml4dHVyZSB7CisJCQlpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS5kaXNwbGF5KTsKKwkJCWlndF9w aXBlX2NyY19mcmVlKGRhdGEucGlwZV9jcmMpOworCQkJZGF0YS5waXBlX2NyYyA9IE5VTEw7CisJ CX0KKwl9CiAKLQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOworCWlndF9maXh0dXJl IHsKKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKKwl9CiB9Ci0tIAoyLjE0LjUK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYg bWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=