From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/9] drm/i915: Engine busy time tracking Date: Mon, 13 Nov 2017 08:57:22 +0000 Message-ID: <20171113085726.26817-6-tvrtko.ursulin@linux.intel.com> References: <20171113085726.26817-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-wr0-x233.google.com (mail-wr0-x233.google.com [IPv6:2a00:1450:400c:c0c::233]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A9B26E454 for ; Mon, 13 Nov 2017 08:57:40 +0000 (UTC) Received: by mail-wr0-x233.google.com with SMTP id k61so13717858wrc.4 for ; Mon, 13 Nov 2017 00:57:40 -0800 (PST) In-Reply-To: <20171113085726.26817-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 cy5jCmluZGV4IGU2NTEyN2RjZWIzOS4uNjRiMjgyODdkMDFiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMjQ1LDYgKzI0NSw4IEBAIGludGVsX2VuZ2luZV9zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogTm90aGluZyB0byBkbyBo ZXJlLCBleGVjdXRlIGluIG9yZGVyIG9mIGRlcGVuZGVuY2llcyAqLwogCWVuZ2luZS0+c2NoZWR1 bGUgPSBOVUxMOwogCisJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+c3RhdHMubG9jayk7CisKIAlB VE9NSUNfSU5JVF9OT1RJRklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVy KTsKIAogCWRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNl XSA9IGVuZ2luZTsKQEAgLTE5MTYsNiArMTkxOCw5MSBAQCBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz 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 bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGM5MmJlM2I5NGM3YS4uNjJmOGRiNDJlNWM0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNDE2LDExICs0MTYsMTMgQEAgc3RhdGljIGlubGlu ZSB2b2lkCiBleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9pbihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJxKQogewogCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElO VEVMX0NPTlRFWFRfU0NIRURVTEVfSU4pOworCWludGVsX2VuZ2luZV9jb250ZXh0X2luKHJxLT5l bmdpbmUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIGV4ZWNsaXN0c19jb250ZXh0X3NjaGVk dWxlX291dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogeworCWludGVsX2VuZ2lu ZV9jb250ZXh0X291dChycS0+ZW5naW5lKTsKIAlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hh bmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX09VVCk7CiB9CiAKQEAgLTcyNSw2ICs3Mjcs NyBAQCBleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpCiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEgPSBwb3J0X3JlcXVlc3QocG9ydCk7CiAKIAkJR0VNX0JVR19PTighZXhlY2xpc3RzLT5h Y3RpdmUpOworCQlpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQocnEtPmVuZ2luZSk7CiAJCWV4ZWNs aXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfUFJF RU1QVEVEKTsKIAkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocnEpOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggYjcxZDllYTUyMjdmLi41YjVlMmJkOWIyNWQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTU2MCw2ICs1NjAsMzgg QEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJICogY2VydGFpbiBiaXRzIHRvIGVuY29kZSB0 aGUgY29tbWFuZCBsZW5ndGggaW4gdGhlIGhlYWRlcikuCiAJICovCiAJdTMyICgqZ2V0X2NtZF9s ZW5ndGhfbWFzaykodTMyIGNtZF9oZWFkZXIpOworCisJc3RydWN0IHsKKwkJLyoqCisJCSAqIEBs b2NrOiBMb2NrIHByb3RlY3RpbmcgdGhlIGJlbG93IGZpZWxkcy4KKwkJICovCisJCXNwaW5sb2Nr X3QgbG9jazsKKwkJLyoqCisJCSAqIEBlbmFibGVkOiBSZWZlcmVuY2UgY291bnQgaW5kaWNhdGlu ZyBudW1iZXIgb2YgbGlzdGVuZXJzLgorCQkgKi8KKwkJdW5zaWduZWQgaW50IGVuYWJsZWQ7CisJ CS8qKgorCQkgKiBAYWN0aXZlOiBOdW1iZXIgb2YgY29udGV4dHMgY3VycmVudGx5IHNjaGVkdWxl ZCBpbi4KKwkJICovCisJCXVuc2lnbmVkIGludCBhY3RpdmU7CisJCS8qKgorCQkgKiBAZW5hYmxl ZF9hdDogVGltZXN0YW1wIHdoZW4gYnVzeSBzdGF0cyB3ZXJlIGVuYWJsZWQuCisJCSAqLworCQlr dGltZV90IGVuYWJsZWRfYXQ7CisJCS8qKgorCQkgKiBAc3RhcnQ6IFRpbWVzdGFtcCBvZiB0aGUg bGFzdCBpZGxlIHRvIGFjdGl2ZSB0cmFuc2l0aW9uLgorCQkgKgorCQkgKiBJZGxlIGlzIGRlZmlu ZWQgYXMgYWN0aXZlID09IDAsIGFjdGl2ZSBpcyBhY3RpdmUgPiAwLgorCQkgKi8KKwkJa3RpbWVf dCBzdGFydDsKKwkJLyoqCisJCSAqIEB0b3RhbDogVG90YWwgdGltZSB0aGlzIGVuZ2luZSB3YXMg YnVzeS4KKwkJICoKKwkJICogQWNjdW11bGF0ZWQgdGltZSBub3QgY291bnRpbmcgdGhlIG1vc3Qg cmVjZW50IGJsb2NrIGluIGNhc2VzCisJCSAqIHdoZXJlIGVuZ2luZSBpcyBjdXJyZW50bHkgYnVz eSAoYWN0aXZlID4gMCkuCisJCSAqLworCQlrdGltZV90IHRvdGFsOworCX0gc3RhdHM7CiB9Owog CiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTk2NCw0ICs5OTYsNjQgQEAgdm9pZCBpbnRlbF9lbmdp bmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBkcm1fcHJpbnRl ciAqcCk7CiBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKIGludGVsX2VuZ2luZV9sb29rdXBfdXNl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGluc3RhbmNlKTsK IAorc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X2luKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKFJF QURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCisJCXJldHVybjsKKworCXNwaW5f bG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCWlmIChlbmdpbmUt PnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSsrID09IDAp CisJCQllbmdpbmUtPnN0YXRzLnN0YXJ0ID0ga3RpbWVfZ2V0KCk7CisJCUdFTV9CVUdfT04oZW5n aW5lLT5zdGF0cy5hY3RpdmUgPT0gMCk7CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF9lbmdpbmVfY29udGV4dF9vdXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorewor CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5h YmxlZCkgPT0gMCkKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3Rh dHMubG9jaywgZmxhZ3MpOworCisJaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKKwkJ a3RpbWVfdCBsYXN0OworCisJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSAmJiAtLWVuZ2luZS0+ c3RhdHMuYWN0aXZlID09IDApIHsKKwkJCS8qCisJCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBj b250ZXh0IGNvdW50IGFuZCBpbiBjYXNlIEdQVQorCQkJICogaXMgbm93IGlkbGUgYWRkIHVwIHRv IHRoZSBydW5uaW5nIHRvdGFsLgorCQkJICovCisJCQlsYXN0ID0ga3RpbWVfc3ViKGt0aW1lX2dl dCgpLCBlbmdpbmUtPnN0YXRzLnN0YXJ0KTsKKworCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0 aW1lX2FkZChlbmdpbmUtPnN0YXRzLnRvdGFsLAorCQkJCQkJCWxhc3QpOworCQl9IGVsc2UgaWYg KGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApIHsKKwkJCS8qCisJCQkgKiBBZnRlciB0dXJuaW5n IG9uIGVuZ2luZSBzdGF0cywgY29udGV4dCBvdXQgbWlnaHQgYmUKKwkJCSAqIHRoZSBmaXJzdCBl dmVudCBpbiB3aGljaCBjYXNlIHdlIGFjY291bnQgZnJvbSB0aGUKKwkJCSAqIHRpbWUgc3RhdHMg Z2F0aGVyaW5nIHdhcyB0dXJuZWQgb24uCisJCQkgKi8KKwkJCWxhc3QgPSBrdGltZV9zdWIoa3Rp bWVfZ2V0KCksIGVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCk7CisKKwkJCWVuZ2luZS0+c3RhdHMu dG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5zdGF0cy50b3RhbCwKKwkJCQkJCQlsYXN0KTsKKwkJ fQorCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxh Z3MpOworfQorCitpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpOwordm9pZCBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCitrdGltZV90IGludGVsX2VuZ2luZV9nZXRfYnVz eV90aW1lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKICNlbmRpZiAvKiBfSU5U RUxfUklOR0JVRkZFUl9IXyAqLwotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK