From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8433689259 for ; Mon, 15 Apr 2019 18:23:58 +0000 (UTC) From: Carlos Santa Date: Mon, 15 Apr 2019 11:22:51 -0700 Message-Id: <20190415182251.22427-2-carlos.santa@intel.com> In-Reply-To: <20190415182251.22427-1-carlos.santa@intel.com> References: <20190415182251.22427-1-carlos.santa@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC] 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: Chris@freedesktop.org, Ursulin Tvrtko List-ID: VGhpcyB0ZXN0IGFkZHMgYmFzaWMgc2V0IG9mIHRlc3RzIHRvIHJlc2V0IHRoZSBkaWZmZXJlbnQK R1BVIGVuZ2luZXMgdGhyb3VnaCB0aGUgd2F0Y2hkb2cgdGltZXIuCgpDcmVkaXRzIHRvIEFudG9u aW8gZm9yIHRoZSBvcmlnaW5hbCBjb2RlYmFzZSB0aGlzIGlzIGJhc2VkIG9uLgoKQ2M6IFVyc3Vs aW4gVHZydGtvIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBBbnRvbmlvIEFyZ2Vuemlh bm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51awpTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgU2FudGEgPGNhcmxvcy5z YW50YUBpbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICB8ICAgMyArCiB0 ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIHwgNDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgfCAgIDEgKwog MyBmaWxlcyBjaGFuZ2VkLCA0NDMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCAyMTQ2OThkLi43ZjE3ZjIwIDEwMDY0 NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKQEAgLTQ0NCw2ICs0NDQsOSBAQCBnZW1fdXNlcnB0cl9ibGl0c19TT1VSQ0VTID0gaTkxNS9n ZW1fdXNlcnB0cl9ibGl0cy5jCiBURVNUU19wcm9ncyArPSBnZW1fd2FpdAogZ2VtX3dhaXRfU09V UkNFUyA9IGk5MTUvZ2VtX3dhaXQuYwogCitURVNUU19wcm9ncyArPSBnZW1fd2F0Y2hkb2cKK2dl bV93YXRjaGRvZ19TT1VSQ0VTID0gaTkxNS9nZW1fd2F0Y2hkb2cuYworCiBURVNUU19wcm9ncyAr PSBnZW1fd29ya2Fyb3VuZHMKIGdlbV93b3JrYXJvdW5kc19TT1VSQ0VTID0gaTkxNS9nZW1fd29y a2Fyb3VuZHMuYwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIGIvdGVz dHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42NWUyZjViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwpA QCAtMCwwICsxLDQzOSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0 aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisg KiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisj aW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCisjaW5jbHVkZSAic3dfc3lu Yy5oIgorCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNs dWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvcG9sbC5oPgorI2luY2x1ZGUgPHN5cy9z aWduYWwuaD4KKyNpbmNsdWRlICJpOTE1L2dlbV9yaW5nLmgiCisKKyNkZWZpbmUgTUFYX1BSSU8g TE9DQUxfSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCisjZGVmaW5lIE1JTl9QUklPIExP Q0FMX0k5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQorI2RlZmluZSBISUdIIDEKKyNkZWZp bmUgTE9XIDAKKyNkZWZpbmUgTE9DQUxfRVhFQ19GRU5DRV9PVVQgKDEgPDwgMTcpCisjZGVmaW5l IFdBVENIRE9HX1RIUkVTSE9MRCAoMTAwKQorI2RlZmluZSBNQVhfRU5HSU5FUyA1CisjZGVmaW5l IFJFTkRFUl9DTEFTUyAwCisjZGVmaW5lIFZJREVPX0RFQ09ERV9DTEFTUyAxCisjZGVmaW5lIFZJ REVPX0VOSEFOQ0VNRU5UX0NMQVNTIDIKKyNkZWZpbmUgQ09QWV9FTkdJTkVfQ0xBU1MgMworI2Rl ZmluZSBMT0NBTF9JOTE1X0NPTlRFWFRfUEFSQU1fV0FUQ0hET0cgMHgxMAorCitjb25zdCB1aW50 NjRfdCB0aW1lb3V0XzEwMG1zID0gMTAwMDAwMDAwTEw7CitzdGF0aWMgcHRocmVhZF9tdXRleF90 IGxpc3RfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CisKK3N0cnVjdCBkcm1faTkx NV9nZW1fd2F0Y2hkb2dfdGltZW91dCB7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJLyoKKwkJ CSAqIEVuZ2luZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmllZC4K KwkJCSAqLworCQkJX191MTYgZW5naW5lX2NsYXNzOworCQkJX191MTYgZW5naW5lX2luc3RhbmNl OworCQl9OworCQkvKiBJbmRleCBiYXNlZCBhZGRyZXNzaW5nIG1vZGUgKi8KKwkJX191MzIgaW5k ZXg7CisJfTsKKwkvKiBHUFUgRW5naW5lIHdhdGNoZG9nIHJlc2V0cyB0aW1lb3V0IGluIHVzICov CisJX191MzIgdGltZW91dF91czsKK307CisKK3N0YXRpYyB2b2lkIGNsZWFyX2Vycm9yX3N0YXRl KGludCBmZCkKK3sKKwlpbnQgZGlyOworCisJZGlyID0gaWd0X3N5c2ZzX29wZW4oZmQpOworCisJ aWYgKGRpciA8IDApCisJCXJldHVybjsKKworCS8qIEFueSB3cml0ZSB0byB0aGUgZXJyb3Igc3Rh dGUgY2xlYXJzIGl0ICovCisJaWd0X3N5c2ZzX3NldChkaXIsICJlcnJvciIsICIiKTsKKwljbG9z ZShkaXIpOworfQorCitzdGF0aWMgYm9vbCBjaGVja19lcnJvcl9zdGF0ZShpbnQgZmQpCit7CisJ Y2hhciAqZXJyb3IsICpzdHI7CisJYm9vbCBmb3VuZCA9IGZhbHNlOworCWludCBkaXI7CisKKwlk aXIgPSBpZ3Rfc3lzZnNfb3BlbihmZCk7CisKKwllcnJvciA9IGlndF9zeXNmc19nZXQoZGlyLCAi ZXJyb3IiKTsKKwlpZ3Rfc3lzZnNfc2V0KGRpciwgImVycm9yIiwgIkJlZ29uZSEiKTsKKworCWln dF9hc3NlcnQoZXJyb3IpOworCWlndF9kZWJ1ZygiRXJyb3I6ICVzXG4iLCBlcnJvcik7CisKKwlp ZiAoKHN0ciA9IHN0cnN0cihlcnJvciwgIkdQVSBIQU5HIikpKSB7CisJCWlndF9kZWJ1ZygiRm91 bmQgZXJyb3Igc3RhdGUhIEdQVSBoYW5nIHRyaWdnZXJlZCEgJXNcbiIsIHN0cik7CisJCWZvdW5k ID0gdHJ1ZTsKKwl9CisKKwljbG9zZShkaXIpOworCisJcmV0dXJuIGZvdW5kOworfQorCitzdGF0 aWMgdm9pZCBjb250ZXh0X3NldF93YXRjaGRvZyhpbnQgZmQsIGludCBlbmdpbmVfaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdHhfaWQsIHVuc2lnbmVkIHRo cmVzaG9sZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgZW5naW5l c190aHJlc2hvbGRbTUFYX0VOR0lORVNdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IExPQ0FMX0k5MTVfQ09OVEVYVF9QQVJBTV9XQVRDSERP RywKKwkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJLnNpemUgPSBzaXplb2YoZW5naW5lc190aHJlc2hv bGQpLAorCQkudmFsdWUgPSAodWludDY0X3QpJmVuZ2luZXNfdGhyZXNob2xkCisJfTsKKworICAg IG1lbXNldCgmZW5naW5lc190aHJlc2hvbGQsIDAsIHNpemVvZihlbmdpbmVzX3RocmVzaG9sZCkp OworCisgICAgLyogcmVhZCBleGlzdGluZyB2YWx1ZXMgKi8KKyAgICBnZW1fY29udGV4dF9nZXRf cGFyYW0oZmQsICZhcmcpOworCisgICAgc3dpdGNoIChlbmdpbmVfaWQgJiBJOTE1X0VYRUNfUklO R19NQVNLKSB7CisgICAgY2FzZSBJOTE1X0VYRUNfUkVOREVSOgorICAgICAgICAgZW5naW5lc190 aHJlc2hvbGRbUkVOREVSX0NMQVNTXS50aW1lb3V0X3VzID0gdGhyZXNob2xkOworCSBlbmdpbmVz X3RocmVzaG9sZFtWSURFT19ERUNPREVfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOworCSBlbmdpbmVz X3RocmVzaG9sZFtWSURFT19FTkhBTkNFTUVOVF9DTEFTU10udGltZW91dF91cyA9IDA7CisJIGVu Z2luZXNfdGhyZXNob2xkW0NPUFlfRU5HSU5FX0NMQVNTXS50aW1lb3V0X3VzID0gMDsKKyAgICAg ICAgIGJyZWFrOworICAgIGNhc2UgSTkxNV9FWEVDX0JTRDoKKyAgICAgICAgIGVuZ2luZXNfdGhy ZXNob2xkW1JFTkRFUl9DTEFTU10udGltZW91dF91cyA9IDA7CisJIGVuZ2luZXNfdGhyZXNob2xk W1ZJREVPX0RFQ09ERV9DTEFTU10udGltZW91dF91cyA9IHRocmVzaG9sZDsKKwkgZW5naW5lc190 aHJlc2hvbGRbVklERU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOworCSBlbmdp bmVzX3RocmVzaG9sZFtDT1BZX0VOR0lORV9DTEFTU10udGltZW91dF91cyA9IDA7CisgICAgICAg ICBicmVhazsKKyAgICBjYXNlIEk5MTVfRVhFQ19WRUJPWDoKKyAgICAgICAgIGVuZ2luZXNfdGhy ZXNob2xkW1JFTkRFUl9DTEFTU10udGltZW91dF91cyA9IDA7CisJIGVuZ2luZXNfdGhyZXNob2xk W1ZJREVPX0RFQ09ERV9DTEFTU10udGltZW91dF91cyA9IDA7CisgICAgICAgICBlbmdpbmVzX3Ro cmVzaG9sZFtWSURFT19FTkhBTkNFTUVOVF9DTEFTU10udGltZW91dF91cyA9IHRocmVzaG9sZDsK KwkgZW5naW5lc190aHJlc2hvbGRbQ09QWV9FTkdJTkVfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOwor ICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKwllbmdpbmVzX3RocmVzaG9sZFtSRU5ERVJf Q0xBU1NdLnRpbWVvdXRfdXMgPSAwOworCWVuZ2luZXNfdGhyZXNob2xkW1ZJREVPX0RFQ09ERV9D TEFTU10udGltZW91dF91cyA9IDA7CisJZW5naW5lc190aHJlc2hvbGRbVklERU9fRU5IQU5DRU1F TlRfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOworCWVuZ2luZXNfdGhyZXNob2xkW0NPUFlfRU5HSU5F X0NMQVNTXS50aW1lb3V0X3VzID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCWdlbV9jb250 ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7Cit9CisKK3N0YXRpYyB2b2lkIHNlbmRfY2FuYXJ5KHVp bnQzMl90IGZkLCB1aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVkIGV4ZWNfaWQsIHVpbnQzMl90IHRh cmdldCwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCAqaGFuZGxlLCB1aW50NjRfdCB0aW1lb3V0 KQoreworICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsKKyAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2M7CisgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworICAgIGlndF9zcGluX3QgKnNwaW4gPSBO VUxMOworICAgIAorICAgIGNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7 CisgICAgaW50IGkgPSAwOworICAgIGludCBmZW5jZTsKKworICAgIGdlbV9xdWllc2NlbnRfZ3B1 KGZkKTsKKworICAgIG1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKKyAgICBt ZW1zZXQoJm9iaiwgMCwgc2l6ZW9mKG9iaikpOworICAgIG1lbXNldCgmcmVsb2MsIDAsIHNpemVv ZihyZWxvYykpOworCisgICAgZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihv YmopOworCisgICAgZXhlY2J1Zi5idWZmZXJfY291bnQgPSAyOworICAgIGV4ZWNidWYuZmxhZ3Mg PSBleGVjX2lkIHwgTE9DQUxfRVhFQ19GRU5DRV9PVVQ7CisKKyAgICBvYmpbMF0uaGFuZGxlID0g dGFyZ2V0OworICAgIG9ialsxXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKworICAg IG9ialsxXS5yZWxvY2F0aW9uX2NvdW50ID0gMTsKKyAgICBvYmpbMV0ucmVsb2NzX3B0ciA9IHRv X3VzZXJfcG9pbnRlcigmcmVsb2MpOworCisgICAgcmVsb2MudGFyZ2V0X2hhbmRsZSA9IG9ialsw XS5oYW5kbGU7CisgICAgcmVsb2MucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1B TkQ7CisgICAgcmVsb2Mud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Cisg ICAgcmVsb2MuZGVsdGEgPSBvZmZzZXQgKiBzaXplb2YodWludDMyX3QpOworCisgICAgcmVsb2Mu b2Zmc2V0ID0gaSAqIHNpemVvZih1aW50MzJfdCk7CisgICAgZ2VtX3dyaXRlKGZkLCBvYmpbMV0u aGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJlKSk7CisKKyAgICBfX3N5bmNfc3luY2hyb25pemUo KTsKKworICAgIGlmIChoYW5kbGUpIHsKKyAgICAgICAgKmhhbmRsZSA9IG9ialsxXS5oYW5kbGU7 CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZ2VtX3N5bmMoZmQsIG9ialsxXS5oYW5kbGUp OworICAgIGV4ZWNidWYucnN2ZDEgPSBjdHhfaWQ7CisgICAgZXhlY2J1Zi5yc3ZkMiA9IC0xOwor CisgICAgc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwgLmRlcGVuZGVuY3kgPSBvYmpbMF0u aGFuZGxlKTsKKyAgICBpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChzcGluLCB0aW1lb3V0KTsK KyAgICBpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBvYmpbMF0uaGFuZGxlKSk7CisKKyAgICBn ZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOworICAgIGlndF9zcGluX2JhdGNoX2ZyZWUoZmQs IHNwaW4pOworCisgICAgZmVuY2UgPSBleGVjYnVmLnJzdmQyID4+IDMyOworCisjaWYgMAorICAg IGlndF9pbmZvKCJmZW5jZTolZCwgZmVuY2Ugc3RhdHVzIDogJWQgRUlPOiAlZCBjdHhfaWQ6JWRc biIsZmVuY2UsIHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlKSwtRUlPLCBjdHhfaWQpOworI2VuZGlm CisKKyAgICBjbG9zZShmZW5jZSk7ICAgIAorCisgICAgZ2VtX2Nsb3NlKGZkLCBvYmpbMV0uaGFu ZGxlKTsKKyAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBj cmVhdGVfY3R4X3dpdGhfcHJpb3JpdHkoaW50IGZkLCBpbnQgY3R4X3ByaW8pCit7CisJdWludDMy X3QgY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKworCXN3aXRjaCAoY3R4X3ByaW8pIHsK KwljYXNlIEhJR0g6CisJCV9fZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5KGZkLCBjdHgsIE1BWF9Q UklPKTsKKwkJaWd0X2luZm8oIlNldHRpbmcgTUFYIHByaW9yaXR5ICVkXG4iLCBjdHhfcHJpbyk7 CisJCWJyZWFrOworCWNhc2UgTE9XOgorCQlfX2dlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwg Y3R4LCBNSU5fUFJJTyk7CisJCWlndF9pbmZvKCJTZXR0aW5nIE1JTiBwcmlvcml0eSAlZFxuIiwg Y3R4X3ByaW8pOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3RfaW5mbygiSWdub3JpbmcgY29u dGV4dCBwcmlvcml0eSAlZFxuIiwgY3R4X3ByaW8pOworCQlicmVhazsKKwl9CisJcmV0dXJuIGN0 eDsKK30KKworc3RhdGljIHZvaWQgYmJfZmFjdG9yeSh1aW50MzJfdCBmZCwgdWludDMyX3QgKmN0 eCwgaW50IHByaW8sIHVpbnQ2NF90IHRpbWVvdXQsIGludCBwaWQpCit7CisJdWludDMyX3Qgc2Ny YXRjaDsKKwl1bnNpZ25lZCBpbnQgbmVuZ2luZSA9IDA7CisJdW5zaWduZWQgaW50IGVuZ2luZXNb MTZdOworCWludCBpLCBqOworCXVuc2lnbmVkIGludCBlbmdpbmU7CisKKwlmb3JfZWFjaF9waHlz aWNhbF9lbmdpbmUoZmQsIGVuZ2luZSkKKwkJZW5naW5lc1tuZW5naW5lKytdID0gZW5naW5lOwor CisJaWd0X3JlcXVpcmUobmVuZ2luZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsr KSB7CisJCXNjcmF0Y2ggPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJcHRocmVhZF9tdXRleF9s b2NrKCZsaXN0X2xvY2spOworCisJCWlmIChwcmlvID09IEhJR0gpCisJCQljcmVhdGVfY3R4X3dp dGhfcHJpb3JpdHkoZmQsIEhJR0gpOworCQllbHNlIGlmIChwcmlvID09IExPVykKKwkJCWNyZWF0 ZV9jdHhfd2l0aF9wcmlvcml0eShmZCwgTE9XKTsKKwkJZWxzZQorCQkJY3R4W2pdID0gZ2VtX2Nv bnRleHRfY3JlYXRlKGZkKTsKKworCQlzZW5kX2NhbmFyeShmZCwgY3R4W2pdLCBlbmdpbmVzW2ld LCBzY3JhdGNoLCAwLCBOVUxMLCB0aW1lb3V0KTsKKwkJZ2VtX2Nsb3NlKGZkLCBzY3JhdGNoKTsK KwkJcHRocmVhZF9tdXRleF91bmxvY2soJmxpc3RfbG9jayk7CisJCWorKzsKKwl9Cit9CisKK3N0 YXRpYyB2b2lkIGluamVjdF9oYW5nKHVpbnQzMl90IGZkLCB1bnNpZ25lZCByaW5nLCB1aW50MzJf dCBjdHhfaWQsICB1bnNpZ25lZCBmbGFncykKK3sKKwlpZ3RfaGFuZ190IGhhbmc7CisJaGFuZyA9 IGlndF9oYW5nX2N0eChmZCwgY3R4X2lkLCByaW5nLCBmbGFncyk7CisJZ2VtX3N5bmMoZmQsIGhh bmcuc3Bpbi0+aGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgZ3B1X3dhdGNoZG9nX2xvbmdfYmF0 Y2hfMl9jb250ZXh0cyhpbnQgZmQpCit7CisJdW5zaWduZWQgZmxhZ3MgPSBIQU5HX0FMTE9XX0NB UFRVUkU7CisJaW50IGkgPSAwLCBqPTA7CisKKwlpZ3RfZm9yayhjaGlsZCwgMSkgeworCQkvKiBD aGlsZCBwcm9jZXNzICovCisJCXVpbnQzMl90IGN0eFs1XTsKKwkJY29uc3QgdWludDY0X3QgYmF0 Y2hfdGltZW91dF9tcyA9IHRpbWVvdXRfMTAwbXMqMzsKKwkJbWVtc2V0KCZjdHgsIDAsIHNpemVv ZihjdHgpKTsKKwkJYmJfZmFjdG9yeShmZCwgY3R4LCAtMSwgYmF0Y2hfdGltZW91dF9tcywgc3lz Y2FsbChTWVNfZ2V0dGlkKSk7CisKKwkJc2xlZXAoNik7CisKKwkgICAgCWNvbnRleHRfc2V0X3dh dGNoZG9nKGZkLCAxLCAxLCBXQVRDSERPR19USFJFU0hPTEQpOworCSAgICAJY2xlYXJfZXJyb3Jf c3RhdGUoZmQpOworCisJCS8qIEVuZ2luZSBJRDogUkNTMCwgQ29udGV4dCBJRDogMSAqLworCSAg IAlpbmplY3RfaGFuZyhmZCwgMSwgMSwgZmxhZ3MpOworCisJCWZvciAoaSA9IDA7IGkgPDU7IGkr KykgeworCQkJcHJpbnRmKCJjdHhfY2hpbGQ6ICV1IGN0eF9jbnQ6ICVkIHRpZDolZFxuIixjdHhb aV0sIHN5c2NhbGwoU1lTX2dldHRpZCkpOworCQkJLy9nZW1fY29udGV4dF9kZXN0cm95KGZkLCBj dHhbaV0pOworCQl9CisJfQorCisJeworCQkvKiBQYXJlbnQgcHJvY2VzcyAqLworCQl1aW50MzJf dCBjdHhbNV07CisJCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0aW1lb3V0XzEw MG1zKjE7CisJCW1lbXNldCgmY3R4LCAwLCBzaXplb2YoY3R4KSk7CisJCXByaW50ZigiJXMgJWQg LCB0aWQ6ICVkXG4iLCBfX0ZVTkNUSU9OX18sX19MSU5FX18sIHN5c2NhbGwoU1lTX2dldHRpZCkp OworCQkKKwkJYmJfZmFjdG9yeShmZCwgY3R4LCAtMSwgYmF0Y2hfdGltZW91dF9tcywgc3lzY2Fs bChTWVNfZ2V0dGlkKSk7CisKKwkJc2xlZXAoNik7CisKKwkgICAgCWNvbnRleHRfc2V0X3dhdGNo ZG9nKGZkLCA0LCAxMCwgV0FUQ0hET0dfVEhSRVNIT0xEKTsKKwkgICAgCWNsZWFyX2Vycm9yX3N0 YXRlKGZkKTsKKworICAgICAgICAJLyogRW5naW5lIElEOiBWRUNTMCwgQ29udGV4dCBJRDogMTAg Ki8KKyAgIAkJaW5qZWN0X2hhbmcoZmQsIDQsIDEwLCBmbGFncyk7CisKKwkJZm9yIChpID0gMDsg aSA8NTsgaSsrKSB7CisJCQlpZ3RfaW5mbygiY3R4X2RhZDogJXUgY3R4X2NudDogJWQgdGlkOiVk IFxuIixjdHhbaV0sIGksIHN5c2NhbGwoU1lTX2dldHRpZCkpOworCQkJLy9nZW1fY29udGV4dF9k ZXN0cm95KGZkLCBjdHhbaV0pOworCQl9CisJfQorCisJaWd0X3dhaXRjaGlsZHJlbigpOworfQor CitzdGF0aWMgdm9pZCBncHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUo aW50IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsIGludCBuZW5naW5lKQoreworCXVpbnQzMl90ICpj dHg7CisJaW50IGk7CisJdW5zaWduZWQgZmxhZ3MgPSBIQU5HX0FMTE9XX0NBUFRVUkU7CisJY29u c3QgdWludDY0X3QgYmF0Y2hfdGltZW91dF9tcyA9IHRpbWVvdXRfMTAwbXMqNDsKKworCWlndF9y ZXF1aXJlKG5lbmdpbmUpOworCisJY3R4ID0gKHVpbnQzMl90ICopbWFsbG9jKHNpemVvZih1aW50 MzJfdCkqbmVuZ2luZSk7CisKKwlpZiAoIWN0eCkgeworCQlpZ3RfaW5mbygiT3V0IG9mIG1lbW9y eVxuIik7ICAKKwkJZXhpdCgxKTsKKwl9CisKKwliYl9mYWN0b3J5KGZkLCBjdHgsIC0xLCBiYXRj aF90aW1lb3V0X21zLCBzeXNjYWxsKFNZU19nZXR0aWQpKTsKKwkKKwlpZiAoZW5naW5lX2lkID09 IDEpIHsKKwkJY29udGV4dF9zZXRfd2F0Y2hkb2coZmQsIGVuZ2luZV9pZCwgMSwgV0FUQ0hET0df VEhSRVNIT0xEKTsKKwkJY2xlYXJfZXJyb3Jfc3RhdGUoZmQpOworCQlpbmplY3RfaGFuZyhmZCwg ZW5naW5lX2lkLCAxLCBmbGFncyk7CisJfSBlbHNlIGlmIChlbmdpbmVfaWQgPT0gODE5NCkgewor CQljb250ZXh0X3NldF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCAyLCBXQVRDSERPR19USFJFU0hP TEQpOworCQljbGVhcl9lcnJvcl9zdGF0ZShmZCk7CisJCWluamVjdF9oYW5nKGZkLCBlbmdpbmVf aWQsIDIsIGZsYWdzKTsKKwl9IGVsc2UgaWYgKGVuZ2luZV9pZCA9PSAxNjM4NikgeworCQljb250 ZXh0X3NldF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCAzLCBXQVRDSERPR19USFJFU0hPTEQpOwor CQljbGVhcl9lcnJvcl9zdGF0ZShmZCk7CisJCWluamVjdF9oYW5nKGZkLCBlbmdpbmVfaWQsIDMs IGZsYWdzKTsKKwl9IGVsc2UgaWYgKGVuZ2luZV9pZCA9PSA0KSB7CisJCWNvbnRleHRfc2V0X3dh dGNoZG9nKGZkLCBlbmdpbmVfaWQsIDUsIFdBVENIRE9HX1RIUkVTSE9MRCk7CisJCWNsZWFyX2Vy cm9yX3N0YXRlKGZkKTsKKwkJaW5qZWN0X2hhbmcoZmQsIGVuZ2luZV9pZCwgNSwgZmxhZ3MpOwor CX0KKworCWZvciAoaSA9IDA7IGkgPG5lbmdpbmU7IGkrKykKKwkJZ2VtX2NvbnRleHRfZGVzdHJv eShmZCwgY3R4W2ldKTsKKwlmcmVlKGN0eCk7Cit9CitzdGF0aWMgdm9pZCBub19ncHVfaGFuZ19s b25nX2JhdGNoX2FsbF9lbmdpbmVzKGludCBmZCwgaW50IG5lbmdpbmUsIGludCBwcmlvKQorewor CXVpbnQzMl90ICpjdHg7CisJaW50IGk7CisJY29uc3QgdWludDY0X3QgYmF0Y2hfdGltZW91dF9t cyA9IHRpbWVvdXRfMTAwbXMqNDsKKworCWN0eCA9ICh1aW50MzJfdCAqKW1hbGxvYyhzaXplb2Yo dWludDMyX3QpKm5lbmdpbmUpOworCisJaWYgKCFjdHgpIHsKKwkJcHJpbnRmKCJPdXQgb2YgbWVt b3J5XG4iKTsgIAorCQlleGl0KDEpOworCX0KKworCWJiX2ZhY3RvcnkoZmQsIGN0eCwgcHJpbywg YmF0Y2hfdGltZW91dF9tcywgc3lzY2FsbChTWVNfZ2V0dGlkKSk7CisKKwlmb3IgKGkgPSAwOyBp IDxuZW5naW5lOyBpKyspCisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtpXSk7CisKKwlm cmVlKGN0eCk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZkOworCXVuc2lnbmVkIGludCBuZW5n aW5lID0gMDsKKwl1bnNpZ25lZCBpbnQgZW5naW5lOworCXVuc2lnbmVkIGludCBlbmdpbmVzWzE2 XTsKKworCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKKworCWlndF9maXh0dXJlIHsKKwkJZmQg PSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKKwkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsK KworCQlmb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmQsIGVuZ2luZSkKKwkJCWVuZ2luZXNbbmVu Z2luZSsrXSA9IGVuZ2luZTsKKwkJaWd0X3JlcXVpcmUobmVuZ2luZSk7CisJfQorCisJaWd0X3N1 YnRlc3RfZ3JvdXAgeworCQlpZ3Rfc3VidGVzdF9mKCJuby1ncHUtd2F0Y2hkb2ctbG9uZy1iYXRj aC1hbGwtZW5naW5lcy1uby1wcmlvcml0eSIpIHsKKwkJCWludCBwcmlvID0gLTE7CisJCQlub19n cHVfaGFuZ19sb25nX2JhdGNoX2FsbF9lbmdpbmVzKGZkLCBuZW5naW5lLCBwcmlvKTsKKwkJfQor CisJCWlndF9zdWJ0ZXN0X2YoIm5vLWdwdS13YXRjaGRvZy1sb25nLWJhdGNoLWFsbC1lbmdpbmVz LWxvdy1wcmlvcml0eSIpIHsKKwkJCWludCBwcmlvID0gTE9XOworCQkJbm9fZ3B1X2hhbmdfbG9u Z19iYXRjaF9hbGxfZW5naW5lcyhmZCwgbmVuZ2luZSwgcHJpbyk7CisJCX0KKworCQlpZ3Rfc3Vi dGVzdF9mKCJuby1ncHUtd2F0Y2hkb2ctbG9uZy1iYXRjaC1hbGwtZW5naW5lcy1oaWdoLXByaW9y aXR5IikgeworCQkJaW50IHByaW8gPSBISUdIOworCQkJbm9fZ3B1X2hhbmdfbG9uZ19iYXRjaF9h bGxfZW5naW5lcyhmZCwgbmVuZ2luZSwgcHJpbyk7CisJCX0KKworCQlmb3IgKGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lICplID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUt Pm5hbWU7IGUrKykgeworCQkJLyogbm8gc3VwcG9ydCBmb3IgZ3B1IHdhdGNoZG9nIG9uIEJMVCAq LworCQkJaWYgKGUtPmV4ZWNfaWQgPT0gMCB8fCBlLT5leGVjX2lkID09IEk5MTVfRVhFQ19CTFQp CisJCQkJY29udGludWU7CisKKwkJCWlndF9zdWJ0ZXN0X2YoImdwdS13YXRjaGRvZy1sb25nLWJh dGNoLSVzIiwgZS0+bmFtZSkgeworCQkJCWlndF9yZXF1aXJlKGdlbV9yaW5nX2hhc19waHlzaWNh bF9lbmdpbmUoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncykpOworCQkJCWdwdV93YXRjaG9kZ19o YW5nX2xvbmdfYmF0Y2hfc2luZ2xlX2VuZ2luZShmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzLCBu ZW5naW5lKTsKKwkJCX0KKwkJfQorCisJCWlndF9zdWJ0ZXN0X2YoImdwdS13YXRjaGRvZy1sb25n LWJhdGNoLTItY29udGV4dHMiKSB7CisJCQlncHVfd2F0Y2hkb2dfbG9uZ19iYXRjaF8yX2NvbnRl eHRzKGZkKTsKKwkJfQorICAgIH0KKworICAgIGlndF9maXh0dXJlIHsKKwljbG9zZShmZCk7Cisg ICAgfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWls ZAppbmRleCA1MTY3YTZjLi5iMjgxYjc1IDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAor KysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMjEwLDYgKzIxMCw3IEBAIGk5MTVfcHJvZ3MgPSBb CiAJJ2dlbV91bnJlZl9hY3RpdmVfYnVmZmVycycsCiAJJ2dlbV91c2VycHRyX2JsaXRzJywKIAkn Z2VtX3dhaXQnLAorICAgICAgICAnZ2VtX3dhdGNoZG9nJywKIAknZ2VtX3dvcmthcm91bmRzJywK IAknZ2VtX3dyaXRlX3JlYWRfcmluZ19zd2l0Y2gnLAogCSdpOTE1X2ZiX3RpbGluZycsCi0tIAoy LjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2