From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id A593489160 for ; Tue, 23 Apr 2019 00:11:47 +0000 (UTC) From: Carlos Santa Date: Mon, 22 Apr 2019 17:05:54 -0700 Message-Id: <20190423000554.32274-1-carlos.santa@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC v3] 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 IGR1ZSB0byB3cm9uZyBpbmRleGluZyAoQW50b25pbykKdjM6IG5vIG5lZWQgdG8gZm9yY2UgY2xl YXIgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgc3RydWN0CiAgICB3aGVuIHNldHRpbmcg dGhlIHdhdGNoZG9nIHRpbWVvdXRzIChBbnRvbmlvKQogICAgLXVzZSBnZW1fY29udGV4dF9zZXRf cHJpb3JpdHkoKSBpbnN0ZWFkIHRvIHVzZSBlcnJvciBjaGVja2luZwogICAgLWFsd2F5cyB1c2Ug YSBsb29wZXIgdG8gdGVzdCBhbGwgZW5naW5lcyAoQW50b25pbykKICAgIC1tb2RpZnkgdGVzdCBn cHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUoKQogICAgdG8gdXNlIGEg Y291cGxlIG9mIGJhdGNoZXMgYW5kIHNldCB0aGUgdGltZW91dCBpbiBiZXR3ZWVuIHRoZW0gKEFu dG9uaW8pCiAgICAtbWFrZSB1c2Ugb2YgZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKCkg KEFudG9uaW8pCgpDYzogVXJzdWxpbiBUdnJ0a28gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K Q2M6IEFudG9uaW8gQXJnZW56aWFubyA8YW50b25pby5hcmdlbnppYW5vQGludGVsLmNvbT4KQ2M6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBD YXJsb3MgU2FudGEgPGNhcmxvcy5zYW50YUBpbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUu c291cmNlcyAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIHwgNTE3ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1 aWxkICAgICAgICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA1MjEgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMKCmRpZmYgLS1naXQg YS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCAy MTQ2OThkLi43ZjE3ZjIwIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBi L3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTQ0NCw2ICs0NDQsOSBAQCBnZW1fdXNlcnB0cl9i bGl0c19TT1VSQ0VTID0gaTkxNS9nZW1fdXNlcnB0cl9ibGl0cy5jCiBURVNUU19wcm9ncyArPSBn ZW1fd2FpdAogZ2VtX3dhaXRfU09VUkNFUyA9IGk5MTUvZ2VtX3dhaXQuYwogCitURVNUU19wcm9n cyArPSBnZW1fd2F0Y2hkb2cKK2dlbV93YXRjaGRvZ19TT1VSQ0VTID0gaTkxNS9nZW1fd2F0Y2hk b2cuYworCiBURVNUU19wcm9ncyArPSBnZW1fd29ya2Fyb3VuZHMKIGdlbV93b3JrYXJvdW5kc19T T1VSQ0VTID0gaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1 L2dlbV93YXRjaGRvZy5jIGIvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44Zjc4OWFiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMv aTkxNS9nZW1fd2F0Y2hkb2cuYwpAQCAtMCwwICsxLDUxNyBAQAorLyoKKyAqIENvcHlyaWdodCDC qSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4g VEhFIFNPRlRXQVJFLgorICovCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X3N5c2Zz LmgiCisjaW5jbHVkZSAic3dfc3luYy5oIgorCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1 ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvcG9s bC5oPgorI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KKyNpbmNsdWRlICJpOTE1L2dlbV9yaW5nLmgi CisKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVAkoMTMpCisjZGVmaW5lIExPQ0FM X0k5MTVfRVhFQ19CU0RfUklORzEgCSgxIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCisj ZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfUklORzIgCSgyIDw8IExPQ0FMX0k5MTVfRVhFQ19C U0RfU0hJRlQpCisKKyNkZWZpbmUgTUFYX1BSSU8gTE9DQUxfSTkxNV9DT05URVhUX01BWF9VU0VS X1BSSU9SSVRZCisjZGVmaW5lIE1JTl9QUklPIExPQ0FMX0k5MTVfQ09OVEVYVF9NSU5fVVNFUl9Q UklPUklUWQorI2RlZmluZSBISUdIIDEKKyNkZWZpbmUgTE9XIDAKKyNkZWZpbmUgVFJVRSAxCisj ZGVmaW5lIEZBTFNFIDAKKyNkZWZpbmUgV0FUQ0hET0dfVEhSRVNIT0xEICgxMDApCisjZGVmaW5l IE1BWF9FTkdJTkVTIDUKKyNkZWZpbmUgUkVOREVSX0NMQVNTIDAKKyNkZWZpbmUgVklERU9fREVD T0RFX0NMQVNTIDEKKyNkZWZpbmUgVklERU9fRU5IQU5DRU1FTlRfQ0xBU1MgMgorI2RlZmluZSBD T1BZX0VOR0lORV9DTEFTUyAzCisjZGVmaW5lIExPQ0FMX0k5MTVfQ09OVEVYVF9QQVJBTV9XQVRD SERPRyAweDEwCisKKyNkZWZpbmUgUlNfTk9fRVJST1IgICAgICAwCisjZGVmaW5lIFJTX0JBVENI X0FDVElWRSAgKDEgPDwgMCkKKyNkZWZpbmUgUlNfQkFUQ0hfUEVORElORyAoMSA8PCAxKQorI2Rl ZmluZSBSU19VTktOT1dOICAgICAgICgxIDw8IDIpCisKKyNkZWZpbmUgR0VUX1JFU0VUX1NUQVRT X0lPQ1RMIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyAweDMyLCBzdHJ1Y3QgbG9jYWxfZHJt X2k5MTVfcmVzZXRfc3RhdHMpCitzdHJ1Y3QgbG9jYWxfZHJtX2k5MTVfcmVzZXRfc3RhdHMgewor CV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiByZXNldF9jb3VudDsKKwlfX3Uz MiBiYXRjaF9hY3RpdmU7CisJX191MzIgYmF0Y2hfcGVuZGluZzsKKwlfX3UzMiBwYWQ7Cit9Owor Citjb25zdCB1aW50NjRfdCB0aW1lb3V0XzEwMG1zID0gMTAwMDAwMDAwTEw7CitpbnQgbnVtOwor CitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgeworCXVuaW9uIHsKKwkJc3Ry dWN0IHsKKwkJCS8qCisJCQkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25maWd1 cmVkIG9yIHF1ZXJpZWQuCisJCQkgKi8KKwkJCV9fdTE2IGVuZ2luZV9jbGFzczsKKwkJCV9fdTE2 IGVuZ2luZV9pbnN0YW5jZTsKKwkJfTsKKwkJLyogSW5kZXggYmFzZWQgYWRkcmVzc2luZyBtb2Rl ICovCisJCV9fdTMyIGluZGV4OworCX07CisJLyogR1BVIEVuZ2luZSB3YXRjaGRvZyByZXNldHMg dGltZW91dCBpbiB1cyAqLworCV9fdTMyIHRpbWVvdXRfdXM7Cit9OworCitzdGF0aWMgdm9pZCBj bGVhcl9lcnJvcl9zdGF0ZShpbnQgZmQpCit7CisJaW50IGRpcjsKKworCWRpciA9IGlndF9zeXNm c19vcGVuKGZkKTsKKworCWlmIChkaXIgPCAwKQorCQlyZXR1cm47CisKKwkvKiBBbnkgd3JpdGUg dG8gdGhlIGVycm9yIHN0YXRlIGNsZWFycyBpdCAqLworCWlndF9zeXNmc19zZXQoZGlyLCAiZXJy b3IiLCAiIik7CisJY2xvc2UoZGlyKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBlMnJpbmco aW50IGZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7CisgICAg cmV0dXJuIGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFncyhmZCwgZS0+Y2xhc3MsIGUtPmlu c3RhbmNlKTsKK30KKworc3RhdGljIHZvaWQgY29udGV4dF9zZXRfd2F0Y2hkb2coaW50IGZkLCB1 bnNpZ25lZCBlbmdpbmVfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjdHhfaWQsIHVuc2lnbmVkIHRocmVzaG9sZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3dhdGNoZG9nX3RpbWVvdXQgZW5naW5lc190aHJlc2hvbGRbTUFYX0VOR0lORVNdOworCXN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IExPQ0FMX0k5 MTVfQ09OVEVYVF9QQVJBTV9XQVRDSERPRywKKwkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJLnNpemUg PSBzaXplb2YoZW5naW5lc190aHJlc2hvbGQpLAorCQkudmFsdWUgPSAodWludDY0X3QpJmVuZ2lu ZXNfdGhyZXNob2xkCisJfTsKKworCW1lbXNldCgmZW5naW5lc190aHJlc2hvbGQsIDAsIHNpemVv ZihlbmdpbmVzX3RocmVzaG9sZCkpOworCisJc3dpdGNoIChlbmdpbmVfaWQgJiBJOTE1X0VYRUNf UklOR19NQVNLKSB7CisJY2FzZSBJOTE1X0VYRUNfUkVOREVSOgorCQllbmdpbmVzX3RocmVzaG9s ZFtSRU5ERVJfQ0xBU1NdLnRpbWVvdXRfdXMgPSB0aHJlc2hvbGQ7CisJCWJyZWFrOworCWNhc2Ug STkxNV9FWEVDX0JTRDoKKwkJZW5naW5lc190aHJlc2hvbGRbVklERU9fREVDT0RFX0NMQVNTXS50 aW1lb3V0X3VzID0gdGhyZXNob2xkOworCQlicmVhazsKKwljYXNlIEk5MTVfRVhFQ19WRUJPWDoK KwkJZW5naW5lc190aHJlc2hvbGRbVklERU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRpbWVvdXRfdXMg PSB0aHJlc2hvbGQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCWdlbV9j b250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7Cit9CisKK3N0YXRpYyB2b2lkIGJhdGNoX2J1ZmZl cl9mYWN0b3J5KHVpbnQzMl90IGZkLCB1aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVkIGV4ZWNfaWQs IHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCAqaGFuZGxlLCB1aW50 NjRfdCB0aW1lb3V0LCBpbnQgKmZlbmNlLCBpbnQgZmVuY2VfaW5kZXgpCit7CisgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOworICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKKyAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNi dWZmZXIyIGV4ZWNidWY7CisgICAgaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7CisgICAgY29uc3Qg dWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKyAgICBpbnQgaSA9IDA7CisKKyAg ICBnZW1fcXVpZXNjZW50X2dwdShmZCk7CisKKyAgICBtZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVv ZihleGVjYnVmKSk7CisgICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKKyAgICBtZW1z ZXQoJnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKKworICAgIGV4ZWNidWYuYnVmZmVyc19wdHIg PSB0b191c2VyX3BvaW50ZXIob2JqKTsKKworICAgIGV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMjsK KyAgICBleGVjYnVmLmZsYWdzID0gZXhlY19pZCB8IEk5MTVfRVhFQ19GRU5DRV9PVVQgOworCisg ICAgb2JqWzBdLmhhbmRsZSA9IHRhcmdldDsKKyAgICBvYmpbMV0uaGFuZGxlID0gZ2VtX2NyZWF0 ZShmZCwgNDA5Nik7CisKKyAgICBvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7CisgICAgb2Jq WzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKKworICAgIHJlbG9jLnRh cmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOworICAgIHJlbG9jLnJlYWRfZG9tYWlucyA9IEk5 MTVfR0VNX0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VN X0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLmRlbHRhID0gb2Zmc2V0ICogc2l6ZW9mKHVpbnQz Ml90KTsKKworICAgIHJlbG9jLm9mZnNldCA9IGkgKiBzaXplb2YodWludDMyX3QpOworICAgIGdl bV93cml0ZShmZCwgb2JqWzFdLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkpOworCisgICAg X19zeW5jX3N5bmNocm9uaXplKCk7CisKKyAgICBpZiAoaGFuZGxlKSB7CisgICAgICAgICpoYW5k bGUgPSBvYmpbMV0uaGFuZGxlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2VtX3N5 bmMoZmQsIG9ialsxXS5oYW5kbGUpOworICAgIGV4ZWNidWYucnN2ZDEgPSBjdHhfaWQ7CisgICAg ZXhlY2J1Zi5yc3ZkMiA9IC0xOworCisgICAgc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwg LmRlcGVuZGVuY3kgPSBvYmpbMF0uaGFuZGxlKTsKKyAgICBpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGlt ZW91dChzcGluLCB0aW1lb3V0KTsKKyAgICBpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBvYmpb MF0uaGFuZGxlKSk7CisKKyAgICBnZW1fZXhlY2J1Zl93cihmZCwgJmV4ZWNidWYpOworICAgIGln dF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCisgICAgZmVuY2VbZmVuY2VfaW5kZXhdID0g ZXhlY2J1Zi5yc3ZkMiA+PiAzMjsKKworICAgIGdlbV9jbG9zZShmZCwgb2JqWzFdLmhhbmRsZSk7 CisgICAgZ2VtX3F1aWVzY2VudF9ncHUoZmQpOworfQorCitzdGF0aWMgdWludDMyX3QgY3JlYXRl X2N0eF93aXRoX3ByaW9yaXR5KGludCBmZCwgaW50IGN0eF9wcmlvKQoreworCXVpbnQzMl90IGN0 eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisKKwlzd2l0Y2ggKGN0eF9wcmlvKSB7CisJY2Fz ZSBISUdIOgorCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eCwgTUFYX1BSSU8pOwor CQlpZ3RfaW5mbygiU2V0dGluZyBNQVggcHJpb3JpdHkgJWRcbiIsIGN0eF9wcmlvKTsKKwkJYnJl YWs7CisJY2FzZSBMT1c6CisJCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4LCBNSU5f UFJJTyk7CisJCWlndF9pbmZvKCJTZXR0aW5nIE1JTiBwcmlvcml0eSAlZFxuIiwgY3R4X3ByaW8p OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpZ3RfaW5mbygiSWdub3JpbmcgY29udGV4dCBwcmlv cml0eSAlZFxuIiwgY3R4X3ByaW8pOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gY3R4OworfQor CitzdGF0aWMgaW50IGdlbV9yZXNldF9zdGF0cyhpbnQgZmQsIGludCBjdHhfaWQsCisJCQkgICBz dHJ1Y3QgbG9jYWxfZHJtX2k5MTVfcmVzZXRfc3RhdHMgKnJzKQoreworCW1lbXNldChycywgMCwg c2l6ZW9mKCpycykpOworCXJzLT5jdHhfaWQgPSBjdHhfaWQ7CisJcnMtPnJlc2V0X2NvdW50ID0g LTE7CisKKwlpZiAoZHJtSW9jdGwoZmQsIEdFVF9SRVNFVF9TVEFUU19JT0NUTCwgcnMpKSB7CisJ CXByaW50ZigiZXJyb3I6JWRcbiIsLWVycm5vKTsKKwkJcmV0dXJuIC1lcnJubzsKKwl9CisJaWd0 X2Fzc2VydChycy0+cmVzZXRfY291bnQgIT0gLTEpOworCXJldHVybiAwOworfQorCitzdGF0aWMg dW5zaWduZWQgaW5kZXhfdG9fZW5naW5lX2lkKGludCBmZCwgaW50IGluZGV4KQoreworCXVuc2ln bmVkIGVuZ2luZV9pZCA9IEk5MTVfRVhFQ19SRU5ERVI7CisKKwlzd2l0Y2ggKGluZGV4KSB7CisJ Y2FzZSAxOgorCQllbmdpbmVfaWQgPSBJOTE1X0VYRUNfUkVOREVSOworCQlicmVhazsKKwljYXNl IDI6CisJCWlmIChnZW1faGFzX2JzZDIoZmQpKQorCQkJZW5naW5lX2lkID0gSTkxNV9FWEVDX0JT RCB8IEk5MTVfRVhFQ19CU0RfUklORzE7CisJCWVsc2UKKwkJCWVuZ2luZV9pZCA9IEk5MTVfRVhF Q19CU0Q7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJaWYgKGdlbV9oYXNfYnNkMihmZCkpCisJCQll bmdpbmVfaWQgPSBJOTE1X0VYRUNfQlNEIHwgSTkxNV9FWEVDX0JTRF9SSU5HMjsKKwkJZWxzZQor CQkJZW5naW5lX2lkID0gSTkxNV9FWEVDX0JTRDsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQllbmdp bmVfaWQgPSBJOTE1X0VYRUNfVkVCT1g7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOwor CX0KKworCXJldHVybiBlbmdpbmVfaWQ7Cit9CisKK3N0YXRpYyB2b2lkIGluamVjdF9oYW5nKHVp bnQzMl90IGZkLCB1bnNpZ25lZCBlbmdpbmVfaWQsIHVpbnQzMl90IGN0eF9pZCwgIHVuc2lnbmVk IGZsYWdzKQoreworCWlndF9oYW5nX3QgaGFuZzsKKwloYW5nID0gaWd0X2hhbmdfY3R4KGZkLCBj dHhfaWQsIGVuZ2luZV9pZCwgZmxhZ3MpOworCWdlbV9zeW5jKGZkLCBoYW5nLnNwaW4tPmhhbmRs ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGdwdV93YXRjaGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMo aW50IGZkLCBpbnQgbmVuZ2luZSwgaW50IHByaW9fY3R4MSwgaW50IHJlc2V0X2N0eDEsIGludCBw cmlvX2N0eDIsIGludCByZXNldF9jdHgyKQoreworCXVpbnQzMl90IGN0eFs0OF07CisJdWludDMy X3Qgc2NyYXRjaFs0OF07CisJdW5zaWduZWQgZmxhZ3MgPSBIQU5HX0FMTE9XX0NBUFRVUkU7CisJ Y29uc3QgdWludDY0X3QgYmF0Y2hfdGltZW91dF9tcyA9IHRpbWVvdXRfMTAwbXMgKiAzOworCWNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTsKKwljb25zdCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyOworCWludCBpID0gMCwgaW5kZXggPSAwLCBlbmdpbmVf aWQgPSAwLCBjdHhfY250ID0gMDsKKwlpbnQgKmZlbmNlID0gMCwgYWN0aXZlX2NvdW50ID0gMDsK KwlzdHJ1Y3QgbG9jYWxfZHJtX2k5MTVfcmVzZXRfc3RhdHMgcnM7CisKKwlpZ3RfcmVxdWlyZShu ZW5naW5lKTsKKworCWZlbmNlID0gKGludCAqKW1hbGxvYyhzaXplb2YoaW50KSAqIDQ4KTsKKwor CWlmICghZmVuY2UpIHsKKwkJaWd0X2luZm8oIk91dCBvZiBtZW1vcnlcbiIpOworCQlleGl0KDEp OworCX0KKworCS8qIEludGlhbGl6ZXMgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKi8KKwlzcmFu ZCgodW5zaWduZWQpIHRpbWUoTlVMTCkpOworCisJLyogVGhlIG91dGVyIGxvb3BlciBpcyBjdHgx IGFuZCB0aGUgaW5uZXIgbG9vcGVyIGlzIGN0eDIKKwkgKiBCb3RoIGNvbnRleHRzIGNhbiBzZXQg dGhlaXIgcHJpb3JpdHksIGNyZWF0ZSB3b3JrLCBhbmQgY2FuY2VsIHRoZW1zZWx2ZXMKKwkgKi8K Kwlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZmQsIGUpIHsKKwkJaWYgKCBzdHJjbXAo ZS0+bmFtZSwgImJjczAiKSA9PSAwICkKKwkJCWNvbnRpbnVlOworCisJCXNjcmF0Y2hbY3R4X2Nu dF0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJaW5kZXggPSByYW5kKCkgJSA0ICsgMTsKKwkJ ZW5naW5lX2lkID0gaW5kZXhfdG9fZW5naW5lX2lkKGZkLCBpbmRleCk7CisKKwkJLyogZ2V0IGN1 cnJlbnQgYmF0Y2hfYWN0aXZlIGNvdW50ICovCisJCWlndF9hc3NlcnRfZXEoZ2VtX3Jlc2V0X3N0 YXRzKGZkLCAwLCAmcnMpLCAwKTsKKwkJYWN0aXZlX2NvdW50ID0gcnMuYmF0Y2hfYWN0aXZlOwor CQlpZ3RfYXNzZXJ0X2VxKHJzLmJhdGNoX2FjdGl2ZSwgYWN0aXZlX2NvdW50KTsKKworCQljdHhb Y3R4X2NudF0gPSBjcmVhdGVfY3R4X3dpdGhfcHJpb3JpdHkoZmQsIHByaW9fY3R4MSk7CisJCWJh dGNoX2J1ZmZlcl9mYWN0b3J5KGZkLCBjdHhbY3R4X2NudF0sIGVuZ2luZV9pZCwgc2NyYXRjaFtj dHhfY250XSwgMCwgTlVMTCwgYmF0Y2hfdGltZW91dF9tcywgZmVuY2UsIGN0eF9jbnQpOworCQlj b250ZXh0X3NldF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCBjdHhbY3R4X2NudF0sIFdBVENIRE9H X1RIUkVTSE9MRCk7CisJCXNsZWVwKDEpOworCisJCWlmIChyZXNldF9jdHgxKSB7CisJCQljbGVh cl9lcnJvcl9zdGF0ZShmZCk7CisJCQlpbmplY3RfaGFuZyhmZCwgZW5naW5lX2lkLCBjdHhbY3R4 X2NudF0sIGZsYWdzKTsKKwkJCWFjdGl2ZV9jb3VudCsrOworCQl9CisKKwkJLyogY2hlY2sgYmF0 Y2hfYWN0aXZlIGNvdW50IG9uY2UgYWdhaW4gYWZ0ZXIgdGhlIGhhbmcgKi8KKwkJaWd0X2Fzc2Vy dF9lcShnZW1fcmVzZXRfc3RhdHMoZmQsIDAsICZycyksIDApOworCQlpZ3RfYXNzZXJ0X2VxKHJz LmJhdGNoX2FjdGl2ZSwgYWN0aXZlX2NvdW50KTsKKworCQljdHhfY250Kys7CisJCWkgPSAxOwor CisJCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZCwgZTIpIHsKKwkJCWlmICggc3Ry Y21wKGUtPm5hbWUsICJiY3MwIikgPT0gMCApCisJCQkJY29udGludWU7CisKKwkJCXNjcmF0Y2hb Y3R4X2NudF0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJCWVuZ2luZV9pZCA9IGluZGV4X3Rv X2VuZ2luZV9pZChmZCwgaSk7CisKKwkJCS8qIGdldCBjdXJyZW50IGJhdGNoX2FjdGl2ZSBjb3Vu dCAqLworCQkJaWd0X2Fzc2VydF9lcShnZW1fcmVzZXRfc3RhdHMoZmQsIDAsICZycyksIDApOwor CQkJYWN0aXZlX2NvdW50ID0gcnMuYmF0Y2hfYWN0aXZlOworCQkJaWd0X2Fzc2VydF9lcShycy5i YXRjaF9hY3RpdmUsIGFjdGl2ZV9jb3VudCk7CisKKwkJCWN0eFtjdHhfY250XSA9IGNyZWF0ZV9j dHhfd2l0aF9wcmlvcml0eShmZCwgcHJpb19jdHgyKTsKKwkJCWJhdGNoX2J1ZmZlcl9mYWN0b3J5 KGZkLCBjdHhbY3R4X2NudF0sIGVuZ2luZV9pZCwgc2NyYXRjaFtjdHhfY250XSwgMCwgTlVMTCwg YmF0Y2hfdGltZW91dF9tcywgZmVuY2UsIGN0eF9jbnQpOworCQkJY29udGV4dF9zZXRfd2F0Y2hk b2coZmQsIGVuZ2luZV9pZCwgY3R4W2N0eF9jbnRdLCBXQVRDSERPR19USFJFU0hPTEQpOworCisJ CQlpZiAocmVzZXRfY3R4MikgeworCQkJCWNsZWFyX2Vycm9yX3N0YXRlKGZkKTsKKwkJCQlpbmpl Y3RfaGFuZyhmZCwgZW5naW5lX2lkLCBjdHhbY3R4X2NudF0sIGZsYWdzKTsKKwkJCQlhY3RpdmVf Y291bnQrKzsKKwkJCX0KKworCQkJLyogY2hlY2sgYmF0Y2hfYWN0aXZlIGNvdW50IG9uY2UgYWdh aW4gYWZ0ZXIgdGhlIGhhbmcgKi8KKwkJCWlndF9hc3NlcnRfZXEoZ2VtX3Jlc2V0X3N0YXRzKGZk LCAwLCAmcnMpLCAwKTsKKwkJCWlndF9hc3NlcnRfZXEocnMuYmF0Y2hfYWN0aXZlLCBhY3RpdmVf Y291bnQpOworCisJCQljdHhfY250Kys7CisJCQlpKys7CisJCX0KKwl9CisKKwlmb3IgKGkgPSAw OyBpIDwgY3R4X2NudDsgaSsrKSB7CisJCWNsb3NlKGZlbmNlW2ldKTsKKwkJZ2VtX2NvbnRleHRf ZGVzdHJveShmZCwgY3R4W2ldKTsKKwkJZ2VtX2Nsb3NlKGZkLCBzY3JhdGNoW2ldKTsKKwl9Cit9 CisKK3N0YXRpYyB2b2lkIGdwdV93YXRjaG9kZ19oYW5nX2xvbmdfYmF0Y2hfc2luZ2xlX2VuZ2lu ZShpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJdWludDMyX3QgY3R4WzE2XTsKKwl1aW50 MzJfdCBzY3JhdGNoWzE2XTsKKwlpbnQgKmZlbmNlOworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZTsKKwl1bnNpZ25lZCBuZW5naW5lID0gMDsKKwl1bnNpZ25lZCBlbmdp bmVfaWQgPSAwOworCWludCBhY3RpdmVfY291bnQgPSAwOworCXN0cnVjdCBsb2NhbF9kcm1faTkx NV9yZXNldF9zdGF0cyByczsKKwlpbnQgaTsKKwl1bnNpZ25lZCBmbGFncyA9IEhBTkdfQUxMT1df Q0FQVFVSRTsKKwljb25zdCB1aW50NjRfdCBiYXRjaF90aW1lb3V0X21zID0gdGltZW91dF8xMDBt cyAqIDQ7CisKKwlmZW5jZSA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkqMTYpOworCisJaWYg KCFmZW5jZSkgeworCQlpZ3RfaW5mbygiT3V0IG9mIG1lbW9yeVxuIik7CisJCWV4aXQoMSk7CisJ fQorCisJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCBlKSB7CisJCWlmICggc3Ry Y21wKGUtPm5hbWUsICJiY3MwIikgPT0gMCApCisJCQljb250aW51ZTsKKworCQllbmdpbmVfaWQg PSBlMnJpbmcoZmQsIGUpOworCisJCXNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0 MDk2KTsKKwkJY3R4W25lbmdpbmVdID0gY3JlYXRlX2N0eF93aXRoX3ByaW9yaXR5KGZkLCAtMSk7 CisKKwkJLyogZ2V0IGN1cnJlbnQgYmF0Y2hfYWN0aXZlIGNvdW50ICovCisJCWlndF9hc3NlcnRf ZXEoZ2VtX3Jlc2V0X3N0YXRzKGZkLCAwLCAmcnMpLCAwKTsKKwkJYWN0aXZlX2NvdW50ID0gcnMu YmF0Y2hfYWN0aXZlOworCQlpZ3RfYXNzZXJ0X2VxKHJzLmJhdGNoX2FjdGl2ZSwgYWN0aXZlX2Nv dW50KTsKKworCQkvKiBjcmVhdGUgc29tZSB3b3JrIG9uIHRoaXMgZW5naW5lIHVzaW5nIHRoZSBh Ym92ZSBjdHgqLworCQliYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgY3R4W25lbmdpbmVdLCBlbmdp bmVfaWQsIHNjcmF0Y2hbbmVuZ2luZV0sIDAsIE5VTEwsIGJhdGNoX3RpbWVvdXRfbXMsIGZlbmNl LCBuZW5naW5lKTsKKworCQkvKiBzZXQgdGhlIGdwdSB3YXRjaGRvZyB0aW1lb3V0ICovCisJCWNv bnRleHRfc2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGN0eFtuZW5naW5lXSwgV0FUQ0hET0df VEhSRVNIT0xEKTsKKwkJY2xlYXJfZXJyb3Jfc3RhdGUoZmQpOworCisJCS8qCisJCSAqIGdpdmUg ZW5vdWdoIHRpbWUgZm9yIHRoZSBiYXRjaCBidWZmZXIgdG8gcnVuCisJCSAqLworCQluYW5vc2xl ZXAoJihzdHJ1Y3QgdGltZXNwZWMpeyAudHZfc2VjID0gMCwKKwkJCQkJICAgICAgLnR2X25zZWMg PSBiYXRjaF90aW1lb3V0X21zICogMiB9LCBOVUxMKTsKKworCQkvKiBjcmVhdGUgc29tZSB3b3Jr IG9uIHRoaXMgZW5naW5lIHVzaW5nIHRoZSBhYm92ZSBjdHgqLworCQliYXRjaF9idWZmZXJfZmFj dG9yeShmZCwgY3R4W25lbmdpbmVdLCBlbmdpbmVfaWQsIHNjcmF0Y2hbbmVuZ2luZV0sIDAsIE5V TEwsIGJhdGNoX3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKKwkJY29udGV4dF9zZXRfd2F0 Y2hkb2coZmQsIGVuZ2luZV9pZCwgY3R4W25lbmdpbmVdLCBXQVRDSERPR19USFJFU0hPTEQpOwor CQljbGVhcl9lcnJvcl9zdGF0ZShmZCk7CisKKwkJLyogY2FuY2VsIG9ubHkgdGhlIGJhdGNoIHJl cXVlc3RlZCAqLworCQlpZiAoIHN0cmNtcChlLT5uYW1lLCBuYW1lKSA9PSAwICkgeworCQkJaW5q ZWN0X2hhbmcoZmQsIGVuZ2luZV9pZCwgY3R4W25lbmdpbmVdLCBmbGFncyk7CisJCQlhY3RpdmVf Y291bnQrKzsKKwkJfQorCisJCS8qIGNoZWNrIGJhdGNoX2FjdGl2ZSBjb3VudCBvbmNlIGFnYWlu IGFmdGVyIHRoZSBoYW5nICovCisJCWlndF9hc3NlcnRfZXEoZ2VtX3Jlc2V0X3N0YXRzKGZkLCAw LCAmcnMpLCAwKTsKKwkJYWN0aXZlX2NvdW50ID0gcnMuYmF0Y2hfYWN0aXZlOworCQlpZ3RfYXNz ZXJ0X2VxKHJzLmJhdGNoX2FjdGl2ZSwgYWN0aXZlX2NvdW50KTsKKworCQluZW5naW5lKys7CisJ fQorCisJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgeworCQljbG9zZShmZW5jZVtpXSk7 CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtpXSk7CisJCWdlbV9jbG9zZShmZCwgc2Ny YXRjaFtpXSk7CisJfQorfQorCitpZ3RfbWFpbgoreworCWludCBmZDsKKwl1bnNpZ25lZCBpbnQg bmVuZ2luZSA9IDA7CisJdW5zaWduZWQgaW50IGVuZ2luZTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisKKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7CisKKwlp Z3RfZml4dHVyZSB7CisJCWZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWln dF9yZXF1aXJlX2dlbShmZCk7CisKKwkJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdp bmUpCisJCQluZW5naW5lKys7CisJCWlndF9yZXF1aXJlKG5lbmdpbmUpOworCX0KKworCWlndF9z dWJ0ZXN0X2dyb3VwIHsKKworCQlpZ3Rfc3VidGVzdF9mKCJncHUtd2F0Y2hkb2ctbG9uZy1iYXRj aC1sb3ctcHJpby1jdHgxLXJlc2V0LWN0eDItaGlnaC1wcmlvLWV4ZWN1dGUiKSB7CisJCQlpbnQg cHJpb19jdHgxID0gTE9XOworCQkJaW50IHByaW9fY3R4MiA9IEhJR0g7CisJCQlpbnQgcmVzZXRf Y3R4MSA9IFRSVUU7CisJCQlpbnQgcmVzZXRfY3R4MiA9IEZBTFNFOworCQkJZ3B1X3dhdGNoZG9n X2xvbmdfYmF0Y2hfMl9jb250ZXh0cyhmZCwgbmVuZ2luZSwgcHJpb19jdHgxLCByZXNldF9jdHgx LCBwcmlvX2N0eDIsIHJlc2V0X2N0eDIpOworCQl9CisKKwkJaWd0X3N1YnRlc3RfZigiZ3B1LXdh dGNoZG9nLWxvbmctYmF0Y2gtaGlnaC1wcmlvLWN0eDEtcmVzZXQtY3R4Mi1sb3ctcHJpby1leGVj dXRlIikgeworCQkJaW50IHByaW9fY3R4MSA9IEhJR0g7CisJCQlpbnQgcHJpb19jdHgyID0gTE9X OworCQkJaW50IHJlc2V0X2N0eDEgPSBUUlVFOworCQkJaW50IHJlc2V0X2N0eDIgPSBGQUxTRTsK KwkJCWdwdV93YXRjaGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMoZmQsIG5lbmdpbmUsIHByaW9f Y3R4MSwgcmVzZXRfY3R4MSwgcHJpb19jdHgyLCByZXNldF9jdHgyKTsKKwkJfQorCisJCWlndF9z dWJ0ZXN0X2YoImdwdS13YXRjaGRvZy1sb25nLWJhdGNoLWN0eDEtcmVzZXQtY3R4Mi1leGVjdXRl IikgeworCQkJaW50IHByaW9fY3R4MSA9IC0xOworCQkJaW50IHByaW9fY3R4MiA9IC0xOworCQkJ aW50IHJlc2V0X2N0eDEgPSBUUlVFOworCQkJaW50IHJlc2V0X2N0eDIgPSBGQUxTRTsKKwkJCWdw dV93YXRjaGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMoZmQsIG5lbmdpbmUsIHByaW9fY3R4MSwg cmVzZXRfY3R4MSwgcHJpb19jdHgyLCByZXNldF9jdHgyKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0 X2YoImdwdS13YXRjaGRvZy1sb25nLWJhdGNoLWN0eDEtZXhlY3V0ZS1jdHgyLXJlc2V0Iikgewor CQkJaW50IHByaW9fY3R4MSA9IC0xOworCQkJaW50IHByaW9fY3R4MiA9IC0xOworCQkJaW50IHJl c2V0X2N0eDEgPSBGQUxTRTsKKwkJCWludCByZXNldF9jdHgyID0gVFJVRTsKKwkJCWdwdV93YXRj aGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMoZmQsIG5lbmdpbmUsIHByaW9fY3R4MSwgcmVzZXRf Y3R4MSwgcHJpb19jdHgyLCByZXNldF9jdHgyKTsKKwkJfQorCisJCWlndF9zdWJ0ZXN0X2YoImdw dS13YXRjaGRvZy1sb25nLWJhdGNoLWN0eDEtZXhlY3V0ZS1jdHgyLWV4ZWN1dGUiKSB7CisJCQlp bnQgcHJpb19jdHgxID0gLTE7CisJCQlpbnQgcHJpb19jdHgyID0gLTE7CisJCQlpbnQgcmVzZXRf Y3R4MSA9IEZBTFNFOworCQkJaW50IHJlc2V0X2N0eDIgPSBGQUxTRTsKKwkJCWdwdV93YXRjaGRv Z19sb25nX2JhdGNoXzJfY29udGV4dHMoZmQsIG5lbmdpbmUsIHByaW9fY3R4MSwgcmVzZXRfY3R4 MSwgcHJpb19jdHgyLCByZXNldF9jdHgyKTsKKwkJfQorCisJICAgICAgIF9fZm9yX2VhY2hfZW5n aW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKKwkJCWlndF9zdWJ0ZXN0X2dyb3VwIHsKKwkJCQlpZ3Rf Zml4dHVyZSB7CisJCQkJZ2VtX3JlcXVpcmVfZW5naW5lKGZkLAorCQkJCQllLT5jbGFzcywKKwkJ CQkJZS0+aW5zdGFuY2UpOworCQkJCX0KKwkJCS8qIG5vIHN1cHBvcnQgZm9yIGdwdSB3YXRjaGRv ZyBvbiBiY3MwICovCisJCQlpZiAoc3RyY21wKGUtPm5hbWUsICJiY3MwIikgPT0gMCkKKwkJCQlj b250aW51ZTsKKworCQkgICAgICAgICAgICBpZ3Rfc3VidGVzdF9mKCJncHUtd2F0Y2hkb2ctbG9u Zy1iYXRjaC1zaW5nbGUtZW5naW5lLXJlc2V0LSVzIiwgZS0+bmFtZSkKKwkJICAgICAgICAgICAg ICAgIGdwdV93YXRjaG9kZ19oYW5nX2xvbmdfYmF0Y2hfc2luZ2xlX2VuZ2luZShmZCwgZS0+bmFt ZSk7CisJCQl9CisJCX0KKwl9CisKKyAgICBpZ3RfZml4dHVyZSB7CisJY2xvc2UoZmQpOworICAg IH0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQK aW5kZXggNTE2N2E2Yy4uYjI4MWI3NSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysr IGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTIxMCw2ICsyMTAsNyBAQCBpOTE1X3Byb2dzID0gWwog CSdnZW1fdW5yZWZfYWN0aXZlX2J1ZmZlcnMnLAogCSdnZW1fdXNlcnB0cl9ibGl0cycsCiAJJ2dl bV93YWl0JywKKyAgICAgICAgJ2dlbV93YXRjaGRvZycsCiAJJ2dlbV93b3JrYXJvdW5kcycsCiAJ J2dlbV93cml0ZV9yZWFkX3Jpbmdfc3dpdGNoJywKIAknaTkxNV9mYl90aWxpbmcnLAotLSAKMi43 LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1k ZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==