From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/9] drm/i915: Engine busy time tracking Date: Fri, 20 Oct 2017 10:24:36 +0100 Message-ID: <20171020092440.22470-6-tvrtko.ursulin@linux.intel.com> References: <20171020092440.22470-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 5EC336EC0D for ; Fri, 20 Oct 2017 09:24:53 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id b189so20459220wmd.4 for ; Fri, 20 Oct 2017 02:24:53 -0700 (PDT) In-Reply-To: <20171020092440.22470-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 cy5jCmluZGV4IDAzOWZmZjc4ZmY5NC4uNzJmYTA3NjRkNjUzIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMjM3LDYgKzIzNyw4IEBAIGludGVsX2VuZ2luZV9zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogTm90aGluZyB0byBkbyBo ZXJlLCBleGVjdXRlIGluIG9yZGVyIG9mIGRlcGVuZGVuY2llcyAqLwogCWVuZ2luZS0+c2NoZWR1 bGUgPSBOVUxMOwogCisJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+c3RhdHMubG9jayk7CisKIAlB VE9NSUNfSU5JVF9OT1RJRklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVy KTsKIAogCWRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNl XSA9IGVuZ2luZTsKQEAgLTE4MTgsNiArMTgyMCw5MSBAQCBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz 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 bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDY3MTNmNGEyZjU4MS4uOGE3YTljYzVmMjhkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNDA0LDExICs0MDQsMTMgQEAgc3RhdGljIGlubGlu ZSB2b2lkCiBleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9pbihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJxKQogewogCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElO VEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOworCWludGVsX2VuZ2luZV9jb250ZXh0X2luKHJxLT5l bmdpbmUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIGV4ZWNsaXN0c19jb250ZXh0X3NjaGVk dWxlX291dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogeworCWludGVsX2VuZ2lu ZV9jb250ZXh0X291dChycS0+ZW5naW5lKTsKIAlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hh bmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7CiB9CiAKQEAgLTcwOCw2ICs3MTAs NyBAQCBleGVjbGlzdF9jYW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqZXhlY2xpc3RzKQogCXdoaWxlIChudW1fcG9ydHMtLSAmJiBwb3J0X2lzc2V0KHBv cnQpKSB7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEgPSBwb3J0X3JlcXVlc3Qo cG9ydCk7CiAKKwkJaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHJxLT5lbmdpbmUpOwogCQlleGVj bGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX1BS RUVNUFRFRCk7CiAJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJxKTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDI4OWJiMjVkZDk2NC4uOGFjMjhlZTBmZjRlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC01NDYsNiArNTQ2LDM4 IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCSAqIGNlcnRhaW4gYml0cyB0byBlbmNvZGUg dGhlIGNvbW1hbmQgbGVuZ3RoIGluIHRoZSBoZWFkZXIpLgogCSAqLwogCXUzMiAoKmdldF9jbWRf bGVuZ3RoX21hc2spKHUzMiBjbWRfaGVhZGVyKTsKKworCXN0cnVjdCB7CisJCS8qKgorCQkgKiBA bG9jazogTG9jayBwcm90ZWN0aW5nIHRoZSBiZWxvdyBmaWVsZHMuCisJCSAqLworCQlzcGlubG9j a190IGxvY2s7CisJCS8qKgorCQkgKiBAZW5hYmxlZDogUmVmZXJlbmNlIGNvdW50IGluZGljYXRp bmcgbnVtYmVyIG9mIGxpc3RlbmVycy4KKwkJICovCisJCXVuc2lnbmVkIGludCBlbmFibGVkOwor CQkvKioKKwkJICogQGFjdGl2ZTogTnVtYmVyIG9mIGNvbnRleHRzIGN1cnJlbnRseSBzY2hlZHVs ZWQgaW4uCisJCSAqLworCQl1bnNpZ25lZCBpbnQgYWN0aXZlOworCQkvKioKKwkJICogQGVuYWJs ZWRfYXQ6IFRpbWVzdGFtcCB3aGVuIGJ1c3kgc3RhdHMgd2VyZSBlbmFibGVkLgorCQkgKi8KKwkJ a3RpbWVfdCBlbmFibGVkX2F0OworCQkvKioKKwkJICogQHN0YXJ0OiBUaW1lc3RhbXAgb2YgdGhl IGxhc3QgaWRsZSB0byBhY3RpdmUgdHJhbnNpdGlvbi4KKwkJICoKKwkJICogSWRsZSBpcyBkZWZp bmVkIGFzIGFjdGl2ZSA9PSAwLCBhY3RpdmUgaXMgYWN0aXZlID4gMC4KKwkJICovCisJCWt0aW1l X3Qgc3RhcnQ7CisJCS8qKgorCQkgKiBAdG90YWw6IFRvdGFsIHRpbWUgdGhpcyBlbmdpbmUgd2Fz IGJ1c3kuCisJCSAqCisJCSAqIEFjY3VtdWxhdGVkIHRpbWUgbm90IGNvdW50aW5nIHRoZSBtb3N0 IHJlY2VudCBibG9jayBpbiBjYXNlcworCQkgKiB3aGVyZSBlbmdpbmUgaXMgY3VycmVudGx5IGJ1 c3kgKGFjdGl2ZSA+IDApLgorCQkgKi8KKwkJa3RpbWVfdCB0b3RhbDsKKwl9IHN0YXRzOwogfTsK IAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKQEAgLTg2OSw0ICs5MDEsNjQgQEAgdm9pZCBp bnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBk cm1fcHJpbnRlciAqcCk7CiBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKIGludGVsX2VuZ2luZV9s b29rdXBfdXNlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGlu c3RhbmNlKTsKIAorc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X2luKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor CisJaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCisJCXJldHVybjsK KworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCWlm IChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2 ZSsrID09IDApCisJCQllbmdpbmUtPnN0YXRzLnN0YXJ0ID0ga3RpbWVfZ2V0KCk7CisJCUdFTV9C VUdfT04oZW5naW5lLT5zdGF0cy5hY3RpdmUgPT0gMCk7CisJfQorCisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+ c3RhdHMuZW5hYmxlZCkgPT0gMCkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCisJaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+ IDApIHsKKwkJa3RpbWVfdCBsYXN0OworCisJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSAmJiAt LWVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApIHsKKwkJCS8qCisJCQkgKiBEZWNyZW1lbnQgdGhl IGFjdGl2ZSBjb250ZXh0IGNvdW50IGFuZCBpbiBjYXNlIEdQVQorCQkJICogaXMgbm93IGlkbGUg YWRkIHVwIHRvIHRoZSBydW5uaW5nIHRvdGFsLgorCQkJICovCisJCQlsYXN0ID0ga3RpbWVfc3Vi KGt0aW1lX2dldCgpLCBlbmdpbmUtPnN0YXRzLnN0YXJ0KTsKKworCQkJZW5naW5lLT5zdGF0cy50 b3RhbCA9IGt0aW1lX2FkZChlbmdpbmUtPnN0YXRzLnRvdGFsLAorCQkJCQkJCWxhc3QpOworCQl9 IGVsc2UgaWYgKGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApIHsKKwkJCS8qCisJCQkgKiBBZnRl ciB0dXJuaW5nIG9uIGVuZ2luZSBzdGF0cywgY29udGV4dCBvdXQgbWlnaHQgYmUKKwkJCSAqIHRo ZSBmaXJzdCBldmVudCBpbiB3aGljaCBjYXNlIHdlIGFjY291bnQgZnJvbSB0aGUKKwkJCSAqIHRp bWUgc3RhdHMgZ2F0aGVyaW5nIHdhcyB0dXJuZWQgb24uCisJCQkgKi8KKwkJCWxhc3QgPSBrdGlt ZV9zdWIoa3RpbWVfZ2V0KCksIGVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCk7CisKKwkJCWVuZ2lu ZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5zdGF0cy50b3RhbCwKKwkJCQkJCQls YXN0KTsKKwkJfQorCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMu bG9jaywgZmxhZ3MpOworfQorCitpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0 cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCitrdGltZV90IGludGVsX2VuZ2lu ZV9nZXRfYnVzeV90aW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKICNlbmRp ZiAvKiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwotLSAKMi45LjUKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=