From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id DABAF6E8B3 for ; Tue, 5 Nov 2019 12:23:20 +0000 (UTC) From: Arkadiusz Hiler Date: Tue, 5 Nov 2019 14:22:57 +0200 Message-ID: <20191105122259.136442-2-arkadiusz.hiler@intel.com> In-Reply-To: <20191105122259.136442-1-arkadiusz.hiler@intel.com> References: <20191105122259.136442-1-arkadiusz.hiler@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/4] kms_writeback: Add initial writeback tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: RnJvbTogQnJpYW4gU3RhcmtleSA8YnJpYW4uc3RhcmtleUBhcm0uY29tPgoKQWRkIHRlc3RzIGZv ciB0aGUgV1JJVEVCQUNLX1BJWEVMX0ZPUk1BVFMsIFdSSVRFQkFDS19PVVRfRkVOQ0VfUFRSIGFu ZApXUklURUJBQ0tfRkJfSUQgcHJvcGVydGllcyBvbiB3cml0ZWJhY2sgY29ubmVjdG9ycywgZW5z dXJpbmcgdGhlaXIKYmVoYXZpb3VyIGlzIGNvcnJlY3QuCgpWNjogU2ltb24gU2VyCiAtIEFkZCBp Z3QgZG9jdW1lbnRhdGlvbiB3aXRoIGlndF9kZXNjcmliZSBhbmQgSUdUX1RFU1RfREVTQ1JJUFRJ T04KIC0gRHJvcCBrbXN0ZXN0X2ZvcmNlX2Nvbm5lY3RvciB3aXRoIEZPUkNFX0NPTk5FQ1RPUl9P TiBpbgprbXNfd3JpdGViYWNrX2dldF9vdXRwdXQgc2luY2UgdXNlcnNwYWNlIHdvbid0IGRvIHRo aXMgb3BlcmF0aW9uCiAtIEFkZCBhbiBpZ3RfZGVidWcgc3RhdGVtZW50IGluIGNhc2Ugd2UgZG9u J3QgdXNlIHdyaXRlYmFjayBvdXRwdXQKIC0gRHJvcCBmbGFncyBwYXJhbWV0ZXIgZnJvbSBkb193 cml0ZWJhY2tfdGVzdAogLSBSZW1vdmUgZG9fd3JpdGViYWNrX3Rlc3QgImlndF9hc3NlcnQoKm91 dF9mZW5jZV9wdHIgPT0gLTEpIiBhZnRlcgppZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYwog LSBSZW5hbWUgd3JpdGViYWNrX2ZiX2lkIHRvIHdyaXRlYmFja190ZXN0X2ZiCiAtIFJld29yayB3 cml0ZWJhY2tfdGVzdF9mYiBmb3IgY2hlY2tpbmcgYnVmZmVyCiAtIE1vdmUgc29tZSB0ZXN0cyBm cm9tIGludmFsaWRfb3V0X2ZlbmNlIHRvIHdyaXRlYmFja190ZXN0X2ZiCiAtIFJlcGxhY2UgcmV0 ICE9IDAgY2hlY2tpbmcgYnkgcmV0ID09IC1FSU5WQUwgYWZ0ZXIgaW52b2tlCmRvX3dyaXRlYmFj a190ZXN0CiAtIEFzc2VydCBvbiBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKCkKIC0gUmVwbGFj ZSBpZ3RfZmJfbW9kX3RvX3RpbGluZyB0byBEUk1fRk9STUFUX01PRF9MSU5FQVIKIC0gUmVuYW1l IHRlc3RzCiAtIFJlcGxhY2UgaW50IHJldCBieSB1bnNpZ25lZCBpbnQgZmRfaWQgd2hlbiBjYWxs aW5nIGlndF9jcmVhdGVfZmIKClNpZ25lZC1vZmYtYnk6IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0 YXJrZXlAYXJtLmNvbT4KW3JlYmFzZWQgYW5kIHVwZGF0ZWQgZG9fd3JpdGViYWNrX3Rlc3QoKSBm dW5jdGlvbiB0byBhZGRyZXNzIGZlZWRiYWNrXQpTaWduZWQtb2ZmLWJ5OiBMaXZpdSBEdWRhdSA8 bGl2aXUuZHVkYXVAYXJtLmNvbT4KW3JlYmFzZWQgYW5kIHVwZGF0ZWQgdGhlIHBhdGNoIHRvIGFk ZHJlc3MgZmVlZGJhY2tdClNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gU2lxdWVpcmEgPHJvZHJpZ29z aXF1ZWlyYW1lbG9AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTGl2aXUgRHVkYXUgPExpdml1LkR1 ZGF1QGFybS5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9r bXNfd3JpdGViYWNrLmMgIHwgMjkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwg MjkyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfd3JpdGViYWNr LmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUu c291cmNlcwppbmRleCAwOTNlYjU3Zi4uNTVhM2FlZGQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtODEsNiArODEsNyBA QCBURVNUU19wcm9ncyA9IFwKIAlrbXNfdW5pdmVyc2FsX3BsYW5lIFwKIAlrbXNfdmJsYW5rIFwK IAlrbXNfdnJyIFwKKwlrbXNfd3JpdGViYWNrIFwKIAltZXRhX3Rlc3QgXAogCXBlcmYgXAogCXBl cmZfcG11IFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc193cml0ZWJhY2suYyBiL3Rlc3RzL2ttc193 cml0ZWJhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYTM3M2VjNGQK LS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9rbXNfd3JpdGViYWNrLmMKQEAgLTAsMCArMSwyOTAg QEAKKy8qCisgKiAoQykgQ09QWVJJR0hUIDIwMTcgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqLworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVk ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImlndC5oIgorI2lu Y2x1ZGUgImlndF9jb3JlLmgiCisjaW5jbHVkZSAiaWd0X2ZiLmgiCisKK0lHVF9URVNUX0RFU0NS SVBUSU9OKCJFeGVyY2lzZSB3cml0ZWJhY2sgZmVhdHVyZS4iKTsKKworc3RhdGljIGRybU1vZGVQ cm9wZXJ0eUJsb2JSZXMgKmdldF93cml0ZWJhY2tfZm9ybWF0c19ibG9iKGlndF9vdXRwdXRfdCAq b3V0cHV0KQoreworCWRybU1vZGVQcm9wZXJ0eUJsb2JSZXMgKmJsb2IgPSBOVUxMOworCXVpbnQ2 NF90IGJsb2JfaWQ7CisJaW50IHJldDsKKworCXJldCA9IGttc3Rlc3RfZ2V0X3Byb3BlcnR5KG91 dHB1dC0+ZGlzcGxheS0+ZHJtX2ZkLAorCQkJCSAgIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+ Y29ubmVjdG9yX2lkLAorCQkJCSAgIERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1IsCisJCQkJICAg aWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW0lHVF9DT05ORUNUT1JfV1JJVEVCQUNLX1BJWEVMX0ZP Uk1BVFNdLAorCQkJCSAgIE5VTEwsICZibG9iX2lkLCBOVUxMKTsKKwlpZiAocmV0KQorCQlibG9i ID0gZHJtTW9kZUdldFByb3BlcnR5QmxvYihvdXRwdXQtPmRpc3BsYXktPmRybV9mZCwgYmxvYl9p ZCk7CisKKwlpZ3RfYXNzZXJ0KGJsb2IpOworCisJcmV0dXJuIGJsb2I7Cit9CisKK3N0YXRpYyBi b29sIGNoZWNrX3dyaXRlYmFja19jb25maWcoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291 dHB1dF90ICpvdXRwdXQpCit7CisJaWd0X2ZiX3QgaW5wdXRfZmIsIG91dHB1dF9mYjsKKwlpZ3Rf cGxhbmVfdCAqcGxhbmU7CisJdWludDMyX3Qgd3JpdGViYWNrX2Zvcm1hdCA9IERSTV9GT1JNQVRf WFJHQjg4ODg7CisJaW50IHdpZHRoLCBoZWlnaHQsIHJldDsKKwl1bnNpZ25lZCBpbnQgZmJfaWQ7 CisJZHJtTW9kZU1vZGVJbmZvIG92ZXJyaWRlX21vZGUgPSB7CisJCS5jbG9jayA9IDI1MTc1LAor CQkuaGRpc3BsYXkgPSA2NDAsCisJCS5oc3luY19zdGFydCA9IDY1NiwKKwkJLmhzeW5jX2VuZCA9 IDc1MiwKKwkJLmh0b3RhbCA9IDgwMCwKKwkJLmhza2V3ID0gMCwKKwkJLnZkaXNwbGF5ID0gNDgw LAorCQkudnN5bmNfc3RhcnQgPSA0OTAsCisJCS52c3luY19lbmQgPSA0OTIsCisJCS52dG90YWwg PSA1MjUsCisJCS52c2NhbiA9IDAsCisJCS52cmVmcmVzaCA9IDYwLAorCQkuZmxhZ3MgPSBEUk1f TU9ERV9GTEFHX05IU1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DLAorCQkubmFtZSA9IHsiNjQw eDQ4MC02MCJ9LAorCX07CisJaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgJm92ZXJy aWRlX21vZGUpOworCisJd2lkdGggPSBvdmVycmlkZV9tb2RlLmhkaXNwbGF5OworCWhlaWdodCA9 IG92ZXJyaWRlX21vZGUudmRpc3BsYXk7CisKKwlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGlzcGxh eS0+ZHJtX2ZkLCB3aWR0aCwgaGVpZ2h0LCBEUk1fRk9STUFUX1hSR0I4ODg4LCBEUk1fRk9STUFU X01PRF9MSU5FQVIsICZpbnB1dF9mYik7CisJaWd0X2Fzc2VydChmYl9pZCA+PSAwKTsKKworCWZi X2lkID0gaWd0X2NyZWF0ZV9mYihkaXNwbGF5LT5kcm1fZmQsIHdpZHRoLCBoZWlnaHQsIHdyaXRl YmFja19mb3JtYXQsIERSTV9GT1JNQVRfTU9EX0xJTkVBUiwgJm91dHB1dF9mYik7CisJaWd0X2Fz c2VydChmYl9pZCA+PSAwKTsKKworCXBsYW5lID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShv dXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUs ICZpbnB1dF9mYik7CisJaWd0X291dHB1dF9zZXRfd3JpdGViYWNrX2ZiKG91dHB1dCwgJm91dHB1 dF9mYik7CisKKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCBE Uk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwKKwkJCQkJICAgIERSTV9NT0RFX0FUT01JQ19BTExP V19NT0RFU0VULCBOVUxMKTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKKwlpZ3Rf cmVtb3ZlX2ZiKGRpc3BsYXktPmRybV9mZCwgJmlucHV0X2ZiKTsKKwlpZ3RfcmVtb3ZlX2ZiKGRp c3BsYXktPmRybV9mZCwgJm91dHB1dF9mYik7CisKKwlyZXR1cm4gIXJldDsKK30KKworc3RhdGlj IGlndF9vdXRwdXRfdCAqa21zX3dyaXRlYmFja19nZXRfb3V0cHV0KGlndF9kaXNwbGF5X3QgKmRp c3BsYXkpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRz OyBpKyspIHsKKwkJaWd0X291dHB1dF90ICpvdXRwdXQgPSAmZGlzcGxheS0+b3V0cHV0c1tpXTsK KwkJaW50IGo7CisKKwkJaWYgKG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5 cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSykKKwkJCWNvbnRpbnVlOworCisJCWZv ciAoaiA9IDA7IGogPCBpZ3RfZGlzcGxheV9nZXRfbl9waXBlcyhkaXNwbGF5KTsgaisrKSB7CisJ CQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgaik7CisKKwkJCWlmIChjaGVja193cml0ZWJh Y2tfY29uZmlnKGRpc3BsYXksIG91dHB1dCkpIHsKKwkJCQlpZ3RfZGVidWcoIlVzaW5nIGNvbm5l Y3RvciAldTolcyBvbiBwaXBlICVkXG4iLAorCQkJCQkgIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rv ci0+Y29ubmVjdG9yX2lkLAorCQkJCQkgIG91dHB1dC0+bmFtZSwgaik7CisJCQkJcmV0dXJuIG91 dHB1dDsKKwkJCX0KKwkJfQorCisJCS8qIFJlc3RvcmUgYW55IGNvbm5lY3RvcnMgd2UgZG9uJ3Qg dXNlLCBzbyB3ZSBkb24ndCB0cmlwIG9uIHRoZW0gbGF0ZXIgKi8KKwkJa21zdGVzdF9mb3JjZV9j b25uZWN0b3IoZGlzcGxheS0+ZHJtX2ZkLCBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3IsIEZPUkNF X0NPTk5FQ1RPUl9VTlNQRUNJRklFRCk7CisJfQorCisJaWd0X2RlYnVnKCJUaGUgZGV2aWNlIGRv ZXMgbm90IGVuYWJsZSB3cml0ZWJhY2tcbiIpOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRp YyB2b2lkIGNoZWNrX3dyaXRlYmFja19mYl9pZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKK3sKKwl1 aW50NjRfdCBjaGVja19mYl9pZDsKKworCWNoZWNrX2ZiX2lkID0gaWd0X291dHB1dF9nZXRfcHJv cChvdXRwdXQsIElHVF9DT05ORUNUT1JfV1JJVEVCQUNLX0ZCX0lEKTsKKwlpZ3RfYXNzZXJ0KGNo ZWNrX2ZiX2lkID09IDApOworfQorCitzdGF0aWMgaW50IGRvX3dyaXRlYmFja190ZXN0KGlndF9v dXRwdXRfdCAqb3V0cHV0LCB1aW50MzJfdCBmYl9pZCwKKwkJCSAgICAgIGludDMyX3QgKm91dF9m ZW5jZV9wdHIsIGJvb2wgcHRyX3ZhbGlkKQoreworCWludCByZXQ7CisJaW50IGZsYWdzID0gRFJN X01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQ7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91 dHB1dC0+ZGlzcGxheTsKKwlzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29uZmlnICpjb25maWcg PSAmb3V0cHV0LT5jb25maWc7CisKKwlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVlKG91dHB1dCwg SUdUX0NPTk5FQ1RPUl9DUlRDX0lELCBjb25maWctPmNydGMtPmNydGNfaWQpOworCWlndF9vdXRw dXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LCBJR1RfQ09OTkVDVE9SX1dSSVRFQkFDS19GQl9JRCwg ZmJfaWQpOworCWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LCBJR1RfQ09OTkVDVE9S X1dSSVRFQkFDS19PVVRfRkVOQ0VfUFRSLCAodWludDY0X3Qpb3V0X2ZlbmNlX3B0cik7CisKKwlp ZiAocHRyX3ZhbGlkKQorCQkqb3V0X2ZlbmNlX3B0ciA9IDA7CisKKwlyZXQgPSBpZ3RfZGlzcGxh eV90cnlfY29tbWl0X2F0b21pYyhkaXNwbGF5LCBmbGFncywgTlVMTCk7CisKKwkvKiBXUklURUJB Q0tfRkJfSUQgbXVzdCBhbHdheXMgcmVhZCBhcyB6ZXJvICovCisJY2hlY2tfd3JpdGViYWNrX2Zi X2lkKG91dHB1dCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkX291 dHB1dF9mZW5jZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X2ZiX3QgKnZhbGlkX2ZiKQorewor CWludCByZXQ7CisKKwlyZXQgPSBkb193cml0ZWJhY2tfdGVzdChvdXRwdXQsCXZhbGlkX2ZiLT5m Yl9pZCwgKGludDMyX3QgKikweDgsIGZhbHNlKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAtRUZBVUxU KTsKK30KKworc3RhdGljIHZvaWQgd3JpdGViYWNrX3Rlc3RfZmIoaWd0X291dHB1dF90ICpvdXRw dXQsIGlndF9mYl90ICp2YWxpZF9mYiwgaWd0X2ZiX3QgKmludmFsaWRfZmIpCit7CisKKwlpbnQg cmV0OworCWludDMyX3Qgb3V0X2ZlbmNlOworCisJLyogVmFsaWQgb3V0cHV0IGJ1ZmZlciAqLwor CXJldCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1dCwgdmFsaWRfZmItPmZiX2lkLCBOVUxMLCBm YWxzZSk7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKKwkvKiBJbnZhbGlkIG9iamVjdCBmb3Ig V1JJVEVCQUNLX0ZCX0lEICovCisJcmV0ID0gZG9fd3JpdGViYWNrX3Rlc3Qob3V0cHV0LCBvdXRw dXQtPmlkLCBOVUxMLCBmYWxzZSk7CisJaWd0X2Fzc2VydChyZXQgPT0gLUVJTlZBTCk7CisKKwkv KiBaZXJvIFdSSVRFQkFDS19GQl9JRCAqLworCXJldCA9IGRvX3dyaXRlYmFja190ZXN0KG91dHB1 dCwgMCwgTlVMTCwgZmFsc2UpOworCWlndF9hc3NlcnQocmV0ID09IDApOworCisJLyogTm8gb3V0 cHV0IGJ1ZmZlciwgYnV0IHRoZSBXUklURUJBQ0tfT1VUX0ZFTkNFX1BUUiBzZXQuICovCisJcmV0 ID0gZG9fd3JpdGViYWNrX3Rlc3Qob3V0cHV0LCAwLCAmb3V0X2ZlbmNlLCB0cnVlKTsKKwlpZ3Rf YXNzZXJ0KHJldCA9PSAtRUlOVkFMKTsKKworCS8qIEludmFsaWQgb3V0cHV0IGJ1ZmZlci4gKi8K KwlyZXQgPSBkb193cml0ZWJhY2tfdGVzdChvdXRwdXQsIGludmFsaWRfZmItPmZiX2lkLCAmb3V0 X2ZlbmNlLCB0cnVlKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAtRUlOVkFMKTsKK30KKworaWd0X21h aW4KK3sKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJ aWd0X3BsYW5lX3QgKnBsYW5lOworCWlndF9mYl90IGlucHV0X2ZiOworCWRybU1vZGVNb2RlSW5m byBtb2RlOworCXVuc2lnbmVkIGludCBmYl9pZDsKKworCW1lbXNldCgmZGlzcGxheSwgMCwgc2l6 ZW9mKGRpc3BsYXkpKTsKKworCWlndF9maXh0dXJlIHsKKwkJZGlzcGxheS5kcm1fZmQgPSBkcm1f b3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkpOworCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZk aXNwbGF5LCBkaXNwbGF5LmRybV9mZCk7CisKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9k ZSgpOworCisJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGRpc3BsYXkuZHJtX2ZkKTsK KworCQlpZ3RfcmVxdWlyZShkaXNwbGF5LmlzX2F0b21pYyk7CisKKwkJb3V0cHV0ID0ga21zX3dy aXRlYmFja19nZXRfb3V0cHV0KCZkaXNwbGF5KTsKKwkJaWd0X3JlcXVpcmUob3V0cHV0KTsKKwor CQlpZiAob3V0cHV0LT51c2Vfb3ZlcnJpZGVfbW9kZSkKKwkJCW1lbWNweSgmbW9kZSwgJm91dHB1 dC0+b3ZlcnJpZGVfbW9kZSwgc2l6ZW9mKG1vZGUpKTsKKwkJZWxzZQorCQkJbWVtY3B5KCZtb2Rl LCAmb3V0cHV0LT5jb25maWcuZGVmYXVsdF9tb2RlLCBzaXplb2YobW9kZSkpOworCisJCXBsYW5l ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1B UlkpOworCQlpZ3RfYXNzZXJ0KHBsYW5lKTsKKworCQlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGlz cGxheS5kcm1fZmQsIG1vZGUuaGRpc3BsYXksCisJCQkJICAgICAgbW9kZS52ZGlzcGxheSwKKwkJ CQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJCSAgICAgIERSTV9GT1JNQVRfTU9EX0xJ TkVBUiwKKwkJCQkgICAgICAmaW5wdXRfZmIpOworCQlpZ3RfYXNzZXJ0KGZiX2lkID49IDApOwor CQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmaW5wdXRfZmIpOworCX0KKworCWlndF9kZXNjcmli ZSgiQ2hlY2sgd3JpdGViYWNrIGZvcm1hdHMiKTsKKwlpZ3Rfc3VidGVzdCgicGl4ZWwtZm9ybWF0 cyIpIHsKKwkJZHJtTW9kZVByb3BlcnR5QmxvYlJlcyAqZm9ybWF0c19ibG9iID0gZ2V0X3dyaXRl YmFja19mb3JtYXRzX2Jsb2Iob3V0cHV0KTsKKwkJY29uc3QgY2hhciAqdmFsaWRfY2hhcnMgPSAi MDEyMzQ1NiBBQkNHTlJVVlhZIjsKKwkJdW5zaWduZWQgaW50IGk7CisJCWNoYXIgKmM7CisKKwkJ LyoKKwkJICogV2UgZG9uJ3QgaGF2ZSBhIGNvbXByZWhlbnNpdmUgbGlzdCBvZiBmb3JtYXRzLCBz byBqdXN0IGNoZWNrCisJCSAqIHRoYXQgdGhlIGJsb2IgbGVuZ3RoIGlzIHNlbnNpYmxlIGFuZCB0 aGF0IGl0IGRvZXNuJ3QgY29udGFpbgorCQkgKiBhbnkgb3V0bGFuZGlzaCBjaGFyYWN0ZXJzCisJ CSAqLworCQlpZ3RfYXNzZXJ0KCEoZm9ybWF0c19ibG9iLT5sZW5ndGggJSA0KSk7CisJCWMgPSBm b3JtYXRzX2Jsb2ItPmRhdGE7CisJCWZvciAoaSA9IDA7IGkgPCBmb3JtYXRzX2Jsb2ItPmxlbmd0 aDsgaSsrKQorCQkJaWd0X2Fzc2VydF9mKHN0cmNocih2YWxpZF9jaGFycywgY1tpXSksCisJCQkJ ICAgICAiVW5leHBlY3RlZCBjaGFyYWN0ZXIgJWNcbiIsIGNbaV0pOworCX0KKworCWlndF9kZXNj cmliZSgiVGhpcyB0ZXN0IHZhbGlkYXRlcyBpZiB0aGUgd3JpdGViYWNrIGNvcmUgaWRlbnRpZnkg YW4gIgorCQkgICAgICJpbnZhbGlkIG91dHB1dCIpOworCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLW91 dHB1dC1mYiIpIHsKKwkJaW52YWxpZF9vdXRwdXRfZmVuY2Uob3V0cHV0LCAmaW5wdXRfZmIpOwor CX0KKworCWlndF9kZXNjcmliZSgiVGVzdCB3cml0ZWJhY2sgd2l0aCB2YWxpZCBhbmQgaW52YWxp ZCBmcmFtZWJ1ZmZlciIpOworCWlndF9zdWJ0ZXN0KCJ3cml0ZWJhY2stdGVzdC1mcmFtZWJ1ZmZl ciIpIHsKKwkJaWd0X2ZiX3Qgb3V0cHV0X2ZiLCBpbnZhbGlkX2ZiOworCQlmYl9pZCA9IGlndF9j cmVhdGVfZmIoZGlzcGxheS5kcm1fZmQsIG1vZGUuaGRpc3BsYXksCisJCQkJICAgICAgbW9kZS52 ZGlzcGxheSwgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCQkgICAgICBEUk1fRk9STUFUX01PRF9M SU5FQVIsICZvdXRwdXRfZmIpOworCQlpZ3RfcmVxdWlyZShmYl9pZCA+IDApOworCisJCWZiX2lk ID0gaWd0X2NyZWF0ZV9mYihkaXNwbGF5LmRybV9mZCwgbW9kZS5oZGlzcGxheSAvIDIsCisJCQkJ ICAgICAgbW9kZS52ZGlzcGxheSAvIDIsCisJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwK KwkJCQkgICAgICBEUk1fRk9STUFUX01PRF9MSU5FQVIsCisJCQkJICAgICAgJmludmFsaWRfZmIp OworCQlpZ3RfcmVxdWlyZShmYl9pZCA+IDApOworCisJCXdyaXRlYmFja190ZXN0X2ZiKG91dHB1 dCwgJm91dHB1dF9mYiwgJmludmFsaWRfZmIpOworCisJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5k cm1fZmQsICZvdXRwdXRfZmIpOworCQlpZ3RfcmVtb3ZlX2ZiKGRpc3BsYXkuZHJtX2ZkLCAmaW52 YWxpZF9mYik7CisJfQorCisJaWd0X2ZpeHR1cmUgeworCQlpZ3RfcmVtb3ZlX2ZiKGRpc3BsYXku ZHJtX2ZkLCAmaW5wdXRfZmIpOworCQlpZ3RfZGlzcGxheV9maW5pKCZkaXNwbGF5KTsKKwl9Cit9 CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4 IDNmM2VlZTI3Li41YTZhYWM5NSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIv dGVzdHMvbWVzb24uYnVpbGQKQEAgLTY2LDYgKzY2LDcgQEAgdGVzdF9wcm9ncyA9IFsKIAkna21z X3VuaXZlcnNhbF9wbGFuZScsCiAJJ2ttc192YmxhbmsnLAogCSdrbXNfdnJyJywKKwkna21zX3dy aXRlYmFjaycsCiAJJ21ldGFfdGVzdCcsCiAJJ3BhbmZyb3N0X2dldF9wYXJhbScsCiAJJ3BhbmZy b3N0X2dlbV9uZXcnLAotLSAKMi4yMy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXY=