From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 01EBA6E175 for ; Thu, 18 Apr 2019 16:54:35 +0000 (UTC) From: Carlos Santa Date: Thu, 18 Apr 2019 09:53:37 -0700 Message-Id: <20190418165337.23438-1-carlos.santa@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC v2] tests/gem_watchdog: Initial set of tests for GPU watchdog 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 Cc: Ursulin Tvrtko List-ID: VGhpcyB0ZXN0IGFkZHMgYmFzaWMgc2V0IG9mIHRlc3RzIHRvIHJlc2V0IHRoZSBkaWZmZXJlbnQK R1BVIGVuZ2luZXMgdGhyb3VnaCB0aGUgZ3B1IHdhdGNoZG9nIHRpbWVyLgoKQ3JlZGl0cyB0byBB bnRvbmlvIGZvciB0aGUgb3JpZ2luYWwgY29kZWJhc2UgdGhpcyBpcyBiYXNlZCBvbi4KCnYyOiBy ZW1vdmUgZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKCkgZHVyaW5nIHNldCAoQW50b25pbykKICAgIHJl bW92ZSBjbGVhcmluZyBvZiB0aGUgZW5naW5lc190aHJlc2hvbGRbXSBpbiB0aGUgZGVmYXVsdCBj YXNlCiAgICBpbnNpZGUgY29udGV4dF9zZXRfd2F0Y2hkb2coKS4gKEFudG9uaW8pCiAgICBmaXgg aW5kZXhpbmcgd2hlbiBjcmVhdGluZyBsb3cvaGlnaCBwcmlvcml0eSBjb250ZXh0cwogICAgZ2V0 IHJpZCBvZiAyIHRocmVhZHMgaWRlYSAoQW50b25pbykKICAgIGZpeCBjb250ZXh0IHByaW8gYnVn IGR1ZSB0byB3cm9uZyBpbmRleGluZyAoQW50b25pbykKCkNjOiBVcnN1bGluIFR2cnRrbyA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFy Z2Vuemlhbm9AaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+ClNpZ25lZC1vZmYtYnk6IENhcmxvcyBTYW50YSA8Y2FybG9zLnNhbnRhQGludGVsLmNv bT4KLS0tCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgIHwgICAzICsKIHRlc3RzL2k5MTUvZ2Vt X3dhdGNoZG9nLmMgfCAzNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5n ZWQsIDM3MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvaTkxNS9nZW1f d2F0Y2hkb2cuYwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9N YWtlZmlsZS5zb3VyY2VzCmluZGV4IDIxNDY5OGQuLjdmMTdmMjAgMTAwNjQ0Ci0tLSBhL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtNDQ0LDYg KzQ0NCw5IEBAIGdlbV91c2VycHRyX2JsaXRzX1NPVVJDRVMgPSBpOTE1L2dlbV91c2VycHRyX2Js aXRzLmMKIFRFU1RTX3Byb2dzICs9IGdlbV93YWl0CiBnZW1fd2FpdF9TT1VSQ0VTID0gaTkxNS9n ZW1fd2FpdC5jCiAKK1RFU1RTX3Byb2dzICs9IGdlbV93YXRjaGRvZworZ2VtX3dhdGNoZG9nX1NP VVJDRVMgPSBpOTE1L2dlbV93YXRjaGRvZy5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV93b3JrYXJv dW5kcwogZ2VtX3dvcmthcm91bmRzX1NPVVJDRVMgPSBpOTE1L2dlbV93b3JrYXJvdW5kcy5jCiAK ZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMgYi90ZXN0cy9pOTE1L2dlbV93 YXRjaGRvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YzFhYmUKLS0t IC9kZXYvbnVsbAorKysgYi90ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jCkBAIC0wLDAgKzEsMzY2 IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKyNpbmNsdWRlICJpZ3Qu aCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKKyNpbmNsdWRlICJzd19zeW5jLmgiCisKKyNpbmNs dWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPHN5cy9pb2N0 bC5oPgorI2luY2x1ZGUgPHN5cy9wb2xsLmg+CisjaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgorI2lu Y2x1ZGUgImk5MTUvZ2VtX3JpbmcuaCIKKworI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1NI SUZUCSgxMykKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9SSU5HMSAJKDEgPDwgTE9DQUxf STkxNV9FWEVDX0JTRF9TSElGVCkKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9SSU5HMiAJ KDIgPDwgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCkKKworI2RlZmluZSBNQVhfUFJJTyBMT0NB TF9JOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkKKyNkZWZpbmUgTUlOX1BSSU8gTE9DQUxf STkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCisjZGVmaW5lIEhJR0ggMQorI2RlZmluZSBM T1cgMAorI2RlZmluZSBXQVRDSERPR19USFJFU0hPTEQgKDEwMCkKKyNkZWZpbmUgTUFYX0VOR0lO RVMgNQorI2RlZmluZSBSRU5ERVJfQ0xBU1MgMAorI2RlZmluZSBWSURFT19ERUNPREVfQ0xBU1Mg MQorI2RlZmluZSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUyAyCisjZGVmaW5lIENPUFlfRU5HSU5F X0NMQVNTIDMKKyNkZWZpbmUgTE9DQUxfSTkxNV9DT05URVhUX1BBUkFNX1dBVENIRE9HIDB4MTAK KworY29uc3QgdWludDY0X3QgdGltZW91dF8xMDBtcyA9IDEwMDAwMDAwMExMOworaW50IG51bTsK Kworc3RydWN0IGRybV9pOTE1X2dlbV93YXRjaGRvZ190aW1lb3V0IHsKKwl1bmlvbiB7CisJCXN0 cnVjdCB7CisJCQkvKgorCQkJICogRW5naW5lIGNsYXNzICYgaW5zdGFuY2UgdG8gYmUgY29uZmln dXJlZCBvciBxdWVyaWVkLgorCQkJICovCisJCQlfX3UxNiBlbmdpbmVfY2xhc3M7CisJCQlfX3Ux NiBlbmdpbmVfaW5zdGFuY2U7CisJCX07CisJCS8qIEluZGV4IGJhc2VkIGFkZHJlc3NpbmcgbW9k ZSAqLworCQlfX3UzMiBpbmRleDsKKwl9OworCS8qIEdQVSBFbmdpbmUgd2F0Y2hkb2cgcmVzZXRz IHRpbWVvdXQgaW4gdXMgKi8KKwlfX3UzMiB0aW1lb3V0X3VzOworfTsKKworc3RhdGljIHZvaWQg Y2xlYXJfZXJyb3Jfc3RhdGUoaW50IGZkKQoreworCWludCBkaXI7CisKKwlkaXIgPSBpZ3Rfc3lz ZnNfb3BlbihmZCk7CisKKwlpZiAoZGlyIDwgMCkKKwkJcmV0dXJuOworCisJLyogQW55IHdyaXRl IHRvIHRoZSBlcnJvciBzdGF0ZSBjbGVhcnMgaXQgKi8KKwlpZ3Rfc3lzZnNfc2V0KGRpciwgImVy cm9yIiwgIiIpOworCWNsb3NlKGRpcik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnRleHRfc2V0X3dh dGNoZG9nKGludCBmZCwgaW50IGVuZ2luZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGN0eF9pZCwgdW5zaWduZWQgdGhyZXNob2xkKQoreworCXN0cnVjdCBk cm1faTkxNV9nZW1fd2F0Y2hkb2dfdGltZW91dCBlbmdpbmVzX3RocmVzaG9sZFtNQVhfRU5HSU5F U107CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFt ID0gTE9DQUxfSTkxNV9DT05URVhUX1BBUkFNX1dBVENIRE9HLAorCQkuY3R4X2lkID0gY3R4X2lk LAorCQkuc2l6ZSA9IHNpemVvZihlbmdpbmVzX3RocmVzaG9sZCksCisJCS52YWx1ZSA9ICh1aW50 NjRfdCkmZW5naW5lc190aHJlc2hvbGQKKwl9OworCisJbWVtc2V0KCZlbmdpbmVzX3RocmVzaG9s ZCwgMCwgc2l6ZW9mKGVuZ2luZXNfdGhyZXNob2xkKSk7CisKKwlzd2l0Y2ggKGVuZ2luZV9pZCAm IEk5MTVfRVhFQ19SSU5HX01BU0spIHsKKwljYXNlIEk5MTVfRVhFQ19SRU5ERVI6CisJCWVuZ2lu ZXNfdGhyZXNob2xkW1JFTkRFUl9DTEFTU10udGltZW91dF91cyA9IHRocmVzaG9sZDsKKwkJZW5n aW5lc190aHJlc2hvbGRbVklERU9fREVDT0RFX0NMQVNTXS50aW1lb3V0X3VzID0gMDsKKwkJZW5n aW5lc190aHJlc2hvbGRbVklERU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOwor CQlicmVhazsKKwljYXNlIEk5MTVfRVhFQ19CU0Q6CisJCWVuZ2luZXNfdGhyZXNob2xkW1JFTkRF Ul9DTEFTU10udGltZW91dF91cyA9IDA7CisJCWVuZ2luZXNfdGhyZXNob2xkW1ZJREVPX0RFQ09E RV9DTEFTU10udGltZW91dF91cyA9IHRocmVzaG9sZDsKKwkJZW5naW5lc190aHJlc2hvbGRbVklE RU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOworCQlicmVhazsKKwljYXNlIEk5 MTVfRVhFQ19WRUJPWDoKKwkJZW5naW5lc190aHJlc2hvbGRbUkVOREVSX0NMQVNTXS50aW1lb3V0 X3VzID0gMDsKKwkJZW5naW5lc190aHJlc2hvbGRbVklERU9fREVDT0RFX0NMQVNTXS50aW1lb3V0 X3VzID0gMDsKKwkJZW5naW5lc190aHJlc2hvbGRbVklERU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRp bWVvdXRfdXMgPSB0aHJlc2hvbGQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0K KworCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7Cit9CisKK3N0YXRpYyB2b2lkIGJh dGNoX2J1ZmZlcl9mYWN0b3J5KHVpbnQzMl90IGZkLCB1aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVk IGV4ZWNfaWQsIHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCAqaGFu ZGxlLCB1aW50NjRfdCB0aW1lb3V0LCBpbnQgKmZlbmNlLCBpbnQgZmVuY2VfaW5kZXgpCit7Cisg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOworICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKKyAgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisgICAgaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7Cisg ICAgY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKyAgICBpbnQgaSA9 IDA7CisKKyAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7CisKKyAgICBtZW1zZXQoJmV4ZWNidWYs IDAsIHNpemVvZihleGVjYnVmKSk7CisgICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsK KyAgICBtZW1zZXQoJnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKKworICAgIGV4ZWNidWYuYnVm ZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKTsKKworICAgIGV4ZWNidWYuYnVmZmVyX2Nv dW50ID0gMjsKKyAgICBleGVjYnVmLmZsYWdzID0gZXhlY19pZCB8IEk5MTVfRVhFQ19GRU5DRV9P VVQgOworCisgICAgb2JqWzBdLmhhbmRsZSA9IHRhcmdldDsKKyAgICBvYmpbMV0uaGFuZGxlID0g Z2VtX2NyZWF0ZShmZCwgNDA5Nik7CisKKyAgICBvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7 CisgICAgb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKKworICAg IHJlbG9jLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOworICAgIHJlbG9jLnJlYWRfZG9t YWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLndyaXRlX2RvbWFpbiA9 IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLmRlbHRhID0gb2Zmc2V0ICogc2l6 ZW9mKHVpbnQzMl90KTsKKworICAgIHJlbG9jLm9mZnNldCA9IGkgKiBzaXplb2YodWludDMyX3Qp OworICAgIGdlbV93cml0ZShmZCwgb2JqWzFdLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkp OworCisgICAgX19zeW5jX3N5bmNocm9uaXplKCk7CisKKyAgICBpZiAoaGFuZGxlKSB7CisgICAg ICAgICpoYW5kbGUgPSBvYmpbMV0uaGFuZGxlOworICAgICAgICByZXR1cm47CisgICAgfQorCisg ICAgZ2VtX3N5bmMoZmQsIG9ialsxXS5oYW5kbGUpOworICAgIGV4ZWNidWYucnN2ZDEgPSBjdHhf aWQ7CisgICAgZXhlY2J1Zi5yc3ZkMiA9IC0xOworCisgICAgc3BpbiA9IGlndF9zcGluX2JhdGNo X25ldyhmZCwgLmRlcGVuZGVuY3kgPSBvYmpbMF0uaGFuZGxlKTsKKyAgICBpZ3Rfc3Bpbl9iYXRj aF9zZXRfdGltZW91dChzcGluLCB0aW1lb3V0KTsKKyAgICBpZ3RfYXNzZXJ0KGdlbV9ib19idXN5 KGZkLCBvYmpbMF0uaGFuZGxlKSk7CisKKyAgICBnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYp OworICAgIGlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCisgICAgZmVuY2VbZmVuY2Vf aW5kZXhdID0gZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKKworICAgIGdlbV9jbG9zZShmZCwgb2JqWzFd LmhhbmRsZSk7CisgICAgZ2VtX3F1aWVzY2VudF9ncHUoZmQpOworfQorCitzdGF0aWMgdWludDMy X3QgY3JlYXRlX2N0eF93aXRoX3ByaW9yaXR5KGludCBmZCwgaW50IGN0eF9wcmlvKQoreworCXVp bnQzMl90IGN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisKKwlzd2l0Y2ggKGN0eF9wcmlv KSB7CisJY2FzZSBISUdIOgorCQlfX2dlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4LCBN QVhfUFJJTyk7CisJCWlndF9pbmZvKCJTZXR0aW5nIE1BWCBwcmlvcml0eSAlZFxuIiwgY3R4X3By aW8pOworCQlicmVhazsKKwljYXNlIExPVzoKKwkJX19nZW1fY29udGV4dF9zZXRfcHJpb3JpdHko ZmQsIGN0eCwgTUlOX1BSSU8pOworCQlpZ3RfaW5mbygiU2V0dGluZyBNSU4gcHJpb3JpdHkgJWRc biIsIGN0eF9wcmlvKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJaWd0X2luZm8oIklnbm9yaW5n IGNvbnRleHQgcHJpb3JpdHkgJWRcbiIsIGN0eF9wcmlvKTsKKwkJYnJlYWs7CisJfQorCXByaW50 ZigiY3R4IGlkOiAldVxuIixjdHgpOworCXJldHVybiBjdHg7Cit9CisKK3N0YXRpYyB2b2lkIGlu amVjdF9oYW5nKHVpbnQzMl90IGZkLCB1bnNpZ25lZCByaW5nLCB1aW50MzJfdCBjdHhfaWQsICB1 bnNpZ25lZCBmbGFncykKK3sKKwlpZ3RfaGFuZ190IGhhbmc7CisJaGFuZyA9IGlndF9oYW5nX2N0 eChmZCwgY3R4X2lkLCByaW5nLCBmbGFncyk7CisJZ2VtX3N5bmMoZmQsIGhhbmcuc3Bpbi0+aGFu ZGxlKTsKK30KKworc3RhdGljIHZvaWQgZ3B1X3dhdGNoZG9nX2xvbmdfYmF0Y2hfMl9jb250ZXh0 cyhpbnQgZmQsIGludCBuZW5naW5lLCBpbnQgcHJpb19jdHgxLCBpbnQgcHJpb19jdHgyKQorewor CXVpbnQzMl90IGN0eFsyXTsKKwl1aW50MzJfdCBzY3JhdGNoWzJdOworCXVuc2lnbmVkIGZsYWdz ID0gSEFOR19BTExPV19DQVBUVVJFOworCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMg PSB0aW1lb3V0XzEwMG1zICogMzsKKwlpbnQgaSA9IDAsIGVuZ2luZV9pZDsKKwlpbnQgKmZlbmNl ID0gMDsKKworCWlndF9yZXF1aXJlKG5lbmdpbmUpOworCisJZmVuY2UgPSAoaW50ICopbWFsbG9j KHNpemVvZihpbnQpKjIpOworCisJaWYgKCFmZW5jZSkgeworCQlpZ3RfaW5mbygiT3V0IG9mIG1l bW9yeVxuIik7CisJCWV4aXQoMSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewor CQlzY3JhdGNoW2ldID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisJfQorCisJLyogQ3JlYXRlIHNv bWUgd29yayBvbiBSQ1MwICovCisJZW5naW5lX2lkID0gMTsKKwljdHhbMF0gPSBjcmVhdGVfY3R4 X3dpdGhfcHJpb3JpdHkoZmQsIHByaW9fY3R4MSk7CisJYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQs IGN0eFswXSwgZW5naW5lX2lkLCBzY3JhdGNoWzBdLCAwLCBOVUxMLCBiYXRjaF90aW1lb3V0X21z LCBmZW5jZSwgMCk7CisKKwkvKiBDYW5jZWwgYmF0Y2ggb24gUkNTMCB3LyBncHUgd2F0Y2hkb2cg dGltZW91dCAqLworCWlmKHByaW9fY3R4MSA8IDAgJiYgcHJpb19jdHgyIDwgMCkgeworCQljb250 ZXh0X3NldF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCBjdHhbMF0sIFdBVENIRE9HX1RIUkVTSE9M RCk7CisJCWNsZWFyX2Vycm9yX3N0YXRlKGZkKTsKKwkJaW5qZWN0X2hhbmcoZmQsIGVuZ2luZV9p ZCwgY3R4WzBdLCBmbGFncyk7CisJfQorCisjaWYgMAorCS8qIE5vdyBjaGVjayB0aGUgZW5naW5l IHdhcyByZXNldCBzdWNjZXNzZnVsbHkqLworCWlndF9hc3NlcnRfZXEoc3luY19mZW5jZV9zdGF0 dXMoKmZlbmNlKSwgLUVJTyk7CisjZW5kaWYKKwljbG9zZShmZW5jZVswXSk7CisKKwkvKiBDcmVh dGUgc29tZSB3b3JrIG9uIFZFQ1MwICovCisJZW5naW5lX2lkID0gNDsKKwljdHhbMV0gPSBjcmVh dGVfY3R4X3dpdGhfcHJpb3JpdHkoZmQsIHByaW9fY3R4Mik7CisJYmF0Y2hfYnVmZmVyX2ZhY3Rv cnkoZmQsIGN0eFsxXSwgZW5naW5lX2lkLCBzY3JhdGNoWzFdLCAwLCBOVUxMLCBiYXRjaF90aW1l b3V0X21zLCBmZW5jZSwgMSk7CisKKwkvKiBDYW5jZWwgYmF0Y2ggb24gUkNTMCB3LyBncHUgd2F0 Y2hkb2cgdGltZW91dCAqLworCWNvbnRleHRfc2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGN0 eFsxXSwgV0FUQ0hET0dfVEhSRVNIT0xEKTsKKwljbGVhcl9lcnJvcl9zdGF0ZShmZCk7CisJaW5q ZWN0X2hhbmcoZmQsIGVuZ2luZV9pZCwgY3R4WzFdLCBmbGFncyk7CisKKyNpZiAwCisJLyogTm93 IGNoZWNrIHRoZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseSAqLworCWlndF9hc3NlcnRf ZXEoc3luY19mZW5jZV9zdGF0dXMoKmZlbmNlKSwgLUVJTyk7CisjZW5kaWYKKwljbG9zZShmZW5j ZVsxXSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCWdlbV9jb250ZXh0X2Rlc3Ry b3koZmQsIGN0eFtpXSk7CisJCWdlbV9jbG9zZShmZCwgc2NyYXRjaFtpXSk7CisJfQorfQorCitz dGF0aWMgdm9pZCBncHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUoaW50 IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJdWludDMyX3Qg Y3R4WzE2XTsKKwl1aW50MzJfdCBzY3JhdGNoWzE2XTsKKwlpbnQgKmZlbmNlOworCXVuc2lnbmVk IG5lbmdpbmUgPSAwOworCXVuc2lnbmVkIGVuZ2luZTsKKworCWludCBpOworCXVuc2lnbmVkIGZs YWdzID0gSEFOR19BTExPV19DQVBUVVJFOworCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRf bXMgPSB0aW1lb3V0XzEwMG1zKjQ7CisKKwlmZW5jZSA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGlu dCkqMTYpOworCisJaWYgKCFmZW5jZSkgeworCQlpZ3RfaW5mbygiT3V0IG9mIG1lbW9yeVxuIik7 CisJCWV4aXQoMSk7CisJfQorCisJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdpbmUp IHsKKwkJLyogbm8gc3VwcG9ydCBmb3IgZ3B1IHdhdGNoZG9nIG9uIEJMVCAqLworCQlpZiAoIHN0 cm5jbXAoZV9fLT5uYW1lLCAiYmx0IiwgMykgPT0gMCApCisJCQljb250aW51ZTsKKworCQlzY3Jh dGNoW25lbmdpbmVdID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisJCWN0eFtuZW5naW5lXSA9IGNy ZWF0ZV9jdHhfd2l0aF9wcmlvcml0eShmZCwgLTEpOworCisJCS8qIENyZWF0ZSBzb21lIHdvcmsg b24gdGhlIGVuZ2luZSB1c2luZyB0aGUgc2FtZSBjdHgqLworCQliYXRjaF9idWZmZXJfZmFjdG9y eShmZCwgY3R4W25lbmdpbmVdLCBlX18tPmV4ZWNfaWQsIHNjcmF0Y2hbbmVuZ2luZV0sIDAsIE5V TEwsIGJhdGNoX3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKKworCQkvKiBTZXQgdGhlIGdw dSB3YXRjaGRvZyB0aW1lb3V0ICovCisJCWNvbnRleHRfc2V0X3dhdGNoZG9nKGZkLCBlX18tPmV4 ZWNfaWQsIGN0eFtuZW5naW5lXSwgV0FUQ0hET0dfVEhSRVNIT0xEKTsKKwkJY2xlYXJfZXJyb3Jf c3RhdGUoZmQpOworCisJCS8qIENhbmNlbCBvbmx5IHRoZSBiYXRjaCByZXF1ZXN0ZWQgKi8KKwkJ aWYgKCBzdHJuY21wKGVfXy0+bmFtZSwgbmFtZSwgNCkgPT0gMCApCisJCQlpbmplY3RfaGFuZyhm ZCwgZV9fLT5leGVjX2lkLCBjdHhbbmVuZ2luZV0sIGZsYWdzKTsKKyNpZiAwCisJCWlndF9pbmZv KCJmZW5jZTolZCwgZmVuY2Ugc3RhdHVzIDogJWQgRUlPOiAlZCBjdHhfaWQ6JWRcbiIsZmVuY2Vb bmVuZ2luZV0sIHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25lbmdpbmVdKSwtRUlPLCBjdHhbbmVu Z2luZV0pOworCQkvKiBOb3cgY2hlY2sgdGhlIGVuZ2luZSB3YXMgcmVzZXQgKi8KKwkJaWd0X2Fz c2VydF9lcShzeW5jX2ZlbmNlX3N0YXR1cyhmZW5jZVtuZW5naW5lXSksIC1FSU8pOworI2VuZGlm CisJCW5lbmdpbmUrKzsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7CisJ CWNsb3NlKGZlbmNlW2ldKTsKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4W2ldKTsKKwkJ Z2VtX2Nsb3NlKGZkLCBzY3JhdGNoW2ldKTsKKwl9Cit9CisKK2lndF9tYWluCit7CisJaW50IGZk OworCXVuc2lnbmVkIGludCBuZW5naW5lID0gMDsKKwl1bnNpZ25lZCBpbnQgZW5naW5lOworCisJ aWd0X3NraXBfb25fc2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlmZCA9IGRybV9v cGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOworCisJCWZv cl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZW5naW5lKQorCQkJbmVuZ2luZSsrOworCQlpZ3Rf cmVxdWlyZShuZW5naW5lKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9ncm91cCB7CisKKwkJaWd0X3N1 YnRlc3RfZigibG93LXByaW8tY3R4LXdvLWdwdS13YXRjaGRvZy1hbmQtaGlnaC1wcmlvLWN0eC13 aXRoLWdwdS13YXRjaGRvZyIpIHsKKwkJCWludCBwcmlvMSA9IExPVzsKKwkJCWludCBwcmlvMiA9 IEhJR0g7CisJCQlncHVfd2F0Y2hkb2dfbG9uZ19iYXRjaF8yX2NvbnRleHRzKGZkLCBuZW5naW5l LCBwcmlvMSwgcHJpbzIpOworCQl9CisKKwkJZm9yIChjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZSAqZSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzOyBlLT5uYW1lOyBlKyspIHsK KwkJCS8qIG5vIHN1cHBvcnQgZm9yIGdwdSB3YXRjaGRvZyBvbiBCTFQgKi8KKwkJCWlmIChlLT5l eGVjX2lkID09IDAgfHwgZS0+ZXhlY19pZCA9PSBJOTE1X0VYRUNfQkxUKQorCQkJCWNvbnRpbnVl OworCisJCQlpZ3Rfc3VidGVzdF9mKCJncHUtd2F0Y2hkb2ctbG9uZy1iYXRjaC0lcyIsIGUtPm5h bWUpIHsKKwkJCQlpZ3RfcmVxdWlyZShnZW1fcmluZ19oYXNfcGh5c2ljYWxfZW5naW5lKGZkLCBl LT5leGVjX2lkIHwgZS0+ZmxhZ3MpKTsKKwkJCQlwcmludGYoImJlbG93IGlkOiAlZFxuIixlLT5l eGVjX2lkKTsKKwkJCQlncHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUo ZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncywgZS0+bmFtZSk7CisJCQl9CisJCX0KKworCQlpZ3Rf c3VidGVzdF9mKCJncHUtd2F0Y2hkb2ctbG9uZy1iYXRjaC0yLWNvbnRleHRzIikgeworCQkJaW50 IHByaW8gPSAtMTsKKwkJCWdwdV93YXRjaGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMoZmQsIG5l bmdpbmUsIHByaW8sIHByaW8pOworCQl9CisgICAgfQorCisgICAgaWd0X2ZpeHR1cmUgeworCWNs b3NlKGZkKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3Rz L21lc29uLmJ1aWxkCmluZGV4IDUxNjdhNmMuLmIyODFiNzUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21l c29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0yMTAsNiArMjEwLDcgQEAgaTkx NV9wcm9ncyA9IFsKIAknZ2VtX3VucmVmX2FjdGl2ZV9idWZmZXJzJywKIAknZ2VtX3VzZXJwdHJf YmxpdHMnLAogCSdnZW1fd2FpdCcsCisgICAgICAgICdnZW1fd2F0Y2hkb2cnLAogCSdnZW1fd29y a2Fyb3VuZHMnLAogCSdnZW1fd3JpdGVfcmVhZF9yaW5nX3N3aXRjaCcsCiAJJ2k5MTVfZmJfdGls aW5nJywKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=