From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v7 8/8] drm/i915: Gate engine stats collection with a static key Date: Tue, 19 Sep 2017 09:43:21 +0100 Message-ID: <20170919084321.15656-1-tvrtko.ursulin@linux.intel.com> References: <1505752565.8257.1.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id D74C889191 for ; Tue, 19 Sep 2017 08:43:29 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id f4so3146140wmh.4 for ; Tue, 19 Sep 2017 01:43:29 -0700 (PDT) In-Reply-To: <1505752565.8257.1.camel@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 IGJsb2NrZWQgYnkgc3RydWN0X211dGV4CiAgICB1c2Vycy4Kdjc6IEZpeCBiYWQgY29uZmxpY3Qg cmVzb2x1dGlvbiBmcm9tIGxhc3QgcmViYXNlLiAoRG1pdHJ5IFJvZ296aGtpbikKClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyAgICAgICAgIHwgIDU0ICsrKysrKysrKysrKysr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgfCAgMTcgKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAxMDEgKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMo KyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IGZmYmEyMWVl YjVkMC4uNmQyMjE3MmI4ZmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTQ5OSwxMSAr NDk5LDE3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAq ZXZlbnQpCiAJCUdFTV9CVUdfT04oc2FtcGxlID49IEk5MTVfUE1VX1NBTVBMRV9CSVRTKTsKIAkJ R0VNX0JVR19PTihlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9PSB+MCk7CiAJCWlm IChlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSsrID09IDApIHsKKwkJCS8qCisJCQkg KiBFbmFibGUgZW5naW5lIGJ1c3kgc3RhdHMgdHJhY2tpbmcgaWYgbmVlZGVkIG9yCisJCQkgKiBh bHRlcm5hdGl2ZWx5IGNhbmNlbCB0aGUgc2NoZWR1bGVkIGRpc2FibGluZyBvZiB0aGUKKwkJCSAq IHNhbWUuCisJCQkgKi8KIAkJCWlmIChlbmdpbmVfbmVlZHNfYnVzeV9zdGF0cyhlbmdpbmUpICYm CiAJCQkgICAgIWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKLQkJCQllbmdpbmUtPnBtdS5idXN5 X3N0YXRzID0KLQkJCQkJaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhlbmdpbmUpID09IDA7Ci0J CQkJV0FSTl9PTl9PTkNFKCFlbmdpbmUtPnBtdS5idXN5X3N0YXRzKTsKKwkJCQllbmdpbmUtPnBt dS5idXN5X3N0YXRzID0gdHJ1ZTsKKwkJCQlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmVuZ2lu ZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cykpCisJCQkJCXF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdf d3EsCisJCQkJCQkgICAmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOwogCQkJfQogCQl9 CiAJfQpAQCAtNTQ2LDcgKzU1MiwxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3BtdV9kaXNhYmxlKHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIAkJCWlmICghZW5naW5lX25lZWRzX2J1c3lfc3RhdHMo ZW5naW5lKSAmJgogCQkJICAgIGVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKIAkJCQllbmdpbmUt PnBtdS5idXN5X3N0YXRzID0gZmFsc2U7Ci0JCQkJaW50ZWxfZGlzYWJsZV9lbmdpbmVfc3RhdHMo ZW5naW5lKTsKKwkJCQkvKgorCQkJCSAqIFdlIHJlcXVlc3QgYSBkZWxheWVkIGRpc2FibGUgdG8g aGFuZGxlIHRoZQorCQkJCSAqIHJhcGlkIG9uL29mZiBjeWNsZXMgb24gZXZlbnRzIHdoaWNoIGNh bgorCQkJCSAqIGhhcHBlbiB3aGVuIHRvb2xzIGxpa2UgcGVyZiBzdGF0IHN0YXJ0IGluIGEKKwkJ CQkgKiBuaWNlciB3YXkuCisJCQkJICovCisJCQkJcXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9s b25nX3dxLAorCQkJCQkJICAgJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cywKKwkJCQkJ CSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKIAkJCX0KIAkJfQogCX0KQEAgLTcz Nyw5ICs3NTEsMjcgQEAgc3RhdGljIGludCBpOTE1X3BtdV9jcHVfb2ZmbGluZSh1bnNpZ25lZCBp bnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGlj IHZvaWQgX19lbmFibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5 cGVvZigqZW5naW5lKSwgcG11LmVuYWJsZV9idXN5X3N0YXRzKTsKKworCVdBUk5fT05fT05DRShp bnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKGVuZ2luZSkpOworfQorCitzdGF0aWMgdm9pZCBfX2Rp c2FibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkgICAgICAgY29udGFpbmVyX29mKHdvcmssIHR5cGVv ZigqZW5naW5lKSwgcG11LmRpc2FibGVfYnVzeV9zdGF0cy53b3JrKTsKKworCWludGVsX2Rpc2Fi bGVfZW5naW5lX3N0YXRzKGVuZ2luZSk7Cit9CisKIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJaW50IHJldDsKKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAKIAlpZiAoSU5U RUxfR0VOKGk5MTUpIDw9IDIpIHsKIAkJRFJNX0lORk8oIlBNVSBub3Qgc3VwcG9ydGVkIGZvciB0 aGlzIEdQVS4iKTsKQEAgLTc3Myw2ICs4MDUsMTIgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3Rlcihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlpOTE1LT5wbXUudGltZXIuZnVuY3Rpb24g PSBpOTE1X3NhbXBsZTsKIAlpOTE1LT5wbXUuZW5hYmxlID0gMDsKIAorCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCUlOSVRfV09SSygmZW5naW5lLT5wbXUuZW5hYmxlX2J1 c3lfc3RhdHMsIF9fZW5hYmxlX2J1c3lfc3RhdHMpOworCQlJTklUX0RFTEFZRURfV09SSygmZW5n aW5lLT5wbXUuZGlzYWJsZV9idXN5X3N0YXRzLAorCQkJCSAgX19kaXNhYmxlX2J1c3lfc3RhdHMp OworCX0KKwogCXJldCA9IHBlcmZfcG11X3JlZ2lzdGVyKCZpOTE1LT5wbXUuYmFzZSwgImk5MTUi LCAtMSk7CiAJaWYgKHJldCA9PSAwKQogCQlyZXR1cm47CkBAIC03OTEsNiArODI5LDkgQEAgdm9p ZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogdm9p ZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewor CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBp ZDsKKwogCWlmICghaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCkKIAkJcmV0dXJuOwogCkBAIC04 MDIsNiArODQzLDExIEBAIHZvaWQgaTkxNV9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAogCWhydGltZXJfY2FuY2VsKCZpOTE1LT5wbXUudGltZXIpOwogCisJ Zm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJZmx1c2hfd29yaygmZW5naW5l LT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOworCQlmbHVzaF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+ cG11LmRpc2FibGVfYnVzeV9zdGF0cyk7CisJfQorCiAJcGVyZl9wbXVfdW5yZWdpc3RlcigmaTkx NS0+cG11LmJhc2UpOwogCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQgPSBOVUxMOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBjYmY5NzhkMzkwNTIuLjQ5MGI1 MjU0ZjJjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTIxLDYg KzIxLDcgQEAKICAqIElOIFRIRSBTT0ZUV0FSRS4KICAqCiAgKi8KKyNpbmNsdWRlIDxsaW51eC9z dGF0aWNfa2V5Lmg+CiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImludGVsX3Jp bmdidWZmZXIuaCIKQEAgLTE1NTgsNiArMTU1OSwxMCBAQCBib29sIGludGVsX2VuZ2luZV9jYW5f c3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIH0KIAorREVG SU5FX1NUQVRJQ19LRVlfRkFMU0UoaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKK3N0YXRpYyBERUZJ TkVfTVVURVgoaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOworc3RhdGljIGludCBpOTE1X2VuZ2lu ZV9zdGF0c19yZWY7CisKIC8qKgogICogaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5h YmxlIGVuZ2luZSBidXN5IHRyYWNraW5nIG9uIGVuZ2luZQogICogQGVuZ2luZTogZW5naW5lIHRv IGVuYWJsZSBzdGF0cyBjb2xsZWN0aW9uCkBAIC0xNTczLDYgKzE1NzgsOCBAQCBpbnQgaW50ZWxf ZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYg KCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpCiAJCXJldHVybiAtRU5PREVWOwogCisJbXV0ZXhfbG9j aygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOworCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2lu ZS0+c3RhdHMubG9jaywgZmxhZ3MpOwogCWlmIChlbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gfjAp CiAJCWdvdG8gYnVzeTsKQEAgLTE1ODAsMTAgKzE1ODcsMTYgQEAgaW50IGludGVsX2VuYWJsZV9l bmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQllbmdpbmUtPnN0 YXRzLmVuYWJsZWRfYXQgPSBrdGltZV9nZXQoKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZl bmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKIAorCWlmIChpOTE1X2VuZ2luZV9zdGF0c19yZWYr KyA9PSAwKQorCQlzdGF0aWNfYnJhbmNoX2VuYWJsZSgmaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsK KworCW11dGV4X3VubG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOworCiAJcmV0dXJuIDA7 CiAKIGJ1c3k6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBm bGFncyk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19tdXRleCk7CiAKIAlyZXR1 cm4gLUVCVVNZOwogfQpAQCAtMTYwMSw2ICsxNjE0LDcgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2Vu Z2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKCFpOTE1LmVu YWJsZV9leGVjbGlzdHMpCiAJCXJldHVybjsKIAorCW11dGV4X2xvY2soJmk5MTVfZW5naW5lX3N0 YXRzX211dGV4KTsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFn cyk7CiAJV0FSTl9PTl9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKTsKIAlpZiAoLS1l bmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gMCkgewpAQCAtMTYxMCw2ICsxNjI0LDkgQEAgdm9pZCBp bnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAJCWVuZ2luZS0+c3RhdHMudG90YWwgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwlpZiAoLS1pOTE1X2VuZ2luZV9zdGF0c19y ZWYgPT0gMCkKKwkJc3RhdGljX2JyYW5jaF9kaXNhYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkp OworCW11dGV4X3VubG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOwogfQogCiAvKioKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCBjYjU4Y2UzNGFiMTMuLmE2 NGMyODhlZjU4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAt MjcwLDYgKzI3MCwyMiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkJICogCQlyZXF1ZXN0 ZWQuCiAJCSAqLwogCQlib29sIGJ1c3lfc3RhdHM7CisJCS8qKgorCQkgKiBAZW5hYmxlX2J1c3lf c3RhdHM6IFdvcmsgaXRlbSBmb3IgZW5naW5lIGJ1c3kgc3RhdHMgZW5hYmxpbmcuCisJCSAqCisJ CSAqIFNpbmNlIHRoZSBhY3Rpb24gY2FuIHNsZWVwIGl0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBm cm9tIHRoZQorCQkgKiBwZXJmIEFQSSBjYWxsYmFjay4KKwkJICovCisJCXN0cnVjdCB3b3JrX3N0 cnVjdCBlbmFibGVfYnVzeV9zdGF0czsKKwkJLyoqCisJCSAqIEBkaXNhYmxlX2J1c3lfc3RhdHM6 IFdvcmsgaXRlbSBmb3IgYnVzeSBzdGF0cyBkaXNhYmxpbmcuCisJCSAqCisJCSAqIFNhbWUgYXMg d2l0aCBAZW5hYmxlX2J1c3lfc3RhdHMgYWN0aW9uLCB3aXRoIHRoZSBkaWZmZXJlbmNlCisJCSAq IHRoYXQgd2UgZGVsYXkgaXQgaW4gY2FzZSB0aGVyZSBhcmUgcmFwaWQgZW5hYmxlLWRpc2FibGUK KwkJICogYWN0aW9ucywgd2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgdG9vbCBzdGFydHVwIChsaWtl IHBlcmYKKwkJICogc3RhdCkuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRpc2FibGVf YnVzeV9zdGF0czsKIAl9IHBtdTsKIAogCS8qCkBAIC04MDUsNTkgKzgyMSw2OCBAQCBib29sIGlu dGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgogaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOwogCitE RUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UoaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKKwogc3RhdGlj IGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X2luKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKFJFQURfT05DRShl bmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDApCi0JCXJldHVybjsKKwlpZiAoc3RhdGljX2JyYW5j aF91bmxpa2VseSgmaTkxNV9lbmdpbmVfc3RhdHNfa2V5KSkgeworCQlpZiAoUkVBRF9PTkNFKGVu Z2luZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkKKwkJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwogCi0JaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+ IDApIHsKLQkJaWYgKGVuZ2luZS0+c3RhdHMuYWN0aXZlKysgPT0gMCkKLQkJCWVuZ2luZS0+c3Rh dHMuc3RhcnQgPSBrdGltZV9nZXQoKTsKLQkJR0VNX0JVR19PTihlbmdpbmUtPnN0YXRzLmFjdGl2 ZSA9PSAwKTsKLQl9CisJCQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgeworCQkJCWlm IChlbmdpbmUtPnN0YXRzLmFjdGl2ZSsrID09IDApCisJCQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQg PSBrdGltZV9nZXQoKTsKKwkJCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDAp OworCQkJfQogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBm bGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxh Z3MpOworCX0KIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291 dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFn czsKIAotCWlmIChSRUFEX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQotCQlyZXR1 cm47Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Ci0K LQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgewotCQlrdGltZV90IGxhc3QsIG5vdyA9 IGt0aW1lX2dldCgpOwotCi0JCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSAmJiAtLWVuZ2luZS0+ c3RhdHMuYWN0aXZlID09IDApIHsKLQkJCS8qCi0JCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBj b250ZXh0IGNvdW50IGFuZCBpbiBjYXNlIEdQVQotCQkJICogaXMgbm93IGlkbGUgYWRkIHVwIHRv IHRoZSBydW5uaW5nIHRvdGFsLgotCQkJICovCi0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5n aW5lLT5zdGF0cy5zdGFydCk7Ci0KLQkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQo ZW5naW5lLT5zdGF0cy50b3RhbCwKLQkJCQkJCQlsYXN0KTsKLQkJfSBlbHNlIGlmIChlbmdpbmUt PnN0YXRzLmFjdGl2ZSA9PSAwKSB7Ci0JCQkvKgotCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdp bmUgc3RhdHMsIGNvbnRleHQgb3V0IG1pZ2h0IGJlCi0JCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4g d2hpY2ggY2FzZSB3ZSBhY2NvdW50IGZyb20gdGhlCi0JCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmlu ZyB3YXMgdHVybmVkIG9uLgotCQkJICovCi0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5l LT5zdGF0cy5lbmFibGVkX2F0KTsKLQotCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2Fk ZChlbmdpbmUtPnN0YXRzLnRvdGFsLAotCQkJCQkJCWxhc3QpOworCWlmIChzdGF0aWNfYnJhbmNo X3VubGlrZWx5KCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpKSB7CisJCWlmIChSRUFEX09OQ0UoZW5n aW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQorCQkJcmV0dXJuOworCisJCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKworCQlpZiAoZW5naW5lLT5zdGF0cy5l bmFibGVkID4gMCkgeworCQkJa3RpbWVfdCBsYXN0LCBub3cgPSBrdGltZV9nZXQoKTsKKworCQkJ aWYgKGVuZ2luZS0+c3RhdHMuYWN0aXZlICYmCisJCQkgICAgLS1lbmdpbmUtPnN0YXRzLmFjdGl2 ZSA9PSAwKSB7CisJCQkJLyoKKwkJCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNv dW50IGFuZCBpbgorCQkJCSAqIGNhc2UgR1BVIGlzIG5vdyBpZGxlIGFkZCB1cCB0byB0aGUgcnVu bmluZworCQkJCSAqIHRvdGFsLgorCQkJCSAqLworCQkJCWxhc3QgPSBrdGltZV9zdWIobm93LCBl bmdpbmUtPnN0YXRzLnN0YXJ0KTsKKworCQkJCWVuZ2luZS0+c3RhdHMudG90YWwgPQorCQkJCQlr dGltZV9hZGQoZW5naW5lLT5zdGF0cy50b3RhbCwgbGFzdCk7CisJCQl9IGVsc2UgaWYgKGVuZ2lu ZS0+c3RhdHMuYWN0aXZlID09IDApIHsKKwkJCQkvKgorCQkJCSAqIEFmdGVyIHR1cm5pbmcgb24g ZW5naW5lIHN0YXRzLCBjb250ZXh0IG91dAorCQkJCSAqIG1pZ2h0IGJlIHRoZSBmaXJzdCBldmVu dCBpbiB3aGljaCBjYXNlIHdlCisJCQkJICogYWNjb3VudCBmcm9tIHRoZSB0aW1lIHN0YXRzIGdh dGhlcmluZyB3YXMKKwkJCQkgKiB0dXJuZWQgb24uCisJCQkJICovCisJCQkJbGFzdCA9IGt0aW1l X3N1Yihub3csIGVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCk7CisKKwkJCQllbmdpbmUtPnN0YXRz LnRvdGFsID0KKwkJCQkJa3RpbWVfYWRkKGVuZ2luZS0+c3RhdHMudG90YWwsIGxhc3QpOworCQkJ fQogCQl9Ci0JfQogCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2Nr LCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywg ZmxhZ3MpOworCX0KIH0KIAogaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLS0gCjIuOS41CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK