From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v3] drm/i915/pmu: Only enumerate available counters in sysfs Date: Thu, 11 Jan 2018 08:35:25 +0000 Message-ID: <20180111083525.32394-1-tvrtko.ursulin@linux.intel.com> References: <151550901279.23681.13991324583765435108@mail.alporthouse.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 522186E3ED for ; Thu, 11 Jan 2018 08:35:36 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id e41so1077291wre.9 for ; Thu, 11 Jan 2018 00:35:36 -0800 (PST) In-Reply-To: <151550901279.23681.13991324583765435108@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 KQoKdjM6CiAqIEZpeGVkIGRvdWJsZSBzZW1pLWNvbG9uLiAoQ2hyaXMgV2lsc29uKQoKU2lnbmVk LW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wbXUuYyB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5oIHwgICA4ICsKIDIgZmlsZXMgY2hh bmdlZCwgMjUxIGluc2VydGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BtdS5jCmluZGV4IDU1YThhMWUyOTQyNC4uOTEzOWJjOGRmODJiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcG11LmMKQEAgLTI5MCwyMyArMjkwLDQ0IEBAIHN0YXRpYyB2b2lkIGk5MTVfcG11X2V2ZW50 X2Rlc3Ryb3koc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCVdBUk5fT04oZXZlbnQtPnBhcmVu dCk7CiB9CiAKLXN0YXRpYyBpbnQgZW5naW5lX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50KQorc3RhdGljIGludAorZW5naW5lX2V2ZW50X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCisJCSAgICBlbnVtIGRybV9pOTE1X3BtdV9lbmdpbmVfc2FtcGxlIHNh bXBsZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Ci0JCWNvbnRhaW5lcl9v ZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUpLCBwbXUuYmFzZSk7Ci0KLQlpZiAoIWludGVsX2Vu Z2luZV9sb29rdXBfdXNlcihpOTE1LCBlbmdpbmVfZXZlbnRfY2xhc3MoZXZlbnQpLAotCQkJCSAg ICAgIGVuZ2luZV9ldmVudF9pbnN0YW5jZShldmVudCkpKQotCQlyZXR1cm4gLUVOT0RFVjsKLQot CXN3aXRjaCAoZW5naW5lX2V2ZW50X3NhbXBsZShldmVudCkpIHsKKwlzd2l0Y2ggKHNhbXBsZSkg ewogCWNhc2UgSTkxNV9TQU1QTEVfQlVTWToKIAljYXNlIEk5MTVfU0FNUExFX1dBSVQ6CiAJCWJy ZWFrOwogCWNhc2UgSTkxNV9TQU1QTEVfU0VNQToKKwkJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5 MTUpIDwgNikKKwkJCXJldHVybiAtRU5PREVWOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1 cm4gLUVOT0VOVDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29uZmlnX3N0 YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTY0IGNvbmZpZykKK3sKKwlzd2l0 Y2ggKGNvbmZpZykgeworCWNhc2UgSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5DWToKKwkJaWYgKElT X1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhpOTE1KSkKKwkJCS8qIFJlcXVpcmVz IGEgbXV0ZXggZm9yIHNhbXBsaW5nISAqLworCQkJcmV0dXJuIC1FTk9ERVY7CisJCS8qIEZhbGwt dGhyb3VnaC4gKi8KKwljYXNlIEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1k6CiAJCWlmIChJ TlRFTF9HRU4oaTkxNSkgPCA2KQogCQkJcmV0dXJuIC1FTk9ERVY7CiAJCWJyZWFrOworCWNhc2Ug STkxNV9QTVVfSU5URVJSVVBUUzoKKwkJYnJlYWs7CisJY2FzZSBJOTE1X1BNVV9SQzZfUkVTSURF TkNZOgorCQlpZiAoIUhBU19SQzYoaTkxNSkpCisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FTk9FTlQ7CiAJfQpAQCAtMzE0LDYgKzMzNSwyMCBAQCBz dGF0aWMgaW50IGVuZ2luZV9ldmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIAly ZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBlbmdpbmVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9l dmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQorCQljb250 YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwgcG11LmJhc2UpOworCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBf dXNlcihpOTE1LCBlbmdpbmVfZXZlbnRfY2xhc3MoZXZlbnQpLAorCQkJCQkgIGVuZ2luZV9ldmVu dF9pbnN0YW5jZShldmVudCkpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVOT0RFVjsKKwor CXJldHVybiBlbmdpbmVfZXZlbnRfc3RhdHVzKGVuZ2luZSwgZW5naW5lX2V2ZW50X3NhbXBsZShl dmVudCkpOworfQorCiBzdGF0aWMgaW50IGk5MTVfcG11X2V2ZW50X2luaXQoc3RydWN0IHBlcmZf ZXZlbnQgKmV2ZW50KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KQEAgLTMz NywzMCArMzcyLDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9wbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQpCiAJaWYgKCFjcHVtYXNrX3Rlc3RfY3B1KGV2ZW50LT5jcHUsICZpOTE1 X3BtdV9jcHVtYXNrKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoaXNfZW5naW5lX2V2ZW50 KGV2ZW50KSkgeworCWlmIChpc19lbmdpbmVfZXZlbnQoZXZlbnQpKQogCQlyZXQgPSBlbmdpbmVf ZXZlbnRfaW5pdChldmVudCk7Ci0JfSBlbHNlIHsKLQkJcmV0ID0gMDsKLQkJc3dpdGNoIChldmVu dC0+YXR0ci5jb25maWcpIHsKLQkJY2FzZSBJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZOgotCQkJ aWYgKElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhpOTE1KSkKLQkJCQkgLyog UmVxdWlyZXMgYSBtdXRleCBmb3Igc2FtcGxpbmchICovCi0JCQkJcmV0ID0gLUVOT0RFVjsKLQkJ Y2FzZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZOgotCQkJaWYgKElOVEVMX0dFTihpOTE1 KSA8IDYpCi0JCQkJcmV0ID0gLUVOT0RFVjsKLQkJCWJyZWFrOwotCQljYXNlIEk5MTVfUE1VX0lO VEVSUlVQVFM6Ci0JCQlicmVhazsKLQkJY2FzZSBJOTE1X1BNVV9SQzZfUkVTSURFTkNZOgotCQkJ aWYgKCFIQVNfUkM2KGk5MTUpKQotCQkJCXJldCA9IC1FTk9ERVY7Ci0JCQlicmVhazsKLQkJZGVm YXVsdDoKLQkJCXJldCA9IC1FTk9FTlQ7Ci0JCQlicmVhazsKLQkJfQotCX0KKwllbHNlCisJCXJl dCA9IGNvbmZpZ19zdGF0dXMoaTkxNSwgZXZlbnQtPmF0dHIuY29uZmlnKTsKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCkBAIC02NTcsNTIgKzY3Miw5IEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVf cG11X2V2ZW50X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAogCXJldHVybiBzcHJpbnRmKGJ1Ziwg ImNvbmZpZz0weCVseFxuIiwgZWF0dHItPnZhbCk7CiB9CiAKLSNkZWZpbmUgSTkxNV9FVkVOVF9B VFRSKF9uYW1lLCBfY29uZmlnKSBcCi0JKCYoKHN0cnVjdCBpOTE1X2V4dF9hdHRyaWJ1dGVbXSkg eyBcCi0JCXsgLmF0dHIgPSBfX0FUVFIoX25hbWUsIDA0NDQsIGk5MTVfcG11X2V2ZW50X3Nob3cs IE5VTEwpLCBcCi0JCSAgLnZhbCA9IF9jb25maWcsIH0gXAotCX0pWzBdLmF0dHIuYXR0cikKLQot I2RlZmluZSBJOTE1X0VWRU5UX1NUUihfbmFtZSwgX3N0cikgXAotCSgmKChzdHJ1Y3QgcGVyZl9w bXVfZXZlbnRzX2F0dHJbXSkgeyBcCi0JCXsgLmF0dHIJICAgICA9IF9fQVRUUihfbmFtZSwgMDQ0 NCwgcGVyZl9ldmVudF9zeXNmc19zaG93LCBOVUxMKSwgXAotCQkgIC5pZAkgICAgID0gMCwgXAot CQkgIC5ldmVudF9zdHIgPSBfc3RyLCB9IFwKLQl9KVswXS5hdHRyLmF0dHIpCi0KLSNkZWZpbmUg STkxNV9FVkVOVChfbmFtZSwgX2NvbmZpZywgX3VuaXQpIFwKLQlJOTE1X0VWRU5UX0FUVFIoX25h bWUsIF9jb25maWcpLCBcCi0JSTkxNV9FVkVOVF9TVFIoX25hbWUudW5pdCwgX3VuaXQpCi0KLSNk ZWZpbmUgSTkxNV9FTkdJTkVfRVZFTlQoX25hbWUsIF9jbGFzcywgX2luc3RhbmNlLCBfc2FtcGxl KSBcCi0JSTkxNV9FVkVOVF9BVFRSKF9uYW1lLCBfX0k5MTVfUE1VX0VOR0lORShfY2xhc3MsIF9p bnN0YW5jZSwgX3NhbXBsZSkpLCBcCi0JSTkxNV9FVkVOVF9TVFIoX25hbWUudW5pdCwgIm5zIikK LQotI2RlZmluZSBJOTE1X0VOR0lORV9FVkVOVFMoX25hbWUsIF9jbGFzcywgX2luc3RhbmNlKSBc Ci0JSTkxNV9FTkdJTkVfRVZFTlQoX25hbWUjI19pbnN0YW5jZS1idXN5LCBfY2xhc3MsIF9pbnN0 YW5jZSwgSTkxNV9TQU1QTEVfQlVTWSksIFwKLQlJOTE1X0VOR0lORV9FVkVOVChfbmFtZSMjX2lu c3RhbmNlLXNlbWEsIF9jbGFzcywgX2luc3RhbmNlLCBJOTE1X1NBTVBMRV9TRU1BKSwgXAotCUk5 MTVfRU5HSU5FX0VWRU5UKF9uYW1lIyNfaW5zdGFuY2Utd2FpdCwgX2NsYXNzLCBfaW5zdGFuY2Us IEk5MTVfU0FNUExFX1dBSVQpCi0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICppOTE1X3BtdV9l dmVudHNfYXR0cnNbXSA9IHsKLQlJOTE1X0VOR0lORV9FVkVOVFMocmNzLCBJOTE1X0VOR0lORV9D TEFTU19SRU5ERVIsIDApLAotCUk5MTVfRU5HSU5FX0VWRU5UUyhiY3MsIEk5MTVfRU5HSU5FX0NM QVNTX0NPUFksIDApLAotCUk5MTVfRU5HSU5FX0VWRU5UUyh2Y3MsIEk5MTVfRU5HSU5FX0NMQVNT X1ZJREVPLCAwKSwKLQlJOTE1X0VOR0lORV9FVkVOVFModmNzLCBJOTE1X0VOR0lORV9DTEFTU19W SURFTywgMSksCi0JSTkxNV9FTkdJTkVfRVZFTlRTKHZlY3MsIEk5MTVfRU5HSU5FX0NMQVNTX1ZJ REVPX0VOSEFOQ0UsIDApLAotCi0JSTkxNV9FVkVOVChhY3R1YWwtZnJlcXVlbmN5LCAgICBJOTE1 X1BNVV9BQ1RVQUxfRlJFUVVFTkNZLCAgICAiTUh6IiksCi0JSTkxNV9FVkVOVChyZXF1ZXN0ZWQt ZnJlcXVlbmN5LCBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZLCAiTUh6IiksCi0KLQlJOTE1 X0VWRU5UX0FUVFIoaW50ZXJydXB0cywgSTkxNV9QTVVfSU5URVJSVVBUUyksCi0KLQlJOTE1X0VW RU5UKHJjNi1yZXNpZGVuY3ksICAgSTkxNV9QTVVfUkM2X1JFU0lERU5DWSwgICAibnMiKSwKLQot CU5VTEwsCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBpOTE1X3Bt dV9ldmVudHNfYXR0cl9ncm91cCA9IHsKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGk5 MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwID0gewogCS5uYW1lID0gImV2ZW50cyIsCi0JLmF0dHJz ID0gaTkxNV9wbXVfZXZlbnRzX2F0dHJzLAorCS8qIFBhdGNoIGluIGF0dHJzIGF0IHJ1bnRpbWUu ICovCiB9OwogCiBzdGF0aWMgc3NpemVfdApAQCAtNzIwLDcgKzY5Miw3IEBAIHN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICppOTE1X2NwdW1hc2tfYXR0cnNbXSA9IHsKIAlOVUxMLAogfTsKIAotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgaTkxNV9wbXVfY3B1bWFza19hdHRyX2dyb3VwID0g eworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgaTkxNV9wbXVfY3B1bWFza19h dHRyX2dyb3VwID0gewogCS5hdHRycyA9IGk5MTVfY3B1bWFza19hdHRycywKIH07CiAKQEAgLTcz MSw2ICs3MDMsMTkxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICppOTE1 X3BtdV9hdHRyX2dyb3Vwc1tdID0gewogCU5VTEwKIH07CiAKKyNkZWZpbmUgX19ldmVudChfX2Nv bmZpZywgX19uYW1lLCBfX3VuaXQpIFwKK3sgXAorCS5jb25maWcgPSAoX19jb25maWcpLCBcCisJ Lm5hbWUgPSAoX19uYW1lKSwgXAorCS51bml0ID0gKF9fdW5pdCksIFwKK30KKworI2RlZmluZSBf X2VuZ2luZV9ldmVudChfX3NhbXBsZSwgX19uYW1lKSBcCit7IFwKKwkuc2FtcGxlID0gKF9fc2Ft cGxlKSwgXAorCS5uYW1lID0gKF9fbmFtZSksIFwKK30KKworc3RhdGljIHN0cnVjdCBpOTE1X2V4 dF9hdHRyaWJ1dGUgKgorYWRkX2k5MTVfYXR0cihzdHJ1Y3QgaTkxNV9leHRfYXR0cmlidXRlICph dHRyLCBjb25zdCBjaGFyICpuYW1lLCB1NjQgY29uZmlnKQoreworCWF0dHItPmF0dHIuYXR0ci5u YW1lID0gbmFtZTsKKwlhdHRyLT5hdHRyLmF0dHIubW9kZSA9IDA0NDQ7CisJYXR0ci0+YXR0ci5z aG93ID0gaTkxNV9wbXVfZXZlbnRfc2hvdzsKKwlhdHRyLT52YWwgPSBjb25maWc7CisKKwlyZXR1 cm4gKythdHRyOworfQorCitzdGF0aWMgc3RydWN0IHBlcmZfcG11X2V2ZW50c19hdHRyICoKK2Fk ZF9wbXVfYXR0cihzdHJ1Y3QgcGVyZl9wbXVfZXZlbnRzX2F0dHIgKmF0dHIsIGNvbnN0IGNoYXIg Km5hbWUsCisJICAgICBjb25zdCBjaGFyICpzdHIpCit7CisJYXR0ci0+YXR0ci5hdHRyLm5hbWUg PSBuYW1lOworCWF0dHItPmF0dHIuYXR0ci5tb2RlID0gMDQ0NDsKKwlhdHRyLT5hdHRyLnNob3cg PSBwZXJmX2V2ZW50X3N5c2ZzX3Nob3c7CisJYXR0ci0+ZXZlbnRfc3RyID0gc3RyOworCisJcmV0 dXJuICsrYXR0cjsKK30KKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKioKK2NyZWF0ZV9ldmVu dF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0YXRpYyBj b25zdCBzdHJ1Y3QgeworCQl1NjQgY29uZmlnOworCQljb25zdCBjaGFyICpuYW1lOworCQljb25z dCBjaGFyICp1bml0OworCX0gZXZlbnRzW10gPSB7CisJCV9fZXZlbnQoSTkxNV9QTVVfQUNUVUFM X0ZSRVFVRU5DWSwgImFjdHVhbC1mcmVxdWVuY3kiLCAiTUh6IiksCisJCV9fZXZlbnQoSTkxNV9Q TVVfUkVRVUVTVEVEX0ZSRVFVRU5DWSwgInJlcXVlc3RlZC1mcmVxdWVuY3kiLCAiTUh6IiksCisJ CV9fZXZlbnQoSTkxNV9QTVVfSU5URVJSVVBUUywgImludGVycnVwdHMiLCBOVUxMKSwKKwkJX19l dmVudChJOTE1X1BNVV9SQzZfUkVTSURFTkNZLCAicmM2LXJlc2lkZW5jeSIsICJucyIpLAorCX07 CisJc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJCWVudW0gZHJtX2k5MTVfcG11X2VuZ2luZV9zYW1w bGUgc2FtcGxlOworCQljaGFyICpuYW1lOworCX0gZW5naW5lX2V2ZW50c1tdID0geworCQlfX2Vu Z2luZV9ldmVudChJOTE1X1NBTVBMRV9CVVNZLCAiYnVzeSIpLAorCQlfX2VuZ2luZV9ldmVudChJ OTE1X1NBTVBMRV9TRU1BLCAic2VtYSIpLAorCQlfX2VuZ2luZV9ldmVudChJOTE1X1NBTVBMRV9X QUlULCAid2FpdCIpLAorCX07CisJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKwlzdHJ1Y3QgcGVy Zl9wbXVfZXZlbnRzX2F0dHIgKnBtdV9hdHRyID0gTlVMTCwgKnBtdV9pdGVyOworCXN0cnVjdCBp OTE1X2V4dF9hdHRyaWJ1dGUgKmk5MTVfYXR0ciA9IE5VTEwsICppOTE1X2l0ZXI7CisJc3RydWN0 IGF0dHJpYnV0ZSAqKmF0dHIgPSBOVUxMLCAqKmF0dHJfaXRlcjsKKwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJdW5zaWduZWQgaW50 IGk7CisKKwkvKiBDb3VudCBob3cgbWFueSBjb3VudGVycyB3ZSB3aWxsIGJlIGV4cG9zaW5nLiAq LworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGV2ZW50cyk7IGkrKykgeworCQlpZiAoIWNv bmZpZ19zdGF0dXMoaTkxNSwgZXZlbnRzW2ldLmNvbmZpZykpCisJCQljb3VudCsrOworCX0KKwor CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGVuZ2luZV9ldmVudHMpOyBpKyspIHsKKwkJCWlmICghZW5naW5lX2V2ZW50X3N0 YXR1cyhlbmdpbmUsCisJCQkJCQkgZW5naW5lX2V2ZW50c1tpXS5zYW1wbGUpKQorCQkJCWNvdW50 Kys7CisJCX0KKwl9CisKKwkvKiBBbGxvY2F0ZSBhdHRyaWJ1dGUgb2JqZWN0cyBhbmQgdGFibGUu ICovCisJaTkxNV9hdHRyID0ga3phbGxvYyhjb3VudCAqIHNpemVvZigqaTkxNV9hdHRyKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFpOTE1X2F0dHIpCisJCWdvdG8gZXJyX2FsbG9jOworCisJcG11X2F0 dHIgPSBremFsbG9jKGNvdW50ICogc2l6ZW9mKCpwbXVfYXR0ciksIEdGUF9LRVJORUwpOworCWlm ICghcG11X2F0dHIpCisJCWdvdG8gZXJyX2FsbG9jOworCisJLyogTWF4IG9uZSBwb2ludGVyIG9m IGVhY2ggYXR0cmlidXRlIHR5cGUgcGx1cyBhIHRlcm1pbmF0aW9uIGVudHJ5LiAqLworCWF0dHIg PSBremFsbG9jKChjb3VudCAqIDIgKyAxKSAqIHNpemVvZihhdHRyKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFhdHRyKQorCQlnb3RvIGVycl9hbGxvYzsKKworCWk5MTVfaXRlciA9IGk5MTVfYXR0cjsK KwlwbXVfaXRlciA9IHBtdV9hdHRyOworCWF0dHJfaXRlciA9IGF0dHI7CisKKwkvKiBJbml0aWFs aXplIHN1cHBvcnRlZCBub24tZW5naW5lIGNvdW50ZXJzLiAqLworCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGV2ZW50cyk7IGkrKykgeworCQljaGFyICpzdHI7CisKKwkJaWYgKGNvbmZpZ19z dGF0dXMoaTkxNSwgZXZlbnRzW2ldLmNvbmZpZykpCisJCQljb250aW51ZTsKKworCQlzdHIgPSBr c3RyZHVwKGV2ZW50c1tpXS5uYW1lLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFzdHIpCisJCQlnb3Rv IGVycjsKKworCQkqYXR0cl9pdGVyKysgPSAmaTkxNV9pdGVyLT5hdHRyLmF0dHI7CisJCWk5MTVf aXRlciA9IGFkZF9pOTE1X2F0dHIoaTkxNV9pdGVyLCBzdHIsIGV2ZW50c1tpXS5jb25maWcpOwor CisJCWlmIChldmVudHNbaV0udW5pdCkgeworCQkJc3RyID0ga2FzcHJpbnRmKEdGUF9LRVJORUws ICIlcy51bml0IiwgZXZlbnRzW2ldLm5hbWUpOworCQkJaWYgKCFzdHIpCisJCQkJZ290byBlcnI7 CisKKwkJCSphdHRyX2l0ZXIrKyA9ICZwbXVfaXRlci0+YXR0ci5hdHRyOworCQkJcG11X2l0ZXIg PSBhZGRfcG11X2F0dHIocG11X2l0ZXIsIHN0ciwgZXZlbnRzW2ldLnVuaXQpOworCQl9CisJfQor CisJLyogSW5pdGlhbGl6ZSBzdXBwb3J0ZWQgZW5naW5lIGNvdW50ZXJzLiAqLworCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGVuZ2luZV9ldmVudHMpOyBpKyspIHsKKwkJCWNoYXIgKnN0cjsKKworCQkJaWYgKGVuZ2luZV9l dmVudF9zdGF0dXMoZW5naW5lLAorCQkJCQkJZW5naW5lX2V2ZW50c1tpXS5zYW1wbGUpKQorCQkJ CWNvbnRpbnVlOworCisJCQlzdHIgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIiVzLSVzIiwKKwkJ CQkJZW5naW5lLT5uYW1lLCBlbmdpbmVfZXZlbnRzW2ldLm5hbWUpOworCQkJaWYgKCFzdHIpCisJ CQkJZ290byBlcnI7CisKKwkJCSphdHRyX2l0ZXIrKyA9ICZpOTE1X2l0ZXItPmF0dHIuYXR0cjsK KwkJCWk5MTVfaXRlciA9CisJCQkJYWRkX2k5MTVfYXR0cihpOTE1X2l0ZXIsIHN0ciwKKwkJCQkJ ICAgICAgX19JOTE1X1BNVV9FTkdJTkUoZW5naW5lLT5jbGFzcywKKwkJCQkJCQkJZW5naW5lLT5p bnN0YW5jZSwKKwkJCQkJCQkJZW5naW5lX2V2ZW50c1tpXS5zYW1wbGUpKTsKKworCQkJc3RyID0g a2FzcHJpbnRmKEdGUF9LRVJORUwsICIlcy0lcy51bml0IiwKKwkJCQkJZW5naW5lLT5uYW1lLCBl bmdpbmVfZXZlbnRzW2ldLm5hbWUpOworCQkJaWYgKCFzdHIpCisJCQkJZ290byBlcnI7CisKKwkJ CSphdHRyX2l0ZXIrKyA9ICZwbXVfaXRlci0+YXR0ci5hdHRyOworCQkJcG11X2l0ZXIgPSBhZGRf cG11X2F0dHIocG11X2l0ZXIsIHN0ciwgIm5zIik7CisJCX0KKwl9CisKKwlpOTE1LT5wbXUuaTkx NV9hdHRyID0gaTkxNV9hdHRyOworCWk5MTUtPnBtdS5wbXVfYXR0ciA9IHBtdV9hdHRyOworCisJ cmV0dXJuIGF0dHI7CisKK2Vycjo7CisJZm9yIChhdHRyX2l0ZXIgPSBhdHRyOyAqYXR0cl9pdGVy OyBhdHRyX2l0ZXIrKykKKwkJa2ZyZWUoKCphdHRyX2l0ZXIpLT5uYW1lKTsKKworZXJyX2FsbG9j OgorCWtmcmVlKGF0dHIpOworCWtmcmVlKGk5MTVfYXR0cik7CisJa2ZyZWUocG11X2F0dHIpOwor CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfZXZlbnRfYXR0cmlidXRlcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgYXR0cmlidXRlICoqYXR0 cl9pdGVyID0gaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAuYXR0cnM7CisKKwlmb3IgKDsgKmF0 dHJfaXRlcjsgYXR0cl9pdGVyKyspCisJCWtmcmVlKCgqYXR0cl9pdGVyKS0+bmFtZSk7CisKKwlr ZnJlZShpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cC5hdHRycyk7CisJa2ZyZWUoaTkxNS0+cG11 Lmk5MTVfYXR0cik7CisJa2ZyZWUoaTkxNS0+cG11LnBtdV9hdHRyKTsKKworCWk5MTVfcG11X2V2 ZW50c19hdHRyX2dyb3VwLmF0dHJzID0gTlVMTDsKKwlpOTE1LT5wbXUuaTkxNV9hdHRyID0gTlVM TDsKKwlpOTE1LT5wbXUucG11X2F0dHIgPSBOVUxMOworfQorCiBzdGF0aWMgaW50IGk5MTVfcG11 X2NwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpCiB7 CiAJc3RydWN0IGk5MTVfcG11ICpwbXUgPSBobGlzdF9lbnRyeV9zYWZlKG5vZGUsIHR5cGVvZigq cG11KSwgbm9kZSk7CkBAIC04MDYsNiArOTYzLDEyIEBAIHZvaWQgaTkxNV9wbXVfcmVnaXN0ZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCXJldHVybjsKIAl9CiAKKwlpOTE1X3Bt dV9ldmVudHNfYXR0cl9ncm91cC5hdHRycyA9IGNyZWF0ZV9ldmVudF9hdHRyaWJ1dGVzKGk5MTUp OworCWlmICghaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAuYXR0cnMpIHsKKwkJcmV0ID0gLUVO T01FTTsKKwkJZ290byBlcnI7CisJfQorCiAJaTkxNS0+cG11LmJhc2UuYXR0cl9ncm91cHMJPSBp OTE1X3BtdV9hdHRyX2dyb3VwczsKIAlpOTE1LT5wbXUuYmFzZS50YXNrX2N0eF9ucgk9IHBlcmZf aW52YWxpZF9jb250ZXh0OwogCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQJPSBpOTE1X3BtdV9l dmVudF9pbml0OwpAQCAtODM4LDYgKzEwMDEsNyBAQCB2b2lkIGk5MTVfcG11X3JlZ2lzdGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUt PnBtdS5iYXNlKTsKIGVycjoKIAlpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0ID0gTlVMTDsKKwlm cmVlX2V2ZW50X2F0dHJpYnV0ZXMoaTkxNSk7CiAJRFJNX05PVEUoIkZhaWxlZCB0byByZWdpc3Rl ciBQTVUhIChlcnI9JWQpXG4iLCByZXQpOwogfQogCkBAIC04NjIsNCArMTAyNiw1IEBAIHZvaWQg aTkxNV9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCXBl cmZfcG11X3VucmVnaXN0ZXIoJmk5MTUtPnBtdS5iYXNlKTsKIAlpOTE1LT5wbXUuYmFzZS5ldmVu dF9pbml0ID0gTlVMTDsKKwlmcmVlX2V2ZW50X2F0dHJpYnV0ZXMoaTkxNSk7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wbXUuaAppbmRleCA0MGMxNTRkMTM1NjUuLjVhMmUwMTNhNTZiYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BtdS5oCkBAIC05NCw2ICs5NCwxNCBAQCBzdHJ1Y3QgaTkxNV9wbXUgewogCSAq IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MuCiAJICovCiAJc3RydWN0IGk5MTVfcG11X3NhbXBsZSBz YW1wbGVbX19JOTE1X05VTV9QTVVfU0FNUExFUlNdOworCS8qKgorCSAqIEBpOTE1X2F0dHI6IE1l bW9yeSBibG9jayBob2xkaW5nIGRldmljZSBhdHRyaWJ1dGVzLgorCSAqLworCXZvaWQgKmk5MTVf YXR0cjsKKwkvKioKKwkgKiBAcG11X2F0dHI6IE1lbW9yeSBibG9jayBob2xkaW5nIGRldmljZSBh dHRyaWJ1dGVzLgorCSAqLworCXZvaWQgKnBtdV9hdHRyOwogfTsKIAogI2lmZGVmIENPTkZJR19Q RVJGX0VWRU5UUwotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK