From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 07/12] drm/i915: Move DP link retraining into intel_dp_detect() Date: Thu, 28 Jul 2016 17:50:43 +0300 Message-ID: <1469717448-4297-8-git-send-email-ville.syrjala@linux.intel.com> References: <1469717448-4297-1-git-send-email-ville.syrjala@linux.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 ESMTP id DEB6F6E127 for ; Thu, 28 Jul 2016 14:51:15 +0000 (UTC) In-Reply-To: <1469717448-4297-1-git-send-email-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: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkRQ IGxpbmsgcmV0cmFpbmluZyBuZWVkcyB0byBncmFiIHNvbWUgbW9kZXNldCBsb2NrcyB0byBub3Qg cmFjZSB3aXRoCm1vZGVzZXRzLCBzbyB3ZSBjYW4ndCByZWFsbHkgZG8gaXQgc2FmZWx5IGZyb20g dGhlIGhwZF9wdWxzZSwgbGVzdCB3ZQpyaXNrIGRlYWRsb2NraW5nIGR1ZSB0byBNU1Qgc2lkZWJh bmQgc3R1ZmYuCgpNb3ZlIHRoZSBsaW5rIHJldHJhaW5pbmcgdG8gaGFwcGVuIGZyb20gdGhlIGhv dHBsdWcgd29yayBpbnN0ZWFkLgpEb2luZyBhdCB0aGUgZW5kIG9mIGludGVsX2RwX2RldGVjdCgp IHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIGluIGNhc2UKdGhlIHNpbmsgYWxyZWFkeSBnb3QgZGlz Y29ubmVjdGVkLCBpbiB3aGljaCBjYXNlIHJldHJhaW5pbmcgaXMKcG9pbnRsZXNzLgoKVG8gZGV0 ZXJtaW5lIGlmIHdlIG5lZWQgdG8gc2NoZWR1bGUgdGhlIGhvdHBsdWcgd29yaywgd2UnbGwganVz dCBjaGVjawp0aGUgc2luayBsYW5lIHN0YXR1cyB3aXRob3V0IGxvY2tzIGZyb20gaHBkX3B1bHNl LiBBIGxpdHRsZSByYWN5CnN0aWxsIGVnLiBkdWUgdG8gdXNlaW5nIGludGVsX2RwLT5sYW5lX2Nv dW50LCBidXQgbm8gbGVzcyByYWN5IHRoYW4Kd2hhdCB3ZSBhbHJlYWR5IGhhZC4gV2UnbGwgcmVw ZWF0IHRoZSBjaGVjayBpbiBmcm9tIGludGVsX2RwX2RldGVjdCgpCndpdGggcHJvcGVyIGxvY2tp bmcsIHdoZXJlIHdlJ2xsIGFsc28gY2hlY2sgaWYgdGhlIGxpbmsgYXMgYWN0dWFsbHkKYWN0aXZl IG9yIG5vdC4KCkNjOiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZh bi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+CkNjOiBKaW0gQnJpZGUgPGppbS5icmlkZUBsaW51eC5p bnRlbC5jb20+CkNjOiBNYW5hc2kgRCBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+ CkNjOiBEdXJnYWRvc3MgUiA8ZHVyZ2Fkb3NzLnJAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCAxNTQgKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDg4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IDRhNDE4NGMyMTk4OS4uNjc1 YjgzZjU3YTA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTM4NDIsMTUgKzM4NDIsNiBA QCBpbnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJ CWJyZXQgPSBpbnRlbF9kcF9nZXRfc2lua19pcnFfZXNpKGludGVsX2RwLCBlc2kpOwogZ29fYWdh aW46CiAJCWlmIChicmV0ID09IHRydWUpIHsKLQotCQkJLyogY2hlY2sgbGluayBzdGF0dXMgLSBl c2lbMTBdID0gMHgyMDBjICovCi0JCQlpZiAoaW50ZWxfZHAtPmFjdGl2ZV9zdHJlYW1zICYmCi0J CQkgICAgIWRybV9kcF9jaGFubmVsX2VxX29rKCZlc2lbMTBdLCBpbnRlbF9kcC0+bGFuZV9jb3Vu dCkpIHsKLQkJCQlEUk1fREVCVUdfS01TKCJjaGFubmVsIEVRIG5vdCBvaywgcmV0cmFpbmluZ1xu Iik7Ci0JCQkJaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCk7Ci0JCQkJaW50ZWxf ZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKLQkJCX0KLQogCQkJRFJNX0RFQlVHX0tNUygi Z290IGVzaSAlM3BoXG4iLCBlc2kpOwogCQkJcmV0ID0gZHJtX2RwX21zdF9ocGRfaXJxKCZpbnRl bF9kcC0+bXN0X21nciwgZXNpLCAmaGFuZGxlZCk7CiAKQEAgLTM4ODYsMzQgKzM4NzcsNDIgQEAg Z29fYWdhaW46CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyB2b2lkCi1pbnRlbF9kcF9j aGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQorc3RhdGljIGJvb2wK K2ludGVsX2RwX2xpbmtfbmVlZHNfcmV0cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQog ewotCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKS0+YmFzZTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9f ZGV2KGludGVsX2RwKTsKIAl1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKIAot CVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0 aW9uX211dGV4KSk7CisJaWYgKGludGVsX2RwLT5hY3RpdmVfc3RyZWFtcyA9PSAwKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlpZiAoaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlID09IERQX1RF U1RfTElOS19UUkFJTklORykKKwkJcmV0dXJuIHRydWU7CiAKIAlpZiAoIWludGVsX2RwX2dldF9s aW5rX3N0YXR1cyhpbnRlbF9kcCwgbGlua19zdGF0dXMpKSB7CiAJCURSTV9FUlJPUigiRmFpbGVk IHRvIGdldCBsaW5rIHN0YXR1c1xuIik7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0K IAotCWlmICghaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjKQotCQlyZXR1cm47CisJcmV0dXJuICFk cm1fZHBfY2hhbm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpOwor fQogCi0JaWYgKCF0b19pbnRlbF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0YyktPmFjdGl2 ZSkKLQkJcmV0dXJuOworc3RhdGljIHZvaWQKK2ludGVsX2RwX2xpbmtfcmV0cmFpbihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQoreworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0g JmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKKworCWRybV9tb2Rlc2V0X2xvY2soJmRldi0+ bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgTlVMTCk7CiAKLQkvKiBpZiBsaW5rIHRyYWlu aW5nIGlzIHJlcXVlc3RlZCB3ZSBzaG91bGQgcGVyZm9ybSBpdCBhbHdheXMgKi8KLQlpZiAoKGlu dGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfdHlwZSA9PSBEUF9URVNUX0xJTktfVFJBSU5JTkcpIHx8 Ci0JICAgICghZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsIGludGVsX2RwLT5sYW5l X2NvdW50KSkpIHsKKwlpZiAoaW50ZWxfZHBfbGlua19uZWVkc19yZXRyYWluKGludGVsX2RwKSkg ewogCQlEUk1fREVCVUdfS01TKCIlczogY2hhbm5lbCBFUSBub3Qgb2ssIHJldHJhaW5pbmdcbiIs Ci0JCQkgICAgICBpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUpOworCQkJICAgICAgZW5jb2Rlci0+ YmFzZS5uYW1lKTsKKwogCQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKIAkJ aW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKIAl9CisKKwlkcm1fbW9kZXNldF91 bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7CiB9CiAKIC8qCkBAIC0z OTMyLDcgKzM5MzEsNiBAQCBpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQogc3RhdGljIGJvb2wKIGludGVsX2RwX3Nob3J0X3B1bHNlKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Rw X3RvX2RldihpbnRlbF9kcCk7CiAJdTggc2lua19pcnFfdmVjdG9yOwogCXU4IG9sZF9zaW5rX2Nv dW50ID0gaW50ZWxfZHAtPnNpbmtfY291bnQ7CiAJYm9vbCByZXQ7CkBAIC0zOTcyLDEwICszOTcw LDYgQEAgaW50ZWxfZHBfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkJ CURSTV9ERUJVR19EUklWRVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxIHVuaGFuZGxlZFxuIik7 CiAJfQogCi0JZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4LCBOVUxMKTsKLQlpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Ci0JZHJt X21vZGVzZXRfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwotCiAJ cmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5ODYsNiArMzk4MCw4IEBAIGludGVsX2RwX2RldGVjdF9k cGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJdWludDhfdCAqZHBjZCA9IGludGVsX2Rw LT5kcGNkOwogCXVpbnQ4X3QgdHlwZTsKIAorCVdBUk5fT04oaXNfZWRwKGludGVsX2RwKSk7CisK IAlpZiAoIWludGVsX2RwX2dldF9kcGNkKGludGVsX2RwKSkKIAkJcmV0dXJuIGNvbm5lY3Rvcl9z dGF0dXNfZGlzY29ubmVjdGVkOwogCkBAIC00MjE4LDcgKzQyMTQsNyBAQCBpbnRlbF9kcF91bnNl dF9lZGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJaW50ZWxfZHAtPmhhc19hdWRpbyA9 IGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0 dXMKIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQogewogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29u bmVjdG9yLT5iYXNlOwpAQCAtNDI3MywxOCArNDI2OSwxMiBAQCBpbnRlbF9kcF9sb25nX3B1bHNl KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIAkJICovCiAJCXN0YXR1 cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwogCQlnb3RvIG91dDsKLQl9IGVsc2Ug aWYgKGNvbm5lY3Rvci0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSB7Ci0J CS8qCi0JCSAqIElmIGRpc3BsYXkgd2FzIGNvbm5lY3RlZCBhbHJlYWR5IGFuZCBpcyBzdGlsbCBj b25uZWN0ZWQKLQkJICogY2hlY2sgbGlua3Mgc3RhdHVzLCB0aGVyZSBoYXMgYmVlbiBrbm93biBp c3N1ZXMgb2YKLQkJICogbGluayBsb3NzIHRyaWdnZXJyaW5nIGxvbmcgcHVsc2UhISEhCi0JCSAq LwotCQlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgs IE5VTEwpOwotCQlpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Ci0JCWRybV9t b2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKLQkJZ290 byBvdXQ7CiAJfQogCisJLyogY29ubmVjdGVkLT5jb25uZWN0ZWQsIG5vdGhpbmcgdG8gZG8gKi8K KwlpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCisJ CWdvdG8gb3V0OworCiAJLyoKIAkgKiBDbGVhcmluZyBOQUNLIGFuZCBkZWZlciBjb3VudHMgdG8g Z2V0IHRoZWlyIGV4YWN0IHZhbHVlcwogCSAqIHdoaWxlIHJlYWRpbmcgRURJRCB3aGljaCBhcmUg cmVxdWlyZWQgYnkgQ29tcGxpYW5jZSB0ZXN0cwpAQCAtNDI5Niw3ICs0Mjg2LDYgQEAgaW50ZWxf ZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCiAJ aW50ZWxfZHBfc2V0X2VkaWQoaW50ZWxfZHApOwogCiAJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQ7Ci0JaW50ZWxfZHAtPmRldGVjdF9kb25lID0gdHJ1ZTsKIAogCS8qIFRyeSB0 byByZWFkIHRoZSBzb3VyY2Ugb2YgdGhlIGludGVycnVwdCAqLwogCWlmIChpbnRlbF9kcC0+ZHBj ZFtEUF9EUENEX1JFVl0gPj0gMHgxMSAmJgpAQCAtNDMxMyw0MyArNDMwMiwzMCBAQCBpbnRlbF9k cF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIAl9 CiAKIG91dDoKLQlpZiAoKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYK LQkgICAgKGludGVsX2RwLT5pc19tc3QgPT0gZmFsc2UpKQorCWlmIChzdGF0dXMgIT0gY29ubmVj dG9yX3N0YXR1c19jb25uZWN0ZWQpCiAJCWludGVsX2RwX3Vuc2V0X2VkaWQoaW50ZWxfZHApOwog CiAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwot CXJldHVybjsKKworCXJldHVybiBzdGF0dXM7CiB9CiAKIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0 b3Jfc3RhdHVzCiBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgYm9vbCBmb3JjZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gaW50ZWxfYXR0 YWNoZWRfZHAoY29ubmVjdG9yKTsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKLQlzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKIAlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9y KTsKKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1czsKIAogCURSTV9ERUJVR19LTVMo IltDT05ORUNUT1I6JWQ6JXNdXG4iLAogCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5l Y3Rvci0+bmFtZSk7CiAKLQlpZiAoaW50ZWxfZHAtPmlzX21zdCkgewotCQkvKiBNU1QgZGV2aWNl cyBhcmUgZGlzY29ubmVjdGVkIGZyb20gYSBtb25pdG9yIFBPViAqLwotCQlpbnRlbF9kcF91bnNl dF9lZGlkKGludGVsX2RwKTsKLQkJaWYgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VU UFVUX0VEUCkKLQkJCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRFA7Ci0JCXJl dHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKLQl9Ci0KLQkvKiBJZiBmdWxsIGRl dGVjdCBpcyBub3QgcGVyZm9ybWVkIHlldCwgZG8gYSBmdWxsIGRldGVjdCAqLwotCWlmICghaW50 ZWxfZHAtPmRldGVjdF9kb25lKQotCQlpbnRlbF9kcF9sb25nX3B1bHNlKGludGVsX2RwLT5hdHRh Y2hlZF9jb25uZWN0b3IpOworCXN0YXR1cyA9IGludGVsX2RwX2xvbmdfcHVsc2UoaW50ZWxfY29u bmVjdG9yKTsKIAotCWludGVsX2RwLT5kZXRlY3RfZG9uZSA9IGZhbHNlOworCWlmIChzdGF0dXMg PT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgfHwgaW50ZWxfZHAtPmlzX21zdCkKKwkJaW50 ZWxfZHBfbGlua19yZXRyYWluKGludGVsX2RwKTsKIAotCWlmIChpc19lZHAoaW50ZWxfZHApIHx8 IGludGVsX2Nvbm5lY3Rvci0+ZGV0ZWN0X2VkaWQpCi0JCXJldHVybiBjb25uZWN0b3Jfc3RhdHVz X2Nvbm5lY3RlZDsKLQllbHNlCi0JCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3Rl ZDsKKwlyZXR1cm4gc3RhdHVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDcwNiwzOSArNDY4Miw0 MSBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsIGJvb2wgbG9uZ19ocGQpCiAJCSAgICAgIHBvcnRfbmFtZShpbnRlbF9kaWdfcG9y dC0+cG9ydCksCiAJCSAgICAgIGxvbmdfaHBkID8gImxvbmciIDogInNob3J0Iik7CiAKKwlpZiAo bG9uZ19ocGQpCisJCXJldHVybiBJUlFfTk9ORTsKKwogCXBvd2VyX2RvbWFpbiA9IGludGVsX2Rp c3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKGludGVsX2VuY29kZXIpOwogCWludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwogCi0JaWYgKGxvbmdfaHBkKSB7 Ci0JCWludGVsX2RwX2xvbmdfcHVsc2UoaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Ci0J CWlmIChpbnRlbF9kcC0+aXNfbXN0KQotCQkJcmV0ID0gSVJRX0hBTkRMRUQ7Ci0JCWdvdG8gcHV0 X3Bvd2VyOwotCi0JfSBlbHNlIHsKLQkJaWYgKGludGVsX2RwLT5pc19tc3QpIHsKLQkJCWlmIChp bnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKGludGVsX2RwKSA9PSAtRUlOVkFMKSB7Ci0JCQkJLyoK LQkJCQkgKiBJZiB3ZSB3ZXJlIGluIE1TVCBtb2RlLCBhbmQgZGV2aWNlIGlzIG5vdAotCQkJCSAq IHRoZXJlLCBnZXQgb3V0IG9mIE1TVCBtb2RlCi0JCQkJICovCi0JCQkJRFJNX0RFQlVHX0tNUygi TVNUIGRldmljZSBtYXkgaGF2ZSBkaXNhcHBlYXJlZCAlZCB2cyAlZFxuIiwKLQkJCQkJICAgICAg aW50ZWxfZHAtPmlzX21zdCwgaW50ZWxfZHAtPm1zdF9tZ3IubXN0X3N0YXRlKTsKLQkJCQlpbnRl bF9kcC0+aXNfbXN0ID0gZmFsc2U7Ci0JCQkJZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21z dCgmaW50ZWxfZHAtPm1zdF9tZ3IsCi0JCQkJCQkJCWludGVsX2RwLT5pc19tc3QpOwotCQkJCWdv dG8gcHV0X3Bvd2VyOwotCQkJfQotCQl9Ci0KLQkJaWYgKCFpbnRlbF9kcC0+aXNfbXN0KSB7Ci0J CQlpZiAoIWludGVsX2RwX3Nob3J0X3B1bHNlKGludGVsX2RwKSkgewotCQkJCWludGVsX2RwX2xv bmdfcHVsc2UoaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Ci0JCQkJZ290byBwdXRfcG93 ZXI7Ci0JCQl9CisJaWYgKGludGVsX2RwLT5pc19tc3QpIHsKKwkJaWYgKGludGVsX2RwX2NoZWNr X21zdF9zdGF0dXMoaW50ZWxfZHApID09IC1FSU5WQUwpIHsKKwkJCS8qCisJCQkgKiBJZiB3ZSB3 ZXJlIGluIE1TVCBtb2RlLCBhbmQgZGV2aWNlIGlzIG5vdAorCQkJICogdGhlcmUsIGdldCBvdXQg b2YgTVNUIG1vZGUKKwkJCSAqLworCQkJRFJNX0RFQlVHX0tNUygiTVNUIGRldmljZSBtYXkgaGF2 ZSBkaXNhcHBlYXJlZCAlZCB2cyAlZFxuIiwKKwkJCQkgICAgICBpbnRlbF9kcC0+aXNfbXN0LCBp bnRlbF9kcC0+bXN0X21nci5tc3Rfc3RhdGUpOworCQkJaW50ZWxfZHAtPmlzX21zdCA9IGZhbHNl OworCQkJZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21zdCgmaW50ZWxfZHAtPm1zdF9tZ3Is CisJCQkJCQkJaW50ZWxfZHAtPmlzX21zdCk7CisJCQlnb3RvIHB1dF9wb3dlcjsKIAkJfQorCX0g ZWxzZSB7CisJCWlmICghaW50ZWxfZHBfc2hvcnRfcHVsc2UoaW50ZWxfZHApKQorCQkJZ290byBw dXRfcG93ZXI7CiAJfQogCisJLyoKKwkgKiBMaW5rIHJldHJhaW5pbmcgaGFwcGVucyBmcm9tIHRo ZSBob3RwbHVnIHdvcmssCisJICogY2hlY2sgaWYgd2UgbWlnaHQgbmVlZCB0byBzY2hkdWxlIGl0 LgorCSAqCisJICogVGhlcmUgaGFzIGJlZW4ga25vd24gaXNzdWVzIG9mIGxpbmsgbG9zcworCSAq IHRyaWdnZXJyaW5nIGxvbmcgcHVsc2UsIHNvIGxldCdzIGNoZWNrIGJvdGgKKwkgKiBmb3Igc2hv cnQgYW5kIGxvbmcgcHVsc2UuCisJICovCisJaWYgKGludGVsX2RwX2xpbmtfbmVlZHNfcmV0cmFp bihpbnRlbF9kcCkpCisJCWdvdG8gcHV0X3Bvd2VyOworCiAJcmV0ID0gSVJRX0hBTkRMRUQ7CiAK IHB1dF9wb3dlcjoKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK