From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: [PATCH v2 3/3] drm/i915: add helpers for platform specific revision id range checks Date: Tue, 20 Oct 2015 15:22:02 +0300 Message-ID: <1445343722-3312-3-git-send-email-jani.nikula@intel.com> References: <1445343722-3312-1-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 4FCBE6EBDD for ; Tue, 20 Oct 2015 05:18:38 -0700 (PDT) In-Reply-To: <1445343722-3312-1-git-send-email-jani.nikula@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: jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org UmV2aXNpb24gY2hlY2tzIGFyZSBhbG1vc3QgYWx3YXlzIGFjY29tcGFuaWVkIGJ5IGEgcGxhdGZv cm0gY2hlY2suIChUaGUKZXhjZXB0aW9ucyBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4pIEFk ZCBoZWxwZXJzIHRvIGNoZWNrIGZvciBhCnBsYXRmb3JtIGFuZCBhIHJldmlzaW9uIHJhbmdlOiBJ U19TS0xfUkVWSUQoKSBhbmQgSVNfQlhUX1JFVklEKCkuIEluCm1vc3QgcGxhY2VzIHRoaXMgc2lt cGxpZmllcyBhbmQgY2xhcmlmaWVzIHRoZSBjb2RlLiBJdCB3aWxsIGJlIG9idmlvdXMKdGhhdCBy ZXZpZCBtYWNyb3MgYXJlIHVzZWQgZm9yIHRoZSBjb3JyZWN0IHBsYXRmb3JtLgoKVGhpcyBzaG91 bGQgbWFrZSBpdCBlYXNpZXIgdG8gZmluZCBhbGwgdGhlIHJldmlzaW9uIGNoZWNrcyBmb3IKd29y a2Fyb3VuZHMgZm9yIGVhY2ggcGxhdGZvcm0sIGFuZCBtYWtlIGl0IGVhc2llciB0byByZW1vdmUg dGhlbSBvbmNlIHdlCmRyb3Agc3VwcG9ydCBmb3IgZWFybHkgaGFyZHdhcmUgcmV2aXNpb25zLgoK VGhpcyBzaG91bGQgYWxzbyBtYWtlIGl0IGVhc2llciB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4g U2t5bGFrZSBhbmQKS2FieWxha2UgcmV2aXNpb24gY2hlY2tzIHdoZW4gS2FieWxha2Ugc3VwcG9y dCBpcyBhZGRlZC4KCnYyOiByZWJhc2UKCkFja2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFu aS5uaWt1bGFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgICAgICB8IDEzICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMgfCAgNiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgICAg ICAgfCAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAgIHwg IDQgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgICAgfCAgNCAr LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgICAgICAgICB8ICAyICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAyNiArKysrKysrLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgIHwgMTUgKysr Ky0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICB8IDU2ICsr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0 aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMjhl NzFjMzJjMGQ1Li40OGE3NDJjNWUwMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjQz Miw2ICsyNDMyLDE1IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewogI2RlZmluZSBJTlRF TF9ERVZJRChwKQkoSU5URUxfSU5GTyhwKS0+ZGV2aWNlX2lkKQogI2RlZmluZSBJTlRFTF9SRVZJ RChwKQkoX19JOTE1X18ocCktPmRldi0+cGRldi0+cmV2aXNpb24pCiAKKyNkZWZpbmUgUkVWSURf Rk9SRVZFUgkJMHhmZgorLyoKKyAqIFJldHVybiB0cnVlIGlmIHJldmlzaW9uIGlzIGluIHJhbmdl IFtzaW5jZSx1bnRpbF0gaW5jbHVzaXZlLgorICoKKyAqIFVzZSAwIGZvciBvcGVuLWVuZGVkIHNp bmNlLCBhbmQgUkVWSURfRk9SRVZFUiBmb3Igb3Blbi1lbmRlZCB1bnRpbC4KKyAqLworI2RlZmlu ZSBJU19SRVZJRChwLCBzaW5jZSwgdW50aWwpIFwKKwkoSU5URUxfUkVWSUQocCkgPj0gKHNpbmNl KSAmJiBJTlRFTF9SRVZJRChwKSA8PSAodW50aWwpKQorCiAjZGVmaW5lIElTX0k4MzAoZGV2KQkJ KElOVEVMX0RFVklEKGRldikgPT0gMHgzNTc3KQogI2RlZmluZSBJU184NDVHKGRldikJCShJTlRF TF9ERVZJRChkZXYpID09IDB4MjU2MikKICNkZWZpbmUgSVNfSTg1WChkZXYpCQkoSU5URUxfSU5G TyhkZXYpLT5pc19pODV4KQpAQCAtMjUwMCwxMSArMjUwOSwxNSBAQCBzdHJ1Y3QgZHJtX2k5MTVf Y21kX3RhYmxlIHsKICNkZWZpbmUgU0tMX1JFVklEX0UwCQkweDQKICNkZWZpbmUgU0tMX1JFVklE X0YwCQkweDUKIAorI2RlZmluZSBJU19TS0xfUkVWSUQocCwgc2luY2UsIHVudGlsKSAoSVNfU0tZ TEFLRShwKSAmJiBJU19SRVZJRChwLCBzaW5jZSwgdW50aWwpKQorCiAjZGVmaW5lIEJYVF9SRVZJ RF9BMAkJMHgwCiAjZGVmaW5lIEJYVF9SRVZJRF9BMQkJMHgxCiAjZGVmaW5lIEJYVF9SRVZJRF9C MAkJMHgzCiAjZGVmaW5lIEJYVF9SRVZJRF9DMAkJMHg5CiAKKyNkZWZpbmUgSVNfQlhUX1JFVklE KHAsIHNpbmNlLCB1bnRpbCkgKElTX0JST1hUT04ocCkgJiYgSVNfUkVWSUQocCwgc2luY2UsIHVu dGlsKSkKKwogLyoKICAqIFRoZSBnZW5YIGRlc2lnbmF0aW9uIHR5cGljYWxseSByZWZlcnMgdG8g dGhlIHJlbmRlciBlbmdpbmUsIHNvIHJlbmRlcgogICogY2FwYWJpbGl0eSByZWxhdGVkIGNoZWNr cyBzaG91bGQgdXNlIElTX0dFTiwgd2hpbGUgZGlzcGxheSBhbmQgb3RoZXIgY2hlY2tzCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwppbmRleCA0MDhlZDZmOGUzM2MuLmQwZmE1NDgxNTQzYyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0zODI2LDcgKzM4MjYsNyBAQCBpbnQgaTkxNV9nZW1fc2V0 X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJICog Y2FjaGVsaW5lLCB3aGVyZWFzIG5vcm1hbGx5IHN1Y2ggY2FjaGVsaW5lcyB3b3VsZCBnZXQKIAkJ ICogaW52YWxpZGF0ZWQuCiAJCSAqLwotCQlpZiAoSVNfQlJPWFRPTihkZXYpICYmIElOVEVMX1JF VklEKGRldikgPD0gQlhUX1JFVklEX0ExKQorCQlpZiAoSVNfQlhUX1JFVklEKGRldiwgMCwgQlhU X1JFVklEX0ExKSkKIAkJCXJldHVybiAtRU5PREVWOwogCiAJCWxldmVsID0gSTkxNV9DQUNIRV9M TEM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggODYz YWE1YzgyNDY2Li40YmY5YWE1NGM3NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19zdWJtaXNzaW9uLmMKQEAgLTE2MSw5ICsxNjEsOSBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX3Nh bXBsZV9mb3JjZXdha2Uoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCWRhdGFbMF0gPSBIT1NUMkdV Q19BQ1RJT05fU0FNUExFX0ZPUkNFV0FLRTsKIAkvKiBXYVJzRGlzYWJsZUNvYXJzZVBvd2VyR2F0 aW5nOnNrbCxieHQgKi8KIAlpZiAoIWludGVsX2VuYWJsZV9yYzYoZGV2X3ByaXYtPmRldikgfHwK LQkgICAgKElTX0JST1hUT04oZGV2KSAmJiAoSU5URUxfUkVWSUQoZGV2KSA8PSBCWFRfUkVWSURf QTEpKSB8fAotCSAgICAoSVNfU0tMX0dUMyhkZXYpICYmIChJTlRFTF9SRVZJRChkZXYpIDw9IFNL TF9SRVZJRF9FMCkpIHx8Ci0JICAgIChJU19TS0xfR1Q0KGRldikgJiYgKElOVEVMX1JFVklEKGRl dikgPD0gU0tMX1JFVklEX0UwKSkpCisJICAgIElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJ RF9BMSkgfHwKKwkgICAgKElTX1NLTF9HVDMoZGV2KSAmJiBJU19TS0xfUkVWSUQoZGV2LCAwLCBT S0xfUkVWSURfRTApKSB8fAorCSAgICAoSVNfU0tMX0dUNChkZXYpICYmIElTX1NLTF9SRVZJRChk ZXYsIDAsIFNLTF9SRVZJRF9FMCkpKQogCQlkYXRhWzFdID0gMDsKIAllbHNlCiAJCS8qIGJpdCAw IGFuZCAxIGFyZSBmb3IgUmVuZGVyIGFuZCBNZWRpYSBkb21haW4gc2VwYXJhdGVseSAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYwppbmRleCBiODBlMGY1ZWM1ZGMuLjdiY2NhNzA4MzkzZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKQEAgLTMyNDcsOCArMzI0Nyw3IEBAIHZvaWQgaW50ZWxf ZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCiAJCSAqIE9u IEJYVCBBMC9BMSwgc3cgbmVlZHMgdG8gYWN0aXZhdGUgRERJQSBIUEQgbG9naWMgYW5kCiAJCSAq IGludGVycnVwdHMgdG8gY2hlY2sgdGhlIGV4dGVybmFsIHBhbmVsIGNvbm5lY3Rpb24uCiAJCSAq LwotCQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikgJiYgKElOVEVMX1JFVklEKGRldikgPD0gQlhU X1JFVklEX0ExKQotCQkJCQkgJiYgcG9ydCA9PSBQT1JUX0IpCisJCWlmIChJU19CWFRfUkVWSUQo ZGV2LCAwLCBCWFRfUkVWSURfQTEpICYmIHBvcnQgPT0gUE9SVF9CKQogCQkJZGV2X3ByaXYtPmhv dHBsdWcuaXJxX3BvcnRbUE9SVF9BXSA9IGludGVsX2RpZ19wb3J0OwogCQllbHNlCiAJCQlkZXZf cHJpdi0+aG90cGx1Zy5pcnFfcG9ydFtwb3J0XSA9IGludGVsX2RpZ19wb3J0OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKaW5kZXggOTI0MTNlNWQyMTVjLi44Mjg3ZGY0YzFiZjAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgaW50ZWxfZHBfc2lua19yYXRlcyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBjb25zdCBpbnQgKipzaW5rX3JhdGVzKQogc3RhdGlj IGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIHsKIAkvKiBXYURpc2FibGVIQlIyOnNrbCAqLwotCWlmIChJU19TS1lMQUtFKGRldikgJiYg SU5URUxfUkVWSUQoZGV2KSA8PSBTS0xfUkVWSURfQjApCisJaWYgKElTX1NLTF9SRVZJRChkZXYs IDAsIFNLTF9SRVZJRF9CMCkpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmICgoSVNfSEFTV0VMTChk ZXYpICYmICFJU19IU1dfVUxYKGRldikpIHx8IElTX0JST0FEV0VMTChkZXYpIHx8CkBAIC02MDg3 LDcgKzYwODcsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJYnJlYWs7CiAJY2FzZSBQT1JUX0I6CiAJCWludGVs X2VuY29kZXItPmhwZF9waW4gPSBIUERfUE9SVF9COwotCQlpZiAoSVNfQlJPWFRPTihkZXZfcHJp dikgJiYgKElOVEVMX1JFVklEKGRldikgPD0gQlhUX1JFVklEX0ExKSkKKwkJaWYgKElTX0JYVF9S RVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCiAJCQlpbnRlbF9lbmNvZGVyLT5ocGRfcGluID0g SFBEX1BPUlRfQTsKIAkJYnJlYWs7CiAJY2FzZSBQT1JUX0M6CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggYTE3YjZhNTZiZTgzLi5hYzMxNjk2MDEyZGYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKQEAgLTMyMiw4ICszMjIsOCBAQCBz dGF0aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlJOTE1X1dSSVRFKEdVQ19TSElNX0NPTlRST0wsIEdVQ19TSElNX0NPTlRST0xfVkFMVUUp OwogCiAJLyogV2FEaXNhYmxlTWludXRlSWFDbG9ja0dhdGluZzpza2wsYnh0ICovCi0JaWYgKChJ U19TS1lMQUtFKGRldikgJiYgSU5URUxfUkVWSUQoZGV2KSA8PSBTS0xfUkVWSURfQjApIHx8Ci0J ICAgIChJU19CUk9YVE9OKGRldikgJiYgSU5URUxfUkVWSUQoZGV2KSA9PSBCWFRfUkVWSURfQTAp KSB7CisJaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKKwkgICAgSVNf QlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0EwKSkgewogCQlJOTE1X1dSSVRFKEdVQ19TSElN X0NPTlRST0wsIChJOTE1X1JFQUQoR1VDX1NISU1fQ09OVFJPTCkgJgogCQkJCQkgICAgICB+R1VD X0VOQUJMRV9NSUFfQ0xPQ0tfR0FUSU5HKSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5j CmluZGV4IDM1YzZlMjExYmFmNS4uMDEzYmQ3ZDUyMmNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCkBAIC0yMDM5LDcgKzIwMzksNyBAQCB2b2lkIGludGVsX2hkbWlfaW5pdF9jb25uZWN0 b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJCSAqIE9uIEJY VCBBMC9BMSwgc3cgbmVlZHMgdG8gYWN0aXZhdGUgRERJQSBIUEQgbG9naWMgYW5kCiAJCSAqIGlu dGVycnVwdHMgdG8gY2hlY2sgdGhlIGV4dGVybmFsIHBhbmVsIGNvbm5lY3Rpb24uCiAJCSAqLwot CQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikgJiYgKElOVEVMX1JFVklEKGRldikgPD0gQlhUX1JF VklEX0ExKSkKKwkJaWYgKElTX0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkK IAkJCWludGVsX2VuY29kZXItPmhwZF9waW4gPSBIUERfUE9SVF9BOwogCQllbHNlCiAJCQlpbnRl bF9lbmNvZGVyLT5ocGRfcGluID0gSFBEX1BPUlRfQjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK aW5kZXggMGY1YTFkNjNiNTFkLi4zMjY1NDI3ZjEyY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCkBAIC0yODQsOCArMjg0LDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZV9saXRlX3Jlc3RvcmVf d2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gcmluZy0+ZGV2OwogCi0JcmV0dXJuICgoSVNfU0tZTEFLRShkZXYpICYmIElOVEVMX1JF VklEKGRldikgPD0gU0tMX1JFVklEX0IwKSB8fAotCQkoSVNfQlJPWFRPTihkZXYpICYmIElOVEVM X1JFVklEKGRldikgPT0gQlhUX1JFVklEX0EwKSkgJiYKKwlyZXR1cm4gKElTX1NLTF9SRVZJRChk ZXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKKwkJSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklE X0EwKSkgJiYKIAkgICAgICAgKHJpbmctPmlkID09IFZDUyB8fCByaW5nLT5pZCA9PSBWQ1MyKTsK IH0KIApAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuOF9lbWl0X2Zs dXNoX2NvaGVyZW50bDNfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkgKiB0aGlz IGJhdGNoIHVwZGF0ZXMgR0VOOF9MM1NRQ1JFRzQgd2l0aCBkZWZhdWx0IHZhbHVlIHdlIG5lZWQg dG8KIAkgKiBzZXQgdGhpcyBiaXQgaGVyZSB0byByZXRhaW4gdGhlIFdBIGR1cmluZyBmbHVzaC4K IAkgKi8KLQlpZiAoSVNfU0tZTEFLRShyaW5nLT5kZXYpICYmIElOVEVMX1JFVklEKHJpbmctPmRl dikgPD0gU0tMX1JFVklEX0UwKQorCWlmIChJU19TS0xfUkVWSUQocmluZy0+ZGV2LCAwLCBTS0xf UkVWSURfRTApKQogCQlsM3NxYzRfZmx1c2ggfD0gR0VOOF9MUVNDX1JPX1BFUkZfRElTOwogCiAJ d2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCAoTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfApA QCAtMTMxNCw4ICsxMzE0LDggQEAgc3RhdGljIGludCBnZW45X2luaXRfaW5kaXJlY3RjdHhfYmIo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAl1aW50MzJfdCBpbmRleCA9IHdhX2N0eF9z dGFydCh3YV9jdHgsICpvZmZzZXQsIENBQ0hFTElORV9EV09SRFMpOwogCiAJLyogV2FEaXNhYmxl Q3R4UmVzdG9yZUFyYml0cmF0aW9uOnNrbCxieHQgKi8KLQlpZiAoKElTX1NLWUxBS0UoZGV2KSAm JiAoSU5URUxfUkVWSUQoZGV2KSA8PSBTS0xfUkVWSURfRDApKSB8fAotCSAgICAoSVNfQlJPWFRP TihkZXYpICYmIChJTlRFTF9SRVZJRChkZXYpID09IEJYVF9SRVZJRF9BMCkpKQorCWlmIChJU19T S0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfRDApIHx8CisJICAgIElTX0JYVF9SRVZJRChkZXYs IDAsIEJYVF9SRVZJRF9BMCkpCiAJCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgTUlfQVJCX09O X09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKIAogCS8qIFdhRmx1c2hDb2hlcmVudEwzQ2FjaGVMaW5l c0F0Q29udGV4dFN3aXRjaDpza2wsYnh0ICovCkBAIC0xMzQwLDggKzEzNDAsOCBAQCBzdGF0aWMg aW50IGdlbjlfaW5pdF9wZXJjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAl1 aW50MzJfdCBpbmRleCA9IHdhX2N0eF9zdGFydCh3YV9jdHgsICpvZmZzZXQsIENBQ0hFTElORV9E V09SRFMpOwogCiAJLyogV2FTZXREaXNhYmxlUGl4TWFza0NhbW1pbmdBbmRSaHdvSW5Db21tb25T bGljZUNoaWNrZW46c2tsLGJ4dCAqLwotCWlmICgoSVNfU0tZTEFLRShkZXYpICYmIChJTlRFTF9S RVZJRChkZXYpIDw9IFNLTF9SRVZJRF9CMCkpIHx8Ci0JICAgIChJU19CUk9YVE9OKGRldikgJiYg KElOVEVMX1JFVklEKGRldikgPT0gQlhUX1JFVklEX0EwKSkpIHsKKwlpZiAoSVNfU0tMX1JFVklE KGRldiwgMCwgU0tMX1JFVklEX0IwKSB8fAorCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRf UkVWSURfQTApKSB7CiAJCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgTUlfTE9BRF9SRUdJU1RF Ul9JTU0oMSkpOwogCQl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIEdFTjlfU0xJQ0VfQ09NTU9O X0VDT19DSElDS0VOMCk7CiAJCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwKQEAgLTEzNTAsOCAr MTM1MCw4IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3BlcmN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAogCX0KIAogCS8qIFdhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlvbjpz a2wsYnh0ICovCi0JaWYgKChJU19TS1lMQUtFKGRldikgJiYgKElOVEVMX1JFVklEKGRldikgPD0g U0tMX1JFVklEX0QwKSkgfHwKLQkgICAgKElTX0JST1hUT04oZGV2KSAmJiAoSU5URUxfUkVWSUQo ZGV2KSA9PSBCWFRfUkVWSURfQTApKSkKKwlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JF VklEX0QwKSB8fAorCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTApKQogCQl3 YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsK IAogCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CkBAIC0x OTcyLDcgKzE5NzIsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCQlyaW5nLT5pbml0X2h3ID0gZ2VuOF9pbml0X3JlbmRlcl9y aW5nOwogCXJpbmctPmluaXRfY29udGV4dCA9IGdlbjhfaW5pdF9yY3NfY29udGV4dDsKIAlyaW5n LT5jbGVhbnVwID0gaW50ZWxfZmluaV9waXBlX2NvbnRyb2w7Ci0JaWYgKElTX0JST1hUT04oZGV2 KSAmJiBJTlRFTF9SRVZJRChkZXYpIDw9IEJYVF9SRVZJRF9BMSkgeworCWlmIChJU19CWFRfUkVW SUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKSB7CiAJCXJpbmctPmdldF9zZXFubyA9IGJ4dF9hX2dl dF9zZXFubzsKIAkJcmluZy0+c2V0X3NlcW5vID0gYnh0X2Ffc2V0X3NlcW5vOwogCX0gZWxzZSB7 CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfYnNkX3JpbmdfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwg R0VOOF9WQ1MxX0lSUV9TSElGVDsKIAogCXJpbmctPmluaXRfaHcgPSBnZW44X2luaXRfY29tbW9u X3Jpbmc7Ci0JaWYgKElTX0JST1hUT04oZGV2KSAmJiBJTlRFTF9SRVZJRChkZXYpIDw9IEJYVF9S RVZJRF9BMSkgeworCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKSB7CiAJ CXJpbmctPmdldF9zZXFubyA9IGJ4dF9hX2dldF9zZXFubzsKIAkJcmluZy0+c2V0X3NlcW5vID0g Ynh0X2Ffc2V0X3NlcW5vOwogCX0gZWxzZSB7CkBAIC0yMDc5LDcgKzIwNzksNyBAQCBzdGF0aWMg aW50IGxvZ2ljYWxfYmx0X3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlHVF9D T05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9CQ1NfSVJRX1NISUZUOwogCiAJcmluZy0+ aW5pdF9odyA9IGdlbjhfaW5pdF9jb21tb25fcmluZzsKLQlpZiAoSVNfQlJPWFRPTihkZXYpICYm IElOVEVMX1JFVklEKGRldikgPD0gQlhUX1JFVklEX0ExKSB7CisJaWYgKElTX0JYVF9SRVZJRChk ZXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKIAkJcmluZy0+Z2V0X3NlcW5vID0gYnh0X2FfZ2V0X3Nl cW5vOwogCQlyaW5nLT5zZXRfc2Vxbm8gPSBieHRfYV9zZXRfc2Vxbm87CiAJfSBlbHNlIHsKQEAg LTIxMDksNyArMjEwOSw3IEBAIHN0YXRpYyBpbnQgbG9naWNhbF92ZWJveF9yaW5nX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkJR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdF TjhfVkVDU19JUlFfU0hJRlQ7CiAKIAlyaW5nLT5pbml0X2h3ID0gZ2VuOF9pbml0X2NvbW1vbl9y aW5nOwotCWlmIChJU19CUk9YVE9OKGRldikgJiYgSU5URUxfUkVWSUQoZGV2KSA8PSBCWFRfUkVW SURfQTEpIHsKKwlpZiAoSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkgewogCQly aW5nLT5nZXRfc2Vxbm8gPSBieHRfYV9nZXRfc2Vxbm87CiAJCXJpbmctPnNldF9zZXFubyA9IGJ4 dF9hX3NldF9zZXFubzsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNzcx ZWVmYjdjN2VmLi40YzFjMWJiOTZhOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNDM4 Niw3ICs0Mzg2LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9zZXRfcnBzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHU4IHZhbCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwogCiAJLyogV2FHc3ZEaXNhYmxlVHVyYm86IFdvcmthcm91bmQgdG8gZGlz YWJsZSB0dXJibyBvbiBCWFQgQSogKi8KLQlpZiAoSVNfQlJPWFRPTihkZXYpICYmIChJTlRFTF9S RVZJRChkZXYpIDw9IEJYVF9SRVZJRF9BMSkpCisJaWYgKElTX0JYVF9SRVZJRChkZXYsIDAsIEJY VF9SRVZJRF9BMSkpCiAJCXJldHVybjsKIAogCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2 X3ByaXYtPnJwcy5od19sb2NrKSk7CkBAIC00NzEwLDcgKzQ3MTAsNyBAQCBzdGF0aWMgdm9pZCBn ZW45X2VuYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlnZW42X2luaXRfcnBzX2Zy ZXF1ZW5jaWVzKGRldik7CiAKIAkvKiBXYUdzdkRpc2FibGVUdXJibzogV29ya2Fyb3VuZCB0byBk aXNhYmxlIHR1cmJvIG9uIEJYVCBBKiAqLwotCWlmIChJU19CUk9YVE9OKGRldikgJiYgKElOVEVM X1JFVklEKGRldikgPD0gQlhUX1JFVklEX0ExKSkgeworCWlmIChJU19CWFRfUkVWSUQoZGV2LCAw LCBCWFRfUkVWSURfQTEpKSB7CiAJCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQ3NTUsNyArNDc1NSw3IEBAIHN0 YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJLyog V2FSc0RvdWJsZVJjNldybFdpdGhDb2Fyc2VQb3dlckdhdGluZzogRG91YmxpbmcgV1JMIG9ubHkg d2hlbiBDUEcgaXMgZW5hYmxlZCAqLwogCWlmIChJU19TS1lMQUtFKGRldikgJiYgISgoSVNfU0tM X0dUMyhkZXYpIHx8IElTX1NLTF9HVDQoZGV2KSkgJiYKLQkJCQkgKElOVEVMX1JFVklEKGRldikg PD0gU0tMX1JFVklEX0UwKSkpCisJCQkJIElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9F MCkpKQogCQlJOTE1X1dSSVRFKEdFTjZfUkM2X1dBS0VfUkFURV9MSU1JVCwgMTA4IDw8IDE2KTsK IAllbHNlCiAJCUk5MTVfV1JJVEUoR0VONl9SQzZfV0FLRV9SQVRFX0xJTUlULCA1NCA8PCAxNik7 CkBAIC00Nzc5LDggKzQ3NzksOCBAQCBzdGF0aWMgdm9pZCBnZW45X2VuYWJsZV9yYzYoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlEUk1fSU5GTygiUkM2ICVzXG4iLCAocmM2X21hc2sgJiBHRU42 X1JDX0NUTF9SQzZfRU5BQkxFKSA/CiAJCQkib24iIDogIm9mZiIpOwogCS8qIFdhUnNVc2VUaW1l b3V0TW9kZSAqLwotCWlmICgoSVNfU0tZTEFLRShkZXYpICYmIElOVEVMX1JFVklEKGRldikgPD0g U0tMX1JFVklEX0QwKSB8fAotCSAgICAoSVNfQlJPWFRPTihkZXYpICYmIElOVEVMX1JFVklEKGRl dikgPD0gQlhUX1JFVklEX0EwKSkgeworCWlmIChJU19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVW SURfRDApIHx8CisJICAgIElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMCkpIHsKIAkJ STkxNV9XUklURShHRU42X1JDNl9USFJFU0hPTEQsIDYyNSk7IC8qIDgwMHVzICovCiAJCUk5MTVf V1JJVEUoR0VONl9SQ19DT05UUk9MLCBHRU42X1JDX0NUTF9IV19FTkFCTEUgfAogCQkJICAgR0VO N19SQ19DVExfVE9fTU9ERSB8CkBAIC00Nzk2LDggKzQ3OTYsOSBAQCBzdGF0aWMgdm9pZCBnZW45 X2VuYWJsZV9yYzYoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiAzYjogRW5hYmxlIENvYXJz ZSBQb3dlciBHYXRpbmcgb25seSB3aGVuIFJDNiBpcyBlbmFibGVkLgogCSAqIFdhUnNEaXNhYmxl Q29hcnNlUG93ZXJHYXRpbmc6c2tsLGJ4dCAtIFJlbmRlci9NZWRpYSBQRyBuZWVkIHRvIGJlIGRp c2FibGVkIHdpdGggUkM2LgogCSAqLwotCWlmICgoSVNfQlJPWFRPTihkZXYpICYmIChJTlRFTF9S RVZJRChkZXYpIDw9IEJYVF9SRVZJRF9BMSkpIHx8Ci0JICAgICgoSVNfU0tMX0dUMyhkZXYpIHx8 IElTX1NLTF9HVDQoZGV2KSkgJiYgKElOVEVMX1JFVklEKGRldikgPD0gU0tMX1JFVklEX0UwKSkp CisJaWYgKElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkgfHwKKwkgICAgKChJU19T S0xfR1QzKGRldikgfHwgSVNfU0tMX0dUNChkZXYpKSAmJgorCSAgICAgSVNfU0tMX1JFVklEKGRl diwgMCwgU0tMX1JFVklEX0UwKSkpCiAJCUk5MTVfV1JJVEUoR0VOOV9QR19FTkFCTEUsIDApOwog CWVsc2UKIAkJSTkxNV9XUklURShHRU45X1BHX0VOQUJMRSwgKHJjNl9tYXNrICYgR0VONl9SQ19D VExfUkM2X0VOQUJMRSkgPwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmlu ZGV4IGQ2NzY1MTJhYTNjOC4uMDJhNWJiMDhmMmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCkBAIC05MjQsMTcgKzkyNCwxNSBAQCBzdGF0aWMgaW50IGdlbjlfaW5p dF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCVdBX1NFVF9CSVRf TUFTS0VEKEhBTEZfU0xJQ0VfQ0hJQ0tFTjMsCiAJCQkgIEdFTjlfRElTQUJMRV9PQ0xfT09CX1NV UFBSRVNTX0xPR0lDKTsKIAotCWlmICgoSVNfU0tZTEFLRShkZXYpICYmIChJTlRFTF9SRVZJRChk ZXYpID09IFNLTF9SRVZJRF9BMCB8fAotCSAgICBJTlRFTF9SRVZJRChkZXYpID09IFNLTF9SRVZJ RF9CMCkpIHx8Ci0JICAgIChJU19CUk9YVE9OKGRldikgJiYgSU5URUxfUkVWSUQoZGV2KSA8PSBC WFRfUkVWSURfQTEpKSB7Ci0JCS8qIFdhRGlzYWJsZURnTWlycm9yRml4SW5IYWxmU2xpY2VDaGlj a2VuNTpza2wsYnh0ICovCisJLyogV2FEaXNhYmxlRGdNaXJyb3JGaXhJbkhhbGZTbGljZUNoaWNr ZW41OnNrbCxieHQgKi8KKwlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0IwKSB8 fAorCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQogCQlXQV9DTFJfQklU X01BU0tFRChHRU45X0hBTEZfU0xJQ0VfQ0hJQ0tFTjUsCiAJCQkJICBHRU45X0RHX01JUlJPUl9G SVhfRU5BQkxFKTsKLQl9CiAKLQlpZiAoKElTX1NLWUxBS0UoZGV2KSAmJiBJTlRFTF9SRVZJRChk ZXYpIDw9IFNLTF9SRVZJRF9CMCkgfHwKLQkgICAgKElTX0JST1hUT04oZGV2KSAmJiBJTlRFTF9S RVZJRChkZXYpIDw9IEJYVF9SRVZJRF9BMSkpIHsKLQkJLyogV2FTZXREaXNhYmxlUGl4TWFza0Nh bW1pbmdBbmRSaHdvSW5Db21tb25TbGljZUNoaWNrZW46c2tsLGJ4dCAqLworCS8qIFdhU2V0RGlz YWJsZVBpeE1hc2tDYW1taW5nQW5kUmh3b0luQ29tbW9uU2xpY2VDaGlja2VuOnNrbCxieHQgKi8K KwlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0IwKSB8fAorCSAgICBJU19CWFRf UkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKSB7CiAJCVdBX1NFVF9CSVRfTUFTS0VEKEdFTjdf Q09NTU9OX1NMSUNFX0NISUNLRU4xLAogCQkJCSAgR0VOOV9SSFdPX09QVElNSVpBVElPTl9ESVNB QkxFKTsKIAkJLyoKQEAgLTk0NCwxMiArOTQyLDEwIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dv cmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCSAqLwogCX0KIAotCWlm ICgoSVNfU0tZTEFLRShkZXYpICYmIElOVEVMX1JFVklEKGRldikgPj0gU0tMX1JFVklEX0MwKSB8 fAotCSAgICBJU19CUk9YVE9OKGRldikpIHsKLQkJLyogV2FFbmFibGVZVjEyQnVnRml4SW5IYWxm U2xpY2VDaGlja2VuNzpza2wsYnh0ICovCisJLyogV2FFbmFibGVZVjEyQnVnRml4SW5IYWxmU2xp Y2VDaGlja2VuNzpza2wsYnh0ICovCisJaWYgKElTX1NLTF9SRVZJRChkZXYsIFNLTF9SRVZJRF9D MCwgUkVWSURfRk9SRVZFUikgfHwgSVNfQlJPWFRPTihkZXYpKQogCQlXQV9TRVRfQklUX01BU0tF RChHRU45X0hBTEZfU0xJQ0VfQ0hJQ0tFTjcsCiAJCQkJICBHRU45X0VOQUJMRV9ZVjEyX0JVR0ZJ WCk7Ci0JfQogCiAJLyogV2E0eDRTVENPcHRpbWl6YXRpb25EaXNhYmxlOnNrbCxieHQgKi8KIAkv KiBXYURpc2FibGVQYXJ0aWFsUmVzb2x2ZUluVmM6c2tsLGJ4dCAqLwpAQCAtOTYxLDI0ICs5NTcs MjIgQEAgc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKIAkJCSAgR0VOOV9DQ1NfVExCX1BSRUZFVENIX0VOQUJMRSk7CiAKIAkvKiBX YURpc2FibGVNYXNrQmFzZWRDYW1taW5nSW5SQ0M6c2tsLGJ4dCAqLwotCWlmICgoSVNfU0tZTEFL RShkZXYpICYmIElOVEVMX1JFVklEKGRldikgPT0gU0tMX1JFVklEX0MwKSB8fAotCSAgICAoSVNf QlJPWFRPTihkZXYpICYmIElOVEVMX1JFVklEKGRldikgPD0gQlhUX1JFVklEX0ExKSkKKwlpZiAo SVNfU0tMX1JFVklEKGRldiwgU0tMX1JFVklEX0MwLCBTS0xfUkVWSURfQzApIHx8CisJICAgIElT X0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCiAJCVdBX1NFVF9CSVRfTUFTS0VEKFNM SUNFX0VDT19DSElDS0VOMCwKIAkJCQkgIFBJWEVMX01BU0tfQ0FNTUlOR19ESVNBQkxFKTsKIAog CS8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3RvcmVOb25Db2hlcmVudDpza2wsYnh0ICovCiAJdG1w ID0gSERDX0ZPUkNFX0NPTlRFWFRfU0FWRV9SRVNUT1JFX05PTl9DT0hFUkVOVDsKLQlpZiAoKElT X1NLWUxBS0UoZGV2KSAmJiBJTlRFTF9SRVZJRChkZXYpID09IFNLTF9SRVZJRF9GMCkgfHwKLQkg ICAgKElTX0JST1hUT04oZGV2KSAmJiBJTlRFTF9SRVZJRChkZXYpID49IEJYVF9SRVZJRF9CMCkp CisJaWYgKElTX1NLTF9SRVZJRChkZXYsIFNLTF9SRVZJRF9GMCwgU0tMX1JFVklEX0YwKSB8fAor CSAgICBJU19CWFRfUkVWSUQoZGV2LCBCWFRfUkVWSURfQjAsIFJFVklEX0ZPUkVWRVIpKQogCQl0 bXAgfD0gSERDX0ZPUkNFX0NTUl9OT05fQ09IRVJFTlRfT1ZSX0RJU0FCTEU7CiAJV0FfU0VUX0JJ VF9NQVNLRUQoSERDX0NISUNLRU4wLCB0bXApOwogCiAJLyogV2FEaXNhYmxlU2FtcGxlclBvd2Vy QnlwYXNzRm9yU09QaW5nUG9uZzpza2wsYnh0ICovCi0JaWYgKElTX1NLWUxBS0UoZGV2KSB8fAot CSAgICAoSVNfQlJPWFRPTihkZXYpICYmIElOVEVMX1JFVklEKGRldikgPD0gQlhUX1JFVklEX0Iw KSkgeworCWlmIChJU19TS1lMQUtFKGRldikgfHwgSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JF VklEX0IwKSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoSEFMRl9TTElDRV9DSElDS0VOMywKIAkJCQkg IEdFTjhfU0FNUExFUl9QT1dFUl9CWVBBU1NfRElTKTsKLQl9CiAKIAkvKiBXYURpc2FibGVTVFVu aXRQb3dlck9wdGltaXphdGlvbjpza2wsYnh0ICovCiAJV0FfU0VUX0JJVF9NQVNLRUQoSEFMRl9T TElDRV9DSElDS0VOMiwgR0VOOF9TVF9QT19ESVNBQkxFKTsKQEAgLTEwMzgsNyArMTAzMiw3IEBA IHN0YXRpYyBpbnQgc2tsX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZykKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKElOVEVMX1JFVklEKGRldikg PD0gU0tMX1JFVklEX0QwKSB7CisJaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9E MCkpIHsKIAkJLyogV2FEaXNhYmxlSERDSW52YWxpZGF0aW9uOnNrbCAqLwogCQlJOTE1X1dSSVRF KEdBTV9FQ09DSEssIEk5MTVfUkVBRChHQU1fRUNPQ0hLKSB8CiAJCQkgICBCRFdfRElTQUJMRV9I RENfSU5WQUxJREFUSU9OKTsKQEAgLTEwNTEsMjMgKzEwNDUsMjMgQEAgc3RhdGljIGludCBza2xf aW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCS8qIEdFTjhf TDNTUUNSRUc0IGhhcyBhIGRlcGVuZGVuY3kgd2l0aCBXQSBiYXRjaCBzbyBhbnkgbmV3IGNoYW5n ZXMKIAkgKiBpbnZvbHZpbmcgdGhpcyByZWdpc3RlciBzaG91bGQgYWxzbyBiZSBhZGRlZCB0byBX QSBiYXRjaCBhcyByZXF1aXJlZC4KIAkgKi8KLQlpZiAoSU5URUxfUkVWSUQoZGV2KSA8PSBTS0xf UkVWSURfRTApCisJaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9FMCkpCiAJCS8q IFdhRGlzYWJsZUxTUUNST1BFUkZmb3JPQ0w6c2tsICovCiAJCUk5MTVfV1JJVEUoR0VOOF9MM1NR Q1JFRzQsIEk5MTVfUkVBRChHRU44X0wzU1FDUkVHNCkgfAogCQkJICAgR0VOOF9MUVNDX1JPX1BF UkZfRElTKTsKIAogCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDpza2wgKi8KLQlpZiAoSVNf U0tZTEFLRShkZXYpICYmIChJTlRFTF9SRVZJRChkZXYpID49IFNLTF9SRVZJRF9DMCkpIHsKKwlp ZiAoSVNfU0tMX1JFVklEKGRldiwgU0tMX1JFVklEX0MwLCBSRVZJRF9GT1JFVkVSKSkgewogCQlJ OTE1X1dSSVRFKEdFTjhfR0FSQkNOVEwsIChJOTE1X1JFQUQoR0VOOF9HQVJCQ05UTCkgfAogCQkJ CQkgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKSk7CiAJfQogCiAJLyogV2FEaXNhYmxl UG93ZXJDb21waWxlckNsb2NrR2F0aW5nOnNrbCAqLwotCWlmIChJTlRFTF9SRVZJRChkZXYpID09 IFNLTF9SRVZJRF9CMCkKKwlpZiAoSVNfU0tMX1JFVklEKGRldiwgU0tMX1JFVklEX0IwLCBTS0xf UkVWSURfQjApKQogCQlXQV9TRVRfQklUX01BU0tFRChISVpfQ0hJQ0tFTiwKIAkJCQkgIEJEV19I SVpfUE9XRVJfQ09NUElMRVJfQ0xPQ0tfR0FUSU5HX0RJU0FCTEUpOwogCi0JaWYgKElOVEVMX1JF VklEKGRldikgPD0gU0tMX1JFVklEX0QwKSB7CisJaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNL TF9SRVZJRF9EMCkpIHsKIAkJLyoKIAkJICpVc2UgRm9yY2UgTm9uLUNvaGVyZW50IHdoZW5ldmVy IGV4ZWN1dGluZyBhIDNEIGNvbnRleHQuIFRoaXMKIAkJICogaXMgYSB3b3JrYXJvdW5kIGZvciBh IHBvc3NpYmxlIGhhbmcgaW4gdGhlIHVubGlrZWx5IGV2ZW50CkBAIC0xMDc4LDE5ICsxMDcyLDE3 IEBAIHN0YXRpYyBpbnQgc2tsX2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKIAkJCQkgIEhEQ19GT1JDRV9OT05fQ09IRVJFTlQpOwogCX0KIAotCWlmIChJTlRF TF9SRVZJRChkZXYpID09IFNLTF9SRVZJRF9DMCB8fAotCSAgICBJTlRFTF9SRVZJRChkZXYpID09 IFNLTF9SRVZJRF9EMCkKLQkJLyogV2FCYXJyaWVyUGVyZm9ybWFuY2VGaXhEaXNhYmxlOnNrbCAq LworCS8qIFdhQmFycmllclBlcmZvcm1hbmNlRml4RGlzYWJsZTpza2wgKi8KKwlpZiAoSVNfU0tM X1JFVklEKGRldiwgU0tMX1JFVklEX0MwLCBTS0xfUkVWSURfRDApKQogCQlXQV9TRVRfQklUX01B U0tFRChIRENfQ0hJQ0tFTjAsCiAJCQkJICBIRENfRkVOQ0VfREVTVF9TTE1fRElTQUJMRSB8CiAJ CQkJICBIRENfQkFSUklFUl9QRVJGT1JNQU5DRV9ESVNBQkxFKTsKIAogCS8qIFdhRGlzYWJsZVNi ZUNhY2hlRGlzcGF0Y2hQb3J0U2hhcmluZzpza2wgKi8KLQlpZiAoSU5URUxfUkVWSUQoZGV2KSA8 PSBTS0xfUkVWSURfRjApIHsKKwlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0Yw KSkKIAkJV0FfU0VUX0JJVF9NQVNLRUQoCiAJCQlHRU43X0hBTEZfU0xJQ0VfQ0hJQ0tFTjEsCiAJ CQlHRU43X1NCRV9TU19DQUNIRV9ESVNQQVRDSF9QT1JUX1NIQVJJTkdfRElTQUJMRSk7Ci0JfQog CiAJcmV0dXJuIHNrbF90dW5lX2l6X2hhc2hpbmcocmluZyk7CiB9CkBAIC0xMTA3LDExICsxMDk5 LDExIEBAIHN0YXRpYyBpbnQgYnh0X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKIAogCS8qIFdhU3RvcmVNdWx0aXBsZVBURWVuYWJsZTpieHQgKi8KIAkvKiBU aGlzIGlzIGEgcmVxdWlyZW1lbnQgYWNjb3JkaW5nIHRvIEhhcmR3YXJlIHNwZWNpZmljYXRpb24g Ki8KLQlpZiAoSU5URUxfUkVWSUQoZGV2KSA9PSBCWFRfUkVWSURfQTApCisJaWYgKElTX0JYVF9S RVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMCkpCiAJCUk5MTVfV1JJVEUoVElMRUNUTCwgSTkxNV9S RUFEKFRJTEVDVEwpIHwgVElMRUNUTF9UTEJQRik7CiAKIAkvKiBXYVNldENsY2tHYXRpbmdEaXNh YmxlTWVkaWE6Ynh0ICovCi0JaWYgKElOVEVMX1JFVklEKGRldikgPT0gQlhUX1JFVklEX0EwKSB7 CisJaWYgKElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMCkpIHsKIAkJSTkxNV9XUklU RShHRU43X01JU0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENUTCkgJgogCQkJCQkgICAg fkdFTjhfRE9QX0NMT0NLX0dBVEVfTUVESUFfRU5BQkxFKSk7CiAJfQpAQCAtMTEyMSw3ICsxMTEz LDcgQEAgc3RhdGljIGludCBieHRfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKQogCQkJICBTVEFMTF9ET1BfR0FUSU5HX0RJU0FCTEUpOwogCiAJLyogV2FEaXNh YmxlU2JlQ2FjaGVEaXNwYXRjaFBvcnRTaGFyaW5nOmJ4dCAqLwotCWlmIChJTlRFTF9SRVZJRChk ZXYpIDw9IEJYVF9SRVZJRF9CMCkgeworCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVW SURfQjApKSB7CiAJCVdBX1NFVF9CSVRfTUFTS0VEKAogCQkJR0VON19IQUxGX1NMSUNFX0NISUNL RU4xLAogCQkJR0VON19TQkVfU1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUp OwotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==