From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [CI 5/9] drm/i915: Engine busy time tracking Date: Tue, 21 Nov 2017 18:18:48 +0000 Message-ID: <20171121181852.16128-5-tvrtko.ursulin@linux.intel.com> References: <20171121181852.16128-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-x236.google.com (mail-wm0-x236.google.com [IPv6:2a00:1450:400c:c09::236]) by gabe.freedesktop.org (Postfix) with ESMTPS id 598C56E56A for ; Tue, 21 Nov 2017 18:19:16 +0000 (UTC) Received: by mail-wm0-x236.google.com with SMTP id b189so5307438wmd.5 for ; Tue, 21 Nov 2017 10:19:16 -0800 (PST) In-Reply-To: <20171121181852.16128-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 bi4KCnYxMToKICogUmViYXNlIGZvciBpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzIHJl bW92YWwuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgODcgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgIHwgIDMgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaCB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxODIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKaW5kZXggYTVhNDk0MjEwYjllLi5mZWRlNjJkYWYzZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yNDEsNiArMjQxLDggQEAgaW50ZWxfZW5naW5lX3NldHVw KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkvKiBOb3RoaW5nIHRvIGRvIGhl cmUsIGV4ZWN1dGUgaW4gb3JkZXIgb2YgZGVwZW5kZW5jaWVzICovCiAJZW5naW5lLT5zY2hlZHVs ZSA9IE5VTEw7CiAKKwlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5zdGF0cy5sb2NrKTsKKwogCUFU T01JQ19JTklUX05PVElGSUVSX0hFQUQoJmVuZ2luZS0+Y29udGV4dF9zdGF0dXNfbm90aWZpZXIp OwogCiAJZGV2X3ByaXYtPmVuZ2luZV9jbGFzc1tpbmZvLT5jbGFzc11baW5mby0+aW5zdGFuY2Vd ID0gZW5naW5lOwpAQCAtMTg0OSw2ICsxODUxLDkxIEBAIGludGVsX2VuZ2luZV9sb29rdXBfdXNl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGluc3RhbmNlKQog CXJldHVybiBpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RhbmNlXTsKIH0KIAorLyoqCisg KiBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKCkgLSBFbmFibGUgZW5naW5lIGJ1c3kgdHJhY2tp bmcgb24gZW5naW5lCisgKiBAZW5naW5lOiBlbmdpbmUgdG8gZW5hYmxlIHN0YXRzIGNvbGxlY3Rp b24KKyAqCisgKiBTdGFydCBjb2xsZWN0aW5nIHRoZSBlbmdpbmUgYnVzeW5lc3MgZGF0YSBmb3Ig QGVuZ2luZS4KKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9y IGNvZGUuCisgKi8KK2ludCBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpIDwgOCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlzcGluX2xvY2tf aXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJaWYgKGVuZ2luZS0+c3RhdHMu ZW5hYmxlZCA9PSB+MCkKKwkJZ290byBidXN5OworCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQr KyA9PSAwKQorCQllbmdpbmUtPnN0YXRzLmVuYWJsZWRfYXQgPSBrdGltZV9nZXQoKTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCXJldHVy biAwOworCitidXN5OgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9j aywgZmxhZ3MpOworCisJcmV0dXJuIC1FQlVTWTsKK30KKworc3RhdGljIGt0aW1lX3QgX19pbnRl bF9lbmdpbmVfZ2V0X2J1c3lfdGltZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJa3RpbWVfdCB0b3RhbCA9IGVuZ2luZS0+c3RhdHMudG90YWw7CisKKwkvKgorCSAqIElmIHRo ZSBlbmdpbmUgaXMgZXhlY3V0aW5nIHNvbWV0aGluZyBhdCB0aGUgbW9tZW50CisJICogYWRkIGl0 IHRvIHRoZSB0b3RhbC4KKwkgKi8KKwlpZiAoZW5naW5lLT5zdGF0cy5hY3RpdmUpCisJCXRvdGFs ID0ga3RpbWVfYWRkKHRvdGFsLAorCQkJCSAga3RpbWVfc3ViKGt0aW1lX2dldCgpLCBlbmdpbmUt PnN0YXRzLnN0YXJ0KSk7CisKKwlyZXR1cm4gdG90YWw7Cit9CisKKy8qKgorICogaW50ZWxfZW5n aW5lX2dldF9idXN5X3RpbWUoKSAtIFJldHVybiBjdXJyZW50IGFjY3VtdWxhdGVkIGVuZ2luZSBi dXN5bmVzcworICogQGVuZ2luZTogZW5naW5lIHRvIHJlcG9ydCBvbgorICoKKyAqIFJldHVybnMg YWNjdW11bGF0ZWQgdGltZSBAZW5naW5lIHdhcyBidXN5IHNpbmNlIGVuZ2luZSBzdGF0cyB3ZXJl IGVuYWJsZWQuCisgKi8KK2t0aW1lX3QgaW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWt0aW1lX3QgdG90YWw7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZs YWdzKTsKKwl0b3RhbCA9IF9faW50ZWxfZW5naW5lX2dldF9idXN5X3RpbWUoZW5naW5lKTsKKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCXJl dHVybiB0b3RhbDsKK30KKworLyoqCisgKiBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cygpIC0g RGlzYWJsZSBlbmdpbmUgYnVzeSB0cmFja2luZyBvbiBlbmdpbmUKKyAqIEBlbmdpbmU6IGVuZ2lu ZSB0byBkaXNhYmxlIHN0YXRzIGNvbGxlY3Rpb24KKyAqCisgKiBTdG9wcyBjb2xsZWN0aW5nIHRo ZSBlbmdpbmUgYnVzeW5lc3MgZGF0YSBmb3IgQGVuZ2luZS4KKyAqLwordm9pZCBpbnRlbF9kaXNh YmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKKworCWlmIChJTlRFTF9HRU4oZW5naW5lLT5pOTE1KSA8IDgpCisJ CXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdz KTsKKwlXQVJOX09OX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkID09IDApOworCWlmICgtLWVu Z2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKSB7CisJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBfX2lu dGVsX2VuZ2luZV9nZXRfYnVzeV90aW1lKGVuZ2luZSk7CisJCWVuZ2luZS0+c3RhdHMuYWN0aXZl ID0gMDsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBm bGFncyk7Cit9CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNp bmNsdWRlICJzZWxmdGVzdHMvbW9ja19lbmdpbmUuYyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwppbmRleCA4ZTM5OTBkNTE5MWMuLjU3MDg2NDU4M2UyOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKQEAgLTM4MywxMSArMzgzLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZAogZXhl Y2xpc3RzX2NvbnRleHRfc2NoZWR1bGVfaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy cSkKIHsKIAlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhU X1NDSEVEVUxFX0lOKTsKKwlpbnRlbF9lbmdpbmVfY29udGV4dF9pbihycS0+ZW5naW5lKTsKIH0K IAogc3RhdGljIGlubGluZSB2b2lkCiBleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9vdXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKIHsKKwlpbnRlbF9lbmdpbmVfY29udGV4dF9v dXQocnEtPmVuZ2luZSk7CiAJZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgSU5U RUxfQ09OVEVYVF9TQ0hFRFVMRV9PVVQpOwogfQogCkBAIC03MDUsNiArNzA3LDcgQEAgZXhlY2xp c3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICog Y29uc3QgZXhlY2xpc3RzKQogCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxID0gcG9y dF9yZXF1ZXN0KHBvcnQpOwogCiAJCUdFTV9CVUdfT04oIWV4ZWNsaXN0cy0+YWN0aXZlKTsKKwkJ aW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHJxLT5lbmdpbmUpOwogCQlleGVjbGlzdHNfY29udGV4 dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX1BSRUVNUFRFRCk7CiAJ CWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCmluZGV4IGQ1MzdkMjIyNjMyYS4uNDJlZTgxNWQ4ZjI4IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC01NDgsNiArNTQ4LDM4IEBAIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgewogCSAqIGNlcnRhaW4gYml0cyB0byBlbmNvZGUgdGhlIGNvbW1hbmQg bGVuZ3RoIGluIHRoZSBoZWFkZXIpLgogCSAqLwogCXUzMiAoKmdldF9jbWRfbGVuZ3RoX21hc2sp KHUzMiBjbWRfaGVhZGVyKTsKKworCXN0cnVjdCB7CisJCS8qKgorCQkgKiBAbG9jazogTG9jayBw cm90ZWN0aW5nIHRoZSBiZWxvdyBmaWVsZHMuCisJCSAqLworCQlzcGlubG9ja190IGxvY2s7CisJ CS8qKgorCQkgKiBAZW5hYmxlZDogUmVmZXJlbmNlIGNvdW50IGluZGljYXRpbmcgbnVtYmVyIG9m IGxpc3RlbmVycy4KKwkJICovCisJCXVuc2lnbmVkIGludCBlbmFibGVkOworCQkvKioKKwkJICog QGFjdGl2ZTogTnVtYmVyIG9mIGNvbnRleHRzIGN1cnJlbnRseSBzY2hlZHVsZWQgaW4uCisJCSAq LworCQl1bnNpZ25lZCBpbnQgYWN0aXZlOworCQkvKioKKwkJICogQGVuYWJsZWRfYXQ6IFRpbWVz dGFtcCB3aGVuIGJ1c3kgc3RhdHMgd2VyZSBlbmFibGVkLgorCQkgKi8KKwkJa3RpbWVfdCBlbmFi bGVkX2F0OworCQkvKioKKwkJICogQHN0YXJ0OiBUaW1lc3RhbXAgb2YgdGhlIGxhc3QgaWRsZSB0 byBhY3RpdmUgdHJhbnNpdGlvbi4KKwkJICoKKwkJICogSWRsZSBpcyBkZWZpbmVkIGFzIGFjdGl2 ZSA9PSAwLCBhY3RpdmUgaXMgYWN0aXZlID4gMC4KKwkJICovCisJCWt0aW1lX3Qgc3RhcnQ7CisJ CS8qKgorCQkgKiBAdG90YWw6IFRvdGFsIHRpbWUgdGhpcyBlbmdpbmUgd2FzIGJ1c3kuCisJCSAq CisJCSAqIEFjY3VtdWxhdGVkIHRpbWUgbm90IGNvdW50aW5nIHRoZSBtb3N0IHJlY2VudCBibG9j ayBpbiBjYXNlcworCQkgKiB3aGVyZSBlbmdpbmUgaXMgY3VycmVudGx5IGJ1c3kgKGFjdGl2ZSA+ IDApLgorCQkgKi8KKwkJa3RpbWVfdCB0b3RhbDsKKwl9IHN0YXRzOwogfTsKIAogc3RhdGljIGlu bGluZSB2b2lkCkBAIC05NTMsNCArOTg1LDY0IEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwogc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqCiBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSk7CiAKK3N0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfY29udGV4dF9pbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChSRUFEX09OQ0UoZW5n aW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisKKwlpZiAoZW5naW5lLT5zdGF0cy5lbmFi bGVkID4gMCkgeworCQlpZiAoZW5naW5lLT5zdGF0cy5hY3RpdmUrKyA9PSAwKQorCQkJZW5naW5l LT5zdGF0cy5zdGFydCA9IGt0aW1lX2dldCgpOworCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMu YWN0aXZlID09IDApOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3Rh dHMubG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX2Nv bnRleHRfb3V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl1bnNpZ25lZCBs b25nIGZsYWdzOworCisJaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDAp CisJCXJldHVybjsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZs YWdzKTsKKworCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCWt0aW1lX3QgbGFz dDsKKworCQlpZiAoZW5naW5lLT5zdGF0cy5hY3RpdmUgJiYgLS1lbmdpbmUtPnN0YXRzLmFjdGl2 ZSA9PSAwKSB7CisJCQkvKgorCQkJICogRGVjcmVtZW50IHRoZSBhY3RpdmUgY29udGV4dCBjb3Vu dCBhbmQgaW4gY2FzZSBHUFUKKwkJCSAqIGlzIG5vdyBpZGxlIGFkZCB1cCB0byB0aGUgcnVubmlu ZyB0b3RhbC4KKwkJCSAqLworCQkJbGFzdCA9IGt0aW1lX3N1YihrdGltZV9nZXQoKSwgZW5naW5l LT5zdGF0cy5zdGFydCk7CisKKwkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5n aW5lLT5zdGF0cy50b3RhbCwKKwkJCQkJCQlsYXN0KTsKKwkJfSBlbHNlIGlmIChlbmdpbmUtPnN0 YXRzLmFjdGl2ZSA9PSAwKSB7CisJCQkvKgorCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUg c3RhdHMsIGNvbnRleHQgb3V0IG1pZ2h0IGJlCisJCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4gd2hp Y2ggY2FzZSB3ZSBhY2NvdW50IGZyb20gdGhlCisJCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmluZyB3 YXMgdHVybmVkIG9uLgorCQkJICovCisJCQlsYXN0ID0ga3RpbWVfc3ViKGt0aW1lX2dldCgpLCBl bmdpbmUtPnN0YXRzLmVuYWJsZWRfYXQpOworCisJCQllbmdpbmUtPnN0YXRzLnRvdGFsID0ga3Rp bWVfYWRkKGVuZ2luZS0+c3RhdHMudG90YWwsCisJCQkJCQkJbGFzdCk7CisJCX0KKwl9CisKKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKK30KKwor aW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKTsKK3ZvaWQgaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKTsKKwora3RpbWVfdCBpbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCiAjZW5kaWYgLyogX0lOVEVMX1JJTkdCVUZG RVJfSF8gKi8KLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==