From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC 05/17] drm/i915: Engine busy time tracking Date: Wed, 25 Oct 2017 16:36:20 +0100 Message-ID: <20171025153632.557-6-tvrtko.ursulin@linux.intel.com> References: <20171025153632.557-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7FEB86E6DD for ; Wed, 25 Oct 2017 15:36:46 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id r196so2700297wmf.2 for ; Wed, 25 Oct 2017 08:36:46 -0700 (PDT) In-Reply-To: <20171025153632.557-1-tvrtko.ursulin@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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRyYWNrIHRv dGFsIHRpbWUgcmVxdWVzdHMgaGF2ZSBiZWVuIGV4ZWN1dGluZyBvbiB0aGUgaGFyZHdhcmUuCgpX ZSBhZGQgbmV3IGtlcm5lbCBBUEkgdG8gYWxsb3cgc29mdHdhcmUgdHJhY2tpbmcgb2YgdGltZSBH UFUKZW5naW5lcyBhcmUgc3BlbmRpbmcgZXhlY3V0aW5nIHJlcXVlc3RzLgoKQm90aCBwZXItZW5n aW5lIGFuZCBnbG9iYWwgQVBJIGlzIGFkZGVkIHdpdGggdGhlIGxhdHRlciBhbHNvCmJlaW5nIGV4 cG9ydGVkIGZvciB1c2UgYnkgZXh0ZXJuYWwgdXNlcnMuCgp2MjoKICogU3F1YXNoZWQgd2l0aCB0 aGUgaW50ZXJuYWwgQVBJLgogKiBEcm9wcGVkIHN0YXRpYyBrZXkuCiAqIE1hZGUgcGVyLWVuZ2lu ZS4KICogU3RvcmUgdGltZSBpbiBtb25vdG9uaWMga3RpbWUuCgp2MzogTW92ZWQgc3RhdHMgY2xl YXJpbmcgdG8gZGlzYWJsZS4KCnY0OgogKiBDb21tZW50cy4KICogRG9uJ3QgZXhwb3J0IHRoZSBB UEkganVzdCB5ZXQuCgp2NTogV2hpdGVzcGFjZSBjbGVhbnVwLgoKdjY6CiAqIFJlbmFtZSByZWYg dG8gYWN0aXZlLgogKiBEcm9wIGVuZ2luZSBhZ2dyZWdhdGUgc3RhdHMgZm9yIG5vdy4KICogQWNj b3VudCBpbml0aWFsIGJ1c3kgcGVyaW9kIGFmdGVyIGVuYWJsaW5nIHN0YXRzLgoKdjc6CiAqIFJl YmFzZS4KCnY4OgogKiBNb3ZlIGNvbnRleHQgaW4gbm90aWZpY2F0aW9uIGFmdGVyIHRoZSBub3Rp Zmllci4gKENocmlzIFdpbHNvbikKCnY5OgoKSW4gY2FzZXMgd2hlcmUgc3RhdHMgdHJhY2tpbmcg aXMgZ2V0dGluZyBkaXNhYmxlZCB3aGlsZSB0aGVyZSBpcwphbiBhY3RpdmUgY29udGV4dCBvbiBh biBlbmdpbmUsIGFkZCB1cCB0aGUgY3VycmVudCB2YWx1ZSB0byB0aGUKdG90YWwuIFRoaXMgYWxz byBpbXBsaWVzIHdlIGRvbid0IGNsZWFyIHRoZSB0b3RhbCB3aGVuIHRyYWNraW5nCmlzIGRpc2Fi bGVkIGFueSBsb25nZXIuIFRoZXJlIGlzIG5vIHJlYWwgbmVlZCB0byBkbyBzbyBiZWNhdXNlCndl IGRlZmluZSB0aGUgc3RhdHMgYXMgcmVsYXRpdmUgd2hpbGUgZW5hYmxlZCwgbWVhbmluZwpjb21w YXJpc29uIGJldHdlZW4gdHdvIHNhbXBsZXMgd2hpbGUgdHJhY2tpbmcgaXMgZW5hYmxlZCBpcyB0 aGUKdmFsaWQgdXNhZ2UuIEhvd2V2ZXIsIHdoZW4gYnVzeSBzdGF0cyB3aWxsIGxhdGVyIGJlIHBs dWdnZWQgaW50bwp0aGUgcGVyZiBQTVUgQVBJLCBpdCBpcyBiZW5lZmljaWFsIHRvIG5vdCByZXNl dCB0aGUgdG90YWwsIHNpbmNlCnRoZSBQTVUgY29yZSBsaWtlcyB0byBkbyBzb21lIGNvdW50ZXIg ZGlzYWJsZS9lbmFibGUgY3ljbGVzIG9uCnN0YXJ0dXAsIGFuZCB3aGlsZSBkb2luZyBzbyBkdXJp bmcgYSBzaW5nbGUgbG9uZyBjb250ZXh0CmV4ZWN1dGluZyBvbiBhbiBlbmdpbmUgd2Ugd291bGQg bG9zZSBzb21lIGFjY3VyYWN5IGFuZCBzbyBtYWtlCnVuaXQgdGVzdGluZyBtb3JlIGRpZmZpY3Vs dCB0aGFuIG5lZWRzIHRvIGJlLgoKdjEwOgogKiBGaXggYWNjb3VudGluZyBmb3IgcHJlZW1wdGlv bi4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5j b20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4g KHY4KQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICB8IDg3ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jICAgICAgICB8ICAzICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hh bmdlZCwgMTgyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCmluZGV4IGQwZDIxMjVkMGRlMi4uMjk5OGJjMWQ5ZGRmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMjM3LDYgKzIzNyw4IEBAIGludGVsX2VuZ2luZV9zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogTm90aGluZyB0byBkbyBo ZXJlLCBleGVjdXRlIGluIG9yZGVyIG9mIGRlcGVuZGVuY2llcyAqLwogCWVuZ2luZS0+c2NoZWR1 bGUgPSBOVUxMOwogCisJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+c3RhdHMubG9jayk7CisKIAlB VE9NSUNfSU5JVF9OT1RJRklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVy KTsKIAogCWRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNl XSA9IGVuZ2luZTsKQEAgLTE4MTksNiArMTgyMSw5MSBAQCBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSkK IAlyZXR1cm4gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0YW5jZV07CiB9CiAKKy8qKgor ICogaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5hYmxlIGVuZ2luZSBidXN5IHRyYWNr aW5nIG9uIGVuZ2luZQorICogQGVuZ2luZTogZW5naW5lIHRvIGVuYWJsZSBzdGF0cyBjb2xsZWN0 aW9uCisgKgorICogU3RhcnQgY29sbGVjdGluZyB0aGUgZW5naW5lIGJ1c3luZXNzIGRhdGEgZm9y IEBlbmdpbmUuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJv ciBjb2RlLgorICovCitpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmICghaTkx NV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJaWYgKGVuZ2luZS0+ c3RhdHMuZW5hYmxlZCA9PSB+MCkKKwkJZ290byBidXN5OworCWlmIChlbmdpbmUtPnN0YXRzLmVu YWJsZWQrKyA9PSAwKQorCQllbmdpbmUtPnN0YXRzLmVuYWJsZWRfYXQgPSBrdGltZV9nZXQoKTsK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwor CXJldHVybiAwOworCitidXN5OgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3Rh dHMubG9jaywgZmxhZ3MpOworCisJcmV0dXJuIC1FQlVTWTsKK30KKworc3RhdGljIGt0aW1lX3Qg X19pbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCit7CisJa3RpbWVfdCB0b3RhbCA9IGVuZ2luZS0+c3RhdHMudG90YWw7CisKKwkvKgorCSAq IElmIHRoZSBlbmdpbmUgaXMgZXhlY3V0aW5nIHNvbWV0aGluZyBhdCB0aGUgbW9tZW50CisJICog YWRkIGl0IHRvIHRoZSB0b3RhbC4KKwkgKi8KKwlpZiAoZW5naW5lLT5zdGF0cy5hY3RpdmUpCisJ CXRvdGFsID0ga3RpbWVfYWRkKHRvdGFsLAorCQkJCSAga3RpbWVfc3ViKGt0aW1lX2dldCgpLCBl bmdpbmUtPnN0YXRzLnN0YXJ0KSk7CisKKwlyZXR1cm4gdG90YWw7Cit9CisKKy8qKgorICogaW50 ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoKSAtIFJldHVybiBjdXJyZW50IGFjY3VtdWxhdGVkIGVu Z2luZSBidXN5bmVzcworICogQGVuZ2luZTogZW5naW5lIHRvIHJlcG9ydCBvbgorICoKKyAqIFJl dHVybnMgYWNjdW11bGF0ZWQgdGltZSBAZW5naW5lIHdhcyBidXN5IHNpbmNlIGVuZ2luZSBzdGF0 cyB3ZXJlIGVuYWJsZWQuCisgKi8KK2t0aW1lX3QgaW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWt0aW1lX3QgdG90YWw7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxv Y2ssIGZsYWdzKTsKKwl0b3RhbCA9IF9faW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoZW5naW5l KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsK KworCXJldHVybiB0b3RhbDsKK30KKworLyoqCisgKiBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0 cygpIC0gRGlzYWJsZSBlbmdpbmUgYnVzeSB0cmFja2luZyBvbiBlbmdpbmUKKyAqIEBlbmdpbmU6 IGVuZ2luZSB0byBkaXNhYmxlIHN0YXRzIGNvbGxlY3Rpb24KKyAqCisgKiBTdG9wcyBjb2xsZWN0 aW5nIHRoZSBlbmdpbmUgYnVzeW5lc3MgZGF0YSBmb3IgQGVuZ2luZS4KKyAqLwordm9pZCBpbnRl bF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4 ZWNsaXN0cykKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMu bG9jaywgZmxhZ3MpOworCVdBUk5fT05fT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gMCk7 CisJaWYgKC0tZW5naW5lLT5zdGF0cy5lbmFibGVkID09IDApIHsKKwkJZW5naW5lLT5zdGF0cy50 b3RhbCA9IF9faW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoZW5naW5lKTsKKwkJZW5naW5lLT5z dGF0cy5hY3RpdmUgPSAwOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0 YXRzLmxvY2ssIGZsYWdzKTsKK30KKwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NF TEZURVNUKQogI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIgogI2VuZGlmCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDQ5MzY5NjgwMDRlOS4uYzcyNzM0MGMwYjQ2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNDA0LDExICs0MDQsMTMgQEAgc3RhdGljIGlubGlu ZSB2b2lkCiBleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9pbihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJxKQogewogCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElO VEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOworCWludGVsX2VuZ2luZV9jb250ZXh0X2luKHJxLT5l bmdpbmUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIGV4ZWNsaXN0c19jb250ZXh0X3NjaGVk dWxlX291dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogeworCWludGVsX2VuZ2lu ZV9jb250ZXh0X291dChycS0+ZW5naW5lKTsKIAlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hh bmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7CiB9CiAKQEAgLTcxMiw2ICs3MTQs NyBAQCBleGVjbGlzdF9jYW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqZXhlY2xpc3RzKQogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxID0g cG9ydF9yZXF1ZXN0KHBvcnQpOwogCiAJCUdFTV9CVUdfT04oIWV4ZWNsaXN0cy0+YWN0aXZlKTsK KwkJaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHJxLT5lbmdpbmUpOwogCQlleGVjbGlzdHNfY29u dGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX1BSRUVNUFRFRCk7 CiAJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCmluZGV4IDc2ZDJiNzVmNDg4Yi4uYTI4OTU1Mjc0ZmYzIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC01NTQsNiArNTU0LDM4IEBAIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgewogCSAqIGNlcnRhaW4gYml0cyB0byBlbmNvZGUgdGhlIGNvbW1h bmQgbGVuZ3RoIGluIHRoZSBoZWFkZXIpLgogCSAqLwogCXUzMiAoKmdldF9jbWRfbGVuZ3RoX21h c2spKHUzMiBjbWRfaGVhZGVyKTsKKworCXN0cnVjdCB7CisJCS8qKgorCQkgKiBAbG9jazogTG9j ayBwcm90ZWN0aW5nIHRoZSBiZWxvdyBmaWVsZHMuCisJCSAqLworCQlzcGlubG9ja190IGxvY2s7 CisJCS8qKgorCQkgKiBAZW5hYmxlZDogUmVmZXJlbmNlIGNvdW50IGluZGljYXRpbmcgbnVtYmVy IG9mIGxpc3RlbmVycy4KKwkJICovCisJCXVuc2lnbmVkIGludCBlbmFibGVkOworCQkvKioKKwkJ ICogQGFjdGl2ZTogTnVtYmVyIG9mIGNvbnRleHRzIGN1cnJlbnRseSBzY2hlZHVsZWQgaW4uCisJ CSAqLworCQl1bnNpZ25lZCBpbnQgYWN0aXZlOworCQkvKioKKwkJICogQGVuYWJsZWRfYXQ6IFRp bWVzdGFtcCB3aGVuIGJ1c3kgc3RhdHMgd2VyZSBlbmFibGVkLgorCQkgKi8KKwkJa3RpbWVfdCBl bmFibGVkX2F0OworCQkvKioKKwkJICogQHN0YXJ0OiBUaW1lc3RhbXAgb2YgdGhlIGxhc3QgaWRs ZSB0byBhY3RpdmUgdHJhbnNpdGlvbi4KKwkJICoKKwkJICogSWRsZSBpcyBkZWZpbmVkIGFzIGFj dGl2ZSA9PSAwLCBhY3RpdmUgaXMgYWN0aXZlID4gMC4KKwkJICovCisJCWt0aW1lX3Qgc3RhcnQ7 CisJCS8qKgorCQkgKiBAdG90YWw6IFRvdGFsIHRpbWUgdGhpcyBlbmdpbmUgd2FzIGJ1c3kuCisJ CSAqCisJCSAqIEFjY3VtdWxhdGVkIHRpbWUgbm90IGNvdW50aW5nIHRoZSBtb3N0IHJlY2VudCBi bG9jayBpbiBjYXNlcworCQkgKiB3aGVyZSBlbmdpbmUgaXMgY3VycmVudGx5IGJ1c3kgKGFjdGl2 ZSA+IDApLgorCQkgKi8KKwkJa3RpbWVfdCB0b3RhbDsKKwl9IHN0YXRzOwogfTsKIAogc3RhdGlj IGlubGluZSB2b2lkCkBAIC04OTksNCArOTMxLDY0IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwog c3RydWN0IGludGVsX2VuZ2luZV9jcyAqCiBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSk7CiAKK3N0YXRp YyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfY29udGV4dF9pbihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChSRUFEX09OQ0Uo ZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisKKwlpZiAoZW5naW5lLT5zdGF0cy5l bmFibGVkID4gMCkgeworCQlpZiAoZW5naW5lLT5zdGF0cy5hY3RpdmUrKyA9PSAwKQorCQkJZW5n aW5lLT5zdGF0cy5zdGFydCA9IGt0aW1lX2dldCgpOworCQlHRU1fQlVHX09OKGVuZ2luZS0+c3Rh dHMuYWN0aXZlID09IDApOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+ c3RhdHMubG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5l X2NvbnRleHRfb3V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCisJaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09 IDApCisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ss IGZsYWdzKTsKKworCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCWt0aW1lX3Qg bGFzdDsKKworCQlpZiAoZW5naW5lLT5zdGF0cy5hY3RpdmUgJiYgLS1lbmdpbmUtPnN0YXRzLmFj dGl2ZSA9PSAwKSB7CisJCQkvKgorCQkJICogRGVjcmVtZW50IHRoZSBhY3RpdmUgY29udGV4dCBj b3VudCBhbmQgaW4gY2FzZSBHUFUKKwkJCSAqIGlzIG5vdyBpZGxlIGFkZCB1cCB0byB0aGUgcnVu bmluZyB0b3RhbC4KKwkJCSAqLworCQkJbGFzdCA9IGt0aW1lX3N1YihrdGltZV9nZXQoKSwgZW5n aW5lLT5zdGF0cy5zdGFydCk7CisKKwkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQo ZW5naW5lLT5zdGF0cy50b3RhbCwKKwkJCQkJCQlsYXN0KTsKKwkJfSBlbHNlIGlmIChlbmdpbmUt PnN0YXRzLmFjdGl2ZSA9PSAwKSB7CisJCQkvKgorCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdp bmUgc3RhdHMsIGNvbnRleHQgb3V0IG1pZ2h0IGJlCisJCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4g d2hpY2ggY2FzZSB3ZSBhY2NvdW50IGZyb20gdGhlCisJCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmlu ZyB3YXMgdHVybmVkIG9uLgorCQkJICovCisJCQlsYXN0ID0ga3RpbWVfc3ViKGt0aW1lX2dldCgp LCBlbmdpbmUtPnN0YXRzLmVuYWJsZWRfYXQpOworCisJCQllbmdpbmUtPnN0YXRzLnRvdGFsID0g a3RpbWVfYWRkKGVuZ2luZS0+c3RhdHMudG90YWwsCisJCQkJCQkJbGFzdCk7CisJCX0KKwl9CisK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKK30K KworaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKK3ZvaWQgaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKKwora3RpbWVfdCBpbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCiAjZW5kaWYgLyogX0lOVEVMX1JJTkdC VUZGRVJfSF8gKi8KLS0gCjIuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK