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 ED99789319 for ; Fri, 19 Apr 2019 21:29:38 +0000 (UTC) References: <20190418165337.23438-1-carlos.santa@intel.com> From: Antonio Argenziano Message-ID: <8529680f-c95b-08db-4526-2c2eae34a14d@intel.com> Date: Fri, 19 Apr 2019 14:29:38 -0700 MIME-Version: 1.0 In-Reply-To: <20190418165337.23438-1-carlos.santa@intel.com> Content-Language: en-US Subject: Re: [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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Carlos Santa , igt-dev@lists.freedesktop.org Cc: Ursulin Tvrtko List-ID: CgpPbiAxOC8wNC8xOSAwOTo1MywgQ2FybG9zIFNhbnRhIHdyb3RlOgo+IFRoaXMgdGVzdCBhZGRz IGJhc2ljIHNldCBvZiB0ZXN0cyB0byByZXNldCB0aGUgZGlmZmVyZW50Cj4gR1BVIGVuZ2luZXMg dGhyb3VnaCB0aGUgZ3B1IHdhdGNoZG9nIHRpbWVyLgo+IAo+IENyZWRpdHMgdG8gQW50b25pbyBm b3IgdGhlIG9yaWdpbmFsIGNvZGViYXNlIHRoaXMgaXMgYmFzZWQgb24uCj4gCj4gdjI6IHJlbW92 ZSBnZW1fY29udGV4dF9nZXRfcGFyYW0oKSBkdXJpbmcgc2V0IChBbnRvbmlvKQo+ICAgICAgcmVt b3ZlIGNsZWFyaW5nIG9mIHRoZSBlbmdpbmVzX3RocmVzaG9sZFtdIGluIHRoZSBkZWZhdWx0IGNh c2UKPiAgICAgIGluc2lkZSBjb250ZXh0X3NldF93YXRjaGRvZygpLiAoQW50b25pbykKPiAgICAg IGZpeCBpbmRleGluZyB3aGVuIGNyZWF0aW5nIGxvdy9oaWdoIHByaW9yaXR5IGNvbnRleHRzCj4g ICAgICBnZXQgcmlkIG9mIDIgdGhyZWFkcyBpZGVhIChBbnRvbmlvKQo+ICAgICAgZml4IGNvbnRl eHQgcHJpbyBidWcgZHVlIHRvIHdyb25nIGluZGV4aW5nIChBbnRvbmlvKQo+IAo+IENjOiBVcnN1 bGluIFR2cnRrbyA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBBbnRvbmlvIEFyZ2Vu emlhbm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IFNpZ25lZC1vZmYtYnk6IENhcmxvcyBTYW50YSA8 Y2FybG9zLnNhbnRhQGludGVsLmNvbT4KPiAtLS0KPiAgIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMg ICAgfCAgIDMgKwo+ICAgdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYyB8IDM2NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICB0ZXN0cy9tZXNvbi5idWls ZCAgICAgICAgIHwgICAxICsKPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzcwIGluc2VydGlvbnMoKykK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jCj4gCj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz Cj4gaW5kZXggMjE0Njk4ZC4uN2YxN2YyMCAxMDA2NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC00NDQsNiArNDQ0LDkg QEAgZ2VtX3VzZXJwdHJfYmxpdHNfU09VUkNFUyA9IGk5MTUvZ2VtX3VzZXJwdHJfYmxpdHMuYwo+ ICAgVEVTVFNfcHJvZ3MgKz0gZ2VtX3dhaXQKPiAgIGdlbV93YWl0X1NPVVJDRVMgPSBpOTE1L2dl bV93YWl0LmMKPiAgIAo+ICtURVNUU19wcm9ncyArPSBnZW1fd2F0Y2hkb2cKPiArZ2VtX3dhdGNo ZG9nX1NPVVJDRVMgPSBpOTE1L2dlbV93YXRjaGRvZy5jCj4gKwo+ICAgVEVTVFNfcHJvZ3MgKz0g Z2VtX3dvcmthcm91bmRzCj4gICBnZW1fd29ya2Fyb3VuZHNfU09VUkNFUyA9IGk5MTUvZ2VtX3dv cmthcm91bmRzLmMKPiAgIAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5j IGIvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uZTZjMWFiZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi90ZXN0cy9pOTE1L2dl bV93YXRjaGRvZy5jCj4gQEAgLTAsMCArMSwzNjYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKp IDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiAr ICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO Rwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICov Cj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgImlndF9zeXNmcy5oIgo+ICsjaW5jbHVk ZSAic3dfc3luYy5oIgo+ICsKPiArI2luY2x1ZGUgPHB0aHJlYWQuaD4KPiArI2luY2x1ZGUgPGZj bnRsLmg+Cj4gKwo+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gKyNpbmNsdWRlIDxzeXMvcG9s bC5oPgo+ICsjaW5jbHVkZSA8c3lzL3NpZ25hbC5oPgo+ICsjaW5jbHVkZSAiaTkxNS9nZW1fcmlu Zy5oIgo+ICsKPiArI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUCSgxMykKPiArI2Rl ZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX1JJTkcxIAkoMSA8PCBMT0NBTF9JOTE1X0VYRUNfQlNE X1NISUZUKQo+ICsjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfUklORzIgCSgyIDw8IExPQ0FM X0k5MTVfRVhFQ19CU0RfU0hJRlQpCj4gKwo+ICsjZGVmaW5lIE1BWF9QUklPIExPQ0FMX0k5MTVf Q09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQo+ICsjZGVmaW5lIE1JTl9QUklPIExPQ0FMX0k5MTVf Q09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQo+ICsjZGVmaW5lIEhJR0ggMQo+ICsjZGVmaW5lIExP VyAwCj4gKyNkZWZpbmUgV0FUQ0hET0dfVEhSRVNIT0xEICgxMDApCj4gKyNkZWZpbmUgTUFYX0VO R0lORVMgNQo+ICsjZGVmaW5lIFJFTkRFUl9DTEFTUyAwCj4gKyNkZWZpbmUgVklERU9fREVDT0RF X0NMQVNTIDEKPiArI2RlZmluZSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUyAyCj4gKyNkZWZpbmUg Q09QWV9FTkdJTkVfQ0xBU1MgMwo+ICsjZGVmaW5lIExPQ0FMX0k5MTVfQ09OVEVYVF9QQVJBTV9X QVRDSERPRyAweDEwCj4gKwo+ICtjb25zdCB1aW50NjRfdCB0aW1lb3V0XzEwMG1zID0gMTAwMDAw MDAwTEw7Cj4gK2ludCBudW07Cj4gKwo+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3Rp bWVvdXQgewo+ICsJdW5pb24gewo+ICsJCXN0cnVjdCB7Cj4gKwkJCS8qCj4gKwkJCSAqIEVuZ2lu ZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmllZC4KPiArCQkJICov Cj4gKwkJCV9fdTE2IGVuZ2luZV9jbGFzczsKPiArCQkJX191MTYgZW5naW5lX2luc3RhbmNlOwo+ ICsJCX07Cj4gKwkJLyogSW5kZXggYmFzZWQgYWRkcmVzc2luZyBtb2RlICovCj4gKwkJX191MzIg aW5kZXg7Cj4gKwl9Owo+ICsJLyogR1BVIEVuZ2luZSB3YXRjaGRvZyByZXNldHMgdGltZW91dCBp biB1cyAqLwo+ICsJX191MzIgdGltZW91dF91czsKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGNs ZWFyX2Vycm9yX3N0YXRlKGludCBmZCkKPiArewo+ICsJaW50IGRpcjsKPiArCj4gKwlkaXIgPSBp Z3Rfc3lzZnNfb3BlbihmZCk7Cj4gKwo+ICsJaWYgKGRpciA8IDApCj4gKwkJcmV0dXJuOwo+ICsK PiArCS8qIEFueSB3cml0ZSB0byB0aGUgZXJyb3Igc3RhdGUgY2xlYXJzIGl0ICovCj4gKwlpZ3Rf c3lzZnNfc2V0KGRpciwgImVycm9yIiwgIiIpOwo+ICsJY2xvc2UoZGlyKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgY29udGV4dF9zZXRfd2F0Y2hkb2coaW50IGZkLCBpbnQgZW5naW5lX2lkLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdHhfaWQsIHVuc2ln bmVkIHRocmVzaG9sZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV93YXRjaGRvZ190aW1l b3V0IGVuZ2luZXNfdGhyZXNob2xkW01BWF9FTkdJTkVTXTsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7Cj4gKwkJLnBhcmFtID0gTE9DQUxfSTkxNV9DT05URVhU X1BBUkFNX1dBVENIRE9HLAo+ICsJCS5jdHhfaWQgPSBjdHhfaWQsCj4gKwkJLnNpemUgPSBzaXpl b2YoZW5naW5lc190aHJlc2hvbGQpLAo+ICsJCS52YWx1ZSA9ICh1aW50NjRfdCkmZW5naW5lc190 aHJlc2hvbGQKPiArCX07Cj4gKwo+ICsJbWVtc2V0KCZlbmdpbmVzX3RocmVzaG9sZCwgMCwgc2l6 ZW9mKGVuZ2luZXNfdGhyZXNob2xkKSk7Cj4gKwo+ICsJc3dpdGNoIChlbmdpbmVfaWQgJiBJOTE1 X0VYRUNfUklOR19NQVNLKSB7Cj4gKwljYXNlIEk5MTVfRVhFQ19SRU5ERVI6Cj4gKwkJZW5naW5l c190aHJlc2hvbGRbUkVOREVSX0NMQVNTXS50aW1lb3V0X3VzID0gdGhyZXNob2xkOwo+ICsJCWVu Z2luZXNfdGhyZXNob2xkW1ZJREVPX0RFQ09ERV9DTEFTU10udGltZW91dF91cyA9IDA7Cj4gKwkJ ZW5naW5lc190aHJlc2hvbGRbVklERU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRpbWVvdXRfdXMgPSAw OwoKbml0OiBzdHJ1Y3QgYWxyZWFkeSBpbml0aWFsaXplZCB0byAwLCBubyBuZWVkIHRvIGV4cGxp Y2l0bHkgemVybyBpdHMgCmVsZW1lbnRzLgoKPiArCQlicmVhazsKPiArCWNhc2UgSTkxNV9FWEVD X0JTRDoKPiArCQllbmdpbmVzX3RocmVzaG9sZFtSRU5ERVJfQ0xBU1NdLnRpbWVvdXRfdXMgPSAw Owo+ICsJCWVuZ2luZXNfdGhyZXNob2xkW1ZJREVPX0RFQ09ERV9DTEFTU10udGltZW91dF91cyA9 IHRocmVzaG9sZDsKPiArCQllbmdpbmVzX3RocmVzaG9sZFtWSURFT19FTkhBTkNFTUVOVF9DTEFT U10udGltZW91dF91cyA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEk5MTVfRVhFQ19WRUJPWDoK PiArCQllbmdpbmVzX3RocmVzaG9sZFtSRU5ERVJfQ0xBU1NdLnRpbWVvdXRfdXMgPSAwOwo+ICsJ CWVuZ2luZXNfdGhyZXNob2xkW1ZJREVPX0RFQ09ERV9DTEFTU10udGltZW91dF91cyA9IDA7Cj4g KwkJZW5naW5lc190aHJlc2hvbGRbVklERU9fRU5IQU5DRU1FTlRfQ0xBU1NdLnRpbWVvdXRfdXMg PSB0aHJlc2hvbGQ7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWJyZWFrOwo+ICsJfQo+ ICsKPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGJhdGNoX2J1ZmZlcl9mYWN0b3J5KHVpbnQzMl90IGZkLCB1aW50MzJfdCBjdHhfaWQs IHVuc2lnbmVkIGV4ZWNfaWQsIHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LCB1aW50 MzJfdCAqaGFuZGxlLCB1aW50NjRfdCB0aW1lb3V0LCBpbnQgKmZlbmNlLCBpbnQgZmVuY2VfaW5k ZXgpCj4gK3sKPiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialsyXTsK PiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKPiArICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiArICAgIGlndF9zcGlu X3QgKnNwaW4gPSBOVUxMOwo+ICsgICAgY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVG RkVSX0VORDsKPiArICAgIGludCBpID0gMDsKPiArCj4gKyAgICBnZW1fcXVpZXNjZW50X2dwdShm ZCk7Cj4gKwo+ICsgICAgbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwo+ICsg ICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKPiArICAgIG1lbXNldCgmcmVsb2MsIDAs IHNpemVvZihyZWxvYykpOwo+ICsKPiArICAgIGV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2Vy X3BvaW50ZXIob2JqKTsKPiArCj4gKyAgICBleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDI7Cj4gKyAg ICBleGVjYnVmLmZsYWdzID0gZXhlY19pZCB8IEk5MTVfRVhFQ19GRU5DRV9PVVQgOwo+ICsKPiAr ICAgIG9ialswXS5oYW5kbGUgPSB0YXJnZXQ7Cj4gKyAgICBvYmpbMV0uaGFuZGxlID0gZ2VtX2Ny ZWF0ZShmZCwgNDA5Nik7Cj4gKwo+ICsgICAgb2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOwo+ ICsgICAgb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKPiArCj4g KyAgICByZWxvYy50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKPiArICAgIHJlbG9jLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOwo+ICsgICAgcmVsb2Mud3JpdGVf ZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7Cj4gKyAgICByZWxvYy5kZWx0YSA9IG9m ZnNldCAqIHNpemVvZih1aW50MzJfdCk7Cj4gKwo+ICsgICAgcmVsb2Mub2Zmc2V0ID0gaSAqIHNp emVvZih1aW50MzJfdCk7Cj4gKyAgICBnZW1fd3JpdGUoZmQsIG9ialsxXS5oYW5kbGUsIDAsICZi YmUsIHNpemVvZihiYmUpKTsKPiArCj4gKyAgICBfX3N5bmNfc3luY2hyb25pemUoKTsKPiArCj4g KyAgICBpZiAoaGFuZGxlKSB7Cj4gKyAgICAgICAgKmhhbmRsZSA9IG9ialsxXS5oYW5kbGU7Cj4g KyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgIGdlbV9zeW5jKGZkLCBvYmpbMV0u aGFuZGxlKTsKPiArICAgIGV4ZWNidWYucnN2ZDEgPSBjdHhfaWQ7Cj4gKyAgICBleGVjYnVmLnJz dmQyID0gLTE7Cj4gKwo+ICsgICAgc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwgLmRlcGVu ZGVuY3kgPSBvYmpbMF0uaGFuZGxlKTsKPiArICAgIGlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0 KHNwaW4sIHRpbWVvdXQpOwo+ICsgICAgaWd0X2Fzc2VydChnZW1fYm9fYnVzeShmZCwgb2JqWzBd LmhhbmRsZSkpOwo+ICsKPiArICAgIGdlbV9leGVjYnVmX3dyKGZkLCAmZXhlY2J1Zik7Cj4gKyAg ICBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKPiArCj4gKyAgICBmZW5jZVtmZW5jZV9p bmRleF0gPSBleGVjYnVmLnJzdmQyID4+IDMyOwo+ICsKPiArICAgIGdlbV9jbG9zZShmZCwgb2Jq WzFdLmhhbmRsZSk7Cj4gKyAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4gK30KPiArCj4gK3N0 YXRpYyB1aW50MzJfdCBjcmVhdGVfY3R4X3dpdGhfcHJpb3JpdHkoaW50IGZkLCBpbnQgY3R4X3By aW8pCj4gK3sKPiArCXVpbnQzMl90IGN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7Cj4gKwo+ ICsJc3dpdGNoIChjdHhfcHJpbykgewo+ICsJY2FzZSBISUdIOgo+ICsJCV9fZ2VtX2NvbnRleHRf c2V0X3ByaW9yaXR5KGZkLCBjdHgsIE1BWF9QUklPKTsKClRoaXMgaGVscGVyIHJldHVybnMgYW4g ZXJyb3IgY29kZSwgbmVlZCB0byBjaGVjayBpdCBvciB1c2UgCmdlbV9jb250ZXh0X3NldF9wcmlv cml0eSgpIHdoaWNoIHdpbGwgYXNzZXJ0IGlmIHRoZSBJT0NUTCBmYWlscy4KCj4gKwkJaWd0X2lu Zm8oIlNldHRpbmcgTUFYIHByaW9yaXR5ICVkXG4iLCBjdHhfcHJpbyk7Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIExPVzoKPiArCQlfX2dlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4LCBNSU5f UFJJTyk7Cj4gKwkJaWd0X2luZm8oIlNldHRpbmcgTUlOIHByaW9yaXR5ICVkXG4iLCBjdHhfcHJp byk7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCWlndF9pbmZvKCJJZ25vcmluZyBjb250 ZXh0IHByaW9yaXR5ICVkXG4iLCBjdHhfcHJpbyk7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwlwcmlu dGYoImN0eCBpZDogJXVcbiIsY3R4KTsKClJlbWVtYmVyIHRvIGNoYW5nZSB0aGlzIHRvIGEgbG9n IG9uY2UgeW91IHNlbmQgdGhlIFBBVENIIHZlcnNpb24uCgo+ICsJcmV0dXJuIGN0eDsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgaW5qZWN0X2hhbmcodWludDMyX3QgZmQsIHVuc2lnbmVkIHJpbmcs IHVpbnQzMl90IGN0eF9pZCwgIHVuc2lnbmVkIGZsYWdzKQo+ICt7Cj4gKwlpZ3RfaGFuZ190IGhh bmc7Cj4gKwloYW5nID0gaWd0X2hhbmdfY3R4KGZkLCBjdHhfaWQsIHJpbmcsIGZsYWdzKTsKPiAr CWdlbV9zeW5jKGZkLCBoYW5nLnNwaW4tPmhhbmRsZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGdwdV93YXRjaGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMoaW50IGZkLCBpbnQgbmVuZ2luZSwg aW50IHByaW9fY3R4MSwgaW50IHByaW9fY3R4MikKPiArewo+ICsJdWludDMyX3QgY3R4WzJdOwo+ ICsJdWludDMyX3Qgc2NyYXRjaFsyXTsKPiArCXVuc2lnbmVkIGZsYWdzID0gSEFOR19BTExPV19D QVBUVVJFOwo+ICsJY29uc3QgdWludDY0X3QgYmF0Y2hfdGltZW91dF9tcyA9IHRpbWVvdXRfMTAw bXMgKiAzOwo+ICsJaW50IGkgPSAwLCBlbmdpbmVfaWQ7Cj4gKwlpbnQgKmZlbmNlID0gMDsKPiAr Cj4gKwlpZ3RfcmVxdWlyZShuZW5naW5lKTsKPiArCj4gKwlmZW5jZSA9IChpbnQgKiltYWxsb2Mo c2l6ZW9mKGludCkqMik7Cj4gKwo+ICsJaWYgKCFmZW5jZSkgewo+ICsJCWlndF9pbmZvKCJPdXQg b2YgbWVtb3J5XG4iKTsKPiArCQlleGl0KDEpOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkg PCAyOyBpKyspIHsKPiArCQlzY3JhdGNoW2ldID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwl9 Cj4gKwo+ICsJLyogQ3JlYXRlIHNvbWUgd29yayBvbiBSQ1MwICovCj4gKwllbmdpbmVfaWQgPSAx OwoKTm90IHRoYXQgbWFueSBjb21iaW5hdGlvbnMgSSB0aGluayB3ZSBjYW4gaXRlcmF0ZSBvdmVy IGFsbCBlbmdpbmVzIGluIGEgCnJlYXNvbmFibGUgdGltZS4KCj4gKwljdHhbMF0gPSBjcmVhdGVf Y3R4X3dpdGhfcHJpb3JpdHkoZmQsIHByaW9fY3R4MSk7Cj4gKwliYXRjaF9idWZmZXJfZmFjdG9y eShmZCwgY3R4WzBdLCBlbmdpbmVfaWQsIHNjcmF0Y2hbMF0sIDAsIE5VTEwsIGJhdGNoX3RpbWVv dXRfbXMsIGZlbmNlLCAwKTsKCk5vdGUgdGhhdCB0aGUgZXhlY2J1ZiB1c2VkIGluIGJhdGNoX2J1 ZmZlcl9mYWN0b3J5KCkgaXMgbm90IHRoZSBzYW1lIAp1c2VkIGluIGluamVjdF9oYW5nKCkuCgo+ ICsKPiArCS8qIENhbmNlbCBiYXRjaCBvbiBSQ1MwIHcvIGdwdSB3YXRjaGRvZyB0aW1lb3V0ICov Cj4gKwlpZihwcmlvX2N0eDEgPCAwICYmIHByaW9fY3R4MiA8IDApIHsKPiArCQljb250ZXh0X3Nl dF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCBjdHhbMF0sIFdBVENIRE9HX1RIUkVTSE9MRCk7Cj4g KwkJY2xlYXJfZXJyb3Jfc3RhdGUoZmQpOwo+ICsJCWluamVjdF9oYW5nKGZkLCBlbmdpbmVfaWQs IGN0eFswXSwgZmxhZ3MpOwo+ICsJfQo+ICsKPiArI2lmIDAKCklzIHRoZSBjb2RlIHdyYXBwZWQg aW4gaWYgMCBzdGF0ZW1lbnRzIGdvaW5nIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCAKcGF0 Y2g/Cgo+ICsJLyogTm93IGNoZWNrIHRoZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseSov Cj4gKwlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSksIC1FSU8pOyA+ICsj ZW5kaWYKPiArCWNsb3NlKGZlbmNlWzBdKTsKCm5pdDogeW91IGNhbiBjbG9zZSBhbGwgZmVuY2Vz IGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgdGVzdC4KCj4gKwo+ICsJLyogQ3JlYXRlIHNvbWUgd29y ayBvbiBWRUNTMCAqLwo+ICsJZW5naW5lX2lkID0gNDsKPiArCWN0eFsxXSA9IGNyZWF0ZV9jdHhf d2l0aF9wcmlvcml0eShmZCwgcHJpb19jdHgyKTsKPiArCWJhdGNoX2J1ZmZlcl9mYWN0b3J5KGZk LCBjdHhbMV0sIGVuZ2luZV9pZCwgc2NyYXRjaFsxXSwgMCwgTlVMTCwgYmF0Y2hfdGltZW91dF9t cywgZmVuY2UsIDEpOwo+ICsKPiArCS8qIENhbmNlbCBiYXRjaCBvbiBSQ1MwIHcvIGdwdSB3YXRj aGRvZyB0aW1lb3V0ICovCj4gKwljb250ZXh0X3NldF93YXRjaGRvZyhmZCwgZW5naW5lX2lkLCBj dHhbMV0sIFdBVENIRE9HX1RIUkVTSE9MRCk7Cj4gKwljbGVhcl9lcnJvcl9zdGF0ZShmZCk7Cj4g KwlpbmplY3RfaGFuZyhmZCwgZW5naW5lX2lkLCBjdHhbMV0sIGZsYWdzKTsKCllvdSBkb24ndCB3 YW50IHRvIHN5bmMgYWZ0ZXIgdGhlIGhhbmcgaW4gdGhpcyB0ZXN0IEkgdGhpbmsuIEl0IHdvdWxk IGJlIApiZXR0ZXIgdG8gc2VuZCBwbGVudHkgb2YgY29udGV4dHMgd2l0aCBkaWZmZXJlbnQgdGhy ZXNob2xkcyBhbmQgaGF2ZSAKdGhlbSBhY3RpdmUgYXQgfiB0aGUgc2FtZSB0aW1lLgoKPiArCj4g KyNpZiAwCj4gKwkvKiBOb3cgY2hlY2sgdGhlIGVuZ2luZSB3YXMgcmVzZXQgc3VjY2Vzc2Z1bGx5 ICovCj4gKwlpZ3RfYXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSksIC1FSU8pOwo+ ICsjZW5kaWYKPiArCWNsb3NlKGZlbmNlWzFdKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgMjsg aSsrKSB7Cj4gKwkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4W2ldKTsKPiArCQlnZW1fY2xv c2UoZmQsIHNjcmF0Y2hbaV0pOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBncHVfd2F0 Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUoaW50IGZkLCB1bnNpZ25lZCBlbmdp bmVfaWQsIGNvbnN0IGNoYXIgKm5hbWUpCgplbmdpbmVfaWQgaXMgdW51c2VkIGluIHRoaXMgZnVu Y3Rpb24uCgo+ICt7Cj4gKwl1aW50MzJfdCBjdHhbMTZdOwo+ICsJdWludDMyX3Qgc2NyYXRjaFsx Nl07Cj4gKwlpbnQgKmZlbmNlOwo+ICsJdW5zaWduZWQgbmVuZ2luZSA9IDA7Cj4gKwl1bnNpZ25l ZCBlbmdpbmU7Cj4gKwo+ICsJaW50IGk7Cj4gKwl1bnNpZ25lZCBmbGFncyA9IEhBTkdfQUxMT1df Q0FQVFVSRTsKPiArCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0aW1lb3V0XzEw MG1zKjQ7Cj4gKwo+ICsJZmVuY2UgPSAoaW50ICopbWFsbG9jKHNpemVvZihpbnQpKjE2KTsKPiAr Cj4gKwlpZiAoIWZlbmNlKSB7Cj4gKwkJaWd0X2luZm8oIk91dCBvZiBtZW1vcnlcbiIpOwo+ICsJ CWV4aXQoMSk7Cj4gKwl9Cj4gKwo+ICsJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdp bmUpIHsKCkp1c3QgYSBzdWdnZXN0aW9uOiB5b3UgY291bGQgdXNlIGZvcl9lYWNoX2VuZ2luZV9j bGFzc19pbnN0YW5jZSgpIGVuZCAKc2tpcCBiYXNlZCBvbiB0aGUgY2xhc3MuIFRoaXMgc2hvdWxk IGZpdCBpbiBiZXR0ZXIgd2l0aCB0aGUgbmV3IGVuZ2luZSAKaW50ZXJmYWNlIEFuZGkgaXMgd29y a2luZyBvbi4KCj4gKwkJLyogbm8gc3VwcG9ydCBmb3IgZ3B1IHdhdGNoZG9nIG9uIEJMVCAqLwo+ ICsJCWlmICggc3RybmNtcChlX18tPm5hbWUsICJibHQiLCAzKSA9PSAwICkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCXNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKPiAr CQljdHhbbmVuZ2luZV0gPSBjcmVhdGVfY3R4X3dpdGhfcHJpb3JpdHkoZmQsIC0xKTsKPiArCj4g KwkJLyogQ3JlYXRlIHNvbWUgd29yayBvbiB0aGUgZW5naW5lIHVzaW5nIHRoZSBzYW1lIGN0eCov Cj4gKwkJYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0eFtuZW5naW5lXSwgZV9fLT5leGVjX2lk LCBzY3JhdGNoW25lbmdpbmVdLCAwLCBOVUxMLCBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVu Z2luZSk7CgpXaHkgYXJlIHdlIHNlbmRpbmcgd29yayBiZWZvcmUgc2VuZGluZyB0aGUgaGFuZ2lu ZyBiYXRjaD8gSSB0aGluayBpdCAKd291bGQgYmUgYmV0dGVyIG5vdCB0byBzZW5kIGFueXRoaW5n IGRvd24gYW5kIG1heWJlIGhhdmUgYSBkaWZmZXJlbnQgCnRlc3Qgd2hlcmUgeW91OgoKCS0gU3Vi bWl0IHdvcmsgZnJvbSBjb250ZXh0IEEKCS0gU2V0IGEgbm9uIDAgdGhyZXNob2xkIG9uIGNvbnRl eHQgQQoJLSBTdWJtaXQgbW9yZSB3b3JrIG9uIGNvbnRleHQgQQoKQW5kIGV4cGVjdCB0aGUgd29y ayBiZWZvcmUgeW91IHNldCB0aGUgdGhyZXNob2xkIGlzIG5vdCByZXNldCBhbmQgd2hhdCAKd2Fz IHNlbnQgYWZ0ZXIgaXMuCgo+ICsKPiArCQkvKiBTZXQgdGhlIGdwdSB3YXRjaGRvZyB0aW1lb3V0 ICovCj4gKwkJY29udGV4dF9zZXRfd2F0Y2hkb2coZmQsIGVfXy0+ZXhlY19pZCwgY3R4W25lbmdp bmVdLCBXQVRDSERPR19USFJFU0hPTEQpOwo+ICsJCWNsZWFyX2Vycm9yX3N0YXRlKGZkKTsKPiAr Cj4gKwkJLyogQ2FuY2VsIG9ubHkgdGhlIGJhdGNoIHJlcXVlc3RlZCAqLwo+ICsJCWlmICggc3Ry bmNtcChlX18tPm5hbWUsIG5hbWUsIDQpID09IDAgKQo+ICsJCQlpbmplY3RfaGFuZyhmZCwgZV9f LT5leGVjX2lkLCBjdHhbbmVuZ2luZV0sIGZsYWdzKTsKPiArI2lmIDAKPiArCQlpZ3RfaW5mbygi ZmVuY2U6JWQsIGZlbmNlIHN0YXR1cyA6ICVkIEVJTzogJWQgY3R4X2lkOiVkXG4iLGZlbmNlW25l bmdpbmVdLCBzeW5jX2ZlbmNlX3N0YXR1cyhmZW5jZVtuZW5naW5lXSksLUVJTywgY3R4W25lbmdp bmVdKTsKPiArCQkvKiBOb3cgY2hlY2sgdGhlIGVuZ2luZSB3YXMgcmVzZXQgKi8KPiArCQlpZ3Rf YXNzZXJ0X2VxKHN5bmNfZmVuY2Vfc3RhdHVzKGZlbmNlW25lbmdpbmVdKSwgLUVJTyk7Cj4gKyNl bmRpZgo+ICsJCW5lbmdpbmUrKzsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmVuZ2lu ZTsgaSsrKSB7Cj4gKwkJY2xvc2UoZmVuY2VbaV0pOwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3ko ZmQsIGN0eFtpXSk7Cj4gKwkJZ2VtX2Nsb3NlKGZkLCBzY3JhdGNoW2ldKTsKPiArCX0KPiArfQo+ ICsKPiAraWd0X21haW4KPiArewo+ICsJaW50IGZkOwo+ICsJdW5zaWduZWQgaW50IG5lbmdpbmUg PSAwOwo+ICsJdW5zaWduZWQgaW50IGVuZ2luZTsKPiArCj4gKwlpZ3Rfc2tpcF9vbl9zaW11bGF0 aW9uKCk7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWZkID0gZHJtX29wZW5fZHJpdmVyKERS SVZFUl9JTlRFTCk7Cj4gKwkJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiArCj4gKwkJZm9yX2VhY2hf cGh5c2ljYWxfZW5naW5lKGZkLCBlbmdpbmUpCj4gKwkJCW5lbmdpbmUrKzsKPiArCQlpZ3RfcmVx dWlyZShuZW5naW5lKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVzdF9ncm91cCB7Cj4gKwo+ICsJ CWlndF9zdWJ0ZXN0X2YoImxvdy1wcmlvLWN0eC13by1ncHUtd2F0Y2hkb2ctYW5kLWhpZ2gtcHJp by1jdHgtd2l0aC1ncHUtd2F0Y2hkb2ciKSB7Cj4gKwkJCWludCBwcmlvMSA9IExPVzsKPiArCQkJ aW50IHByaW8yID0gSElHSDsKPiArCQkJZ3B1X3dhdGNoZG9nX2xvbmdfYmF0Y2hfMl9jb250ZXh0 cyhmZCwgbmVuZ2luZSwgcHJpbzEsIHByaW8yKTsKPiArCQl9Cj4gKwo+ICsJCWZvciAoY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmUgPSBpbnRlbF9leGVjdXRpb25fZW5naW5l czsgZS0+bmFtZTsgZSsrKSB7CgpZb3UgYXJlIGxvb3Bpbmcgb24gZWFjaCBlbmdpbmUgaW5zaWRl IHRoZSB0ZXN0IGFzIHdlbGwuCgpBbnRvbmlvCgo+ICsJCQkvKiBubyBzdXBwb3J0IGZvciBncHUg d2F0Y2hkb2cgb24gQkxUICovCj4gKwkJCWlmIChlLT5leGVjX2lkID09IDAgfHwgZS0+ZXhlY19p ZCA9PSBJOTE1X0VYRUNfQkxUKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlpZ3Rfc3VidGVz dF9mKCJncHUtd2F0Y2hkb2ctbG9uZy1iYXRjaC0lcyIsIGUtPm5hbWUpIHsKPiArCQkJCWlndF9y ZXF1aXJlKGdlbV9yaW5nX2hhc19waHlzaWNhbF9lbmdpbmUoZmQsIGUtPmV4ZWNfaWQgfCBlLT5m bGFncykpOwo+ICsJCQkJcHJpbnRmKCJiZWxvdyBpZDogJWRcbiIsZS0+ZXhlY19pZCk7Cj4gKwkJ CQlncHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUoZmQsIGUtPmV4ZWNf aWQgfCBlLT5mbGFncywgZS0+bmFtZSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWlndF9zdWJ0 ZXN0X2YoImdwdS13YXRjaGRvZy1sb25nLWJhdGNoLTItY29udGV4dHMiKSB7Cj4gKwkJCWludCBw cmlvID0gLTE7Cj4gKwkJCWdwdV93YXRjaGRvZ19sb25nX2JhdGNoXzJfY29udGV4dHMoZmQsIG5l bmdpbmUsIHByaW8sIHByaW8pOwo+ICsJCX0KPiArICAgIH0KPiArCj4gKyAgICBpZ3RfZml4dHVy ZSB7Cj4gKwljbG9zZShmZCk7Cj4gKyAgICB9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAo+IGluZGV4IDUxNjdhNmMuLmIyODFiNzUgMTAw NjQ0Cj4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNvbi5idWlsZAo+ IEBAIC0yMTAsNiArMjEwLDcgQEAgaTkxNV9wcm9ncyA9IFsKPiAgIAknZ2VtX3VucmVmX2FjdGl2 ZV9idWZmZXJzJywKPiAgIAknZ2VtX3VzZXJwdHJfYmxpdHMnLAo+ICAgCSdnZW1fd2FpdCcsCj4g KyAgICAgICAgJ2dlbV93YXRjaGRvZycsCj4gICAJJ2dlbV93b3JrYXJvdW5kcycsCj4gICAJJ2dl bV93cml0ZV9yZWFkX3Jpbmdfc3dpdGNoJywKPiAgIAknaTkxNV9mYl90aWxpbmcnLAo+IApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxp bmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=