From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC 01/14] RFC drm/i915: Expose a PMU interface for perf queries Date: Tue, 18 Jul 2017 15:36:05 +0100 Message-ID: <20170718143618.12254-2-tvrtko.ursulin@linux.intel.com> References: <20170718143618.12254-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-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 11A936E0FB for ; Tue, 18 Jul 2017 14:36:34 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id y67so3147490wrb.3 for ; Tue, 18 Jul 2017 07:36:33 -0700 (PDT) In-Reply-To: <20170718143618.12254-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 Cc: Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpUaGUgZmlyc3Qg Z29hbCBpcyB0byBiZSBhYmxlIHRvIG1lYXN1cmUgR1BVIChhbmQgaW52aWR1YWwgcmluZykgYnVz eW5lc3MKd2l0aG91dCBoYXZpbmcgdG8gcG9sbCByZWdpc3RlcnMgZnJvbSB1c2Vyc3BhY2UuIChX aGljaCBub3Qgb25seSBpbmN1cnMKaG9sZGluZyB0aGUgZm9yY2V3YWtlIGxvY2sgaW5kZWZpbml0 ZWx5LCBwZXJ0dXJiaW5nIHRoZSBzeXN0ZW0sIGJ1dCBhbHNvCnJ1bnMgdGhlIHJpc2sgb2YgaGFu Z2luZyB0aGUgbWFjaGluZS4pIEFzIGFuIGFsdGVybmF0aXZlIHdlIGNhbiB1c2UgdGhlCnBlcmYg ZXZlbnQgY291bnRlciBpbnRlcmZhY2UgdG8gc2FtcGxlIHRoZSByaW5nIHJlZ2lzdGVycyBwZXJp b2RpY2FsbHkKYW5kIHNlbmQgdGhvc2UgcmVzdWx0cyB0byB1c2Vyc3BhY2UuCgpUbyBiZSBhYmxl IHRvIGRvIHNvLCB3ZSBuZWVkIHRvIGV4cG9ydCB0aGUgdHdvIHN5bWJvbHMgZnJvbQprZXJuZWwv ZXZlbnRzL2NvcmUuYyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBhIFBNVSBkZXZpY2UuCgp2 MjogVXNlIGEgY29tbW9uIHRpbWVyIGZvciB0aGUgcmluZyBzYW1wbGluZy4KClNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgIDIzICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5j ICAgICAgICAgfCA0NTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMiArCiBpbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNDEgKysrCiBrZXJuZWwvZXZlbnRzL2NvcmUuYyAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCA1MjIgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGY4MjI3MzE4ZGNhZi4uMWM3MjAwMTNkYzQyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtMjYsNiArMjYsNyBAQCBpOTE1LXkgOj0gaTkxNV9kcnYubyBc CiAKIGk5MTUtJChDT05GSUdfQ09NUEFUKSAgICs9IGk5MTVfaW9jMzIubwogaTkxNS0kKENPTkZJ R19ERUJVR19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8gaW50ZWxfcGlwZV9jcmMubworaTkxNS0kKENP TkZJR19QRVJGX0VWRU5UUykgKz0gaTkxNV9wbXUubwogCiAjIEdFTSBjb2RlCiBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZDMxMGQ4MjQ1 ZGNhLi5mMThjZTUxOWY2YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMTE5NCw2ICsx MTk0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYt PmRybTsKIAogCWk5MTVfZ2VtX3Nocmlua2VyX2luaXQoZGV2X3ByaXYpOworCWk5MTVfcG11X3Jl Z2lzdGVyKGRldl9wcml2KTsKIAogCS8qCiAJICogTm90aWZ5IGEgdmFsaWQgc3VyZmFjZSBhZnRl ciBtb2Rlc2V0dGluZywKQEAgLTEyNDcsNiArMTI0OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJp dmVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVs X29wcmVnaW9uX3VucmVnaXN0ZXIoZGV2X3ByaXYpOwogCiAJaTkxNV9wZXJmX3VucmVnaXN0ZXIo ZGV2X3ByaXYpOworCWk5MTVfcG11X3VucmVnaXN0ZXIoZGV2X3ByaXYpOwogCiAJaTkxNV90ZWFy ZG93bl9zeXNmcyhkZXZfcHJpdik7CiAJaTkxNV9ndWNfbG9nX3VucmVnaXN0ZXIoZGV2X3ByaXYp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggN2M2ZmFiMDhhMmU2Li5kZTUxODUwM2UwMzMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPGxp bnV4L2hhc2guaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlbC1pb21tdS5oPgogI2luY2x1ZGUgPGxp bnV4L2tyZWYuaD4KKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+CiAjaW5jbHVkZSA8bGlu dXgvcG1fcW9zLmg+CiAjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDxs aW51eC9zaG1lbV9mcy5oPgpAQCAtMjA5Myw2ICsyMDk0LDEyIEBAIHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSB7CiAJdW5zaWduZWQgaW50IGNkY2xrLCB2Y28sIHJlZjsKIH07CiAKK2VudW0gewor CV9fSTkxNV9TQU1QTEVfRlJFUV9BQ1QgPSAwLAorCV9fSTkxNV9TQU1QTEVfRlJFUV9SRVEsCisJ X19JOTE1X05VTV9QTVVfU0FNUExFUlMKK307CisKIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK IAlzdHJ1Y3QgZHJtX2RldmljZSBkcm07CiAKQEAgLTI1OTEsNiArMjU5OCwxMyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCWludAlpcnE7CiAJfSBscGVfYXVkaW87CiAKKwlzdHJ1Y3Qg eworCQlzdHJ1Y3QgcG11IGJhc2U7CisJCXN0cnVjdCBocnRpbWVyIHRpbWVyOworCQl1NjQgZW5h YmxlOworCQl1NjQgc2FtcGxlW19fSTkxNV9OVU1fUE1VX1NBTVBMRVJTXTsKKwl9IHBtdTsKKwog CS8qCiAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0 dWZmIGhlcmUuIFlvdXIgcGF0Y2gKIAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sg Zm9yIGEgYmV0dGVyIHBsYWNlLgpAQCAtMzc2MCw2ICszNzc0LDE1IEBAIGV4dGVybiB2b2lkIGk5 MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4g dm9pZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKIGV4dGVybiB2b2lkIGk5MTVfcGVyZl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CiAKKy8qIGk5MTVfcG11LmMgKi8KKyNpZmRlZiBDT05GSUdfUEVSRl9F VkVOVFMKK2V4dGVybiB2b2lkIGk5MTVfcG11X3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKK2V4dGVybiB2b2lkIGk5MTVfcG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3BtdV9y ZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkge30KK3N0YXRpYyBpbmxpbmUg dm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KSB7 fQorI2VuZGlmCisKIC8qIGk5MTVfc3VzcGVuZC5jICovCiBleHRlcm4gaW50IGk5MTVfc2F2ZV9z dGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGludCBpOTE1 X3Jlc3RvcmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BtdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZjAzZGRhZDQ0ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wbXUuYwpAQCAtMCwwICsxLDQ1MiBAQAorI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQuaD4K KyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgor I2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKKworI2RlZmluZSBGUkVRVUVOQ1kgMjAwCisj ZGVmaW5lIFBFUklPRCBtYXhfdCh1NjQsIDEwMDAwLCBOU0VDX1BFUl9TRUMgLyBGUkVRVUVOQ1kp CisKKyNkZWZpbmUgUklOR19NQVNLIDB4ZmZmZmZmZmYKKyNkZWZpbmUgUklOR19NQVggMzIKKwor c3RhdGljIHZvaWQgZW5naW5lc19zYW1wbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2Vu Z2luZV9pZCBpZDsKKwlib29sIGZ3ID0gZmFsc2U7CisKKwlpZiAoKGRldl9wcml2LT5wbXUuZW5h YmxlICYgUklOR19NQVNLKSA9PSAwKQorCQlyZXR1cm47CisKKwlpZiAoIWRldl9wcml2LT5ndC5h d2FrZSkKKwkJcmV0dXJuOworCisJaWYgKCFpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uo ZGV2X3ByaXYpKQorCQlyZXR1cm47CisKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJp diwgaWQpIHsKKwkJdTMyIHZhbDsKKworCQlpZiAoKGRldl9wcml2LT5wbXUuZW5hYmxlICYgKDB4 NyA8PCAoNCppZCkpKSA9PSAwKQorCQkJY29udGludWU7CisKKwkJaWYgKGk5MTVfc2Vxbm9fcGFz c2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKKwkJCQkgICAgICBpbnRlbF9lbmdp bmVfbGFzdF9zdWJtaXQoZW5naW5lKSkpCisJCQljb250aW51ZTsKKworCQlpZiAoIWZ3KSB7CisJ CQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisJ CQlmdyA9IHRydWU7CisJCX0KKworCQllbmdpbmUtPnBtdV9zYW1wbGVbSTkxNV9TQU1QTEVfUVVF VUVEXSArPSBQRVJJT0Q7CisKKwkJdmFsID0gSTkxNV9SRUFEX0ZXKFJJTkdfTUlfTU9ERShlbmdp bmUtPm1taW9fYmFzZSkpOworCQlpZiAoISh2YWwgJiBNT0RFX0lETEUpKQorCQkJZW5naW5lLT5w bXVfc2FtcGxlW0k5MTVfU0FNUExFX0JVU1ldICs9IFBFUklPRDsKKworCQl2YWwgPSBJOTE1X1JF QURfRlcoUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKTsKKwkJaWYgKHZhbCAmIFJJTkdfV0FJ VCkKKwkJCWVuZ2luZS0+cG11X3NhbXBsZVtJOTE1X1NBTVBMRV9XQUlUXSArPSBQRVJJT0Q7CisJ CWlmICh2YWwgJiBSSU5HX1dBSVRfU0VNQVBIT1JFKQorCQkJZW5naW5lLT5wbXVfc2FtcGxlW0k5 MTVfU0FNUExFX1NFTUFdICs9IFBFUklPRDsKKwl9CisKKwlpZiAoZncpCisJCWludGVsX3VuY29y ZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKwlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7Cit9CisKK3N0YXRpYyB2b2lkIGZyZXF1ZW5jeV9zYW1wbGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWlmIChkZXZfcHJpdi0+cG11LmVu YWJsZSAmIEJJVF9VTEwoSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5DWSkpIHsKKwkJdTY0IHZhbDsK KworCQl2YWwgPSBkZXZfcHJpdi0+cnBzLmN1cl9mcmVxOworCQlpZiAoZGV2X3ByaXYtPmd0LmF3 YWtlICYmCisJCSAgICBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpKSB7 CisJCQl2YWwgPSBJOTE1X1JFQURfTk9UUkFDRShHRU42X1JQU1RBVDEpOworCQkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKKwkJCQl2YWwgPSAodmFsICYgR0VOOV9DQUdGX01BU0spID4+ IEdFTjlfQ0FHRl9TSElGVDsKKwkJCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElO VEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwkJCQl2YWwgPSAodmFsICYgSFNXX0NBR0ZfTUFTSykg Pj4gSFNXX0NBR0ZfU0hJRlQ7CisJCQllbHNlCisJCQkJdmFsID0gKHZhbCAmIEdFTjZfQ0FHRl9N QVNLKSA+PiBHRU42X0NBR0ZfU0hJRlQ7CisJCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJp dik7CisJCX0KKwkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHZhbCk7CisJCWRldl9w cml2LT5wbXUuc2FtcGxlW19fSTkxNV9TQU1QTEVfRlJFUV9BQ1RdICs9IHZhbCAqIFBFUklPRDsK Kwl9CisKKwlpZiAoZGV2X3ByaXYtPnBtdS5lbmFibGUgJiBCSVRfVUxMKEk5MTVfUE1VX1JFUVVF U1RFRF9GUkVRVUVOQ1kpKSB7CisJCXU2NCB2YWwgPSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwg ZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSk7CisJCWRldl9wcml2LT5wbXUuc2FtcGxlW19fSTkxNV9T QU1QTEVfRlJFUV9SRVFdICs9IHZhbCAqIFBFUklPRDsKKwl9Cit9CisKK3N0YXRpYyBlbnVtIGhy dGltZXJfcmVzdGFydCBpOTE1X3NhbXBsZShzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcikKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihocnRpbWVyLCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwgcG11LnRpbWVyKTsKKworCWlmIChpOTE1LT5wbXUuZW5h YmxlID09IDApCisJCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKKworCWVuZ2luZXNfc2FtcGxl KGk5MTUpOworCWZyZXF1ZW5jeV9zYW1wbGUoaTkxNSk7CisKKwlocnRpbWVyX2ZvcndhcmRfbm93 KGhydGltZXIsIG5zX3RvX2t0aW1lKFBFUklPRCkpOworCXJldHVybiBIUlRJTUVSX1JFU1RBUlQ7 Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfcG11X2V2ZW50X2Rlc3Ryb3koc3RydWN0IHBlcmZfZXZl bnQgKmV2ZW50KQoreworCVdBUk5fT04oZXZlbnQtPnBhcmVudCk7Cit9CisKK3N0YXRpYyBpbnQg ZW5naW5lX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVv ZigqaTkxNSksIHBtdS5iYXNlKTsKKwlpbnQgZW5naW5lID0gZXZlbnQtPmF0dHIuY29uZmlnID4+ IDI7CisJaW50IHNhbXBsZSA9IGV2ZW50LT5hdHRyLmNvbmZpZyAmIDM7CisKKwlzd2l0Y2ggKHNh bXBsZSkgeworCWNhc2UgSTkxNV9TQU1QTEVfUVVFVUVEOgorCWNhc2UgSTkxNV9TQU1QTEVfQlVT WToKKwljYXNlIEk5MTVfU0FNUExFX1dBSVQ6CisJCWJyZWFrOworCWNhc2UgSTkxNV9TQU1QTEVf U0VNQToKKwkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDYpCisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJaWYgKGVuZ2luZSA+ PSBJOTE1X05VTV9FTkdJTkVTKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWlmICghaTkxNS0+ZW5n aW5lW2VuZ2luZV0pCisJCXJldHVybiAtRU5PREVWOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBlbnVtIGhydGltZXJfcmVzdGFydCBocnRpbWVyX3NhbXBsZShzdHJ1Y3QgaHJ0aW1lciAqaHJ0 aW1lcikKK3sKKwlzdHJ1Y3QgcGVyZl9zYW1wbGVfZGF0YSBkYXRhOworCXN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudDsKKwl1NjQgcGVyaW9kOworCisJZXZlbnQgPSBjb250YWluZXJfb2YoaHJ0aW1l ciwgc3RydWN0IHBlcmZfZXZlbnQsIGh3LmhydGltZXIpOworCWlmIChldmVudC0+c3RhdGUgIT0g UEVSRl9FVkVOVF9TVEFURV9BQ1RJVkUpCisJCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKKwor CWV2ZW50LT5wbXUtPnJlYWQoZXZlbnQpOworCisJcGVyZl9zYW1wbGVfZGF0YV9pbml0KCZkYXRh LCAwLCBldmVudC0+aHcubGFzdF9wZXJpb2QpOworCXBlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQs ICZkYXRhLCBOVUxMKTsKKworCXBlcmlvZCA9IG1heF90KHU2NCwgMTAwMDAsIGV2ZW50LT5ody5z YW1wbGVfcGVyaW9kKTsKKwlocnRpbWVyX2ZvcndhcmRfbm93KGhydGltZXIsIG5zX3RvX2t0aW1l KHBlcmlvZCkpOworCXJldHVybiBIUlRJTUVSX1JFU1RBUlQ7Cit9CisKK3N0YXRpYyB2b2lkIGlu aXRfaHJ0aW1lcihzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGh3X3BlcmZf ZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7CisKKwlpZiAoIWlzX3NhbXBsaW5nX2V2ZW50KGV2ZW50 KSkKKwkJcmV0dXJuOworCisJaHJ0aW1lcl9pbml0KCZod2MtPmhydGltZXIsIENMT0NLX01PTk9U T05JQywgSFJUSU1FUl9NT0RFX1JFTCk7CisJaHdjLT5ocnRpbWVyLmZ1bmN0aW9uID0gaHJ0aW1l cl9zYW1wbGU7CisKKwlpZiAoZXZlbnQtPmF0dHIuZnJlcSkgeworCQlsb25nIGZyZXEgPSBldmVu dC0+YXR0ci5zYW1wbGVfZnJlcTsKKworCQlldmVudC0+YXR0ci5zYW1wbGVfcGVyaW9kID0gTlNF Q19QRVJfU0VDIC8gZnJlcTsKKwkJaHdjLT5zYW1wbGVfcGVyaW9kID0gZXZlbnQtPmF0dHIuc2Ft cGxlX3BlcmlvZDsKKwkJbG9jYWw2NF9zZXQoJmh3Yy0+cGVyaW9kX2xlZnQsIGh3Yy0+c2FtcGxl X3BlcmlvZCk7CisJCWh3Yy0+bGFzdF9wZXJpb2QgPSBod2MtPnNhbXBsZV9wZXJpb2Q7CisJCWV2 ZW50LT5hdHRyLmZyZXEgPSAwOworCX0KK30KKworc3RhdGljIGludCBpOTE1X3BtdV9ldmVudF9p bml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUpLCBwbXUu YmFzZSk7CisJaW50IHJldDsKKworCS8qIFhYWCBpZGVhbGx5IG9ubHkgd2FudCBwaWQgPT0gLTEg JiYgY3B1ID09IC0xICovCisKKwlpZiAoZXZlbnQtPmF0dHIudHlwZSAhPSBldmVudC0+cG11LT50 eXBlKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWlmIChoYXNfYnJhbmNoX3N0YWNrKGV2ZW50KSkK KwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJcmV0ID0gMDsKKwlpZiAoZXZlbnQtPmF0dHIuY29u ZmlnIDwgUklOR19NQVgpIHsKKwkJcmV0ID0gZW5naW5lX2V2ZW50X2luaXQoZXZlbnQpOworCX0g ZWxzZSBzd2l0Y2ggKGV2ZW50LT5hdHRyLmNvbmZpZykgeworCWNhc2UgSTkxNV9QTVVfQUNUVUFM X0ZSRVFVRU5DWToKKwkJaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhp OTE1KSkKKwkJCXJldCA9IC1FTk9ERVY7IC8qIHJlcXVpcmVzIGEgbXV0ZXggZm9yIHNhbXBsaW5n ISAqLworCWNhc2UgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5DWToKKwljYXNlIEk5MTVfUE1V X0VORVJHWToKKwljYXNlIEk5MTVfUE1VX1JDNl9SRVNJREVOQ1k6CisJY2FzZSBJOTE1X1BNVV9S QzZwX1JFU0lERU5DWToKKwljYXNlIEk5MTVfUE1VX1JDNnBwX1JFU0lERU5DWToKKwkJaWYgKElO VEVMX0dFTihpOTE1KSA8IDYpCisJCQlyZXQgPSAtRU5PREVWOworCQlicmVhazsKKwl9CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmICghZXZlbnQtPnBhcmVudCkKKwkJZXZlbnQtPmRl c3Ryb3kgPSBpOTE1X3BtdV9ldmVudF9kZXN0cm95OworCisJaW5pdF9ocnRpbWVyKGV2ZW50KTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3BtdV90aW1lcl9zdGFydChzdHJ1 Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZl dmVudC0+aHc7CisJczY0IHBlcmlvZDsKKworCWlmICghaXNfc2FtcGxpbmdfZXZlbnQoZXZlbnQp KQorCQlyZXR1cm47CisKKwlwZXJpb2QgPSBsb2NhbDY0X3JlYWQoJmh3Yy0+cGVyaW9kX2xlZnQp OworCWlmIChwZXJpb2QpIHsKKwkJaWYgKHBlcmlvZCA8IDApCisJCQlwZXJpb2QgPSAxMDAwMDsK KworCQlsb2NhbDY0X3NldCgmaHdjLT5wZXJpb2RfbGVmdCwgMCk7CisJfSBlbHNlIHsKKwkJcGVy aW9kID0gbWF4X3QodTY0LCAxMDAwMCwgaHdjLT5zYW1wbGVfcGVyaW9kKTsKKwl9CisKKwlocnRp bWVyX3N0YXJ0X3JhbmdlX25zKCZod2MtPmhydGltZXIsCisJCQkgICAgICAgbnNfdG9fa3RpbWUo cGVyaW9kKSwgMCwKKwkJCSAgICAgICBIUlRJTUVSX01PREVfUkVMX1BJTk5FRCk7Cit9CisKK3N0 YXRpYyB2b2lkIGk5MTVfcG11X3RpbWVyX2NhbmNlbChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQp Cit7CisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7CisKKwlpZiAoIWlz X3NhbXBsaW5nX2V2ZW50KGV2ZW50KSkKKwkJcmV0dXJuOworCisJbG9jYWw2NF9zZXQoJmh3Yy0+ cGVyaW9kX2xlZnQsCisJCSAgICBrdGltZV90b19ucyhocnRpbWVyX2dldF9yZW1haW5pbmcoJmh3 Yy0+aHJ0aW1lcikpKTsKKwlocnRpbWVyX2NhbmNlbCgmaHdjLT5ocnRpbWVyKTsKK30KKworc3Rh dGljIHZvaWQgaTkxNV9wbXVfZW5hYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11 LCB0eXBlb2YoKmk5MTUpLCBwbXUuYmFzZSk7CisKKwlpZiAoaTkxNS0+cG11LmVuYWJsZSA9PSAw KQorCQlocnRpbWVyX3N0YXJ0X3JhbmdlX25zKCZpOTE1LT5wbXUudGltZXIsCisJCQkJICAgICAg IG5zX3RvX2t0aW1lKFBFUklPRCksIDAsCisJCQkJICAgICAgIEhSVElNRVJfTU9ERV9SRUxfUElO TkVEKTsKKworCWk5MTUtPnBtdS5lbmFibGUgfD0gQklUX1VMTChldmVudC0+YXR0ci5jb25maWcp OworCisJaTkxNV9wbXVfdGltZXJfc3RhcnQoZXZlbnQpOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X3BtdV9kaXNhYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5 MTUpLCBwbXUuYmFzZSk7CisKKwlpOTE1LT5wbXUuZW5hYmxlICY9IH5CSVRfVUxMKGV2ZW50LT5h dHRyLmNvbmZpZyk7CisJaTkxNV9wbXVfdGltZXJfY2FuY2VsKGV2ZW50KTsKK30KKworc3RhdGlj IGludCBpOTE1X3BtdV9ldmVudF9hZGQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxh Z3MpCit7CisJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7CisKKwlpZiAo ZmxhZ3MgJiBQRVJGX0VGX1NUQVJUKQorCQlpOTE1X3BtdV9lbmFibGUoZXZlbnQpOworCisJaHdj LT5zdGF0ZSA9ICEoZmxhZ3MgJiBQRVJGX0VGX1NUQVJUKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgdm9pZCBpOTE1X3BtdV9ldmVudF9kZWwoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBp bnQgZmxhZ3MpCit7CisJaTkxNV9wbXVfZGlzYWJsZShldmVudCk7Cit9CisKK3N0YXRpYyB2b2lk IGk5MTVfcG11X2V2ZW50X3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdz KQoreworCWk5MTVfcG11X2VuYWJsZShldmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfcG11 X2V2ZW50X3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpCit7CisJaTkx NV9wbXVfZGlzYWJsZShldmVudCk7Cit9CisKK3N0YXRpYyB1NjQgcmVhZF9lbmVyZ3lfdUooc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXU2NCBwb3dlcjsKKworCUdFTV9C VUdfT04oSU5URUxfR0VOKGRldl9wcml2KSA8IDYpOworCisJaW50ZWxfcnVudGltZV9wbV9nZXQo ZGV2X3ByaXYpOworCisJcmRtc3JsKE1TUl9SQVBMX1BPV0VSX1VOSVQsIHBvd2VyKTsKKwlwb3dl ciA9IChwb3dlciAmIDB4MWYwMCkgPj4gODsKKwlwb3dlciA9IDEwMDAwMDAgPj4gcG93ZXI7IC8q IGNvbnZlcnQgdG8gdUogKi8KKwlwb3dlciAqPSBJOTE1X1JFQURfTk9UUkFDRShNQ0hfU0VDUF9O UkdfU1RUUyk7CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisKKwlyZXR1cm4g cG93ZXI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0IGNhbGNfcmVzaWRlbmN5KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgY29uc3QgaTkxNV9yZWdfdCByZWcpCit7CisJ dTY0IHZhbCwgdW5pdHMgPSAxMjgsIGRpdiA9IDEwMDAwMDsKKworCUdFTV9CVUdfT04oSU5URUxf R0VOKGRldl9wcml2KSA8IDYpOworCisJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwor CWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkg eworCQlkaXYgPSBkZXZfcHJpdi0+Y3pjbGtfZnJlcTsKKwkJdW5pdHMgPSAxOworCQlpZiAoSTkx NV9SRUFEX05PVFJBQ0UoVkxWX0NPVU5URVJfQ09OVFJPTCkgJiBWTFZfQ09VTlRfUkFOR0VfSElH SCkKKwkJCXVuaXRzIDw8PSA4OworCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsK KwkJZGl2ID0gMTIwMDsKKwkJdW5pdHMgPSAxOworCX0KKwl2YWwgPSBJOTE1X1JFQURfTk9UUkFD RShyZWcpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKworCXZhbCAqPSB1bml0 czsKKwlyZXR1cm4gRElWX1JPVU5EX1VQX1VMTCh2YWwsIGRpdik7Cit9CisKK3N0YXRpYyB1NjQg Y291bnRfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwkvKiBv cGVuLWNvZGVkIGtzdGF0X2lycXMoKSAqLworCXN0cnVjdCBpcnFfZGVzYyAqZGVzYyA9IGlycV90 b19kZXNjKGk5MTUtPmRybS5wZGV2LT5pcnEpOworCXU2NCBzdW0gPSAwOworCWludCBjcHU7CisK KwlpZiAoIWRlc2MgfHwgIWRlc2MtPmtzdGF0X2lycXMpCisJCXJldHVybiAwOworCisJZm9yX2Vh Y2hfcG9zc2libGVfY3B1KGNwdSkKKwkJc3VtICs9ICpwZXJfY3B1X3B0cihkZXNjLT5rc3RhdF9p cnFzLCBjcHUpOworCisJcmV0dXJuIHN1bTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9wbXVfZXZl bnRfcmVhZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwg cG11LmJhc2UpOworCXU2NCB2YWwgPSAwOworCisJaWYgKGV2ZW50LT5hdHRyLmNvbmZpZyA8IDMy KSB7CisJCWludCBlbmdpbmUgPSBldmVudC0+YXR0ci5jb25maWcgPj4gMjsKKwkJaW50IHNhbXBs ZSA9IGV2ZW50LT5hdHRyLmNvbmZpZyAmIDM7CisJCXZhbCA9IGk5MTUtPmVuZ2luZVtlbmdpbmVd LT5wbXVfc2FtcGxlW3NhbXBsZV07CisJfSBlbHNlIHN3aXRjaCAoZXZlbnQtPmF0dHIuY29uZmln KSB7CisJY2FzZSBJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZOgorCQl2YWwgPSBpOTE1LT5wbXUu c2FtcGxlW19fSTkxNV9TQU1QTEVfRlJFUV9BQ1RdOworCQlicmVhazsKKwljYXNlIEk5MTVfUE1V X1JFUVVFU1RFRF9GUkVRVUVOQ1k6CisJCXZhbCA9IGk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NB TVBMRV9GUkVRX1JFUV07CisJCWJyZWFrOworCWNhc2UgSTkxNV9QTVVfRU5FUkdZOgorCQl2YWwg PSByZWFkX2VuZXJneV91SihpOTE1KTsKKwkJYnJlYWs7CisJY2FzZSBJOTE1X1BNVV9JTlRFUlJV UFRTOgorCQl2YWwgPSBjb3VudF9pbnRlcnJ1cHRzKGk5MTUpOworCQlicmVhazsKKworCWNhc2Ug STkxNV9QTVVfUkM2X1JFU0lERU5DWToKKwkJaWYgKCFpOTE1LT5ndC5hd2FrZSkKKwkJCXJldHVy bjsKKworCQl2YWwgPSBjYWxjX3Jlc2lkZW5jeShpOTE1LCBJU19WQUxMRVlWSUVXKGk5MTUpID8g VkxWX0dUX1JFTkRFUl9SQzYgOiBHRU42X0dUX0dGWF9SQzYpOworCQlicmVhazsKKworCWNhc2Ug STkxNV9QTVVfUkM2cF9SRVNJREVOQ1k6CisJCWlmICghaTkxNS0+Z3QuYXdha2UpCisJCQlyZXR1 cm47CisKKwkJaWYgKCFJU19WQUxMRVlWSUVXKGk5MTUpKQorCQkJdmFsID0gY2FsY19yZXNpZGVu Y3koaTkxNSwgR0VONl9HVF9HRlhfUkM2cCk7CisJCWJyZWFrOworCisJY2FzZSBJOTE1X1BNVV9S QzZwcF9SRVNJREVOQ1k6CisJCWlmICghaTkxNS0+Z3QuYXdha2UpCisJCQlyZXR1cm47CisKKwkJ aWYgKCFJU19WQUxMRVlWSUVXKGk5MTUpKQorCQkJdmFsID0gY2FsY19yZXNpZGVuY3koaTkxNSwg R0VONl9HVF9HRlhfUkM2cHApOworCQlicmVhazsKKwl9CisKKwlsb2NhbDY0X3NldCgmZXZlbnQt PmNvdW50LCB2YWwpOworfQorCitzdGF0aWMgaW50IGk5MTVfcG11X2V2ZW50X2V2ZW50X2lkeChz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgaTkxNV9w bXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJaWYgKElOVEVM X0dFTihpOTE1KSA8PSAyKQorCQlyZXR1cm47CisKKwlpOTE1LT5wbXUuYmFzZS50YXNrX2N0eF9u cgk9IHBlcmZfc3dfY29udGV4dDsKKwlpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0CT0gaTkxNV9w bXVfZXZlbnRfaW5pdDsKKwlpOTE1LT5wbXUuYmFzZS5hZGQJCT0gaTkxNV9wbXVfZXZlbnRfYWRk OworCWk5MTUtPnBtdS5iYXNlLmRlbAkJPSBpOTE1X3BtdV9ldmVudF9kZWw7CisJaTkxNS0+cG11 LmJhc2Uuc3RhcnQJCT0gaTkxNV9wbXVfZXZlbnRfc3RhcnQ7CisJaTkxNS0+cG11LmJhc2Uuc3Rv cAkJPSBpOTE1X3BtdV9ldmVudF9zdG9wOworCWk5MTUtPnBtdS5iYXNlLnJlYWQJCT0gaTkxNV9w bXVfZXZlbnRfcmVhZDsKKwlpOTE1LT5wbXUuYmFzZS5ldmVudF9pZHgJPSBpOTE1X3BtdV9ldmVu dF9ldmVudF9pZHg7CisKKwlocnRpbWVyX2luaXQoJmk5MTUtPnBtdS50aW1lciwgQ0xPQ0tfTU9O T1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKKwlpOTE1LT5wbXUudGltZXIuZnVuY3Rpb24gPSBp OTE1X3NhbXBsZTsKKwlpOTE1LT5wbXUuZW5hYmxlID0gMDsKKworCWlmIChwZXJmX3BtdV9yZWdp c3RlcigmaTkxNS0+cG11LmJhc2UsICJpOTE1IiwgLTEpKQorCQlpOTE1LT5wbXUuYmFzZS5ldmVu dF9pbml0ID0gTlVMTDsKK30KKwordm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQoreworCWlmICghaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCkK KwkJcmV0dXJuOworCisJaTkxNS0+cG11LmVuYWJsZSA9IDA7CisKKwlwZXJmX3BtdV91bnJlZ2lz dGVyKCZpOTE1LT5wbXUuYmFzZSk7CisJaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCA9IE5VTEw7 CisKKwlocnRpbWVyX2NhbmNlbCgmaTkxNS0+cG11LnRpbWVyKTsKK30KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCBkMzNjOTM0NDRjMGQuLjA4NzdiMTUxMjM5ZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMjQ1LDYgKzI0NSw4 IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCQlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoYm9v bCBtb2NrIDogMSk7CiAJfSBicmVhZGNydW1iczsKIAorCXU2NCBwbXVfc2FtcGxlWzRdOworCiAJ LyoKIAkgKiBBIHBvb2wgb2Ygb2JqZWN0cyB0byB1c2UgYXMgc2hhZG93IGNvcGllcyBvZiBjbGll bnQgYmF0Y2ggYnVmZmVycwogCSAqIHdoZW4gdGhlIGNvbW1hbmQgcGFyc2VyIGlzIGVuYWJsZWQu IFByZXZlbnRzIHRoZSBjbGllbnQgZnJvbQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDdjY2JkNmEyYmJl MC4uNzMzNzc0ZjE5YTBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgK KysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC04Niw2ICs4Niw0NyBAQCBlbnVt IGk5MTVfbW9jc190YWJsZV9pbmRleCB7CiAJSTkxNV9NT0NTX0NBQ0hFRCwKIH07CiAKKy8qKgor ICogRE9DOiBwZXJmX2V2ZW50cyBleHBvc2VkIGJ5IGk5MTUgdGhyb3VnaCAvc3lzL2J1cy9ldmVu dF9zb3VyY2VzL2RyaXZlcnMvaTkxNQorICoKKyAqLworI2RlZmluZSBJOTE1X1NBTVBMRV9RVUVV RUQJMAorI2RlZmluZSBJOTE1X1NBTVBMRV9CVVNZCTEKKyNkZWZpbmUgSTkxNV9TQU1QTEVfV0FJ VAkyCisjZGVmaW5lIEk5MTVfU0FNUExFX1NFTUEJMworCisjZGVmaW5lIEk5MTVfU0FNUExFX1JD UwkJMAorI2RlZmluZSBJOTE1X1NBTVBMRV9WQ1MJCTEKKyNkZWZpbmUgSTkxNV9TQU1QTEVfQkNT CQkyCisjZGVmaW5lIEk5MTVfU0FNUExFX1ZFQ1MJMworCisjZGVmaW5lIF9fSTkxNV9QTVVfQ09V TlQocmluZywgaWQpICgocmluZykgPDwgMiB8IChpZCkpCisKKyNkZWZpbmUgSTkxNV9QTVVfQ09V TlRfUkNTX0JVU1kgX19JOTE1X1BNVV9DT1VOVChJOTE1X1NBTVBMRV9SQ1MsIEk5MTVfU0FNUExF X0JVU1kpCisjZGVmaW5lIEk5MTVfUE1VX0NPVU5UX1JDU19XQUlUIF9fSTkxNV9QTVVfQ09VTlQo STkxNV9TQU1QTEVfUkNTLCBJOTE1X1NBTVBMRV9XQUlUKQorI2RlZmluZSBJOTE1X1BNVV9DT1VO VF9SQ1NfU0VNQSBfX0k5MTVfUE1VX0NPVU5UKEk5MTVfU0FNUExFX1JDUywgSTkxNV9TQU1QTEVf U0VNQSkKKworI2RlZmluZSBJOTE1X1BNVV9DT1VOVF9WQ1NfQlVTWSBfX0k5MTVfUE1VX0NPVU5U KEk5MTVfU0FNUExFX1ZDUywgSTkxNV9TQU1QTEVfQlVTWSkKKyNkZWZpbmUgSTkxNV9QTVVfQ09V TlRfVkNTX1dBSVQgX19JOTE1X1BNVV9DT1VOVChJOTE1X1NBTVBMRV9WQ1MsIEk5MTVfU0FNUExF X1dBSVQpCisjZGVmaW5lIEk5MTVfUE1VX0NPVU5UX1ZDU19TRU1BIF9fSTkxNV9QTVVfQ09VTlQo STkxNV9TQU1QTEVfVkNTLCBJOTE1X1NBTVBMRV9TRU1BKQorCisjZGVmaW5lIEk5MTVfUE1VX0NP VU5UX0JDU19CVVNZIF9fSTkxNV9QTVVfQ09VTlQoSTkxNV9TQU1QTEVfQkNTLCBJOTE1X1NBTVBM RV9CVVNZKQorI2RlZmluZSBJOTE1X1BNVV9DT1VOVF9CQ1NfV0FJVCBfX0k5MTVfUE1VX0NPVU5U KEk5MTVfU0FNUExFX0JDUywgSTkxNV9TQU1QTEVfV0FJVCkKKyNkZWZpbmUgSTkxNV9QTVVfQ09V TlRfQkNTX1NFTUEgX19JOTE1X1BNVV9DT1VOVChJOTE1X1NBTVBMRV9CQ1MsIEk5MTVfU0FNUExF X1NFTUEpCisKKyNkZWZpbmUgSTkxNV9QTVVfQ09VTlRfVkVDU19CVVNZIF9fSTkxNV9QTVVfQ09V TlQoSTkxNV9TQU1QTEVfVkVDUywgSTkxNV9TQU1QTEVfQlVTWSkKKyNkZWZpbmUgSTkxNV9QTVVf Q09VTlRfVkVDU19XQUlUIF9fSTkxNV9QTVVfQ09VTlQoSTkxNV9TQU1QTEVfVkVDUywgSTkxNV9T QU1QTEVfV0FJVCkKKyNkZWZpbmUgSTkxNV9QTVVfQ09VTlRfVkVDU19TRU1BIF9fSTkxNV9QTVVf Q09VTlQoSTkxNV9TQU1QTEVfVkVDUywgSTkxNV9TQU1QTEVfU0VNQSkKKworI2RlZmluZSBJOTE1 X1BNVV9BQ1RVQUxfRlJFUVVFTkNZIDMyCisjZGVmaW5lIEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVR VUVOQ1kgMzMKKyNkZWZpbmUgSTkxNV9QTVVfRU5FUkdZIDM0CisjZGVmaW5lIEk5MTVfUE1VX0lO VEVSUlVQVFMgMzUKKworI2RlZmluZSBJOTE1X1BNVV9SQzZfUkVTSURFTkNZCQk0MAorI2RlZmlu ZSBJOTE1X1BNVV9SQzZwX1JFU0lERU5DWQk0MQorI2RlZmluZSBJOTE1X1BNVV9SQzZwcF9SRVNJ REVOQ1kJNDIKKwogLyogRWFjaCByZWdpb24gaXMgYSBtaW5pbXVtIG9mIDE2aywgYW5kIHRoZXJl IGFyZSBhdCBtb3N0IDI1NSBvZiB0aGVtLgogICovCiAjZGVmaW5lIEk5MTVfTlJfVEVYX1JFR0lP TlMgMjU1CS8qIHRhYmxlIHNpemUgMmsgLSBtYXhpbXVtIGR1ZSB0byB1c2UKZGlmZiAtLWdpdCBh L2tlcm5lbC9ldmVudHMvY29yZS5jIGIva2VybmVsL2V2ZW50cy9jb3JlLmMKaW5kZXggZTQ2ZWJh OGNkMWI3Li43YjhjNmRjZTEwNzggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9ldmVudHMvY29yZS5jCisr KyBiL2tlcm5lbC9ldmVudHMvY29yZS5jCkBAIC03Mzg2LDYgKzczODYsNyBAQCBpbnQgcGVyZl9l dmVudF9vdmVyZmxvdyhzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCiB7CiAJcmV0dXJuIF9fcGVy Zl9ldmVudF9vdmVyZmxvdyhldmVudCwgMSwgZGF0YSwgcmVncyk7CiB9CitFWFBPUlRfU1lNQk9M X0dQTChwZXJmX2V2ZW50X292ZXJmbG93KTsKIAogLyoKICAqIEdlbmVyaWMgc29mdHdhcmUgZXZl bnQgaW5mcmFzdHJ1Y3R1cmUKLS0gCjIuOS40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK