From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH 1/2] drm/i915: Implement I915_PERF_ADD/REMOVE_CONFIG interface Date: Fri, 7 Jul 2017 18:08:37 +0100 Message-ID: <20170707170838.9492-2-lionel.g.landwerlin@intel.com> References: <20170707170838.9492-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1D6496E188 for ; Fri, 7 Jul 2017 17:08:44 +0000 (UTC) In-Reply-To: <20170707170838.9492-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 Cc: Andrzej Datczuk , Matthew Auld List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgoKVGhlIG1vdGl2YXRp b24gYmVoaW5kIHRoaXMgbmV3IGludGVyZmFjZSBpcyBleHBvc2UgYXQgcnVudGltZSB0aGUKY3Jl YXRpb24gb2YgbmV3IE9BIGNvbmZpZ3Mgd2hpY2ggY2FuIGJlIHVzZWQgYXMgcGFydCBvZiB0aGUg aTkxNSBwZXJmCm9wZW4gaW50ZXJmYWNlLiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBrZXJuZWwgdG8g bGVhcm4gbmV3IGNvbmZpZ3Mgd2hpY2gKbWF5IGJlIGV4cGVyaW1lbnRhbCwgb3Igb3RoZXJ3aXNl IG5vdCBwYXJ0IG9mIHRoZSBjb3JlIHNldCBjdXJyZW50bHkKYXZhaWxhYmxlIHRocm91Z2ggdGhl IGk5MTUgcGVyZiBpbnRlcmZhY2UuCgpUaGlzIHdpbGwgcmVsaWV2ZSB0aGUga2VybmVsIGZyb20g aG9sZGluZyBhbGwgdGhlIHBvc3NpYmxlIGNvbmZpZ3MsIHNvCndlIGNhbiBsZWF2ZSBvbmx5IHRo ZSB0ZXN0IGNvbmZpZ3MgaGVyZS4KClNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhl dy5hdWxkQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25l bC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIERhdGN6dWsg PGFuZHJ6ZWouZGF0Y3p1a0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAgMzAg KysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyB8IDM5MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmggIHwgICAyICsKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgIHwgIDIxICsrKwog NSBmaWxlcyBjaGFuZ2VkLCA0NDEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwppbmRleCBkMzEwZDgyNDVkY2EuLmEzZDMzOTY3MGVjMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0yNzMwLDYgKzI3MzAsOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYo STkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTSwgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0 bCwgRFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fQ09OVEVY VF9TRVRQQVJBTSwgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bCwgRFJNX1JFTkRFUl9B TExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9QRVJGX09QRU4sIGk5MTVfcGVyZl9vcGVu X2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RSVihJOTE1X1BFUkZf QUREX0NPTkZJRywgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwsIERSTV9VTkxPQ0tFRHxEUk1f UkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RSVihJOTE1X1BFUkZfUkVNT1ZFX0NPTkZJ RywgaTkxNV9wZXJmX3JlbW92ZV9jb25maWdfaW9jdGwsIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVS X0FMTE9XKSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCA4MWNkMjFlY2ZhN2QuLmNlNzMzYzJkYjk2MyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMDA5LDYgKzIwMDksMTEgQEAgc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gewogCSAqIHR5cGUgb2YgY29uZmlndXJlZCBzdHJlYW0uCiAJICovCiAJY29uc3Qg c3RydWN0IGk5MTVfcGVyZl9zdHJlYW1fb3BzICpvcHM7CisKKwkvKioKKwkgKiBAbWV0cmljc19z ZXQ6IFRoZSBJRCBvZiB0aGUgY29uZmlnIHVzZWQgYnkgdGhlIHN0cmVhbS4KKwkgKi8KKwlpbnQg bWV0cmljc19zZXQ7CiB9OwogCiAvKioKQEAgLTIwMTYsNiArMjAyMSwyNSBAQCBzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSB7CiAgKi8KIHN0cnVjdCBpOTE1X29hX29wcyB7CiAJLyoqCisJICogQGlz X3ZhbGlkX2JfY291bnRlcl9yZWc6IFZhbGlkYXRlcyByZWdpc3RlcidzIGFkZHJlc3MgZm9yCisJ ICogcHJvZ3JhbW1pbmcgYm9vbGVhbiBjb3VudGVycyBmb3IgYSBwYXJ0aWN1bGFyIHBsYXRmb3Jt LgorCSAqLworCWJvb2wgKCppc192YWxpZF9iX2NvdW50ZXJfcmVnKShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICAgIHUzMiBhZGRyKTsKKworCS8qKgorCSAqIEBp c192YWxpZF9tdXhfcmVnOiBWYWxpZGF0ZXMgcmVnaXN0ZXIncyBhZGRyZXNzIGZvciBwcm9ncmFt bWluZyBtdXgKKwkgKiBmb3IgYSBwYXJ0aWN1bGFyIHBsYXRmb3JtLgorCSAqLworCWJvb2wgKCpp c192YWxpZF9tdXhfcmVnKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBh ZGRyKTsKKworCS8qKgorCSAqIEBpc192YWxpZF9mbGV4X3JlZzogVmFsaWRhdGVzIHJlZ2lzdGVy J3MgYWRkcmVzcyBmb3IgcHJvZ3JhbW1pbmcKKwkgKiBmbGV4IEVVIGZpbHRlcmluZyBmb3IgYSBw YXJ0aWN1bGFyIHBsYXRmb3JtLgorCSAqLworCWJvb2wgKCppc192YWxpZF9mbGV4X3JlZykoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcik7CisKKwkvKioKIAkgKiBA aW5pdF9vYV9idWZmZXI6IFJlc2V0cyB0aGUgaGVhZCBhbmQgdGFpbCBwb2ludGVycyBvZiB0aGUK IAkgKiBjaXJjdWxhciBidWZmZXIgZm9yIHBlcmlvZGljIE9BIHJlcG9ydHMuCiAJICoKQEAgLTI0 MTMsNiArMjQzNyw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJc3RydWN0IG11dGV4 IGxvY2s7CiAJCXN0cnVjdCBsaXN0X2hlYWQgc3RyZWFtczsKIAorCQlzdHJ1Y3QgaWRyIG1ldHJp Y3NfaWRyOworCiAJCXN0cnVjdCB7CiAJCQlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqZXhjbHVz aXZlX3N0cmVhbTsKIApAQCAtMzU4OSw2ICszNjE1LDEwIEBAIGk5MTVfZ2VtX2NvbnRleHRfbG9v a3VwX3RpbWVsaW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAKIGludCBpOTE1X3Bl cmZfb3Blbl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZSk7CitpbnQgaTkxNV9wZXJmX2FkZF9jb25maWdfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpOworaW50IGk5MTVfcGVyZl9yZW1vdmVfY29uZmlnX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwog dm9pZCBpOTE1X29hX2luaXRfcmVnX3N0YXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKIAkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJICAgIHVpbnQzMl90 ICpyZWdfc3RhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwppbmRleCBkOWY3N2E0ZDg1ZGIu LjkyY2I2YTc1NjhlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAgLTM1Nyw2ICszNTcs MjMgQEAgc3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzIHsKIAlpbnQgb2FfcGVyaW9kX2V4cG9u ZW50OwogfTsKIAorc3RydWN0IGk5MTVfb2FfZHluYW1pY19jb25maWcKK3sKKwljaGFyIGd1aWRb NDBdOworCWludCBpZDsKKworCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqbXV4X3JlZ3M7CisJ aW50IG11eF9yZWdzX2xlbjsKKwljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKmJfY291bnRlcl9y ZWdzOworCWludCBiX2NvdW50ZXJfcmVnc19sZW47CisJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn ICpmbGV4X3JlZ3M7CisJaW50IGZsZXhfcmVnc19sZW47CisKKwlzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIHN5c2ZzX21ldHJpYzsKKwlzdHJ1Y3QgYXR0cmlidXRlICphdHRyc1syXTsKKwlzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSBzeXNmc19tZXRyaWNfaWQ7Cit9OworCiBzdGF0aWMgdTMyIGdlbjhf b2FfaHdfdGFpbF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAly ZXR1cm4gSTkxNV9SRUFEKEdFTjhfT0FUQUlMUFRSKSAmIEdFTjhfT0FUQUlMUFRSX01BU0s7CkBA IC0xNDUxLDExICsxNDY4LDM5IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ19vYV9yZWdzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9CiB9CiAKK2ludCBzZWxlY3RfZHluYW1pY19t ZXRyaWNfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3Qg aTkxNV9vYV9keW5hbWljX2NvbmZpZyAqb2FfY29uZmlnOworCisJb2FfY29uZmlnID0gaWRyX2Zp bmQoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLAorCQkJICAgICBkZXZfcHJpdi0+cGVyZi5v YS5tZXRyaWNzX3NldCk7CisJaWYgKCFvYV9jb25maWcpIHsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDE7CisJZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NbMF0gPSBvYV9jb25maWctPm11eF9yZWdzOworCWRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnNbMF0gPSBvYV9jb25maWctPm11eF9yZWdzX2xlbjsKKworCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gb2FfY29uZmlnLT5iX2NvdW50ZXJfcmVnczsK KwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSBvYV9jb25maWctPmJfY291 bnRlcl9yZWdzX2xlbjsKKworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9IG9hX2NvbmZp Zy0+ZmxleF9yZWdzOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPSBvYV9jb25m aWctPmZsZXhfcmVnc19sZW47CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBoc3dfZW5h YmxlX21ldHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlu dCByZXQgPSBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2hzdyhkZXZfcHJpdik7CisJaW50IHJl dDsKIAlpbnQgaTsKIAorCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCA+IGRldl9w cml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzKQorCQlyZXQgPSBzZWxlY3RfZHluYW1pY19tZXRy aWNfc2V0KGRldl9wcml2KTsKKwllbHNlCisJCXJldCA9IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19z ZXRfaHN3KGRldl9wcml2KTsKKwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTE3NzYs OCArMTgyMSwxMiBAQCBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIHN0YXRpYyBpbnQgZ2VuOF9lbmFibGVf bWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaW50IHJl dCA9IGRldl9wcml2LT5wZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldChkZXZfcHJpdik7Ci0J aW50IGk7CisJaW50IHJldCwgaTsKKworCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3Nl dCA+IGRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzKQorCQlyZXQgPSBzZWxlY3RfZHlu YW1pY19tZXRyaWNfc2V0KGRldl9wcml2KTsKKwllbHNlCisJCXJldCA9IGRldl9wcml2LT5wZXJm Lm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldChkZXZfcHJpdik7CiAKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwpAQCAtMjA1NSw3ICsyMTA0LDcgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9p bml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLmZvcm1hdCA9CiAJCWRldl9wcml2LT5wZXJmLm9hLm9hX2Zvcm1hdHNbcHJvcHMt Pm9hX2Zvcm1hdF0uZm9ybWF0OwogCi0JZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQgPSBw cm9wcy0+bWV0cmljc19zZXQ7CisJZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQgPSBzdHJl YW0tPm1ldHJpY3Nfc2V0ID0gcHJvcHMtPm1ldHJpY3Nfc2V0OwogCiAJZGV2X3ByaXYtPnBlcmYu b2EucGVyaW9kaWMgPSBwcm9wcy0+b2FfcGVyaW9kaWM7CiAJaWYgKGRldl9wcml2LT5wZXJmLm9h LnBlcmlvZGljKQpAQCAtMjcxMyw3ICsyNzYyLDkgQEAgc3RhdGljIGludCByZWFkX3Byb3BlcnRp ZXNfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJYnJlYWs7 CiAJCWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX09BX01FVFJJQ1NfU0VUOgogCQkJaWYgKHZhbHVl ID09IDAgfHwKLQkJCSAgICB2YWx1ZSA+IGRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRz KSB7CisJCQkgICAgKHZhbHVlID4gZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgJiYK KwkJCSAgICAgaWRyX2ZpbmQoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLAorCQkJCSAgICAg IHZhbHVlKSA9PSBOVUxMKSkgewogCQkJCURSTV9ERUJVRygiVW5rbm93biBPQSBtZXRyaWMgc2V0 IElEXG4iKTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KQEAgLTI5NTcsNiArMzAwOCwzMjEg QEAgdm9pZCBpOTE1X3BlcmZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqID0gTlVMTDsKIH0KIAorc3RhdGlj IGJvb2wgZ2VuOF9pc192YWxpZF9mbGV4X2FkZHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1MzIgYWRkcikKK3sKKwlzdGF0aWMgY29uc3QgaTkxNV9yZWdfdCBmbGV4X2V1X3Jl Z3NbXSA9IHsKKwkJRVVfUEVSRl9DTlRMMCwKKwkJRVVfUEVSRl9DTlRMMSwKKwkJRVVfUEVSRl9D TlRMMiwKKwkJRVVfUEVSRl9DTlRMMywKKwkJRVVfUEVSRl9DTlRMNCwKKwkJRVVfUEVSRl9DTlRM NSwKKwkJRVVfUEVSRl9DTlRMNiwKKwl9OworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUoZmxleF9ldV9yZWdzKTsgaSsrKSB7CisJCWlmIChmbGV4X2V1X3JlZ3NbaV0ucmVn ID09IGFkZHIpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0 aWMgYm9vbCBnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpCit7CisJcmV0dXJuIChhZGRyID49IDB4MjM4MCAmJiBh ZGRyIDw9IDB4MjdhYyk7Cit9CisKK3N0YXRpYyBib29sIGdlbjdfaXNfdmFsaWRfbXV4X2FkZHIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkcikKK3sKKwlyZXR1cm4g YWRkciA9PSBOT0FfV1JJVEUucmVnIHx8CisJCShhZGRyID49IDB4ZDBjICYmIGFkZHIgPD0gMHhk M2MpIHx8CisJCShhZGRyID49IDB4MjUxMDAgJiYgYWRkciA8PSAweDJGQjlDKTsKK30KKworc3Rh dGljIGJvb2wgaHN3X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIGFkZHIpCit7CisJcmV0dXJuIChhZGRyID49IDB4MjUxMDAgJiYgYWRkciA8 PSAweDJGRjkwKSB8fAorCQlnZW43X2lzX3ZhbGlkX211eF9hZGRyKGRldl9wcml2LCBhZGRyKTsK K30KKworc3RhdGljIGJvb2wgY2h2X2lzX3ZhbGlkX211eF9hZGRyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdTMyIGFkZHIpCit7CisJcmV0dXJuIChhZGRyID49IDB4MTgyMzAw ICYmIGFkZHIgPD0gMHgxODIzQTQpIHx8CisJCWdlbjdfaXNfdmFsaWRfbXV4X2FkZHIoZGV2X3By aXYsIGFkZHIpOworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfb2FfcmVnICphbGxvY19vYV9yZWdz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJIGJvb2wgKCppc192YWxp ZCkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkciksCisJCQkJCSB1 MzIgX191c2VyICpyZWdzLAorCQkJCQkgdTMyIG5fcmVncykKK3sKKwlpbnQgZXJyOworCWludCBp OworCXN0cnVjdCBpOTE1X29hX3JlZyAqb2FfcmVnczsKKworCWlmICghbl9yZWdzKQorCQlyZXR1 cm4gTlVMTDsKKworCWlmICghaXNfdmFsaWQpCisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwor CisJb2FfcmVncyA9IGttYWxsb2Moc2l6ZW9mKCpvYV9yZWdzKSAqIG5fcmVncywgR0ZQX0tFUk5F TCk7CisJaWYgKCFvYV9yZWdzKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWZvciAo aSA9IDA7IGkgPCBuX3JlZ3M7IGkrKykgeworCQlpbnQgcmV0OworCQl1MzIgYWRkciwgdmFsdWU7 CisKKwkJcmV0ID0gZ2V0X3VzZXIoYWRkciwgcmVncyk7CisJCWlmIChyZXQpIHsKKwkJCWVyciA9 IHJldDsKKwkJCWdvdG8gYWRkcl9lcnI7CisJCX0KKworCQlpZiAoIWlzX3ZhbGlkKGRldl9wcml2 LCBhZGRyKSkgeworCQkJRFJNX0VSUk9SKCJJbnZhbGlkIG9hX3JlZyBhZGRyZXNzOiAlWFxuIiwg YWRkcik7CisJCQllcnIgPSAtRUlOVkFMOworCQkJZ290byBhZGRyX2VycjsKKwkJfQorCisJCXJl dCA9IGdldF91c2VyKHZhbHVlLCByZWdzICsgMSk7CisJCWlmIChyZXQpIHsKKwkJCWVyciA9IHJl dDsKKwkJCWdvdG8gdmFsdWVfZXJyOworCQl9CisKKwkJb2FfcmVnc1tpXS5hZGRyID0gX01NSU8o YWRkcik7CisJCW9hX3JlZ3NbaV0udmFsdWUgPSB2YWx1ZTsKKworCQlyZWdzICs9IDI7CisJfQor CisJcmV0dXJuIG9hX3JlZ3M7CisKK2FkZHJfZXJyOgordmFsdWVfZXJyOgorCWtmcmVlKG9hX3Jl Z3MpOworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHNob3dfZHlu YW1pY19pZChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsCisJCQkgICAgICAgY2hhciAqYnVmKQoreworCXN0cnVjdCBpOTE1X29hX2R5 bmFtaWNfY29uZmlnICpvYV9jb25maWcgPQorCQljb250YWluZXJfb2YoYXR0ciwgdHlwZW9mKCpv YV9jb25maWcpLCBzeXNmc19tZXRyaWNfaWQpOworCisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIG9hX2NvbmZpZy0+aWQpOworfQorCitzdGF0aWMgaW50IGNyZWF0ZV9keW5hbWljX29hX3N5 c2ZzX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJIHN0cnVj dCBpOTE1X29hX2R5bmFtaWNfY29uZmlnICpvYV9jb25maWcpCit7CisJb2FfY29uZmlnLT5zeXNm c19tZXRyaWNfaWQuYXR0ci5uYW1lID0gImlkIjsKKwlvYV9jb25maWctPnN5c2ZzX21ldHJpY19p ZC5hdHRyLm1vZGUgPSBTX0lSVUdPOworCW9hX2NvbmZpZy0+c3lzZnNfbWV0cmljX2lkLnNob3cg PSBzaG93X2R5bmFtaWNfaWQ7CisJb2FfY29uZmlnLT5zeXNmc19tZXRyaWNfaWQuc3RvcmUgPSBO VUxMOworCisJb2FfY29uZmlnLT5hdHRyc1swXSA9ICZvYV9jb25maWctPnN5c2ZzX21ldHJpY19p ZC5hdHRyOworCW9hX2NvbmZpZy0+YXR0cnNbMV0gPSBOVUxMOworCisJb2FfY29uZmlnLT5zeXNm c19tZXRyaWMubmFtZSA9IG9hX2NvbmZpZy0+Z3VpZDsKKwlvYV9jb25maWctPnN5c2ZzX21ldHJp Yy5hdHRycyA9IG9hX2NvbmZpZy0+YXR0cnM7CisKKwlyZXR1cm4gc3lzZnNfY3JlYXRlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwKKwkJCQkgICZvYV9jb25maWctPnN5c2ZzX21l dHJpYyk7Cit9CisKK2ludCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkK K3sKKwlpbnQgZXJyOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X3BlcmZfb2FfY29uZmlnICphcmdzID0gZGF0 YTsKKwlzdHJ1Y3QgaTkxNV9vYV9keW5hbWljX2NvbmZpZyAqb2FfY29uZmlnLCAqdG1wOworCWlu dCBpZDsKKwl1bnNpZ25lZCBpbnQgeDEsIHgyLCB4MywgeDQsIHg1OworCisJaWYgKCFkZXZfcHJp di0+cGVyZi5pbml0aWFsaXplZCkgeworCQlEUk1fREVCVUcoImk5MTUgcGVyZiBpbnRlcmZhY2Ug bm90IGF2YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW1cbiIpOworCQlyZXR1cm4gLUVOT1RTVVBQOwor CX0KKworCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkgeworCQlEUk1fRVJST1IoIkluc3Vm ZmljaWVudCBwcml2aWxlZ2VzIHRvIGFkZCBpOTE1IE9BIGNvbmZpZ1xuIik7CisJCXJldHVybiAt RUFDQ0VTOworCX0KKworCWlmICgoIWFyZ3MtPm11eF9yZWdzIHx8ICFhcmdzLT5uX211eF9yZWdz KSAmJgorCSAgICAoIWFyZ3MtPmJvb2xlYW5fcmVncyB8fCAhYXJncy0+bl9ib29sZWFuX3JlZ3Mp ICYmCisJICAgICghYXJncy0+ZmxleF9yZWdzIHx8ICFhcmdzLT5uX2ZsZXhfcmVncykpIHsKKwkJ RFJNX0VSUk9SKCJObyBPQSByZWdpc3RlcnMgZ2l2ZW5cbiIpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwlvYV9jb25maWcgPSBremFsbG9jKHNpemVvZigqb2FfY29uZmlnKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFvYV9jb25maWcpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUg bWVtb3J5IGZvciB0aGUgT0EgY29uZmlnXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJ ZXJyID0gc3RybmNweV9mcm9tX3VzZXIob2FfY29uZmlnLT5ndWlkLCB1NjRfdG9fdXNlcl9wdHIo YXJncy0+dXVpZCksCisJCQkJc2l6ZW9mKG9hX2NvbmZpZy0+Z3VpZCkpOworCWlmIChlcnIgPCAw KSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNvcHkgdXVpZCBmcm9tIE9BIGNvbmZpZ1xuIik7 CisJCWdvdG8gdXVpZF9lcnI7CisJfQorCisJaWYgKHNzY2FuZihvYV9jb25maWctPmd1aWQsICIl MDh4LSUwNHgtJTA0eC0lMDR4LSUwMTJ4IiwgJngxLCAmeDIsICZ4MywKKwkJICAgJng0LCAmeDUp ICE9IDUpIHsKKwkJRFJNX0VSUk9SKCJJbnZhbGlkIHV1aWQgZm9ybWF0IGZvciBPQSBjb25maWdc biIpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIHV1aWRfZXJyOworCX0KKworCW9hX2NvbmZp Zy0+bXV4X3JlZ3NfbGVuID0gYXJncy0+bl9tdXhfcmVnczsKKwlvYV9jb25maWctPm11eF9yZWdz ID0KKwkJYWxsb2Nfb2FfcmVncyhkZXZfcHJpdiwKKwkJCSAgICAgIGRldl9wcml2LT5wZXJmLm9h Lm9wcy5pc192YWxpZF9tdXhfcmVnLAorCQkJICAgICAgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPm11 eF9yZWdzKSwKKwkJCSAgICAgIGFyZ3MtPm5fbXV4X3JlZ3MpOworCisJaWYgKElTX0VSUihvYV9j b25maWctPm11eF9yZWdzKSkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgT0EgY29u ZmlnIGZvciBtdXhfcmVnc1xuIik7CisJCWVyciA9IFBUUl9FUlIob2FfY29uZmlnLT5tdXhfcmVn cyk7CisJCWdvdG8gbXV4X2VycjsKKwl9CisKKwlvYV9jb25maWctPmJfY291bnRlcl9yZWdzX2xl biA9IGFyZ3MtPm5fYm9vbGVhbl9yZWdzOworCW9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3MgPQor CQlhbGxvY19vYV9yZWdzKGRldl9wcml2LAorCQkJICAgICAgZGV2X3ByaXYtPnBlcmYub2Eub3Bz LmlzX3ZhbGlkX2JfY291bnRlcl9yZWcsCisJCQkgICAgICB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ Ym9vbGVhbl9yZWdzKSwKKwkJCSAgICAgIGFyZ3MtPm5fYm9vbGVhbl9yZWdzKTsKKworCWlmIChJ U19FUlIob2FfY29uZmlnLT5iX2NvdW50ZXJfcmVncykpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gY3JlYXRlIE9BIGNvbmZpZyBmb3IgYl9jb3VudGVyX3JlZ3NcbiIpOworCQllcnIgPSBQVFJf RVJSKG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3MpOworCQlnb3RvIGJvb2xlYW5fZXJyOworCX0K KworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkgeworCQlpZiAoYXJncy0+bl9mbGV4X3Jl Z3MgIT0gMCkKKwkJCWdvdG8gZmxleF9lcnI7CisJfSBlbHNlIHsKKwkJb2FfY29uZmlnLT5mbGV4 X3JlZ3NfbGVuID0gYXJncy0+bl9mbGV4X3JlZ3M7CisJCW9hX2NvbmZpZy0+ZmxleF9yZWdzID0K KwkJCWFsbG9jX29hX3JlZ3MoZGV2X3ByaXYsCisJCQkJICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu b3BzLmlzX3ZhbGlkX2ZsZXhfcmVnLAorCQkJCSAgICAgIHU2NF90b191c2VyX3B0cihhcmdzLT5m bGV4X3JlZ3MpLAorCQkJCSAgICAgIGFyZ3MtPm5fZmxleF9yZWdzKTsKKworCQlpZiAoSVNfRVJS KG9hX2NvbmZpZy0+ZmxleF9yZWdzKSkgeworCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl IE9BIGNvbmZpZyBmb3IgZmxleF9yZWdzXG4iKTsKKwkJCWVyciA9IFBUUl9FUlIob2FfY29uZmln LT5mbGV4X3JlZ3MpOworCQkJZ290byBmbGV4X2VycjsKKwkJfQorCX0KKworCWVyciA9IGk5MTVf bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7CisJaWYgKGVycikKKwkJZ290byBsb2NrX2Vy cjsKKworCWlkcl9mb3JfZWFjaF9lbnRyeSgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIsIHRt cCwgaWQpIHsKKwkJaWYgKCFzdHJjbXAodG1wLT5ndWlkLCBvYV9jb25maWctPmd1aWQpKSB7CisJ CQlEUk1fRVJST1IoIk9BIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgdXVpZFxuIik7 CisJCQllcnIgPSAtRUFERFJJTlVTRTsKKwkJCWdvdG8gc3lzZnNfZXJyOworCQl9CisJfQorCisJ ZXJyID0gY3JlYXRlX2R5bmFtaWNfb2Ffc3lzZnNfZW50cnkoZGV2X3ByaXYsIG9hX2NvbmZpZyk7 CisJaWYgKGVycikgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgc3lzZnMgZW50cnkg Zm9yIE9BIGNvbmZpZ1xuIik7CisJCWdvdG8gc3lzZnNfZXJyOworCX0KKworCW9hX2NvbmZpZy0+ aWQgPSBpZHJfYWxsb2MoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLAorCQkJCSAgb2FfY29u ZmlnLAorCQkJCSAgZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgKyAxLAorCQkJCSAg MCwgR0ZQX0tFUk5FTCk7CisKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwor CXJldHVybiBvYV9jb25maWctPmlkOworCitzeXNmc19lcnI6CisJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Citsb2NrX2VycjoKKwlrZnJlZShvYV9jb25maWctPmZsZXhfcmVncyk7 CitmbGV4X2VycjoKKwlrZnJlZShvYV9jb25maWctPmJfY291bnRlcl9yZWdzKTsKK2Jvb2xlYW5f ZXJyOgorCWtmcmVlKG9hX2NvbmZpZy0+bXV4X3JlZ3MpOworbXV4X2VycjoKK3V1aWRfZXJyOgor CWtmcmVlKG9hX2NvbmZpZyk7CisKKwlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgbmV3IE9BIGNv bmZpZ1xuIik7CisJcmV0dXJuIGVycjsKK30KKworaW50IGk5MTVfcGVyZl9yZW1vdmVfY29uZmln X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKKwl1NjQgKmFyZyA9IGRhdGE7CisJc3RydWN0IGk5MTVfb2FfZHlu YW1pY19jb25maWcgKm9hX2NvbmZpZzsKKwlpbnQgcmV0OworCisJaWYgKCFkZXZfcHJpdi0+cGVy Zi5pbml0aWFsaXplZCkgeworCQlEUk1fREVCVUcoImk5MTUgcGVyZiBpbnRlcmZhY2Ugbm90IGF2 YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW1cbiIpOworCQlyZXR1cm4gLUVOT1RTVVBQOworCX0KKwor CWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkgeworCQlEUk1fRVJST1IoIkluc3VmZmljaWVu dCBwcml2aWxlZ2VzIHRvIHJlbW92ZSBpOTE1IE9BIGNvbmZpZ1xuIik7CisJCXJldHVybiAtRUFD Q0VTOworCX0KKworCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7CisJ aWYgKHJldCkKKwkJZ290byBsb2NrX2VycjsKKworCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNs dXNpdmVfc3RyZWFtICYmCisJICAgIGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0t Pm1ldHJpY3Nfc2V0ID09ICphcmcpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVtb3ZlIGNv bmZpZyBpbiB1c2VcbiIpOworCQlyZXQgPSAtRUFERFJJTlVTRTsKKwkJZ290byBjb25maWdfZXJy OworCX0KKworCW9hX2NvbmZpZyA9IGlkcl9maW5kKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2lk ciwgKmFyZyk7CisJaWYgKCFvYV9jb25maWcpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVt b3ZlIHVua25vd24gY29uZmlnXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBjb25maWdf ZXJyOworCX0KKworCWlkcl9yZW1vdmUoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyLCAqYXJn KTsKKworCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosCisJ CQkgICAmb2FfY29uZmlnLT5zeXNmc19tZXRyaWMpOworCWlmIChvYV9jb25maWctPmZsZXhfcmVn cykKKwkJa2ZyZWUob2FfY29uZmlnLT5mbGV4X3JlZ3MpOworCWlmIChvYV9jb25maWctPmJfY291 bnRlcl9yZWdzKQorCQlrZnJlZShvYV9jb25maWctPmJfY291bnRlcl9yZWdzKTsKKwlpZiAob2Ff Y29uZmlnLT5tdXhfcmVncykKKwkJa2ZyZWUob2FfY29uZmlnLT5tdXhfcmVncyk7CisJa2ZyZWUo b2FfY29uZmlnKTsKKworY29uZmlnX2VycjoKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKK2xvY2tfZXJyOgorCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgY3RsX3Rh YmxlIG9hX3RhYmxlW10gPSB7CiAJewogCSAucHJvY25hbWUgPSAicGVyZl9zdHJlYW1fcGFyYW5v aWQiLApAQCAtMzAxMSw4ICszMzc3LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIGRldl9y b290W10gPSB7CiB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKIAlkZXZfcHJpdi0+cGVyZi5vYS5uX2J1aWx0aW5fc2V0cyA9IDA7CisJaWRy X2luaXQoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfaWRyKTsKIAogCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSkgeworCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaXNfdmFsaWRfYl9jb3VudGVyX3Jl ZyA9CisJCQlnZW43X2lzX3ZhbGlkX2JfY291bnRlcl9hZGRyOworCQlkZXZfcHJpdi0+cGVyZi5v YS5vcHMuaXNfdmFsaWRfbXV4X3JlZyA9CisJCQloc3dfaXNfdmFsaWRfbXV4X2FkZHI7CisJCWRl dl9wcml2LT5wZXJmLm9hLm9wcy5pc192YWxpZF9mbGV4X3JlZyA9IE5VTEw7CiAJCWRldl9wcml2 LT5wZXJmLm9hLm9wcy5pbml0X29hX2J1ZmZlciA9IGdlbjdfaW5pdF9vYV9idWZmZXI7CiAJCWRl dl9wcml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldCA9IGhzd19lbmFibGVfbWV0cmlj X3NldDsKIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmRpc2FibGVfbWV0cmljX3NldCA9IGhzd19k aXNhYmxlX21ldHJpY19zZXQ7CkBAIC0zMDM2LDYgKzM0MDgsMTMgQEAgdm9pZCBpOTE1X3BlcmZf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCSAqIGV4ZWNsaXN0IG1v ZGUgYnkgZGVmYXVsdC4KIAkJICovCiAKKwkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlk X2JfY291bnRlcl9yZWcgPQorCQkJZ2VuN19pc192YWxpZF9iX2NvdW50ZXJfYWRkcjsKKwkJZGV2 X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX211eF9yZWcgPQorCQkJZ2VuN19pc192YWxpZF9t dXhfYWRkcjsKKwkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX2ZsZXhfcmVnID0KKwkJ CWdlbjhfaXNfdmFsaWRfZmxleF9hZGRyOworCiAJCWlmIChJU19HRU44KGRldl9wcml2KSkgewog CQkJZGV2X3ByaXYtPnBlcmYub2EuY3R4X29hY3R4Y3RybF9vZmZzZXQgPSAweDEyMDsKIAkJCWRl dl9wcml2LT5wZXJmLm9hLmN0eF9mbGV4ZXUwX29mZnNldCA9IDB4MmNlOwpAQCAtMzA1MCw2ICsz NDI5LDggQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNfc2V0ID0KIAkJ CQkJaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9iZHc7CiAJCQl9IGVsc2UgaWYgKElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKSB7CisJCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmlzX3ZhbGlkX211 eF9yZWcgPQorCQkJCQljaHZfaXNfdmFsaWRfbXV4X2FkZHI7CiAJCQkJZGV2X3ByaXYtPnBlcmYu b2Eubl9idWlsdGluX3NldHMgPQogCQkJCQlpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19j aHY7CiAJCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNfc2V0ID0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCmluZGV4IDIxYWIxMmY0ZTcyYS4uNDMzZmNkN2JlYjcyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKQEAgLTczMiw2ICs3MzIsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wg aTkxNV9tbWlvX3JlZ192YWxpZChpOTE1X3JlZ190IHJlZykKICNkZWZpbmUgR0RUX0NISUNLRU5f QklUUyAgICBfTU1JTygweDk4NDApCiAjZGVmaW5lIEdUX05PQV9FTkFCTEUJICAgIDB4MDAwMDAw ODAKIAorI2RlZmluZSBOT0FfV1JJVEUgICAgICAgICAgIF9NTUlPKDB4OTg4OCkKKwogLyoKICAq IE9BIEJvb2xlYW4gc3RhdGUKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDdjY2JkNmEyYmJlMC4u ZTJmZjQ3NzMyMzAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysr IGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0yNjAsNiArMjYwLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0k5MTVfR0VNX0NPTlRFWFRf R0VUUEFSQU0JMHgzNAogI2RlZmluZSBEUk1fSTkxNV9HRU1fQ09OVEVYVF9TRVRQQVJBTQkweDM1 CiAjZGVmaW5lIERSTV9JOTE1X1BFUkZfT1BFTgkJMHgzNgorI2RlZmluZSBEUk1fSTkxNV9QRVJG X0FERF9DT05GSUcJMHgzNworI2RlZmluZSBEUk1fSTkxNV9QRVJGX1JFTU9WRV9DT05GSUcJMHgz OAogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3QpCiAjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0ZMVVNICQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxVU0gpCkBA IC0zMTUsNiArMzE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZp bmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0JRFJNX0lPV1IgKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTSwgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9T RVRQQVJBTQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhU X1NFVFBBUkFNLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0pCiAjZGVmaW5lIERS TV9JT0NUTF9JOTE1X1BFUkZfT1BFTglEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9QRVJGX09QRU4sIHN0cnVjdCBkcm1faTkxNV9wZXJmX29wZW5fcGFyYW0pCisjZGVmaW5lIERS TV9JT0NUTF9JOTE1X1BFUkZfQUREX0NPTkZJRwlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX0k5MTVfUEVSRl9BRERfQ09ORklHLCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcp CisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1BFUkZfUkVNT1ZFX0NPTkZJRwlEUk1fSU9XUihEUk1f Q09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVSRl9SRU1PVkVfQ09ORklHLCBfX3U2NCkKIAogLyog QWxsb3cgZHJpdmVycyB0byBzdWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5IHRvIGhhcmR3YXJl LCByZWx5aW5nCiAgKiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJk d2FyZS4KQEAgLTE0NjcsNiArMTQ3MSwyMyBAQCBlbnVtIGRybV9pOTE1X3BlcmZfcmVjb3JkX3R5 cGUgewogCURSTV9JOTE1X1BFUkZfUkVDT1JEX01BWCAvKiBub24tQUJJICovCiB9OwogCisvKioK KyAqIFN0cnVjdHVyZSB0byB1cGxvYWQgcGVyZiBkeW5hbWljIGNvbmZpZ3VyYXRpb24gaW50byB0 aGUga2VybmVsLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcgeworCS8qIHN0 cmluZyBmb3JtYXR0ZWQgbGlrZSAiJTA4eC0lMDR4LSUwNHgtJTA0eC0lMDEyeCIgKiovCisJX191 NjQgX191c2VyIHV1aWQ7CisKKwlfX3UzMiBuX211eF9yZWdzOworCV9fdTY0IF9fdXNlciBtdXhf cmVnczsKKworCV9fdTMyIG5fYm9vbGVhbl9yZWdzOworCV9fdTY0IF9fdXNlciBib29sZWFuX3Jl Z3M7CisKKwlfX3UzMiBuX2ZsZXhfcmVnczsKKwlfX3U2NCBfX3VzZXIgZmxleF9yZWdzOworfTsK KwogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiB9CiAjZW5kaWYKLS0gCjIuMTMuMgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==