From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v10 07/10] drm/i915: Gate engine stats collection with a static key Date: Thu, 5 Oct 2017 14:05:26 +0100 Message-ID: <20171005130526.28624-1-tvrtko.ursulin@linux.intel.com> References: <150702584551.20052.11836083647133754478@mail.alporthouse.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 239666E2CE for ; Thu, 5 Oct 2017 13:05:34 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id z96so8308096wrb.0 for ; Thu, 05 Oct 2017 06:05:34 -0700 (PDT) In-Reply-To: <150702584551.20052.11836083647133754478@mail.alporthouse.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 IFdpbHNvbikKdjEwOgogQ2hyaXMgV2lsc29uOgogICogRml4IHdvcmtxdWV1ZSBhbGxvY2F0aW9u IGZhaWx1cmUgaGFuZGxpbmcuCiAgKiBFeHBhbmQgY29tbWVudCBhYm91dCBjcml0aWNhbCB3b3Jr cXVldWUgb3JkZXJpbmcuCiAgKiBBZGQgc29tZSBHRU1fQlVHX09OcyB0byBkb2N1bWVudCBpbXBv c3NpYmxlIGNvbmRpdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAg ICAgIHwgIDEzICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8 ICAgNSArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyAgICAgICAgIHwgIDY1ICsr KysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YyAgfCAgMTcgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgg fCAxMDEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwg MTU4IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j CmluZGV4IGQzNzNhODQwNTY2YS4uMzg1MzAzOGM2ZmRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKQEAgLTgwNCwxMiArODA0LDIyIEBAIHN0YXRpYyBpbnQgaTkxNV93b3JrcXVldWVzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChkZXZfcHJpdi0+d3EgPT0g TlVMTCkKIAkJZ290byBvdXRfZXJyOwogCisJLyoKKwkgKiBPcmRlcmVkIHdvcmtxdWV1ZSBmb3Ig dGFza3Mgbm90IG5lZWRpbmcgdGhlIGdsb2JhbCBtdXRleCBidXQKKwkgKiB3aGljaCBzdGlsbCBu ZWVkIHRvIGJlIHNlcmlhbGl6ZWQuCisJICovCisJZGV2X3ByaXYtPndxX21pc2MgPSBhbGxvY19v cmRlcmVkX3dvcmtxdWV1ZSgiaTkxNS1taXNjIiwgMCk7CisJaWYgKGRldl9wcml2LT53cV9taXNj ID09IE5VTEwpCisJCWdvdG8gb3V0X2ZyZWVfd3E7CisKIAlkZXZfcHJpdi0+aG90cGx1Zy5kcF93 cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWRwIiwgMCk7CiAJaWYgKGRldl9wcml2 LT5ob3RwbHVnLmRwX3dxID09IE5VTEwpCi0JCWdvdG8gb3V0X2ZyZWVfd3E7CisJCWdvdG8gb3V0 X2ZyZWVfd3FfbWlzYzsKIAogCXJldHVybiAwOwogCitvdXRfZnJlZV93cV9taXNjOgorCWRlc3Ry b3lfd29ya3F1ZXVlKGRldl9wcml2LT53cV9taXNjKTsKIG91dF9mcmVlX3dxOgogCWRlc3Ryb3lf d29ya3F1ZXVlKGRldl9wcml2LT53cSk7CiBvdXRfZXJyOgpAQCAtODMwLDYgKzg0MCw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfZW5naW5lc19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogc3RhdGljIHZvaWQgaTkxNV93b3JrcXVldWVzX2NsZWFudXAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewogCWRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT5ob3Rw bHVnLmRwX3dxKTsKKwlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3FfbWlzYyk7CiAJZGVz dHJveV93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggMmRhYmU2NzFiYjUwLi5lZmEzYTg0MjNjY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtMjM0OSw2ICsyMzQ5LDExIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkgKi8K IAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3E7CiAKKwkvKioKKwkgKiBAd3FfbWlzYzogV29y a3F1ZXVlIGZvciBzZXJpYWxpemVkIHRhc2tzIG5vdCBuZWVkaW5nIHN0cnVjdCBtdXRleC4KKwkg Ki8KKwlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3FfbWlzYzsKKwogCS8qIERpc3BsYXkgZnVu Y3Rpb25zICovCiAJc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3MgZGlzcGxheTsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcG11LmMKaW5kZXggMjY3MWUzNjQwNjM5Li5kNTUyZTQxNWJlY2QgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wbXUuYwpAQCAtNDU4LDExICs0NTgsMjAgQEAgc3RhdGljIHZvaWQgaTkx NV9wbXVfZW5hYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIAkJR0VNX0JVR19PTihzYW1w bGUgPj0gSTkxNV9QTVVfU0FNUExFX0JJVFMpOwogCQlHRU1fQlVHX09OKGVuZ2luZS0+cG11LmVu YWJsZV9jb3VudFtzYW1wbGVdID09IH4wKTsKIAkJaWYgKGVuZ2luZS0+cG11LmVuYWJsZV9jb3Vu dFtzYW1wbGVdKysgPT0gMCkgeworCQkJLyoKKwkJCSAqIEVuYWJsZSBlbmdpbmUgYnVzeSBzdGF0 cyB0cmFja2luZyBpZiBuZWVkZWQgb3IKKwkJCSAqIGFsdGVybmF0aXZlbHkgY2FuY2VsIHRoZSBz Y2hlZHVsZWQgZGlzYWJsaW5nIG9mIHRoZQorCQkJICogc2FtZS4KKwkJCSAqCisJCQkgKiBJZiB0 aGUgZGVsYXllZCBkaXNhYmxlIHdhcyBwZW5kaW5nLCBjYW5jZWwgaXQgYW5kIGluCisJCQkgKiB0 aGlzIGNhc2Ugbm8gbmVlZCB0byBxdWV1ZSBhIG5ldyBlbmFibGUuCisJCQkgKi8KIAkJCWlmIChl bmdpbmVfbmVlZHNfYnVzeV9zdGF0cyhlbmdpbmUpICYmCiAJCQkgICAgIWVuZ2luZS0+cG11LmJ1 c3lfc3RhdHMpIHsKLQkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0KLQkJCQkJaW50ZWxfZW5h YmxlX2VuZ2luZV9zdGF0cyhlbmdpbmUpID09IDA7Ci0JCQkJV0FSTl9PTl9PTkNFKCFlbmdpbmUt PnBtdS5idXN5X3N0YXRzKTsKKwkJCQllbmdpbmUtPnBtdS5idXN5X3N0YXRzID0gdHJ1ZTsKKwkJ CQlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0 cykpCisJCQkJCXF1ZXVlX3dvcmsoaTkxNS0+d3FfbWlzYywKKwkJCQkJCSAgICZlbmdpbmUtPnBt dS5lbmFibGVfYnVzeV9zdGF0cyk7CiAJCQl9CiAJCX0KIAl9CkBAIC01MDUsNyArNTE0LDIyIEBA IHN0YXRpYyB2b2lkIGk5MTVfcG11X2Rpc2FibGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQog CQkJaWYgKCFlbmdpbmVfbmVlZHNfYnVzeV9zdGF0cyhlbmdpbmUpICYmCiAJCQkgICAgZW5naW5l LT5wbXUuYnVzeV9zdGF0cykgewogCQkJCWVuZ2luZS0+cG11LmJ1c3lfc3RhdHMgPSBmYWxzZTsK LQkJCQlpbnRlbF9kaXNhYmxlX2VuZ2luZV9zdGF0cyhlbmdpbmUpOworCQkJCS8qCisJCQkJICog V2UgcmVxdWVzdCBhIGRlbGF5ZWQgZGlzYWJsZSB0byBoYW5kbGUgdGhlCisJCQkJICogcmFwaWQg b24vb2ZmIGN5Y2xlcyBvbiBldmVudHMsIHdoaWNoIGNhbgorCQkJCSAqIGhhcHBlbiB3aGVuIHRv b2xzIGxpa2UgcGVyZiBzdGF0IHN0YXJ0LCBpbiBhCisJCQkJICogbmljZXIgd2F5LgorCQkJCSAq CisJCQkJICogUE1VIGVuYWJsZSBhbmQgZGlzYWJsZSBjYWxsYmFja3MgYXJlCisJCQkJICogc2Vy aWFsaXplZCB3aXRoIHRoZSBzcGlubG9jaywgYW5kIHNpbmNlIHdlIGRvCisJCQkJICogdGhlbSBp biBkZWNvdXBsZWQgZmFzaGlvbiBmcm9tIHdvcmtlcnMsIGl0IGlzCisJCQkJICogY3JpdGljYWwg dG8gdXNlIGFuIG9yZGVyZWQgd29yayBxdWV1ZSB0bworCQkJCSAqIHByZXNlcnZlIHRoaXMgb3Jk ZXJpbmcgYmV0d2VlbiB0aGUgdHdvCisJCQkJICogZXZlbnRzLgorCQkJCSAqLworCQkJCXF1ZXVl X2RlbGF5ZWRfd29yayhpOTE1LT53cV9taXNjLAorCQkJCQkJICAgJmVuZ2luZS0+cG11LmRpc2Fi bGVfYnVzeV9zdGF0cywKKwkJCQkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsK IAkJCX0KIAkJfQogCX0KQEAgLTY4OSw4ICs3MTMsMjYgQEAgc3RhdGljIGludCBpOTE1X3BtdV9j cHVfb2ZmbGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKIAly ZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgX19lbmFibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkJ Y29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmVuYWJsZV9idXN5X3N0YXRz KTsKKworCVdBUk5fT05fT05DRShpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKGVuZ2luZSkpOwor fQorCitzdGF0aWMgdm9pZCBfX2Rpc2FibGVfYnVzeV9zdGF0cyhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KKwkgICAgICAgY29u dGFpbmVyX29mKHdvcmssIHR5cGVvZigqZW5naW5lKSwgcG11LmRpc2FibGVfYnVzeV9zdGF0cy53 b3JrKTsKKworCWludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKGVuZ2luZSk7Cit9CisKIHZvaWQg aTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CisJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwog CWludCByZXQ7CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUpIDw9IDIpIHsKQEAgLTcyNSw2ICs3Njcs MTIgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIAlpOTE1LT5wbXUudGltZXIuZnVuY3Rpb24gPSBpOTE1X3NhbXBsZTsKIAlpOTE1LT5wbXUu ZW5hYmxlID0gMDsKIAorCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCUlO SVRfV09SSygmZW5naW5lLT5wbXUuZW5hYmxlX2J1c3lfc3RhdHMsIF9fZW5hYmxlX2J1c3lfc3Rh dHMpOworCQlJTklUX0RFTEFZRURfV09SSygmZW5naW5lLT5wbXUuZGlzYWJsZV9idXN5X3N0YXRz LAorCQkJCSAgX19kaXNhYmxlX2J1c3lfc3RhdHMpOworCX0KKwogCXJldCA9IHBlcmZfcG11X3Jl Z2lzdGVyKCZpOTE1LT5wbXUuYmFzZSwgImk5MTUiLCAtMSk7CiAJaWYgKHJldCA9PSAwKQogCQly ZXR1cm47CkBAIC03NDMsNiArNzkxLDkgQEAgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwogCWlmICghaTkxNS0+cG11LmJhc2Uu ZXZlbnRfaW5pdCkKIAkJcmV0dXJuOwogCkBAIC03NTQsNiArODA1LDEyIEBAIHZvaWQgaTkxNV9w bXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWhydGltZXJf Y2FuY2VsKCZpOTE1LT5wbXUudGltZXIpOwogCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkx NSwgaWQpIHsKKwkJR0VNX0JVR19PTihlbmdpbmUtPnBtdS5idXN5X3N0YXRzKTsKKwkJR0VNX0JV R19PTihmbHVzaF93b3JrKCZlbmdpbmUtPnBtdS5lbmFibGVfYnVzeV9zdGF0cykpOworCQlmbHVz aF9kZWxheWVkX3dvcmsoJmVuZ2luZS0+cG11LmRpc2FibGVfYnVzeV9zdGF0cyk7CisJfQorCiAJ cGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogCWk5MTUtPnBtdS5iYXNlLmV2 ZW50X2luaXQgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpp bmRleCA1M2QzYjhmM2MyMjIuLmNiZmRlMTE0OTgyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMKQEAgLTIxLDYgKzIxLDcgQEAKICAqIElOIFRIRSBTT0ZUV0FSRS4KICAq CiAgKi8KKyNpbmNsdWRlIDxsaW51eC9zdGF0aWNfa2V5Lmg+CiAKICNpbmNsdWRlICJpOTE1X2Ry di5oIgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKQEAgLTE2NTMsNiArMTY1NCwxMCBA QCBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IHU4IGNsYXNzLCB1OCBpbnN0YW5jZSkKIAlyZXR1cm4gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNz XVtpbnN0YW5jZV07CiB9CiAKK0RFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGk5MTVfZW5naW5lX3N0 YXRzX2tleSk7CitzdGF0aWMgREVGSU5FX01VVEVYKGk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsK K3N0YXRpYyBpbnQgaTkxNV9lbmdpbmVfc3RhdHNfcmVmOworCiAvKioKICAqIGludGVsX2VuYWJs ZV9lbmdpbmVfc3RhdHMoKSAtIEVuYWJsZSBlbmdpbmUgYnVzeSB0cmFja2luZyBvbiBlbmdpbmUK ICAqIEBlbmdpbmU6IGVuZ2luZSB0byBlbmFibGUgc3RhdHMgY29sbGVjdGlvbgpAQCAtMTY2OCw2 ICsxNjczLDggQEAgaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykK IAkJcmV0dXJuIC1FTk9ERVY7CiAKKwltdXRleF9sb2NrKCZpOTE1X2VuZ2luZV9zdGF0c19tdXRl eCk7CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJ aWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSB+MCkKIAkJZ290byBidXN5OwpAQCAtMTY3NSwx MCArMTY4MiwxNiBAQCBpbnQgaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+c3RhdHMuZW5hYmxlZF9hdCA9IGt0aW1lX2dl dCgpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3Mp OwogCisJaWYgKGk5MTVfZW5naW5lX3N0YXRzX3JlZisrID09IDApCisJCXN0YXRpY19icmFuY2hf ZW5hYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCisJbXV0ZXhfdW5sb2NrKCZpOTE1X2Vu Z2luZV9zdGF0c19tdXRleCk7CisKIAlyZXR1cm4gMDsKIAogYnVzeToKIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRzLmxvY2ssIGZsYWdzKTsKKwltdXRleF91bmxvY2soJmk5 MTVfZW5naW5lX3N0YXRzX211dGV4KTsKIAogCXJldHVybiAtRUJVU1k7CiB9CkBAIC0xNjk2LDYg KzE3MDksNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMp CiAJCXJldHVybjsKIAorCW11dGV4X2xvY2soJmk5MTVfZW5naW5lX3N0YXRzX211dGV4KTsKIAlz cGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CiAJV0FSTl9PTl9P TkNFKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA9PSAwKTsKIAlpZiAoLS1lbmdpbmUtPnN0YXRzLmVu YWJsZWQgPT0gMCkgewpAQCAtMTcwNSw2ICsxNzE5LDkgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2Vu Z2luZV9zdGF0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWVuZ2luZS0+c3Rh dHMudG90YWwgPSAwOwogCX0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnN0YXRz LmxvY2ssIGZsYWdzKTsKKwlpZiAoLS1pOTE1X2VuZ2luZV9zdGF0c19yZWYgPT0gMCkKKwkJc3Rh dGljX2JyYW5jaF9kaXNhYmxlKCZpOTE1X2VuZ2luZV9zdGF0c19rZXkpOworCW11dGV4X3VubG9j aygmaTkxNV9lbmdpbmVfc3RhdHNfbXV0ZXgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCBlNjFhYjRmM2RjOTAuLmFkY2M3OWQyZTQxNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMzYxLDYgKzM2MSwyMiBA QCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkJICogCQlyZXF1ZXN0ZWQuCiAJCSAqLwogCQli b29sIGJ1c3lfc3RhdHM7CisJCS8qKgorCQkgKiBAZW5hYmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRl bSBmb3IgZW5naW5lIGJ1c3kgc3RhdHMgZW5hYmxpbmcuCisJCSAqCisJCSAqIFNpbmNlIHRoZSBh Y3Rpb24gY2FuIHNsZWVwIGl0IG5lZWRzIHRvIGJlIGRlY291cGxlZCBmcm9tIHRoZQorCQkgKiBw ZXJmIEFQSSBjYWxsYmFjay4KKwkJICovCisJCXN0cnVjdCB3b3JrX3N0cnVjdCBlbmFibGVfYnVz eV9zdGF0czsKKwkJLyoqCisJCSAqIEBkaXNhYmxlX2J1c3lfc3RhdHM6IFdvcmsgaXRlbSBmb3Ig YnVzeSBzdGF0cyBkaXNhYmxpbmcuCisJCSAqCisJCSAqIFNhbWUgYXMgd2l0aCBAZW5hYmxlX2J1 c3lfc3RhdHMgYWN0aW9uLCB3aXRoIHRoZSBkaWZmZXJlbmNlCisJCSAqIHRoYXQgd2UgZGVsYXkg aXQgaW4gY2FzZSB0aGVyZSBhcmUgcmFwaWQgZW5hYmxlLWRpc2FibGUKKwkJICogYWN0aW9ucywg d2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgdG9vbCBzdGFydHVwIChsaWtlIHBlcmYKKwkJICogc3Rh dCkuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3JrIGRpc2FibGVfYnVzeV9zdGF0czsKIAl9 IHBtdTsKIAogCS8qCkBAIC05MDIsNTkgKzkxOCw2OCBAQCBib29sIGludGVsX2VuZ2luZV9jYW5f c3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKgogaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOwogCitERUNMQVJFX1NUQVRJQ19L RVlfRkFMU0UoaTkxNV9lbmdpbmVfc3RhdHNfa2V5KTsKKwogc3RhdGljIGlubGluZSB2b2lkIGlu dGVsX2VuZ2luZV9jb250ZXh0X2luKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKFJFQURfT05DRShlbmdpbmUtPnN0YXRzLmVu YWJsZWQpID09IDApCi0JCXJldHVybjsKKwlpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmaTkx NV9lbmdpbmVfc3RhdHNfa2V5KSkgeworCQlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+c3RhdHMuZW5h YmxlZCkgPT0gMCkKKwkJCXJldHVybjsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0 YXRzLmxvY2ssIGZsYWdzKTsKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+c3RhdHMubG9j aywgZmxhZ3MpOwogCi0JaWYgKGVuZ2luZS0+c3RhdHMuZW5hYmxlZCA+IDApIHsKLQkJaWYgKGVu Z2luZS0+c3RhdHMuYWN0aXZlKysgPT0gMCkKLQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGlt ZV9nZXQoKTsKLQkJR0VNX0JVR19PTihlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKTsKLQl9CisJ CQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgeworCQkJCWlmIChlbmdpbmUtPnN0YXRz LmFjdGl2ZSsrID09IDApCisJCQkJCWVuZ2luZS0+c3RhdHMuc3RhcnQgPSBrdGltZV9nZXQoKTsK KwkJCQlHRU1fQlVHX09OKGVuZ2luZS0+c3RhdHMuYWN0aXZlID09IDApOworCQkJfQogCi0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCX0KIH0KIAog c3RhdGljIGlubGluZSB2b2lkIGludGVsX2VuZ2luZV9jb250ZXh0X291dChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWlmIChSRUFE X09OQ0UoZW5naW5lLT5zdGF0cy5lbmFibGVkKSA9PSAwKQotCQlyZXR1cm47Ci0KLQlzcGluX2xv Y2tfaXJxc2F2ZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7Ci0KLQlpZiAoZW5naW5lLT5z dGF0cy5lbmFibGVkID4gMCkgewotCQlrdGltZV90IGxhc3QsIG5vdyA9IGt0aW1lX2dldCgpOwot Ci0JCWlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSAmJiAtLWVuZ2luZS0+c3RhdHMuYWN0aXZlID09 IDApIHsKLQkJCS8qCi0JCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50IGFu ZCBpbiBjYXNlIEdQVQotCQkJICogaXMgbm93IGlkbGUgYWRkIHVwIHRvIHRoZSBydW5uaW5nIHRv dGFsLgotCQkJICovCi0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5zdGFy dCk7Ci0KLQkJCWVuZ2luZS0+c3RhdHMudG90YWwgPSBrdGltZV9hZGQoZW5naW5lLT5zdGF0cy50 b3RhbCwKLQkJCQkJCQlsYXN0KTsKLQkJfSBlbHNlIGlmIChlbmdpbmUtPnN0YXRzLmFjdGl2ZSA9 PSAwKSB7Ci0JCQkvKgotCQkJICogQWZ0ZXIgdHVybmluZyBvbiBlbmdpbmUgc3RhdHMsIGNvbnRl eHQgb3V0IG1pZ2h0IGJlCi0JCQkgKiB0aGUgZmlyc3QgZXZlbnQgaW4gd2hpY2ggY2FzZSB3ZSBh Y2NvdW50IGZyb20gdGhlCi0JCQkgKiB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMgdHVybmVkIG9u LgotCQkJICovCi0JCQlsYXN0ID0ga3RpbWVfc3ViKG5vdywgZW5naW5lLT5zdGF0cy5lbmFibGVk X2F0KTsKLQotCQkJZW5naW5lLT5zdGF0cy50b3RhbCA9IGt0aW1lX2FkZChlbmdpbmUtPnN0YXRz LnRvdGFsLAotCQkJCQkJCWxhc3QpOworCWlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZpOTE1 X2VuZ2luZV9zdGF0c19rZXkpKSB7CisJCWlmIChSRUFEX09OQ0UoZW5naW5lLT5zdGF0cy5lbmFi bGVkKSA9PSAwKQorCQkJcmV0dXJuOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnN0 YXRzLmxvY2ssIGZsYWdzKTsKKworCQlpZiAoZW5naW5lLT5zdGF0cy5lbmFibGVkID4gMCkgewor CQkJa3RpbWVfdCBsYXN0LCBub3cgPSBrdGltZV9nZXQoKTsKKworCQkJaWYgKGVuZ2luZS0+c3Rh dHMuYWN0aXZlICYmCisJCQkgICAgLS1lbmdpbmUtPnN0YXRzLmFjdGl2ZSA9PSAwKSB7CisJCQkJ LyoKKwkJCQkgKiBEZWNyZW1lbnQgdGhlIGFjdGl2ZSBjb250ZXh0IGNvdW50IGFuZCBpbgorCQkJ CSAqIGNhc2UgR1BVIGlzIG5vdyBpZGxlIGFkZCB1cCB0byB0aGUgcnVubmluZworCQkJCSAqIHRv dGFsLgorCQkJCSAqLworCQkJCWxhc3QgPSBrdGltZV9zdWIobm93LCBlbmdpbmUtPnN0YXRzLnN0 YXJ0KTsKKworCQkJCWVuZ2luZS0+c3RhdHMudG90YWwgPQorCQkJCQlrdGltZV9hZGQoZW5naW5l LT5zdGF0cy50b3RhbCwgbGFzdCk7CisJCQl9IGVsc2UgaWYgKGVuZ2luZS0+c3RhdHMuYWN0aXZl ID09IDApIHsKKwkJCQkvKgorCQkJCSAqIEFmdGVyIHR1cm5pbmcgb24gZW5naW5lIHN0YXRzLCBj b250ZXh0IG91dAorCQkJCSAqIG1pZ2h0IGJlIHRoZSBmaXJzdCBldmVudCBpbiB3aGljaCBjYXNl IHdlCisJCQkJICogYWNjb3VudCBmcm9tIHRoZSB0aW1lIHN0YXRzIGdhdGhlcmluZyB3YXMKKwkJ CQkgKiB0dXJuZWQgb24uCisJCQkJICovCisJCQkJbGFzdCA9IGt0aW1lX3N1Yihub3csIGVuZ2lu ZS0+c3RhdHMuZW5hYmxlZF9hdCk7CisKKwkJCQllbmdpbmUtPnN0YXRzLnRvdGFsID0KKwkJCQkJ a3RpbWVfYWRkKGVuZ2luZS0+c3RhdHMudG90YWwsIGxhc3QpOworCQkJfQogCQl9Ci0JfQogCi0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT5zdGF0cy5sb2NrLCBmbGFncyk7CisJCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+c3RhdHMubG9jaywgZmxhZ3MpOworCX0KIH0K IAogaW50IGludGVsX2VuYWJsZV9lbmdpbmVfc3RhdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKLS0gCjIuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK