From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: [PATCH v2] drm/edid: index CEA/HDMI mode tables using the VIC Date: Fri, 8 Jan 2016 13:21:51 +0200 Message-ID: <1452252111-6439-1-git-send-email-jani.nikula@intel.com> References: <1448983014-26551-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 735AA6E764 for ; Fri, 8 Jan 2016 03:22:35 -0800 (PST) In-Reply-To: <1448983014-26551-1-git-send-email-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QWRkIGEgZHVtbXkgZW50cnkgdG8gQ0VBL0hETUkgbW9kZSB0YWJsZXMgc28gdGhleSBjYW4gYmUg aW5kZXhlZApkaXJlY3RseSB1c2luZyB0aGUgVklDLCBhdm9pZGluZyBhICsxLy0xIGRhbmNlIGhl cmUgYW5kIHRoZXJlLiBUaGlzIGFkZHMKY2xhcml0eSB0byB0aGUgZXJyb3IgY2hlY2tpbmcgZm9y IHZhcmlvdXMgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHRoZSBWSUMKb24gc3VjY2VzcyBhbmQgemVy byBvbiBmYWlsdXJlOyB3ZSBjYW4gbm93IGV4cGxpY2l0bHkgY2hlY2sgZm9yIDAKaW5zdGVhZCBv ZiBqdXN0IHN1YnRyYWN0aW5nIG9uZSBmcm9tIGFuIHVuc2lnbmVkIHR5cGUuCgpBbHNvIGFkZCBk cm1fdmFsaWRfY2VhX3ZpYygpIGFuZCBkcm1fdmFsaWRfaGRtaV92aWMoKSBoZWxwZXJzIGZvcgpj aGVja2luZyB2YWxpZCBWSUNzLgoKdjI6IGFkZCBkcm1fdmFsaWRfY2VhX3ZpYyBhbmQgZHJtX3Zh bGlkX2hkbWlfdmljIGhlbHBlcnMgKFZpbGxlKQogICAgdXNlIHsgfSBpbnN0ZWFkIG9mIHsgMCB9 IGZvciBpbml0aWFsaXppbmcgdGhlIGR1bW15IG1vZGVzCgpDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVy LmRldWNoZXJAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxh QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyB8IDk0ICsrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 MyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2VkaWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCmluZGV4IGMyMTRm MTI0NmNiNC4uMDRjYjQ4NzdmYWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Vk aWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwpAQCAtNjM3LDggKzYzNywxMiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pbmltb2RlIGV4dHJhX21vZGVzW10gPSB7CiAvKgogICog UHJvYmFibHkgdGFrZW4gZnJvbSBDRUEtODYxIHNwZWMuCiAgKiBUaGlzIHRhYmxlIGlzIGNvbnZl cnRlZCBmcm9tIHhvcmcncyBody94ZnJlZTg2L21vZGVzL3hmODZFZGlkTW9kZXMuYy4KKyAqCisg KiBJbmRleCB1c2luZyB0aGUgVklDLgogICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgZWRpZF9jZWFfbW9kZXNbXSA9IHsKKwkvKiAwIC0gZHVtbXksIFZJQ3Mgc3RhcnQg YXQgMSAqLworCXsgfSwKIAkvKiAxIC0gNjQweDQ4MEA2MEh6ICovCiAJeyBEUk1fTU9ERSgiNjQw eDQ4MCIsIERSTV9NT0RFX1RZUEVfRFJJVkVSLCAyNTE3NSwgNjQwLCA2NTYsCiAJCSAgIDc1Miwg ODAwLCAwLCA0ODAsIDQ5MCwgNDkyLCA1MjUsIDAsCkBAIC05ODcsOSArOTkxLDExIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBlZGlkX2NlYV9tb2Rlc1tdID0gewogfTsK IAogLyoKLSAqIEhETUkgMS40IDRrIG1vZGVzLgorICogSERNSSAxLjQgNGsgbW9kZXMuIEluZGV4 IHVzaW5nIHRoZSBWSUMuCiAgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSBlZGlkXzRrX21vZGVzW10gPSB7CisJLyogMCAtIGR1bW15LCBWSUNzIHN0YXJ0IGF0IDEgKi8K Kwl7IH0sCiAJLyogMSAtIDM4NDB4MjE2MEAzMEh6ICovCiAJeyBEUk1fTU9ERSgiMzg0MHgyMTYw IiwgRFJNX01PREVfVFlQRV9EUklWRVIsIDI5NzAwMCwKIAkJICAgMzg0MCwgNDAxNiwgNDEwNCwg NDQwMCwgMCwKQEAgLTI1NDgsMTMgKzI1NTQsMTMgQEAgY2VhX21vZGVfYWx0ZXJuYXRlX2Nsb2Nr KGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpjZWFfbW9kZSkKIHN0YXRpYyB1OCBkcm1f bWF0Y2hfY2VhX21vZGVfY2xvY2tfdG9sZXJhbmNlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICp0b19tYXRjaCwKIAkJCQkJICAgICB1bnNpZ25lZCBpbnQgY2xvY2tfdG9sZXJhbmNlKQog ewotCXU4IG1vZGU7CisJdTggdmljOwogCiAJaWYgKCF0b19tYXRjaC0+Y2xvY2spCiAJCXJldHVy biAwOwogCi0JZm9yIChtb2RlID0gMDsgbW9kZSA8IEFSUkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMp OyBtb2RlKyspIHsKLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmNlYV9tb2RlID0g JmVkaWRfY2VhX21vZGVzW21vZGVdOworCWZvciAodmljID0gMTsgdmljIDwgQVJSQVlfU0laRShl ZGlkX2NlYV9tb2Rlcyk7IHZpYysrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpjZWFfbW9kZSA9ICZlZGlkX2NlYV9tb2Rlc1t2aWNdOwogCQl1bnNpZ25lZCBpbnQgY2xvY2sx LCBjbG9jazI7CiAKIAkJLyogQ2hlY2sgYm90aCA2MEh6IGFuZCA1OS45NEh6ICovCkBAIC0yNTY2 LDcgKzI1NzIsNyBAQCBzdGF0aWMgdTggZHJtX21hdGNoX2NlYV9tb2RlX2Nsb2NrX3RvbGVyYW5j ZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fbQogCQkJY29udGludWU7CiAKIAkJ aWYgKGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrcyh0b19tYXRjaCwgY2VhX21vZGUpKQotCQkJcmV0 dXJuIG1vZGUgKyAxOworCQkJcmV0dXJuIHZpYzsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTI1ODEs MTMgKzI1ODcsMTMgQEAgc3RhdGljIHU4IGRybV9tYXRjaF9jZWFfbW9kZV9jbG9ja190b2xlcmFu Y2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvX20KICAqLwogdTggZHJtX21hdGNo X2NlYV9tb2RlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCkKIHsKLQl1 OCBtb2RlOworCXU4IHZpYzsKIAogCWlmICghdG9fbWF0Y2gtPmNsb2NrKQogCQlyZXR1cm4gMDsK IAotCWZvciAobW9kZSA9IDA7IG1vZGUgPCBBUlJBWV9TSVpFKGVkaWRfY2VhX21vZGVzKTsgbW9k ZSsrKSB7Ci0JCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpjZWFfbW9kZSA9ICZlZGlk X2NlYV9tb2Rlc1ttb2RlXTsKKwlmb3IgKHZpYyA9IDE7IHZpYyA8IEFSUkFZX1NJWkUoZWRpZF9j ZWFfbW9kZXMpOyB2aWMrKykgeworCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqY2Vh X21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbdmljXTsKIAkJdW5zaWduZWQgaW50IGNsb2NrMSwgY2xv Y2syOwogCiAJCS8qIENoZWNrIGJvdGggNjBIeiBhbmQgNTkuOTRIeiAqLwpAQCAtMjU5NywxMiAr MjYwMywxNyBAQCB1OCBkcm1fbWF0Y2hfY2VhX21vZGUoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKnRvX21hdGNoKQogCQlpZiAoKEtIWjJQSUNPUyh0b19tYXRjaC0+Y2xvY2spID09IEtI WjJQSUNPUyhjbG9jazEpIHx8CiAJCSAgICAgS0haMlBJQ09TKHRvX21hdGNoLT5jbG9jaykgPT0g S0haMlBJQ09TKGNsb2NrMikpICYmCiAJCSAgICBkcm1fbW9kZV9lcXVhbF9ub19jbG9ja3Nfbm9f c3RlcmVvKHRvX21hdGNoLCBjZWFfbW9kZSkpCi0JCQlyZXR1cm4gbW9kZSArIDE7CisJCQlyZXR1 cm4gdmljOwogCX0KIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX21hdGNoX2NlYV9t b2RlKTsKIAorc3RhdGljIGJvb2wgZHJtX3ZhbGlkX2NlYV92aWModTggdmljKQoreworCXJldHVy biB2aWMgPiAwICYmIHZpYyA8IEFSUkFZX1NJWkUoZWRpZF9jZWFfbW9kZXMpOworfQorCiAvKioK ICAqIGRybV9nZXRfY2VhX2FzcGVjdF9yYXRpbyAtIGdldCB0aGUgcGljdHVyZSBhc3BlY3QgcmF0 aW8gY29ycmVzcG9uZGluZyB0bwogICogdGhlIGlucHV0IFZJQyBmcm9tIHRoZSBDRUEgbW9kZSBs aXN0CkBAIC0yNjEyLDEwICsyNjIzLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fbWF0Y2hfY2VhX21v ZGUpOwogICovCiBlbnVtIGhkbWlfcGljdHVyZV9hc3BlY3QgZHJtX2dldF9jZWFfYXNwZWN0X3Jh dGlvKGNvbnN0IHU4IHZpZGVvX2NvZGUpCiB7Ci0JLyogcmV0dXJuIHBpY3R1cmUgYXNwZWN0IHJh dGlvIGZvciB2aWRlb19jb2RlIC0gMSB0byBhY2Nlc3MgdGhlCi0JICogcmlnaHQgYXJyYXkgZWxl bWVudAotCSovCi0JcmV0dXJuIGVkaWRfY2VhX21vZGVzW3ZpZGVvX2NvZGUtMV0ucGljdHVyZV9h c3BlY3RfcmF0aW87CisJcmV0dXJuIGVkaWRfY2VhX21vZGVzW3ZpZGVvX2NvZGVdLnBpY3R1cmVf YXNwZWN0X3JhdGlvOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZ2V0X2NlYV9hc3BlY3RfcmF0aW8p OwogCkBAIC0yNjM5LDEzICsyNjQ3LDEzIEBAIGhkbWlfbW9kZV9hbHRlcm5hdGVfY2xvY2soY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmhkbWlfbW9kZSkKIHN0YXRpYyB1OCBkcm1fbWF0 Y2hfaGRtaV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqdG9fbWF0Y2gsCiAJCQkJCSAgICAgIHVuc2lnbmVkIGludCBjbG9ja190b2xlcmFuY2UpCiB7 Ci0JdTggbW9kZTsKKwl1OCB2aWM7CiAKIAlpZiAoIXRvX21hdGNoLT5jbG9jaykKIAkJcmV0dXJu IDA7CiAKLQlmb3IgKG1vZGUgPSAwOyBtb2RlIDwgQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKTsg bW9kZSsrKSB7Ci0JCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpoZG1pX21vZGUgPSAm ZWRpZF80a19tb2Rlc1ttb2RlXTsKKwlmb3IgKHZpYyA9IDE7IHZpYyA8IEFSUkFZX1NJWkUoZWRp ZF80a19tb2Rlcyk7IHZpYysrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpo ZG1pX21vZGUgPSAmZWRpZF80a19tb2Rlc1t2aWNdOwogCQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBj bG9jazI7CiAKIAkJLyogTWFrZSBzdXJlIHRvIGFsc28gbWF0Y2ggYWx0ZXJuYXRlIGNsb2NrcyAq LwpAQCAtMjY1Nyw3ICsyNjY1LDcgQEAgc3RhdGljIHU4IGRybV9tYXRjaF9oZG1pX21vZGVfY2xv Y2tfdG9sZXJhbmNlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b18KIAkJCWNvbnRp bnVlOwogCiAJCWlmIChkcm1fbW9kZV9lcXVhbF9ub19jbG9ja3ModG9fbWF0Y2gsIGhkbWlfbW9k ZSkpCi0JCQlyZXR1cm4gbW9kZSArIDE7CisJCQlyZXR1cm4gdmljOwogCX0KIAogCXJldHVybiAw OwpAQCAtMjY3MywxMyArMjY4MSwxMyBAQCBzdGF0aWMgdTggZHJtX21hdGNoX2hkbWlfbW9kZV9j bG9ja190b2xlcmFuY2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnRvXwogICovCiBz dGF0aWMgdTggZHJtX21hdGNoX2hkbWlfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqdG9fbWF0Y2gpCiB7Ci0JdTggbW9kZTsKKwl1OCB2aWM7CiAKIAlpZiAoIXRvX21hdGNoLT5j bG9jaykKIAkJcmV0dXJuIDA7CiAKLQlmb3IgKG1vZGUgPSAwOyBtb2RlIDwgQVJSQVlfU0laRShl ZGlkXzRrX21vZGVzKTsgbW9kZSsrKSB7Ci0JCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpoZG1pX21vZGUgPSAmZWRpZF80a19tb2Rlc1ttb2RlXTsKKwlmb3IgKHZpYyA9IDE7IHZpYyA8 IEFSUkFZX1NJWkUoZWRpZF80a19tb2Rlcyk7IHZpYysrKSB7CisJCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICpoZG1pX21vZGUgPSAmZWRpZF80a19tb2Rlc1t2aWNdOwogCQl1bnNpZ25l ZCBpbnQgY2xvY2sxLCBjbG9jazI7CiAKIAkJLyogTWFrZSBzdXJlIHRvIGFsc28gbWF0Y2ggYWx0 ZXJuYXRlIGNsb2NrcyAqLwpAQCAtMjY4OSwxMSArMjY5NywxNiBAQCBzdGF0aWMgdTggZHJtX21h dGNoX2hkbWlfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdG9fbWF0Y2gpCiAJ CWlmICgoS0haMlBJQ09TKHRvX21hdGNoLT5jbG9jaykgPT0gS0haMlBJQ09TKGNsb2NrMSkgfHwK IAkJICAgICBLSFoyUElDT1ModG9fbWF0Y2gtPmNsb2NrKSA9PSBLSFoyUElDT1MoY2xvY2syKSkg JiYKIAkJICAgIGRybV9tb2RlX2VxdWFsX25vX2Nsb2Nrc19ub19zdGVyZW8odG9fbWF0Y2gsIGhk bWlfbW9kZSkpCi0JCQlyZXR1cm4gbW9kZSArIDE7CisJCQlyZXR1cm4gdmljOwogCX0KIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGJvb2wgZHJtX3ZhbGlkX2hkbWlfdmljKHU4IHZpYykKK3sKKwly ZXR1cm4gdmljID4gMCAmJiB2aWMgPCBBUlJBWV9TSVpFKGVkaWRfNGtfbW9kZXMpOworfQorCiBz dGF0aWMgaW50CiBhZGRfYWx0ZXJuYXRlX2NlYV9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKIHsKQEAgLTI3MTMsMTYgKzI3MjYsMTYgQEAg YWRkX2FsdGVybmF0ZV9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwg c3RydWN0IGVkaWQgKmVkaWQpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9y LT5wcm9iZWRfbW9kZXMsIGhlYWQpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmNlYV9tb2RlID0gTlVMTDsKIAkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Ci0J CXU4IG1vZGVfaWR4ID0gZHJtX21hdGNoX2NlYV9tb2RlKG1vZGUpIC0gMTsKKwkJdTggdmljID0g ZHJtX21hdGNoX2NlYV9tb2RlKG1vZGUpOwogCQl1bnNpZ25lZCBpbnQgY2xvY2sxLCBjbG9jazI7 CiAKLQkJaWYgKG1vZGVfaWR4IDwgQVJSQVlfU0laRShlZGlkX2NlYV9tb2RlcykpIHsKLQkJCWNl YV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW21vZGVfaWR4XTsKKwkJaWYgKGRybV92YWxpZF9jZWFf dmljKHZpYykpIHsKKwkJCWNlYV9tb2RlID0gJmVkaWRfY2VhX21vZGVzW3ZpY107CiAJCQljbG9j azIgPSBjZWFfbW9kZV9hbHRlcm5hdGVfY2xvY2soY2VhX21vZGUpOwogCQl9IGVsc2UgewotCQkJ bW9kZV9pZHggPSBkcm1fbWF0Y2hfaGRtaV9tb2RlKG1vZGUpIC0gMTsKLQkJCWlmIChtb2RlX2lk eCA8IEFSUkFZX1NJWkUoZWRpZF80a19tb2RlcykpIHsKLQkJCQljZWFfbW9kZSA9ICZlZGlkXzRr X21vZGVzW21vZGVfaWR4XTsKKwkJCXZpYyA9IGRybV9tYXRjaF9oZG1pX21vZGUobW9kZSk7CisJ CQlpZiAoZHJtX3ZhbGlkX2hkbWlfdmljKHZpYykpIHsKKwkJCQljZWFfbW9kZSA9ICZlZGlkXzRr X21vZGVzW3ZpY107CiAJCQkJY2xvY2syID0gaGRtaV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjZWFf bW9kZSk7CiAJCQl9CiAJCX0KQEAgLTI3NzMsMTcgKzI3ODYsMTcgQEAgZHJtX2Rpc3BsYXlfbW9k ZV9mcm9tX3ZpY19pbmRleChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKIAlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbmV3bW9kZTsKLQl1OCBjZWFfbW9kZTsKKwl1OCB2aWM7CiAKIAlpZiAodmlkZW9f ZGIgPT0gTlVMTCB8fCB2aWRlb19pbmRleCA+PSB2aWRlb19sZW4pCiAJCXJldHVybiBOVUxMOwog CiAJLyogQ0VBIG1vZGVzIGFyZSBudW1iZXJlZCAxLi4xMjcgKi8KLQljZWFfbW9kZSA9ICh2aWRl b19kYlt2aWRlb19pbmRleF0gJiAxMjcpIC0gMTsKLQlpZiAoY2VhX21vZGUgPj0gQVJSQVlfU0la RShlZGlkX2NlYV9tb2RlcykpCisJdmljID0gKHZpZGVvX2RiW3ZpZGVvX2luZGV4XSAmIDEyNyk7 CisJaWYgKCFkcm1fdmFsaWRfY2VhX3ZpYyh2aWMpKQogCQlyZXR1cm4gTlVMTDsKIAotCW5ld21v ZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2LCAmZWRpZF9jZWFfbW9kZXNbY2VhX21vZGVdKTsK KwluZXdtb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgJmVkaWRfY2VhX21vZGVzW3ZpY10p OwogCWlmICghbmV3bW9kZSkKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTI4NzgsOCArMjg5MSw3IEBA IHN0YXRpYyBpbnQgYWRkX2hkbWlfbW9kZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCB1OCB2aWMpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2OwogCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdtb2RlOwogCi0JdmljLS07IC8qIFZJQ3Mgc3RhcnQg YXQgMSAqLwotCWlmICh2aWMgPj0gQVJSQVlfU0laRShlZGlkXzRrX21vZGVzKSkgeworCWlmICgh ZHJtX3ZhbGlkX2hkbWlfdmljKHZpYykpIHsKIAkJRFJNX0VSUk9SKCJVbmtub3duIEhETUkgVklD OiAlZFxuIiwgdmljKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtMzE3MCwyNCArMzE4MiwyNCBAQCBz dGF0aWMgdm9pZCBmaXh1cF9kZXRhaWxlZF9jZWFfbW9kZV9jbG9jayhzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqY2VhX21v ZGU7CiAJaW50IGNsb2NrMSwgY2xvY2syLCBjbG9jazsKLQl1OCBtb2RlX2lkeDsKKwl1OCB2aWM7 CiAJY29uc3QgY2hhciAqdHlwZTsKIAogCS8qCiAJICogYWxsb3cgNWtIeiBjbG9jayBkaWZmZXJl bmNlIGVpdGhlciB3YXkgdG8gYWNjb3VudCBmb3IKIAkgKiB0aGUgMTBrSHogY2xvY2sgcmVzb2x1 dGlvbiBsaW1pdCBvZiBkZXRhaWxlZCB0aW1pbmdzLgogCSAqLwotCW1vZGVfaWR4ID0gZHJtX21h dGNoX2NlYV9tb2RlX2Nsb2NrX3RvbGVyYW5jZShtb2RlLCA1KSAtIDE7Ci0JaWYgKG1vZGVfaWR4 IDwgQVJSQVlfU0laRShlZGlkX2NlYV9tb2RlcykpIHsKKwl2aWMgPSBkcm1fbWF0Y2hfY2VhX21v ZGVfY2xvY2tfdG9sZXJhbmNlKG1vZGUsIDUpOworCWlmIChkcm1fdmFsaWRfY2VhX3ZpYyh2aWMp KSB7CiAJCXR5cGUgPSAiQ0VBIjsKLQkJY2VhX21vZGUgPSAmZWRpZF9jZWFfbW9kZXNbbW9kZV9p ZHhdOworCQljZWFfbW9kZSA9ICZlZGlkX2NlYV9tb2Rlc1t2aWNdOwogCQljbG9jazEgPSBjZWFf bW9kZS0+Y2xvY2s7CiAJCWNsb2NrMiA9IGNlYV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjZWFfbW9k ZSk7CiAJfSBlbHNlIHsKLQkJbW9kZV9pZHggPSBkcm1fbWF0Y2hfaGRtaV9tb2RlX2Nsb2NrX3Rv bGVyYW5jZShtb2RlLCA1KSAtIDE7Ci0JCWlmIChtb2RlX2lkeCA8IEFSUkFZX1NJWkUoZWRpZF80 a19tb2RlcykpIHsKKwkJdmljID0gZHJtX21hdGNoX2hkbWlfbW9kZV9jbG9ja190b2xlcmFuY2Uo bW9kZSwgNSk7CisJCWlmIChkcm1fdmFsaWRfaGRtaV92aWModmljKSkgewogCQkJdHlwZSA9ICJI RE1JIjsKLQkJCWNlYV9tb2RlID0gJmVkaWRfNGtfbW9kZXNbbW9kZV9pZHhdOworCQkJY2VhX21v ZGUgPSAmZWRpZF80a19tb2Rlc1t2aWNdOwogCQkJY2xvY2sxID0gY2VhX21vZGUtPmNsb2NrOwog CQkJY2xvY2syID0gaGRtaV9tb2RlX2FsdGVybmF0ZV9jbG9jayhjZWFfbW9kZSk7CiAJCX0gZWxz ZSB7CkBAIC0zMjA1LDcgKzMyMTcsNyBAQCBzdGF0aWMgdm9pZCBmaXh1cF9kZXRhaWxlZF9jZWFf bW9kZV9jbG9jayhzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKIAkJcmV0dXJuOwogCiAJ RFJNX0RFQlVHKCJkZXRhaWxlZCBtb2RlIG1hdGNoZXMgJXMgVklDICVkLCBhZGp1c3RpbmcgY2xv Y2sgJWQgLT4gJWRcbiIsCi0JCSAgdHlwZSwgbW9kZV9pZHggKyAxLCBtb2RlLT5jbG9jaywgY2xv Y2spOworCQkgIHR5cGUsIHZpYywgbW9kZS0+Y2xvY2ssIGNsb2NrKTsKIAltb2RlLT5jbG9jayA9 IGNsb2NrOwogfQogCi0tIAoyLjEuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK