From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v16 13/13] drm/i915: add support for perf configuration queries Date: Mon, 9 Sep 2019 12:31:16 +0300 Message-ID: <20190909093116.7747-14-lionel.g.landwerlin@intel.com> References: <20190909093116.7747-1-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 079CB89A9F for ; Mon, 9 Sep 2019 09:31:41 +0000 (UTC) In-Reply-To: <20190909093116.7747-1-lionel.g.landwerlin@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 TGlzdGluZyBjb25maWd1cmF0aW9ucyBhdCB0aGUgbW9tZW50IGlzIHN1cHBvcnRlZCBvbmx5IHRo cm91Z2ggc3lzZnMuClRoaXMgbWlnaHQgY2F1c2UgaXNzdWVzIGZvciBhcHBsaWNhdGlvbnMgd2Fu dGluZyB0byBsaXN0CmNvbmZpZ3VyYXRpb25zIGZyb20gYSBjb250YWluZXIgd2hlcmUgc3lzZnMg aXNuJ3QgYXZhaWxhYmxlLgoKVGhpcyBjaGFuZ2UgYWRkcyBhIHdheSB0byBxdWVyeSB0aGUgbnVt YmVyIG9mIGNvbmZpZ3VyYXRpb25zIGFuZCB0aGVpcgpjb250ZW50IHRocm91Z2ggdGhlIGk5MTUg cXVlcnkgdUFQSS4KCnYyOiBGaXggc3BhcnNlIHdhcm5pbmdzIChMaW9uZWwpCiAgICBBZGQgc3Vw cG9ydCB0byBxdWVyeSBjb25maWd1cmF0aW9uIHVzaW5nIHV1aWQgKExpb25lbCkKCnYzOiBGaXgg c29tZSBpbmNvbnNpc3RlbmN5IGluIHVhcGkgaGVhZGVyIChMaW9uZWwpCiAgICBGaXggdW5sb2Nr aW5nIHdoZW4gbm90IGxvY2tlZCBpc3N1ZSAoTGlvbmVsKQogICAgQWRkIGRlYnVnIG1lc3NhZ2Vz IChMaW9uZWwpCgp2NDogRml4IG1pc3NpbmcgdW5sb2NrIChEYW4pCgp2NTogRHJvcCBsb2NrIHdo ZW4gY29weWluZyBjb25maWcgY29udGVudCB0byB1c2Vyc3BhY2UgKENocmlzKQoKdjY6IERyb3Ag bG9jayB3aGVuIGNvcHlpbmcgY29uZmlnIGxpc3QgdG8gdXNlcnNwYWNlIChDaHJpcykKICAgIEZp eCBkZWFkbG9jayB3aGVuIGNhbGxpbmcgaTkxNV9wZXJmX2dldF9vYV9jb25maWcoKSB1bmRlcgog ICAgcGVyZi5tZXRyaWNzX2xvY2sgKExpb25lbCkKICAgIEFkZCBpOTE1X29hX2NvbmZpZ19nZXQo KSAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFu ZHdlcmxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgfCAg IDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgIHwgICAzICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYyB8IDI4MiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICB8ICA2NSArKysrKystCiA0 IGZpbGVzIGNoYW5nZWQsIDM1MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCmluZGV4IDJjNmYzNzIxOWRmZi4uZWFiNDIyNjlmYzViIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTEzNjgsNiArMTM2OCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSB7CiAJCSAqLwogCQlzdHJ1Y3QgaWRyIG1ldHJpY3NfaWRyOwogCisJCS8qCisJCSAq IE51bWJlciBvZiBkeW5hbWljIGNvbmZpZ3VyYXRpb25zLCB5b3UgbmVlZCB0byBob2xkCisJCSAq IGRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayB0byBhY2Nlc3MgaXQuCisJCSAqLworCQl1MzIg bl9tZXRyaWNzOworCiAJCS8qCiAJCSAqIExvY2sgYXNzb2NpYXRlZCB3aXRoIGFueXRoaW5nIGJl bG93IHdpdGhpbiB0aGlzIHN0cnVjdHVyZQogCQkgKiBleGNlcHQgZXhjbHVzaXZlX3N0cmVhbS4K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKaW5kZXggMGZmY2I4ZDE2MTU0Li5jZjM5MmU0ZDY4NzAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0zOTE3LDYgKzM5MTcsOCBAQCBpbnQgaTkx NV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJZ290byBzeXNmc19lcnI7CiAJfQogCisJZGV2X3ByaXYtPnBlcmYubl9tZXRyaWNzKys7 CisKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayk7CiAKIAlEUk1f REVCVUcoIkFkZGVkIGNvbmZpZyAlcyBpZD0laVxuIiwgb2FfY29uZmlnLT51dWlkLCBvYV9jb25m aWctPmlkKTsKQEAgLTM5NzcsNiArMzk3OSw3IEBAIGludCBpOTE1X3BlcmZfcmVtb3ZlX2NvbmZp Z19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICAgJm9hX2Nv bmZpZy0+c3lzZnNfbWV0cmljKTsKIAogCWlkcl9yZW1vdmUoJmRldl9wcml2LT5wZXJmLm1ldHJp Y3NfaWRyLCAqYXJnKTsKKwlkZXZfcHJpdi0+cGVyZi5uX21ldHJpY3MtLTsKIAogCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9x dWVyeS5jCmluZGV4IGFiYWM1MDQyZGEyYi4uZTFmMGMxODRhMjA5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9xdWVyeS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L25vc3BlYy5oPgog CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3BlcmYuaCIKICNpbmNsdWRl ICJpOTE1X3F1ZXJ5LmgiCiAjaW5jbHVkZSA8dWFwaS9kcm0vaTkxNV9kcm0uaD4KIApAQCAtMTQw LDEwICsxNDEsMjkxIEBAIHF1ZXJ5X2VuZ2luZV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAogCXJldHVybiBsZW47CiB9CiAKK3N0YXRpYyBpbnQgY2FuX2NvcHlfcGVyZl9jb25m aWdfcmVnaXN0ZXJzX29yX251bWJlcih1MzIgdXNlcl9uX3JlZ3MsCisJCQkJCQkgICAgdTY0IHVz ZXJfcmVnc19wdHIsCisJCQkJCQkgICAgdTMyIGtlcm5lbF9uX3JlZ3MpCit7CisJLyoKKwkgKiBX ZSdsbCBqdXN0IHB1dCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycywgYW5kIHdvbid0IGNvcHkgdGhl CisJICogcmVnaXN0ZXIuCisJICovCisJaWYgKHVzZXJfbl9yZWdzID09IDApCisJCXJldHVybiAw OworCisJaWYgKHVzZXJfbl9yZWdzIDwga2VybmVsX25fcmVncykKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlpZiAoIWFjY2Vzc19vayh1NjRfdG9fdXNlcl9wdHIodXNlcl9yZWdzX3B0ciksCisJCSAg ICAgICAyICogc2l6ZW9mKHUzMikgKiBrZXJuZWxfbl9yZWdzKSkKKwkJcmV0dXJuIC1FRkFVTFQ7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb3B5X3BlcmZfY29uZmlnX3JlZ2lzdGVy c19vcl9udW1iZXIoY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICprZXJuZWxfcmVncywKKwkJCQkJ CXUzMiBrZXJuZWxfbl9yZWdzLAorCQkJCQkJdTY0IHVzZXJfcmVnc19wdHIsCisJCQkJCQl1MzIg KnVzZXJfbl9yZWdzKQoreworCXUzMiByOworCisJaWYgKCp1c2VyX25fcmVncyA9PSAwKSB7CisJ CSp1c2VyX25fcmVncyA9IGtlcm5lbF9uX3JlZ3M7CisJCXJldHVybiAwOworCX0KKworCSp1c2Vy X25fcmVncyA9IGtlcm5lbF9uX3JlZ3M7CisKKwlmb3IgKHIgPSAwOyByIDwga2VybmVsX25fcmVn czsgcisrKSB7CisJCXUzMiBfX3VzZXIgKnVzZXJfcmVnX3B0ciA9CisJCQl1NjRfdG9fdXNlcl9w dHIodXNlcl9yZWdzX3B0ciArIHNpemVvZih1MzIpICogciAqIDIpOworCQl1MzIgX191c2VyICp1 c2VyX3ZhbF9wdHIgPQorCQkJdTY0X3RvX3VzZXJfcHRyKHVzZXJfcmVnc19wdHIgKyBzaXplb2Yo dTMyKSAqIHIgKiAyICsKKwkJCQkJc2l6ZW9mKHUzMikpOworCQlpbnQgcmV0OworCisJCXJldCA9 IF9fcHV0X3VzZXIoaTkxNV9tbWlvX3JlZ19vZmZzZXQoa2VybmVsX3JlZ3Nbcl0uYWRkciksCisJ CQkJIHVzZXJfcmVnX3B0cik7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gLUVGQVVMVDsKKworCQly ZXQgPSBfX3B1dF91c2VyKGtlcm5lbF9yZWdzW3JdLnZhbHVlLCB1c2VyX3ZhbF9wdHIpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIC1FRkFVTFQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgcXVlcnlfcGVyZl9jb25maWdfZGF0YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKKwkJCQkgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtLAorCQkJCSAg Ym9vbCB1c2VfdXVpZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfcGVyZl9jb25maWcgX191 c2VyICp1c2VyX3F1ZXJ5X2NvbmZpZ19wdHIgPQorCQl1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRl bS0+ZGF0YV9wdHIpOworCXN0cnVjdCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZyBfX3VzZXIgKnVz ZXJfY29uZmlnX3B0ciA9CisJCXU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciAr CisJCQkJc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9wZXJmX2NvbmZpZykpOworCXN0cnVj dCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZyB1c2VyX2NvbmZpZzsKKwlzdHJ1Y3QgaTkxNV9vYV9j b25maWcgKm9hX2NvbmZpZyA9IE5VTEw7CisJY2hhciB1dWlkW1VVSURfU1RSSU5HX0xFTiArIDFd OworCXU2NCBjb25maWdfaWQ7CisJdTMyIGZsYWdzLCB0b3RhbF9zaXplOworCWludCByZXQ7CisK KwlpZiAoIWk5MTUtPnBlcmYuaW5pdGlhbGl6ZWQpCisJCXJldHVybiAtRU5PREVWOworCisJdG90 YWxfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfcGVyZl9jb25maWcpICsKKwkJ c2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZyk7CisKKwlpZiAocXVlcnlfaXRl bS0+bGVuZ3RoID09IDApCisJCXJldHVybiB0b3RhbF9zaXplOworCisJaWYgKHF1ZXJ5X2l0ZW0t Pmxlbmd0aCA8IHRvdGFsX3NpemUpIHsKKwkJRFJNX0RFQlVHKCJJbnZhbGlkIHF1ZXJ5IGNvbmZp ZyBkYXRhIGl0ZW0gc2l6ZT0ldSBleHBlY3RlZD0ldVxuIiwKKwkJCSAgcXVlcnlfaXRlbS0+bGVu Z3RoLCB0b3RhbF9zaXplKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKCFhY2Nlc3Nf b2sodXNlcl9xdWVyeV9jb25maWdfcHRyLCB0b3RhbF9zaXplKSkKKwkJcmV0dXJuIC1FRkFVTFQ7 CisKKwlpZiAoX19nZXRfdXNlcihmbGFncywgJnVzZXJfcXVlcnlfY29uZmlnX3B0ci0+ZmxhZ3Mp KQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmIChmbGFncyAhPSAwKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWlmICh1c2VfdXVpZCkgeworCQlCVUlMRF9CVUdfT04oc2l6ZW9mKHVzZXJfcXVlcnlf Y29uZmlnX3B0ci0+dXVpZCkgPj0gc2l6ZW9mKHV1aWQpKTsKKworCQltZW1zZXQoJnV1aWQsIDAs IHNpemVvZih1dWlkKSk7CisJCWlmIChfX2NvcHlfZnJvbV91c2VyKHV1aWQsIHVzZXJfcXVlcnlf Y29uZmlnX3B0ci0+dXVpZCwKKwkJCQkgICAgIHNpemVvZih1c2VyX3F1ZXJ5X2NvbmZpZ19wdHIt PnV1aWQpKSkKKwkJCXJldHVybiAtRUZBVUxUOworCX0gZWxzZSB7CisJCWlmIChfX2dldF91c2Vy KGNvbmZpZ19pZCwgJnVzZXJfcXVlcnlfY29uZmlnX3B0ci0+Y29uZmlnKSkKKwkJCXJldHVybiAt RUZBVUxUOworCX0KKworCWlmICh1c2VfdXVpZCkgeworCQlzdHJ1Y3QgaTkxNV9vYV9jb25maWcg KnRtcDsKKwkJaW50IGlkOworCisJCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmaTkx NS0+cGVyZi5tZXRyaWNzX2xvY2spOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlp ZHJfZm9yX2VhY2hfZW50cnkoJmk5MTUtPnBlcmYubWV0cmljc19pZHIsIHRtcCwgaWQpIHsKKwkJ CWlmICghc3RyY21wKHRtcC0+dXVpZCwgdXVpZCkpIHsKKwkJCQlvYV9jb25maWcgPSBpOTE1X29h X2NvbmZpZ19nZXQodG1wKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCW11dGV4X3VubG9j aygmaTkxNS0+cGVyZi5tZXRyaWNzX2xvY2spOworCX0gZWxzZSB7CisJCXJldCA9IGk5MTVfcGVy Zl9nZXRfb2FfY29uZmlnKGk5MTUsIGNvbmZpZ19pZCwgJm9hX2NvbmZpZyk7CisJfQorCisJaWYg KHJldCB8fCAhb2FfY29uZmlnKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWlmIChfX2NvcHlfZnJv bV91c2VyKCZ1c2VyX2NvbmZpZywgdXNlcl9jb25maWdfcHRyLAorCQkJICAgICBzaXplb2YodXNl cl9jb25maWcpKSkgeworCQlyZXQgPSAtRUZBVUxUOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQg PSBjYW5fY29weV9wZXJmX2NvbmZpZ19yZWdpc3RlcnNfb3JfbnVtYmVyKHVzZXJfY29uZmlnLm5f Ym9vbGVhbl9yZWdzLAorCQkJCQkJICAgICAgIHVzZXJfY29uZmlnLmJvb2xlYW5fcmVnc19wdHIs CisJCQkJCQkgICAgICAgb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVnc19sZW4pOworCWlmIChyZXQp CisJCWdvdG8gb3V0OworCisJcmV0ID0gY2FuX2NvcHlfcGVyZl9jb25maWdfcmVnaXN0ZXJzX29y X251bWJlcih1c2VyX2NvbmZpZy5uX2ZsZXhfcmVncywKKwkJCQkJCSAgICAgICB1c2VyX2NvbmZp Zy5mbGV4X3JlZ3NfcHRyLAorCQkJCQkJICAgICAgIG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbik7 CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBjYW5fY29weV9wZXJmX2NvbmZpZ19y ZWdpc3RlcnNfb3JfbnVtYmVyKHVzZXJfY29uZmlnLm5fbXV4X3JlZ3MsCisJCQkJCQkgICAgICAg dXNlcl9jb25maWcubXV4X3JlZ3NfcHRyLAorCQkJCQkJICAgICAgIG9hX2NvbmZpZy0+bXV4X3Jl Z3NfbGVuKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCXJldCA9IGNvcHlfcGVyZl9jb25m aWdfcmVnaXN0ZXJzX29yX251bWJlcihvYV9jb25maWctPmJfY291bnRlcl9yZWdzLAorCQkJCQkJ ICAgb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVnc19sZW4sCisJCQkJCQkgICB1c2VyX2NvbmZpZy5i b29sZWFuX3JlZ3NfcHRyLAorCQkJCQkJICAgJnVzZXJfY29uZmlnLm5fYm9vbGVhbl9yZWdzKTsK KwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCXJldCA9IGNvcHlfcGVyZl9jb25maWdfcmVnaXN0 ZXJzX29yX251bWJlcihvYV9jb25maWctPmZsZXhfcmVncywKKwkJCQkJCSAgIG9hX2NvbmZpZy0+ ZmxleF9yZWdzX2xlbiwKKwkJCQkJCSAgIHVzZXJfY29uZmlnLmZsZXhfcmVnc19wdHIsCisJCQkJ CQkgICAmdXNlcl9jb25maWcubl9mbGV4X3JlZ3MpOworCWlmIChyZXQpCisJCWdvdG8gb3V0Owor CisJcmV0ID0gY29weV9wZXJmX2NvbmZpZ19yZWdpc3RlcnNfb3JfbnVtYmVyKG9hX2NvbmZpZy0+ bXV4X3JlZ3MsCisJCQkJCQkgICBvYV9jb25maWctPm11eF9yZWdzX2xlbiwKKwkJCQkJCSAgIHVz ZXJfY29uZmlnLm11eF9yZWdzX3B0ciwKKwkJCQkJCSAgICZ1c2VyX2NvbmZpZy5uX211eF9yZWdz KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCW1lbWNweSh1c2VyX2NvbmZpZy51dWlkLCBv YV9jb25maWctPnV1aWQsIHNpemVvZih1c2VyX2NvbmZpZy51dWlkKSk7CisKKwlpZiAoX19jb3B5 X3RvX3VzZXIodXNlcl9jb25maWdfcHRyLCAmdXNlcl9jb25maWcsCisJCQkgICBzaXplb2YodXNl cl9jb25maWcpKSkgeworCQlyZXQgPSAtRUZBVUxUOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQg PSB0b3RhbF9zaXplOworCitvdXQ6CisJaTkxNV9vYV9jb25maWdfcHV0KG9hX2NvbmZpZyk7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHF1ZXJ5X3BlcmZfY29uZmlnX2xpc3Qoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlf aXRlbSAqcXVlcnlfaXRlbSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfcGVyZl9jb25maWcg X191c2VyICp1c2VyX3F1ZXJ5X2NvbmZpZ19wdHIgPQorCQl1NjRfdG9fdXNlcl9wdHIocXVlcnlf aXRlbS0+ZGF0YV9wdHIpOworCXN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnOworCXUz MiBmbGFncywgdG90YWxfc2l6ZTsKKwl1NjQgaSwgbl9jb25maWdzLCAqb2FfY29uZmlnX2lkczsK KwlpbnQgcmV0LCBpZDsKKworCWlmICghaTkxNS0+cGVyZi5pbml0aWFsaXplZCkKKwkJcmV0dXJu IC1FTk9ERVY7CisKKwkvKiBDb3VudCB0aGUgZGVmYXVsdCB0ZXN0IGNvbmZpZ3VyYXRpb24gKi8K KwluX2NvbmZpZ3MgPSBpOTE1LT5wZXJmLm5fbWV0cmljcyArIDE7CisJdG90YWxfc2l6ZSA9IHNp emVvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfcGVyZl9jb25maWcpICsKKwkJc2l6ZW9mKHU2NCkg KiBuX2NvbmZpZ3M7CisKKwlpZiAocXVlcnlfaXRlbS0+bGVuZ3RoID09IDApCisJCXJldHVybiB0 b3RhbF9zaXplOworCisJaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA8IHRvdGFsX3NpemUpIHsKKwkJ RFJNX0RFQlVHKCJJbnZhbGlkIHF1ZXJ5IGNvbmZpZyBsaXN0IGl0ZW0gc2l6ZT0ldSBleHBlY3Rl ZD0ldVxuIiwKKwkJCSAgcXVlcnlfaXRlbS0+bGVuZ3RoLCB0b3RhbF9zaXplKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJaWYgKCFhY2Nlc3Nfb2sodXNlcl9xdWVyeV9jb25maWdfcHRyLCB0 b3RhbF9zaXplKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAoX19nZXRfdXNlcihmbGFncywg JnVzZXJfcXVlcnlfY29uZmlnX3B0ci0+ZmxhZ3MpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlm IChmbGFncyAhPSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChfX3B1dF91c2VyKG5fY29u ZmlncywgJnVzZXJfcXVlcnlfY29uZmlnX3B0ci0+Y29uZmlnKSkKKwkJcmV0dXJuIC1FRkFVTFQ7 CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmk5MTUtPnBlcmYubWV0cmljc19s b2NrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogQ291bnQgdGhlIGNvbmZpZ3Mu ICovCisJbl9jb25maWdzID0gMTsKKwlpZHJfZm9yX2VhY2hfZW50cnkoJmk5MTUtPnBlcmYubWV0 cmljc19pZHIsIG9hX2NvbmZpZywgaWQpCisJCW5fY29uZmlncysrOworCisJb2FfY29uZmlnX2lk cyA9CisJCWttYWxsb2NfYXJyYXkobl9jb25maWdzLCBzaXplb2YoKm9hX2NvbmZpZ19pZHMpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIW9hX2NvbmZpZ19pZHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1 LT5wZXJmLm1ldHJpY3NfbG9jayk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWkgPSAwOwor CW9hX2NvbmZpZ19pZHNbaSsrXSA9IDF1bGw7CisJaWRyX2Zvcl9lYWNoX2VudHJ5KCZpOTE1LT5w ZXJmLm1ldHJpY3NfaWRyLCBvYV9jb25maWcsIGlkKQorCQlvYV9jb25maWdfaWRzW2krK10gPSBp ZDsKKworCW11dGV4X3VubG9jaygmaTkxNS0+cGVyZi5tZXRyaWNzX2xvY2spOworCisJcmV0ID0g Y29weV90b191c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciArCisJCQkJ CSAgIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfcGVyZl9jb25maWcpKSwKKwkJCSAgIG9h X2NvbmZpZ19pZHMsCisJCQkgICBuX2NvbmZpZ3MgKiBzaXplb2YoKm9hX2NvbmZpZ19pZHMpKTsK KwlrZnJlZShvYV9jb25maWdfaWRzKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0 dXJuIHRvdGFsX3NpemU7Cit9CisKK3N0YXRpYyBpbnQgcXVlcnlfcGVyZl9jb25maWcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9p dGVtICpxdWVyeV9pdGVtKQoreworCXN3aXRjaCAocXVlcnlfaXRlbS0+ZmxhZ3MpIHsKKwljYXNl IERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklHX0xJU1Q6CisJCXJldHVybiBxdWVyeV9wZXJmX2Nv bmZpZ19saXN0KGk5MTUsIHF1ZXJ5X2l0ZW0pOworCWNhc2UgRFJNX0k5MTVfUVVFUllfUEVSRl9D T05GSUdfREFUQV9GT1JfVVVJRDoKKwkJcmV0dXJuIHF1ZXJ5X3BlcmZfY29uZmlnX2RhdGEoaTkx NSwgcXVlcnlfaXRlbSwgdHJ1ZSk7CisJY2FzZSBEUk1fSTkxNV9RVUVSWV9QRVJGX0NPTkZJR19E QVRBX0ZPUl9JRDoKKwkJcmV0dXJuIHF1ZXJ5X3BlcmZfY29uZmlnX2RhdGEoaTkxNSwgcXVlcnlf aXRlbSwgZmFsc2UpOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KK30KKwogc3Rh dGljIGludCAoKiBjb25zdCBpOTE1X3F1ZXJ5X2Z1bmNzW10pKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCQkJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0 ZW0pID0gewogCXF1ZXJ5X3RvcG9sb2d5X2luZm8sCiAJcXVlcnlfZW5naW5lX2luZm8sCisJcXVl cnlfcGVyZl9jb25maWcsCiB9OwogCiBpbnQgaTkxNV9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCmRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKaW5kZXggNTg1MGQ2ODMyN2VjLi4yZTcyMTU5ODlkZjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAg LTEwMzcsOCArMTAzNyw3IEBAIGVudW0gZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXJfZXh0IHsKIAlE Uk1fSTkxNV9HRU1fRVhFQ0JVRkZFUl9FWFRfVElNRUxJTkVfRkVOQ0VTID0gMSwKIAogCS8qKgot CSAqIFRoaXMgaWRlbnRpZmllciBpcyBhc3NvY2lhdGVkIHdpdGgKLQkgKiBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcl9wZXJmX2V4dC4KKwkgKiBTZWUgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXJfcGVy Zl9leHQuCiAJICovCiAJRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVJfRVhUX1BFUkYsCiAKQEAgLTIx MTMsNiArMjExMiw3IEBAIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIHsKIAlfX3U2NCBxdWVy eV9pZDsKICNkZWZpbmUgRFJNX0k5MTVfUVVFUllfVE9QT0xPR1lfSU5GTyAgICAxCiAjZGVmaW5l IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPCTIKKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfUEVS Rl9DT05GSUcgICAgICAzCiAvKiBNdXN0IGJlIGtlcHQgY29tcGFjdCAtLSBubyBob2xlcyBhbmQg d2VsbCBkb2N1bWVudGVkICovCiAKIAkvKgpAQCAtMjEyNCw5ICsyMTI0LDE4IEBAIHN0cnVjdCBk cm1faTkxNV9xdWVyeV9pdGVtIHsKIAlfX3MzMiBsZW5ndGg7CiAKIAkvKgotCSAqIFVudXNlZCBm b3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKiBXaGVuIHF1ZXJ5X2lkID09IERS TV9JOTE1X1FVRVJZX1RPUE9MT0dZX0lORk8sIG11c3QgYmUgMC4KKwkgKgorCSAqIFdoZW4gcXVl cnlfaWQgPT0gRFJNX0k5MTVfUVVFUllfUEVSRl9DT05GSUcsIG11c3QgYmUgb25lIG9mIHRoZQor CSAqIGZvbGxvd2luZyA6CisJICogICAgICAgICAtIERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklH X0xJU1QKKwkgKiAgICAgICAgIC0gRFJNX0k5MTVfUVVFUllfUEVSRl9DT05GSUdfREFUQV9GT1Jf VVVJRAorCSAqICAgICAgICAgLSBEUk1fSTkxNV9RVUVSWV9QRVJGX0NPTkZJR19GT1JfVVVJRAog CSAqLwogCV9fdTMyIGZsYWdzOworI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9QRVJGX0NPTkZJR19M SVNUICAgICAgICAgIDEKKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfUEVSRl9DT05GSUdfREFUQV9G T1JfVVVJRCAyCisjZGVmaW5lIERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklHX0RBVEFfRk9SX0lE ICAgMwogCiAJLyoKIAkgKiBEYXRhIHdpbGwgYmUgd3JpdHRlbiBhdCB0aGUgbG9jYXRpb24gcG9p bnRlZCBieSBkYXRhX3B0ciB3aGVuIHRoZQpAQCAtMjI1Miw2ICsyMjYxLDU2IEBAIHN0cnVjdCBk cm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyB7CiAJc3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZv IGVuZ2luZXNbXTsKIH07CiAKKy8qCisgKiBEYXRhIHdyaXR0ZW4gYnkgdGhlIGtlcm5lbCB3aXRo IHF1ZXJ5IERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklHLgorICovCitzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfcGVyZl9jb25maWcgeworCXVuaW9uIHsKKwkJLyoKKwkJICogV2hlbiBxdWVyeV9pdGVt LmZsYWdzID09IERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklHX0xJU1QsIGk5MTUgc2V0cworCQkg KiB0aGlzIGZpZWxkcyB0byB0aGUgbnVtYmVyIG9mIGNvbmZpZ3VyYXRpb25zIGF2YWlsYWJsZS4K KwkJICovCisJCV9fdTY0IG5fY29uZmlnczsKKworCQkvKgorCQkgKiBXaGVuIHF1ZXJ5X2lkID09 IERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklHX0RBVEFfRk9SX0lELAorCQkgKiBpOTE1IHdpbGwg dXNlIHRoZSB2YWx1ZSBpbiB0aGlzIGZpZWxkIGFzIGNvbmZpZ3VyYXRpb24KKwkJICogaWRlbnRp ZmllciB0byBkZWNpZGUgd2hhdCBkYXRhIHRvIHdyaXRlIGludG8gY29uZmlnX3B0ci4KKwkJICov CisJCV9fdTY0IGNvbmZpZzsKKworCQkvKgorCQkgKiBXaGVuIHF1ZXJ5X2lkID09IERSTV9JOTE1 X1FVRVJZX1BFUkZfQ09ORklHX0RBVEFfRk9SX1VVSUQsCisJCSAqIGk5MTUgd2lsbCB1c2UgdGhl IHZhbHVlIGluIHRoaXMgZmllbGQgYXMgY29uZmlndXJhdGlvbgorCQkgKiBpZGVudGlmaWVyIHRv IGRlY2lkZSB3aGF0IGRhdGEgdG8gd3JpdGUgaW50byBjb25maWdfcHRyLgorCQkgKgorCQkgKiBT dHJpbmcgZm9ybWF0dGVkIGxpa2UgIiUwOHgtJTA0eC0lMDR4LSUwNHgtJTAxMngiCisJCSAqLwor CQljaGFyIHV1aWRbMzZdOworCX07CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJl IGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiBmbGFnczsKKworCS8qCisJICogV2hlbiBx dWVyeV9pdGVtLmZsYWdzID09IERSTV9JOTE1X1FVRVJZX1BFUkZfQ09ORklHX0xJU1QsIGk5MTUg d2lsbAorCSAqIHdyaXRlIGFuIGFycmF5IG9mIF9fdTY0IG9mIGNvbmZpZ3VyYXRpb24gaWRlbnRp ZmllcnMuCisJICoKKwkgKiBXaGVuIHF1ZXJ5X2l0ZW0uZmxhZ3MgPT0gRFJNX0k5MTVfUVVFUllf UEVSRl9DT05GSUdfREFUQSwgaTkxNSB3aWxsCisJICogd3JpdGUgYSBzdHJ1Y3QgZHJtX2k5MTVf cGVyZl9vYV9jb25maWcuIElmIHRoZSBmb2xsb3dpbmcgZmllbGRzIG9mCisJICogZHJtX2k5MTVf cGVyZl9vYV9jb25maWcgYXJlIHNldCBub3Qgc2V0IHRvIDAsIGk5MTUgd2lsbCB3cml0ZSBpbnRv CisJICogdGhlIGFzc29jaWF0ZWQgcG9pbnRlcnMgdGhlIHZhbHVlcyBvZiBzdWJtaXR0ZWQgd2hl biB0aGUKKwkgKiBjb25maWd1cmF0aW9uIHdhcyBjcmVhdGVkIDoKKwkgKgorCSAqICAgICAgICAg LSBuX211eF9yZWdzCisJICogICAgICAgICAtIG5fYm9vbGVhbl9yZWdzCisJICogICAgICAgICAt IG5fZmxleF9yZWdzCisJICovCisJX191OCBkYXRhW107Cit9OworCiAjaWYgZGVmaW5lZChfX2Nw bHVzcGx1cykKIH0KICNlbmRpZgotLSAKMi4yMy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZng=