From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 07/10] drm/i915: Gate engine stats collection with a static key Date: Fri, 29 Sep 2017 13:34:57 +0100 Message-ID: <20170929123500.3186-8-tvrtko.ursulin@linux.intel.com> References: <20170929123500.3186-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 49A456EB7E for ; Fri, 29 Sep 2017 12:35:15 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id m72so3111319wmc.1 for ; Fri, 29 Sep 2017 05:35:14 -0700 (PDT) In-Reply-To: <20170929123500.3186-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 CldlIGFkZCBhIG5ldyBpOTE1IG9yZGVyZWQgd29ya3F1ZXVlIHRvIGJlIHVzZWQgb25seSBmb3Ig dGFza3MKbm90IG5lZWRpbmcgc3RydWN0IG11dGV4LgoKdjI6IFJlYmFzZSBhbmQgc29tZSBjb21t ZW50cy4KdjM6IFJlYmFzZS4KdjQ6IENoZWNrcGF0Y2ggZml4ZXMuCnY1OiBSZWJhc2UuCnY2OiBV c2Ugc3lzdGVtX2xvbmdfd3EgdG8gYXZvaWQgYmVpbmcgYmxvY2tlZCBieSBzdHJ1Y3RfbXV0ZXgK ICAgIHVzZXJzLgp2NzogRml4IGJhZCBjb25mbGljdCByZXNvbHV0aW9uIGZyb20gbGFzdCByZWJh c2UuIChEbWl0cnkgUm9nb3poa2luKQp2ODogUmViYXNlLgp2OToKICogRml4IHJhY2UgYmV0d2Vl biB1bm9yZGVyZWQgZW5hYmxlIGZvbGxvd2VkIGJ5IGRpc2FibGUuCiAgIChDaHJpcyBXaWxzb24p CiAqIFByZXR0aWZ5IG9yZGVyIG9mIGxvY2FsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucy4gKENocmlz IFdpbHNvbikKClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwg IDEzICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgNSAr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyAgICAgICAgIHwgIDU3ICsrKysrKysr KysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgIDE3 ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgMTAxICsr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNl cnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCAx ODdjMGZhZDFiNzkuLjFlNDNkNTk0YjU5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC03 OTUsMTIgKzc5NSwyMiBAQCBzdGF0aWMgaW50IGk5MTVfd29ya3F1ZXVlc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoZGV2X3ByaXYtPndxID09IE5VTEwpCiAJ CWdvdG8gb3V0X2VycjsKIAorCS8qCisJICogT3JkZXJlZCB3b3JrcXVldWUgZm9yIHRhc2tzIG5v dCBuZWVkaW5nIHRoZSBnbG9iYWwgbXV0ZXggYnV0CisJICogd2hpY2ggc3RpbGwgbmVlZCB0byBi ZSBzZXJpYWxpemVkLgorCSAqLworCWRldl9wcml2LT53cV9taXNjID0gYWxsb2Nfb3JkZXJlZF93 b3JrcXVldWUoImk5MTUtbWlzYyIsIDApOworCWlmIChkZXZfcHJpdi0+d3EgPT0gTlVMTCkKKwkJ Z290byBvdXRfZnJlZV93cTsKKwogCWRldl9wcml2LT5ob3RwbHVnLmRwX3dxID0gYWxsb2Nfb3Jk ZXJlZF93b3JrcXVldWUoImk5MTUtZHAiLCAwKTsKIAlpZiAoZGV2X3ByaXYtPmhvdHBsdWcuZHBf d3EgPT0gTlVMTCkKLQkJZ290byBvdXRfZnJlZV93cTsKKwkJZ290byBvdXRfZnJlZV93cV9taXNj OwogCiAJcmV0dXJuIDA7CiAKK291dF9mcmVlX3dxX21pc2M6CisJZGVzdHJveV93b3JrcXVldWUo ZGV2X3ByaXYtPndxX21pc2MpOwogb3V0X2ZyZWVfd3E6CiAJZGVzdHJveV93b3JrcXVldWUoZGV2 X3ByaXYtPndxKTsKIG91dF9lcnI6CkBAIC04MjEsNiArODMxLDcgQEAgc3RhdGljIHZvaWQgaTkx NV9lbmdpbmVzX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiBzdGF0aWMg dm9pZCBpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiB7CiAJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPmhvdHBsdWcuZHBfd3EpOwor CWRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT53cV9taXNjKTsKIAlkZXN0cm95X3dvcmtxdWV1 ZShkZXZfcHJpdi0+d3EpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAxZDBlZDE5 MWVlZDQuLmE4OGY1YmUwMjI5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMzQzLDYg KzIzNDMsMTEgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCSAqLwogCXN0cnVjdCB3b3Jr cXVldWVfc3RydWN0ICp3cTsKIAorCS8qKgorCSAqIEB3cV9taXNjOiBXb3JrcXVldWUgZm9yIHNl cmlhbGl6ZWQgdGFza3Mgbm90IG5lZWRpbmcgc3RydWN0IG11dGV4LgorCSAqLworCXN0cnVjdCB3 b3JrcXVldWVfc3RydWN0ICp3cV9taXNjOworCiAJLyogRGlzcGxheSBmdW5jdGlvbnMgKi8KIAlz dHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyBkaXNwbGF5OwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w bXUuYwppbmRleCA5M2MwZTdlYzdkNzUuLjRjOWI5YWUwOWIyMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BtdS5jCkBAIC00NTgsMTEgKzQ1OCwyMCBAQCBzdGF0aWMgdm9pZCBpOTE1X3BtdV9lbmFibGUo c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCQlHRU1fQlVHX09OKHNhbXBsZSA+PSBJOTE1X1BN VV9TQU1QTEVfQklUUyk7CiAJCUdFTV9CVUdfT04oZW5naW5lLT5wbXUuZW5hYmxlX2NvdW50W3Nh bXBsZV0gPT0gfjApOwogCQlpZiAoZW5naW5lLT5wbXUuZW5hYmxlX2NvdW50W3NhbXBsZV0rKyA9 PSAwKSB7CisJCQkvKgorCQkJICogRW5hYmxlIGVuZ2luZSBidXN5IHN0YXRzIHRyYWNraW5nIGlm IG5lZWRlZCBvcgorCQkJICogYWx0ZXJuYXRpdmVseSBjYW5jZWwgdGhlIHNjaGVkdWxlZCBkaXNh Ymxpbmcgb2YgdGhlCisJCQkgKiBzYW1lLgorCQkJICoKKwkJCSAqIElmIHRoZSBkZWxheWVkIGRp c2FibGUgd2FzIHBlbmRpbmcsIGNhbmNlbCBpdCBhbmQgaW4KKwkJCSAqIHRoaXMgY2FzZSBubyBu ZWVkIHRvIHF1ZXVlIGEgbmV3IGVuYWJsZS4KKwkJCSAqLwogCQkJaWYgKGVuZ2luZV9uZWVkc19i dXN5X3N0YXRzKGVuZ2luZSkgJiYKIAkJCSAgICAhZW5naW5lLT5wbXUuYnVzeV9zdGF0cykgewot CQkJCWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMgPQotCQkJCQlpbnRlbF9lbmFibGVfZW5naW5lX3N0 YXRzKGVuZ2luZSkgPT0gMDsKLQkJCQlXQVJOX09OX09OQ0UoIWVuZ2luZS0+cG11LmJ1c3lfc3Rh dHMpOworCQkJCWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMgPSB0cnVlOworCQkJCWlmICghY2FuY2Vs X2RlbGF5ZWRfd29yaygmZW5naW5lLT5wbXUuZGlzYWJsZV9idXN5X3N0YXRzKSkKKwkJCQkJcXVl dWVfd29yayhpOTE1LT53cV9taXNjLAorCQkJCQkJICAgJmVuZ2luZS0+cG11LmVuYWJsZV9idXN5 X3N0YXRzKTsKIAkJCX0KIAkJfQogCX0KQEAgLTUwNSw3ICs1MTQsMTUgQEAgc3RhdGljIHZvaWQg aTkxNV9wbXVfZGlzYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJCQlpZiAoIWVuZ2lu ZV9uZWVkc19idXN5X3N0YXRzKGVuZ2luZSkgJiYKIAkJCSAgICBlbmdpbmUtPnBtdS5idXN5X3N0 YXRzKSB7CiAJCQkJZW5naW5lLT5wbXUuYnVzeV9zdGF0cyA9IGZhbHNlOwotCQkJCWludGVsX2Rp c2FibGVfZW5naW5lX3N0YXRzKGVuZ2luZSk7CisJCQkJLyoKKwkJCQkgKiBXZSByZXF1ZXN0IGEg ZGVsYXllZCBkaXNhYmxlIHRvIGhhbmRsZSB0aGUKKwkJCQkgKiByYXBpZCBvbi9vZmYgY3ljbGVz IG9uIGV2ZW50cyB3aGljaCBjYW4KKwkJCQkgKiBoYXBwZW4gd2hlbiB0b29scyBsaWtlIHBlcmYg c3RhdCBzdGFydCBpbiBhCisJCQkJICogbmljZXIgd2F5LgorCQkJCSAqLworCQkJCXF1ZXVlX2Rl bGF5ZWRfd29yayhpOTE1LT53cV9taXNjLAorCQkJCQkJICAgJmVuZ2luZS0+cG11LmRpc2FibGVf YnVzeV9zdGF0cywKKwkJCQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKIAkJ CX0KIAkJfQogCX0KQEAgLTY4OSw4ICs3MDYsMjYgQEAgc3RhdGljIGludCBpOTE1X3BtdV9jcHVf b2ZmbGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgX19lbmFibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJY29u dGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmVuYWJsZV9idXN5X3N0YXRzKTsK KworCVdBUk5fT05fT05DRShpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKGVuZ2luZSkpOworfQor CitzdGF0aWMgdm9pZCBfX2Rpc2FibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkgICAgICAgY29udGFp bmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmRpc2FibGVfYnVzeV9zdGF0cy53b3Jr KTsKKworCWludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKGVuZ2luZSk7Cit9CisKIHZvaWQgaTkx NV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CisJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCWlu dCByZXQ7CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDIpIHsKQEAgLTcyNSw2ICs3NjAsMTIg QEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IAlpOTE1LT5wbXUudGltZXIuZnVuY3Rpb24gPSBpOTE1X3NhbXBsZTsKIAlpOTE1LT5wbXUuZW5h YmxlID0gMDsKIAorCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCUlOSVRf V09SSygmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMsIF9fZW5hYmxlX2J1c3lfc3RhdHMp OworCQlJTklUX0RFTEFZRURfV09SSygmZW5naW5lLT5wbXUuZGlzYWJsZV9idXN5X3N0YXRzLAor CQkJCSAgX19kaXNhYmxlX2J1c3lfc3RhdHMpOworCX0KKwogCXJldCA9IHBlcmZfcG11X3JlZ2lz dGVyKCZpOTE1LT5wbXUuYmFzZSwgImk5MTUiLCAtMSk7CiAJaWYgKHJldCA9PSAwKQogCQlyZXR1 cm47CkBAIC03NDMsNiArNzg0LDkgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQogeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwogCWlmICghaTkxNS0+cG11LmJhc2UuZXZl bnRfaW5pdCkKIAkJcmV0dXJuOwogCkBAIC03NTQsNiArNzk4LDExIEBAIHZvaWQgaTkxNV9wbXVf dW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWhydGltZXJfY2Fu Y2VsKCZpOTE1LT5wbXUudGltZXIpOwogCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKKwkJZmx1c2hfd29yaygmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMpOworCQlm bHVzaF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cyk7CisJfQor CiAJcGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogCWk5MTUtPnBtdS5iYXNl LmV2ZW50X2luaXQgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YwppbmRleCA4ZGI4M2Y1MDRkNzAuLmVhZjFkMzFkYmYzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIElOIFRIRSBTT0ZUV0FSRS4K ICAqCiAgKi8KKyNpbmNsdWRlIDxsaW51eC9zdGF0aWNfa2V5Lmg+CiAKICNpbmNsdWRlICJpOTE1 X2Rydi5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKQEAgLTE2MTUsNiArMTYxNiwx MCBAQCBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSkKIAlyZXR1cm4gaTkxNS0+ZW5naW5lX2NsYXNzW2Ns YXNzXVtpbnN0YW5jZV07CiB9CiAKK0RFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGk5MTVfZW5naW5l X3N0YXRzX2tleSk7CitzdGF0aWMgREVGSU5FX01VVEVYKGk5MTVfZW5naW5lX3N0YXRzX211dGV4 KTsKK3N0YXRpYyBpbnQgaTkxNV9lbmdpbmVfc3RhdHNfcmVmOworCiAvKioKICAqIGludGVsX2Vu YWJsZV9lbmdpbmVfc3RhdHMoKSAtIEVuYWJsZSBlbmdpbmUgYnVzeSB0cmFja2luZyBvbiBlbmdp bmUKICAqIEBlbmdpbmU6IGVuZ2luZSB0byBlbmFibGUgc3RhdHMgY29sbGVjdGlvbgpAQCAtMTYz MCw2ICsxNjM1LDggQEAgaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0 cykKIAkJcmV0dXJuIC1FTk9ERVY7CiAKKwltdXRleF9sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19t dXRleCk7CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7 CiAJaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSB+MCkKIAkJZ290byBidXN5OwpAQCAtMTYz NywxMCArMTY0NCwxNiBAQCBpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCA9IGt0aW1l X2dldCgpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxh Z3MpOwogCisJaWYgKGk5MTVfZW5naW5lX3N0YXRzX3JlZisrID09IDApCisJCXN0YXRpY19icmFu Y2hfZW5hYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCisJbXV0ZXhfdW5sb2NrKCZpOTE1 X2VuZ2luZV9zdGF0c19tdXRleCk7CisKIAlyZXR1cm4gMDsKIAogYnVzeToKIAlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwltdXRleF91bmxvY2so Jmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsKIAogCXJldHVybiAtRUJVU1k7CiB9CkBAIC0xNjU4 LDYgKzE2NzEsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlz dHMpCiAJCXJldHVybjsKIAorCW11dGV4X2xvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJV0FSTl9P Tl9PTkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKTsKIAlpZiAoLS1lbmdpbmUtPnN0YXRz LmVuYWJsZWQgPT0gMCkgewpAQCAtMTY2Nyw2ICsxNjgxLDkgQEAgdm9pZCBpbnRlbF9kaXNhYmxl X2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+ c3RhdHMudG90YWwgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0 YXRzLmxvY2ssIGZsYWdzKTsKKwlpZiAoLS1pOTE1X2VuZ2luZV9zdGF0c19yZWYgPT0gMCkKKwkJ c3RhdGljX2JyYW5jaF9kaXNhYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCW11dGV4X3Vu bG9jaygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCAwZjhjY2IyNDM0MDcuLjJiZTZjYTRhNThhNCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMzU2LDYgKzM1Niwy MiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkJICogCQlyZXF1ZXN0ZWQuCiAJCSAqLwog CQlib29sIGJ1c3lfc3RhdHM7CisJCS8qKgorCQkgKiBAZW5hYmxlX2J1c3lfc3RhdHM6IFdvcmsg aXRlbSBmb3IgZW5naW5lIGJ1c3kgc3RhdHMgZW5hYmxpbmcuCisJCSAqCisJCSAqIFNpbmNlIHRo ZSBhY3Rpb24gY2FuIHNsZWVwIGl0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBmcm9tIHRoZQorCQkg KiBwZXJmIEFQSSBjYWxsYmFjay4KKwkJICovCisJCXN0cnVjdCB3b3JrX3N0cnVjdCBlbmFibGVf YnVzeV9zdGF0czsKKwkJLyoqCisJCSAqIEBkaXNhYmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRlbSBm b3IgYnVzeSBzdGF0cyBkaXNhYmxpbmcuCisJCSAqCisJCSAqIFNhbWUgYXMgd2l0aCBAZW5hYmxl X2J1c3lfc3RhdHMgYWN0aW9uLCB3aXRoIHRoZSBkaWZmZXJlbmNlCisJCSAqIHRoYXQgd2UgZGVs YXkgaXQgaW4gY2FzZSB0aGVyZSBhcmUgcmFwaWQgZW5hYmxlLWRpc2FibGUKKwkJICogYWN0aW9u cywgd2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgdG9vbCBzdGFydHVwIChsaWtlIHBlcmYKKwkJICog c3RhdCkuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRpc2FibGVfYnVzeV9zdGF0czsK IAl9IHBtdTsKIAogCS8qCkBAIC04OTcsNTkgKzkxMyw2OCBAQCBib29sIGludGVsX2VuZ2luZV9j 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+c3RhdHMudG90YWwsIGxhc3QpOworCQkJfQogCQl9Ci0JfQog Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCX0K IH0KIAogaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKLS0gCjIuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK