From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 2/3] drm/i915: Track minimum acceptable cdclk instead of "minimum dotclock" Date: Fri, 7 Jul 2017 13:24:49 +0300 Message-ID: <20170707102450.3152-2-ville.syrjala@linux.intel.com> References: <20170707102450.3152-1-ville.syrjala@linux.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 17EA96E726 for ; Fri, 7 Jul 2017 10:24:59 +0000 (UTC) In-Reply-To: <20170707102450.3152-1-ville.syrjala@linux.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: Dhinakaran Pandiyan , Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCk1h a2UgdGhlIG1pbl9waXhjbGsgdGhpbmcgbGVzcyBjb25mdXNpbmcgYnkgY2hhbmdpbmcgaXQgdG8g dHJhY2sKdGhlIG1pbmltdW0gYWNjZXB0YWJsZSBjZGNsayBmcmVxdWVuY3kgaW5zdGVhZC4gVGhp cyBtZWFucyBtb3ZpbmcKdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBndWFyZGJhbmRzIHRvIGEgc2xp Z2h0bHkgaGlnaGVyIGxldmVsIGZyb20KdGhlIGxvdyBsZXZlbCBwbGF0Zm9ybSBzcGVjaWZpYyBj YWxjX2NkY2xrKCkgZnVuY3Rpb25zLgoKVGhlIGltbWVkaWF0ZSBiZW5lZml0IGlzIGVsaW1pbmF0 aW9uIG9mIHRoZSBjb25mdXNpbmcgMnggZmFjdG9ycwpvbiBHTEsvQ05MKyBpbiB0aGUgYXVkaW8g d29ya2Fyb3VuZHMgKHdoaWNoIHN0ZW1zIGZyb20gdGhlIGZhY3QKdGhhdCB0aGUgcGlwZXMgcHJv ZHVjZSB0d28gcGl4ZWxzIHBlciBjbG9jaykuCgpDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnph bm9uaUBpbnRlbC5jb20+CkNjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ CkNjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4K Q2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDEyICsr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyAgIHwgMTc5ICsrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgfCAgMjEgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwg ICA0ICstCiA0IGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCAxMDkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggODFjZDIxZWNmYTdkLi5jODAxNzY0MjRk ODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNTYzLDYgKzU2MywxNSBAQCBzdHJ1Y3Qg aTkxNV9ob3RwbHVnIHsKIAkgICAgIChfX2kpKyspIFwKIAkJZm9yX2VhY2hfaWYgKHBsYW5lX3N0 YXRlKQogCisjZGVmaW5lIGZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKF9fc3RhdGUs IGNydGMsIG5ld19jcnRjX3N0YXRlLCBfX2kpIFwKKwlmb3IgKChfX2kpID0gMDsgXAorCSAgICAg KF9faSkgPCAoX19zdGF0ZSktPmJhc2UuZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YyAmJiBcCisJ CSAgICAgKChjcnRjKSA9IHRvX2ludGVsX2NydGMoKF9fc3RhdGUpLT5iYXNlLmNydGNzW19faV0u cHRyKSwgXAorCQkgICAgICAobmV3X2NydGNfc3RhdGUpID0gdG9faW50ZWxfY3J0Y19zdGF0ZSgo X19zdGF0ZSktPmJhc2UuY3J0Y3NbX19pXS5uZXdfc3RhdGUpLCAxKTsgXAorCSAgICAgKF9faSkr KykgXAorCQlmb3JfZWFjaF9pZiAoY3J0YykKKworCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsK IHN0cnVjdCBpOTE1X21tX3N0cnVjdDsKIHN0cnVjdCBpOTE1X21tdV9vYmplY3Q7CkBAIC0yMjY4 LDcgKzIyNzcsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IG11dGV4IGRw bGxfbG9jazsKIAogCXVuc2lnbmVkIGludCBhY3RpdmVfY3J0Y3M7Ci0JdW5zaWduZWQgaW50IG1p bl9waXhjbGtbSTkxNV9NQVhfUElQRVNdOworCS8qIG1pbmltdW0gYWNjZXB0YWJsZSBjZGNsayBm b3IgZWFjaCBwaXBlICovCisJaW50IG1pbl9jZGNsa1tJOTE1X01BWF9QSVBFU107CiAKIAlpbnQg ZHBpb19waHlfaW9zZl9wb3J0W0k5MTVfTlVNX1BIWVNfVkxWXTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NkY2xrLmMKaW5kZXggOWUwZGVlYmFlMjc5Li44MmU1YmM5NjdjY2EgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY2RjbGsuYwpAQCAtNDE3LDI0ICs0MTcsMjEgQEAgc3RhdGljIHZvaWQgaHN3 X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNkY2xrX3N0 YXRlLT5jZGNsayA9IDU0MDAwMDsKIH0KIAotc3RhdGljIGludCB2bHZfY2FsY19jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgIGludCBtYXhfcGl4Y2xrKQorc3Rh dGljIGludCB2bHZfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGludCBtaW5fY2RjbGspCiB7CiAJaW50IGZyZXFfMzIwID0gKGRldl9wcml2LT5ocGxsX2ZyZXEg PDwgIDEpICUgMzIwMDAwICE9IDAgPwogCQkzMzMzMzMgOiAzMjAwMDA7Ci0JaW50IGxpbWl0ID0g SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgPyA5NSA6IDkwOwogCiAJLyoKIAkgKiBXZSBzZWVtIHRv IGdldCBhbiB1bnN0YWJsZSBvciBzb2xpZCBjb2xvciBwaWN0dXJlIGF0IDIwME1Iei4KIAkgKiBO b3Qgc3VyZSB3aGF0J3Mgd3JvbmcuIEZvciBub3cgdXNlIDIwME1IeiBvbmx5IHdoZW4gYWxsIHBp cGVzCiAJICogYXJlIG9mZi4KIAkgKi8KLQlpZiAoIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYm Ci0JICAgIG1heF9waXhjbGsgPiBmcmVxXzMyMCpsaW1pdC8xMDApCisJaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpICYmIG1pbl9jZGNsayA+IGZyZXFfMzIwKQogCQlyZXR1cm4gNDAwMDAwOwot CWVsc2UgaWYgKG1heF9waXhjbGsgPiAyNjY2NjcqbGltaXQvMTAwKQorCWVsc2UgaWYgKG1pbl9j ZGNsayA+IDI2NjY2NykKIAkJcmV0dXJuIGZyZXFfMzIwOwotCWVsc2UgaWYgKG1heF9waXhjbGsg PiAwKQorCWVsc2UgaWYgKG1pbl9jZGNsayA+IDApCiAJCXJldHVybiAyNjY2Njc7CiAJZWxzZQog CQlyZXR1cm4gMjAwMDAwOwpAQCAtNjEyLDEzICs2MDksMTMgQEAgc3RhdGljIHZvaWQgY2h2X3Nl dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfZGlzcGxh eV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QSVBFX0EpOwogfQogCi1zdGF0aWMg aW50IGJkd19jYWxjX2NkY2xrKGludCBtYXhfcGl4Y2xrKQorc3RhdGljIGludCBiZHdfY2FsY19j ZGNsayhpbnQgbWluX2NkY2xrKQogewotCWlmIChtYXhfcGl4Y2xrID4gNTQwMDAwKQorCWlmICht aW5fY2RjbGsgPiA1NDAwMDApCiAJCXJldHVybiA2NzUwMDA7Ci0JZWxzZSBpZiAobWF4X3BpeGNs ayA+IDQ1MDAwMCkKKwllbHNlIGlmIChtaW5fY2RjbGsgPiA0NTAwMDApCiAJCXJldHVybiA1NDAw MDA7Ci0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDMzNzUwMCkKKwllbHNlIGlmIChtaW5fY2RjbGsg PiAzMzc1MDApCiAJCXJldHVybiA0NTAwMDA7CiAJZWxzZQogCQlyZXR1cm4gMzM3NTAwOwpAQCAt NzI0LDIzICs3MjEsMjMgQEAgc3RhdGljIHZvaWQgYmR3X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICAgICBjZGNsaywgZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrKTsKIH0KIAotc3RhdGljIGludCBza2xfY2FsY19jZGNsayhpbnQgbWF4X3BpeGNsaywgaW50 IHZjbykKK3N0YXRpYyBpbnQgc2tsX2NhbGNfY2RjbGsoaW50IG1pbl9jZGNsaywgaW50IHZjbykK IHsKIAlpZiAodmNvID09IDg2NDAwMDApIHsKLQkJaWYgKG1heF9waXhjbGsgPiA1NDAwMDApCisJ CWlmIChtaW5fY2RjbGsgPiA1NDAwMDApCiAJCQlyZXR1cm4gNjE3MTQzOwotCQllbHNlIGlmICht YXhfcGl4Y2xrID4gNDMyMDAwKQorCQllbHNlIGlmIChtaW5fY2RjbGsgPiA0MzIwMDApCiAJCQly ZXR1cm4gNTQwMDAwOwotCQllbHNlIGlmIChtYXhfcGl4Y2xrID4gMzA4NTcxKQorCQllbHNlIGlm IChtaW5fY2RjbGsgPiAzMDg1NzEpCiAJCQlyZXR1cm4gNDMyMDAwOwogCQllbHNlCiAJCQlyZXR1 cm4gMzA4NTcxOwogCX0gZWxzZSB7Ci0JCWlmIChtYXhfcGl4Y2xrID4gNTQwMDAwKQorCQlpZiAo bWluX2NkY2xrID4gNTQwMDAwKQogCQkJcmV0dXJuIDY3NTAwMDsKLQkJZWxzZSBpZiAobWF4X3Bp eGNsayA+IDQ1MDAwMCkKKwkJZWxzZSBpZiAobWluX2NkY2xrID4gNDUwMDAwKQogCQkJcmV0dXJu IDU0MDAwMDsKLQkJZWxzZSBpZiAobWF4X3BpeGNsayA+IDMzNzUwMCkKKwkJZWxzZSBpZiAobWlu X2NkY2xrID4gMzM3NTAwKQogCQkJcmV0dXJuIDQ1MDAwMDsKIAkJZWxzZQogCQkJcmV0dXJuIDMz NzUwMDsKQEAgLTEwNzUsMzEgKzEwNzIsMjUgQEAgdm9pZCBza2xfdW5pbml0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlza2xfc2V0X2NkY2xrKGRldl9wcml2LCAm Y2RjbGtfc3RhdGUpOwogfQogCi1zdGF0aWMgaW50IGJ4dF9jYWxjX2NkY2xrKGludCBtYXhfcGl4 Y2xrKQorc3RhdGljIGludCBieHRfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrKQogewotCWlmICht YXhfcGl4Y2xrID4gNTc2MDAwKQorCWlmIChtaW5fY2RjbGsgPiA1NzYwMDApCiAJCXJldHVybiA2 MjQwMDA7Ci0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDM4NDAwMCkKKwllbHNlIGlmIChtaW5fY2Rj bGsgPiAzODQwMDApCiAJCXJldHVybiA1NzYwMDA7Ci0JZWxzZSBpZiAobWF4X3BpeGNsayA+IDI4 ODAwMCkKKwllbHNlIGlmIChtaW5fY2RjbGsgPiAyODgwMDApCiAJCXJldHVybiAzODQwMDA7Ci0J ZWxzZSBpZiAobWF4X3BpeGNsayA+IDE0NDAwMCkKKwllbHNlIGlmIChtaW5fY2RjbGsgPiAxNDQw MDApCiAJCXJldHVybiAyODgwMDA7CiAJZWxzZQogCQlyZXR1cm4gMTQ0MDAwOwogfQogCi1zdGF0 aWMgaW50IGdsa19jYWxjX2NkY2xrKGludCBtYXhfcGl4Y2xrKQorc3RhdGljIGludCBnbGtfY2Fs Y19jZGNsayhpbnQgbWluX2NkY2xrKQogewotCS8qCi0JICogRklYTUU6IEF2b2lkIHVzaW5nIGEg cGl4ZWwgY2xvY2sgdGhhdCBpcyBtb3JlIHRoYW4gOTklIG9mIHRoZSBjZGNsawotCSAqIGFzIGEg dGVtcG9yYXJ5IHdvcmthcm91bmQuIFVzZSBhIGhpZ2hlciBjZGNsayBpbnN0ZWFkLiAoTm90ZSB0 aGF0Ci0JICogaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKCkgbGltaXRzIHRoZSBtYXggcGl4ZWwg Y2xvY2sgdG8gOTklIG9mIG1heAotCSAqIGNkY2xrLikKLQkgKi8KLQlpZiAobWF4X3BpeGNsayA+ IERJVl9ST1VORF9VUCgyICogMTU4NDAwICogOTksIDEwMCkpCisJaWYgKG1pbl9jZGNsayA+IDE1 ODQwMCkKIAkJcmV0dXJuIDMxNjgwMDsKLQllbHNlIGlmIChtYXhfcGl4Y2xrID4gRElWX1JPVU5E X1VQKDIgKiA3OTIwMCAqIDk5LCAxMDApKQorCWVsc2UgaWYgKG1pbl9jZGNsayA+IDc5MjAwKQog CQlyZXR1cm4gMTU4NDAwOwogCWVsc2UKIAkJcmV0dXJuIDc5MjAwOwpAQCAtMTQyMCwxMSArMTQx MSwxMSBAQCB2b2lkIGJ4dF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCWJ4dF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSk7CiB9CiAKLXN0 YXRpYyBpbnQgY25sX2NhbGNfY2RjbGsoaW50IG1heF9waXhjbGspCitzdGF0aWMgaW50IGNubF9j YWxjX2NkY2xrKGludCBtaW5fY2RjbGspCiB7Ci0JaWYgKG1heF9waXhjbGsgPiAzMzYwMDApCisJ aWYgKG1pbl9jZGNsayA+IDMzNjAwMCkKIAkJcmV0dXJuIDUyODAwMDsKLQllbHNlIGlmIChtYXhf cGl4Y2xrID4gMTY4MDAwKQorCWVsc2UgaWYgKG1pbl9jZGNsayA+IDE2ODAwMCkKIAkJcmV0dXJu IDMzNjAwMDsKIAllbHNlCiAJCXJldHVybiAxNjgwMDA7CkBAIC0xNzMyLDIxICsxNzIzLDQ3IEBA IHZvaWQgaW50ZWxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsoZGV2X3ByaXYsIGNkY2xrX3N0YXRlKTsKIH0K IAotc3RhdGljIGludCBiZHdfYWRqdXN0X21pbl9waXBlX3BpeGVsX3JhdGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkJCSAgaW50IHBpeGVsX3JhdGUpCitzdGF0aWMg aW50IGludGVsX21pbl9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJ CQkgICBpbnQgcGl4ZWxfcmF0ZSkKK3sKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkK KwkJcmV0dXJuIERJVl9ST1VORF9VUChwaXhlbF9yYXRlLCAyKTsKKwllbHNlIGlmIChJU19HRU1J TklMQUtFKGRldl9wcml2KSkKKwkJLyoKKwkJICogRklYTUU6IEF2b2lkIHVzaW5nIGEgcGl4ZWwg Y2xvY2sgdGhhdCBpcyBtb3JlIHRoYW4gOTklIG9mIHRoZSBjZGNsaworCQkgKiBhcyBhIHRlbXBv cmFyeSB3b3JrYXJvdW5kLiBVc2UgYSBoaWdoZXIgY2RjbGsgaW5zdGVhZC4gKE5vdGUgdGhhdAor CQkgKiBpbnRlbF9jb21wdXRlX21heF9kb3RjbGsoKSBsaW1pdHMgdGhlIG1heCBwaXhlbCBjbG9j ayB0byA5OSUgb2YgbWF4CisJCSAqIGNkY2xrLikKKwkJICovCisJCXJldHVybiBESVZfUk9VTkRf VVAocGl4ZWxfcmF0ZSAqIDEwMCwgMiAqIDk5KTsKKwllbHNlIGlmIChJU19HRU45KGRldl9wcml2 KSB8fAorCQkgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkK KwkJcmV0dXJuIHBpeGVsX3JhdGU7CisJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp CisJCXJldHVybiBESVZfUk9VTkRfVVAocGl4ZWxfcmF0ZSAqIDEwMCwgOTUpOworCWVsc2UKKwkJ cmV0dXJuIERJVl9ST1VORF9VUChwaXhlbF9yYXRlICogMTAwLCA5MCk7Cit9CisKK2ludCBpbnRl bF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CiAJCXRv X2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOworCWludCBtaW5fY2RjbGs7CisKKwlp ZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQlyZXR1cm4gMDsKKworCW1pbl9jZGNsayA9 IGludGVsX21pbl9jZGNsayhkZXZfcHJpdiwgY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSk7CiAKIAkv KiBwaXhlbCByYXRlIG11c3RuJ3QgZXhjZWVkIDk1JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcg Ki8KIAlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSAmJiBjcnRjX3N0YXRlLT5pcHNfZW5hYmxl ZCkKLQkJcGl4ZWxfcmF0ZSA9IERJVl9ST1VORF9VUChwaXhlbF9yYXRlICogMTAwLCA5NSk7CisJ CW1pbl9jZGNsayA9IERJVl9ST1VORF9VUChtaW5fY2RjbGsgKiAxMDAsIDk1KTsKIAogCS8qIEJT cGVjIHNheXMgIkRvIG5vdCB1c2UgRGlzcGxheVBvcnQgd2l0aCBDRENMSyBsZXNzIHRoYW4gNDMy IE1IeiwKIAkgKiBhdWRpbyBlbmFibGVkLCBwb3J0IHdpZHRoIHg0LCBhbmQgbGluayByYXRlIEhC UjIgKDUuNCBHSHopLCBvciBlbHNlCiAJICogdGhlcmUgbWF5IGJlIGF1ZGlvIGNvcnJ1cHRpb24g b3Igc2NyZWVuIGNvcnJ1cHRpb24uIiBUaGlzIGNkY2xrCi0JICogcmVzdHJpY3Rpb24gZm9yIEdM SyBpcyAzMTYuOCBNSHogYW5kIHNpbmNlIEdMSyBjYW4gb3V0cHV0IHR3bwotCSAqIHBpeGVscyBw ZXIgY2xvY2ssIHRoZSBwaXhlbCByYXRlIGJlY29tZXMgMiAqIDMxNi44IE1Iei4KKwkgKiByZXN0 cmljdGlvbiBmb3IgR0xLIGlzIDMxNi44IE1Iei4KIAkgKi8KIAlpZiAoaW50ZWxfY3J0Y19oYXNf ZHBfZW5jb2RlcihjcnRjX3N0YXRlKSAmJgogCSAgICBjcnRjX3N0YXRlLT5oYXNfYXVkaW8gJiYK QEAgLTE3NTQsNzcgKzE3NzEsNTMgQEAgc3RhdGljIGludCBiZHdfYWRqdXN0X21pbl9waXBlX3Bp eGVsX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICAgIGNydGNf c3RhdGUtPmxhbmVfY291bnQgPT0gNCkgewogCQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikg fHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKIAkJCS8qIERpc3BsYXkgV0EgIzExNDU6IGds ayxjbmwgKi8KLQkJCXBpeGVsX3JhdGUgPSBtYXgoMiAqIDMxNjgwMCwgcGl4ZWxfcmF0ZSk7CisJ CQltaW5fY2RjbGsgPSBtYXgoMzE2ODAwLCBtaW5fY2RjbGspOwogCQl9IGVsc2UgaWYgKElTX0dF TjkoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKIAkJCS8qIERpc3BsYXkg V0EgIzExNDQ6IHNrbCxieHQgKi8KLQkJCXBpeGVsX3JhdGUgPSBtYXgoNDMyMDAwLCBwaXhlbF9y YXRlKTsKKwkJCW1pbl9jZGNsayA9IG1heCg0MzIwMDAsIG1pbl9jZGNsayk7CiAJCX0KIAl9CiAK IAkvKiBBY2NvcmRpbmcgdG8gQlNwZWMsICJUaGUgQ0QgY2xvY2sgZnJlcXVlbmN5IG11c3QgYmUg YXQgbGVhc3QgdHdpY2UKIAkgKiB0aGUgZnJlcXVlbmN5IG9mIHRoZSBBemFsaWEgQkNMSy4iIGFu ZCBCQ0xLIGlzIDk2IE1IeiBieSBkZWZhdWx0LgotCSAqIFRoZSBjaGVjayBmb3IgR0xLIGhhcyB0 byBiZSBhZGp1c3RlZCBhcyB0aGUgcGxhdGZvcm0gY2FuIG91dHB1dAotCSAqIHR3byBwaXhlbHMg cGVyIGNsb2NrLgogCSAqLwotCWlmIChjcnRjX3N0YXRlLT5oYXNfYXVkaW8gJiYgSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KSB7Ci0JCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSB8fCBJU19H RU1JTklMQUtFKGRldl9wcml2KSkKLQkJCXBpeGVsX3JhdGUgPSBtYXgoMiAqIDIgKiA5NjAwMCwg cGl4ZWxfcmF0ZSk7Ci0JCWVsc2UKLQkJCXBpeGVsX3JhdGUgPSBtYXgoMiAqIDk2MDAwLCBwaXhl bF9yYXRlKTsKLQl9CisJaWYgKGNydGNfc3RhdGUtPmhhc19hdWRpbyAmJiBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpCisJCW1pbl9jZGNsayA9IG1heCgyICogOTYwMDAsIG1pbl9jZGNsayk7CiAK LQlyZXR1cm4gcGl4ZWxfcmF0ZTsKKwlyZXR1cm4gbWluX2NkY2xrOwogfQogCi0vKiBjb21wdXRl IHRoZSBtYXggcmF0ZSBmb3IgbmV3IGNvbmZpZ3VyYXRpb24gKi8KLXN0YXRpYyBpbnQgaW50ZWxf bWF4X3BpeGVsX3JhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQorc3RhdGljIGlu dCBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp CiB7CiAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoc3RhdGUtPmRldik7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3N0YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwogCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCXVuc2lnbmVkIGludCBtYXhfcGl4ZWxf cmF0ZSA9IDAsIGk7CisJaW50IG1pbl9jZGNsayA9IDAsIGk7CiAJZW51bSBwaXBlIHBpcGU7CiAK LQltZW1jcHkoaW50ZWxfc3RhdGUtPm1pbl9waXhjbGssIGRldl9wcml2LT5taW5fcGl4Y2xrLAot CSAgICAgICBzaXplb2YoaW50ZWxfc3RhdGUtPm1pbl9waXhjbGspKTsKLQotCWZvcl9lYWNoX25l d19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKLQkJaW50IHBpeGVsX3Jh dGU7CisJbWVtY3B5KGludGVsX3N0YXRlLT5taW5fY2RjbGssIGRldl9wcml2LT5taW5fY2RjbGss CisJICAgICAgIHNpemVvZihpbnRlbF9zdGF0ZS0+bWluX2NkY2xrKSk7CiAKLQkJY3J0Y19zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNl LmVuYWJsZSkgewotCQkJaW50ZWxfc3RhdGUtPm1pbl9waXhjbGtbaV0gPSAwOwotCQkJY29udGlu dWU7Ci0JCX0KLQotCQlwaXhlbF9yYXRlID0gY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKLQotCQlp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCi0J CQlwaXhlbF9yYXRlID0KLQkJCQliZHdfYWRqdXN0X21pbl9waXBlX3BpeGVsX3JhdGUoY3J0Y19z dGF0ZSwKLQkJCQkJCQkgICAgICAgcGl4ZWxfcmF0ZSk7Ci0KLQkJaW50ZWxfc3RhdGUtPm1pbl9w aXhjbGtbaV0gPSBwaXhlbF9yYXRlOwotCX0KKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9z dGF0ZShpbnRlbF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKKwkJaW50ZWxfc3RhdGUtPm1p bl9jZGNsa1tpXSA9CisJCQlpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrKGNydGNfc3RhdGUp OwogCiAJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKLQkJbWF4X3BpeGVsX3JhdGUgPSBt YXgoaW50ZWxfc3RhdGUtPm1pbl9waXhjbGtbcGlwZV0sCi0JCQkJICAgICBtYXhfcGl4ZWxfcmF0 ZSk7CisJCW1pbl9jZGNsayA9IG1heChpbnRlbF9zdGF0ZS0+bWluX2NkY2xrW3BpcGVdLCBtaW5f Y2RjbGspOwogCi0JcmV0dXJuIG1heF9waXhlbF9yYXRlOworCXJldHVybiBtaW5fY2RjbGs7CiB9 CiAKIHN0YXRpYyBpbnQgdmx2X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShzdGF0ZS0+ZGV2KTsKLQlpbnQgbWF4X3BpeGNsayA9IGludGVsX21heF9waXhlbF9yYXRl KHN0YXRlKTsKKwlpbnQgbWluX2NkY2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUp OwogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KIAkJdG9faW50ZWxf YXRvbWljX3N0YXRlKHN0YXRlKTsKIAlpbnQgY2RjbGs7CiAKLQljZGNsayA9IHZsdl9jYWxjX2Nk Y2xrKGRldl9wcml2LCBtYXhfcGl4Y2xrKTsKKwljZGNsayA9IHZsdl9jYWxjX2NkY2xrKGRldl9w cml2LCBtaW5fY2RjbGspOwogCiAJaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVx KSB7CiAJCURSTV9ERUJVR19LTVMoInJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1h eCAoJWQga0h6KVxuIiwKQEAgLTE4NTAsMTQgKzE4NDMsMTQgQEAgc3RhdGljIGludCBiZHdfbW9k ZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwogCXN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0 YXRlKHN0YXRlKTsKLQlpbnQgbWF4X3BpeGNsayA9IGludGVsX21heF9waXhlbF9yYXRlKHN0YXRl KTsKKwlpbnQgbWluX2NkY2xrID0gaW50ZWxfY29tcHV0ZV9taW5fY2RjbGsoc3RhdGUpOwogCWlu dCBjZGNsazsKIAogCS8qCiAJICogRklYTUUgc2hvdWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUg cmF0aW8KIAkgKiBvbmNlIDY0YnBwIHBpeGVsIGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KIAkgKi8K LQljZGNsayA9IGJkd19jYWxjX2NkY2xrKG1heF9waXhjbGspOworCWNkY2xrID0gYmR3X2NhbGNf Y2RjbGsobWluX2NkY2xrKTsKIAogCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJl cSkgewogCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtIeikgZXhjZWVkcyBt YXggKCVkIGtIeilcbiIsCkBAIC0xODgzLDcgKzE4NzYsNyBAQCBzdGF0aWMgaW50IHNrbF9tb2Rl c2V0X2NhbGNfY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRl KHN0YXRlKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0 YXRlLT5kZXYpOwotCWNvbnN0IGludCBtYXhfcGl4Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUo c3RhdGUpOworCWludCBtaW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdGF0ZSk7 CiAJaW50IGNkY2xrLCB2Y287CiAKIAl2Y28gPSBpbnRlbF9zdGF0ZS0+Y2RjbGsubG9naWNhbC52 Y287CkBAIC0xODk0LDcgKzE4ODcsNyBAQCBzdGF0aWMgaW50IHNrbF9tb2Rlc2V0X2NhbGNfY2Rj bGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCSAqIEZJWE1FIHNob3VsZCBhbHNv IGFjY291bnQgZm9yIHBsYW5lIHJhdGlvCiAJICogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFy ZSBzdXBwb3J0ZWQuCiAJICovCi0JY2RjbGsgPSBza2xfY2FsY19jZGNsayhtYXhfcGl4Y2xrLCB2 Y28pOworCWNkY2xrID0gc2tsX2NhbGNfY2RjbGsobWluX2NkY2xrLCB2Y28pOwogCiAJaWYgKGNk Y2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7CiAJCURSTV9ERUJVR19LTVMoInJlcXVl c3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1heCAoJWQga0h6KVxuIiwKQEAgLTE5MjEsMTYg KzE5MTQsMTYgQEAgc3RhdGljIGludCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKLQlpbnQgbWF4X3BpeGNsayA9IGlu dGVsX21heF9waXhlbF9yYXRlKHN0YXRlKTsKKwlpbnQgbWluX2NkY2xrID0gaW50ZWxfY29tcHV0 ZV9taW5fY2RjbGsoc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0 YXRlID0KIAkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKIAlpbnQgY2RjbGssIHZjbzsK IAogCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewotCQljZGNsayA9IGdsa19jYWxjX2Nk Y2xrKG1heF9waXhjbGspOworCQljZGNsayA9IGdsa19jYWxjX2NkY2xrKG1pbl9jZGNsayk7CiAJ CXZjbyA9IGdsa19kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7CiAJfSBlbHNlIHsKLQkJY2Rj bGsgPSBieHRfY2FsY19jZGNsayhtYXhfcGl4Y2xrKTsKKwkJY2RjbGsgPSBieHRfY2FsY19jZGNs ayhtaW5fY2RjbGspOwogCQl2Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwog CX0KIApAQCAtMTk2NywxMCArMTk2MCwxMCBAQCBzdGF0aWMgaW50IGNubF9tb2Rlc2V0X2NhbGNf Y2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7CiAJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQogCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUp OwotCWludCBtYXhfcGl4Y2xrID0gaW50ZWxfbWF4X3BpeGVsX3JhdGUoc3RhdGUpOworCWludCBt aW5fY2RjbGsgPSBpbnRlbF9jb21wdXRlX21pbl9jZGNsayhzdGF0ZSk7CiAJaW50IGNkY2xrLCB2 Y287CiAKLQljZGNsayA9IGNubF9jYWxjX2NkY2xrKG1heF9waXhjbGspOworCWNkY2xrID0gY25s X2NhbGNfY2RjbGsobWluX2NkY2xrKTsKIAl2Y28gPSBjbmxfY2RjbGtfcGxsX3ZjbyhkZXZfcHJp diwgY2RjbGspOwogCiAJaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxKSB7CkBA IC0yMDA1LDExICsxOTk4LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAllbHNlIGlmIChJU19HRU1JTklM QUtFKGRldl9wcml2KSkKIAkJLyoKIAkJICogRklYTUU6IExpbWl0aW5nIHRvIDk5JSBhcyBhIHRl bXBvcmFyeSB3b3JrYXJvdW5kLiBTZWUKLQkJICogZ2xrX2NhbGNfY2RjbGsoKSBmb3IgZGV0YWls cy4KKwkJICogaW50ZWxfbWluX2NkY2xrKCkgZm9yIGRldGFpbHMuCiAJCSAqLwogCQlyZXR1cm4g MiAqIG1heF9jZGNsa19mcmVxICogOTkgLyAxMDA7Ci0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSA5IHx8Ci0JCSBJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdF TEwoZGV2X3ByaXYpKQorCWVsc2UgaWYgKElTX0dFTjkoZGV2X3ByaXYpIHx8CisJCSBJU19CUk9B RFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKQogCQlyZXR1cm4gbWF4X2Nk Y2xrX2ZyZXE7CiAJZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCXJldHVybiBt YXhfY2RjbGtfZnJlcSo5NS8xMDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5k ZXggMjE0NGFkYzViMWQ1Li5iNDc1MzVmNWQ5NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKQEAgLTU5MjAsNyArNTkyMCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlz YWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaW50ZWxfY3J0Yy0+ZW5hYmxl ZF9wb3dlcl9kb21haW5zID0gMDsKIAogCWRldl9wcml2LT5hY3RpdmVfY3J0Y3MgJj0gfigxIDw8 IGludGVsX2NydGMtPnBpcGUpOwotCWRldl9wcml2LT5taW5fcGl4Y2xrW2ludGVsX2NydGMtPnBp cGVdID0gMDsKKwlkZXZfcHJpdi0+bWluX2NkY2xrW2ludGVsX2NydGMtPnBpcGVdID0gMDsKIH0K IAogLyoKQEAgLTEzMjkyLDggKzEzMjkyLDggQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaW50ZWxfYXRvbWljX3RyYWNrX2ZicyhzdGF0 ZSk7CiAKIAlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpIHsKLQkJbWVtY3B5KGRldl9wcml2LT5t aW5fcGl4Y2xrLCBpbnRlbF9zdGF0ZS0+bWluX3BpeGNsaywKLQkJICAgICAgIHNpemVvZihpbnRl bF9zdGF0ZS0+bWluX3BpeGNsaykpOworCQltZW1jcHkoZGV2X3ByaXYtPm1pbl9jZGNsaywgaW50 ZWxfc3RhdGUtPm1pbl9jZGNsaywKKwkJICAgICAgIHNpemVvZihpbnRlbF9zdGF0ZS0+bWluX2Nk Y2xrKSk7CiAJCWRldl9wcml2LT5hY3RpdmVfY3J0Y3MgPSBpbnRlbF9zdGF0ZS0+YWN0aXZlX2Ny dGNzOwogCQlkZXZfcHJpdi0+Y2RjbGsubG9naWNhbCA9IGludGVsX3N0YXRlLT5jZGNsay5sb2dp Y2FsOwogCQlkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsID0gaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVh bDsKQEAgLTE1NTY5LDcgKzE1NTY5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFk b3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZm9yX2VhY2hfaW50ZWxfY3J0 YyhkZXYsIGNydGMpIHsKIAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQog CQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKLQkJaW50IHBpeGNsayA9 IDA7CisJCWludCBtaW5fY2RjbGsgPSAwOwogCiAJCW1lbXNldCgmY3J0Yy0+YmFzZS5tb2RlLCAw LCBzaXplb2YoY3J0Yy0+YmFzZS5tb2RlKSk7CiAJCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkgewpAQCAtMTU1OTAsMjIgKzE1NTkwLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRf cmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJCQlpbnRlbF9jcnRj X2NvbXB1dGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRlKTsKIAotCQkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8Ci0JCQkgICAgSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCQkJcGl4Y2xrID0g Y3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKLQkJCWVsc2UKLQkJCQlXQVJOX09OKGRldl9wcml2LT5k aXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayk7Ci0KLQkJCS8qIHBpeGVsIHJhdGUgbXVzdG4ndCBl eGNlZWQgOTUlIG9mIGNkY2xrIHdpdGggSVBTIG9uIEJEVyAqLwotCQkJaWYgKElTX0JST0FEV0VM TChkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCi0JCQkJcGl4Y2xrID0gRElW X1JPVU5EX1VQKHBpeGNsayAqIDEwMCwgOTUpOworCQkJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1v ZGVzZXRfY2FsY19jZGNsaykKKwkJCQltaW5fY2RjbGsgPSBpbnRlbF9jcnRjX2NvbXB1dGVfbWlu X2NkY2xrKGNydGNfc3RhdGUpOwogCiAJCQlkcm1fY2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRz KCZjcnRjLT5iYXNlLAogCQkJCQkJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpOwog CQkJdXBkYXRlX3NjYW5saW5lX29mZnNldChjcnRjKTsKIAkJfQogCi0JCWRldl9wcml2LT5taW5f cGl4Y2xrW2NydGMtPnBpcGVdID0gcGl4Y2xrOworCQlkZXZfcHJpdi0+bWluX2NkY2xrW2NydGMt PnBpcGVdID0gbWluX2NkY2xrOwogCiAJCWludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9jaGVjayhk ZXZfcHJpdiwgY3J0Y19zdGF0ZSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBk MTdhMzI0MzdmMDcuLjhjYzFiODZiNzk5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAg LTM4Myw3ICszODMsOCBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKIAl1bnNpZ25lZCBp bnQgYWN0aXZlX3BpcGVfY2hhbmdlczsKIAogCXVuc2lnbmVkIGludCBhY3RpdmVfY3J0Y3M7Ci0J dW5zaWduZWQgaW50IG1pbl9waXhjbGtbSTkxNV9NQVhfUElQRVNdOworCS8qIG1pbmltdW0gYWNj ZXB0YWJsZSBjZGNsayBmb3IgZWFjaCBwaXBlICovCisJaW50IG1pbl9jZGNsa1tJOTE1X01BWF9Q SVBFU107CiAKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfc3RhdGUgc2hhcmVkX2RwbGxbSTkx NV9OVU1fUExMU107CiAKQEAgLTEzMDgsNiArMTMwOSw3IEBAIHZvaWQgaW50ZWxfYXVkaW9faW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9hdWRpb19k ZWluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAogLyogaW50ZWxfY2Rj bGsuYyAqLworaW50IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2RjbGsoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogdm9pZCBza2xfaW5pdF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBza2xfdW5pbml0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGNubF9pbml0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci0tIAoyLjEzLjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=