From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t 02/24] lib: Add GPU power measurement Date: Fri, 22 Mar 2019 09:21:33 +0000 Message-ID: <20190322092155.1656-2-chris@chris-wilson.co.uk> References: <20190322092155.1656-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190322092155.1656-1-chris@chris-wilson.co.uk> 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: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmVhZCB0aGUgUkFQTCBwb3dlciBtZXRyaWNzIGNvdXJ0ZXN5IG9mIHBlcmYuIE9yIHlvdXIgbG9j YWwgSFcKZXF1aXZhbGVudD8KCnYyOiB1c2Vsb2NhbGUoKQoKU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL01ha2VmaWxlLmFtICAg ICAgfCAgIDEgKwogbGliL01ha2VmaWxlLnNvdXJjZXMgfCAgIDIgKwogbGliL2lndF9ncHVfcG93 ZXIuYyAgfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog bGliL2lndF9ncHVfcG93ZXIuaCAgfCAgNTkgKysrKysrKysrKysrKysrKysrKysrKwogbGliL21l c29uLmJ1aWxkICAgICAgfCAgIDIgKwogNSBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZ3B1X3Bvd2VyLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvaWd0X2dwdV9wb3dlci5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIv bGliL01ha2VmaWxlLmFtCmluZGV4IDNlNmE3ZmRiYS4uNjJlOGJkYTczIDEwMDY0NAotLS0gYS9s aWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC04NCw0ICs4NCw1IEBAIGxp YmludGVsX3Rvb2xzX2xhX0xJQkFERCA9IFwKIAkkKExJQlVERVZfTElCUykgXAogCSQoUElYTUFO X0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAorCWxpYmlndF9wZXJmLmxhIFwKIAktbG0KZGlmZiAt LWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXgg Y2YyNzIwOTgxLi5lMDAzNDdmOTQgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisr KyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yNiw2ICsyNiw4IEBAIGxpYl9zb3VyY2VfbGlz dCA9CSAJXAogCWlndF9jb2xvcl9lbmNvZGluZy5jCVwKIAlpZ3RfY29sb3JfZW5jb2RpbmcuaAlc CiAJaWd0X2VkaWRfdGVtcGxhdGUuaAlcCisJaWd0X2dwdV9wb3dlci5jCQlcCisJaWd0X2dwdV9w b3dlci5oCQlcCiAJaWd0X2d0LmMJCVwKIAlpZ3RfZ3QuaAkJXAogCWlndF9ndnQuYwkJXApkaWZm IC0tZ2l0IGEvbGliL2lndF9ncHVfcG93ZXIuYyBiL2xpYi9pZ3RfZ3B1X3Bvd2VyLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5hNGUzYzE0MjAKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvaWd0X2dwdV9wb3dlci5jCkBAIC0wLDAgKzEsMTE0IEBACisjaW5jbHVkZSA8Y3R5 cGUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8 bG9jYWxlLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5j bHVkZSAiaWd0X2dwdV9wb3dlci5oIgorI2luY2x1ZGUgImlndF9wZXJmLmgiCisKK3N0YXRpYyBp bnQgZmlsZW5hbWVfdG9fYnVmKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICpidWYsIHVuc2ln bmVkIGludCBzeikKK3sKKwlpbnQgZmQ7CisJc3NpemVfdCByZXQ7CisKKwlmZCA9IG9wZW4oZmls ZW5hbWUsIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gLTE7CisKKwlyZXQgPSBy ZWFkKGZkLCBidWYsIHN6IC0gMSk7CisJY2xvc2UoZmQpOworCWlmIChyZXQgPCAxKQorCQlyZXR1 cm4gLTE7CisKKwlidWZbcmV0XSA9ICdcMCc7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVp bnQ2NF90IGZpbGVuYW1lX3RvX3U2NChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGJhc2UpCit7 CisJY2hhciBidWZbNjRdLCAqYjsKKworCWlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1 Ziwgc2l6ZW9mKGJ1ZikpKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSGFuZGxlIGJvdGggc2lu Z2xlIGludGVnZXIgYW5kIGtleT12YWx1ZSBmb3JtYXRzIGJ5IHNraXBwaW5nCisJICogbGVhZGlu ZyBub24tZGlnaXRzLgorCSAqLworCWIgPSBidWY7CisJd2hpbGUgKCpiICYmICFpc2RpZ2l0KCpi KSkKKwkJYisrOworCisJcmV0dXJuIHN0cnRvdWxsKGIsIE5VTEwsIGJhc2UpOworfQorCitzdGF0 aWMgZG91YmxlIGZpbGVuYW1lX3RvX2RvdWJsZShjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwls b2NhbGVfdCBsb2NhbGUsIG9sZGxvY2FsZTsKKwljaGFyIGJ1Zls4MF07CisJZG91YmxlIHY7CisK KwlpZiAoZmlsZW5hbWVfdG9fYnVmKGZpbGVuYW1lLCBidWYsIHNpemVvZihidWYpKSkKKwkJcmV0 dXJuIDA7CisKKwkvKiBSZXBsYWNlIHVzZXIgZW52aXJvbm1lbnQgd2l0aCBwbGFpbiBDIHRvIG1h dGNoIGtlcm5lbCBmb3JtYXQgKi8KKwlsb2NhbGUgPSBuZXdsb2NhbGUoTENfQUxMLCAiQyIsIDAp OworCW9sZGxvY2FsZSA9IHVzZWxvY2FsZShsb2NhbGUpOworCisJdiA9IHN0cnRvZChidWYsIE5V TEwpOworCisJdXNlbG9jYWxlKG9sZGxvY2FsZSk7CisJZnJlZWxvY2FsZShsb2NhbGUpOworCisJ cmV0dXJuIHY7Cit9CisKK3N0YXRpYyB1aW50NjRfdCByYXBsX3R5cGVfaWQodm9pZCkKK3sKKwly ZXR1cm4gZmlsZW5hbWVfdG9fdTY0KCIvc3lzL2RldmljZXMvcG93ZXIvdHlwZSIsIDEwKTsKK30K Kworc3RhdGljIHVpbnQ2NF90IHJhcGxfZ3B1X3Bvd2VyKHZvaWQpCit7CisJcmV0dXJuIGZpbGVu YW1lX3RvX3U2NCgiL3N5cy9kZXZpY2VzL3Bvd2VyL2V2ZW50cy9lbmVyZ3ktZ3B1IiwgMCk7Cit9 CisKK3N0YXRpYyBkb3VibGUgcmFwbF9ncHVfcG93ZXJfc2NhbGUodm9pZCkKK3sKKwlyZXR1cm4g ZmlsZW5hbWVfdG9fZG91YmxlKCIvc3lzL2RldmljZXMvcG93ZXIvZXZlbnRzL2VuZXJneS1ncHUu c2NhbGUiKTsKK30KKworaW50IGdwdV9wb3dlcl9vcGVuKHN0cnVjdCBncHVfcG93ZXIgKnBvd2Vy KQoreworCXBvd2VyLT5mZCA9IGlndF9wZXJmX29wZW4ocmFwbF90eXBlX2lkKCksIHJhcGxfZ3B1 X3Bvd2VyKCkpOworCWlmIChwb3dlci0+ZmQgPCAwKSB7CisJCXBvd2VyLT5mZCA9IC1lcnJubzsK KwkJZ290byBlcnI7CisJfQorCisJcG93ZXItPnNjYWxlID0gcmFwbF9ncHVfcG93ZXJfc2NhbGUo KTsKKwlpZiAoaXNuYW4ocG93ZXItPnNjYWxlKSB8fCAhcG93ZXItPnNjYWxlKSB7CisJCWNsb3Nl KHBvd2VyLT5mZCk7CisJCWdvdG8gZXJyOworCX0KKwlwb3dlci0+c2NhbGUgKj0gMWU5OworCisJ cmV0dXJuIDA7CisKK2VycjoKKwllcnJubyA9IDA7CisJcmV0dXJuIHBvd2VyLT5mZDsKK30KKwor Ym9vbCBncHVfcG93ZXJfcmVhZChzdHJ1Y3QgZ3B1X3Bvd2VyICpwb3dlciwgc3RydWN0IGdwdV9w b3dlcl9zYW1wbGUgKnMpCit7CisJcmV0dXJuIHJlYWQocG93ZXItPmZkLCBzLCBzaXplb2YoKnMp KSA9PSBzaXplb2YoKnMpOworfQorCit2b2lkIGdwdV9wb3dlcl9jbG9zZShzdHJ1Y3QgZ3B1X3Bv d2VyICpwb3dlcikKK3sKKwljbG9zZShwb3dlci0+ZmQpOworfQpkaWZmIC0tZ2l0IGEvbGliL2ln dF9ncHVfcG93ZXIuaCBiL2xpYi9pZ3RfZ3B1X3Bvd2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi40ZTFiNzQ3YzAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2dw dV9wb3dlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqCisgKi8KKworI2lmbmRlZiBJR1RfR1BVX1BPV0VSX0gKKyNkZWZpbmUgSUdUX0dQVV9Q T1dFUl9ICisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3N0 cnVjdCBncHVfcG93ZXIgeworCWludCBmZDsKKwlkb3VibGUgc2NhbGU7Cit9OworCitzdHJ1Y3Qg Z3B1X3Bvd2VyX3NhbXBsZSB7CisJdWludDY0X3QgZW5lcmd5OworCXVpbnQ2NF90IHRpbWU7Cit9 OworCitpbnQgZ3B1X3Bvd2VyX29wZW4oc3RydWN0IGdwdV9wb3dlciAqcG93ZXIpOworYm9vbCBn cHVfcG93ZXJfcmVhZChzdHJ1Y3QgZ3B1X3Bvd2VyICpwb3dlciwgc3RydWN0IGdwdV9wb3dlcl9z YW1wbGUgKnMpOwordm9pZCBncHVfcG93ZXJfY2xvc2Uoc3RydWN0IGdwdV9wb3dlciAqcG93ZXIp OworCitzdGF0aWMgaW5saW5lIGRvdWJsZSBncHVfcG93ZXJfSihjb25zdCBzdHJ1Y3QgZ3B1X3Bv d2VyICpwLAorCQkJCSBjb25zdCBzdHJ1Y3QgZ3B1X3Bvd2VyX3NhbXBsZSAqdDAsCisJCQkJIGNv bnN0IHN0cnVjdCBncHVfcG93ZXJfc2FtcGxlICp0MSkKK3sKKwlyZXR1cm4gKHQxLT5lbmVyZ3kg LSB0MC0+ZW5lcmd5KSAqIHAtPnNjYWxlICogMWUtOTsKK30KKworc3RhdGljIGlubGluZSBkb3Vi bGUgZ3B1X3Bvd2VyX1coY29uc3Qgc3RydWN0IGdwdV9wb3dlciAqcCwKKwkJCQkgY29uc3Qgc3Ry dWN0IGdwdV9wb3dlcl9zYW1wbGUgKnQwLAorCQkJCSBjb25zdCBzdHJ1Y3QgZ3B1X3Bvd2VyX3Nh bXBsZSAqdDEpCit7CisJcmV0dXJuICh0MS0+ZW5lcmd5IC0gdDAtPmVuZXJneSkgKiBwLT5zY2Fs ZSAvICh0MS0+dGltZSAtIHQwLT50aW1lKTsKK30KKworI2VuZGlmIC8qIElHVF9HUFVfUE9XRVJf SCAqLwpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4 IDBlYjU1ODVkNy4uODlkZTA2ZTY5IDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIv bGliL21lc29uLmJ1aWxkCkBAIC05LDkgKzksMTEgQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2lndF9k ZWJ1Z2ZzLmMnLAogCSdpZ3RfZGV2aWNlLmMnLAogCSdpZ3RfYXV4LmMnLAorCSdpZ3RfZ3B1X3Bv d2VyLmMnLAogCSdpZ3RfZ3QuYycsCiAJJ2lndF9ndnQuYycsCiAJJ2lndF9tYXRyaXguYycsCisJ J2lndF9wZXJmLmMnLAogCSdpZ3RfcHJpbWVzLmMnLAogCSdpZ3RfcmFuZC5jJywKIAknaWd0X3N0 YXRzLmMnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Fri, 22 Mar 2019 09:21:33 +0000 Message-Id: <20190322092155.1656-2-chris@chris-wilson.co.uk> In-Reply-To: <20190322092155.1656-1-chris@chris-wilson.co.uk> References: <20190322092155.1656-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t 02/24] lib: Add GPU power measurement List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: UmVhZCB0aGUgUkFQTCBwb3dlciBtZXRyaWNzIGNvdXJ0ZXN5IG9mIHBlcmYuIE9yIHlvdXIgbG9j YWwgSFcKZXF1aXZhbGVudD8KCnYyOiB1c2Vsb2NhbGUoKQoKU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL01ha2VmaWxlLmFtICAg ICAgfCAgIDEgKwogbGliL01ha2VmaWxlLnNvdXJjZXMgfCAgIDIgKwogbGliL2lndF9ncHVfcG93 ZXIuYyAgfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog bGliL2lndF9ncHVfcG93ZXIuaCAgfCAgNTkgKysrKysrKysrKysrKysrKysrKysrKwogbGliL21l c29uLmJ1aWxkICAgICAgfCAgIDIgKwogNSBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZ3B1X3Bvd2VyLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWIvaWd0X2dwdV9wb3dlci5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIv bGliL01ha2VmaWxlLmFtCmluZGV4IDNlNmE3ZmRiYS4uNjJlOGJkYTczIDEwMDY0NAotLS0gYS9s aWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC04NCw0ICs4NCw1IEBAIGxp YmludGVsX3Rvb2xzX2xhX0xJQkFERCA9IFwKIAkkKExJQlVERVZfTElCUykgXAogCSQoUElYTUFO X0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAorCWxpYmlndF9wZXJmLmxhIFwKIAktbG0KZGlmZiAt LWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXgg Y2YyNzIwOTgxLi5lMDAzNDdmOTQgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisr KyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCkBAIC0yNiw2ICsyNiw4IEBAIGxpYl9zb3VyY2VfbGlz dCA9CSAJXAogCWlndF9jb2xvcl9lbmNvZGluZy5jCVwKIAlpZ3RfY29sb3JfZW5jb2RpbmcuaAlc CiAJaWd0X2VkaWRfdGVtcGxhdGUuaAlcCisJaWd0X2dwdV9wb3dlci5jCQlcCisJaWd0X2dwdV9w b3dlci5oCQlcCiAJaWd0X2d0LmMJCVwKIAlpZ3RfZ3QuaAkJXAogCWlndF9ndnQuYwkJXApkaWZm IC0tZ2l0IGEvbGliL2lndF9ncHVfcG93ZXIuYyBiL2xpYi9pZ3RfZ3B1X3Bvd2VyLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5hNGUzYzE0MjAKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvaWd0X2dwdV9wb3dlci5jCkBAIC0wLDAgKzEsMTE0IEBACisjaW5jbHVkZSA8Y3R5 cGUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8 bG9jYWxlLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5j bHVkZSAiaWd0X2dwdV9wb3dlci5oIgorI2luY2x1ZGUgImlndF9wZXJmLmgiCisKK3N0YXRpYyBp bnQgZmlsZW5hbWVfdG9fYnVmKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICpidWYsIHVuc2ln bmVkIGludCBzeikKK3sKKwlpbnQgZmQ7CisJc3NpemVfdCByZXQ7CisKKwlmZCA9IG9wZW4oZmls ZW5hbWUsIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gLTE7CisKKwlyZXQgPSBy ZWFkKGZkLCBidWYsIHN6IC0gMSk7CisJY2xvc2UoZmQpOworCWlmIChyZXQgPCAxKQorCQlyZXR1 cm4gLTE7CisKKwlidWZbcmV0XSA9ICdcMCc7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVp bnQ2NF90IGZpbGVuYW1lX3RvX3U2NChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGJhc2UpCit7 CisJY2hhciBidWZbNjRdLCAqYjsKKworCWlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1 Ziwgc2l6ZW9mKGJ1ZikpKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSGFuZGxlIGJvdGggc2lu Z2xlIGludGVnZXIgYW5kIGtleT12YWx1ZSBmb3JtYXRzIGJ5IHNraXBwaW5nCisJICogbGVhZGlu ZyBub24tZGlnaXRzLgorCSAqLworCWIgPSBidWY7CisJd2hpbGUgKCpiICYmICFpc2RpZ2l0KCpi KSkKKwkJYisrOworCisJcmV0dXJuIHN0cnRvdWxsKGIsIE5VTEwsIGJhc2UpOworfQorCitzdGF0 aWMgZG91YmxlIGZpbGVuYW1lX3RvX2RvdWJsZShjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwls b2NhbGVfdCBsb2NhbGUsIG9sZGxvY2FsZTsKKwljaGFyIGJ1Zls4MF07CisJZG91YmxlIHY7CisK KwlpZiAoZmlsZW5hbWVfdG9fYnVmKGZpbGVuYW1lLCBidWYsIHNpemVvZihidWYpKSkKKwkJcmV0 dXJuIDA7CisKKwkvKiBSZXBsYWNlIHVzZXIgZW52aXJvbm1lbnQgd2l0aCBwbGFpbiBDIHRvIG1h dGNoIGtlcm5lbCBmb3JtYXQgKi8KKwlsb2NhbGUgPSBuZXdsb2NhbGUoTENfQUxMLCAiQyIsIDAp OworCW9sZGxvY2FsZSA9IHVzZWxvY2FsZShsb2NhbGUpOworCisJdiA9IHN0cnRvZChidWYsIE5V TEwpOworCisJdXNlbG9jYWxlKG9sZGxvY2FsZSk7CisJZnJlZWxvY2FsZShsb2NhbGUpOworCisJ cmV0dXJuIHY7Cit9CisKK3N0YXRpYyB1aW50NjRfdCByYXBsX3R5cGVfaWQodm9pZCkKK3sKKwly ZXR1cm4gZmlsZW5hbWVfdG9fdTY0KCIvc3lzL2RldmljZXMvcG93ZXIvdHlwZSIsIDEwKTsKK30K Kworc3RhdGljIHVpbnQ2NF90IHJhcGxfZ3B1X3Bvd2VyKHZvaWQpCit7CisJcmV0dXJuIGZpbGVu YW1lX3RvX3U2NCgiL3N5cy9kZXZpY2VzL3Bvd2VyL2V2ZW50cy9lbmVyZ3ktZ3B1IiwgMCk7Cit9 CisKK3N0YXRpYyBkb3VibGUgcmFwbF9ncHVfcG93ZXJfc2NhbGUodm9pZCkKK3sKKwlyZXR1cm4g ZmlsZW5hbWVfdG9fZG91YmxlKCIvc3lzL2RldmljZXMvcG93ZXIvZXZlbnRzL2VuZXJneS1ncHUu c2NhbGUiKTsKK30KKworaW50IGdwdV9wb3dlcl9vcGVuKHN0cnVjdCBncHVfcG93ZXIgKnBvd2Vy KQoreworCXBvd2VyLT5mZCA9IGlndF9wZXJmX29wZW4ocmFwbF90eXBlX2lkKCksIHJhcGxfZ3B1 X3Bvd2VyKCkpOworCWlmIChwb3dlci0+ZmQgPCAwKSB7CisJCXBvd2VyLT5mZCA9IC1lcnJubzsK KwkJZ290byBlcnI7CisJfQorCisJcG93ZXItPnNjYWxlID0gcmFwbF9ncHVfcG93ZXJfc2NhbGUo KTsKKwlpZiAoaXNuYW4ocG93ZXItPnNjYWxlKSB8fCAhcG93ZXItPnNjYWxlKSB7CisJCWNsb3Nl KHBvd2VyLT5mZCk7CisJCWdvdG8gZXJyOworCX0KKwlwb3dlci0+c2NhbGUgKj0gMWU5OworCisJ cmV0dXJuIDA7CisKK2VycjoKKwllcnJubyA9IDA7CisJcmV0dXJuIHBvd2VyLT5mZDsKK30KKwor Ym9vbCBncHVfcG93ZXJfcmVhZChzdHJ1Y3QgZ3B1X3Bvd2VyICpwb3dlciwgc3RydWN0IGdwdV9w b3dlcl9zYW1wbGUgKnMpCit7CisJcmV0dXJuIHJlYWQocG93ZXItPmZkLCBzLCBzaXplb2YoKnMp KSA9PSBzaXplb2YoKnMpOworfQorCit2b2lkIGdwdV9wb3dlcl9jbG9zZShzdHJ1Y3QgZ3B1X3Bv d2VyICpwb3dlcikKK3sKKwljbG9zZShwb3dlci0+ZmQpOworfQpkaWZmIC0tZ2l0IGEvbGliL2ln dF9ncHVfcG93ZXIuaCBiL2xpYi9pZ3RfZ3B1X3Bvd2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi40ZTFiNzQ3YzAKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2dw dV9wb3dlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqCisgKi8KKworI2lmbmRlZiBJR1RfR1BVX1BPV0VSX0gKKyNkZWZpbmUgSUdUX0dQVV9Q T1dFUl9ICisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3N0 cnVjdCBncHVfcG93ZXIgeworCWludCBmZDsKKwlkb3VibGUgc2NhbGU7Cit9OworCitzdHJ1Y3Qg Z3B1X3Bvd2VyX3NhbXBsZSB7CisJdWludDY0X3QgZW5lcmd5OworCXVpbnQ2NF90IHRpbWU7Cit9 OworCitpbnQgZ3B1X3Bvd2VyX29wZW4oc3RydWN0IGdwdV9wb3dlciAqcG93ZXIpOworYm9vbCBn cHVfcG93ZXJfcmVhZChzdHJ1Y3QgZ3B1X3Bvd2VyICpwb3dlciwgc3RydWN0IGdwdV9wb3dlcl9z YW1wbGUgKnMpOwordm9pZCBncHVfcG93ZXJfY2xvc2Uoc3RydWN0IGdwdV9wb3dlciAqcG93ZXIp OworCitzdGF0aWMgaW5saW5lIGRvdWJsZSBncHVfcG93ZXJfSihjb25zdCBzdHJ1Y3QgZ3B1X3Bv d2VyICpwLAorCQkJCSBjb25zdCBzdHJ1Y3QgZ3B1X3Bvd2VyX3NhbXBsZSAqdDAsCisJCQkJIGNv bnN0IHN0cnVjdCBncHVfcG93ZXJfc2FtcGxlICp0MSkKK3sKKwlyZXR1cm4gKHQxLT5lbmVyZ3kg LSB0MC0+ZW5lcmd5KSAqIHAtPnNjYWxlICogMWUtOTsKK30KKworc3RhdGljIGlubGluZSBkb3Vi bGUgZ3B1X3Bvd2VyX1coY29uc3Qgc3RydWN0IGdwdV9wb3dlciAqcCwKKwkJCQkgY29uc3Qgc3Ry dWN0IGdwdV9wb3dlcl9zYW1wbGUgKnQwLAorCQkJCSBjb25zdCBzdHJ1Y3QgZ3B1X3Bvd2VyX3Nh bXBsZSAqdDEpCit7CisJcmV0dXJuICh0MS0+ZW5lcmd5IC0gdDAtPmVuZXJneSkgKiBwLT5zY2Fs ZSAvICh0MS0+dGltZSAtIHQwLT50aW1lKTsKK30KKworI2VuZGlmIC8qIElHVF9HUFVfUE9XRVJf SCAqLwpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4 IDBlYjU1ODVkNy4uODlkZTA2ZTY5IDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIv bGliL21lc29uLmJ1aWxkCkBAIC05LDkgKzksMTEgQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2lndF9k ZWJ1Z2ZzLmMnLAogCSdpZ3RfZGV2aWNlLmMnLAogCSdpZ3RfYXV4LmMnLAorCSdpZ3RfZ3B1X3Bv d2VyLmMnLAogCSdpZ3RfZ3QuYycsCiAJJ2lndF9ndnQuYycsCiAJJ2lndF9tYXRyaXguYycsCisJ J2lndF9wZXJmLmMnLAogCSdpZ3RfcHJpbWVzLmMnLAogCSdpZ3RfcmFuZC5jJywKIAknaWd0X3N0 YXRzLmMnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=