From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [PATCH i-g-t v5 1/4] lib: add igt_dummyload Date: Fri, 11 Nov 2016 19:41:10 +0200 Message-ID: <1478886073-9479-2-git-send-email-abdiel.janulgue@linux.intel.com> References: <1478886073-9479-1-git-send-email-abdiel.janulgue@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D35686E8B3 for ; Fri, 11 Nov 2016 09:45:16 +0000 (UTC) In-Reply-To: <1478886073-9479-1-git-send-email-abdiel.janulgue@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org QSBsb3Qgb2YgaWd0IHRlc3RjYXNlcyBuZWVkIHNvbWUgR1BVIHdvcmtsb2FkIHRvIG1ha2Ugc3Vy ZSBhIHJhY2UKd2luZG93IGlzIGJpZyBlbm91Z2guIFVuZm9ydHVuYXRlbHkgaGF2aW5nIGEgZml4 ZWQgYW1vdW50IG9mCndvcmtsb2FkIGxlYWRzIHRvIHNwdXJpb3VzIHRlc3QgZmFpbHVyZXMgb3Ig b3ZlcnRseSBsb25nIHJ1bnRpbWVzCm9uIHNvbWUgZmFzdC9zbG93IHBsYXRmb3Jtcy4gVGhpcyBs aWJyYXJ5IGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkKdG8gc3VibWl0IEdQVSB3b3JrbG9hZHMgdGhh dCBzaG91bGQgY29uc3VtZSBleGFjdGx5IGEgc3BlY2lmaWMKYW1vdW50IG9mIHRpbWUuCgp2MiA6 IEFkZCByZWN1cnNpdmUgYmF0Y2ggZmVhdHVyZSBmcm9tIENocmlzCnYzIDogRHJvcCBhdXRvLXR1 bmVkIHN0dWZmLiBBZGQgYm8gZGVwZW5kZWN5IHRvIHJlY3Vyc2l2ZSBiYXRjaAogICAgIGJ5IGFk ZGluZyBhIGR1bW15IHJlbG9jIHRvIHRoZSBibyBhcyBzdWdnZXN0ZWQgYnkgVmlsbGUuCnY0OiAg Rml4IGRlcGVuZGVuY3kgcmVsb2MgYXMgd3JpdGUgaW5zdGVhZCBvZiByZWFkIChWaWxsZSkuCiAg ICAgRml4IHdyb25nIGhhbmRsaW5nIG9mIGJhdGNoYnVmZmVyIHN0YXJ0IG9uIElMSyBjYXVzaW5n CiAgICAgdGVzdCBmYWlsdXJlCgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1i eTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgotLS0K IGxpYi9NYWtlZmlsZS5zb3VyY2VzIHwgICAyICsKIGxpYi9pZ3QuaCAgICAgICAgICAgIHwgICAx ICsKIGxpYi9pZ3RfZHVtbXlsb2FkLmMgIHwgMjc2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2lndF9kdW1teWxvYWQuaCAgfCAgNDIgKysr KysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzIxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvaWd0X2R1bW15bG9hZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1t eWxvYWQuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxl LnNvdXJjZXMKaW5kZXggZThlMjc3Yi4uN2ZjNWVjMiAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxl LnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAgLTc1LDYgKzc1LDggQEAgbGli X3NvdXJjZV9saXN0ID0JIAlcCiAJaWd0X2RyYXcuaAkJXAogCWlndF9wbS5jCQlcCiAJaWd0X3Bt LmgJCVwKKwlpZ3RfZHVtbXlsb2FkLmMJCVwKKwlpZ3RfZHVtbXlsb2FkLmgJCVwKIAl1d2lsZG1h dC91d2lsZG1hdC5oCVwKIAl1d2lsZG1hdC91d2lsZG1hdC5jCVwKIAkkKE5VTEwpCmRpZmYgLS1n aXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKaW5kZXggZDc1MWYyNC4uYTAwMjhkNSAxMDA2NDQK LS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9pZ3QuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1 ZGUgImlndF9jb3JlLmgiCiAjaW5jbHVkZSAiaWd0X2RlYnVnZnMuaCIKICNpbmNsdWRlICJpZ3Rf ZHJhdy5oIgorI2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIKICNpbmNsdWRlICJpZ3RfZmIuaCIK ICNpbmNsdWRlICJpZ3RfZ3QuaCIKICNpbmNsdWRlICJpZ3Rfa21zLmgiCmRpZmYgLS1naXQgYS9s aWIvaWd0X2R1bW15bG9hZC5jIGIvbGliL2lndF9kdW1teWxvYWQuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iOTM0ZmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2lndF9k dW1teWxvYWQuYwpAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IElu dGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRX QVJFLgorICoKKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9h ZC5oIgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxz eXMvc3lzY2FsbC5oPgorCisvKioKKyAqIFNFQ1RJT046aWd0X2R1bW15bG9hZAorICogQHNob3J0 X2Rlc2NyaXB0aW9uOiBMaWJyYXJ5IGZvciBzdWJtaXR0aW5nIEdQVSB3b3JrbG9hZHMKKyAqIEB0 aXRsZTogRHVtbXlsb2FkCisgKiBAaW5jbHVkZTogaWd0LmgKKyAqCisgKiBBIGxvdCBvZiBpZ3Qg dGVzdGNhc2VzIG5lZWQgc29tZSBHUFUgd29ya2xvYWQgdG8gbWFrZSBzdXJlIGEgcmFjZSB3aW5k b3cgaXMKKyAqIGJpZyBlbm91Z2guIFVuZm9ydHVuYXRlbHkgaGF2aW5nIGEgZml4ZWQgYW1vdW50 IG9mIHdvcmtsb2FkIGxlYWRzIHRvCisgKiBzcHVyaW91cyB0ZXN0IGZhaWx1cmVzIG9yIG92ZXJ0 bHkgbG9uZyBydW50aW1lcyBvbiBzb21lIGZhc3Qvc2xvdyBwbGF0Zm9ybXMuCisgKiBUaGlzIGxp YnJhcnkgY29udGFpbnMgZnVuY3Rpb25hbGl0eSB0byBzdWJtaXQgR1BVIHdvcmtsb2FkcyB0aGF0 IHNob3VsZAorICogY29uc3VtZSBleGFjdGx5IGEgc3BlY2lmaWMgYW1vdW50IG9mIHRpbWUuCisg Ki8KKworI2RlZmluZSBOU0VDX1BFUl9TRUMgMTAwMDAwMDAwMEwKKworI2RlZmluZSBnZXR0aWQo KSBzeXNjYWxsKF9fTlJfZ2V0dGlkKQorI2RlZmluZSBzaWdldl9ub3RpZnlfdGhyZWFkX2lkIF9z aWdldl91bi5fdGlkCisKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCAgICAgICgx MykKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLICAgICAgICgzIDw8IExPQ0FMX0k5 MTVfRVhFQ19CU0RfU0hJRlQpCisKKyNkZWZpbmUgRU5HSU5FX01BU0sgIChJOTE1X0VYRUNfUklO R19NQVNLIHwgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLKQorCitzdGF0aWMgdm9pZAorZmlsbF9v YmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iaiwgdWludDMyX3QgZ2Vt X2hhbmRsZSwKKwkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxv Y3MsIHVpbnQzMl90IGNvdW50KQoreworCW1lbXNldChvYmosIDAsIHNpemVvZigqb2JqKSk7CisJ b2JqLT5oYW5kbGUgPSBnZW1faGFuZGxlOworCW9iai0+cmVsb2NhdGlvbl9jb3VudCA9IGNvdW50 OworCW9iai0+cmVsb2NzX3B0ciA9ICh1aW50cHRyX3QpcmVsb2NzOworfQorCitzdGF0aWMgdm9p ZAorZmlsbF9yZWxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9j LAorCSAgIHVpbnQzMl90IGdlbV9oYW5kbGUsIHVpbnQzMl90IG9mZnNldCwKKwkgICB1aW50MzJf dCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbnMpCit7CisJcmVsb2MtPnRhcmdl dF9oYW5kbGUgPSBnZW1faGFuZGxlOworCXJlbG9jLT5kZWx0YSA9IDA7CisJcmVsb2MtPm9mZnNl dCA9IG9mZnNldCAqIHNpemVvZih1aW50MzJfdCk7CisJcmVsb2MtPnByZXN1bWVkX29mZnNldCA9 IDA7CisJcmVsb2MtPnJlYWRfZG9tYWlucyA9IHJlYWRfZG9tYWluczsKKwlyZWxvYy0+d3JpdGVf ZG9tYWluID0gd3JpdGVfZG9tYWluczsKK30KKworCitzdGF0aWMgdWludDMyX3QgKmJhdGNoOwor CitzdGF0aWMgdWludDMyX3QgZW1pdF9yZWN1cnNpdmVfYmF0Y2goaW50IGZkLCBpbnQgZW5naW5l LCB1bnNpZ25lZCBkZXBfaGFuZGxlKQoreworCWNvbnN0IGludCBnZW4gPSBpbnRlbF9nZW4oaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy IG9ialsyXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NzWzJd OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwl1bnNpZ25lZCBl bmdpbmVzWzE2XTsKKwl1bnNpZ25lZCBuZW5naW5lLCBoYW5kbGU7CisJaW50IGkgPSAwLCByZWxv Y19jb3VudCA9IDAsIGJ1Zl9jb3VudCA9IDA7CisKKwlidWZfY291bnQgPSAwOworCW5lbmdpbmUg PSAwOworCWlmIChlbmdpbmUgPCAwKSB7CisJCWZvcl9lYWNoX2VuZ2luZShmZCwgZW5naW5lKQor CQkJaWYgKGVuZ2luZSkKKwkJCQllbmdpbmVzW25lbmdpbmUrK10gPSBlbmdpbmU7CisJfSBlbHNl IHsKKwkJaWd0X3JlcXVpcmUoZ2VtX2hhc19yaW5nKGZkLCBlbmdpbmUpKTsKKwkJZW5naW5lc1tu ZW5naW5lKytdID0gZW5naW5lOworCX0KKwlpZ3RfcmVxdWlyZShuZW5naW5lKTsKKworCW1lbXNl dCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKKwltZW1zZXQob2JqLCAwLCBzaXplb2Yo b2JqKSk7CisJbWVtc2V0KHJlbG9jcywgMCwgc2l6ZW9mKHJlbG9jcykpOworCisJZXhlY2J1Zi5i dWZmZXJzX3B0ciA9ICh1aW50cHRyX3QpIG9iajsKKwloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0 MDk2KTsKKwliYXRjaCA9IGdlbV9tbWFwX19ndHQoZmQsIGhhbmRsZSwgNDA5NiwgUFJPVF9XUklU RSk7CisJZ2VtX3NldF9kb21haW4oZmQsIGhhbmRsZSwKKwkJCUk5MTVfR0VNX0RPTUFJTl9HVFQs IEk5MTVfR0VNX0RPTUFJTl9HVFQpOworCisJaWYgKG5lbmdpbmUgPT0gMSAmJiBkZXBfaGFuZGxl ID4gMCkgeworCQkvKiBkdW1teSB3cml0ZSB0byBkZXBlbmRlbmN5ICovCisJCWZpbGxfb2JqZWN0 KCZvYmpbYnVmX2NvdW50XSwgZGVwX2hhbmRsZSwgTlVMTCwgMCk7CisJCWJ1Zl9jb3VudCsrOwor CisJCWZpbGxfcmVsb2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGRlcF9oYW5kbGUsIGksCisJCQkg ICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAorCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUik7 CisJCWJhdGNoW2krK10gPSAwOyAvKiByZWxvYyAqLworCQlyZWxvY19jb3VudCsrOworCQliYXRj aFtpKytdID0gTUlfTk9PUDsKKwl9CisKKwlpZiAoZ2VuID49IDgpIHsKKwkJYmF0Y2hbaSsrXSA9 IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgOCB8IDE7CisJCS8qIHJlY3Vyc2UgKi8KKwkJ ZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9H RU1fRE9NQUlOX0NPTU1BTkQsIDApOworCQliYXRjaFtpKytdID0gMDsKKwkJYmF0Y2hbaSsrXSA9 IDA7CisJfSBlbHNlIGlmIChnZW4gPj0gNikgeworCQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVG RkVSX1NUQVJUIHwgMSA8PCA4OworCQkvKiByZWN1cnNlICovCisJCWZpbGxfcmVsb2MoJnJlbG9j c1tyZWxvY19jb3VudF0sIGhhbmRsZSwgaSwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5E LCAwKTsKKwkJYmF0Y2hbaSsrXSA9IDA7CisJfSBlbHNlIHsKKwkJYmF0Y2hbaSsrXSA9IE1JX0JB VENIX0JVRkZFUl9TVEFSVCB8IDIgPDwgNiB8CisJCQkoKGdlbiA8IDQpID8gMSA6IDApOworCQkv KiByZWN1cnNlICovCisJCWZpbGxfcmVsb2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGhhbmRsZSwg aSwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ELCAwKTsKKwkJYmF0Y2hbaSsrXSA9IDA7 CisJCWlmIChnZW4gPCA0KQorCQkJcmVsb2NzW3JlbG9jX2NvdW50XS5kZWx0YSA9IDE7CisJfQor CXJlbG9jX2NvdW50Kys7CisKKwlmaWxsX29iamVjdCgmb2JqW2J1Zl9jb3VudF0sIGhhbmRsZSwg cmVsb2NzLCByZWxvY19jb3VudCk7CisJYnVmX2NvdW50Kys7CisKKwlmb3IgKGkgPSAwOyBpIDwg bmVuZ2luZTsgaSsrKSB7CisJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOworCQlleGVj YnVmLmZsYWdzID0gZW5naW5lc1tpXTsKKwkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBidWZfY291 bnQ7CisJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CisJfQorCisJcmV0dXJuIGhhbmRsZTsK K30KKworc3RhdGljIHZvaWQgc2lnaXRlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQg KmFyZykKK3sKKwkqYmF0Y2ggPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCV9fc3luY19zeW5jaHJv bml6ZSgpOworfQorCitzdGF0aWMgdGltZXJfdCBzZXR1cF9iYXRjaF9leGl0X3RpbWVyKGludDY0 X3QgbnMpCit7CisJdGltZXJfdCB0aW1lcjsKKwlzdHJ1Y3Qgc2lnZXZlbnQgc2V2OworCXN0cnVj dCBzaWdhY3Rpb24gYWN0OworCXN0cnVjdCBpdGltZXJzcGVjIGl0czsKKworCW1lbXNldCgmc2V2 LCAwLCBzaXplb2Yoc2V2KSk7CisJc2V2LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTCB8IFNJ R0VWX1RIUkVBRF9JRDsKKwlzZXYuc2lnZXZfbm90aWZ5X3RocmVhZF9pZCA9IGdldHRpZCgpOwor CXNldi5zaWdldl9zaWdubyA9IFNJR1JUTUlOICsgMTsKKwlpZ3RfYXNzZXJ0KHRpbWVyX2NyZWF0 ZShDTE9DS19NT05PVE9OSUMsICZzZXYsICZ0aW1lcikgPT0gMCk7CisJaWd0X2Fzc2VydCh0aW1l ciA+IDApOworCisJbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKKwlhY3Quc2Ffc2lnYWN0 aW9uID0gc2lnaXRlcjsKKwlhY3Quc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOworCWlndF9hc3NlcnQo c2lnYWN0aW9uKFNJR1JUTUlOICsgMSwgJmFjdCwgTlVMTCkgPT0gMCk7CisKKwltZW1zZXQoJml0 cywgMCwgc2l6ZW9mKGl0cykpOworCWl0cy5pdF92YWx1ZS50dl9zZWMgPSBucyAvIE5TRUNfUEVS X1NFQzsKKwlpdHMuaXRfdmFsdWUudHZfbnNlYyA9IG5zICUgTlNFQ19QRVJfU0VDOworCWlndF9h c3NlcnQodGltZXJfc2V0dGltZSh0aW1lciwgMCwgJml0cywgTlVMTCkgPT0gMCk7CisKKwlyZXR1 cm4gdGltZXI7Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2g6CisgKiBAZmQ6IG9wZW4gaTkx NSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAbnM6IGFtb3VudCBvZiB0aW1lIGluIG5hbm9zZWNv bmRzIHRoZSBiYXRjaCBleGVjdXRlcyBhZnRlciB0ZXJtaW5hdGluZy4KKyAqICAgICAgSWYgdmFs dWUgaXMgbGVzcyB0aGFuIDAsIGV4ZWN1dGUgYmF0Y2ggZm9yZXZlci4KKyAqIEBlbmdpbmU6IFJp bmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMg bGVzcworICogICAgICAgICAgdGhhbiAwLCBleGVjdXRlIG9uIGFsbCBhdmFpbGFibGUgcmluZ3Mu CisgKiBAZGVwX2hhbmRsZTogaGFuZGxlIHRvIGEgYnVmZmVyIG9iamVjdCBkZXBlbmRlbmN5LiBJ ZiBncmVhdGVyIHRoYW4gMCwgYWRkIGEKKyAqICAgICAgICAgICAgICByZWxvY2F0aW9uIGVudHJ5 IHRvIHRoaXMgYnVmZmVyIHdpdGhpbiB0aGUgYmF0Y2guCisgKgorICogU3RhcnQgYSByZWN1cnNp dmUgYmF0Y2ggb24gYSByaW5nIHRoYXQgdGVybWluYXRlcyBhZnRlciBhbiBleGFjdCBhbW91bnQK KyAqIG9mIHRpbWUgaGFzIGVsYXBzZWQuIEltbWVkaWF0ZWx5IHJldHVybnMgYSAjaWd0X3NwaW5f dCB0aGF0IGNvbnRhaW5zIHRoZQorICogYmF0Y2gncyBoYW5kbGUgdGhhdCBjYW4gYmUgd2FpdGVk IHVwb24uIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgbXVzdCBiZSBwYXNzZWQgdG8KKyAqIGlndF9w b3N0X3NwaW5fYmF0Y2goKSBmb3IgcG9zdC1wcm9jZXNzaW5nLgorICoKKyAqIFJldHVybnM6Cisg KiBTdHJ1Y3R1cmUgd2l0aCBoZWxwZXIgaW50ZXJuYWwgc3RhdGUgZm9yIGlndF9wb3N0X3NwaW5f YmF0Y2goKS4KKyAqLworaWd0X3NwaW5fdCBpZ3Rfc3Bpbl9iYXRjaChpbnQgZmQsIGludDY0X3Qg bnMsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCit7CisJdGltZXJfdCB0aW1lcjsK Kwl1aW50MzJfdCBoYW5kbGUgPSBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChmZCwgZW5naW5lLCBkZXBf aGFuZGxlKTsKKwlpbnQ2NF90IHdhaXRfdGltZW91dCA9IDA7CisJaWd0X2Fzc2VydF9lcShnZW1f d2FpdChmZCwgaGFuZGxlLCAmd2FpdF90aW1lb3V0KSwgLUVUSU1FKTsKKworCWlmIChucyA8IDEp IHsKKwkJaWYgKG5zID09IDApIHsKKwkJCSpiYXRjaCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJ CQlfX3N5bmNfc3luY2hyb25pemUoKTsKKwkJCXJldHVybiAoaWd0X3NwaW5fdCl7IGhhbmRsZSwg YmF0Y2gsIDB9OworCQl9CisJCXJldHVybiAoaWd0X3NwaW5fdCl7IGhhbmRsZSwgYmF0Y2gsIDAg fTsKKwl9CisJdGltZXIgPSBzZXR1cF9iYXRjaF9leGl0X3RpbWVyKG5zKTsKKworCXJldHVybiAo aWd0X3NwaW5fdCl7IGhhbmRsZSwgYmF0Y2gsIHRpbWVyIH07Cit9CisKKy8qKgorICogaWd0X3Bv c3Rfc3Bpbl9iYXRjaDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAq IEBhcmc6IHNwaW4gYmF0Y2ggc3RhdGUgZnJvbSBpZ3Rfc3Bpbl9iYXRjaCgpCisgKgorICogVGhp cyBmdW5jdGlvbiBkb2VzIHRoZSBuZWNlc3NhcnkgcG9zdC1wcm9jZXNzaW5nIGFmdGVyIHN0YXJ0 aW5nIGEgcmVjdXJzaXZlCisgKiBiYXRjaCB3aXRoIGlndF9zcGluX2JhdGNoKCkuCisgKi8KK3Zv aWQgaWd0X3Bvc3Rfc3Bpbl9iYXRjaChpbnQgZmQsIGlndF9zcGluX3QgYXJnKQoreworCWlmIChh cmcuaGFuZGxlID09IDApCisJCXJldHVybjsKKworCWlmIChhcmcudGltZXIgPiAwKQorCQl0aW1l cl9kZWxldGUoYXJnLnRpbWVyKTsKKworCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7CisJbXVu bWFwKGFyZy5iYXRjaCwgNDA5Nik7Cit9CisKKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRjaF93YWl0 OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQG5zOiBhbW91bnQg b2YgdGltZSBpbiBuYW5vc2Vjb25kcyB0aGUgYmF0Y2ggZXhlY3V0ZXMgYWZ0ZXIgdGVybWluYXRp bmcuCisgKiAgICAgIElmIHZhbHVlIGlzIGxlc3MgdGhhbiAwLCBleGVjdXRlIGJhdGNoIGZvcmV2 ZXIuCisgKiBAZW5naW5lOiByaW5nIHRvIGV4ZWN1dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYg ZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MKKyAqICAgICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBh bGwgYXZhaWxhYmxlIHJpbmdzLgorICogQGRlcF9oYW5kbGU6IGhhbmRsZSB0byBhIGJ1ZmZlciBv YmplY3QgZGVwZW5kZW5jeS4gSWYgZ3JlYXRlciB0aGFuIDAsIGluY2x1ZGUKKyAqICAgICAgICAg ICAgICB0aGlzIGJ1ZmZlciBvbiB0aGUgd2FpdCBkZXBlbmRlbmN5CisgKgorICogVGhpcyBpcyBz aW1pbGFyIHRvIGlndF9zcGluX2JhdGNoKCksIGJ1dCB3YWl0cyBvbiB0aGUgcmVjdXJzaXZlIGJh dGNoIHRvIGZpbmlzaAorICogaW5zdGVhZCBvZiByZXR1cm5pbmcgcmlnaHQgYXdheS4gVGhlIGZ1 bmN0aW9uIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5CisgKiBwb3N0LXByb2Nlc3NpbmcgYXV0b21h dGljYWxseSBpZiBzZXQgdG8gdGltZW91dC4KKyAqLwordm9pZCBpZ3Rfc3Bpbl9iYXRjaF93YWl0 KGludCBmZCwgaW50NjRfdCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKK3sK KwlpZ3Rfc3Bpbl90IHNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaChmZCwgbnMsIGVuZ2luZSwgZGVwX2hh bmRsZSk7CisJaW50NjRfdCB3YWl0X3RpbWVvdXQgPSBucyArICgwLjUgKiBOU0VDX1BFUl9TRUMp OworCWlndF9hc3NlcnRfZXEoZ2VtX3dhaXQoZmQsIHNwaW4uaGFuZGxlLCAmd2FpdF90aW1lb3V0 KSwgMCk7CisKKwlpZ3RfcG9zdF9zcGluX2JhdGNoKGZkLCBzcGluKTsKK30KZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZWFkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0 X2R1bW15bG9hZC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJ bnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy ZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgor ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZU V0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCisjZGVmaW5lIF9f SUdUX0RVTU1ZTE9BRF9IX18KKwordHlwZWRlZiBzdHJ1Y3QgaWd0X3NwaW4geworCXVuc2lnbmVk IGhhbmRsZTsKKwl1aW50MzJfdCAqYmF0Y2g7CisJdGltZXJfdCB0aW1lcjsKK30gaWd0X3NwaW5f dDsKKworCitpZ3Rfc3Bpbl90IGlndF9zcGluX2JhdGNoKGludCBmZCwgaW50NjRfdCBucywgaW50 IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSk7CisKK3ZvaWQgaWd0X3Bvc3Rfc3Bpbl9iYXRj aChpbnQgZmQsIGlndF9zcGluX3QgYXJnKTsKKwordm9pZCBpZ3Rfc3Bpbl9iYXRjaF93YWl0KGlu dCBmZCwgaW50NjRfdCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSk7CisKKwor I2VuZGlmIC8qIF9fSUdUX0RVTU1ZTE9BRF9IX18gKi8KLS0gCjIuNy4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK