From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D37EC433E0 for ; Tue, 30 Jun 2020 21:56:37 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 440A7206B6 for ; Tue, 30 Jun 2020 21:56:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 440A7206B6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E18D86E523; Tue, 30 Jun 2020 21:56:36 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id B60106E523 for ; Tue, 30 Jun 2020 21:56:34 +0000 (UTC) IronPort-SDR: MMfa7/I+cDGarDNpOfzBpu12yU+TD5+5e62vCugrdYVaRomIo8RGBLeDN2WKb5T7yn+GobJdif jQIKRjiNwjKg== X-IronPort-AV: E=McAfee;i="6000,8403,9668"; a="164391984" X-IronPort-AV: E=Sophos;i="5.75,298,1589266800"; d="scan'208";a="164391984" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jun 2020 14:56:34 -0700 IronPort-SDR: 07vosBVkOzLoVKirPJkvWxi7nS+FvI54dZJEuftpTH0YKSubEi04oL6FY4S8admdqwPAk4wAwd w9NeNRLp5I+g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,298,1589266800"; d="scan'208";a="295345870" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga002.jf.intel.com with SMTP; 30 Jun 2020 14:56:32 -0700 Received: by stinkbox (sSMTP sendmail emulation); Wed, 01 Jul 2020 00:56:31 +0300 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Wed, 1 Jul 2020 00:55:59 +0300 Message-Id: <20200630215601.28557-11-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200630215601.28557-1-ville.syrjala@linux.intel.com> References: <20200630215601.28557-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 10/12] drm/i915: Introduce HPD_PORT_TC X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCk1h a2UgYSBjbGVhbiBzcGxpdCBiZXR3ZWVuIGhwZCBwaW5zIGZvciBEREkgdnMuIFRDLiBUaGlzIG1h dGNoZXMKaG93IHRoZSBhY3R1YWwgaGFyZHdhcmUgaXMgc3BsaXQuCgpBbmQgd2l0aCB0aGlzIHdl IG1vdmUgdGhlIERESS9QSFktPkhQRCBwaW4gbWFwcGluZyBpbnRvIHRoZSBlbmNvZGVyCmluaXQg aW5zdGVhZCBvZiBoYXZpbmcgdG8gcmVtYXAgeWV0IGFnYWluIGluIHRoZSBpbnRlcnJ1cHQgY29k ZS4KClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAg ICAgfCAgNjUgKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9o b3RwbHVnLmMgfCAgMjUgKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgICAgfCAgMTcgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAg ICAgICAgICB8IDEyMSArKysrKy0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwMiBp bnNlcnRpb25zKCspLCAxMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMKaW5kZXggZDAyNDQ5MTczOGIzLi5hMmM5ODE1YzVhYmMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwpAQCAtNDg0Nyw2ICs0ODQ3LDU3IEBA IGludGVsX2RkaV9tYXhfbGFuZXMoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZHBv cnQpCiAJcmV0dXJuIG1heF9sYW5lczsKIH0KIAorc3RhdGljIGVudW0gaHBkX3BpbiB0Z2xfaHBk X3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJZW51bSBwb3J0IHBv cnQpCit7CisJaWYgKHBvcnQgPj0gUE9SVF9EKQorCQlyZXR1cm4gSFBEX1BPUlRfVEMxICsgcG9y dCAtIFBPUlRfRDsKKwllbHNlCisJCXJldHVybiBIUERfUE9SVF9BICsgcG9ydCAtIFBPUlRfQTsK K30KKworc3RhdGljIGVudW0gaHBkX3BpbiBya2xfaHBkX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCQkJZW51bSBwb3J0IHBvcnQpCit7CisJaWYgKEhBU19QQ0hfVEdQ KGRldl9wcml2KSkKKwkJcmV0dXJuIHRnbF9ocGRfcGluKGRldl9wcml2LCBwb3J0KTsKKworCWlm IChwb3J0ID49IFBPUlRfRCkKKwkJcmV0dXJuIEhQRF9QT1JUX0MgKyBwb3J0IC0gUE9SVF9EOwor CWVsc2UKKwkJcmV0dXJuIEhQRF9QT1JUX0EgKyBwb3J0IC0gUE9SVF9BOworfQorCitzdGF0aWMg ZW51bSBocGRfcGluIGljbF9ocGRfcGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKKwkJCQllbnVtIHBvcnQgcG9ydCkKK3sKKwlpZiAocG9ydCA+PSBQT1JUX0MpCisJCXJldHVy biBIUERfUE9SVF9UQzEgKyBwb3J0IC0gUE9SVF9DOworCWVsc2UKKwkJcmV0dXJuIEhQRF9QT1JU X0EgKyBwb3J0IC0gUE9SVF9BOworfQorCitzdGF0aWMgZW51bSBocGRfcGluIGVobF9ocGRfcGlu KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQllbnVtIHBvcnQgcG9ydCkK K3sKKwlpZiAocG9ydCA9PSBQT1JUX0QpCisJCXJldHVybiBIUERfUE9SVF9BOworCisJaWYgKEhB U19QQ0hfTUNDKGRldl9wcml2KSkKKwkJcmV0dXJuIGljbF9ocGRfcGluKGRldl9wcml2LCBwb3J0 KTsKKworCXJldHVybiBIUERfUE9SVF9BICsgcG9ydCAtIFBPUlRfQTsKK30KKworc3RhdGljIGVu dW0gaHBkX3BpbiBjbmxfaHBkX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkJZW51bSBwb3J0IHBvcnQpCit7CisJaWYgKHBvcnQgPT0gUE9SVF9GKQorCQlyZXR1cm4g SFBEX1BPUlRfRTsKKworCXJldHVybiBIUERfUE9SVF9BICsgcG9ydCAtIFBPUlRfQTsKK30KKwog dm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcG9ydCBwb3J0KQogewogCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0OwpAQCAtNDkwNyw3ICs0OTU4LDE5IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKIAllbmNvZGVyLT5wb3J0 ID0gcG9ydDsKIAllbmNvZGVyLT5jbG9uZWFibGUgPSAwOwogCWVuY29kZXItPnBpcGVfbWFzayA9 IH4wOwotCWVuY29kZXItPmhwZF9waW4gPSBpbnRlbF9ocGRfcGluX2RlZmF1bHQoZGV2X3ByaXYs IHBvcnQpOworCisJaWYgKElTX1JPQ0tFVExBS0UoZGV2X3ByaXYpKQorCQllbmNvZGVyLT5ocGRf cGluID0gcmtsX2hwZF9waW4oZGV2X3ByaXYsIHBvcnQpOworCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTIpCisJCWVuY29kZXItPmhwZF9waW4gPSB0Z2xfaHBkX3BpbihkZXZfcHJp diwgcG9ydCk7CisJZWxzZSBpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQorCQllbmNvZGVy LT5ocGRfcGluID0gZWhsX2hwZF9waW4oZGV2X3ByaXYsIHBvcnQpOworCWVsc2UgaWYgKElTX0dF TihkZXZfcHJpdiwgMTEpKQorCQllbmNvZGVyLT5ocGRfcGluID0gaWNsX2hwZF9waW4oZGV2X3By aXYsIHBvcnQpOworCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTApKQorCQllbmNvZGVyLT5o cGRfcGluID0gY25sX2hwZF9waW4oZGV2X3ByaXYsIHBvcnQpOworCWVsc2UKKwkJZW5jb2Rlci0+ aHBkX3BpbiA9IGludGVsX2hwZF9waW5fZGVmYXVsdChkZXZfcHJpdiwgcG9ydCk7CiAKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKIAkJaW50ZWxfZGlnX3BvcnQtPnNhdmVkX3BvcnRf Yml0cyA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2hvdHBsdWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfaG90cGx1Zy5jCmluZGV4IDgwYmNmZmYwMzJlOS4uOGE4ZTc3MzE0YTRlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hvdHBsdWcuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hvdHBsdWcuYwpAQCAtODEs MzMgKzgxLDEyIEBACiAgKgogICogSXQgaXMgb25seSB2YWxpZCBhbmQgdXNlZCBieSBkaWdpdGFs IHBvcnQgZW5jb2Rlci4KICAqCi0gKiBSZXR1cm4gcGluIHRoYXQgaXMgYXNzb2NpYXRhZGUgd2l0 aCBAcG9ydCBhbmQgSERQX05PTkUgaWYgbm8gcGluIGlzCi0gKiBoYXJkIGFzc29jaWF0ZWQgd2l0 aCB0aGF0IEBwb3J0LgorICogUmV0dXJuIHBpbiB0aGF0IGlzIGFzc29jaWF0YWRlIHdpdGggQHBv cnQuCiAgKi8KIGVudW0gaHBkX3BpbiBpbnRlbF9ocGRfcGluX2RlZmF1bHQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIGVudW0gcG9ydCBwb3J0KQogewotCWVudW0g cGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsKLQotCS8qCi0JICog UktMICsgVEdQIFBDSCBpcyBhIHNwZWNpYWwgY2FzZTsgd2UgZWZmZWN0aXZlbHkgY2hvb3NlIHRo ZSBocGRfcGluCi0JICogYmFzZWQgb24gdGhlIERESSByYXRoZXIgdGhhbiB0aGUgUEhZIChpLmUu LCB0aGUgbGFzdCB0d28gb3V0cHV0cwotCSAqIHNob2xkIGJlIEhQRF9QT1JUX3tELEV9IHJhdGhl ciB0aGFuIHtDLER9LiAgTm90ZSB0aGF0IHRoaXMgZGlmZmVycwotCSAqIGZyb20gdGhlIGJlaGF2 aW9yIG9mIGJvdGggVEdMK1RHUCBhbmQgUktMK0NNUC4KLQkgKi8KLQlpZiAoSVNfUk9DS0VUTEFL RShkZXZfcHJpdikgJiYgSEFTX1BDSF9UR1AoZGV2X3ByaXYpKQotCQlyZXR1cm4gSFBEX1BPUlRf QSArIHBvcnQgLSBQT1JUX0E7Ci0KLQlzd2l0Y2ggKHBoeSkgewotCWNhc2UgUEhZX0Y6Ci0JCXJl dHVybiBJU19DTkxfV0lUSF9QT1JUX0YoZGV2X3ByaXYpID8gSFBEX1BPUlRfRSA6IEhQRF9QT1JU X0Y7Ci0JY2FzZSBQSFlfQSAuLi4gUEhZX0U6Ci0JY2FzZSBQSFlfRyAuLi4gUEhZX0k6Ci0JCXJl dHVybiBIUERfUE9SVF9BICsgcGh5IC0gUEhZX0E7Ci0JZGVmYXVsdDoKLQkJTUlTU0lOR19DQVNF KHBoeSk7Ci0JCXJldHVybiBIUERfTk9ORTsKLQl9CisJcmV0dXJuIEhQRF9QT1JUX0EgKyBwb3J0 IC0gUE9SVF9BOwogfQogCiAjZGVmaW5lIEhQRF9TVE9STV9ERVRFQ1RfUEVSSU9ECQkxMDAwCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA2ZTkwNzJhYjMwYTEuLmRjZDM1Y2Q5N2YwMSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xMTMsMTMgKzExMyw2IEBACiAKIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0OwogCi0vKgotICogVGhlIGNvZGUgYXNzdW1lcyB0aGF0IHRoZSBocGRf cGlucyBiZWxvdyBoYXZlIGNvbnNlY3V0aXZlIHZhbHVlcyBhbmQKLSAqIHN0YXJ0aW5nIHdpdGgg SFBEX1BPUlRfQSwgdGhlIEhQRCBwaW4gYXNzb2NpYXRlZCB3aXRoIGFueSBwb3J0IGNhbiBiZQot ICogcmV0cmlldmVkIGJ5IGFkZGluZyB0aGUgY29ycmVzcG9uZGluZyBwb3J0IChvciBwaHkpIGVu dW0gdmFsdWUgdG8KLSAqIEhQRF9QT1JUX0EgaW4gbW9zdCBjYXNlcy4gRm9yIGV4YW1wbGU6Ci0g KiBIUERfUE9SVF9DID0gSFBEX1BPUlRfQSArIFBIWV9DIC0gUEhZX0EKLSAqLwogZW51bSBocGRf cGluIHsKIAlIUERfTk9ORSA9IDAsCiAJSFBEX1RWID0gSFBEX05PTkUsICAgICAvKiBUViBpcyBr bm93biB0byBiZSB1bnJlbGlhYmxlICovCkBAIC0xMzEsMTAgKzEyNCwxMiBAQCBlbnVtIGhwZF9w aW4gewogCUhQRF9QT1JUX0MsCiAJSFBEX1BPUlRfRCwKIAlIUERfUE9SVF9FLAotCUhQRF9QT1JU X0YsCi0JSFBEX1BPUlRfRywKLQlIUERfUE9SVF9ILAotCUhQRF9QT1JUX0ksCisJSFBEX1BPUlRf VEMxLAorCUhQRF9QT1JUX1RDMiwKKwlIUERfUE9SVF9UQzMsCisJSFBEX1BPUlRfVEM0LAorCUhQ RF9QT1JUX1RDNSwKKwlIUERfUE9SVF9UQzYsCiAKIAlIUERfTlVNX1BJTlMKIH07CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwppbmRleCA5MmQ3NDQ0OGVlMDMuLjk1YWI0NDMyYTg3ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCkBAIC0xMzEsNDAgKzEzMSwyNCBAQCBzdGF0aWMgY29uc3QgdTMyIGhw ZF9ieHRbSFBEX05VTV9QSU5TXSA9IHsKIH07CiAKIHN0YXRpYyBjb25zdCB1MzIgaHBkX2dlbjEx W0hQRF9OVU1fUElOU10gPSB7Ci0JW0hQRF9QT1JUX0NdID0gR0VOMTFfVENfSE9UUExVRyhQT1JU X1RDMSkgfCBHRU4xMV9UQlRfSE9UUExVRyhQT1JUX1RDMSksCi0JW0hQRF9QT1JUX0RdID0gR0VO MTFfVENfSE9UUExVRyhQT1JUX1RDMikgfCBHRU4xMV9UQlRfSE9UUExVRyhQT1JUX1RDMiksCi0J W0hQRF9QT1JUX0VdID0gR0VOMTFfVENfSE9UUExVRyhQT1JUX1RDMykgfCBHRU4xMV9UQlRfSE9U UExVRyhQT1JUX1RDMyksCi0JW0hQRF9QT1JUX0ZdID0gR0VOMTFfVENfSE9UUExVRyhQT1JUX1RD NCkgfCBHRU4xMV9UQlRfSE9UUExVRyhQT1JUX1RDNCksCi19OwotCi1zdGF0aWMgY29uc3QgdTMy IGhwZF9nZW4xMltIUERfTlVNX1BJTlNdID0gewotCVtIUERfUE9SVF9EXSA9IEdFTjExX1RDX0hP VFBMVUcoUE9SVF9UQzEpIHwgR0VOMTFfVEJUX0hPVFBMVUcoUE9SVF9UQzEpLAotCVtIUERfUE9S VF9FXSA9IEdFTjExX1RDX0hPVFBMVUcoUE9SVF9UQzIpIHwgR0VOMTFfVEJUX0hPVFBMVUcoUE9S VF9UQzIpLAotCVtIUERfUE9SVF9GXSA9IEdFTjExX1RDX0hPVFBMVUcoUE9SVF9UQzMpIHwgR0VO MTFfVEJUX0hPVFBMVUcoUE9SVF9UQzMpLAotCVtIUERfUE9SVF9HXSA9IEdFTjExX1RDX0hPVFBM VUcoUE9SVF9UQzQpIHwgR0VOMTFfVEJUX0hPVFBMVUcoUE9SVF9UQzQpLAotCVtIUERfUE9SVF9I XSA9IEdFTjExX1RDX0hPVFBMVUcoUE9SVF9UQzUpIHwgR0VOMTFfVEJUX0hPVFBMVUcoUE9SVF9U QzUpLAotCVtIUERfUE9SVF9JXSA9IEdFTjExX1RDX0hPVFBMVUcoUE9SVF9UQzYpIHwgR0VOMTFf VEJUX0hPVFBMVUcoUE9SVF9UQzYpLAorCVtIUERfUE9SVF9UQzFdID0gR0VOMTFfVENfSE9UUExV RyhQT1JUX1RDMSkgfCBHRU4xMV9UQlRfSE9UUExVRyhQT1JUX1RDMSksCisJW0hQRF9QT1JUX1RD Ml0gPSBHRU4xMV9UQ19IT1RQTFVHKFBPUlRfVEMyKSB8IEdFTjExX1RCVF9IT1RQTFVHKFBPUlRf VEMyKSwKKwlbSFBEX1BPUlRfVEMzXSA9IEdFTjExX1RDX0hPVFBMVUcoUE9SVF9UQzMpIHwgR0VO MTFfVEJUX0hPVFBMVUcoUE9SVF9UQzMpLAorCVtIUERfUE9SVF9UQzRdID0gR0VOMTFfVENfSE9U UExVRyhQT1JUX1RDNCkgfCBHRU4xMV9UQlRfSE9UUExVRyhQT1JUX1RDNCksCisJW0hQRF9QT1JU X1RDNV0gPSBHRU4xMV9UQ19IT1RQTFVHKFBPUlRfVEM1KSB8IEdFTjExX1RCVF9IT1RQTFVHKFBP UlRfVEM1KSwKKwlbSFBEX1BPUlRfVEM2XSA9IEdFTjExX1RDX0hPVFBMVUcoUE9SVF9UQzYpIHwg R0VOMTFfVEJUX0hPVFBMVUcoUE9SVF9UQzYpLAogfTsKIAogc3RhdGljIGNvbnN0IHUzMiBocGRf aWNwW0hQRF9OVU1fUElOU10gPSB7Ci0JW0hQRF9QT1JUX0FdID0gU0RFX0RESV9IT1RQTFVHX0lD UChQT1JUX0EpLAotCVtIUERfUE9SVF9CXSA9IFNERV9ERElfSE9UUExVR19JQ1AoUE9SVF9CKSwK LQlbSFBEX1BPUlRfQ10gPSBTREVfVENfSE9UUExVR19JQ1AoUE9SVF9UQzEpLAotCVtIUERfUE9S VF9EXSA9IFNERV9UQ19IT1RQTFVHX0lDUChQT1JUX1RDMiksCi0JW0hQRF9QT1JUX0VdID0gU0RF X1RDX0hPVFBMVUdfSUNQKFBPUlRfVEMzKSwKLQlbSFBEX1BPUlRfRl0gPSBTREVfVENfSE9UUExV R19JQ1AoUE9SVF9UQzQpLAotfTsKLQotc3RhdGljIGNvbnN0IHUzMiBocGRfdGdwW0hQRF9OVU1f UElOU10gPSB7CiAJW0hQRF9QT1JUX0FdID0gU0RFX0RESV9IT1RQTFVHX0lDUChQT1JUX0EpLAog CVtIUERfUE9SVF9CXSA9IFNERV9ERElfSE9UUExVR19JQ1AoUE9SVF9CKSwKIAlbSFBEX1BPUlRf Q10gPSBTREVfRERJX0hPVFBMVUdfSUNQKFBPUlRfQyksCi0JW0hQRF9QT1JUX0RdID0gU0RFX1RD X0hPVFBMVUdfSUNQKFBPUlRfVEMxKSwKLQlbSFBEX1BPUlRfRV0gPSBTREVfVENfSE9UUExVR19J Q1AoUE9SVF9UQzIpLAotCVtIUERfUE9SVF9GXSA9IFNERV9UQ19IT1RQTFVHX0lDUChQT1JUX1RD MyksCi0JW0hQRF9QT1JUX0ddID0gU0RFX1RDX0hPVFBMVUdfSUNQKFBPUlRfVEM0KSwKLQlbSFBE X1BPUlRfSF0gPSBTREVfVENfSE9UUExVR19JQ1AoUE9SVF9UQzUpLAotCVtIUERfUE9SVF9JXSA9 IFNERV9UQ19IT1RQTFVHX0lDUChQT1JUX1RDNiksCisJW0hQRF9QT1JUX1RDMV0gPSBTREVfVENf SE9UUExVR19JQ1AoUE9SVF9UQzEpLAorCVtIUERfUE9SVF9UQzJdID0gU0RFX1RDX0hPVFBMVUdf SUNQKFBPUlRfVEMyKSwKKwlbSFBEX1BPUlRfVEMzXSA9IFNERV9UQ19IT1RQTFVHX0lDUChQT1JU X1RDMyksCisJW0hQRF9QT1JUX1RDNF0gPSBTREVfVENfSE9UUExVR19JQ1AoUE9SVF9UQzQpLAor CVtIUERfUE9SVF9UQzVdID0gU0RFX1RDX0hPVFBMVUdfSUNQKFBPUlRfVEM1KSwKKwlbSFBEX1BP UlRfVEM2XSA9IFNERV9UQ19IT1RQTFVHX0lDUChQT1JUX1RDNiksCiB9OwogCiBzdGF0aWMgdm9p ZCBpbnRlbF9ocGRfaW5pdF9waW5zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK QEAgLTE4MCw5ICsxNjQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9ocGRfaW5pdF9waW5zKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJcmV0dXJuOwogCX0KIAotCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDEyKQotCQlocGQtPmhwZCA9IGhwZF9nZW4xMjsKLQllbHNlIGlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDExKQogCQlocGQtPmhwZCA9IGhwZF9nZW4xMTsKIAllbHNlIGlmIChJU19HRU45X0xQKGRldl9w cml2KSkKIAkJaHBkLT5ocGQgPSBocGRfYnh0OwpAQCAtMTk2LDkgKzE3OCw4IEBAIHN0YXRpYyB2 b2lkIGludGVsX2hwZF9pbml0X3BpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCWlmICghSEFTX1BDSF9TUExJVChkZXZfcHJpdikgfHwgSEFTX1BDSF9OT1AoZGV2X3ByaXYp KQogCQlyZXR1cm47CiAKLQlpZiAoSEFTX1BDSF9UR1AoZGV2X3ByaXYpIHx8IEhBU19QQ0hfSlNQ KGRldl9wcml2KSkKLQkJaHBkLT5wY2hfaHBkID0gaHBkX3RncDsKLQllbHNlIGlmIChIQVNfUENI X0lDUChkZXZfcHJpdikgfHwgSEFTX1BDSF9NQ0MoZGV2X3ByaXYpKQorCWlmIChIQVNfUENIX1RH UChkZXZfcHJpdikgfHwgSEFTX1BDSF9KU1AoZGV2X3ByaXYpIHx8CisJICAgIEhBU19QQ0hfSUNQ KGRldl9wcml2KSB8fCBIQVNfUENIX01DQyhkZXZfcHJpdikpCiAJCWhwZC0+cGNoX2hwZCA9IGhw ZF9pY3A7CiAJZWxzZSBpZiAoSEFTX1BDSF9DTlAoZGV2X3ByaXYpIHx8IEhBU19QQ0hfU1BUKGRl dl9wcml2KSkKIAkJaHBkLT5wY2hfaHBkID0gaHBkX3NwdDsKQEAgLTEwNDgsMzMgKzEwMjksMTcg QEAgc3RhdGljIHZvaWQgaXZiX3Bhcml0eV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK IHN0YXRpYyBib29sIGdlbjExX3BvcnRfaG90cGx1Z19sb25nX2RldGVjdChlbnVtIGhwZF9waW4g cGluLCB1MzIgdmFsKQogewogCXN3aXRjaCAocGluKSB7Ci0JY2FzZSBIUERfUE9SVF9DOgorCWNh c2UgSFBEX1BPUlRfVEMxOgogCQlyZXR1cm4gdmFsICYgR0VOMTFfSE9UUExVR19DVExfTE9OR19E RVRFQ1QoUE9SVF9UQzEpOwotCWNhc2UgSFBEX1BPUlRfRDoKKwljYXNlIEhQRF9QT1JUX1RDMjoK IAkJcmV0dXJuIHZhbCAmIEdFTjExX0hPVFBMVUdfQ1RMX0xPTkdfREVURUNUKFBPUlRfVEMyKTsK LQljYXNlIEhQRF9QT1JUX0U6CisJY2FzZSBIUERfUE9SVF9UQzM6CiAJCXJldHVybiB2YWwgJiBH RU4xMV9IT1RQTFVHX0NUTF9MT05HX0RFVEVDVChQT1JUX1RDMyk7Ci0JY2FzZSBIUERfUE9SVF9G OgorCWNhc2UgSFBEX1BPUlRfVEM0OgogCQlyZXR1cm4gdmFsICYgR0VOMTFfSE9UUExVR19DVExf TE9OR19ERVRFQ1QoUE9SVF9UQzQpOwotCWRlZmF1bHQ6Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci19 Ci0KLXN0YXRpYyBib29sIGdlbjEyX3BvcnRfaG90cGx1Z19sb25nX2RldGVjdChlbnVtIGhwZF9w aW4gcGluLCB1MzIgdmFsKQotewotCXN3aXRjaCAocGluKSB7Ci0JY2FzZSBIUERfUE9SVF9EOgot CQlyZXR1cm4gdmFsICYgR0VOMTFfSE9UUExVR19DVExfTE9OR19ERVRFQ1QoUE9SVF9UQzEpOwot CWNhc2UgSFBEX1BPUlRfRToKLQkJcmV0dXJuIHZhbCAmIEdFTjExX0hPVFBMVUdfQ1RMX0xPTkdf REVURUNUKFBPUlRfVEMyKTsKLQljYXNlIEhQRF9QT1JUX0Y6Ci0JCXJldHVybiB2YWwgJiBHRU4x MV9IT1RQTFVHX0NUTF9MT05HX0RFVEVDVChQT1JUX1RDMyk7Ci0JY2FzZSBIUERfUE9SVF9HOgot CQlyZXR1cm4gdmFsICYgR0VOMTFfSE9UUExVR19DVExfTE9OR19ERVRFQ1QoUE9SVF9UQzQpOwot CWNhc2UgSFBEX1BPUlRfSDoKKwljYXNlIEhQRF9QT1JUX1RDNToKIAkJcmV0dXJuIHZhbCAmIEdF TjExX0hPVFBMVUdfQ1RMX0xPTkdfREVURUNUKFBPUlRfVEM1KTsKLQljYXNlIEhQRF9QT1JUX0k6 CisJY2FzZSBIUERfUE9SVF9UQzY6CiAJCXJldHVybiB2YWwgJiBHRU4xMV9IT1RQTFVHX0NUTF9M T05HX0RFVEVDVChQT1JUX1RDNik7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMTEx MiwzMyArMTA3NywxNyBAQCBzdGF0aWMgYm9vbCBpY3BfZGRpX3BvcnRfaG90cGx1Z19sb25nX2Rl dGVjdChlbnVtIGhwZF9waW4gcGluLCB1MzIgdmFsKQogc3RhdGljIGJvb2wgaWNwX3RjX3BvcnRf aG90cGx1Z19sb25nX2RldGVjdChlbnVtIGhwZF9waW4gcGluLCB1MzIgdmFsKQogewogCXN3aXRj aCAocGluKSB7Ci0JY2FzZSBIUERfUE9SVF9DOgorCWNhc2UgSFBEX1BPUlRfVEMxOgogCQlyZXR1 cm4gdmFsICYgSUNQX1RDX0hQRF9MT05HX0RFVEVDVChQT1JUX1RDMSk7Ci0JY2FzZSBIUERfUE9S VF9EOgorCWNhc2UgSFBEX1BPUlRfVEMyOgogCQlyZXR1cm4gdmFsICYgSUNQX1RDX0hQRF9MT05H X0RFVEVDVChQT1JUX1RDMik7Ci0JY2FzZSBIUERfUE9SVF9FOgorCWNhc2UgSFBEX1BPUlRfVEMz OgogCQlyZXR1cm4gdmFsICYgSUNQX1RDX0hQRF9MT05HX0RFVEVDVChQT1JUX1RDMyk7Ci0JY2Fz ZSBIUERfUE9SVF9GOgorCWNhc2UgSFBEX1BPUlRfVEM0OgogCQlyZXR1cm4gdmFsICYgSUNQX1RD X0hQRF9MT05HX0RFVEVDVChQT1JUX1RDNCk7Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIGZhbHNlOwot CX0KLX0KLQotc3RhdGljIGJvb2wgdGdwX3RjX3BvcnRfaG90cGx1Z19sb25nX2RldGVjdChlbnVt IGhwZF9waW4gcGluLCB1MzIgdmFsKQotewotCXN3aXRjaCAocGluKSB7Ci0JY2FzZSBIUERfUE9S VF9EOgotCQlyZXR1cm4gdmFsICYgSUNQX1RDX0hQRF9MT05HX0RFVEVDVChQT1JUX1RDMSk7Ci0J Y2FzZSBIUERfUE9SVF9FOgotCQlyZXR1cm4gdmFsICYgSUNQX1RDX0hQRF9MT05HX0RFVEVDVChQ T1JUX1RDMik7Ci0JY2FzZSBIUERfUE9SVF9GOgotCQlyZXR1cm4gdmFsICYgSUNQX1RDX0hQRF9M T05HX0RFVEVDVChQT1JUX1RDMyk7Ci0JY2FzZSBIUERfUE9SVF9HOgotCQlyZXR1cm4gdmFsICYg SUNQX1RDX0hQRF9MT05HX0RFVEVDVChQT1JUX1RDNCk7Ci0JY2FzZSBIUERfUE9SVF9IOgorCWNh c2UgSFBEX1BPUlRfVEM1OgogCQlyZXR1cm4gdmFsICYgSUNQX1RDX0hQRF9MT05HX0RFVEVDVChQ T1JUX1RDNSk7Ci0JY2FzZSBIUERfUE9SVF9JOgorCWNhc2UgSFBEX1BPUlRfVEM2OgogCQlyZXR1 cm4gdmFsICYgSUNQX1RDX0hQRF9MT05HX0RFVEVDVChQT1JUX1RDNik7CiAJZGVmYXVsdDoKIAkJ cmV0dXJuIGZhbHNlOwpAQCAtMTg5MiwxOSArMTg0MSwxNiBAQCBzdGF0aWMgdm9pZCBpY3BfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcGNoX2lpcikK IHsKIAl1MzIgZGRpX2hvdHBsdWdfdHJpZ2dlciwgdGNfaG90cGx1Z190cmlnZ2VyOwogCXUzMiBw aW5fbWFzayA9IDAsIGxvbmdfbWFzayA9IDA7Ci0JYm9vbCAoKnRjX3BvcnRfaG90cGx1Z19sb25n X2RldGVjdCkoZW51bSBocGRfcGluIHBpbiwgdTMyIHZhbCk7CiAKIAlpZiAoSEFTX1BDSF9UR1Ao ZGV2X3ByaXYpKSB7CiAJCWRkaV9ob3RwbHVnX3RyaWdnZXIgPSBwY2hfaWlyICYgU0RFX0RESV9N QVNLX1RHUDsKIAkJdGNfaG90cGx1Z190cmlnZ2VyID0gcGNoX2lpciAmIFNERV9UQ19NQVNLX1RH UDsKLQkJdGNfcG9ydF9ob3RwbHVnX2xvbmdfZGV0ZWN0ID0gdGdwX3RjX3BvcnRfaG90cGx1Z19s b25nX2RldGVjdDsKIAl9IGVsc2UgaWYgKEhBU19QQ0hfSlNQKGRldl9wcml2KSkgewogCQlkZGlf aG90cGx1Z190cmlnZ2VyID0gcGNoX2lpciAmIFNERV9ERElfTUFTS19UR1A7CiAJCXRjX2hvdHBs dWdfdHJpZ2dlciA9IDA7CiAJfSBlbHNlIGlmIChIQVNfUENIX01DQyhkZXZfcHJpdikpIHsKIAkJ ZGRpX2hvdHBsdWdfdHJpZ2dlciA9IHBjaF9paXIgJiBTREVfRERJX01BU0tfSUNQOwogCQl0Y19o b3RwbHVnX3RyaWdnZXIgPSBwY2hfaWlyICYgU0RFX1RDX0hPVFBMVUdfSUNQKFBPUlRfVEMxKTsK LQkJdGNfcG9ydF9ob3RwbHVnX2xvbmdfZGV0ZWN0ID0gaWNwX3RjX3BvcnRfaG90cGx1Z19sb25n X2RldGVjdDsKIAl9IGVsc2UgewogCQlkcm1fV0FSTigmZGV2X3ByaXYtPmRybSwgIUhBU19QQ0hf SUNQKGRldl9wcml2KSwKIAkJCSAiVW5yZWNvZ25pemVkIFBDSCB0eXBlIDB4JXhcbiIsCkBAIC0x OTEyLDcgKzE4NTgsNiBAQCBzdGF0aWMgdm9pZCBpY3BfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcGNoX2lpcikKIAogCQlkZGlfaG90cGx1Z190cmln Z2VyID0gcGNoX2lpciAmIFNERV9ERElfTUFTS19JQ1A7CiAJCXRjX2hvdHBsdWdfdHJpZ2dlciA9 IHBjaF9paXIgJiBTREVfVENfTUFTS19JQ1A7Ci0JCXRjX3BvcnRfaG90cGx1Z19sb25nX2RldGVj dCA9IGljcF90Y19wb3J0X2hvdHBsdWdfbG9uZ19kZXRlY3Q7CiAJfQogCiAJaWYgKGRkaV9ob3Rw bHVnX3RyaWdnZXIpIHsKQEAgLTE5MzYsNyArMTg4MSw3IEBAIHN0YXRpYyB2b2lkIGljcF9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwY2hfaWlyKQog CQlpbnRlbF9nZXRfaHBkX3BpbnMoZGV2X3ByaXYsICZwaW5fbWFzaywgJmxvbmdfbWFzaywKIAkJ CQkgICB0Y19ob3RwbHVnX3RyaWdnZXIsIGRpZ19ob3RwbHVnX3JlZywKIAkJCQkgICBkZXZfcHJp di0+aG90cGx1Zy5wY2hfaHBkLAotCQkJCSAgIHRjX3BvcnRfaG90cGx1Z19sb25nX2RldGVjdCk7 CisJCQkJICAgaWNwX3RjX3BvcnRfaG90cGx1Z19sb25nX2RldGVjdCk7CiAJfQogCiAJaWYgKHBp bl9tYXNrKQpAQCAtMjE4NCwxMiArMjEyOSw2IEBAIHN0YXRpYyB2b2lkIGdlbjExX2hwZF9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBpaXIpCiAJdTMy IHBpbl9tYXNrID0gMCwgbG9uZ19tYXNrID0gMDsKIAl1MzIgdHJpZ2dlcl90YyA9IGlpciAmIEdF TjExX0RFX1RDX0hPVFBMVUdfTUFTSzsKIAl1MzIgdHJpZ2dlcl90YnQgPSBpaXIgJiBHRU4xMV9E RV9UQlRfSE9UUExVR19NQVNLOwotCWxvbmdfcHVsc2VfZGV0ZWN0X2Z1bmMgbG9uZ19wdWxzZV9k ZXRlY3Q7Ci0KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKLQkJbG9uZ19wdWxzZV9k ZXRlY3QgPSBnZW4xMl9wb3J0X2hvdHBsdWdfbG9uZ19kZXRlY3Q7Ci0JZWxzZQotCQlsb25nX3B1 bHNlX2RldGVjdCA9IGdlbjExX3BvcnRfaG90cGx1Z19sb25nX2RldGVjdDsKIAogCWlmICh0cmln Z2VyX3RjKSB7CiAJCXUzMiBkaWdfaG90cGx1Z19yZWc7CkBAIC0yMjAwLDcgKzIxMzksNyBAQCBz dGF0aWMgdm9pZCBnZW4xMV9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1MzIgaWlyKQogCQlpbnRlbF9nZXRfaHBkX3BpbnMoZGV2X3ByaXYsICZwaW5f bWFzaywgJmxvbmdfbWFzaywKIAkJCQkgICB0cmlnZ2VyX3RjLCBkaWdfaG90cGx1Z19yZWcsCiAJ CQkJICAgZGV2X3ByaXYtPmhvdHBsdWcuaHBkLAotCQkJCSAgIGxvbmdfcHVsc2VfZGV0ZWN0KTsK KwkJCQkgICBnZW4xMV9wb3J0X2hvdHBsdWdfbG9uZ19kZXRlY3QpOwogCX0KIAogCWlmICh0cmln Z2VyX3RidCkgewpAQCAtMjIxMiw3ICsyMTUxLDcgQEAgc3RhdGljIHZvaWQgZ2VuMTFfaHBkX2ly cV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGlpcikKIAkJ aW50ZWxfZ2V0X2hwZF9waW5zKGRldl9wcml2LCAmcGluX21hc2ssICZsb25nX21hc2ssCiAJCQkJ ICAgdHJpZ2dlcl90YnQsIGRpZ19ob3RwbHVnX3JlZywKIAkJCQkgICBkZXZfcHJpdi0+aG90cGx1 Zy5ocGQsCi0JCQkJICAgbG9uZ19wdWxzZV9kZXRlY3QpOworCQkJCSAgIGdlbjExX3BvcnRfaG90 cGx1Z19sb25nX2RldGVjdCk7CiAJfQogCiAJaWYgKHBpbl9tYXNrKQotLSAKMi4yNi4yCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK