From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D5876EEFA for ; Fri, 13 Sep 2019 09:35:58 +0000 (UTC) From: Chris Wilson Date: Fri, 13 Sep 2019 10:35:45 +0100 Message-Id: <20190913093545.25903-1-chris@chris-wilson.co.uk> In-Reply-To: <20190913091712.25594-1-chris@chris-wilson.co.uk> References: <20190913091712.25594-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2] runner: Add a timestamp to each log message 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: Petri Latvala List-ID: VmVyeSBoYW5keSBmb3IgY29ycmVsYXRpbmcgZXZlbnRzIGJldHdlZW4gZGlmZmVyZW50IGxvZ3Mu Cgp2MjogQ29uY2F0ZW5hdGUgc3BsaXQgbWVzc2FnZXMgaW50byBhIHNpbmdsZSBjYWxsIChzbyB0 aGF0IHRoZSB0aW1lc3RhbXAKaXMgb25seSBhZGRlZCBvbmNlISkKClNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogUGV0cmkgTGF0dmFsYSA8 cGV0cmkubGF0dmFsYUBpbnRlbC5jb20+Ci0tLQogcnVubmVyL2V4ZWN1dG9yLmMgfCAxNTEgKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDgzIGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3J1bm5l ci9leGVjdXRvci5jIGIvcnVubmVyL2V4ZWN1dG9yLmMKaW5kZXggNTJmZWU3ZDEzLi40ODQ2Njg0 ZTQgMTAwNjQ0Ci0tLSBhL3J1bm5lci9leGVjdXRvci5jCisrKyBiL3J1bm5lci9leGVjdXRvci5j CkBAIC0yLDYgKzIsNyBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8bGludXgvd2F0 Y2hkb2cuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNs dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpA QCAtMjYsMTMgKzI3LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgewogCXNpemVfdCBudW1fZG9nczsKIH0g d2F0Y2hkb2dzOwogCitfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAyLCAzKSkpCitzdGF0 aWMgdm9pZCBfX2xvZ2ZfXyhGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorewor CWludCBzYXZlZF9lcnJubyA9IGVycm5vOworCXN0cnVjdCB0aW1lc3BlYyB0djsKKwl2YV9saXN0 IGFwOworCisJaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfQk9PVFRJTUUsICZ0dikpCisJCWNsb2Nr X2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0dik7CisJZnByaW50ZihzdHJlYW0sICJbJWxkLiUw NmxkXSAiLCB0di50dl9zZWMsIHR2LnR2X25zZWMgLyAxMDAwKTsKKworCXZhX3N0YXJ0KGFwLCBm bXQpOworCWVycm5vID0gc2F2ZWRfZXJybm87CisJdmZwcmludGYoc3RyZWFtLCBmbXQsIGFwKTsK Kwl2YV9lbmQoYXApOworfQorI2RlZmluZSBvdXRmKGZtdC4uLikgX19sb2dmX18oc3Rkb3V0LCBm bXQpCisjZGVmaW5lIGVycmYoZm10Li4uKSBfX2xvZ2ZfXyhzdGRlcnIsIGZtdCkKKwogc3RhdGlj IHZvaWQgX19jbG9zZV93YXRjaGRvZyhpbnQgZmQpCiB7CiAJc3NpemVfdCByZXQgPSB3cml0ZShm ZCwgIlYiLCAxKTsKIAogCWlmIChyZXQgPT0gLTEpCi0JCWZwcmludGYoc3RkZXJyLCAiRmFpbGVk IHRvIHN0b3AgYSB3YXRjaGRvZzogJXNcbiIsCi0JCQlzdHJlcnJvcihlcnJubykpOworCQllcnJm KCJGYWlsZWQgdG8gc3RvcCBhIHdhdGNoZG9nOiAlbVxuIik7CiAKIAljbG9zZShmZCk7CiB9CkBA IC00MiwxMCArNjEsMTAgQEAgc3RhdGljIHZvaWQgY2xvc2Vfd2F0Y2hkb2dzKHN0cnVjdCBzZXR0 aW5ncyAqc2V0dGluZ3MpCiAJc2l6ZV90IGk7CiAKIAlpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3Mt PmxvZ19sZXZlbCA+PSBMT0dfTEVWRUxfVkVSQk9TRSkKLQkJcHJpbnRmKCJDbG9zaW5nIHdhdGNo ZG9nc1xuIik7CisJCW91dGYoIkNsb3Npbmcgd2F0Y2hkb2dzXG4iKTsKIAogCWlmIChzZXR0aW5n cyA9PSBOVUxMICYmIHdhdGNoZG9ncy5udW1fZG9ncyAhPSAwKQotCQlmcHJpbnRmKHN0ZGVyciwg IkNsb3Npbmcgd2F0Y2hkb2dzIGZyb20gZXhpdCBoYW5kbGVyIVxuIik7CisJCWVycmYoIkNsb3Np bmcgd2F0Y2hkb2dzIGZyb20gZXhpdCBoYW5kbGVyIVxuIik7CiAKIAlmb3IgKGkgPSAwOyBpIDwg d2F0Y2hkb2dzLm51bV9kb2dzOyBpKyspIHsKIAkJX19jbG9zZV93YXRjaGRvZyh3YXRjaGRvZ3Mu ZmRzW2ldKTsKQEAgLTczLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgaW5pdF93YXRjaGRvZ3Moc3Ry dWN0IHNldHRpbmdzICpzZXR0aW5ncykKIAkJcmV0dXJuOwogCiAJaWYgKHNldHRpbmdzLT5sb2df bGV2ZWwgPj0gTE9HX0xFVkVMX1ZFUkJPU0UpIHsKLQkJcHJpbnRmKCJJbml0aWFsaXppbmcgd2F0 Y2hkb2dzXG4iKTsKKwkJb3V0ZigiSW5pdGlhbGl6aW5nIHdhdGNoZG9nc1xuIik7CiAJfQogCiAJ YXRleGl0KGNsb3NlX3dhdGNoZG9nc19hdGV4aXQpOwpAQCAtODgsNyArMTA3LDcgQEAgc3RhdGlj IHZvaWQgaW5pdF93YXRjaGRvZ3Moc3RydWN0IHNldHRpbmdzICpzZXR0aW5ncykKIAkJd2F0Y2hk b2dzLmZkc1tpXSA9IGZkOwogCiAJCWlmIChzZXR0aW5ncy0+bG9nX2xldmVsID49IExPR19MRVZF TF9WRVJCT1NFKQotCQkJcHJpbnRmKCIgJXNcbiIsIG5hbWUpOworCQkJb3V0ZigiICAlc1xuIiwg bmFtZSk7CiAJfQogfQogCkBAIC0xMjMsMTAgKzE0Miw4IEBAIHN0YXRpYyB2b2lkIHBpbmdfd2F0 Y2hkb2dzKHZvaWQpCiAKIAlmb3IgKGkgPSAwOyBpIDwgd2F0Y2hkb2dzLm51bV9kb2dzOyBpKysp IHsKIAkJcmV0ID0gaW9jdGwod2F0Y2hkb2dzLmZkc1tpXSwgV0RJT0NfS0VFUEFMSVZFLCBOVUxM KTsKLQogCQlpZiAocmV0ID09IC0xKQotCQkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcGlu ZyBhIHdhdGNoZG9nOiAlc1xuIiwKLQkJCQlzdHJlcnJvcihlcnJubykpOworCQkJZXJyZigiRmFp bGVkIHRvIHBpbmcgYSB3YXRjaGRvZzogJW1cbiIpOwogCX0KIH0KIApAQCAtMjM3LDcgKzI1NCw3 IEBAIHN0YXRpYyBjaGFyICpuZWVkX3RvX2Fib3J0KGNvbnN0IHN0cnVjdCBzZXR0aW5ncyogc2V0 dGluZ3MpCiAJCQljb250aW51ZTsKIAogCQlpZiAoc2V0dGluZ3MtPmxvZ19sZXZlbCA+PSBMT0df TEVWRUxfTk9STUFMKQotCQkJZnByaW50ZihzdGRlcnIsICJBYm9ydGluZzogJXNcbiIsIGFib3J0 KTsKKwkJCWVycmYoIkFib3J0aW5nOiAlc1xuIiwgYWJvcnQpOwogCiAJCXJldHVybiBhYm9ydDsK IAl9CkBAIC00NTYsNyArNDczLDcgQEAgc3RhdGljIGJvb2wga2lsbF9jaGlsZChpbnQgc2lnLCBw aWRfdCBjaGlsZCkKIAkgKi8KIAlraWxsKC1jaGlsZCwgc2lnKTsKIAlpZiAoa2lsbChjaGlsZCwg c2lnKSAmJiBlcnJubyA9PSBFU1JDSCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIkNoaWxkIHByb2Nl c3MgZG9lcyBub3QgZXhpc3QuIFRoaXMgc2hvdWxkbid0IGhhcHBlbi5cbiIpOworCQllcnJmKCJD aGlsZCBwcm9jZXNzIGRvZXMgbm90IGV4aXN0LiBUaGlzIHNob3VsZG4ndCBoYXBwZW4uXG4iKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtNTE4LDkgKzUzNSw4IEBAIHN0YXRpYyBpbnQgbW9u aXRvcl9vdXRwdXQocGlkX3QgY2hpbGQsCiAJCQl0aW1lb3V0IC89IHRpbWVvdXRfaW50ZXJ2YWxz OwogCiAJCQlpZiAoc2V0dGluZ3MtPmxvZ19sZXZlbCA+PSBMT0dfTEVWRUxfVkVSQk9TRSkgewot CQkJCXByaW50ZigiV2F0Y2hkb2cgZG9lc24ndCBzdXBwb3J0IHRoZSB0aW1lb3V0IHdlIHJlcXVl c3RlZCAoc2hvcnRlbmVkIHRvICVkIHNlY29uZHMpLlxuIgotCQkJCSAgICAgICAiVXNpbmcgJWQg aW50ZXJ2YWxzIG9mICVkIHNlY29uZHMuXG4iLAotCQkJCSAgICAgICB3ZF90aW1lb3V0LCB0aW1l b3V0X2ludGVydmFscywgdGltZW91dCk7CisJCQkJb3V0ZigiV2F0Y2hkb2cgZG9lc24ndCBzdXBw b3J0IHRoZSB0aW1lb3V0IHdlIHJlcXVlc3RlZCAoc2hvcnRlbmVkIHRvICVkIHNlY29uZHMpLiBV c2luZyAlZCBpbnRlcnZhbHMgb2YgJWQgc2Vjb25kcy5cbiIsCisJCQkJICAgICB3ZF90aW1lb3V0 LCB0aW1lb3V0X2ludGVydmFscywgdGltZW91dCk7CiAJCQl9CiAJCX0KIAl9CkBAIC01NTUsNyAr NTcxLDcgQEAgc3RhdGljIGludCBtb25pdG9yX291dHB1dChwaWRfdCBjaGlsZCwKIAkJCXN3aXRj aCAoa2lsbGVkKSB7CiAJCQljYXNlIDA6CiAJCQkJaWYgKHNldHRpbmdzLT5sb2dfbGV2ZWwgPj0g TE9HX0xFVkVMX05PUk1BTCkgewotCQkJCQlwcmludGYoIlRpbWVvdXQuIEtpbGxpbmcgdGhlIGN1 cnJlbnQgdGVzdCB3aXRoIFNJR1FVSVQuXG4iKTsKKwkJCQkJb3V0ZigiVGltZW91dC4gS2lsbGlu ZyB0aGUgY3VycmVudCB0ZXN0IHdpdGggU0lHUVVJVC5cbiIpOwogCQkJCQlmZmx1c2goc3Rkb3V0 KTsKIAkJCQl9CiAKQEAgLTU3Myw3ICs1ODksNyBAQCBzdGF0aWMgaW50IG1vbml0b3Jfb3V0cHV0 KHBpZF90IGNoaWxkLAogCQkJCWJyZWFrOwogCQkJY2FzZSBTSUdRVUlUOgogCQkJCWlmIChzZXR0 aW5ncy0+bG9nX2xldmVsID49IExPR19MRVZFTF9OT1JNQUwpIHsKLQkJCQkJcHJpbnRmKCJUaW1l b3V0LiBLaWxsaW5nIHRoZSBjdXJyZW50IHRlc3Qgd2l0aCBTSUdLSUxMLlxuIik7CisJCQkJCW91 dGYoIlRpbWVvdXQuIEtpbGxpbmcgdGhlIGN1cnJlbnQgdGVzdCB3aXRoIFNJR0tJTEwuXG4iKTsK IAkJCQkJZmZsdXNoKHN0ZG91dCk7CiAJCQkJfQogCkBAIC01OTcsOCArNjEzLDggQEAgc3RhdGlj IGludCBtb25pdG9yX291dHB1dChwaWRfdCBjaGlsZCwKIAogCQkJCS8qIE5vdGhpbmcgdGhhdCBj YW4gYmUgZG9uZSwgcmVhbGx5LiBMZXQncyB0ZWxsIHRoZSBjYWxsZXIgd2Ugd2FudCB0byBhYm9y dC4gKi8KIAkJCQlpZiAoc2V0dGluZ3MtPmxvZ19sZXZlbCA+PSBMT0dfTEVWRUxfTk9STUFMKSB7 Ci0JCQkJCWZwcmludGYoc3RkZXJyLCAiQ2hpbGQgcmVmdXNlcyB0byBkaWUsIHRhaW50ZWQgJWx4 LiBBYm9ydGluZy5cbiIsCi0JCQkJCQl0YWludHMpOworCQkJCQllcnJmKCJDaGlsZCByZWZ1c2Vz IHRvIGRpZSwgdGFpbnRlZCAlbHguIEFib3J0aW5nLlxuIiwKKwkJCQkJICAgICB0YWludHMpOwog CQkJCX0KIAkJCQljbG9zZV93YXRjaGRvZ3Moc2V0dGluZ3MpOwogCQkJCWZyZWUob3V0YnVmKTsK QEAgLTYyMSw4ICs2MzcsNyBAQCBzdGF0aWMgaW50IG1vbml0b3Jfb3V0cHV0KHBpZF90IGNoaWxk LAogCQkJcyA9IHJlYWQob3V0ZmQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogCQkJaWYgKHMgPD0gMCkg ewogCQkJCWlmIChzIDwgMCkgewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHJlYWRpbmcg dGVzdCdzIHN0ZG91dDogJXNcbiIsCi0JCQkJCQlzdHJlcnJvcihlcnJubykpOworCQkJCQllcnJm KCJFcnJvciByZWFkaW5nIHRlc3QncyBzdGRvdXQ6ICVtXG4iKTsKIAkJCQl9CiAKIAkJCQljbG9z ZShvdXRmZCk7CkBAIC02ODksOCArNzA0LDcgQEAgc3RhdGljIGludCBtb25pdG9yX291dHB1dChw aWRfdCBjaGlsZCwKIAkJCXMgPSByZWFkKGVycmZkLCBidWYsIHNpemVvZihidWYpKTsKIAkJCWlm IChzIDw9IDApIHsKIAkJCQlpZiAocyA8IDApIHsKLQkJCQkJZnByaW50ZihzdGRlcnIsICJFcnJv ciByZWFkaW5nIHRlc3QncyBzdGRlcnI6ICVzXG4iLAotCQkJCQkJc3RyZXJyb3IoZXJybm8pKTsK KwkJCQkJZXJyZigiRXJyb3IgcmVhZGluZyB0ZXN0J3Mgc3RkZXJyOiAlbVxuIik7CiAJCQkJfQog CQkJCWNsb3NlKGVycmZkKTsKIAkJCQllcnJmZCA9IC0xOwpAQCAtNzA2LDEyICs3MjAsMTEgQEAg c3RhdGljIGludCBtb25pdG9yX291dHB1dChwaWRfdCBjaGlsZCwKIAkJCXMgPSByZWFkKGttc2dm ZCwgYnVmLCBzaXplb2YoYnVmKSk7CiAJCQlpZiAocyA8IDApIHsKIAkJCQlpZiAoZXJybm8gIT0g RVBJUEUgJiYgZXJybm8gIT0gRUlOVkFMKSB7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3Ig cmVhZGluZyBmcm9tIGttc2csIHN0b3BwaW5nIG1vbml0b3Jpbmc6ICVzXG4iLAotCQkJCQkJc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCQkJZXJyZigiRXJyb3IgcmVhZGluZyBmcm9tIGttc2csIHN0b3Bw aW5nIG1vbml0b3Jpbmc6ICVtXG4iKTsKIAkJCQkJY2xvc2Uoa21zZ2ZkKTsKIAkJCQkJa21zZ2Zk ID0gLTE7CiAJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFSU5WQUwpIHsKLQkJCQkJZnByaW50Zihz dGRlcnIsICJXYXJuaW5nOiBCdWZmZXIgdG9vIHNtYWxsIGZvciBrZXJuZWwgbG9nIHJlY29yZCwg cmVjb3JkIGxvc3QuXG4iKTsKKwkJCQkJZXJyZigiV2FybmluZzogQnVmZmVyIHRvbyBzbWFsbCBm b3Iga2VybmVsIGxvZyByZWNvcmQsIHJlY29yZCBsb3N0LlxuIik7CiAJCQkJfQogCQkJfSBlbHNl IHsKIAkJCQl3cml0ZShvdXRwdXRzW19GX0RNRVNHXSwgYnVmLCBzKTsKQEAgLTcyNiwxMiArNzM5 LDExIEBAIHN0YXRpYyBpbnQgbW9uaXRvcl9vdXRwdXQocGlkX3QgY2hpbGQsCiAKIAkJCXMgPSBy ZWFkKHNpZ2ZkLCAmc2lnaW5mbywgc2l6ZW9mKHNpZ2luZm8pKTsKIAkJCWlmIChzIDwgMCkgewot CQkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3IgcmVhZGluZyBmcm9tIHNpZ25hbGZkOiAlc1xuIiwK LQkJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCQllcnJmKCJFcnJvciByZWFkaW5nIGZyb20gc2ln bmFsZmQ6ICVtXG4iKTsKIAkJCQljb250aW51ZTsKIAkJCX0gZWxzZSBpZiAoc2lnaW5mby5zc2lf c2lnbm8gPT0gU0lHQ0hMRCkgewogCQkJCWlmIChjaGlsZCAhPSB3YWl0cGlkKGNoaWxkLCAmc3Rh dHVzLCBXTk9IQU5HKSkgewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byByZWFwIGNo aWxkXG4iKTsKKwkJCQkJZXJyZigiRmFpbGVkIHRvIHJlYXAgY2hpbGRcbiIpOwogCQkJCQlzdGF0 dXMgPSA5OTk5OwogCQkJCX0gZWxzZSBpZiAoV0lGRVhJVEVEKHN0YXR1cykpIHsKIAkJCQkJc3Rh dHVzID0gV0VYSVRTVEFUVVMoc3RhdHVzKTsKQEAgLTc0Niw4ICs3NTgsOCBAQCBzdGF0aWMgaW50 IG1vbml0b3Jfb3V0cHV0KHBpZF90IGNoaWxkLAogCQkJfSBlbHNlIHsKIAkJCQkvKiBXZSdyZSBk eWluZywgc28gd2UncmUgdGFraW5nIHRoZW0gd2l0aCB1cyAqLwogCQkJCWlmIChzZXR0aW5ncy0+ bG9nX2xldmVsID49IExPR19MRVZFTF9OT1JNQUwpCi0JCQkJCXByaW50ZigiQWJvcnQgcmVxdWVz dGVkIHZpYSAlcywgdGVybWluYXRpbmcgY2hpbGRyZW5cbiIsCi0JCQkJCSAgICAgICBzdHJzaWdu YWwoc2lnaW5mby5zc2lfc2lnbm8pKTsKKwkJCQkJb3V0ZigiQWJvcnQgcmVxdWVzdGVkIHZpYSAl cywgdGVybWluYXRpbmcgY2hpbGRyZW5cbiIsCisJCQkJCSAgICAgc3Ryc2lnbmFsKHNpZ2luZm8u c3NpX3NpZ25vKSk7CiAKIAkJCQlhYm9ydGluZyA9IHRydWU7CiAJCQkJdGltZW91dCA9IDI7CkBA IC04MzYsNyArODQ4LDcgQEAgZXhlY3V0ZV90ZXN0X3Byb2Nlc3MoaW50IG91dGZkLCBpbnQgZXJy ZmQsCiAJfQogCiAJZXhlY3YoYXJndlswXSwgYXJndik7Ci0JZnByaW50ZihzdGRlcnIsICJDYW5u b3QgZXhlY3V0ZSAlc1xuIiwgYXJndlswXSk7CisJZXJyZigiQ2Fubm90IGV4ZWN1dGUgJXNcbiIs IGFyZ3ZbMF0pOwogCWV4aXQoSUdUX0VYSVRfSU5WQUxJRCk7CiB9CiAKQEAgLTg1MiwxNiArODY0 LDE3IEBAIHN0YXRpYyBpbnQgZGlnaXRzKHNpemVfdCBudW0pCiAJcmV0dXJuIHJldDsKIH0KIAot c3RhdGljIHZvaWQgcHJpbnRfdGltZV9sZWZ0KHN0cnVjdCBleGVjdXRlX3N0YXRlICpzdGF0ZSwK LQkJCSAgICBzdHJ1Y3Qgc2V0dGluZ3MgKnNldHRpbmdzKQorc3RhdGljIGludCBwcmludF90aW1l X2xlZnQoc3RydWN0IGV4ZWN1dGVfc3RhdGUgKnN0YXRlLAorCQkJICAgc3RydWN0IHNldHRpbmdz ICpzZXR0aW5ncywKKwkJCSAgIGNoYXIgKmJ1ZiwgaW50IHJlbSkKIHsKIAlpbnQgd2lkdGg7CiAK IAlpZiAoc2V0dGluZ3MtPm92ZXJhbGxfdGltZW91dCA8PSAwKQotCQlyZXR1cm47CisJCXJldHVy biAwOwogCiAJd2lkdGggPSBkaWdpdHMoc2V0dGluZ3MtPm92ZXJhbGxfdGltZW91dCk7Ci0JcHJp bnRmKCIoJSouMGZzIGxlZnQpICIsIHdpZHRoLCBzdGF0ZS0+dGltZV9sZWZ0KTsKKwlyZXR1cm4g c25wcmludGYoYnVmLCByZW0sICIoJSouMGZzIGxlZnQpICIsIHdpZHRoLCBzdGF0ZS0+dGltZV9s ZWZ0KTsKIH0KIAogc3RhdGljIGNoYXIgKmVudHJ5X2Rpc3BsYXlfbmFtZShzdHJ1Y3Qgam9iX2xp c3RfZW50cnkgKmVudHJ5KQpAQCAtOTIzLDEyICs5MzYsMTIgQEAgc3RhdGljIGludCBleGVjdXRl X25leHRfZW50cnkoc3RydWN0IGV4ZWN1dGVfc3RhdGUgKnN0YXRlLAogCXNucHJpbnRmKG5hbWUs IHNpemVvZihuYW1lKSwgIiV6ZCIsIGlkeCk7CiAJbWtkaXJhdChyZXNkaXJmZCwgbmFtZSwgMDc3 Nyk7CiAJaWYgKChkaXJmZCA9IG9wZW5hdChyZXNkaXJmZCwgbmFtZSwgT19ESVJFQ1RPUlkgfCBP X1JET05MWSB8IE9fQ0xPRVhFQykpIDwgMCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFj Y2Vzc2luZyBpbmRpdmlkdWFsIHRlc3QgcmVzdWx0IGRpcmVjdG9yeVxuIik7CisJCWVycmYoIkVy cm9yIGFjY2Vzc2luZyBpbmRpdmlkdWFsIHRlc3QgcmVzdWx0IGRpcmVjdG9yeVxuIik7CiAJCXJl dHVybiAtMTsKIAl9CiAKIAlpZiAoIW9wZW5fb3V0cHV0X2ZpbGVzKGRpcmZkLCBvdXRwdXRzLCB0 cnVlKSkgewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgb3V0cHV0IGZpbGVzXG4i KTsKKwkJZXJyZigiRXJyb3Igb3BlbmluZyBvdXRwdXQgZmlsZXNcbiIpOwogCQlyZXN1bHQgPSAt MTsKIAkJZ290byBvdXRfZGlyZmQ7CiAJfQpAQCAtOTM5LDEzICs5NTIsMTMgQEAgc3RhdGljIGlu dCBleGVjdXRlX25leHRfZW50cnkoc3RydWN0IGV4ZWN1dGVfc3RhdGUgKnN0YXRlLAogCX0KIAog CWlmIChwaXBlKG91dHBpcGUpIHx8IHBpcGUoZXJycGlwZSkpIHsKLQkJZnByaW50ZihzdGRlcnIs ICJFcnJvciBjcmVhdGluZyBwaXBlczogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCWVycmYo IkVycm9yIGNyZWF0aW5nIHBpcGVzOiAlbVxuIik7CiAJCXJlc3VsdCA9IC0xOwogCQlnb3RvIG91 dF9waXBlOwogCX0KIAogCWlmICgoa21zZ2ZkID0gb3BlbigiL2Rldi9rbXNnIiwgT19SRE9OTFkg fCBPX0NMT0VYRUMpKSA8IDApIHsKLQkJZnByaW50ZihzdGRlcnIsICJXYXJuaW5nOiBDYW5ub3Qg b3BlbiAvZGV2L2ttc2dcbiIpOworCQllcnJmKCJXYXJuaW5nOiBDYW5ub3Qgb3BlbiAvZGV2L2tt c2dcbiIpOwogCX0gZWxzZSB7CiAJCS8qIFRPRE86IENoZWNraW5nIG9mIGFib3J0IGNvbmRpdGlv bnMgaW4gcHJlLWV4ZWN1dGUgZG1lc2cgKi8KIAkJbHNlZWsoa21zZ2ZkLCAwLCBTRUVLX0VORCk7 CkBAIC05NTMsMTcgKzk2NiwyMiBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfbmV4dF9lbnRyeShzdHJ1 Y3QgZXhlY3V0ZV9zdGF0ZSAqc3RhdGUsCiAKIAogCWlmIChzZXR0aW5ncy0+bG9nX2xldmVsID49 IExPR19MRVZFTF9OT1JNQUwpIHsKKwkJY2hhciBidWZbMTAwXTsKIAkJY2hhciAqZGlzcGxheW5h bWU7CiAJCWludCB3aWR0aCA9IGRpZ2l0cyh0b3RhbCk7Ci0JCXByaW50ZigiWyUwKnpkLyUwKnpk XSAiLCB3aWR0aCwgaWR4ICsgMSwgd2lkdGgsIHRvdGFsKTsKKwkJaW50IGxlbjsKKworCQlsZW4g PSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLAorCQkJICAgICAgICJbJTAqemQvJTAqemRdICIs IHdpZHRoLCBpZHggKyAxLCB3aWR0aCwgdG90YWwpOwogCi0JCXByaW50X3RpbWVfbGVmdChzdGF0 ZSwgc2V0dGluZ3MpOworCQlsZW4gKz0gcHJpbnRfdGltZV9sZWZ0KHN0YXRlLCBzZXR0aW5ncywK KwkJCQkgICAgICAgYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbik7CiAKIAkJZGlzcGxheW5h bWUgPSBlbnRyeV9kaXNwbGF5X25hbWUoZW50cnkpOwotCQlwcmludGYoIiVzIiwgZGlzcGxheW5h bWUpOworCQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwgIiVz IiwgZGlzcGxheW5hbWUpOwogCQlmcmVlKGRpc3BsYXluYW1lKTsKIAotCQlwcmludGYoIlxuIik7 CisJCW91dGYoIiVzXG4iLCBidWYpOwogCX0KIAogCS8qCkBAIC05NzUsNyArOTkzLDcgQEAgc3Rh dGljIGludCBleGVjdXRlX25leHRfZW50cnkoc3RydWN0IGV4ZWN1dGVfc3RhdGUgKnN0YXRlLAog CiAJY2hpbGQgPSBmb3JrKCk7CiAJaWYgKGNoaWxkIDwgMCkgewotCQlmcHJpbnRmKHN0ZGVyciwg IkZhaWxlZCB0byBmb3JrOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZXJyZigiRmFpbGVk IHRvIGZvcms6ICVtXG4iKTsKIAkJcmVzdWx0ID0gLTE7CiAJCWdvdG8gb3V0X2ttc2dmZDsKIAl9 IGVsc2UgaWYgKGNoaWxkID09IDApIHsKQEAgLTEwMjcsOSArMTA0NSw4IEBAIHN0YXRpYyBib29s IGNsZWFyX3Rlc3RfcmVzdWx0X2RpcmVjdG9yeShpbnQgZGlyZmQpCiAKIAlmb3IgKGkgPSAwOyBp IDwgX0ZfTEFTVDsgaSsrKSB7CiAJCWlmIChyZW1vdmVfZmlsZShkaXJmZCwgZmlsZW5hbWVzW2ld KSkgewotCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBkZWxldGluZyAlcyBmcm9tIHRlc3QgcmVz dWx0IGRpcmVjdG9yeTogJXNcbiIsCi0JCQkJZmlsZW5hbWVzW2ldLAotCQkJCXN0cmVycm9yKGVy cm5vKSk7CisJCQllcnJmKCJFcnJvciBkZWxldGluZyAlcyBmcm9tIHRlc3QgcmVzdWx0IGRpcmVj dG9yeTogJW1cbiIsCisJCQkgICAgIGZpbGVuYW1lc1tpXSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJ CX0KIAl9CkBAIC0xMDQ4LDcgKzEwNjUsNyBAQCBzdGF0aWMgYm9vbCBjbGVhcl9vbGRfcmVzdWx0 cyhjaGFyICpwYXRoKQogCQkJcmV0dXJuIHRydWU7CiAJCX0KIAotCQlmcHJpbnRmKHN0ZGVyciwg IkVycm9yIGNsZWFyaW5nIG9sZCByZXN1bHRzOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ ZXJyZigiRXJyb3IgY2xlYXJpbmcgb2xkIHJlc3VsdHM6ICVtXG4iKTsKIAkJcmV0dXJuIGZhbHNl OwogCX0KIApAQCAtMTA1Nyw3ICsxMDc0LDcgQEAgc3RhdGljIGJvb2wgY2xlYXJfb2xkX3Jlc3Vs dHMoY2hhciAqcGF0aCkKIAkgICAgcmVtb3ZlX2ZpbGUoZGlyZmQsICJlbmR0aW1lLnR4dCIpIHx8 CiAJICAgIHJlbW92ZV9maWxlKGRpcmZkLCAiYWJvcnRlZC50eHQiKSkgewogCQljbG9zZShkaXJm ZCk7Ci0JCWZwcmludGYoc3RkZXJyLCAiRXJyb3IgY2xlYXJpbmcgb2xkIHJlc3VsdHM6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOworCQllcnJmKCJFcnJvciBjbGVhcmluZyBvbGQgcmVzdWx0czog JW1cbiIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xMDc2LDkgKzEwOTMsOCBAQCBzdGF0 aWMgYm9vbCBjbGVhcl9vbGRfcmVzdWx0cyhjaGFyICpwYXRoKQogCQl9CiAJCWNsb3NlKHJlc2Rp cmZkKTsKIAkJaWYgKHVubGlua2F0KGRpcmZkLCBuYW1lLCBBVF9SRU1PVkVESVIpKSB7Ci0JCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkiV2FybmluZzogUmVzdWx0IGRpcmVjdG9yeSAlcyBjb250YWlu cyBleHRyYSBmaWxlc1xuIiwKLQkJCQluYW1lKTsKKwkJCWVycmYoIldhcm5pbmc6IFJlc3VsdCBk aXJlY3RvcnkgJXMgY29udGFpbnMgZXh0cmEgZmlsZXNcbiIsCisJCQkgICAgIG5hbWUpOwogCQl9 CiAJfQogCkBAIC0xMjM0LDExICsxMjUwLDExIEBAIHN0YXRpYyB2b2lkIG9vbV9pbW1vcnRhbCh2 b2lkKQogCiAJZmQgPSBvcGVuKCIvcHJvYy9zZWxmL29vbV9zY29yZV9hZGoiLCBPX1dST05MWSk7 CiAJaWYgKGZkIDwgMCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENhbm5vdCBhZGp1 c3Qgb29tIHNjb3JlLlxuIik7CisJCWVycmYoIldhcm5pbmc6IENhbm5vdCBhZGp1c3Qgb29tIHNj b3JlLlxuIik7CiAJCXJldHVybjsKIAl9CiAJaWYgKHdyaXRlKGZkLCBuZXZlcl9raWxsLCBzaXpl b2YobmV2ZXJfa2lsbCkpICE9IHNpemVvZihuZXZlcl9raWxsKSkKLQkJZnByaW50ZihzdGRlcnIs ICJXYXJuaW5nOiBBZGp1c3Rpbmcgb29tIHNjb3JlIGZhaWxlZC5cbiIpOworCQllcnJmKCJXYXJu aW5nOiBBZGp1c3Rpbmcgb29tIHNjb3JlIGZhaWxlZC5cbiIpOwogCiAJY2xvc2UoZmQpOwogfQpA QCAtMTI1MywyMiArMTI2OSwyMiBAQCBzdGF0aWMgYm9vbCBzaG91bGRfZGllX2JlY2F1c2Vfc2ln bmFsKGludCBzaWdmZCkKIAogCWlmIChyZXQgIT0gMCkgewogCQlpZiAocmV0ID09IC0xKSB7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgIlBvbGwgb24gc2lnbmFsZmQgZmFpbGVkIHdpdGggJXNcbiIsIHN0 cmVycm9yKGVycm5vKSk7CisJCQllcnJmKCJQb2xsIG9uIHNpZ25hbGZkIGZhaWxlZCB3aXRoICVt XG4iKTsKIAkJCXJldHVybiB0cnVlOyAvKiBzb21ldGhpbmcgaXMgd3JvbmcsIGxldCdzIGRpZSAq LwogCQl9CiAKIAkJcmV0ID0gcmVhZChzaWdmZCwgJnNpZ2luZm8sIHNpemVvZihzaWdpbmZvKSk7 CiAKIAkJaWYgKHJldCA9PSAtMSkgewotCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciByZWFkaW5n IGZyb20gc2lnbmFsZmQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQkJZXJyZigiRXJyb3Ig cmVhZGluZyBmcm9tIHNpZ25hbGZkOiAlbVxuIik7CiAJCQlyZXR1cm4gZmFsc2U7IC8qIHdlIG1h eSB3YW50IHRvIHJldHJ5IGxhdGVyICovCiAJCX0KIAogCQlpZiAoc2lnaW5mby5zc2lfc2lnbm8g PT0gU0lHQ0hMRCkgewotCQkJZnByaW50ZihzdGRlcnIsICJSdW5uZXIgZ290IHN0cmF5IFNJR0NI TEQgd2hpbGUgbm90IGV4ZWN1dGluZyBhbnkgdGVzdHMuXG4iKTsKKwkJCWVycmYoIlJ1bm5lciBn b3Qgc3RyYXkgU0lHQ0hMRCB3aGlsZSBub3QgZXhlY3V0aW5nIGFueSB0ZXN0cy5cbiIpOwogCQl9 IGVsc2UgewotCQkJZnByaW50ZihzdGRlcnIsICJSdW5uZXIgaXMgYmVpbmcga2lsbGVkIGJ5ICVz XG4iLAotCQkJCXN0cnNpZ25hbChzaWdpbmZvLnNzaV9zaWdubykpOworCQkJZXJyZigiUnVubmVy IGlzIGJlaW5nIGtpbGxlZCBieSAlc1xuIiwKKwkJCSAgICAgc3Ryc2lnbmFsKHNpZ2luZm8uc3Np X3NpZ25vKSk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCkBAIC0xMjg5LDI4ICsxMzA1LDI3IEBA IGJvb2wgZXhlY3V0ZShzdHJ1Y3QgZXhlY3V0ZV9zdGF0ZSAqc3RhdGUsCiAJYm9vbCBzdGF0dXMg PSB0cnVlOwogCiAJaWYgKHN0YXRlLT5kcnkpIHsKLQkJcHJpbnRmKCJEcnkgcnVuLCBub3QgZXhl Y3V0aW5nLiBJbnZva2UgaWd0X3Jlc3VtZSBpZiB5b3Ugd2FudCB0byBleGVjdXRlLlxuIik7CisJ CW91dGYoIkRyeSBydW4sIG5vdCBleGVjdXRpbmcuIEludm9rZSBpZ3RfcmVzdW1lIGlmIHlvdSB3 YW50IHRvIGV4ZWN1dGUuXG4iKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCiAJaWYgKChyZXNkaXJm ZCA9IG9wZW4oc2V0dGluZ3MtPnJlc3VsdHNfcGF0aCwgT19ESVJFQ1RPUlkgfCBPX1JET05MWSkp IDwgMCkgewogCQkvKiBJbml0aWFsaXplIHN0YXRlIHNob3VsZCBoYXZlIGRvbmUgdGhpcyAqLwot CQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBGYWlsdXJlIG9wZW5pbmcgcmVzdWx0cyBwYXRoICVz XG4iLAotCQkJc2V0dGluZ3MtPnJlc3VsdHNfcGF0aCk7CisJCWVycmYoIkVycm9yOiBGYWlsdXJl IG9wZW5pbmcgcmVzdWx0cyBwYXRoICVzXG4iLAorCQkgICAgIHNldHRpbmdzLT5yZXN1bHRzX3Bh dGgpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJaWYgKCh0ZXN0ZGlyZmQgPSBvcGVuKHNldHRp bmdzLT50ZXN0X3Jvb3QsIE9fRElSRUNUT1JZIHwgT19SRE9OTFkpKSA8IDApIHsKLQkJZnByaW50 ZihzdGRlcnIsICJFcnJvcjogRmFpbHVyZSBvcGVuaW5nIHRlc3Qgcm9vdCAlc1xuIiwKLQkJCXNl dHRpbmdzLT50ZXN0X3Jvb3QpOworCQllcnJmKCJFcnJvcjogRmFpbHVyZSBvcGVuaW5nIHRlc3Qg cm9vdCAlc1xuIiwKKwkJICAgICBzZXR0aW5ncy0+dGVzdF9yb290KTsKIAkJY2xvc2UocmVzZGly ZmQpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogVE9ETzogT24gcmVzdW1lLCBkb24ndCBy ZXdyaXRlLCB2ZXJpZnkgdGhhdCBjb250ZW50IG1hdGNoZXMgY3VycmVudCBpbnN0ZWFkICovCiAJ aWYgKCh1bmFtZWZkID0gb3BlbmF0KHJlc2RpcmZkLCAidW5hbWUudHh0IiwgT19DUkVBVCB8IE9f V1JPTkxZIHwgT19UUlVOQywgMDY2NikpIDwgMCkgewotCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9y OiBGYWlsdXJlIG9wZW5pbmcgdW5hbWUudHh0OiAlc1xuIiwKLQkJCXN0cmVycm9yKGVycm5vKSk7 CisJCWVycmYoIkVycm9yOiBGYWlsdXJlIG9wZW5pbmcgdW5hbWUudHh0OiAlbVxuIik7CiAJCWNs b3NlKHRlc3RkaXJmZCk7CiAJCWNsb3NlKHJlc2RpcmZkKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAt MTMzOSw3ICsxMzU0LDcgQEAgYm9vbCBleGVjdXRlKHN0cnVjdCBleGVjdXRlX3N0YXRlICpzdGF0 ZSwKIAogCWlmIChzaWdmZCA8IDApIHsKIAkJLyogVE9ETzogSGFuZGxlIGJldHRlciAqLwotCQlm cHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBtYXNrIHNpZ25hbHNcbiIpOworCQllcnJmKCJDYW5ub3Qg bWFzayBzaWduYWxzXG4iKTsKIAkJc3RhdHVzID0gZmFsc2U7CiAJCWdvdG8gZW5kOwogCX0KQEAg LTE0MDEsNyArMTQxNiw3IEBAIGJvb2wgZXhlY3V0ZShzdHJ1Y3QgZXhlY3V0ZV9zdGF0ZSAqc3Rh dGUsCiAKIAkJaWYgKG92ZXJhbGxfdGltZW91dF9leGNlZWRlZChzdGF0ZSkpIHsKIAkJCWlmIChz ZXR0aW5ncy0+bG9nX2xldmVsID49IExPR19MRVZFTF9OT1JNQUwpIHsKLQkJCQlwcmludGYoIk92 ZXJhbGwgdGltZW91dCB0aW1lIGV4Y2VlZGVkLCBzdG9wcGluZy5cbiIpOworCQkJCW91dGYoIk92 ZXJhbGwgdGltZW91dCB0aW1lIGV4Y2VlZGVkLCBzdG9wcGluZy5cbiIpOwogCQkJfQogCiAJCQli cmVhazsKLS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2