From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC v3 11/11] drm/i915: Gate engine stats collection with a static key Date: Wed, 13 Sep 2017 13:18:19 +0100 Message-ID: <20170913121819.460-1-tvrtko.ursulin@linux.intel.com> References: <20170911152559.7077-12-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 D5E5D6E839 for ; Wed, 13 Sep 2017 12:18:27 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id r136so499999wmf.3 for ; Wed, 13 Sep 2017 05:18:27 -0700 (PDT) In-Reply-To: <20170911152559.7077-12-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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcmVk dWNlcyB0aGUgY29zdCBvZiB0aGUgc29mdHdhcmUgZW5naW5lIGJ1c3luZXNzIHRyYWNraW5nCnRv IGEgc2luZ2xlIG5vLW9wIGluc3RydWN0aW9uIHdoZW4gdGhlcmUgYXJlIG5vIGxpc3RlbmVycy4K CnYyOiBSZWJhc2UgYW5kIHNvbWUgY29tbWVudHMuCnYzOiBSZWJhc2UuCgpTaWduZWQtb2ZmLWJ5 OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcG11LmMgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysr KysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICB8IDE3ICsrKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCA3MCArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlv bnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IDNjMGM1 ZDA1NDliMy4uZDczNDg3OWU2N2VlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTQ2MCwx MSArNDYwLDE3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCiAJCUdFTV9CVUdfT04oc2FtcGxlID49IEk5MTVfUE1VX1NBTVBMRV9CSVRTKTsK IAkJR0VNX0JVR19PTihlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9PSB+MCk7CiAJ CWlmIChlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSsrID09IDApIHsKKwkJCS8qCisJ CQkgKiBFbmFibGUgZW5naW5lIGJ1c3kgc3RhdHMgdHJhY2tpbmcgaWYgbmVlZGVkIG9yCisJCQkg KiBhbHRlcm5hdGl2ZWx5IGNhbmNlbCB0aGUgc2NoZWR1bGVkIGRpc2FibGluZyBvZiB0aGUKKwkJ CSAqIHNhbWUuCisJCQkgKi8KIAkJCWlmIChlbmdpbmVfbmVlZHNfYnVzeV9zdGF0cyhlbmdpbmUp ICYmCiAJCQkgICAgIWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKLQkJCQllbmdpbmUtPnBtdS5i dXN5X3N0YXRzID0KLQkJCQkJaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhlbmdpbmUpID09IDA7 Ci0JCQkJV0FSTl9PTl9PTkNFKCFlbmdpbmUtPnBtdS5idXN5X3N0YXRzKTsKKwkJCQllbmdpbmUt PnBtdS5idXN5X3N0YXRzID0gdHJ1ZTsKKwkJCQlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmVu Z2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cykpCisJCQkJCXF1ZXVlX3dvcmsoaTkxNS0+d3Es CisJCQkJCQkmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOwogCQkJfQogCQl9CiAJfQpA QCAtNTA3LDcgKzUxMywxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3BtdV9kaXNhYmxlKHN0cnVjdCBw ZXJmX2V2ZW50ICpldmVudCkKIAkJCWlmICghZW5naW5lX25lZWRzX2J1c3lfc3RhdHMoZW5naW5l KSAmJgogCQkJICAgIGVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKIAkJCQllbmdpbmUtPnBtdS5i dXN5X3N0YXRzID0gZmFsc2U7Ci0JCQkJaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoZW5naW5l KTsKKwkJCQkvKgorCQkJCSAqIFdlIHJlcXVlc3QgYSBkZWxheWVkIGRpc2FibGUgdG8gaGFuZGxl IHRoZQorCQkJCSAqIHJhcGlkIG9uL29mZiBjeWNsZXMgb24gZXZlbnRzIHdoaWNoIGNhbgorCQkJ CSAqIGhhcHBlbiB3aGVuIHRvb2xzIGxpa2UgcGVyZiBzdGF0IHN0YXJ0IGluIGEKKwkJCQkgKiBu aWNlciB3YXkuCisJCQkJICovCisJCQkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndxLAorCQkJ CQkJICAgJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cywKKwkJCQkJCSAgIHJvdW5kX2pp ZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKIAkJCX0KIAkJfQogCX0KQEAgLTcxNSw5ICs3MjksMjcg QEAgc3RhdGljIGludCBpOTE1X3BtdV9jcHVfb2ZmbGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1 Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgX19lbmFi bGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5l KSwgcG11LmVuYWJsZV9idXN5X3N0YXRzKTsKKworCVdBUk5fT05fT05DRShpbnRlbF9lbmFibGVf ZW5naW5lX3N0YXRzKGVuZ2luZSkpOworfQorCitzdGF0aWMgdm9pZCBfX2Rpc2FibGVfYnVzeV9z dGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0KKwkgICAgICAgY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwg cG11LmRpc2FibGVfYnVzeV9zdGF0cy53b3JrKTsKKworCWludGVsX2Rpc2FibGVfZW5naW5lX3N0 YXRzKGVuZ2luZSk7Cit9CisKIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiB7CiAJaW50IHJldDsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUp IDw9IDIpIHsKIAkJcmV0ID0gLUVOT1RTVVBQOwpAQCAtNzUxLDYgKzc4MywxMiBAQCB2b2lkIGk5 MTVfcG11X3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWk5MTUtPnBt dS50aW1lci5mdW5jdGlvbiA9IGk5MTVfc2FtcGxlOwogCWk5MTUtPnBtdS5lbmFibGUgPSAwOwog CisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJSU5JVF9XT1JLKCZlbmdp bmUtPnBtdS5lbmFibGVfYnVzeV9zdGF0cywgX19lbmFibGVfYnVzeV9zdGF0cyk7CisJCUlOSVRf REVMQVlFRF9XT1JLKCZlbmdpbmUtPnBtdS5kaXNhYmxlX2J1c3lfc3RhdHMsCisJCQkJICBfX2Rp c2FibGVfYnVzeV9zdGF0cyk7CisJfQorCiAJaWYgKHBlcmZfcG11X3JlZ2lzdGVyKCZpOTE1LT5w bXUuYmFzZSwgImk5MTUiLCAtMSkpCiAJCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQgPSBOVUxM OwogCkBAIC03NjEsNiArNzk5LDkgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwogCWlmICghaTkxNS0+cG11LmJhc2UuZXZl bnRfaW5pdCkKIAkJcmV0dXJuOwogCkBAIC03NzIsNiArODEzLDExIEBAIHZvaWQgaTkxNV9wbXVf dW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWhydGltZXJfY2Fu Y2VsKCZpOTE1LT5wbXUudGltZXIpOwogCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKKwkJZmx1c2hfd29yaygmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOworCQlm bHVzaF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cyk7CisJfQor CiAJcGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogCWk5MTUtPnBtdS5iYXNl LmV2ZW50X2luaXQgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YwppbmRleCBlMjE1MmRkMjFiNGEuLmU0YThlYjgzYTAxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIElOIFRIRSBTT0ZUV0FSRS4K ICAqCiAgKi8KKyNpbmNsdWRlIDxsaW51eC9zdGF0aWNfa2V5Lmg+CiAKICNpbmNsdWRlICJpOTE1 X2Rydi5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKQEAgLTE0MTksNiArMTQyMCwx MCBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCX0KIH0KIAorREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoaTkxNV9lbmdp bmVfc3RhdHNfa2V5KTsKK3N0YXRpYyBERUZJTkVfTVVURVgoaTkxNV9lbmdpbmVfc3RhdHNfbXV0 ZXgpOworc3RhdGljIGludCBpOTE1X2VuZ2luZV9zdGF0c19yZWY7CisKIC8qKgogICogaW50ZWxf ZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5hYmxlIGVuZ2luZSBidXN5IHRyYWNraW5nIG9uIGVu Z2luZQogICogQGVuZ2luZTogZW5naW5lIHRvIGVuYWJsZSBzdGF0cyBjb2xsZWN0aW9uCkBAIC0x NDM0LDE2ICsxNDM5LDI0IEBAIGludCBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKIAkJ cmV0dXJuIC1FTk9ERVY7CiAKKwltdXRleF9sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19tdXRleCk7 CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJaWYg KGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSB+MCkKIAkJZ290byBidXN5OwogCWVuZ2luZS0+c3Rh dHMuZW5hYmxlZCsrOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9j aywgZmxhZ3MpOwogCisJaWYgKGk5MTVfZW5naW5lX3N0YXRzX3JlZisrID09IDApCisJCXN0YXRp Y19icmFuY2hfZW5hYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCisJbXV0ZXhfdW5sb2Nr KCZpOTE1X2VuZ2luZV9zdGF0c19tdXRleCk7CisKIAlyZXR1cm4gMDsKIAogYnVzeToKIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwltdXRleF91 bmxvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsKIAogCXJldHVybiAtRUJVU1k7CiB9CkBA IC0xNDYxLDYgKzE0NzQsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykK IAkJcmV0dXJuOwogCisJbXV0ZXhfbG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOwogCXNw aW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKIAlXQVJOX09OX09O Q0UoZW5naW5lLT5zdGF0cy5lbmFibGVkID09IDApOwogCWlmICgtLWVuZ2luZS0+c3RhdHMuZW5h YmxlZCA9PSAwKSB7CkBAIC0xNDY4LDYgKzE0ODIsOSBAQCB2b2lkIGludGVsX2Rpc2FibGVfZW5n aW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJZW5naW5lLT5zdGF0 cy5zdGFydCA9IGVuZ2luZS0+c3RhdHMudG90YWwgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwlpZiAoLS1pOTE1X2VuZ2luZV9z dGF0c19yZWYgPT0gMCkKKwkJc3RhdGljX2JyYW5jaF9kaXNhYmxlKCZpOTE1X2VuZ2luZV9zdGF0 c19rZXkpOworCW11dGV4X3VubG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOwogfQogCiAv KioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCBmZTU1NGZjNzY4 NjcuLjY1ZGVhNjg2ZmM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aApAQCAtMjY5LDYgKzI2OSwyMiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkJICogQGJ1 c3lfc3RhdHM6IEhhcyBlbmFibGVtZW50IG9mIGVuZ2luZSBzdGF0cyB0cmFja2luZyBiZWVuIHJl cXVlc3RlZC4KIAkJICovCiAJCWJvb2wgYnVzeV9zdGF0czsKKwkJLyoqCisJCSAqIEBlbmFibGVf YnVzeV9zdGF0czogV29yayBpdGVtIGZvciBlbmdpbmUgYnVzeSBzdGF0cyBlbmFibGluZy4KKwkJ ICoKKwkJICogU2luY2UgdGhlIGFjdGlvbiBjYW4gc2xlZXAgaXQgbmVlZHMgdG8gYmUgZGVjb3Vw bGVkIGZyb20gdGhlCisJCSAqIHBlcmYgQVBJIGNhbGxiYWNrLgorCQkgKi8KKwkJc3RydWN0IHdv cmtfc3RydWN0IGVuYWJsZV9idXN5X3N0YXRzOworCQkvKioKKwkJICogQGRpc2FibGVfYnVzeV9z dGF0czogV29yayBpdGVtIGZvciBidXN5IHN0YXRzIGRpc2FibGluZy4KKwkJICoKKwkJICogU2Ft ZSBhcyB3aXRoIEBlbmFibGVfYnVzeV9zdGF0cyBhY3Rpb24sIHdpdGggdGhlIGRpZmZlcmVuY2UK KwkJICogdGhhdCB3ZSBkZWxheSBpdCBpbiBjYXNlIHRoZXJlIGFyZSByYXBpZCBlbmFibGUtZGlz YWJsZQorCQkgKiBhY3Rpb25zLCB3aGljaCBjYW4gaGFwcGVuIGR1cmluZyB0b29sIHN0YXJ0dXAg KGxpa2UgcGVyZgorCQkgKiBzdGF0KS4KKwkJICovCisJCXN0cnVjdCBkZWxheWVkX3dvcmsgZGlz YWJsZV9idXN5X3N0YXRzOwogCX0gcG11OwogCiAJLyoKQEAgLTc5NCw0OCArODEwLDU0IEBAIGJv b2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwogc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCiBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSk7 CiAKK0RFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCiBz dGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX2NvbnRleHRfaW4oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlpZiAoUkVBRF9P TkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkKLQkJcmV0dXJuOworCWlmIChzdGF0aWNf YnJhbmNoX3VubGlrZWx5KCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpKSB7CisJCWlmIChSRUFEX09O Q0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQorCQkJcmV0dXJuOwogCi0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCQlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAKLQlpZiAoZW5naW5lLT5zdGF0cy5lbmFi bGVkID4gMCkgewotCQlpZiAoZW5naW5lLT5zdGF0cy5yZWYrKyA9PSAwKQotCQkJZW5naW5lLT5z dGF0cy5zdGFydCA9IGt0aW1lX2dldCgpOwotCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMucmVm ID09IDApOwotCX0KKwkJCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPiAwKSB7CisJCQkJaWYg KGVuZ2luZS0+c3RhdHMucmVmKysgPT0gMCkKKwkJCQkJZW5naW5lLT5zdGF0cy5zdGFydCA9IGt0 aW1lX2dldCgpOworCQkJCUdFTV9CVUdfT04oZW5naW5lLT5zdGF0cy5yZWYgPT0gMCk7CisJCQl9 CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsK KwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJ fQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX2NvbnRleHRfb3V0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0J aWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCi0JCXJldHVybjsKKwlp ZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmaTkxNV9lbmdpbmVfc3RhdHNfa2V5KSkgeworCQlp ZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkKKwkJCXJldHVybjsKIAot CXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9s b2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwogCi0JaWYgKGVuZ2luZS0+ c3RhdHMuZW5hYmxlZCA+IDApIHsKLQkJLyoKLQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUg c3RhdHMsIGNvbnRleHQgb3V0IG1pZ2h0IGJlIHRoZQotCQkgKiBmaXJzdCBldmVudCB3aGljaCB0 aGVuIG5lZWRzIHRvIGJlIGlnbm9yZWQgKHJlZiA9PSAwKS4KLQkJICovCi0JCWlmIChlbmdpbmUt PnN0YXRzLnJlZiAmJiAtLWVuZ2luZS0+c3RhdHMucmVmID09IDApIHsKLQkJCWt0aW1lX3QgbGFz dCA9IGt0aW1lX3N1YihrdGltZV9nZXQoKSwKLQkJCQkJCSBlbmdpbmUtPnN0YXRzLnN0YXJ0KTsK KwkJaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKKwkJCS8qCisJCQkgKiBBZnRlciB0 dXJuaW5nIG9uIGVuZ2luZSBzdGF0cywgY29udGV4dCBvdXQgbWlnaHQgYmUKKwkJCSAqIHRoZSBm aXJzdCBldmVudCB3aGljaCB0aGVuIG5lZWRzIHRvIGJlIGlnbm9yZWQuCisJCQkgKi8KKwkJCWlm IChlbmdpbmUtPnN0YXRzLnJlZiAmJiAtLWVuZ2luZS0+c3RhdHMucmVmID09IDApIHsKKwkJCQlr dGltZV90IGxhc3QgPSBrdGltZV9zdWIoa3RpbWVfZ2V0KCksCisJCQkJCQkJIGVuZ2luZS0+c3Rh dHMuc3RhcnQpOwogCi0JCQllbmdpbmUtPnN0YXRzLnRvdGFsID0ga3RpbWVfYWRkKGVuZ2luZS0+ c3RhdHMudG90YWwsCi0JCQkJCQkJbGFzdCk7CisJCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9CisJ CQkJCWt0aW1lX2FkZChlbmdpbmUtPnN0YXRzLnRvdGFsLCBsYXN0KTsKKwkJCX0KIAkJfQotCX0K IAotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwor CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwl9 CiB9CiAKIGludCBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Ci0tIAoyLjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==