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, 25 Sep 2017 16:15:43 +0100 Message-ID: <20170925151543.7395-9-tvrtko.ursulin@linux.intel.com> References: <20170925151543.7395-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-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0A5D6E356 for ; Mon, 25 Sep 2017 15:16:01 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id p37so33719wrb.5 for ; Mon, 25 Sep 2017 08:16:01 -0700 (PDT) In-Reply-To: <20170925151543.7395-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 IGJsb2NrZWQgYnkgc3RydWN0X211dGV4CiAgICB1c2Vycy4Kdjc6IEZpeCBiYWQgY29uZmxpY3Qg cmVzb2x1dGlvbiBmcm9tIGxhc3QgcmViYXNlLiAoRG1pdHJ5IFJvZ296aGtpbikKdjg6IFJlYmFz ZS4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyAgICAgICAgIHwgIDU0ICsr KysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAg fCAgMTcgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAx MDEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTMw IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmlu ZGV4IDIyOGFhNTBjZTcwOS4uZTc2OGYzM2ViYjNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMK QEAgLTUwMSwxMSArNTAxLDE3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3Qg cGVyZl9ldmVudCAqZXZlbnQpCiAJCUdFTV9CVUdfT04oc2FtcGxlID49IEk5MTVfUE1VX1NBTVBM RV9CSVRTKTsKIAkJR0VNX0JVR19PTihlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9 PSB+MCk7CiAJCWlmIChlbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSsrID09IDApIHsK KwkJCS8qCisJCQkgKiBFbmFibGUgZW5naW5lIGJ1c3kgc3RhdHMgdHJhY2tpbmcgaWYgbmVlZGVk IG9yCisJCQkgKiBhbHRlcm5hdGl2ZWx5IGNhbmNlbCB0aGUgc2NoZWR1bGVkIGRpc2FibGluZyBv ZiB0aGUKKwkJCSAqIHNhbWUuCisJCQkgKi8KIAkJCWlmIChlbmdpbmVfbmVlZHNfYnVzeV9zdGF0 cyhlbmdpbmUpICYmCiAJCQkgICAgIWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsKLQkJCQllbmdp bmUtPnBtdS5idXN5X3N0YXRzID0KLQkJCQkJaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhlbmdp bmUpID09IDA7Ci0JCQkJV0FSTl9PTl9PTkNFKCFlbmdpbmUtPnBtdS5idXN5X3N0YXRzKTsKKwkJ CQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0gdHJ1ZTsKKwkJCQlpZiAoIWNhbmNlbF9kZWxheWVk X3dvcmsoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cykpCisJCQkJCXF1ZXVlX3dvcmso c3lzdGVtX2xvbmdfd3EsCisJCQkJCQkgICAmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMp OwogCQkJfQogCQl9CiAJfQpAQCAtNTQ4LDcgKzU1NCwxNSBAQCBzdGF0aWMgdm9pZCBpOTE1X3Bt dV9kaXNhYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIAkJCWlmICghZW5naW5lX25lZWRz X2J1c3lfc3RhdHMoZW5naW5lKSAmJgogCQkJICAgIGVuZ2luZS0+cG11LmJ1c3lfc3RhdHMpIHsK IAkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0gZmFsc2U7Ci0JCQkJaW50ZWxfZGlzYWJsZV9l bmdpbmVfc3RhdHMoZW5naW5lKTsKKwkJCQkvKgorCQkJCSAqIFdlIHJlcXVlc3QgYSBkZWxheWVk IGRpc2FibGUgdG8gaGFuZGxlIHRoZQorCQkJCSAqIHJhcGlkIG9uL29mZiBjeWNsZXMgb24gZXZl bnRzIHdoaWNoIGNhbgorCQkJCSAqIGhhcHBlbiB3aGVuIHRvb2xzIGxpa2UgcGVyZiBzdGF0IHN0 YXJ0IGluIGEKKwkJCQkgKiBuaWNlciB3YXkuCisJCQkJICovCisJCQkJcXVldWVfZGVsYXllZF93 b3JrKHN5c3RlbV9sb25nX3dxLAorCQkJCQkJICAgJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9z dGF0cywKKwkJCQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKIAkJCX0KIAkJ fQogCX0KQEAgLTczOSw5ICs3NTMsMjcgQEAgc3RhdGljIGludCBpOTE1X3BtdV9jcHVfb2ZmbGlu ZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKIAlyZXR1cm4gMDsK IH0KIAorc3RhdGljIHZvaWQgX19lbmFibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29udGFpbmVy X29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmVuYWJsZV9idXN5X3N0YXRzKTsKKworCVdB Uk5fT05fT05DRShpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKGVuZ2luZSkpOworfQorCitzdGF0 aWMgdm9pZCBfX2Rpc2FibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkgICAgICAgY29udGFpbmVyX29m KHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmRpc2FibGVfYnVzeV9zdGF0cy53b3JrKTsKKwor CWludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKGVuZ2luZSk7Cit9CisKIHZvaWQgaTkxNV9wbXVf cmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJaW50IHJldDsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDIpIHsKIAkJRFJNX0lORk8oIlBNVSBub3Qgc3Vw cG9ydGVkIGZvciB0aGlzIEdQVS4iKTsKQEAgLTc3NSw2ICs4MDcsMTIgQEAgdm9pZCBpOTE1X3Bt dV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlpOTE1LT5wbXUudGlt ZXIuZnVuY3Rpb24gPSBpOTE1X3NhbXBsZTsKIAlpOTE1LT5wbXUuZW5hYmxlID0gMDsKIAorCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCUlOSVRfV09SSygmZW5naW5lLT5w bXUuZW5hYmxlX2J1c3lfc3RhdHMsIF9fZW5hYmxlX2J1c3lfc3RhdHMpOworCQlJTklUX0RFTEFZ RURfV09SSygmZW5naW5lLT5wbXUuZGlzYWJsZV9idXN5X3N0YXRzLAorCQkJCSAgX19kaXNhYmxl X2J1c3lfc3RhdHMpOworCX0KKwogCXJldCA9IHBlcmZfcG11X3JlZ2lzdGVyKCZpOTE1LT5wbXUu YmFzZSwgImk5MTUiLCAtMSk7CiAJaWYgKHJldCA9PSAwKQogCQlyZXR1cm47CkBAIC03OTMsNiAr ODMxLDkgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAogdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQogeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKKwogCWlmICghaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCkKIAkJcmV0 dXJuOwogCkBAIC04MDQsNiArODQ1LDExIEBAIHZvaWQgaTkxNV9wbXVfdW5yZWdpc3RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWhydGltZXJfY2FuY2VsKCZpOTE1LT5wbXUu dGltZXIpOwogCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJZmx1c2hf d29yaygmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOworCQlmbHVzaF9kZWxheWVkX3dv cmsoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cyk7CisJfQorCiAJcGVyZl9wbXVfdW5y ZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQgPSBO VUxMOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA4ZGI4M2Y1 MDRkNzAuLmVhZjFkMzFkYmYzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIElOIFRIRSBTT0ZUV0FSRS4KICAqCiAgKi8KKyNpbmNs dWRlIDxsaW51eC9zdGF0aWNfa2V5Lmg+CiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1 ZGUgImludGVsX3JpbmdidWZmZXIuaCIKQEAgLTE2MTUsNiArMTYxNiwxMCBAQCBpbnRlbF9lbmdp bmVfbG9va3VwX3VzZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1 OCBpbnN0YW5jZSkKIAlyZXR1cm4gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0YW5jZV07 CiB9CiAKK0RFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGk5MTVfZW5naW5lX3N0YXRzX2tleSk7Citz dGF0aWMgREVGSU5FX01VVEVYKGk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsKK3N0YXRpYyBpbnQg aTkxNV9lbmdpbmVfc3RhdHNfcmVmOworCiAvKioKICAqIGludGVsX2VuYWJsZV9lbmdpbmVfc3Rh dHMoKSAtIEVuYWJsZSBlbmdpbmUgYnVzeSB0cmFja2luZyBvbiBlbmdpbmUKICAqIEBlbmdpbmU6 IGVuZ2luZSB0byBlbmFibGUgc3RhdHMgY29sbGVjdGlvbgpAQCAtMTYzMCw2ICsxNjM1LDggQEAg aW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykKIAkJcmV0dXJuIC1F Tk9ERVY7CiAKKwltdXRleF9sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19tdXRleCk7CisKIAlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJaWYgKGVuZ2luZS0+ c3RhdHMuZW5hYmxlZCA9PSB+MCkKIAkJZ290byBidXN5OwpAQCAtMTYzNywxMCArMTY0NCwxNiBA QCBpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJCWVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCA9IGt0aW1lX2dldCgpOwogCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwogCisJaWYgKGk5 MTVfZW5naW5lX3N0YXRzX3JlZisrID09IDApCisJCXN0YXRpY19icmFuY2hfZW5hYmxlKCZpOTE1 X2VuZ2luZV9zdGF0c19rZXkpOworCisJbXV0ZXhfdW5sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19t dXRleCk7CisKIAlyZXR1cm4gMDsKIAogYnVzeToKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZl bmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwltdXRleF91bmxvY2soJmk5MTVfZW5naW5lX3N0 YXRzX211dGV4KTsKIAogCXJldHVybiAtRUJVU1k7CiB9CkBAIC0xNjU4LDYgKzE2NzEsNyBAQCB2 b2lkIGludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMpCiAJCXJldHVybjsK IAorCW11dGV4X2xvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsKIAlzcGluX2xvY2tfaXJx c2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJV0FSTl9PTl9PTkNFKGVuZ2luZS0+ c3RhdHMuZW5hYmxlZCA9PSAwKTsKIAlpZiAoLS1lbmdpbmUtPnN0YXRzLmVuYWJsZWQgPT0gMCkg ewpAQCAtMTY2Nyw2ICsxNjgxLDkgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+c3RhdHMudG90YWwgPSAw OwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdz KTsKKwlpZiAoLS1pOTE1X2VuZ2luZV9zdGF0c19yZWYgPT0gMCkKKwkJc3RhdGljX2JyYW5jaF9k aXNhYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCW11dGV4X3VubG9jaygmaTkxNV9lbmdp bmVfc3RhdHNfbXV0ZXgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAppbmRleCBlZjYzOGI5N2U0NmEuLjdkOTUwNmMzZWZkYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMzU1LDYgKzM1NSwyMiBAQCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzIHsKIAkJICogCQlyZXF1ZXN0ZWQuCiAJCSAqLwogCQlib29sIGJ1c3lfc3Rh dHM7CisJCS8qKgorCQkgKiBAZW5hYmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRlbSBmb3IgZW5naW5l IGJ1c3kgc3RhdHMgZW5hYmxpbmcuCisJCSAqCisJCSAqIFNpbmNlIHRoZSBhY3Rpb24gY2FuIHNs ZWVwIGl0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBmcm9tIHRoZQorCQkgKiBwZXJmIEFQSSBjYWxs YmFjay4KKwkJICovCisJCXN0cnVjdCB3b3JrX3N0cnVjdCBlbmFibGVfYnVzeV9zdGF0czsKKwkJ LyoqCisJCSAqIEBkaXNhYmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRlbSBmb3IgYnVzeSBzdGF0cyBk aXNhYmxpbmcuCisJCSAqCisJCSAqIFNhbWUgYXMgd2l0aCBAZW5hYmxlX2J1c3lfc3RhdHMgYWN0 aW9uLCB3aXRoIHRoZSBkaWZmZXJlbmNlCisJCSAqIHRoYXQgd2UgZGVsYXkgaXQgaW4gY2FzZSB0 aGVyZSBhcmUgcmFwaWQgZW5hYmxlLWRpc2FibGUKKwkJICogYWN0aW9ucywgd2hpY2ggY2FuIGhh cHBlbiBkdXJpbmcgdG9vbCBzdGFydHVwIChsaWtlIHBlcmYKKwkJICogc3RhdCkuCisJCSAqLwor CQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRpc2FibGVfYnVzeV9zdGF0czsKIAl9IHBtdTsKIAogCS8q CkBAIC04OTYsNTkgKzkxMiw2OCBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KgogaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOwogCitERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0UoaTkx NV9lbmdpbmVfc3RhdHNfa2V5KTsKKwogc3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9j b250ZXh0X2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwogCi0JaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVuYWJsZWQpID09IDAp Ci0JCXJldHVybjsKKwlpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmaTkxNV9lbmdpbmVfc3Rh dHNfa2V5KSkgeworCQlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCkgPT0gMCkK KwkJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZs YWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOwog Ci0JaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKLQkJaWYgKGVuZ2luZS0+c3RhdHMu YWN0aXZlKysgPT0gMCkKLQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGltZV9nZXQoKTsKLQkJ R0VNX0JVR19PTihlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKTsKLQl9CisJCQlpZiAoZW5naW5l LT5zdGF0cy5lbmFibGVkID4gMCkgeworCQkJCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSsrID09 IDApCisJCQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGltZV9nZXQoKTsKKwkJCQlHRU1fQlVH X09OKGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApOworCQkJfQogCi0Jc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCX0KIH0KIAogc3RhdGljIGlubGlu ZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWlmIChSRUFEX09OQ0UoZW5naW5l LT5zdGF0cy5lbmFibGVkKSA9PSAwKQotCQlyZXR1cm47Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgm ZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Ci0KLQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVk ID4gMCkgewotCQlrdGltZV90IGxhc3QsIG5vdyA9IGt0aW1lX2dldCgpOwotCi0JCWlmIChlbmdp bmUtPnN0YXRzLmFjdGl2ZSAmJiAtLWVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApIHsKLQkJCS8q Ci0JCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50IGFuZCBpbiBjYXNlIEdQ VQotCQkJICogaXMgbm93IGlkbGUgYWRkIHVwIHRvIHRoZSBydW5uaW5nIHRvdGFsLgotCQkJICov Ci0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5zdGFydCk7Ci0KLQkJCWVu Z2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5zdGF0cy50b3RhbCwKLQkJCQkJ CQlsYXN0KTsKLQkJfSBlbHNlIGlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKSB7Ci0JCQkv KgotCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUgc3RhdHMsIGNvbnRleHQgb3V0IG1pZ2h0 IGJlCi0JCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4gd2hpY2ggY2FzZSB3ZSBhY2NvdW50IGZyb20g dGhlCi0JCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMgdHVybmVkIG9uLgotCQkJICovCi0J CQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5lbmFibGVkX2F0KTsKLQotCQkJ ZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2FkZChlbmdpbmUtPnN0YXRzLnRvdGFsLAotCQkJ CQkJCWxhc3QpOworCWlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZpOTE1X2VuZ2luZV9zdGF0 c19rZXkpKSB7CisJCWlmIChSRUFEX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQor CQkJcmV0dXJuOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZs YWdzKTsKKworCQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgeworCQkJa3RpbWVfdCBs YXN0LCBub3cgPSBrdGltZV9nZXQoKTsKKworCQkJaWYgKGVuZ2luZS0+c3RhdHMuYWN0aXZlICYm CisJCQkgICAgLS1lbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKSB7CisJCQkJLyoKKwkJCQkgKiBE ZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50IGFuZCBpbgorCQkJCSAqIGNhc2UgR1BV IGlzIG5vdyBpZGxlIGFkZCB1cCB0byB0aGUgcnVubmluZworCQkJCSAqIHRvdGFsLgorCQkJCSAq LworCQkJCWxhc3QgPSBrdGltZV9zdWIobm93LCBlbmdpbmUtPnN0YXRzLnN0YXJ0KTsKKworCQkJ CWVuZ2luZS0+c3RhdHMudG90YWwgPQorCQkJCQlrdGltZV9hZGQoZW5naW5lLT5zdGF0cy50b3Rh bCwgbGFzdCk7CisJCQl9IGVsc2UgaWYgKGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApIHsKKwkJ CQkvKgorCQkJCSAqIEFmdGVyIHR1cm5pbmcgb24gZW5naW5lIHN0YXRzLCBjb250ZXh0IG91dAor CQkJCSAqIG1pZ2h0IGJlIHRoZSBmaXJzdCBldmVudCBpbiB3aGljaCBjYXNlIHdlCisJCQkJICog YWNjb3VudCBmcm9tIHRoZSB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMKKwkJCQkgKiB0dXJuZWQg b24uCisJCQkJICovCisJCQkJbGFzdCA9IGt0aW1lX3N1Yihub3csIGVuZ2luZS0+c3RhdHMuZW5h YmxlZF9hdCk7CisKKwkJCQllbmdpbmUtPnN0YXRzLnRvdGFsID0KKwkJCQkJa3RpbWVfYWRkKGVu Z2luZS0+c3RhdHMudG90YWwsIGxhc3QpOworCQkJfQogCQl9Ci0JfQogCi0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCX0KIH0KIAogaW50IGludGVs X2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLS0g CjIuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK