From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v4 6/9] intel-gpu-overlay: Use RAPL PMU for power reading Date: Tue, 21 Nov 2017 19:35:32 +0000 Message-ID: <20171121193532.18000-1-tvrtko.ursulin@linux.intel.com> References: <20171010120540.24784-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 344786E596 for ; Tue, 21 Nov 2017 19:35:44 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id k61so12341978wrc.4 for ; Tue, 21 Nov 2017 11:35:44 -0800 (PST) In-Reply-To: <20171010120540.24784-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldpcmUgdXAg dG8gdGhlIFJBUEwgUE1VIGZvciBHUFUgZW5lcmd5IHJlYWRpbmdzLgoKVGhlIG9ubHkgY29tcGxp Y2F0aW9uIGlzIHRoYXQgd2UgaGF2ZSB0byBhZGQgY29kZSB0byBwYXJzZToKCiAjIGNhdCAvc3lz L2RldmljZXMvcG93ZXIvZXZlbnRzL2VuZXJneS1ncHUuc2NhbGUKIDIuMzI4MzA2NDM2NTM4Njk2 Mjg5MDYyNWUtMTAKCnYyOiBMaW5rIHdpdGggLWxtLgp2Mzogc3RydG9kIGNhbiBoYW5kbGUgc2Np ZW50aWZpYyBub3RhdGlvbiwgZXZlbiB0aG91Z2ggbXkgaW5pdGlhbAogICAgcmVhZGluZyBvZiB0 aGUgbWFuIHBhZ2UgZGlkIG5vdCBzcG90IHRoYXQuIChDaHJpcyBXaWxzb24pCnY0OiBNZXNvbiBm aXguCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ ICh2MykKLS0tCiBsaWIvaWd0X3BlcmYuYyAgICAgIHwgIDE2ICsrKysrLS0KIGxpYi9pZ3RfcGVy Zi5oICAgICAgfCAgIDEgKwogb3ZlcmxheS9NYWtlZmlsZS5hbSB8ICAgMiArLQogb3ZlcmxheS9t ZXNvbi5idWlsZCB8ICAgMiArLQogb3ZlcmxheS9wb3dlci5jICAgICB8IDEyNyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiBvdmVybGF5L3Bvd2Vy LmggICAgIHwgICAyICsKIDYgZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDQ1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcGVyZi5jIGIvbGliL2lndF9wZXJmLmMK aW5kZXggMjA4NDc0MzAyZmNjLi4wMjIxNDYxZTkxOGYgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfcGVy Zi5jCisrKyBiL2xpYi9pZ3RfcGVyZi5jCkBAIC0yNywxMSArMjcsMTIgQEAgdWludDY0X3QgaTkx NV90eXBlX2lkKHZvaWQpCiAJcmV0dXJuIHN0cnRvdWxsKGJ1ZiwgTlVMTCwgMCk7CiB9CiAKLXN0 YXRpYyBpbnQgX3BlcmZfb3Blbih1aW50NjRfdCBjb25maWcsIGludCBncm91cCwgdWludDY0X3Qg Zm9ybWF0KQorc3RhdGljIGludAorX3BlcmZfb3Blbih1aW50NjRfdCB0eXBlLCB1aW50NjRfdCBj b25maWcsIGludCBncm91cCwgdWludDY0X3QgZm9ybWF0KQogewogCXN0cnVjdCBwZXJmX2V2ZW50 X2F0dHIgYXR0ciA9IHsgfTsKIAotCWF0dHIudHlwZSA9IGk5MTVfdHlwZV9pZCgpOworCWF0dHIu dHlwZSA9IHR5cGU7CiAJaWYgKGF0dHIudHlwZSA9PSAwKQogCQlyZXR1cm4gLUVOT0VOVDsKIApA QCAtNDYsMTEgKzQ3LDE4IEBAIHN0YXRpYyBpbnQgX3BlcmZfb3Blbih1aW50NjRfdCBjb25maWcs IGludCBncm91cCwgdWludDY0X3QgZm9ybWF0KQogCiBpbnQgcGVyZl9pOTE1X29wZW4odWludDY0 X3QgY29uZmlnKQogewotCXJldHVybiBfcGVyZl9vcGVuKGNvbmZpZywgLTEsIFBFUkZfRk9STUFU X1RPVEFMX1RJTUVfRU5BQkxFRCk7CisJcmV0dXJuIF9wZXJmX29wZW4oaTkxNV90eXBlX2lkKCks IGNvbmZpZywgLTEsCisJCQkgIFBFUkZfRk9STUFUX1RPVEFMX1RJTUVfRU5BQkxFRCk7CiB9CiAK IGludCBwZXJmX2k5MTVfb3Blbl9ncm91cCh1aW50NjRfdCBjb25maWcsIGludCBncm91cCkKIHsK LQlyZXR1cm4gX3BlcmZfb3Blbihjb25maWcsIGdyb3VwLAorCXJldHVybiBfcGVyZl9vcGVuKGk5 MTVfdHlwZV9pZCgpLCBjb25maWcsIGdyb3VwLAogCQkJICBQRVJGX0ZPUk1BVF9UT1RBTF9USU1F X0VOQUJMRUQgfCBQRVJGX0ZPUk1BVF9HUk9VUCk7CiB9CisKK2ludCBpZ3RfcGVyZl9vcGVuKHVp bnQ2NF90IHR5cGUsIHVpbnQ2NF90IGNvbmZpZykKK3sKKwlyZXR1cm4gX3BlcmZfb3Blbih0eXBl LCBjb25maWcsIC0xLAorCQkJICBQRVJGX0ZPUk1BVF9UT1RBTF9USU1FX0VOQUJMRUQpOworfQpk aWZmIC0tZ2l0IGEvbGliL2lndF9wZXJmLmggYi9saWIvaWd0X3BlcmYuaAppbmRleCBkYjA3YjAw YTdiNmIuLjkzOGQ1NDg4OTFjNSAxMDA2NDQKLS0tIGEvbGliL2lndF9wZXJmLmgKKysrIGIvbGli L2lndF9wZXJmLmgKQEAgLTk5LDUgKzk5LDYgQEAgcGVyZl9ldmVudF9vcGVuKHN0cnVjdCBwZXJm X2V2ZW50X2F0dHIgKmF0dHIsCiB1aW50NjRfdCBpOTE1X3R5cGVfaWQodm9pZCk7CiBpbnQgcGVy Zl9pOTE1X29wZW4odWludDY0X3QgY29uZmlnKTsKIGludCBwZXJmX2k5MTVfb3Blbl9ncm91cCh1 aW50NjRfdCBjb25maWcsIGludCBncm91cCk7CitpbnQgaWd0X3BlcmZfb3Blbih1aW50NjRfdCB0 eXBlLCB1aW50NjRfdCBjb25maWcpOwogCiAjZW5kaWYgLyogSTkxNV9QRVJGX0ggKi8KZGlmZiAt LWdpdCBhL292ZXJsYXkvTWFrZWZpbGUuYW0gYi9vdmVybGF5L01ha2VmaWxlLmFtCmluZGV4IGNl ZmRlMmQwNDBmOC4uZjQ5ZjU0YWMzNTkwIDEwMDY0NAotLS0gYS9vdmVybGF5L01ha2VmaWxlLmFt CisrKyBiL292ZXJsYXkvTWFrZWZpbGUuYW0KQEAgLTYzLDcgKzYzLDcgQEAgaW50ZWxfZ3B1X292 ZXJsYXlfU09VUkNFUyArPSBcCiAKIGludGVsX2dwdV9vdmVybGF5X1NPVVJDRVMgKz0gJChib3Ro X3gxMV9zb3VyY2VzKQogCi1pbnRlbF9ncHVfb3ZlcmxheV9MREFERCA9ICQoTERBREQpIC1scnQK K2ludGVsX2dwdV9vdmVybGF5X0xEQUREID0gJChMREFERCkgLWxydCAtbG0KIAogRVhUUkFfRElT VD0gXAogCVJFQURNRSBcCmRpZmYgLS1naXQgYS9vdmVybGF5L21lc29uLmJ1aWxkIGIvb3Zlcmxh eS9tZXNvbi5idWlsZAppbmRleCBmZmMwMTFjY2U5OTguLjZiNDc5ZWI4OTg5MCAxMDA2NDQKLS0t IGEvb3ZlcmxheS9tZXNvbi5idWlsZAorKysgYi9vdmVybGF5L21lc29uLmJ1aWxkCkBAIC0yMSw3 ICsyMSw3IEBAIGRyaTJwcm90byA9IGRlcGVuZGVuY3koJ2RyaTJwcm90bycsIHZlcnNpb24gOiAn Pj0gMi42JywgcmVxdWlyZWQgOiBmYWxzZSkKIGNhaXJvX3hsaWIgPSBkZXBlbmRlbmN5KCdjYWly by14bGliJywgcmVxdWlyZWQgOiBmYWxzZSkKIHhyYW5kciA9IGRlcGVuZGVuY3koJ3hyYW5kcics IHZlcnNpb24gOiAnPj0xLjMnLCByZXF1aXJlZCA6IGZhbHNlKQogCi1ncHVfb3ZlcmxheV9kZXBz ID0gWyByZWFsdGltZSwgY2Fpcm8sIHBjaWFjY2VzcywgbGliZHJtLCBsaWJkcm1faW50ZWwgXQor Z3B1X292ZXJsYXlfZGVwcyA9IFsgcmVhbHRpbWUsIG1hdGgsIGNhaXJvLCBwY2lhY2Nlc3MsIGxp YmRybSwgbGliZHJtX2ludGVsIF0KIAogYm90aF94MTFfc3JjID0gJycKIApkaWZmIC0tZ2l0IGEv b3ZlcmxheS9wb3dlci5jIGIvb3ZlcmxheS9wb3dlci5jCmluZGV4IDgwNWY0Y2E3ODA1Yy4uOWFj OTBmZGU4Nzg2IDEwMDY0NAotLS0gYS9vdmVybGF5L3Bvd2VyLmMKKysrIGIvb3ZlcmxheS9wb3dl ci5jCkBAIC0zMCw2MCArMzAsMTA3IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDx0 aW1lLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUg PG1hdGguaD4KIAogI2luY2x1ZGUgImlndF9wZXJmLmgiCiAKICNpbmNsdWRlICJwb3dlci5oIgog I2luY2x1ZGUgImRlYnVnZnMuaCIKIAotLyogWFhYIElzIHRoaXMgZXhwb3NlZCB0aHJvdWdoIFJB UEw/ICovCi0KLWludCBwb3dlcl9pbml0KHN0cnVjdCBwb3dlciAqcG93ZXIpCitzdGF0aWMgaW50 CitmaWxlbmFtZV90b19idWYoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgKmJ1ZiwgdW5zaWdu ZWQgaW50IGJ1ZnNpemUpCiB7Ci0JY2hhciBidWZbNDA5Nl07Ci0JaW50IGZkLCBsZW47Ci0KLQlt ZW1zZXQocG93ZXIsIDAsIHNpemVvZigqcG93ZXIpKTsKLQotCXBvd2VyLT5mZCA9IC0xOworCWlu dCBmZDsKKwlzc2l6ZV90IHJldDsKIAotCXNwcmludGYoYnVmLCAiJXMvaTkxNV9lbmVyZ3lfdUoi LCBkZWJ1Z2ZzX2RyaV9wYXRoKTsKLQlmZCA9IG9wZW4oYnVmLCAwKTsKKwlmZCA9IG9wZW4oZmls ZW5hbWUsIE9fUkRPTkxZKTsKIAlpZiAoZmQgPCAwKQotCQlyZXR1cm4gcG93ZXItPmVycm9yID0g ZXJybm87CisJCXJldHVybiAtMTsKIAotCWxlbiA9IHJlYWQoZmQsIGJ1Ziwgc2l6ZW9mKGJ1Zikp OworCXJldCA9IHJlYWQoZmQsIGJ1ZiwgYnVmc2l6ZSAtIDEpOwogCWNsb3NlKGZkKTsKKwlpZiAo cmV0IDwgMSkKKwkJcmV0dXJuIC0xOwogCi0JaWYgKGxlbiA8IDApCi0JCXJldHVybiBwb3dlci0+ ZXJyb3IgPSBlcnJubzsKLQotCWJ1ZltsZW5dID0gJ1wwJzsKLQlpZiAoc3RydG91bGwoYnVmLCAw LCAwKSA9PSAwKQotCQlyZXR1cm4gcG93ZXItPmVycm9yID0gRUlOVkFMOworCWJ1ZltyZXRdID0g J1wwJzsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdWludDY0X3QgZmlsZV90b191NjQoY29u c3QgY2hhciAqbmFtZSkKK3N0YXRpYyB1aW50NjRfdCBmaWxlbmFtZV90b191NjQoY29uc3QgY2hh ciAqZmlsZW5hbWUsIGludCBiYXNlKQogewotCWNoYXIgYnVmWzQwOTZdOwotCWludCBmZCwgbGVu OworCWNoYXIgYnVmWzY0XSwgKmI7CiAKLQlzcHJpbnRmKGJ1ZiwgIiVzLyVzIiwgZGVidWdmc19k cmlfcGF0aCwgbmFtZSk7Ci0JZmQgPSBvcGVuKGJ1ZiwgMCk7Ci0JaWYgKGZkIDwgMCkKKwlpZiAo ZmlsZW5hbWVfdG9fYnVmKGZpbGVuYW1lLCBidWYsIHNpemVvZihidWYpKSkKIAkJcmV0dXJuIDA7 CiAKLQlsZW4gPSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpLTEpOwotCWNsb3NlKGZkKTsKKwkv KgorCSAqIEhhbmRsZSBib3RoIHNpbmdsZSBpbnRlZ2VyIGFuZCBrZXk9dmFsdWUgZm9ybWF0cyBi eSBza2lwcGluZworCSAqIGxlYWRpbmcgbm9uLWRpZ2l0cy4KKwkgKi8KKwliID0gYnVmOworCXdo aWxlICgqYiAmJiAhaXNkaWdpdCgqYikpCisJCWIrKzsKKworCXJldHVybiBzdHJ0b3VsbChiLCBO VUxMLCBiYXNlKTsKK30KKworc3RhdGljIHVpbnQ2NF90IGRlYnVnZnNfZmlsZV90b191NjQoY29u c3QgY2hhciAqbmFtZSkKK3sKKwljaGFyIGJ1ZlsxMDI0XTsKKworCXNucHJpbnRmKGJ1Ziwgc2l6 ZW9mKGJ1ZiksICIlcy8lcyIsIGRlYnVnZnNfZHJpX3BhdGgsIG5hbWUpOworCisJcmV0dXJuIGZp bGVuYW1lX3RvX3U2NChidWYsIDApOworfQorCitzdGF0aWMgdWludDY0X3QgcmFwbF90eXBlX2lk KHZvaWQpCit7CisJcmV0dXJuIGZpbGVuYW1lX3RvX3U2NCgiL3N5cy9kZXZpY2VzL3Bvd2VyL3R5 cGUiLCAxMCk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCByYXBsX2dwdV9wb3dlcih2b2lkKQorewor CXJldHVybiBmaWxlbmFtZV90b191NjQoIi9zeXMvZGV2aWNlcy9wb3dlci9ldmVudHMvZW5lcmd5 LWdwdSIsIDApOworfQogCi0JaWYgKGxlbiA8IDApCitzdGF0aWMgZG91YmxlIGZpbGVuYW1lX3Rv X2RvdWJsZShjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwljaGFyIGJ1Zls2NF07CisKKwlpZiAo ZmlsZW5hbWVfdG9fYnVmKGZpbGVuYW1lLCBidWYsIHNpemVvZihidWYpKSkKIAkJcmV0dXJuIDA7 CiAKLQlidWZbbGVuXSA9ICdcMCc7CisJcmV0dXJuIHN0cnRvZChidWYsIE5VTEwpOworfQorCitz dGF0aWMgZG91YmxlIHJhcGxfZ3B1X3Bvd2VyX3NjYWxlKHZvaWQpCit7CisJcmV0dXJuIGZpbGVu YW1lX3RvX2RvdWJsZSgiL3N5cy9kZXZpY2VzL3Bvd2VyL2V2ZW50cy9lbmVyZ3ktZ3B1LnNjYWxl Iik7Cit9CisKK2ludCBwb3dlcl9pbml0KHN0cnVjdCBwb3dlciAqcG93ZXIpCit7CisJdWludDY0 X3QgdmFsOworCisJbWVtc2V0KHBvd2VyLCAwLCBzaXplb2YoKnBvd2VyKSk7CisKKwlwb3dlci0+ ZmQgPSBpZ3RfcGVyZl9vcGVuKHJhcGxfdHlwZV9pZCgpLCByYXBsX2dwdV9wb3dlcigpKTsKKwlp ZiAocG93ZXItPmZkID49IDApIHsKKwkJcG93ZXItPnJhcGxfc2NhbGUgPSByYXBsX2dwdV9wb3dl cl9zY2FsZSgpOworCisJCWlmIChwb3dlci0+cmFwbF9zY2FsZSAhPSBOQU4pIHsKKwkJCXBvd2Vy LT5yYXBsX3NjYWxlICo9IDFlMzsgLyogZnJvbSBuYW5vIHRvIG1pY3JvICovCisJCQlyZXR1cm4g MDsKKwkJfQorCX0KKworCXZhbCA9IGRlYnVnZnNfZmlsZV90b191NjQoImk5MTVfZW5lcmd5X3VK Iik7CisJaWYgKHZhbCA9PSAwKQorCQlyZXR1cm4gcG93ZXItPmVycm9yID0gRUlOVkFMOwogCi0J cmV0dXJuIHN0cnRvdWxsKGJ1ZiwgMCwgMCk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB1aW50 NjRfdCBjbG9ja19tc190b191NjQodm9pZCkKQEAgLTkzLDMwICsxNDAsMzAgQEAgc3RhdGljIHVp bnQ2NF90IGNsb2NrX21zX3RvX3U2NCh2b2lkKQogCWlmIChjbG9ja19nZXR0aW1lKENMT0NLX01P Tk9UT05JQywgJnR2KSA8IDApCiAJCXJldHVybiAwOwogCi0JcmV0dXJuICh1aW50NjRfdCl0di50 dl9zZWMgKiAxMDAwICsgdHYudHZfbnNlYyAvIDEwMDAwMDA7CisJcmV0dXJuICh1aW50NjRfdCl0 di50dl9zZWMgKiAxZTMgKyB0di50dl9uc2VjIC8gMWU2OwogfQogCiBpbnQgcG93ZXJfdXBkYXRl KHN0cnVjdCBwb3dlciAqcG93ZXIpCiB7Ci0Jc3RydWN0IHBvd2VyX3N0YXQgKnMgPSAmcG93ZXIt PnN0YXRbcG93ZXItPmNvdW50KysmMV07Ci0Jc3RydWN0IHBvd2VyX3N0YXQgKmQgPSAmcG93ZXIt PnN0YXRbcG93ZXItPmNvdW50JjFdOworCXN0cnVjdCBwb3dlcl9zdGF0ICpzID0gJnBvd2VyLT5z dGF0W3Bvd2VyLT5jb3VudCsrICYgMV07CisJc3RydWN0IHBvd2VyX3N0YXQgKmQgPSAmcG93ZXIt PnN0YXRbcG93ZXItPmNvdW50ICYgMV07CiAJdWludDY0X3QgZF90aW1lOwogCiAJaWYgKHBvd2Vy LT5lcnJvcikKIAkJcmV0dXJuIHBvd2VyLT5lcnJvcjsKIAotCWlmIChwb3dlci0+ZmQgIT0gLTEp IHsKKwlpZiAocG93ZXItPmZkID49IDApIHsKIAkJdWludDY0X3QgZGF0YVsyXTsKIAkJaW50IGxl bjsKIAogCQlsZW4gPSByZWFkKHBvd2VyLT5mZCwgZGF0YSwgc2l6ZW9mKGRhdGEpKTsKLQkJaWYg KGxlbiA8IDApCisJCWlmIChsZW4gIT0gc2l6ZW9mKGRhdGEpKQogCQkJcmV0dXJuIHBvd2VyLT5l cnJvciA9IGVycm5vOwogCi0JCXMtPmVuZXJneSA9IGRhdGFbMF07Ci0JCXMtPnRpbWVzdGFtcCA9 IGRhdGFbMV0gLyAoMTAwMCoxMDAwKTsKKwkJcy0+ZW5lcmd5ID0gbGxyb3VuZCgoZG91YmxlKWRh dGFbMF0gKiBwb3dlci0+cmFwbF9zY2FsZSk7CisJCXMtPnRpbWVzdGFtcCA9IGRhdGFbMV0gLyAx ZTY7CiAJfSBlbHNlIHsKLQkJcy0+ZW5lcmd5ID0gZmlsZV90b191NjQoImk5MTVfZW5lcmd5X3VK Iik7CisJCXMtPmVuZXJneSA9IGRlYnVnZnNfZmlsZV90b191NjQoImk5MTVfZW5lcmd5X3VKIikg LyAxZTM7CiAJCXMtPnRpbWVzdGFtcCA9IGNsb2NrX21zX3RvX3U2NCgpOwogCX0KIApAQCAtMTI0 LDcgKzE3MSw5IEBAIGludCBwb3dlcl91cGRhdGUoc3RydWN0IHBvd2VyICpwb3dlcikKIAkJcmV0 dXJuIEVBR0FJTjsKIAogCWRfdGltZSA9IHMtPnRpbWVzdGFtcCAtIGQtPnRpbWVzdGFtcDsKLQlw b3dlci0+cG93ZXJfbVcgPSAocy0+ZW5lcmd5IC0gZC0+ZW5lcmd5KSAvIGRfdGltZTsKKwlwb3dl ci0+cG93ZXJfbVcgPSByb3VuZCgoZG91YmxlKShzLT5lbmVyZ3kgLSBkLT5lbmVyZ3kpICoKKwkJ CQkoMWUzZiAvIGRfdGltZSkpOwogCXBvd2VyLT5uZXdfc2FtcGxlID0gMTsKKwogCXJldHVybiAw OwogfQpkaWZmIC0tZ2l0IGEvb3ZlcmxheS9wb3dlci5oIGIvb3ZlcmxheS9wb3dlci5oCmluZGV4 IGJmODM0NmNlNDZiNC4uMjhhYmZjMzIyMzRiIDEwMDY0NAotLS0gYS9vdmVybGF5L3Bvd2VyLmgK KysrIGIvb3ZlcmxheS9wb3dlci5oCkBAIC0zOSw2ICszOSw4IEBAIHN0cnVjdCBwb3dlciB7CiAJ aW50IG5ld19zYW1wbGU7CiAKIAl1aW50NjRfdCBwb3dlcl9tVzsKKworCWRvdWJsZSByYXBsX3Nj YWxlOwogfTsKIAogaW50IHBvd2VyX2luaXQoc3RydWN0IHBvd2VyICpwb3dlcik7Ci0tIAoyLjE0 LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=