From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC 07/11] drm/i915: Engine busy time tracking Date: Mon, 11 Sep 2017 16:25:55 +0100 Message-ID: <20170911152559.7077-8-tvrtko.ursulin@linux.intel.com> References: <20170911152559.7077-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-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6DD3F6E429 for ; Mon, 11 Sep 2017 15:26:14 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id p37so4576147wrb.5 for ; Mon, 11 Sep 2017 08:26:14 -0700 (PDT) In-Reply-To: <20170911152559.7077-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 Cc: Peter Zijlstra List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRyYWNrIHRv dGFsIHRpbWUgcmVxdWVzdHMgaGF2ZSBiZWVuIGV4ZWN1dGluZyBvbiB0aGUgaGFyZHdhcmUuCgpX ZSBhZGQgbmV3IGtlcm5lbCBBUEkgdG8gYWxsb3cgc29mdHdhcmUgdHJhY2tpbmcgb2YgdGltZSBH UFUKZW5naW5lcyBhcmUgc3BlbmRpbmcgZXhlY3V0aW5nIHJlcXVlc3RzLgoKQm90aCBwZXItZW5n aW5lIGFuZCBnbG9iYWwgQVBJIGlzIGFkZGVkIHdpdGggdGhlIGxhdHRlciBhbHNvCmJlaW5nIGV4 cG9ydGVkIGZvciB1c2UgYnkgZXh0ZXJuYWwgdXNlcnMuCgp2MjoKICogU3F1YXNoZWQgd2l0aCB0 aGUgaW50ZXJuYWwgQVBJLgogKiBEcm9wcGVkIHN0YXRpYyBrZXkuCiAqIE1hZGUgcGVyLWVuZ2lu ZS4KICogU3RvcmUgdGltZSBpbiBtb25vdG9uaWMga3RpbWUuCgp2MzogTW92ZWQgc3RhdHMgY2xl YXJpbmcgdG8gZGlzYWJsZS4KCnY0OgogKiBDb21tZW50cy4KICogRG9uJ3QgZXhwb3J0IHRoZSBB UEkganVzdCB5ZXQuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j ICB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCB8ICA4MSArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMjI0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CmluZGV4IGRiYzdhYmQ2NWYzMy4uZjdkYmExNzY5ODljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYwpAQCAtMjMyLDYgKzIzMiw4IEBAIGludGVsX2VuZ2luZV9zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogTm90aGluZyB0byBkbyBoZXJl LCBleGVjdXRlIGluIG9yZGVyIG9mIGRlcGVuZGVuY2llcyAqLwogCWVuZ2luZS0+c2NoZWR1bGUg PSBOVUxMOwogCisJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+c3RhdHMubG9jayk7CisKIAlBVE9N SUNfSU5JVF9OT1RJRklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVyKTsK IAogCWRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNlXSA9 IGVuZ2luZTsKQEAgLTE0MTcsNiArMTQxOSwxNDUgQEAgYm9vbCBpbnRlbF9lbmdpbmVfY2FuX3N0 b3JlX2R3b3JkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9CiB9CiAKKy8qKgor ICogaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5hYmxlIGVuZ2luZSBidXN5IHRyYWNr aW5nIG9uIGVuZ2luZQorICogQGVuZ2luZTogZW5naW5lIHRvIGVuYWJsZSBzdGF0cyBjb2xsZWN0 aW9uCisgKgorICogU3RhcnQgY29sbGVjdGluZyB0aGUgZW5naW5lIGJ1c3luZXNzIGRhdGEgZm9y IEBlbmdpbmUuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJv ciBjb2RlLgorICovCitpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmICghaTkx NS5lbmFibGVfZXhlY2xpc3RzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwlpZiAoZW5naW5lLT5zdGF0cy5lbmFi bGVkID09IH4wKQorCQlnb3RvIGJ1c3k7CisJZW5naW5lLT5zdGF0cy5lbmFibGVkKys7CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisKKwlyZXR1 cm4gMDsKKworYnVzeToKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxv Y2ssIGZsYWdzKTsKKworCXJldHVybiAtRUJVU1k7Cit9CisKKy8qKgorICogaW50ZWxfZGlzYWJs ZV9lbmdpbmVfc3RhdHMoKSAtIERpc2FibGUgZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gZW5naW5l CisgKiBAZW5naW5lOiBlbmdpbmUgdG8gZGlzYWJsZSBzdGF0cyBjb2xsZWN0aW9uCisgKgorICog U3RvcHMgY29sbGVjdGluZyB0aGUgZW5naW5lIGJ1c3luZXNzIGRhdGEgZm9yIEBlbmdpbmUuCisg Ki8KK3ZvaWQgaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIWk5MTUuZW5hYmxl X2V4ZWNsaXN0cykKKwkJcmV0dXJuOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3Rh dHMubG9jaywgZmxhZ3MpOworCVdBUk5fT05fT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0g MCk7CisJaWYgKC0tZW5naW5lLT5zdGF0cy5lbmFibGVkID09IDApIHsKKwkJZW5naW5lLT5zdGF0 cy5yZWYgPSAwOworCQllbmdpbmUtPnN0YXRzLnN0YXJ0ID0gZW5naW5lLT5zdGF0cy50b3RhbCA9 IDA7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxh Z3MpOworfQorCisvKioKKyAqIGludGVsX2VuYWJsZV9lbmdpbmVzX3N0YXRzKCkgLSBFbmFibGUg ZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gYWxsIGVuZ2luZXMKKyAqIEBkZXZfcHJpdjogaTkxNSBk ZXZpY2UgcHJpdmF0ZQorICoKKyAqIFN0YXJ0IGNvbGxlY3RpbmcgdGhlIGVuZ2luZSBidXN5bmVz cyBkYXRhIGZvciBhbGwgZW5naW5lcy4KKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBh IG5lZ2F0aXZlIGVycm9yIGNvZGUuCisgKi8KK2ludCBpbnRlbF9lbmFibGVfZW5naW5lc19zdGF0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWludCByZXQgPSAw OworCisJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpCisJCXJldHVybiAtRU5PREVWOworCisJ Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7CisJCXJldCA9IGludGVsX2Vu YWJsZV9lbmdpbmVfc3RhdHMoZW5naW5lKTsKKwkJaWYgKFdBUk5fT05fT05DRShyZXQpKQorCQkJ YnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBpbnRlbF9kaXNhYmxlX2Vu Z2luZXNfc3RhdHMoKSAtIERpc2FibGUgZW5naW5lIGJ1c3kgdHJhY2tpbmcgb24gYWxsIGVuZ2lu ZXMKKyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQorICoKKyAqIFN0b3BzIGNvbGxl Y3RpbmcgdGhlIGVuZ2luZSBidXN5bmVzcyBkYXRhIGZvciBhbGwgZW5naW5lcy4KKyAqLwordm9p ZCBpbnRlbF9kaXNhYmxlX2VuZ2luZXNfc3RhdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkK KwkJaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoZW5naW5lKTsKK30KKworLyoqCisgKiBpbnRl bF9lbmdpbmVfZ2V0X2J1c3lfdGltZSgpIC0gUmV0dXJuIGN1cnJlbnQgYWNjdW11bGF0ZWQgZW5n aW5lIGJ1c3luZXNzCisgKiBAZW5naW5lOiBlbmdpbmUgdG8gcmVwb3J0IG9uCisgKgorICogUmV0 dXJucyBhY2N1bXVsYXRlZCB0aW1lIEBlbmdpbmUgd2FzIGJ1c3kgc2luY2UgZW5naW5lIHN0YXRz IHdlcmUgZW5hYmxlZC4KKyAqLwora3RpbWVfdCBpbnRlbF9lbmdpbmVfZ2V0X2J1c3lfdGltZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJa3RpbWVfdCB0b3RhbDsKKwl1bnNp Z25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9j aywgZmxhZ3MpOworCisJdG90YWwgPSBlbmdpbmUtPnN0YXRzLnRvdGFsOworCisJLyoKKwkgKiBJ ZiB0aGUgZW5naW5lIGlzIGV4ZWN1dGluZyBzb21ldGhpbmcgYXQgdGhlIG1vbWVudAorCSAqIGFk ZCBpdCB0byB0aGUgdG90YWwuCisJICovCisJaWYgKGVuZ2luZS0+c3RhdHMucmVmKQorCQl0b3Rh bCA9IGt0aW1lX2FkZCh0b3RhbCwKKwkJCQkgIGt0aW1lX3N1YihrdGltZV9nZXQoKSwgZW5naW5l LT5zdGF0cy5zdGFydCkpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0 cy5sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gdG90YWw7Cit9CisKKy8qKgorICogaW50ZWxfZW5n aW5lc19nZXRfYnVzeV90aW1lKCkgLSBSZXR1cm4gY3VycmVudCBhY2N1bXVsYXRlZCBvdmVyYWxs IGVuZ2luZSBidXN5bmVzcworICogQGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2YXRlCisgKgor ICogUmV0dXJucyBhY2N1bXVsYXRlZCB0aW1lIGFsbCBlbmdpbmVzIHdlcmUgYnVzeSBzaW5jZSBl bmdpbmUgc3RhdHMgd2VyZQorICogZW5hYmxlZC4KKyAqLwora3RpbWVfdCBpbnRlbF9lbmdpbmVz X2dldF9idXN5X3RpbWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK KwlrdGltZV90IHRvdGFsID0gMDsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2 LCBpZCkKKwkJdG90YWwgPSBrdGltZV9hZGQodG90YWwsIGludGVsX2VuZ2luZV9nZXRfYnVzeV90 aW1lKGVuZ2luZSkpOworCisJcmV0dXJuIHRvdGFsOworfQorCiAjaWYgSVNfRU5BQkxFRChDT05G SUdfRFJNX0k5MTVfU0VMRlRFU1QpCiAjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfZW5naW5lLmMi CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggYjYxZmIwOTAyNGMzLi4wMGZj YmRlOTk4ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0zMTAsMTIgKzMxMCwxNCBA QCBleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcnEsCiBzdGF0aWMgaW5saW5lIHZvaWQKIGV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxl X2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiB7CisJaW50ZWxfZW5naW5lX2Nv bnRleHRfaW4ocnEtPmVuZ2luZSk7CiAJZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShy cSwgSU5URUxfQ09OVEVYVF9TQ0hFRFVMRV9JTik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAog ZXhlY2xpc3RzX2NvbnRleHRfc2NoZWR1bGVfb3V0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEpCiB7CisJaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHJxLT5lbmdpbmUpOwogCWV4ZWNs aXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfT1VU KTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IGNmMDk1 YjkzODZmNC4uZjYxOGM1Zjk4ZWRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCkBAIC00NjMsNiArNDYzLDM0IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCSAq IGNlcnRhaW4gYml0cyB0byBlbmNvZGUgdGhlIGNvbW1hbmQgbGVuZ3RoIGluIHRoZSBoZWFkZXIp LgogCSAqLwogCXUzMiAoKmdldF9jbWRfbGVuZ3RoX21hc2spKHUzMiBjbWRfaGVhZGVyKTsKKwor ICAgICAgIHN0cnVjdCB7CisJICAgICAgIC8qKgorCQkqIEBsb2NrOiBMb2NrIHByb3RlY3Rpbmcg dGhlIGJlbG93IGZpZWxkcy4KKwkJKi8KKwkJc3BpbmxvY2tfdCBsb2NrOworCQkvKioKKwkJICog QGVuYWJsZWQ6IFJlZmVyZW5jZSBjb3VudCBpbmRpY2F0aW5nIG51bWJlciBvZiBsaXN0ZW5lcnMu CisJCSAqLworCQl1bnNpZ25lZCBpbnQgZW5hYmxlZDsKKwkJLyoqCisJCSAqIEByZWY6IE51bWJl ciBvZiBjb250ZXh0cyBjdXJyZW50bHkgc2NoZWR1bGVkIGluLgorCQkgKi8KKwkJdW5zaWduZWQg aW50IHJlZjsKKwkJLyoqCisJCSAqIEBzdGFydDogVGltZXN0YW1wIG9mIHRoZSBsYXN0IGlkbGUg dG8gYWN0aXZlIHRyYW5zaXRpb24uCisJCSAqCisJCSAqIElkbGUgaXMgZGVmaW5lZCBhcyByZWYg PT0gMCwgYWN0aXZlIGlzIHJlZiA+IDAuCisJCSAqLworCQlrdGltZV90IHN0YXJ0OworCQkvKioK KwkJICogQHRvdGFsOiBUb3RhbCB0aW1lIHRoaXMgZW5naW5lIHdhcyBidXN5LgorCQkgKgorCQkg KiBBY2N1bXVsYXRlZCB0aW1lIG5vdCBjb3VudGluZyB0aGUgbW9zdCByZWNlbnQgYmxvY2sgaW4g Y2FzZXMKKwkJICogd2hlcmUgZW5naW5lIGlzIGN1cnJlbnRseSBidXN5IChyZWYgPiAwKS4KKwkJ ICovCisJCWt0aW1lX3QgdG90YWw7CisgICAgICAgfSBzdGF0czsKIH07CiAKIHN0YXRpYyBpbmxp bmUgdW5zaWduZWQgaW50CkBAIC03NjIsNCArNzkwLDU3IEBAIGJvb2wgaW50ZWxfZW5naW5lX2Nh bl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqCiBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSk7CiAKK3N0YXRpYyBpbmxpbmUg dm9pZCBpbnRlbF9lbmdpbmVfY29udGV4dF9pbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmIChSRUFEX09OQ0UoZW5naW5lLT5z dGF0cy5lbmFibGVkKSA9PSAwKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5n aW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisKKwlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4g MCkgeworCQlpZiAoZW5naW5lLT5zdGF0cy5yZWYrKyA9PSAwKQorCQkJZW5naW5lLT5zdGF0cy5z dGFydCA9IGt0aW1lX2dldCgpOworCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMucmVmID09IDAp OworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxh Z3MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwor CisJaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCisJCXJldHVybjsK KworCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCWlm IChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCS8qCisJCSAqIEFmdGVyIHR1cm5pbmcg b24gZW5naW5lIHN0YXRzLCBjb250ZXh0IG91dCBtaWdodCBiZSB0aGUKKwkJICogZmlyc3QgZXZl bnQgd2hpY2ggdGhlbiBuZWVkcyB0byBiZSBpZ25vcmVkIChyZWYgPT0gMCkuCisJCSAqLworCQlp ZiAoZW5naW5lLT5zdGF0cy5yZWYgJiYgLS1lbmdpbmUtPnN0YXRzLnJlZiA9PSAwKSB7CisJCQlr dGltZV90IGxhc3QgPSBrdGltZV9zdWIoa3RpbWVfZ2V0KCksCisJCQkJCQkgZW5naW5lLT5zdGF0 cy5zdGFydCk7CisKKwkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5z dGF0cy50b3RhbCwKKwkJCQkJCQlsYXN0KTsKKwkJfQorCX0KKworCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworfQorCitpbnQgaW50ZWxfZW5hYmxl X2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwordm9pZCBpbnRl bF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwor CitpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZXNfc3RhdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKK3ZvaWQgaW50ZWxfZGlzYWJsZV9lbmdpbmVzX3N0YXRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKK2t0aW1lX3QgaW50ZWxfZW5naW5lX2dldF9idXN5 X3RpbWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKK2t0aW1lX3QgaW50ZWxfZW5n aW5lc19nZXRfYnVzeV90aW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisK ICNlbmRpZiAvKiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwotLSAKMi45LjUKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=