From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC 11/11] drm/i915: Gate engine stats collection with a static key Date: Mon, 11 Sep 2017 16:25:59 +0100 Message-ID: <20170911152559.7077-12-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-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD6C66E432 for ; Mon, 11 Sep 2017 15:26:17 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id f4so7133605wmh.4 for ; Mon, 11 Sep 2017 08:26:17 -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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcmVk dWNlcyB0aGUgY29zdCBvZiB0aGUgc29mdHdhcmUgZW5naW5lIGJ1c3luZXNzIHRyYWNraW5nCnRv IGEgc2luZ2xlIG5vLW9wIGluc3RydWN0aW9uIHdoZW4gdGhlcmUgYXJlIG5vIGxpc3RlbmVycy4K CnYyOiBSZWJhc2UgYW5kIHNvbWUgY29tbWVudHMuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcG11LmMgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICB8IDE3ICsrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCA3MCArKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDI4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IGY4YTYxOTVjMTdmMS4uYmNl NDk1MWM2MDY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTQ0NywxMSArNDQ3LDE3IEBA IHN0YXRpYyB2b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJ CUdFTV9CVUdfT04oc2FtcGxlID49IEk5MTVfUE1VX1NBTVBMRV9CSVRTKTsKIAkJR0VNX0JVR19P TihlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9PSB+MCk7CiAJCWlmIChlbmdpbmUt PnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSsrID09IDApIHsKKwkJCS8qCisJCQkgKiBFbmFibGUg ZW5naW5lIGJ1c3kgc3RhdHMgdHJhY2tpbmcgaWYgbmVlZGVkIG9yCisJCQkgKiBhbHRlcm5hdGl2 ZWx5IGNhbmNlbCB0aGUgc2NoZWR1bGVkIGRpc2FibGluZyBvZiB0aGUKKwkJCSAqIHNhbWUuCisJ CQkgKi8KIAkJCWlmIChlbmdpbmVfbmVlZHNfYnVzeV9zdGF0cyhlbmdpbmUpICYmCiAJCQkgICAg IWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKLQkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0K LQkJCQkJaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhlbmdpbmUpID09IDA7Ci0JCQkJV0FSTl9P Tl9PTkNFKCFlbmdpbmUtPnBtdS5idXN5X3N0YXRzKTsKKwkJCQllbmdpbmUtPnBtdS5idXN5X3N0 YXRzID0gdHJ1ZTsKKwkJCQlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRp c2FibGVfYnVzeV9zdGF0cykpCisJCQkJCXF1ZXVlX3dvcmsoaTkxNS0+d3EsCisJCQkJCQkmZW5n aW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOwogCQkJfQogCQl9CiAJfQpAQCAtNDk0LDcgKzUw MCwxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3BtdV9kaXNhYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpl dmVudCkKIAkJCWlmICghZW5naW5lX25lZWRzX2J1c3lfc3RhdHMoZW5naW5lKSAmJgogCQkJICAg IGVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKIAkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0g ZmFsc2U7Ci0JCQkJaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoZW5naW5lKTsKKwkJCQkvKgor CQkJCSAqIFdlIHJlcXVlc3QgYSBkZWxheWVkIGRpc2FibGUgdG8gaGFuZGxlIHRoZQorCQkJCSAq IHJhcGlkIG9uL29mZiBjeWNsZXMgb24gZXZlbnRzIHdoaWNoIGNhbgorCQkJCSAqIGhhcHBlbiB3 aGVuIHRvb2xzIGxpa2UgcGVyZiBzdGF0IHN0YXJ0IGluIGEKKwkJCQkgKiBuaWNlciB3YXkuCisJ CQkJICovCisJCQkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndxLAorCQkJCQkJICAgJmVuZ2lu ZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cywKKwkJCQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVs YXRpdmUoSFopKTsKIAkJCX0KIAkJfQogCX0KQEAgLTcwMiw5ICs3MTYsMjcgQEAgc3RhdGljIGlu dCBpOTE1X3BtdV9jcHVfb2ZmbGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqbm9kZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgX19lbmFibGVfYnVzeV9zdGF0 cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmVuYWJs ZV9idXN5X3N0YXRzKTsKKworCVdBUk5fT05fT05DRShpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRz KGVuZ2luZSkpOworfQorCitzdGF0aWMgdm9pZCBfX2Rpc2FibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0K KwkgICAgICAgY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmRpc2FibGVf YnVzeV9zdGF0cy53b3JrKTsKKworCWludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKGVuZ2luZSk7 Cit9CisKIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiB7CiAJaW50IHJldCA9IEVOT1RTVVBQOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAogCWlmIChJTlRFTF9HRU4oaTkxNSkg PD0gMikKIAkJZ290byBlcnI7CkBAIC03MzYsNiArNzY4LDEyIEBAIHZvaWQgaTkxNV9wbXVfcmVn aXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaTkxNS0+cG11LnRpbWVyLmZ1 bmN0aW9uID0gaTkxNV9zYW1wbGU7CiAJaTkxNS0+cG11LmVuYWJsZSA9IDA7CiAKKwlmb3JfZWFj aF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQlJTklUX1dPUksoJmVuZ2luZS0+cG11LmVu YWJsZV9idXN5X3N0YXRzLCBfX2VuYWJsZV9idXN5X3N0YXRzKTsKKwkJSU5JVF9ERUxBWUVEX1dP UksoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cywKKwkJCQkgIF9fZGlzYWJsZV9idXN5 X3N0YXRzKTsKKwl9CisKIAlpZiAocGVyZl9wbXVfcmVnaXN0ZXIoJmk5MTUtPnBtdS5iYXNlLCAi aTkxNSIsIC0xKSkKIAkJaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCA9IE5VTEw7CiAKQEAgLTc0 NSw2ICs3ODMsOSBAQCB2b2lkIGk5MTVfcG11X3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQogCiB2b2lkIGk5MTVfcG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiB7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOworCiAJaWYgKCFpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0KQog CQlyZXR1cm47CiAKQEAgLTc1NSw2ICs3OTYsMTEgQEAgdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJaHJ0aW1lcl9jYW5jZWwoJmk5MTUt PnBtdS50aW1lcik7CiAKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQlm bHVzaF93b3JrKCZlbmdpbmUtPnBtdS5lbmFibGVfYnVzeV9zdGF0cyk7CisJCWZsdXNoX2RlbGF5 ZWRfd29yaygmZW5naW5lLT5wbXUuZGlzYWJsZV9idXN5X3N0YXRzKTsKKwl9CisKIAljcHVocF9z dGF0ZV9yZW1vdmVfaW5zdGFuY2UoQ1BVSFBfQVBfUEVSRl9YODZfVU5DT1JFX09OTElORSwKIAkJ CQkgICAgJmk5MTUtPnBtdS5ub2RlKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5l X2NzLmMKaW5kZXggZTIxNTJkZDIxYjRhLi5lNGE4ZWI4M2EwMTggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBJTiBUSEUgU09GVFdB UkUuCiAgKgogICovCisjaW5jbHVkZSA8bGludXgvc3RhdGljX2tleS5oPgogCiAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKICNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCkBAIC0xNDE5LDYgKzE0 MjAsMTAgQEAgYm9vbCBpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAl9CiB9CiAKK0RFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGk5MTVf ZW5naW5lX3N0YXRzX2tleSk7CitzdGF0aWMgREVGSU5FX01VVEVYKGk5MTVfZW5naW5lX3N0YXRz X211dGV4KTsKK3N0YXRpYyBpbnQgaTkxNV9lbmdpbmVfc3RhdHNfcmVmOworCiAvKioKICAqIGlu dGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoKSAtIEVuYWJsZSBlbmdpbmUgYnVzeSB0cmFja2luZyBv biBlbmdpbmUKICAqIEBlbmdpbmU6IGVuZ2luZSB0byBlbmFibGUgc3RhdHMgY29sbGVjdGlvbgpA QCAtMTQzNCwxNiArMTQzOSwyNCBAQCBpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMp CiAJCXJldHVybiAtRU5PREVWOwogCisJbXV0ZXhfbG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0 ZXgpOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwog CWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gfjApCiAJCWdvdG8gYnVzeTsKIAllbmdpbmUt PnN0YXRzLmVuYWJsZWQrKzsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRz LmxvY2ssIGZsYWdzKTsKIAorCWlmIChpOTE1X2VuZ2luZV9zdGF0c19yZWYrKyA9PSAwKQorCQlz dGF0aWNfYnJhbmNoX2VuYWJsZSgmaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKKworCW11dGV4X3Vu bG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOworCiAJcmV0dXJuIDA7CiAKIGJ1c3k6CiAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJbXV0 ZXhfdW5sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19tdXRleCk7CiAKIAlyZXR1cm4gLUVCVVNZOwog fQpAQCAtMTQ2MSw2ICsxNDc0LDcgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlz dHMpCiAJCXJldHVybjsKIAorCW11dGV4X2xvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJV0FSTl9P Tl9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKTsKIAlpZiAoLS1lbmdpbmUtPnN0YXRz LmVuYWJsZWQgPT0gMCkgewpAQCAtMTQ2OCw2ICsxNDgyLDkgQEAgdm9pZCBpbnRlbF9kaXNhYmxl X2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+ c3RhdHMuc3RhcnQgPSBlbmdpbmUtPnN0YXRzLnRvdGFsID0gMDsKIAl9CiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJaWYgKC0taTkxNV9lbmdp bmVfc3RhdHNfcmVmID09IDApCisJCXN0YXRpY19icmFuY2hfZGlzYWJsZSgmaTkxNV9lbmdpbmVf c3RhdHNfa2V5KTsKKwltdXRleF91bmxvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsKIH0K IAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggZmU1NTRm Yzc2ODY3Li42NWRlYTY4NmZjN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKQEAgLTI2OSw2ICsyNjksMjIgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJCSAq IEBidXN5X3N0YXRzOiBIYXMgZW5hYmxlbWVudCBvZiBlbmdpbmUgc3RhdHMgdHJhY2tpbmcgYmVl biByZXF1ZXN0ZWQuCiAJCSAqLwogCQlib29sIGJ1c3lfc3RhdHM7CisJCS8qKgorCQkgKiBAZW5h YmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRlbSBmb3IgZW5naW5lIGJ1c3kgc3RhdHMgZW5hYmxpbmcu CisJCSAqCisJCSAqIFNpbmNlIHRoZSBhY3Rpb24gY2FuIHNsZWVwIGl0IG5lZWRzIHRvIGJlIGRl Y291cGxlZCBmcm9tIHRoZQorCQkgKiBwZXJmIEFQSSBjYWxsYmFjay4KKwkJICovCisJCXN0cnVj dCB3b3JrX3N0cnVjdCBlbmFibGVfYnVzeV9zdGF0czsKKwkJLyoqCisJCSAqIEBkaXNhYmxlX2J1 c3lfc3RhdHM6IFdvcmsgaXRlbSBmb3IgYnVzeSBzdGF0cyBkaXNhYmxpbmcuCisJCSAqCisJCSAq IFNhbWUgYXMgd2l0aCBAZW5hYmxlX2J1c3lfc3RhdHMgYWN0aW9uLCB3aXRoIHRoZSBkaWZmZXJl bmNlCisJCSAqIHRoYXQgd2UgZGVsYXkgaXQgaW4gY2FzZSB0aGVyZSBhcmUgcmFwaWQgZW5hYmxl LWRpc2FibGUKKwkJICogYWN0aW9ucywgd2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgdG9vbCBzdGFy dHVwIChsaWtlIHBlcmYKKwkJICogc3RhdCkuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3Jr IGRpc2FibGVfYnVzeV9zdGF0czsKIAl9IHBtdTsKIAogCS8qCkBAIC03OTQsNDggKzgxMCw1NCBA QCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgogaW50ZWxfZW5naW5lX2xvb2t1 cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFu Y2UpOwogCitERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UoaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsK Kwogc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X2luKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKFJF QURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCi0JCXJldHVybjsKKwlpZiAoc3Rh dGljX2JyYW5jaF91bmxpa2VseSgmaTkxNV9lbmdpbmVfc3RhdHNfa2V5KSkgeworCQlpZiAoUkVB RF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkKKwkJCXJldHVybjsKIAotCXNwaW5f bG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2ly cXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwogCi0JaWYgKGVuZ2luZS0+c3RhdHMu ZW5hYmxlZCA+IDApIHsKLQkJaWYgKGVuZ2luZS0+c3RhdHMucmVmKysgPT0gMCkKLQkJCWVuZ2lu ZS0+c3RhdHMuc3RhcnQgPSBrdGltZV9nZXQoKTsKLQkJR0VNX0JVR19PTihlbmdpbmUtPnN0YXRz LnJlZiA9PSAwKTsKLQl9CisJCQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgeworCQkJ CWlmIChlbmdpbmUtPnN0YXRzLnJlZisrID09IDApCisJCQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQg PSBrdGltZV9nZXQoKTsKKwkJCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMucmVmID09IDApOwor CQkJfQogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFn cyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3Mp OworCX0KIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291dChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsK IAotCWlmIChSRUFEX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQotCQlyZXR1cm47 CisJaWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoJmk5MTVfZW5naW5lX3N0YXRzX2tleSkpIHsK KwkJaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCisJCQlyZXR1cm47 CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJCXNw aW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKIAotCWlmIChlbmdp bmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7Ci0JCS8qCi0JCSAqIEFmdGVyIHR1cm5pbmcgb24gZW5n aW5lIHN0YXRzLCBjb250ZXh0IG91dCBtaWdodCBiZSB0aGUKLQkJICogZmlyc3QgZXZlbnQgd2hp Y2ggdGhlbiBuZWVkcyB0byBiZSBpZ25vcmVkIChyZWYgPT0gMCkuCi0JCSAqLwotCQlpZiAoZW5n aW5lLT5zdGF0cy5yZWYgJiYgLS1lbmdpbmUtPnN0YXRzLnJlZiA9PSAwKSB7Ci0JCQlrdGltZV90 IGxhc3QgPSBrdGltZV9zdWIoa3RpbWVfZ2V0KCksCi0JCQkJCQkgZW5naW5lLT5zdGF0cy5zdGFy dCk7CisJCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCQkvKgorCQkJICogQWZ0 ZXIgdHVybmluZyBvbiBlbmdpbmUgc3RhdHMsIGNvbnRleHQgb3V0IG1pZ2h0IGJlCisJCQkgKiB0 aGUgZmlyc3QgZXZlbnQgd2hpY2ggdGhlbiBuZWVkcyB0byBiZSBpZ25vcmVkLgorCQkJICovCisJ CQlpZiAoZW5naW5lLT5zdGF0cy5yZWYgJiYgLS1lbmdpbmUtPnN0YXRzLnJlZiA9PSAwKSB7CisJ CQkJa3RpbWVfdCBsYXN0ID0ga3RpbWVfc3ViKGt0aW1lX2dldCgpLAorCQkJCQkJCSBlbmdpbmUt PnN0YXRzLnN0YXJ0KTsKIAotCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2FkZChlbmdp bmUtPnN0YXRzLnRvdGFsLAotCQkJCQkJCWxhc3QpOworCQkJCWVuZ2luZS0+c3RhdHMudG90YWwg PQorCQkJCQlrdGltZV9hZGQoZW5naW5lLT5zdGF0cy50b3RhbCwgbGFzdCk7CisJCQl9CiAJCX0K LQl9CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdz KTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7 CisJfQogfQogCiBpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpOwotLSAKMi45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=