From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v2] drm/i915/pmu: Only enumerate available counters in sysfs Date: Tue, 9 Jan 2018 12:20:05 +0000 Message-ID: <20180109122005.4591-1-tvrtko.ursulin@linux.intel.com> References: <151395432533.16779.3231772694845672632@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 8C3706E075 for ; Tue, 9 Jan 2018 12:20:18 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id p6so13907278wrd.0 for ; Tue, 09 Jan 2018 04:20:18 -0800 (PST) In-Reply-To: <151395432533.16779.3231772694845672632@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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN3aXRjaCBv dmVyIHRvIGR5bmFtaWNhbGx5IGNyZWF0aW5nIGRldmljZSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUg aW4gdHVybgp1c2VkIGJ5IHRoZSBwZXJmIGNvcmUgdG8gZXhwb3NlIGF2YWlsYWJsZSBjb3VudGVy cyBpbiBzeXNmcy4KClRoaXMgd2F5IHdlIGRvIG5vdCBleHBvc2UgY291bnRlcnMgd2hpY2ggYXJl IG5vdCBhdmFpYWJsZSBvbiB0aGUgY3VycmVudApwbGF0Zm9ybSwgYW5kIGFyZSBzbyBtb3JlIGNv bnNpc3RlbnQgYmV0d2VlbiB3aGF0IHdlIHJlcGx5IHRvIG9wZW4KYXR0ZW1wdHMgdmlhIHRoZSBw ZXJmX2V2ZW50X29wZW4oMiksIGFuZCB3aGF0IGlzIGRpc2NvdmVyYWJsZSBpbiBzeXNmcy4KCnYy OgogKiBTaW1wbGlmeSBhdHRyaWJ1dGUgcG9pbnRlciBmcmVlaW5nIGxvb3AuCiAqIENoYW5nZWQg YXR0ciBpbml0IGZyb20gbWFjcm8gdG8gZnVuY3Rpb24uCiAqIE1vcmUgY29tbW9uIGVycm9yIHVu d2luZC4gKENocmlzIFdpbHNvbikKICogUmVuYW1lIHNvbWUgbG9jYWxzLiAoQ2hyaXMgV2lsc29u KQoKU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgfCAzMjEgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuaCB8ICAgOCAr CiAyIGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wbXUuYwppbmRleCA1NWE4YTFlMjk0MjQuLjQzYWQ5OTAxMjNhMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BtdS5jCkBAIC0yOTAsMjMgKzI5MCw0NCBAQCBzdGF0aWMgdm9pZCBp OTE1X3BtdV9ldmVudF9kZXN0cm95KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIAlXQVJOX09O KGV2ZW50LT5wYXJlbnQpOwogfQogCi1zdGF0aWMgaW50IGVuZ2luZV9ldmVudF9pbml0KHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCkKK3N0YXRpYyBpbnQKK2VuZ2luZV9ldmVudF9zdGF0dXMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICAgZW51bSBkcm1faTkxNV9wbXVfZW5n aW5lX3NhbXBsZSBzYW1wbGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQot CQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwgcG11LmJhc2UpOwotCi0J aWYgKCFpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkxNSwgZW5naW5lX2V2ZW50X2NsYXNzKGV2 ZW50KSwKLQkJCQkgICAgICBlbmdpbmVfZXZlbnRfaW5zdGFuY2UoZXZlbnQpKSkKLQkJcmV0dXJu IC1FTk9ERVY7Ci0KLQlzd2l0Y2ggKGVuZ2luZV9ldmVudF9zYW1wbGUoZXZlbnQpKSB7CisJc3dp dGNoIChzYW1wbGUpIHsKIAljYXNlIEk5MTVfU0FNUExFX0JVU1k6CiAJY2FzZSBJOTE1X1NBTVBM RV9XQUlUOgogCQlicmVhazsKIAljYXNlIEk5MTVfU0FNUExFX1NFTUE6CisJCWlmIChJTlRFTF9H RU4oZW5naW5lLT5pOTE1KSA8IDYpCisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJYnJlYWs7CisJZGVm YXVsdDoKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQKK2NvbmZpZ19zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU2NCBjb25m aWcpCit7CisJc3dpdGNoIChjb25maWcpIHsKKwljYXNlIEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVO Q1k6CisJCWlmIChJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCisJ CQkvKiBSZXF1aXJlcyBhIG11dGV4IGZvciBzYW1wbGluZyEgKi8KKwkJCXJldHVybiAtRU5PREVW OworCQkvKiBGYWxsLXRocm91Z2guICovCisJY2FzZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVF TkNZOgogCQlpZiAoSU5URUxfR0VOKGk5MTUpIDwgNikKIAkJCXJldHVybiAtRU5PREVWOwogCQli cmVhazsKKwljYXNlIEk5MTVfUE1VX0lOVEVSUlVQVFM6CisJCWJyZWFrOworCWNhc2UgSTkxNV9Q TVVfUkM2X1JFU0lERU5DWToKKwkJaWYgKCFIQVNfUkM2KGk5MTUpKQorCQkJcmV0dXJuIC1FTk9E RVY7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRU5PRU5UOwogCX0KQEAgLTMxNCw2 ICszMzUsMjAgQEAgc3RhdGljIGludCBlbmdpbmVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVu dCAqZXZlbnQpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZW5naW5lX2V2ZW50X2luaXQo c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigqaTkxNSksIHBtdS5iYXNl KTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisKKwllbmdpbmUgPSBpbnRlbF9l bmdpbmVfbG9va3VwX3VzZXIoaTkxNSwgZW5naW5lX2V2ZW50X2NsYXNzKGV2ZW50KSwKKwkJCQkJ ICBlbmdpbmVfZXZlbnRfaW5zdGFuY2UoZXZlbnQpKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJu IC1FTk9ERVY7CisKKwlyZXR1cm4gZW5naW5lX2V2ZW50X3N0YXR1cyhlbmdpbmUsIGVuZ2luZV9l dmVudF9zYW1wbGUoZXZlbnQpKTsKK30KKwogc3RhdGljIGludCBpOTE1X3BtdV9ldmVudF9pbml0 KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9CkBAIC0zMzcsMzAgKzM3MiwxMCBAQCBzdGF0aWMgaW50IGk5MTVfcG11X2V2ZW50X2lu aXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCWlmICghY3B1bWFza190ZXN0X2NwdShldmVu dC0+Y3B1LCAmaTkxNV9wbXVfY3B1bWFzaykpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKGlz X2VuZ2luZV9ldmVudChldmVudCkpIHsKKwlpZiAoaXNfZW5naW5lX2V2ZW50KGV2ZW50KSkKIAkJ cmV0ID0gZW5naW5lX2V2ZW50X2luaXQoZXZlbnQpOwotCX0gZWxzZSB7Ci0JCXJldCA9IDA7Ci0J CXN3aXRjaCAoZXZlbnQtPmF0dHIuY29uZmlnKSB7Ci0JCWNhc2UgSTkxNV9QTVVfQUNUVUFMX0ZS RVFVRU5DWToKLQkJCWlmIChJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkx NSkpCi0JCQkJIC8qIFJlcXVpcmVzIGEgbXV0ZXggZm9yIHNhbXBsaW5nISAqLwotCQkJCXJldCA9 IC1FTk9ERVY7Ci0JCWNhc2UgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5DWToKLQkJCWlmIChJ TlRFTF9HRU4oaTkxNSkgPCA2KQotCQkJCXJldCA9IC1FTk9ERVY7Ci0JCQlicmVhazsKLQkJY2Fz ZSBJOTE1X1BNVV9JTlRFUlJVUFRTOgotCQkJYnJlYWs7Ci0JCWNhc2UgSTkxNV9QTVVfUkM2X1JF U0lERU5DWToKLQkJCWlmICghSEFTX1JDNihpOTE1KSkKLQkJCQlyZXQgPSAtRU5PREVWOwotCQkJ YnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlyZXQgPSAtRU5PRU5UOwotCQkJYnJlYWs7Ci0JCX0KLQl9 CisJZWxzZQorCQlyZXQgPSBjb25maWdfc3RhdHVzKGk5MTUsIGV2ZW50LT5hdHRyLmNvbmZpZyk7 OwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTY1Nyw1MiArNjcyLDkgQEAgc3RhdGlj IHNzaXplX3QgaTkxNV9wbXVfZXZlbnRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0dXJu IHNwcmludGYoYnVmLCAiY29uZmlnPTB4JWx4XG4iLCBlYXR0ci0+dmFsKTsKIH0KIAotI2RlZmlu ZSBJOTE1X0VWRU5UX0FUVFIoX25hbWUsIF9jb25maWcpIFwKLQkoJigoc3RydWN0IGk5MTVfZXh0 X2F0dHJpYnV0ZVtdKSB7IFwKLQkJeyAuYXR0ciA9IF9fQVRUUihfbmFtZSwgMDQ0NCwgaTkxNV9w bXVfZXZlbnRfc2hvdywgTlVMTCksIFwKLQkJICAudmFsID0gX2NvbmZpZywgfSBcCi0JfSlbMF0u YXR0ci5hdHRyKQotCi0jZGVmaW5lIEk5MTVfRVZFTlRfU1RSKF9uYW1lLCBfc3RyKSBcCi0JKCYo KHN0cnVjdCBwZXJmX3BtdV9ldmVudHNfYXR0cltdKSB7IFwKLQkJeyAuYXR0cgkgICAgID0gX19B VFRSKF9uYW1lLCAwNDQ0LCBwZXJmX2V2ZW50X3N5c2ZzX3Nob3csIE5VTEwpLCBcCi0JCSAgLmlk CSAgICAgPSAwLCBcCi0JCSAgLmV2ZW50X3N0ciA9IF9zdHIsIH0gXAotCX0pWzBdLmF0dHIuYXR0 cikKLQotI2RlZmluZSBJOTE1X0VWRU5UKF9uYW1lLCBfY29uZmlnLCBfdW5pdCkgXAotCUk5MTVf RVZFTlRfQVRUUihfbmFtZSwgX2NvbmZpZyksIFwKLQlJOTE1X0VWRU5UX1NUUihfbmFtZS51bml0 LCBfdW5pdCkKLQotI2RlZmluZSBJOTE1X0VOR0lORV9FVkVOVChfbmFtZSwgX2NsYXNzLCBfaW5z dGFuY2UsIF9zYW1wbGUpIFwKLQlJOTE1X0VWRU5UX0FUVFIoX25hbWUsIF9fSTkxNV9QTVVfRU5H SU5FKF9jbGFzcywgX2luc3RhbmNlLCBfc2FtcGxlKSksIFwKLQlJOTE1X0VWRU5UX1NUUihfbmFt ZS51bml0LCAibnMiKQotCi0jZGVmaW5lIEk5MTVfRU5HSU5FX0VWRU5UUyhfbmFtZSwgX2NsYXNz LCBfaW5zdGFuY2UpIFwKLQlJOTE1X0VOR0lORV9FVkVOVChfbmFtZSMjX2luc3RhbmNlLWJ1c3ks IF9jbGFzcywgX2luc3RhbmNlLCBJOTE1X1NBTVBMRV9CVVNZKSwgXAotCUk5MTVfRU5HSU5FX0VW RU5UKF9uYW1lIyNfaW5zdGFuY2Utc2VtYSwgX2NsYXNzLCBfaW5zdGFuY2UsIEk5MTVfU0FNUExF X1NFTUEpLCBcCi0JSTkxNV9FTkdJTkVfRVZFTlQoX25hbWUjI19pbnN0YW5jZS13YWl0LCBfY2xh c3MsIF9pbnN0YW5jZSwgSTkxNV9TQU1QTEVfV0FJVCkKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGUgKmk5MTVfcG11X2V2ZW50c19hdHRyc1tdID0gewotCUk5MTVfRU5HSU5FX0VWRU5UUyhyY3Ms IEk5MTVfRU5HSU5FX0NMQVNTX1JFTkRFUiwgMCksCi0JSTkxNV9FTkdJTkVfRVZFTlRTKGJjcywg STkxNV9FTkdJTkVfQ0xBU1NfQ09QWSwgMCksCi0JSTkxNV9FTkdJTkVfRVZFTlRTKHZjcywgSTkx NV9FTkdJTkVfQ0xBU1NfVklERU8sIDApLAotCUk5MTVfRU5HSU5FX0VWRU5UUyh2Y3MsIEk5MTVf RU5HSU5FX0NMQVNTX1ZJREVPLCAxKSwKLQlJOTE1X0VOR0lORV9FVkVOVFModmVjcywgSTkxNV9F TkdJTkVfQ0xBU1NfVklERU9fRU5IQU5DRSwgMCksCi0KLQlJOTE1X0VWRU5UKGFjdHVhbC1mcmVx dWVuY3ksICAgIEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1ksICAgICJNSHoiKSwKLQlJOTE1X0VW RU5UKHJlcXVlc3RlZC1mcmVxdWVuY3ksIEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1ksICJN SHoiKSwKLQotCUk5MTVfRVZFTlRfQVRUUihpbnRlcnJ1cHRzLCBJOTE1X1BNVV9JTlRFUlJVUFRT KSwKLQotCUk5MTVfRVZFTlQocmM2LXJlc2lkZW5jeSwgICBJOTE1X1BNVV9SQzZfUkVTSURFTkNZ LCAgICJucyIpLAotCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRl X2dyb3VwIGk5MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwID0geworc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAgPSB7CiAJLm5hbWUgPSAiZXZl bnRzIiwKLQkuYXR0cnMgPSBpOTE1X3BtdV9ldmVudHNfYXR0cnMsCisJLyogUGF0Y2ggaW4gYXR0 cnMgYXQgcnVudGltZS4gKi8KIH07CiAKIHN0YXRpYyBzc2l6ZV90CkBAIC03MjAsNyArNjkyLDcg QEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmk5MTVfY3B1bWFza19hdHRyc1tdID0gewogCU5V TEwsCiB9OwogCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBpOTE1X3BtdV9jcHVtYXNr X2F0dHJfZ3JvdXAgPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBpOTE1 X3BtdV9jcHVtYXNrX2F0dHJfZ3JvdXAgPSB7CiAJLmF0dHJzID0gaTkxNV9jcHVtYXNrX2F0dHJz LAogfTsKIApAQCAtNzMxLDYgKzcwMywxOTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKmk5MTVfcG11X2F0dHJfZ3JvdXBzW10gPSB7CiAJTlVMTAogfTsKIAorI2RlZmlu ZSBfX2V2ZW50KF9fY29uZmlnLCBfX25hbWUsIF9fdW5pdCkgXAoreyBcCisJLmNvbmZpZyA9IChf X2NvbmZpZyksIFwKKwkubmFtZSA9IChfX25hbWUpLCBcCisJLnVuaXQgPSAoX191bml0KSwgXAor fQorCisjZGVmaW5lIF9fZW5naW5lX2V2ZW50KF9fc2FtcGxlLCBfX25hbWUpIFwKK3sgXAorCS5z YW1wbGUgPSAoX19zYW1wbGUpLCBcCisJLm5hbWUgPSAoX19uYW1lKSwgXAorfQorCitzdGF0aWMg c3RydWN0IGk5MTVfZXh0X2F0dHJpYnV0ZSAqCithZGRfaTkxNV9hdHRyKHN0cnVjdCBpOTE1X2V4 dF9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKm5hbWUsIHU2NCBjb25maWcpCit7CisJYXR0 ci0+YXR0ci5hdHRyLm5hbWUgPSBuYW1lOworCWF0dHItPmF0dHIuYXR0ci5tb2RlID0gMDQ0NDsK KwlhdHRyLT5hdHRyLnNob3cgPSBpOTE1X3BtdV9ldmVudF9zaG93OworCWF0dHItPnZhbCA9IGNv bmZpZzsKKworCXJldHVybiArK2F0dHI7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGVyZl9wbXVfZXZl bnRzX2F0dHIgKgorYWRkX3BtdV9hdHRyKHN0cnVjdCBwZXJmX3BtdV9ldmVudHNfYXR0ciAqYXR0 ciwgY29uc3QgY2hhciAqbmFtZSwKKwkgICAgIGNvbnN0IGNoYXIgKnN0cikKK3sKKwlhdHRyLT5h dHRyLmF0dHIubmFtZSA9IG5hbWU7CisJYXR0ci0+YXR0ci5hdHRyLm1vZGUgPSAwNDQ0OworCWF0 dHItPmF0dHIuc2hvdyA9IHBlcmZfZXZlbnRfc3lzZnNfc2hvdzsKKwlhdHRyLT5ldmVudF9zdHIg PSBzdHI7CisKKwlyZXR1cm4gKythdHRyOworfQorCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAq KgorY3JlYXRlX2V2ZW50X2F0dHJpYnV0ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJCXU2NCBjb25maWc7CisJCWNvbnN0IGNoYXIg Km5hbWU7CisJCWNvbnN0IGNoYXIgKnVuaXQ7CisJfSBldmVudHNbXSA9IHsKKwkJX19ldmVudChJ OTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZLCAiYWN0dWFsLWZyZXF1ZW5jeSIsICJNSHoiKSwKKwkJ X19ldmVudChJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZLCAicmVxdWVzdGVkLWZyZXF1ZW5j eSIsICJNSHoiKSwKKwkJX19ldmVudChJOTE1X1BNVV9JTlRFUlJVUFRTLCAiaW50ZXJydXB0cyIs IE5VTEwpLAorCQlfX2V2ZW50KEk5MTVfUE1VX1JDNl9SRVNJREVOQ1ksICJyYzYtcmVzaWRlbmN5 IiwgIm5zIiksCisJfTsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwkJZW51bSBkcm1faTkxNV9w bXVfZW5naW5lX3NhbXBsZSBzYW1wbGU7CisJCWNoYXIgKm5hbWU7CisJfSBlbmdpbmVfZXZlbnRz W10gPSB7CisJCV9fZW5naW5lX2V2ZW50KEk5MTVfU0FNUExFX0JVU1ksICJidXN5IiksCisJCV9f ZW5naW5lX2V2ZW50KEk5MTVfU0FNUExFX1NFTUEsICJzZW1hIiksCisJCV9fZW5naW5lX2V2ZW50 KEk5MTVfU0FNUExFX1dBSVQsICJ3YWl0IiksCisJfTsKKwl1bnNpZ25lZCBpbnQgY291bnQgPSAw OworCXN0cnVjdCBwZXJmX3BtdV9ldmVudHNfYXR0ciAqcG11X2F0dHIgPSBOVUxMLCAqcG11X2l0 ZXI7CisJc3RydWN0IGk5MTVfZXh0X2F0dHJpYnV0ZSAqaTkxNV9hdHRyID0gTlVMTCwgKmk5MTVf aXRlcjsKKwlzdHJ1Y3QgYXR0cmlidXRlICoqYXR0ciA9IE5VTEwsICoqYXR0cl9pdGVyOworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK Kwl1bnNpZ25lZCBpbnQgaTsKKworCS8qIENvdW50IGhvdyBtYW55IGNvdW50ZXJzIHdlIHdpbGwg YmUgZXhwb3NpbmcuICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXZlbnRzKTsgaSsr KSB7CisJCWlmICghY29uZmlnX3N0YXR1cyhpOTE1LCBldmVudHNbaV0uY29uZmlnKSkKKwkJCWNv dW50Kys7CisJfQorCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZW5naW5lX2V2ZW50cyk7IGkrKykgeworCQkJaWYgKCFl bmdpbmVfZXZlbnRfc3RhdHVzKGVuZ2luZSwKKwkJCQkJCSBlbmdpbmVfZXZlbnRzW2ldLnNhbXBs ZSkpCisJCQkJY291bnQrKzsKKwkJfQorCX0KKworCS8qIEFsbG9jYXRlIGF0dHJpYnV0ZSBvYmpl Y3RzIGFuZCB0YWJsZS4gKi8KKwlpOTE1X2F0dHIgPSBremFsbG9jKGNvdW50ICogc2l6ZW9mKCpp OTE1X2F0dHIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWk5MTVfYXR0cikKKwkJZ290byBlcnJfYWxs b2M7CisKKwlwbXVfYXR0ciA9IGt6YWxsb2MoY291bnQgKiBzaXplb2YoKnBtdV9hdHRyKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFwbXVfYXR0cikKKwkJZ290byBlcnJfYWxsb2M7CisKKwkvKiBNYXgg b25lIHBvaW50ZXIgb2YgZWFjaCBhdHRyaWJ1dGUgdHlwZSBwbHVzIGEgdGVybWluYXRpb24gZW50 cnkuICovCisJYXR0ciA9IGt6YWxsb2MoKGNvdW50ICogMiArIDEpICogc2l6ZW9mKGF0dHIpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIWF0dHIpCisJCWdvdG8gZXJyX2FsbG9jOworCisJaTkxNV9pdGVy ID0gaTkxNV9hdHRyOworCXBtdV9pdGVyID0gcG11X2F0dHI7CisJYXR0cl9pdGVyID0gYXR0cjsK KworCS8qIEluaXRpYWxpemUgc3VwcG9ydGVkIG5vbi1lbmdpbmUgY291bnRlcnMuICovCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXZlbnRzKTsgaSsrKSB7CisJCWNoYXIgKnN0cjsKKwor CQlpZiAoY29uZmlnX3N0YXR1cyhpOTE1LCBldmVudHNbaV0uY29uZmlnKSkKKwkJCWNvbnRpbnVl OworCisJCXN0ciA9IGtzdHJkdXAoZXZlbnRzW2ldLm5hbWUsIEdGUF9LRVJORUwpOworCQlpZiAo IXN0cikKKwkJCWdvdG8gZXJyOworCisJCSphdHRyX2l0ZXIrKyA9ICZpOTE1X2l0ZXItPmF0dHIu YXR0cjsKKwkJaTkxNV9pdGVyID0gYWRkX2k5MTVfYXR0cihpOTE1X2l0ZXIsIHN0ciwgZXZlbnRz W2ldLmNvbmZpZyk7CisKKwkJaWYgKGV2ZW50c1tpXS51bml0KSB7CisJCQlzdHIgPSBrYXNwcmlu dGYoR0ZQX0tFUk5FTCwgIiVzLnVuaXQiLCBldmVudHNbaV0ubmFtZSk7CisJCQlpZiAoIXN0cikK KwkJCQlnb3RvIGVycjsKKworCQkJKmF0dHJfaXRlcisrID0gJnBtdV9pdGVyLT5hdHRyLmF0dHI7 CisJCQlwbXVfaXRlciA9IGFkZF9wbXVfYXR0cihwbXVfaXRlciwgc3RyLCBldmVudHNbaV0udW5p dCk7CisJCX0KKwl9CisKKwkvKiBJbml0aWFsaXplIHN1cHBvcnRlZCBlbmdpbmUgY291bnRlcnMu ICovCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoZW5naW5lX2V2ZW50cyk7IGkrKykgeworCQkJY2hhciAqc3RyOworCisJ CQlpZiAoZW5naW5lX2V2ZW50X3N0YXR1cyhlbmdpbmUsCisJCQkJCQllbmdpbmVfZXZlbnRzW2ld LnNhbXBsZSkpCisJCQkJY29udGludWU7CisKKwkJCXN0ciA9IGthc3ByaW50ZihHRlBfS0VSTkVM LCAiJXMtJXMiLAorCQkJCQllbmdpbmUtPm5hbWUsIGVuZ2luZV9ldmVudHNbaV0ubmFtZSk7CisJ CQlpZiAoIXN0cikKKwkJCQlnb3RvIGVycjsKKworCQkJKmF0dHJfaXRlcisrID0gJmk5MTVfaXRl ci0+YXR0ci5hdHRyOworCQkJaTkxNV9pdGVyID0KKwkJCQlhZGRfaTkxNV9hdHRyKGk5MTVfaXRl ciwgc3RyLAorCQkJCQkgICAgICBfX0k5MTVfUE1VX0VOR0lORShlbmdpbmUtPmNsYXNzLAorCQkJ CQkJCQllbmdpbmUtPmluc3RhbmNlLAorCQkJCQkJCQllbmdpbmVfZXZlbnRzW2ldLnNhbXBsZSkp OworCisJCQlzdHIgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIiVzLSVzLnVuaXQiLAorCQkJCQll bmdpbmUtPm5hbWUsIGVuZ2luZV9ldmVudHNbaV0ubmFtZSk7CisJCQlpZiAoIXN0cikKKwkJCQln b3RvIGVycjsKKworCQkJKmF0dHJfaXRlcisrID0gJnBtdV9pdGVyLT5hdHRyLmF0dHI7CisJCQlw bXVfaXRlciA9IGFkZF9wbXVfYXR0cihwbXVfaXRlciwgc3RyLCAibnMiKTsKKwkJfQorCX0KKwor CWk5MTUtPnBtdS5pOTE1X2F0dHIgPSBpOTE1X2F0dHI7CisJaTkxNS0+cG11LnBtdV9hdHRyID0g cG11X2F0dHI7CisKKwlyZXR1cm4gYXR0cjsKKworZXJyOjsKKwlmb3IgKGF0dHJfaXRlciA9IGF0 dHI7ICphdHRyX2l0ZXI7IGF0dHJfaXRlcisrKQorCQlrZnJlZSgoKmF0dHJfaXRlciktPm5hbWUp OworCitlcnJfYWxsb2M6CisJa2ZyZWUoYXR0cik7CisJa2ZyZWUoaTkxNV9hdHRyKTsKKwlrZnJl ZShwbXVfYXR0cik7CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9ldmVu dF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBh dHRyaWJ1dGUgKiphdHRyX2l0ZXIgPSBpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cC5hdHRyczsK KworCWZvciAoOyAqYXR0cl9pdGVyOyBhdHRyX2l0ZXIrKykKKwkJa2ZyZWUoKCphdHRyX2l0ZXIp LT5uYW1lKTsKKworCWtmcmVlKGk5MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzKTsKKwlr ZnJlZShpOTE1LT5wbXUuaTkxNV9hdHRyKTsKKwlrZnJlZShpOTE1LT5wbXUucG11X2F0dHIpOwor CisJaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAuYXR0cnMgPSBOVUxMOworCWk5MTUtPnBtdS5p OTE1X2F0dHIgPSBOVUxMOworCWk5MTUtPnBtdS5wbXVfYXR0ciA9IE5VTEw7Cit9CisKIHN0YXRp YyBpbnQgaTkxNV9wbXVfY3B1X29ubGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rf bm9kZSAqbm9kZSkKIHsKIAlzdHJ1Y3QgaTkxNV9wbXUgKnBtdSA9IGhsaXN0X2VudHJ5X3NhZmUo bm9kZSwgdHlwZW9mKCpwbXUpLCBub2RlKTsKQEAgLTgwNiw2ICs5NjMsMTIgQEAgdm9pZCBpOTE1 X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJcmV0dXJuOwog CX0KIAorCWk5MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzID0gY3JlYXRlX2V2ZW50X2F0 dHJpYnV0ZXMoaTkxNSk7CisJaWYgKCFpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cC5hdHRycykg eworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKIAlpOTE1LT5wbXUuYmFzZS5h dHRyX2dyb3Vwcwk9IGk5MTVfcG11X2F0dHJfZ3JvdXBzOwogCWk5MTUtPnBtdS5iYXNlLnRhc2tf Y3R4X25yCT0gcGVyZl9pbnZhbGlkX2NvbnRleHQ7CiAJaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5p dAk9IGk5MTVfcG11X2V2ZW50X2luaXQ7CkBAIC04MzgsNiArMTAwMSw3IEBAIHZvaWQgaTkxNV9w bXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJcGVyZl9wbXVfdW5y ZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogZXJyOgogCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2lu aXQgPSBOVUxMOworCWZyZWVfZXZlbnRfYXR0cmlidXRlcyhpOTE1KTsKIAlEUk1fTk9URSgiRmFp bGVkIHRvIHJlZ2lzdGVyIFBNVSEgKGVycj0lZClcbiIsIHJldCk7CiB9CiAKQEAgLTg2Miw0ICsx MDI2LDUgQEAgdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQogCiAJcGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogCWk5MTUt PnBtdS5iYXNlLmV2ZW50X2luaXQgPSBOVUxMOworCWZyZWVfZXZlbnRfYXR0cmlidXRlcyhpOTE1 KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5oCmluZGV4IDQwYzE1NGQxMzU2NS4uNWEyZTAxM2E1 NmJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmgKQEAgLTk0LDYgKzk0LDE0IEBAIHN0cnVjdCBp OTE1X3BtdSB7CiAJICogc3RydWN0IGludGVsX2VuZ2luZV9jcy4KIAkgKi8KIAlzdHJ1Y3QgaTkx NV9wbXVfc2FtcGxlIHNhbXBsZVtfX0k5MTVfTlVNX1BNVV9TQU1QTEVSU107CisJLyoqCisJICog QGk5MTVfYXR0cjogTWVtb3J5IGJsb2NrIGhvbGRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMuCisJICov CisJdm9pZCAqaTkxNV9hdHRyOworCS8qKgorCSAqIEBwbXVfYXR0cjogTWVtb3J5IGJsb2NrIGhv bGRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMuCisJICovCisJdm9pZCAqcG11X2F0dHI7CiB9OwogCiAj aWZkZWYgQ09ORklHX1BFUkZfRVZFTlRTCi0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=