From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH] drm/i915/pmu: Only enumerate available counters in sysfs Date: Thu, 21 Dec 2017 17:13:16 +0000 Message-ID: <20171221171316.11284-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-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id DC8A76E3E6 for ; Thu, 21 Dec 2017 17:13:27 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id f8so14987452wre.4 for ; Thu, 21 Dec 2017 09:13:27 -0800 (PST) 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 ZXJmX2V2ZW50X29wZW4oMiksIGFuZCB3aGF0IGlzIGRpc2NvdmVyYWJsZSBpbiBzeXNmcy4KClNp Z25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYyB8IDMyNiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5o IHwgICA4ICsKIDIgZmlsZXMgY2hhbmdlZCwgMjU2IGluc2VydGlvbnMoKyksIDc4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCmluZGV4IDU1YThhMWUyOTQyNC4uOTg5ZTFjY2Qw M2U5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMKQEAgLTI5MCwyMyArMjkwLDQ0IEBAIHN0YXRp YyB2b2lkIGk5MTVfcG11X2V2ZW50X2Rlc3Ryb3koc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQog CVdBUk5fT04oZXZlbnQtPnBhcmVudCk7CiB9CiAKLXN0YXRpYyBpbnQgZW5naW5lX2V2ZW50X2lu aXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQorc3RhdGljIGludAorZW5naW5lX2V2ZW50X3N0 YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAgICBlbnVtIGRybV9pOTE1 X3BtdV9lbmdpbmVfc2FtcGxlIHNhbXBsZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSA9Ci0JCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUpLCBwbXUuYmFz ZSk7Ci0KLQlpZiAoIWludGVsX2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LCBlbmdpbmVfZXZlbnRf Y2xhc3MoZXZlbnQpLAotCQkJCSAgICAgIGVuZ2luZV9ldmVudF9pbnN0YW5jZShldmVudCkpKQot CQlyZXR1cm4gLUVOT0RFVjsKLQotCXN3aXRjaCAoZW5naW5lX2V2ZW50X3NhbXBsZShldmVudCkp IHsKKwlzd2l0Y2ggKHNhbXBsZSkgewogCWNhc2UgSTkxNV9TQU1QTEVfQlVTWToKIAljYXNlIEk5 MTVfU0FNUExFX1dBSVQ6CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9TQU1QTEVfU0VNQToKKwkJaWYg KElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgNikKKwkJCXJldHVybiAtRU5PREVWOworCQlicmVh azsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT0VOVDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludAorY29uZmlnX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg dTY0IGNvbmZpZykKK3sKKwlzd2l0Y2ggKGNvbmZpZykgeworCWNhc2UgSTkxNV9QTVVfQUNUVUFM X0ZSRVFVRU5DWToKKwkJaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhp OTE1KSkKKwkJCS8qIFJlcXVpcmVzIGEgbXV0ZXggZm9yIHNhbXBsaW5nISAqLworCQkJcmV0dXJu IC1FTk9ERVY7CisJCS8qIEZhbGwtdGhyb3VnaC4gKi8KKwljYXNlIEk5MTVfUE1VX1JFUVVFU1RF RF9GUkVRVUVOQ1k6CiAJCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA2KQogCQkJcmV0dXJuIC1FTk9E RVY7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9QTVVfSU5URVJSVVBUUzoKKwkJYnJlYWs7CisJY2Fz ZSBJOTE1X1BNVV9SQzZfUkVTSURFTkNZOgorCQlpZiAoIUhBU19SQzYoaTkxNSkpCisJCQlyZXR1 cm4gLUVOT0RFVjsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FTk9FTlQ7CiAJfQpA QCAtMzE0LDYgKzMzNSwyMCBAQCBzdGF0aWMgaW50IGVuZ2luZV9ldmVudF9pbml0KHN0cnVjdCBw ZXJmX2V2ZW50ICpldmVudCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBlbmdpbmVfZXZl bnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwg cG11LmJhc2UpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKworCWVuZ2luZSA9 IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LCBlbmdpbmVfZXZlbnRfY2xhc3MoZXZlbnQp LAorCQkJCQkgIGVuZ2luZV9ldmVudF9pbnN0YW5jZShldmVudCkpOworCWlmICghZW5naW5lKQor CQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBlbmdpbmVfZXZlbnRfc3RhdHVzKGVuZ2luZSwg ZW5naW5lX2V2ZW50X3NhbXBsZShldmVudCkpOworfQorCiBzdGF0aWMgaW50IGk5MTVfcG11X2V2 ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0KQEAgLTMzNywzMCArMzcyLDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9wbXVf ZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJaWYgKCFjcHVtYXNrX3Rlc3Rf Y3B1KGV2ZW50LT5jcHUsICZpOTE1X3BtdV9jcHVtYXNrKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAK LQlpZiAoaXNfZW5naW5lX2V2ZW50KGV2ZW50KSkgeworCWlmIChpc19lbmdpbmVfZXZlbnQoZXZl bnQpKQogCQlyZXQgPSBlbmdpbmVfZXZlbnRfaW5pdChldmVudCk7Ci0JfSBlbHNlIHsKLQkJcmV0 ID0gMDsKLQkJc3dpdGNoIChldmVudC0+YXR0ci5jb25maWcpIHsKLQkJY2FzZSBJOTE1X1BNVV9B Q1RVQUxfRlJFUVVFTkNZOgotCQkJaWYgKElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZ VklFVyhpOTE1KSkKLQkJCQkgLyogUmVxdWlyZXMgYSBtdXRleCBmb3Igc2FtcGxpbmchICovCi0J CQkJcmV0ID0gLUVOT0RFVjsKLQkJY2FzZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZOgot CQkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDYpCi0JCQkJcmV0ID0gLUVOT0RFVjsKLQkJCWJyZWFr OwotCQljYXNlIEk5MTVfUE1VX0lOVEVSUlVQVFM6Ci0JCQlicmVhazsKLQkJY2FzZSBJOTE1X1BN VV9SQzZfUkVTSURFTkNZOgotCQkJaWYgKCFIQVNfUkM2KGk5MTUpKQotCQkJCXJldCA9IC1FTk9E RVY7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCXJldCA9IC1FTk9FTlQ7Ci0JCQlicmVhazsK LQkJfQotCX0KKwllbHNlCisJCXJldCA9IGNvbmZpZ19zdGF0dXMoaTkxNSwgZXZlbnQtPmF0dHIu Y29uZmlnKTs7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNjU3LDUyICs2NzIsOSBA QCBzdGF0aWMgc3NpemVfdCBpOTE1X3BtdV9ldmVudF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwK IAlyZXR1cm4gc3ByaW50ZihidWYsICJjb25maWc9MHglbHhcbiIsIGVhdHRyLT52YWwpOwogfQog Ci0jZGVmaW5lIEk5MTVfRVZFTlRfQVRUUihfbmFtZSwgX2NvbmZpZykgXAotCSgmKChzdHJ1Y3Qg aTkxNV9leHRfYXR0cmlidXRlW10pIHsgXAotCQl7IC5hdHRyID0gX19BVFRSKF9uYW1lLCAwNDQ0 LCBpOTE1X3BtdV9ldmVudF9zaG93LCBOVUxMKSwgXAotCQkgIC52YWwgPSBfY29uZmlnLCB9IFwK LQl9KVswXS5hdHRyLmF0dHIpCi0KLSNkZWZpbmUgSTkxNV9FVkVOVF9TVFIoX25hbWUsIF9zdHIp IFwKLQkoJigoc3RydWN0IHBlcmZfcG11X2V2ZW50c19hdHRyW10pIHsgXAotCQl7IC5hdHRyCSAg ICAgPSBfX0FUVFIoX25hbWUsIDA0NDQsIHBlcmZfZXZlbnRfc3lzZnNfc2hvdywgTlVMTCksIFwK LQkJICAuaWQJICAgICA9IDAsIFwKLQkJICAuZXZlbnRfc3RyID0gX3N0ciwgfSBcCi0JfSlbMF0u YXR0ci5hdHRyKQotCi0jZGVmaW5lIEk5MTVfRVZFTlQoX25hbWUsIF9jb25maWcsIF91bml0KSBc Ci0JSTkxNV9FVkVOVF9BVFRSKF9uYW1lLCBfY29uZmlnKSwgXAotCUk5MTVfRVZFTlRfU1RSKF9u YW1lLnVuaXQsIF91bml0KQotCi0jZGVmaW5lIEk5MTVfRU5HSU5FX0VWRU5UKF9uYW1lLCBfY2xh c3MsIF9pbnN0YW5jZSwgX3NhbXBsZSkgXAotCUk5MTVfRVZFTlRfQVRUUihfbmFtZSwgX19JOTE1 X1BNVV9FTkdJTkUoX2NsYXNzLCBfaW5zdGFuY2UsIF9zYW1wbGUpKSwgXAotCUk5MTVfRVZFTlRf U1RSKF9uYW1lLnVuaXQsICJucyIpCi0KLSNkZWZpbmUgSTkxNV9FTkdJTkVfRVZFTlRTKF9uYW1l LCBfY2xhc3MsIF9pbnN0YW5jZSkgXAotCUk5MTVfRU5HSU5FX0VWRU5UKF9uYW1lIyNfaW5zdGFu Y2UtYnVzeSwgX2NsYXNzLCBfaW5zdGFuY2UsIEk5MTVfU0FNUExFX0JVU1kpLCBcCi0JSTkxNV9F TkdJTkVfRVZFTlQoX25hbWUjI19pbnN0YW5jZS1zZW1hLCBfY2xhc3MsIF9pbnN0YW5jZSwgSTkx NV9TQU1QTEVfU0VNQSksIFwKLQlJOTE1X0VOR0lORV9FVkVOVChfbmFtZSMjX2luc3RhbmNlLXdh aXQsIF9jbGFzcywgX2luc3RhbmNlLCBJOTE1X1NBTVBMRV9XQUlUKQotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqaTkxNV9wbXVfZXZlbnRzX2F0dHJzW10gPSB7Ci0JSTkxNV9FTkdJTkVfRVZF TlRTKHJjcywgSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLCAwKSwKLQlJOTE1X0VOR0lORV9FVkVO VFMoYmNzLCBJOTE1X0VOR0lORV9DTEFTU19DT1BZLCAwKSwKLQlJOTE1X0VOR0lORV9FVkVOVFMo dmNzLCBJOTE1X0VOR0lORV9DTEFTU19WSURFTywgMCksCi0JSTkxNV9FTkdJTkVfRVZFTlRTKHZj cywgSTkxNV9FTkdJTkVfQ0xBU1NfVklERU8sIDEpLAotCUk5MTVfRU5HSU5FX0VWRU5UUyh2ZWNz LCBJOTE1X0VOR0lORV9DTEFTU19WSURFT19FTkhBTkNFLCAwKSwKLQotCUk5MTVfRVZFTlQoYWN0 dWFsLWZyZXF1ZW5jeSwgICAgSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5DWSwgICAgIk1IeiIpLAot CUk5MTVfRVZFTlQocmVxdWVzdGVkLWZyZXF1ZW5jeSwgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFV RU5DWSwgIk1IeiIpLAotCi0JSTkxNV9FVkVOVF9BVFRSKGludGVycnVwdHMsIEk5MTVfUE1VX0lO VEVSUlVQVFMpLAotCi0JSTkxNV9FVkVOVChyYzYtcmVzaWRlbmN5LCAgIEk5MTVfUE1VX1JDNl9S RVNJREVOQ1ksICAgIm5zIiksCi0KLQlOVUxMLAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAgPSB7CitzdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCBpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cCA9IHsKIAkubmFt ZSA9ICJldmVudHMiLAotCS5hdHRycyA9IGk5MTVfcG11X2V2ZW50c19hdHRycywKKwkvKiBQYXRj aCBpbiBhdHRycyBhdCBydW50aW1lLiAqLwogfTsKIAogc3RhdGljIHNzaXplX3QKQEAgLTcyMCw3 ICs2OTIsNyBAQCBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaTkxNV9jcHVtYXNrX2F0dHJzW10g PSB7CiAJTlVMTCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGk5MTVfcG11 X2NwdW1hc2tfYXR0cl9ncm91cCA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGk5MTVfcG11X2NwdW1hc2tfYXR0cl9ncm91cCA9IHsKIAkuYXR0cnMgPSBpOTE1X2NwdW1h c2tfYXR0cnMsCiB9OwogCkBAIC03MzEsNiArNzAzLDE5NiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCAqaTkxNV9wbXVfYXR0cl9ncm91cHNbXSA9IHsKIAlOVUxMCiB9Owog CisjZGVmaW5lIF9fZXZlbnQoX19jb25maWcsIF9fbmFtZSwgX191bml0KSBcCit7IFwKKwkuY29u ZmlnID0gKF9fY29uZmlnKSwgXAorCS5uYW1lID0gKF9fbmFtZSksIFwKKwkudW5pdCA9IChfX3Vu aXQpLCBcCit9CisKKyNkZWZpbmUgX19lbmdpbmVfZXZlbnQoX19zYW1wbGUsIF9fbmFtZSkgXAor eyBcCisJLnNhbXBsZSA9IChfX3NhbXBsZSksIFwKKwkubmFtZSA9IChfX25hbWUpLCBcCit9CisK KyNkZWZpbmUgX19pOTE1X2F0dHIoX19wLCBfX25hbWUsIF9fY29uZmlnKSBcCit7IFwKKwkoX19w KS0+YXR0ci5hdHRyLm5hbWUgPSAoX19uYW1lKTsgXAorCShfX3ApLT5hdHRyLmF0dHIubW9kZSA9 IDA0NDQ7IFwKKwkoX19wKS0+YXR0ci5zaG93ID0gaTkxNV9wbXVfZXZlbnRfc2hvdzsgXAorCShf X3ApLT52YWwgPSAoX19jb25maWcpOyBcCit9CisKKyNkZWZpbmUgX19wbXVfYXR0cihfX3AsIF9f bmFtZSwgX19zdHIpIFwKK3sgXAorCShfX3ApLT5hdHRyLmF0dHIubmFtZSA9IChfX25hbWUpOyBc CisJKF9fcCktPmF0dHIuYXR0ci5tb2RlID0gMDQ0NDsgXAorCShfX3ApLT5hdHRyLnNob3cgPSBw ZXJmX2V2ZW50X3N5c2ZzX3Nob3c7IFwKKwkoX19wKS0+ZXZlbnRfc3RyID0gKF9fc3RyKTsgXAor fQorCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqKgorY3JlYXRlX2V2ZW50X2F0dHJpYnV0ZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCB7 CisJCXU2NCBjb25maWc7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCWNvbnN0IGNoYXIgKnVuaXQ7 CisJfSBldmVudHNbXSA9IHsKKwkJX19ldmVudChJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZLCAi YWN0dWFsLWZyZXF1ZW5jeSIsICJNSHoiKSwKKwkJX19ldmVudChJOTE1X1BNVV9SRVFVRVNURURf RlJFUVVFTkNZLCAicmVxdWVzdGVkLWZyZXF1ZW5jeSIsICJNSHoiKSwKKwkJX19ldmVudChJOTE1 X1BNVV9JTlRFUlJVUFRTLCAiaW50ZXJydXB0cyIsIE5VTEwpLAorCQlfX2V2ZW50KEk5MTVfUE1V X1JDNl9SRVNJREVOQ1ksICJyYzYtcmVzaWRlbmN5IiwgIm5zIiksCisJfTsKKwlzdGF0aWMgY29u c3Qgc3RydWN0IHsKKwkJZW51bSBkcm1faTkxNV9wbXVfZW5naW5lX3NhbXBsZSBzYW1wbGU7CisJ CWNoYXIgKm5hbWU7CisJfSBlbmdpbmVfZXZlbnRzW10gPSB7CisJCV9fZW5naW5lX2V2ZW50KEk5 MTVfU0FNUExFX0JVU1ksICJidXN5IiksCisJCV9fZW5naW5lX2V2ZW50KEk5MTVfU0FNUExFX1NF TUEsICJzZW1hIiksCisJCV9fZW5naW5lX2V2ZW50KEk5MTVfU0FNUExFX1dBSVQsICJ3YWl0Iiks CisJfTsKKwl1bnNpZ25lZCBpbnQgY291bnQgPSAwOworCXN0cnVjdCBwZXJmX3BtdV9ldmVudHNf YXR0ciAqcG11X2F0dHIsICpwbXVfcDsKKwlzdHJ1Y3QgaTkxNV9leHRfYXR0cmlidXRlICppOTE1 X2F0dHIsICppOTE1X3A7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVj dCBhdHRyaWJ1dGUgKiphdHRyLCAqKnA7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJdW5z aWduZWQgaW50IGk7CisKKwkvKiBDb3VudCBob3cgbWFueSBjb3VudGVycyB3ZSB3aWxsIGJlIGV4 cG9zaW5nLiAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGV2ZW50cyk7IGkrKykgewor CQlpZiAoIWNvbmZpZ19zdGF0dXMoaTkxNSwgZXZlbnRzW2ldLmNvbmZpZykpCisJCQljb3VudCsr OworCX0KKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7CisJCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGVuZ2luZV9ldmVudHMpOyBpKyspIHsKKwkJCWlmICghZW5naW5l X2V2ZW50X3N0YXR1cyhlbmdpbmUsCisJCQkJCQkgZW5naW5lX2V2ZW50c1tpXS5zYW1wbGUpKQor CQkJCWNvdW50Kys7CisJCX0KKwl9CisKKwkvKiBBbGxvY2F0ZSBhdHRyaWJ1dGUgb2JqZWN0cyBh bmQgdGFibGUuICovCisJaTkxNV9hdHRyID0ga3phbGxvYyhjb3VudCAqIHNpemVvZigqaTkxNV9h dHRyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFpOTE1X2F0dHIpCisJCXJldHVybiBOVUxMOworCisJ cG11X2F0dHIgPSBremFsbG9jKGNvdW50ICogc2l6ZW9mKCpwbXVfYXR0ciksIEdGUF9LRVJORUwp OworCWlmICghcG11X2F0dHIpIHsKKwkJa2ZyZWUoaTkxNV9hdHRyKTsKKwkJcmV0dXJuIE5VTEw7 CisJfQorCisJLyogTWF4IG9uZSBwb2ludGVyIG9mIGVhY2ggYXR0cmlidXRlIHR5cGUgcGx1cyBh IHRlcm1pbmF0aW9uIGVudHJ5LiAqLworCWF0dHIgPSBremFsbG9jKChjb3VudCAqIDIgKyAxKSAq IHNpemVvZihhdHRyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFhdHRyKSB7CisJCWtmcmVlKHBtdV9h dHRyKTsKKwkJa2ZyZWUoaTkxNV9hdHRyKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaTkxNV9w ID0gaTkxNV9hdHRyOworCXBtdV9wID0gcG11X2F0dHI7CisJcCA9IGF0dHI7CisKKwkvKiBJbml0 aWFsaXplIHN1cHBvcnRlZCBub24tZW5naW5lIGNvdW50ZXJzLiAqLworCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGV2ZW50cyk7IGkrKykgeworCQljaGFyICpzdHI7CisKKwkJaWYgKGNvbmZp Z19zdGF0dXMoaTkxNSwgZXZlbnRzW2ldLmNvbmZpZykpCisJCQljb250aW51ZTsKKworCQlzdHIg PSBrc3RyZHVwKGV2ZW50c1tpXS5uYW1lLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFzdHIpCisJCQln b3RvIGVycjsKKworCQlfX2k5MTVfYXR0cihpOTE1X3AsIHN0ciwgZXZlbnRzW2ldLmNvbmZpZyk7 CisJCSpwKysgPSAmaTkxNV9wLT5hdHRyLmF0dHI7CisJCWk5MTVfcCsrOworCisJCWlmIChldmVu dHNbaV0udW5pdCkgeworCQkJc3RyID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsICIlcy51bml0Iiwg ZXZlbnRzW2ldLm5hbWUpOworCQkJaWYgKCFzdHIpCisJCQkJZ290byBlcnI7CisKKwkJCV9fcG11 X2F0dHIocG11X3AsIHN0ciwgZXZlbnRzW2ldLnVuaXQpOworCQkJKnArKyA9ICZwbXVfcC0+YXR0 ci5hdHRyOworCQkJcG11X3ArKzsKKwkJfQorCX0KKworCS8qIEluaXRpYWxpemUgc3VwcG9ydGVk IGVuZ2luZSBjb3VudGVycy4gKi8KKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkg eworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlbmdpbmVfZXZlbnRzKTsgaSsrKSB7CisJ CQljaGFyICpzdHI7CisKKwkJCWlmIChlbmdpbmVfZXZlbnRfc3RhdHVzKGVuZ2luZSwKKwkJCQkJ CWVuZ2luZV9ldmVudHNbaV0uc2FtcGxlKSkKKwkJCQljb250aW51ZTsKKworCQkJc3RyID0ga2Fz cHJpbnRmKEdGUF9LRVJORUwsICIlcy0lcyIsCisJCQkJCWVuZ2luZS0+bmFtZSwgZW5naW5lX2V2 ZW50c1tpXS5uYW1lKTsKKwkJCWlmICghc3RyKQorCQkJCWdvdG8gZXJyOworCisJCQlfX2k5MTVf YXR0cihpOTE1X3AsIHN0ciwKKwkJCQkgICAgX19JOTE1X1BNVV9FTkdJTkUoZW5naW5lLT5jbGFz cywKKwkJCQkJCSAgICAgIGVuZ2luZS0+aW5zdGFuY2UsCisJCQkJCQkgICAgICBlbmdpbmVfZXZl bnRzW2ldLnNhbXBsZSkpOworCQkJKnArKyA9ICZpOTE1X3AtPmF0dHIuYXR0cjsKKwkJCWk5MTVf cCsrOworCisJCQlzdHIgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIiVzLSVzLnVuaXQiLAorCQkJ CQllbmdpbmUtPm5hbWUsIGVuZ2luZV9ldmVudHNbaV0ubmFtZSk7CisJCQlpZiAoIXN0cikKKwkJ CQlnb3RvIGVycjsKKworCQkJX19wbXVfYXR0cihwbXVfcCwgc3RyLCAibnMiKTsKKwkJCSpwKysg PSAmcG11X3AtPmF0dHIuYXR0cjsKKwkJCXBtdV9wKys7CisJCX0KKwl9CisKKwlpOTE1LT5wbXUu aTkxNV9hdHRyID0gaTkxNV9hdHRyOworCWk5MTUtPnBtdS5wbXVfYXR0ciA9IHBtdV9hdHRyOwor CisJcmV0dXJuIGF0dHI7CisKK2VycjoKKwlwID0gYXR0cjsKKwl3aGlsZSAoKnApIHsKKwkJa2Zy ZWUoKCpwKS0+bmFtZSk7CisJCXArKzsKKwl9CisKKwlrZnJlZShhdHRyKTsKKwlrZnJlZShpOTE1 X2F0dHIpOworCWtmcmVlKHBtdV9hdHRyKTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMg dm9pZCBmcmVlX2V2ZW50X2F0dHJpYnV0ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cit7CisJc3RydWN0IGF0dHJpYnV0ZSAqKnAgPSBpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cC5h dHRyczsKKworCXdoaWxlICgqcCkgeworCQlrZnJlZSgoKnApLT5uYW1lKTsKKwkJcCsrOworCX0K KworCWtmcmVlKGk5MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzKTsKKwlrZnJlZShpOTE1 LT5wbXUuaTkxNV9hdHRyKTsKKwlrZnJlZShpOTE1LT5wbXUucG11X2F0dHIpOworCisJaTkxNV9w bXVfZXZlbnRzX2F0dHJfZ3JvdXAuYXR0cnMgPSBOVUxMOworCWk5MTUtPnBtdS5pOTE1X2F0dHIg PSBOVUxMOworCWk5MTUtPnBtdS5wbXVfYXR0ciA9IE5VTEw7Cit9CisKIHN0YXRpYyBpbnQgaTkx NV9wbXVfY3B1X29ubGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9k ZSkKIHsKIAlzdHJ1Y3QgaTkxNV9wbXUgKnBtdSA9IGhsaXN0X2VudHJ5X3NhZmUobm9kZSwgdHlw ZW9mKCpwbXUpLCBub2RlKTsKQEAgLTgwNiw2ICs5NjgsMTIgQEAgdm9pZCBpOTE1X3BtdV9yZWdp c3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJcmV0dXJuOwogCX0KIAorCWk5 MTVfcG11X2V2ZW50c19hdHRyX2dyb3VwLmF0dHJzID0gY3JlYXRlX2V2ZW50X2F0dHJpYnV0ZXMo aTkxNSk7CisJaWYgKCFpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cC5hdHRycykgeworCQlyZXQg PSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKIAlpOTE1LT5wbXUuYmFzZS5hdHRyX2dyb3Vw cwk9IGk5MTVfcG11X2F0dHJfZ3JvdXBzOwogCWk5MTUtPnBtdS5iYXNlLnRhc2tfY3R4X25yCT0g cGVyZl9pbnZhbGlkX2NvbnRleHQ7CiAJaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdAk9IGk5MTVf cG11X2V2ZW50X2luaXQ7CkBAIC04MzgsNiArMTAwNiw3IEBAIHZvaWQgaTkxNV9wbXVfcmVnaXN0 ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJcGVyZl9wbXVfdW5yZWdpc3Rlcigm aTkxNS0+cG11LmJhc2UpOwogZXJyOgogCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQgPSBOVUxM OworCWZyZWVfZXZlbnRfYXR0cmlidXRlcyhpOTE1KTsKIAlEUk1fTk9URSgiRmFpbGVkIHRvIHJl Z2lzdGVyIFBNVSEgKGVycj0lZClcbiIsIHJldCk7CiB9CiAKQEAgLTg2Miw0ICsxMDMxLDUgQEAg dm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQog CiAJcGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+cG11LmJhc2UpOwogCWk5MTUtPnBtdS5iYXNl LmV2ZW50X2luaXQgPSBOVUxMOworCWZyZWVfZXZlbnRfYXR0cmlidXRlcyhpOTE1KTsKIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BtdS5oCmluZGV4IDQwYzE1NGQxMzU2NS4uNWEyZTAxM2E1NmJiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcG11LmgKQEAgLTk0LDYgKzk0LDE0IEBAIHN0cnVjdCBpOTE1X3BtdSB7 CiAJICogc3RydWN0IGludGVsX2VuZ2luZV9jcy4KIAkgKi8KIAlzdHJ1Y3QgaTkxNV9wbXVfc2Ft cGxlIHNhbXBsZVtfX0k5MTVfTlVNX1BNVV9TQU1QTEVSU107CisJLyoqCisJICogQGk5MTVfYXR0 cjogTWVtb3J5IGJsb2NrIGhvbGRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMuCisJICovCisJdm9pZCAq aTkxNV9hdHRyOworCS8qKgorCSAqIEBwbXVfYXR0cjogTWVtb3J5IGJsb2NrIGhvbGRpbmcgZGV2 aWNlIGF0dHJpYnV0ZXMuCisJICovCisJdm9pZCAqcG11X2F0dHI7CiB9OwogCiAjaWZkZWYgQ09O RklHX1BFUkZfRVZFTlRTCi0tIAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=