From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v8 12/13] drm/i915/perf: execute OA configuration from command stream Date: Tue, 9 Jul 2019 15:33:50 +0300 Message-ID: <20190709123351.5645-13-lionel.g.landwerlin@intel.com> References: <20190709123351.5645-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4AC6E89C3B for ; Tue, 9 Jul 2019 12:34:29 +0000 (UTC) In-Reply-To: <20190709123351.5645-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 V2UgaGF2ZW4ndCBydW4gaW50byBpc3N1ZXMgd2l0aCBwcm9ncmFtbWluZyB0aGUgZ2xvYmFsIE9B L05PQQpyZWdpc3RlcnMgY29uZmlndXJhdGlvbiBmcm9tIENQVSBzbyBmYXIsIGJ1dCBIVyBlbmdp bmVlcnMgYWN0dWFsbHkKcmVjb21tZW5kIGRvaW5nIHRoaXMgZnJvbSB0aGUgY29tbWFuZCBzdHJl YW1lci4KClNpbmNlIHdlIGhhdmUgYSBjb21tYW5kIGJ1ZmZlciBwcmVwYXJlZCBmb3IgdGhlIGV4 ZWNidWZmZXIgc2lkZSBvZgp0aGluZ3MsIHdlIGNhbiByZXVzZSB0aGF0IGFwcHJvYWNoIGhlcmUg dG9vLgoKVGhpcyBhbHNvIGFsbG93cyB1cyB0byBzaWduaWZpY2FudGx5IHJlZHVjZSB0aGUgYW1v dW50IG9mIHRpbWUgd2UgaG9sZAp0aGUgbWFpbiBsb2NrLgoKdjI6IERyb3AgdGhlIGdsb2JhbCBs b2NrIGFzIG11Y2ggYXMgcG9zc2libGUKCnYzOiBUYWtlIGdsb2JhbCBsb2NrIHRvIHBpbiBnbG9i YWwKClNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGlu QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICAgNyAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyB8IDI2NyArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspLCAxMDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZGMwZTQ5ODJjNjcyLi5j NzJlN2M3NDZiNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTIwNSw2ICsxMjA1LDEz IEBAIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAkgKi8KIAlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKIAorCS8qKgorCSAqIEBpbml0aWFsX2NvbmZpZ19ycTogRmlyc3QgcmVxdWVzdCBydW4g YXQgdGhlIG9wZW5pbmcgb2YgdGhlIGk5MTUKKwkgKiBwZXJmIHN0cmVhbSB0byBjb25maWd1cmUg dGhlIEhXLiBTaG91bGQgYmUgTlVMTCBhZnRlciB0aGUgcGVyZgorCSAqIHN0cmVhbSBoYXMgYmVl biBvcGVuZWQgc3VjY2Vzc2Z1bGx5LgorCSAqLworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKmluaXRp YWxfY29uZmlnX3JxOworCiAJLyoqCiAJICogQHNhbXBsZV9mbGFnczogRmxhZ3MgcmVwcmVzZW50 aW5nIHRoZSBgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV8qYAogCSAqIHByb3BlcnRpZXMgZ2l2 ZW4gd2hlbiBvcGVuaW5nIGEgc3RyZWFtLCByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnRzCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IDcwOTExNmI5MjI4MC4uZGZkOWVkNGYzMjFlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMzkyLDYgKzM5MiwxOSBAQCB2b2lkIGk5MTVfb2Ff Y29uZmlnX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKIAlrZnJlZShvYV9jb25maWcpOwogfQog CitzdGF0aWMgdm9pZCBpOTE1X29hX2NvbmZpZ19kaXNwb3NlX2J1ZmZlcnMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcs ICpuZXh0OworCisJbXV0ZXhfbG9jaygmaTkxNS0+cGVyZi5tZXRyaWNzX2xvY2spOworCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShvYV9jb25maWcsIG5leHQsICZpOTE1LT5wZXJmLm1ldHJpY3Nf YnVmZmVycywgdm1hX2xpbmspIHsKKwkJbGlzdF9kZWwoJm9hX2NvbmZpZy0+dm1hX2xpbmspOwor CQlpOTE1X2dlbV9vYmplY3RfcHV0KG9hX2NvbmZpZy0+b2JqKTsKKwkJb2FfY29uZmlnLT5vYmog PSBOVUxMOworCX0KKwltdXRleF91bmxvY2soJmk5MTUtPnBlcmYubWV0cmljc19sb2NrKTsKK30K Kwogc3RhdGljIHUzMiAqd3JpdGVfY3NfbWlfbHJpKHUzMiAqY3MsIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqcmVnX2RhdGEsIHUzMiBuX3JlZ3MpCiB7CiAJdTMyIGk7CkBAIC0xNDQ5LDYgKzE0 NjIsMTQgQEAgc3RhdGljIHZvaWQgb2FfcHV0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIGZyZWVfbm9hX3dhaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7CisJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmk5MTUtPnBlcmYub2Eu bm9hX3dhaXQsCisJCQkJICAgSTkxNV9WTUFfUkVMRUFTRV9NQVApOworCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cit9CisKIHN0YXRpYyB2b2lkCiBmcmVlX29hX2J1ZmZl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKQEAgLTE0NjgsMTYgKzE0ODksMTcg QEAgc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtKQogCiAJQlVHX09OKHN0cmVhbSAhPSBkZXZfcHJpdi0+cGVyZi5vYS5leGNs dXNpdmVfc3RyZWFtKTsKIAorCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJpY19z ZXQoZGV2X3ByaXYpOworCiAJLyoKIAkgKiBVbnNldCBleGNsdXNpdmVfc3RyZWFtIGZpcnN0LCBp dCB3aWxsIGJlIGNoZWNrZWQgd2hpbGUgZGlzYWJsaW5nCiAJICogdGhlIG1ldHJpYyBzZXQgb24g Z2VuOCsuCiAJICovCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOwotCWRldl9wcml2LT5w ZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJpY19zZXQoZGV2X3ByaXYpOwotCWk5MTVfdm1hX3VucGlu X2FuZF9yZWxlYXNlKCZkZXZfcHJpdi0+cGVyZi5vYS5ub2Ffd2FpdCwgMCk7CiAJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKKwlmcmVlX25vYV93YWl0KGRldl9w cml2KTsKIAlmcmVlX29hX2J1ZmZlcihkZXZfcHJpdik7CiAKIAlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7CkBAIC0xNzEzLDYgKzE3 MzUsMTAgQEAgc3RhdGljIGludCBhbGxvY19ub2Ffd2FpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAkJcmV0dXJuIFBUUl9FUlIoYm8pOwogCX0KIAorCXJldCA9IGk5MTVfbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKCZpOTE1LT5kcm0pOworCWlmIChyZXQpCisJCWdvdG8gZXJyX3Vu cmVmOworCiAJLyoKIAkgKiBXZSBwaW4gaW4gR0dUVCBiZWNhdXNlIHdlIGp1bXAgaW50byB0aGlz IGJ1ZmZlciBub3cgYmVjYXVzZQogCSAqIG11bHRpcGxlIE9BIGNvbmZpZyBCT3Mgd2lsbCBoYXZl IGEganVtcCB0byB0aGlzIGFkZHJlc3MgYW5kIGl0CkBAIC0xNzIwLDEwICsxNzQ2LDEzIEBAIHN0 YXRpYyBpbnQgYWxsb2Nfbm9hX3dhaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJ ICovCiAJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGJvLCBOVUxMLCAwLCA0MDk2LCAw KTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKIAkJcmV0ID0gUFRSX0VSUih2bWEpOwogCQlnb3RvIGVycl91bnJlZjsKIAl9CiAK KwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCiAJYmF0Y2ggPSBjcyA9 IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGJvLCBJOTE1X01BUF9XQik7CiAJaWYgKElTX0VSUihi YXRjaCkpIHsKIAkJcmV0ID0gUFRSX0VSUihiYXRjaCk7CkBAIC0xODUzLDcgKzE4ODIsMTEgQEAg c3RhdGljIGludCBhbGxvY19ub2Ffd2FpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IAlyZXR1cm4gMDsKIAogZXJyX3VucGluOgotCV9faTkxNV92bWFfdW5waW4odm1hKTsKKwltdXRl eF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVs ZWFzZSgmaTkxNS0+cGVyZi5vYS5ub2Ffd2FpdCwgMCk7CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKKworCXJldHVybiByZXQ7CiAKIGVycl91bnJlZjoKIAlpOTE1X2dl bV9vYmplY3RfcHV0KGJvKTsKQEAgLTE4NjEsMjMgKzE4OTQsNjEgQEAgc3RhdGljIGludCBhbGxv Y19ub2Ffd2FpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgdm9pZCBjb25maWdfb2FfcmVncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKnJlZ3MsCi0JCQkgICB1 MzIgbl9yZWdzKQorc3RhdGljIGludCBlbWl0X29hX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKKwkJCSAgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIHsKLQl1 MzIgaTsKKwlzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZyA9IHN0cmVhbS0+b2FfY29u ZmlnOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gc3RyZWFtLT5pbml0aWFsX2NvbmZpZ19y cTsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl1MzIgKmNzOworCWludCBlcnI7CiAKLQlmb3Ig KGkgPSAwOyBpIDwgbl9yZWdzOyBpKyspIHsKLQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICpy ZWcgPSByZWdzICsgaTsKKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYV9jb25maWctPm9iaiwg Jmk5MTUtPmdndHQudm0sIE5VTEwpOworCWlmICh1bmxpa2VseShJU19FUlIodm1hKSkpCisJCXJl dHVybiBQVFJfRVJSKHZtYSk7CiAKLQkJSTkxNV9XUklURShyZWctPmFkZHIsIHJlZy0+dmFsdWUp OworCWVyciA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZpOTE1LT5kcm0pOworCWlm IChlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQ SU5fR0xPQkFMKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KHZtYSwgcnEsIDApOworCWlmIChlcnIpIHsKKwkJaTkxNV92bWFfdW5waW4odm1hKTsKKwkJcmV0 dXJuIGVycjsKIAl9CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIElOVEVMX0dFTihpOTE1 KSA+PSA4ID8gNCA6IDIpOworCWlmIChJU19FUlIoY3MpKSB7CisJCWk5MTVfdm1hX3VucGluKHZt YSk7CisJCXJldHVybiBQVFJfRVJSKGNzKTsKKwl9CisKKwlpZiAoSU5URUxfR0VOKGk5MTUpID4g OCkgeworCQkqY3MrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44OworCQkqY3MrKyA9IGxv d2VyXzMyX2JpdHModm1hLT5ub2RlLnN0YXJ0KTsKKwkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHZt YS0+bm9kZS5zdGFydCk7CisJCSpjcysrID0gTUlfTk9PUDsKKwl9IGVsc2UgeworCQkqY3MrKyA9 IE1JX0JBVENIX0JVRkZFUl9TVEFSVDsKKwkJKmNzKysgPSB2bWEtPm5vZGUuc3RhcnQ7CisJfQor CisJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CisKKwlpOTE1X3ZtYV91bnBpbih2bWEpOwor CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaHN3X2VuYWJsZV9tZXRyaWNfc2V0KHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKLQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9jb25m aWcgKm9hX2NvbmZpZyA9IHN0cmVhbS0+b2FfY29uZmlnOwogCiAJLyogUFJNOgogCSAqCkBAIC0x ODkzLDM1ICsxOTY0LDcgQEAgc3RhdGljIGludCBoc3dfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAlJOTE1X1dSSVRFKEdFTjZfVUNHQ1RMMSwgKEk5 MTVfUkVBRChHRU42X1VDR0NUTDEpIHwKIAkJCQkgIEdFTjZfQ1NVTklUX0NMT0NLX0dBVEVfRElT QUJMRSkpOwogCi0JY29uZmlnX29hX3JlZ3MoZGV2X3ByaXYsIG9hX2NvbmZpZy0+bXV4X3JlZ3Ms IG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuKTsKLQotCS8qIEl0IGFwcGFyZW50bHkgdGFrZXMgYSBm YWlybHkgbG9uZyB0aW1lIGZvciBhIG5ldyBNVVgKLQkgKiBjb25maWd1cmF0aW9uIHRvIGJlIGJl IGFwcGxpZWQgYWZ0ZXIgdGhlc2UgcmVnaXN0ZXIgd3JpdGVzLgotCSAqIFRoaXMgZGVsYXkgZHVy YXRpb24gd2FzIGRlcml2ZWQgZW1waXJpY2FsbHkgYmFzZWQgb24gdGhlCi0JICogcmVuZGVyX2Jh c2ljIGNvbmZpZyBidXQgaG9wZWZ1bGx5IGl0IGNvdmVycyB0aGUgbWF4aW11bQotCSAqIGNvbmZp Z3VyYXRpb24gbGF0ZW5jeS4KLQkgKgotCSAqIEFzIGEgZmFsbGJhY2ssIHRoZSBjaGVja3MgaW4g X2FwcGVuZF9vYV9yZXBvcnRzKCkgdG8gc2tpcAotCSAqIGludmFsaWQgT0EgcmVwb3J0cyBkbyBh bHNvIHNlZW0gdG8gd29yayB0byBkaXNjYXJkIHJlcG9ydHMKLQkgKiBnZW5lcmF0ZWQgYmVmb3Jl IHRoaXMgY29uZmlnIGhhcyBjb21wbGV0ZWQgLSBhbGJlaXQgbm90Ci0JICogc2lsZW50bHkuCi0J ICoKLQkgKiBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMgZXNzZW50aWFsbHkgYSBtYWdpYyBudW1iZXIs IHNpbmNlIHdlCi0JICogZG9uJ3QgY3VycmVudGx5IGtub3cgb2YgYSByZWxpYWJsZSBtZWNoYW5p c20gZm9yIHByZWRpY3RpbmcKLQkgKiBob3cgbG9uZyB0aGUgTVVYIGNvbmZpZyB3aWxsIHRha2Ug dG8gYXBwbHkgYW5kIGJlc2lkZXMKLQkgKiBzZWVpbmcgaW52YWxpZCByZXBvcnRzIHdlIGRvbid0 IGtub3cgb2YgYSByZWxpYWJsZSB3YXkgdG8KLQkgKiBleHBsaWNpdGx5IGNoZWNrIHRoYXQgdGhl IE1VWCBjb25maWcgaGFzIGxhbmRlZC4KLQkgKgotCSAqIEl0J3MgZXZlbiBwb3NzaWJsZSB3ZSd2 ZSBtaXNzIGNoYXJhY3Rlcml6ZWQgdGhlIHVuZGVybHlpbmcKLQkgKiBwcm9ibGVtIC0gaXQganVz dCBzZWVtcyBsaWtlIHRoZSBzaW1wbGVzdCBleHBsYW5hdGlvbiB3aHkKLQkgKiBhIGRlbGF5IGF0 IHRoaXMgbG9jYXRpb24gd291bGQgbWl0aWdhdGUgYW55IGludmFsaWQgcmVwb3J0cy4KLQkgKi8K LQl1c2xlZXBfcmFuZ2UoMTUwMDAsIDIwMDAwKTsKLQotCWNvbmZpZ19vYV9yZWdzKGRldl9wcml2 LCBvYV9jb25maWctPmJfY291bnRlcl9yZWdzLAotCQkgICAgICAgb2FfY29uZmlnLT5iX2NvdW50 ZXJfcmVnc19sZW4pOwotCi0JcmV0dXJuIDA7CisJcmV0dXJuIGVtaXRfb2FfY29uZmlnKGRldl9w cml2LCBzdHJlYW0pOwogfQogCiBzdGF0aWMgdm9pZCBoc3dfZGlzYWJsZV9tZXRyaWNfc2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTIwMjYsMTAgKzIwNjksMTggQEAg c3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogewogCXVuc2lnbmVkIGludCBtYXBfdHlwZSA9IGk5MTVfY29oZXJl bnRfbWFwX3R5cGUoZGV2X3ByaXYpOwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0J c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7CiAJaW50IHJldDsKIAotCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwkvKiBXaGVuIGNhbGxpbmcgd2l0aG91 dCBhIGNvbmZpZ3VyYXRpb24sIHdlJ3JlIHRlYXJpbmcgZG93biB0aGUgaTkxNQorCSAqIHBlcmYg c3RyZWFtLiBEb24ndCBiZSBpbnRlcnJ1cHRpYmxlIGluIHRoYXQgY2FzZS4KKwkgKi8KKwlpZiAo b2FfY29uZmlnKSB7CisJCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXZf cHJpdi0+ZHJtKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfSBlbHNlIHsKKwkJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCX0KIAogCS8qCiAJICogVGhl IE9BIHJlZ2lzdGVyIGNvbmZpZyBpcyBzZXR1cCB0aHJvdWdoIHRoZSBjb250ZXh0IGltYWdlLiBU aGlzIGltYWdlCkBAIC0yMDQ4LDcgKzIwOTksNyBAQCBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJl X2FsbF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAg ICBJOTE1X1dBSVRfTE9DS0VELAogCQkJCSAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogCWlm IChyZXQpCi0JCXJldHVybiByZXQ7CisJCWdvdG8gdW5sb2NrOwogCiAJLyogVXBkYXRlIGFsbCBj b250ZXh0cyBub3cgdGhhdCB3ZSd2ZSBzdGFsbGVkIHRoZSBzdWJtaXNzaW9uLiAqLwogCWxpc3Rf Zm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2X3ByaXYtPmNvbnRleHRzLmxpc3QsIGxpbmspIHsKQEAg LTIwNzEsNyArMjEyMiw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRleHRz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJCSAgICAgICBtYXBfdHlw ZSk7CiAJCQlpZiAoSVNfRVJSKHJlZ3MpKSB7CiAJCQkJaTkxNV9nZW1fY29udGV4dF91bmxvY2tf ZW5naW5lcyhjdHgpOwotCQkJCXJldHVybiBQVFJfRVJSKHJlZ3MpOworCQkJCXJldCA9IFBUUl9F UlIocmVncyk7CisJCQkJZ290byB1bmxvY2s7CiAJCQl9CiAKIAkJCWNlLT5zdGF0ZS0+b2JqLT5t bS5kaXJ0eSA9IHRydWU7CkBAIC0yMDg1LDE2ICsyMTM3LDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9j b25maWd1cmVfYWxsX2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAl9CiAKIAkvKgotCSAqIEFwcGx5IHRoZSBjb25maWd1cmF0aW9uIGJ5IGRvaW5nIG9uZSBjb250 ZXh0IHJlc3RvcmUgb2YgdGhlIGVkaXRlZAotCSAqIGNvbnRleHQgaW1hZ2UuCisJICogVGhlIGFi b3ZlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBhcHBsaWVkIHdoZW4gY2FsbGVkCisJICogY29uZmln X29hX3JlZ3MoKS4KIAkgKi8KLQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZGV2X3ByaXYtPmVu Z2luZVtSQ1MwXS0+a2VybmVsX2NvbnRleHQpOwotCWlmIChJU19FUlIocnEpKQotCQlyZXR1cm4g UFRSX0VSUihycSk7CiAKLQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKK3VubG9jazoKKwltdXRleF91 bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAotCXJldHVybiAwOworCXJldHVy biByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgZ2VuOF9lbmFibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtKQpAQCAtMjE0MSwzNSArMjE5MSw3IEBAIHN0YXRpYyBpbnQg Z2VuOF9lbmFibGVfbWV0cmljX3NldChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQljb25maWdfb2FfcmVncyhkZXZfcHJpdiwgb2Ff Y29uZmlnLT5tdXhfcmVncywgb2FfY29uZmlnLT5tdXhfcmVnc19sZW4pOwotCi0JLyogSXQgYXBw YXJlbnRseSB0YWtlcyBhIGZhaXJseSBsb25nIHRpbWUgZm9yIGEgbmV3IE1VWAotCSAqIGNvbmZp Z3VyYXRpb24gdG8gYmUgYmUgYXBwbGllZCBhZnRlciB0aGVzZSByZWdpc3RlciB3cml0ZXMuCi0J ICogVGhpcyBkZWxheSBkdXJhdGlvbiB3YXMgZGVyaXZlZCBlbXBpcmljYWxseSBiYXNlZCBvbiB0 aGUKLQkgKiByZW5kZXJfYmFzaWMgY29uZmlnIGJ1dCBob3BlZnVsbHkgaXQgY292ZXJzIHRoZSBt YXhpbXVtCi0JICogY29uZmlndXJhdGlvbiBsYXRlbmN5LgotCSAqCi0JICogQXMgYSBmYWxsYmFj aywgdGhlIGNoZWNrcyBpbiBfYXBwZW5kX29hX3JlcG9ydHMoKSB0byBza2lwCi0JICogaW52YWxp ZCBPQSByZXBvcnRzIGRvIGFsc28gc2VlbSB0byB3b3JrIHRvIGRpc2NhcmQgcmVwb3J0cwotCSAq IGdlbmVyYXRlZCBiZWZvcmUgdGhpcyBjb25maWcgaGFzIGNvbXBsZXRlZCAtIGFsYmVpdCBub3QK LQkgKiBzaWxlbnRseS4KLQkgKgotCSAqIFVuZm9ydHVuYXRlbHkgdGhpcyBpcyBlc3NlbnRpYWxs eSBhIG1hZ2ljIG51bWJlciwgc2luY2Ugd2UKLQkgKiBkb24ndCBjdXJyZW50bHkga25vdyBvZiBh IHJlbGlhYmxlIG1lY2hhbmlzbSBmb3IgcHJlZGljdGluZwotCSAqIGhvdyBsb25nIHRoZSBNVVgg Y29uZmlnIHdpbGwgdGFrZSB0byBhcHBseSBhbmQgYmVzaWRlcwotCSAqIHNlZWluZyBpbnZhbGlk IHJlcG9ydHMgd2UgZG9uJ3Qga25vdyBvZiBhIHJlbGlhYmxlIHdheSB0bwotCSAqIGV4cGxpY2l0 bHkgY2hlY2sgdGhhdCB0aGUgTVVYIGNvbmZpZyBoYXMgbGFuZGVkLgotCSAqCi0JICogSXQncyBl dmVuIHBvc3NpYmxlIHdlJ3ZlIG1pc3MgY2hhcmFjdGVyaXplZCB0aGUgdW5kZXJseWluZwotCSAq IHByb2JsZW0gLSBpdCBqdXN0IHNlZW1zIGxpa2UgdGhlIHNpbXBsZXN0IGV4cGxhbmF0aW9uIHdo eQotCSAqIGEgZGVsYXkgYXQgdGhpcyBsb2NhdGlvbiB3b3VsZCBtaXRpZ2F0ZSBhbnkgaW52YWxp ZCByZXBvcnRzLgotCSAqLwotCXVzbGVlcF9yYW5nZSgxNTAwMCwgMjAwMDApOwotCi0JY29uZmln X29hX3JlZ3MoZGV2X3ByaXYsIG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3MsCi0JCSAgICAgICBv YV9jb25maWctPmJfY291bnRlcl9yZWdzX2xlbik7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gZW1p dF9vYV9jb25maWcoZGV2X3ByaXYsIHN0cmVhbSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdlbjhfZGlz YWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTIz NDAsNyArMjM2Miw5IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJICAgICAgIHN0cnVjdCBwZXJmX29wZW5fcHJvcGVy dGllcyAqcHJvcHMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3Ry ZWFtLT5kZXZfcHJpdjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCWludCBm b3JtYXRfc2l6ZTsKKwlsb25nIHRpbWVvdXQ7CiAJaW50IHJldDsKIAogCS8qIElmIHRoZSBzeXNm cyBtZXRyaWNzLyBkaXJlY3Rvcnkgd2Fzbid0IHJlZ2lzdGVyZWQgZm9yIHNvbWUKQEAgLTI0MjQs MTMgKzI0NDgsNiBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJfQogCX0KIAotCXJldCA9IGk5MTVfcGVyZl9nZXRfb2Ff Y29uZmlnKGRldl9wcml2LCBwcm9wcy0+bWV0cmljc19zZXQsCi0JCQkJICAgICAgJnN0cmVhbS0+ b2FfY29uZmlnLCBOVUxMKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9ERUJVRygiSW52YWxpZCBPQSBj b25maWcgaWQ9JWlcbiIsIHByb3BzLT5tZXRyaWNzX3NldCk7Ci0JCWdvdG8gZXJyX2NvbmZpZzsK LQl9Ci0KIAlyZXQgPSBhbGxvY19ub2Ffd2FpdChkZXZfcHJpdik7CiAJaWYgKHJldCkgewogCQlE Uk1fREVCVUcoIlVuYWJsZSB0byBhbGxvY2F0ZSBOT0Egd2FpdCBiYXRjaCBidWZmZXJcbiIpOwpA QCAtMjQ1Niw0NyArMjQ3Myw5MCBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlpZiAocmV0KQogCQlnb3RvIGVycl9vYV9i dWZfYWxsb2M7CiAKKwlyZXQgPSBpOTE1X3BlcmZfZ2V0X29hX2NvbmZpZyhkZXZfcHJpdiwgcHJv cHMtPm1ldHJpY3Nfc2V0LAorCQkJCSAgICAgICZzdHJlYW0tPm9hX2NvbmZpZywgJm9iaik7CisJ aWYgKHJldCkgeworCQlEUk1fREVCVUcoIkludmFsaWQgT0EgY29uZmlnIGlkPSVpXG4iLCBwcm9w cy0+bWV0cmljc19zZXQpOworCQlnb3RvIGVycl9jb25maWc7CisJfQorCisJLyoKKwkgKiBXZSBq dXN0IG5lZWQgdGhlIGJ1ZmZlciB0byBiZSBjcmVhdGVkLCBidXQgbm90IG91ciBvd24gcmVmZXJl bmNlIG9uCisJICogaXQgYXMgdGhlIG9hX2NvbmZpZyBhbHJlYWR5IGhhcyBvbmUuCisJICovCisJ aTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCisJc3RyZWFtLT5pbml0aWFsX2NvbmZpZ19ycSA9 CisJCWk5MTVfcmVxdWVzdF9jcmVhdGUoZGV2X3ByaXYtPmVuZ2luZVtSQ1MwXS0+a2VybmVsX2Nv bnRleHQpOworCWlmIChJU19FUlIoc3RyZWFtLT5pbml0aWFsX2NvbmZpZ19ycSkpIHsKKwkJcmV0 ID0gUFRSX0VSUihzdHJlYW0tPmluaXRpYWxfY29uZmlnX3JxKTsKKwkJZ290byBlcnJfaW5pdGlh bF9jb25maWc7CisJfQorCisJc3RyZWFtLT5vcHMgPSAmaTkxNV9vYV9zdHJlYW1fb3BzOworCiAJ cmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOwogCWlm IChyZXQpCiAJCWdvdG8gZXJyX2xvY2s7CiAKLQlzdHJlYW0tPm9wcyA9ICZpOTE1X29hX3N0cmVh bV9vcHM7CisJcmV0ID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJmRldl9wcml2LT5lbmdpbmVb UkNTMF0tPmxhc3Rfb2FfY29uZmlnLAorCQkJCSAgICAgIHN0cmVhbS0+aW5pdGlhbF9jb25maWdf cnEpOworCWlmIChyZXQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7CisJCWdvdG8gZXJyX2xvY2s7CisJfQorCiAJZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVz aXZlX3N0cmVhbSA9IHN0cmVhbTsKIAorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCiAJcmV0ID0gZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNf c2V0KHN0cmVhbSk7CiAJaWYgKHJldCkgewogCQlEUk1fREVCVUcoIlVuYWJsZSB0byBlbmFibGUg bWV0cmljIHNldFxuIik7CiAJCWdvdG8gZXJyX2VuYWJsZTsKIAl9CiAKLQlEUk1fREVCVUcoIm9w ZW5pbmcgc3RyZWFtIG9hIGNvbmZpZyB1dWlkPSVzXG4iLCBzdHJlYW0tPm9hX2NvbmZpZy0+dXVp ZCk7CisJaTkxNV9yZXF1ZXN0X2dldChzdHJlYW0tPmluaXRpYWxfY29uZmlnX3JxKTsKIAotCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWk5MTVfcmVxdWVzdF9h ZGQoc3RyZWFtLT5pbml0aWFsX2NvbmZpZ19ycSk7CisKKwl0aW1lb3V0ID0gaTkxNV9yZXF1ZXN0 X3dhaXQoc3RyZWFtLT5pbml0aWFsX2NvbmZpZ19ycSwKKwkJCQkgICAgSTkxNV9XQUlUX0lOVEVS UlVQVElCTEUsCisJCQkJICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKKwlpOTE1X3JlcXVlc3Rf cHV0KHN0cmVhbS0+aW5pdGlhbF9jb25maWdfcnEpOworCXN0cmVhbS0+aW5pdGlhbF9jb25maWdf cnEgPSBOVUxMOworCisJcmV0ID0gdGltZW91dCA8IDAgPyB0aW1lb3V0IDogMDsKKwlpZiAocmV0 KQorCQlnb3RvIGVycl9lbmFibGU7CisKKwlEUk1fREVCVUcoIm9wZW5pbmcgc3RyZWFtIG9hIGNv bmZpZyB1dWlkPSVzXG4iLCBzdHJlYW0tPm9hX2NvbmZpZy0+dXVpZCk7CiAKIAlyZXR1cm4gMDsK IAogZXJyX2VuYWJsZToKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 CiAJZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSA9IE5VTEw7Ci0JZGV2X3ByaXYt PnBlcmYub2Eub3BzLmRpc2FibGVfbWV0cmljX3NldChkZXZfcHJpdik7CiAJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmRp c2FibGVfbWV0cmljX3NldChkZXZfcHJpdik7CiAKIGVycl9sb2NrOgotCWZyZWVfb2FfYnVmZmVy KGRldl9wcml2KTsKKwlpOTE1X3JlcXVlc3RfYWRkKHN0cmVhbS0+aW5pdGlhbF9jb25maWdfcnEp OwogCi1lcnJfb2FfYnVmX2FsbG9jOgorZXJyX2luaXRpYWxfY29uZmlnOgogCWk5MTVfb2FfY29u ZmlnX3B1dChzdHJlYW0tPm9hX2NvbmZpZyk7CisJaTkxNV9vYV9jb25maWdfZGlzcG9zZV9idWZm ZXJzKGRldl9wcml2KTsKKworZXJyX2NvbmZpZzoKKwlmcmVlX29hX2J1ZmZlcihkZXZfcHJpdik7 CiAKK2Vycl9vYV9idWZfYWxsb2M6CiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9w cml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZf cHJpdi0+cnVudGltZV9wbSwgc3RyZWFtLT53YWtlcmVmKTsKIAotCW11dGV4X2xvY2soJmRldl9w cml2LT5kcm0uc3RydWN0X211dGV4KTsKLQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZGV2 X3ByaXYtPnBlcmYub2Eubm9hX3dhaXQsIDApOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRy bS5zdHJ1Y3RfbXV0ZXgpOworCWZyZWVfbm9hX3dhaXQoZGV2X3ByaXYpOwogCiBlcnJfbm9hX3dh aXRfYWxsb2M6Ci0JaTkxNV9vYV9jb25maWdfcHV0KHN0cmVhbS0+b2FfY29uZmlnKTsKLQotZXJy X2NvbmZpZzoKIAlpZiAoc3RyZWFtLT5jdHgpCiAJCW9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cmVh bSk7CiAKQEAgLTI4NTgsMjAgKzI5MTgsMTMgQEAgc3RhdGljIGludCBpOTE1X3BlcmZfcmVsZWFz ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7Ci0Jc3RydWN0IGk5MTVf b2FfY29uZmlnICpvYV9jb25maWcsICpuZXh0OwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBl cmYubG9jayk7CiAKIAlpOTE1X3BlcmZfZGVzdHJveV9sb2NrZWQoc3RyZWFtKTsKIAogCS8qIERp c3Bvc2Ugb2YgYWxsIG9hIGNvbmZpZyBiYXRjaCBidWZmZXJzLiAqLwotCW11dGV4X2xvY2soJmRl dl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9h X2NvbmZpZywgbmV4dCwgJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfYnVmZmVycywgdm1hX2xpbmsp IHsKLQkJbGlzdF9kZWwoJm9hX2NvbmZpZy0+dm1hX2xpbmspOwotCQlpOTE1X2dlbV9vYmplY3Rf cHV0KG9hX2NvbmZpZy0+b2JqKTsKLQkJb2FfY29uZmlnLT5vYmogPSBOVUxMOwotCX0KLQltdXRl eF91bmxvY2soJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayk7CisJaTkxNV9vYV9jb25maWdf ZGlzcG9zZV9idWZmZXJzKGRldl9wcml2KTsKIAogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBl cmYubG9jayk7CiAKLS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4