From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 8/8] drm/i915: Gate engine stats collection with a static key Date: Mon, 18 Sep 2017 12:38:14 +0100 Message-ID: <20170918113814.2591-9-tvrtko.ursulin@linux.intel.com> References: <20170918113814.2591-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-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 871AF6E34C for ; Mon, 18 Sep 2017 11:38:29 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id n64so159456wrb.2 for ; Mon, 18 Sep 2017 04:38:29 -0700 (PDT) In-Reply-To: <20170918113814.2591-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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcmVk dWNlcyB0aGUgY29zdCBvZiB0aGUgc29mdHdhcmUgZW5naW5lIGJ1c3luZXNzIHRyYWNraW5nCnRv IGEgc2luZ2xlIG5vLW9wIGluc3RydWN0aW9uIHdoZW4gdGhlcmUgYXJlIG5vIGxpc3RlbmVycy4K CnYyOiBSZWJhc2UgYW5kIHNvbWUgY29tbWVudHMuCnYzOiBSZWJhc2UuCnY0OiBDaGVja3BhdGNo IGZpeGVzLgp2NTogUmViYXNlLgp2NjogVXNlIHN5c3RlbV9sb25nX3dxIHRvIGF2b2lkIGJlaW5n IGJsb2NrZWQgYnkgc3RydWN0X211dGV4CiAgICB1c2Vycy4KClNpZ25lZC1vZmYtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wbXUuYyAgICAgICAgIHwgIDU0ICsrKysrKysrKysrKysrKy0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgfCAgMTcgKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAxMDEgKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDQyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IGZmYmEyMWVlYjVkMC4uNmQyMjE3 MmI4ZmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTQ5OSwxMSArNDk5LDE3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJCUdF TV9CVUdfT04oc2FtcGxlID49IEk5MTVfUE1VX1NBTVBMRV9CSVRTKTsKIAkJR0VNX0JVR19PTihl bmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9PSB+MCk7CiAJCWlmIChlbmdpbmUtPnBt dS5lbmFibGVfY291bnRbc2FtcGxlXSsrID09IDApIHsKKwkJCS8qCisJCQkgKiBFbmFibGUgZW5n aW5lIGJ1c3kgc3RhdHMgdHJhY2tpbmcgaWYgbmVlZGVkIG9yCisJCQkgKiBhbHRlcm5hdGl2ZWx5 IGNhbmNlbCB0aGUgc2NoZWR1bGVkIGRpc2FibGluZyBvZiB0aGUKKwkJCSAqIHNhbWUuCisJCQkg Ki8KIAkJCWlmIChlbmdpbmVfbmVlZHNfYnVzeV9zdGF0cyhlbmdpbmUpICYmCiAJCQkgICAgIWVu Z2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKLQkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0KLQkJ CQkJaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhlbmdpbmUpID09IDA7Ci0JCQkJV0FSTl9PTl9P TkNFKCFlbmdpbmUtPnBtdS5idXN5X3N0YXRzKTsKKwkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRz ID0gdHJ1ZTsKKwkJCQlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRpc2Fi bGVfYnVzeV9zdGF0cykpCisJCQkJCXF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsCisJCQkJCQkg ICAmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOwogCQkJfQogCQl9CiAJfQpAQCAtNTQ2 LDcgKzU1MiwxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3BtdV9kaXNhYmxlKHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCkKIAkJCWlmICghZW5naW5lX25lZWRzX2J1c3lfc3RhdHMoZW5naW5lKSAmJgog CQkJICAgIGVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKIAkJCQllbmdpbmUtPnBtdS5idXN5X3N0 YXRzID0gZmFsc2U7Ci0JCQkJaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMoZW5naW5lKTsKKwkJ CQkvKgorCQkJCSAqIFdlIHJlcXVlc3QgYSBkZWxheWVkIGRpc2FibGUgdG8gaGFuZGxlIHRoZQor CQkJCSAqIHJhcGlkIG9uL29mZiBjeWNsZXMgb24gZXZlbnRzIHdoaWNoIGNhbgorCQkJCSAqIGhh cHBlbiB3aGVuIHRvb2xzIGxpa2UgcGVyZiBzdGF0IHN0YXJ0IGluIGEKKwkJCQkgKiBuaWNlciB3 YXkuCisJCQkJICovCisJCQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9sb25nX3dxLAorCQkJ CQkJICAgJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cywKKwkJCQkJCSAgIHJvdW5kX2pp ZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKIAkJCX0KIAkJfQogCX0KQEAgLTczNyw5ICs3NTEsMjcg QEAgc3RhdGljIGludCBpOTE1X3BtdV9jcHVfb2ZmbGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1 Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgX19lbmFi bGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5l KSwgcG11LmVuYWJsZV9idXN5X3N0YXRzKTsKKworCVdBUk5fT05fT05DRShpbnRlbF9lbmFibGVf ZW5naW5lX3N0YXRzKGVuZ2luZSkpOworfQorCitzdGF0aWMgdm9pZCBfX2Rpc2FibGVfYnVzeV9z dGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lID0KKwkgICAgICAgY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwg cG11LmRpc2FibGVfYnVzeV9zdGF0cy53b3JrKTsKKworCWludGVsX2Rpc2FibGVfZW5naW5lX3N0 YXRzKGVuZ2luZSk7Cit9CisKIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiB7CiAJaW50IHJldDsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUp IDw9IDIpIHsKIAkJRFJNX0lORk8oIlBNVSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIEdQVS4iKTsK QEAgLTc3Myw2ICs4MDUsMTIgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIAlpOTE1LT5wbXUudGltZXIuZnVuY3Rpb24gPSBpOTE1X3NhbXBs ZTsKIAlpOTE1LT5wbXUuZW5hYmxlID0gMDsKIAorCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5 MTUsIGlkKSB7CisJCUlOSVRfV09SSygmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMsIF9f ZW5hYmxlX2J1c3lfc3RhdHMpOworCQlJTklUX0RFTEFZRURfV09SSygmZW5naW5lLT5wbXUuZGlz YWJsZV9idXN5X3N0YXRzLAorCQkJCSAgX19kaXNhYmxlX2J1c3lfc3RhdHMpOworCX0KKwogCXJl dCA9IHBlcmZfcG11X3JlZ2lzdGVyKCZpOTE1LT5wbXUuYmFzZSwgImk5MTUiLCAtMSk7CiAJaWYg KHJldCA9PSAwKQogCQlyZXR1cm47CkBAIC03OTEsNiArODI5LDkgQEAgdm9pZCBpOTE1X3BtdV9y ZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogdm9pZCBpOTE1X3BtdV91 bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogeworCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwogCWlmICgh aTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCkKIAkJcmV0dXJuOwogCkBAIC04MDIsNiArODQzLDEx IEBAIHZvaWQgaTkxNV9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAogCWhydGltZXJfY2FuY2VsKCZpOTE1LT5wbXUudGltZXIpOwogCisJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJZmx1c2hfd29yaygmZW5naW5lLT5wbXUuZW5hYmxl X2J1c3lfc3RhdHMpOworCQlmbHVzaF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRpc2FibGVf YnVzeV9zdGF0cyk7CisJfQorCiAJcGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+cG11LmJhc2Up OwogCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBjYmY5NzhkMzkwNTIuLjQ5MGI1MjU0ZjJjMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTIxLDYgKzIxLDcgQEAKICAq IElOIFRIRSBTT0ZUV0FSRS4KICAqCiAgKi8KKyNpbmNsdWRlIDxsaW51eC9zdGF0aWNfa2V5Lmg+ CiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIK QEAgLTE1NTgsNiArMTU1OSwxMCBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIH0KIAorREVGSU5FX1NUQVRJQ19L RVlfRkFMU0UoaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKK3N0YXRpYyBERUZJTkVfTVVURVgoaTkx NV9lbmdpbmVfc3RhdHNfbXV0ZXgpOworc3RhdGljIGludCBpOTE1X2VuZ2luZV9zdGF0c19yZWY7 CisKIC8qKgogICogaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5hYmxlIGVuZ2luZSBi dXN5IHRyYWNraW5nIG9uIGVuZ2luZQogICogQGVuZ2luZTogZW5naW5lIHRvIGVuYWJsZSBzdGF0 cyBjb2xsZWN0aW9uCkBAIC0xNTczLDYgKzE1NzgsOCBAQCBpbnQgaW50ZWxfZW5hYmxlX2VuZ2lu ZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFpOTE1LmVuYWJs ZV9leGVjbGlzdHMpCiAJCXJldHVybiAtRU5PREVWOwogCisJbXV0ZXhfbG9jaygmaTkxNV9lbmdp bmVfc3RhdHNfbXV0ZXgpOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9j aywgZmxhZ3MpOwogCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gfjApCiAJCWdvdG8gYnVz eTsKQEAgLTE1ODAsMTAgKzE1ODcsMTYgQEAgaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQllbmdpbmUtPnN0YXRzLmVuYWJsZWRf YXQgPSBrdGltZV9nZXQoKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRz LmxvY2ssIGZsYWdzKTsKIAorCWlmIChpOTE1X2VuZ2luZV9zdGF0c19yZWYrKyA9PSAwKQorCQlz dGF0aWNfYnJhbmNoX2VuYWJsZSgmaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKKworCW11dGV4X3Vu bG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOworCiAJcmV0dXJuIDA7CiAKIGJ1c3k6CiAJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJbXV0 ZXhfdW5sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19tdXRleCk7CiAKIAlyZXR1cm4gLUVCVVNZOwog fQpAQCAtMTYwMSw2ICsxNjE0LDcgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlz dHMpCiAJCXJldHVybjsKIAorCW11dGV4X2xvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJV0FSTl9P Tl9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKTsKIAlpZiAoLS1lbmdpbmUtPnN0YXRz LmVuYWJsZWQgPT0gMCkgewpAQCAtMTYxMCw2ICsxNjI0LDkgQEAgdm9pZCBpbnRlbF9kaXNhYmxl X2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+ c3RhdHMudG90YWwgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0 YXRzLmxvY2ssIGZsYWdzKTsKKwlpZiAoLS1pOTE1X2VuZ2luZV9zdGF0c19yZWYgPT0gMCkKKwkJ c3RhdGljX2JyYW5jaF9kaXNhYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCW11dGV4X3Vu bG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCBjYjU4Y2UzNGFiMTMuLjJjM2RkZjg2MmJkZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMjcwLDYgKzI3MCwy MiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkJICogCQlyZXF1ZXN0ZWQuCiAJCSAqLwog CQlib29sIGJ1c3lfc3RhdHM7CisJCS8qKgorCQkgKiBAZW5hYmxlX2J1c3lfc3RhdHM6IFdvcmsg aXRlbSBmb3IgZW5naW5lIGJ1c3kgc3RhdHMgZW5hYmxpbmcuCisJCSAqCisJCSAqIFNpbmNlIHRo ZSBhY3Rpb24gY2FuIHNsZWVwIGl0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBmcm9tIHRoZQorCQkg KiBwZXJmIEFQSSBjYWxsYmFjay4KKwkJICovCisJCXN0cnVjdCB3b3JrX3N0cnVjdCBlbmFibGVf YnVzeV9zdGF0czsKKwkJLyoqCisJCSAqIEBkaXNhYmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRlbSBm b3IgYnVzeSBzdGF0cyBkaXNhYmxpbmcuCisJCSAqCisJCSAqIFNhbWUgYXMgd2l0aCBAZW5hYmxl X2J1c3lfc3RhdHMgYWN0aW9uLCB3aXRoIHRoZSBkaWZmZXJlbmNlCisJCSAqIHRoYXQgd2UgZGVs YXkgaXQgaW4gY2FzZSB0aGVyZSBhcmUgcmFwaWQgZW5hYmxlLWRpc2FibGUKKwkJICogYWN0aW9u cywgd2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgdG9vbCBzdGFydHVwIChsaWtlIHBlcmYKKwkJICog c3RhdCkuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRpc2FibGVfYnVzeV9zdGF0czsK IAl9IHBtdTsKIAogCS8qCkBAIC04MDUsNTkgKzgyMSw2OCBAQCBib29sIGludGVsX2VuZ2luZV9j YW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKgogaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOwogCitERUNMQVJFX1NUQVRJ Q19LRVlfRkFMU0UoaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKKwogc3RhdGljIGlubGluZSB2b2lk IGludGVsX2VuZ2luZV9jb250ZXh0X2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRz LmVuYWJsZWQpID09IDApCi0JCXJldHVybjsKKwlpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgm aTkxNV9lbmdpbmVfc3RhdHNfa2V5KSkgeworCQlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMu ZW5hYmxlZCkgPT0gMCkKKwkJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUt PnN0YXRzLmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMu bG9jaywgZmxhZ3MpOwogCi0JaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKLQkJaWYg KGVuZ2luZS0+c3RhdHMuYWN0aXZlKysgPT0gMCkKLQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBr dGltZV9nZXQoKTsKLQkJR0VNX0JVR19PTihlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKTsKLQl9 CisJCQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgeworCQkJCWlmIChlbmdpbmUtPnN0 YXRzLmFjdGl2ZSsrID09IDApCisJCQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGltZV9nZXQo KTsKKwkJCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApOworCQkJfQogCi0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCX0KIH0K IAogc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291dChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWlmIChS RUFEX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQotCQlyZXR1cm47Ci0KLQlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Ci0KLQlpZiAoZW5naW5l LT5zdGF0cy5lbmFibGVkID4gMCkgewotCQlrdGltZV90IGxhc3QsIG5vdyA9IGt0aW1lX2dldCgp OwotCi0JCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSAmJiAtLWVuZ2luZS0+c3RhdHMuYWN0aXZl ID09IDApIHsKLQkJCS8qCi0JCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50 IGFuZCBpbiBjYXNlIEdQVQotCQkJICogaXMgbm93IGlkbGUgYWRkIHVwIHRvIHRoZSBydW5uaW5n IHRvdGFsLgotCQkJICovCi0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5z dGFydCk7Ci0KLQkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5zdGF0 cy50b3RhbCwKLQkJCQkJCQlsYXN0KTsKLQkJfSBlbHNlIGlmIChlbmdpbmUtPnN0YXRzLmFjdGl2 ZSA9PSAwKSB7Ci0JCQkvKgotCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUgc3RhdHMsIGNv bnRleHQgb3V0IG1pZ2h0IGJlCi0JCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4gd2hpY2ggY2FzZSB3 ZSBhY2NvdW50IGZyb20gdGhlCi0JCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMgdHVybmVk IG9uLgotCQkJICovCi0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5lbmFi bGVkX2F0KTsKLQotCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2FkZChlbmdpbmUtPnN0 YXRzLnRvdGFsLAotCQkJCQkJCWxhc3QpOworCWlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZp OTE1X2VuZ2luZV9zdGF0c19rZXkpKSB7CisJCWlmIChSRUFEX09OQ0UoZW5naW5lLT5zdGF0cy5l bmFibGVkKSA9PSAwKQorCQkJcmV0dXJuOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUt PnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkg eworCQkJa3RpbWVfdCBsYXN0LCBub3cgPSBrdGltZV9nZXQoKTsKKworCQkJaWYgKGVuZ2luZS0+ c3RhdHMuYWN0aXZlICYmCisJCQkgICAgLS1lbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKSB7CisJ CQkJLyoKKwkJCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50IGFuZCBpbgor CQkJCSAqIGNhc2UgR1BVIGlzIG5vdyBpZGxlIGFkZCB1cCB0byB0aGUgcnVubmluZworCQkJCSAq IHRvdGFsLgorCQkJCSAqLworCQkJCWxhc3QgPSBrdGltZV9zdWIobm93LCBlbmdpbmUtPnN0YXRz LnN0YXJ0KTsKKworCQkJCWVuZ2luZS0+c3RhdHMudG90YWwgPQorCQkJCQlrdGltZV9hZGQoZW5n aW5lLT5zdGF0cy50b3RhbCwgbGFzdCk7CisJCQl9IGVsc2UgaWYgKGVuZ2luZS0+c3RhdHMuYWN0 aXZlID09IDApIHsKKwkJCQkvKgorCQkJCSAqIEFmdGVyIHR1cm5pbmcgb24gZW5naW5lIHN0YXRz LCBjb250ZXh0IG91dAorCQkJCSAqIG1pZ2h0IGJlIHRoZSBmaXJzdCBldmVudCBpbiB3aGljaCBj YXNlIHdlCisJCQkJICogYWNjb3VudCBmcm9tIHRoZSB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMK KwkJCQkgKiB0dXJuZWQgb24uCisJCQkJICovCisJCQkJbGFzdCA9IGt0aW1lX3N1Yihub3csIGVu Z2luZS0+c3RhdHMuZW5hYmxlZF9hdCk7CisKKwkJCQllbmdpbmUtPnN0YXRzLnRvdGFsID0KKwkJ CQkJa3RpbWVfYWRkKGVuZ2luZS0+c3RhdHMudG90YWwsIGxhc3QpOworCQkJfQorCisJCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKIAkJfQogCX0K LQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwog fQogCiBpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwotLSAKMi45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=