From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v2 19/23] drm/i915/icl: Reserve all required PLLs for TypeC ports Date: Thu, 20 Jun 2019 17:05:56 +0300 Message-ID: <20190620140600.11357-20-imre.deak@intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id E62AF6E588 for ; Thu, 20 Jun 2019 14:06:56 +0000 (UTC) In-Reply-To: <20190620140600.11357-1-imre.deak@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: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org V2hlbiBlbmFibGluZyBhIFR5cGVDIHBvcnQgd2UgbmVlZCB0byByZXNlcnZlIGFsbCB0aGUgcmVx dWlyZWQgUExMcyBmb3IKaXQsIHRoZSBUQlQgUExMIGZvciBUQlQtYWx0IGFuZCB0aGUgTUcgUEhZ IFBMTCBmb3IgRFAtYWx0L2xlZ2FjeSBzaW5rcy4KV2UgY2FuIHNlbGVjdCB0aGUgcHJvcGVyIFBM TCBmb3IgdGhlIGN1cnJlbnQgcG9ydCBtb2RlIGZyb20gdGhlIHJlc2VydmVkClBMTHMgb25seSBv bmNlIHdlIHNlbGVjdGVkIGFuZCBsb2NrZWQgZG93biB0aGUgcG9ydCBtb2RlIGZvciB0aGUgd2hv bGUKZHVyYXRpb24gb2YgdGhlIHBvcnQncyBhY3RpdmUgc3RhdGUuIFJlc2V0dGluZyBhbmQgbG9j a2luZyBkb3duIHRoZSBwb3J0Cm1vZGUgY2FuIGluIHR1cm4gaGFwcGVuIG9ubHkgZHVyaW5nIHRo ZSBtb2Rlc2V0IGNvbW1pdCBwaGFzZSBvbmNlIHdlCmRpc2FibGVkIHRoZSBnaXZlbiBwb3J0IGFu ZCB0aGUgUExMIGl0IHVzZWQuCgpUbyBzdXBwb3J0IHRoZSBhYm92ZSByZXNlcnZlLWFuZC1zZWxl Y3QgUExMIHNlbWFudGljIHdlIHN0b3JlIHRoZQpyZXNlcnZlZCBQTExzIGFsb25nIHdpdGggdGhl aXIgSFcgc3RhdGUgaW4gdGhlIENSVEMgc3RhdGUgYW5kIHByb3ZpZGUgYQp3YXkgdG8gc2VsZWN0 IHRoZSBhY3RpdmUgUExMIGZyb20gdGhlc2UuIFRoZSBzZWxlY3RlZCBQTEwgYWxvbmcgd2l0aCBp dHMKSFcgc3RhdGUgd2lsbCBiZSBwb2ludGVkIGF0IGJ5IGNydGNfc3RhdGUtPnNoYXJlZF9kcGxs L2RwbGxfaHdfc3RhdGUgYXMKaW4gdGhlIGNhc2Ugb2Ygb3RoZXIgcG9ydCB0eXBlcy4KCkJlc2lk ZXMgcmVzZXJ2aW5nIGFsbCByZXF1aXJlZCBQTExzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KCnYy OgotIEZpeCByZWxlYXNpbmcgdGhlIElDTCBQTExzLCBub3QgY2xlYXJpbmcgdGhlIFBMTHMgZnJv bSB0aGUgb2xkCiAgY3J0Y19zdGF0ZS4KLSBJbml0IHBvcnRfZHBsbCB0byBJQ0xfUE9SVF9EUExM X0RFRkFVTFQgY2xvc2VyIHRvIHdoZXJlIHBvcnRfZHBsbCBpcwogIHVzZWQgZm9yIHN5bW1ldHJ5 IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgSUNMX1BPUlRfRFBMTF9NR19QSFkgaW5pdC4KICAoVmls bGUpCgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K Q2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBNYWFydGVuIExh bmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMgfCAxNTEgKysrKysrKysrKysrKy0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmggfCAgIDkgKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAgOSArKwogNCBmaWxl cyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwppbmRleCA2ODgxMzc1MjQxNzku LjkzZTNmNTY4ZDdkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMKQEAgLTk5NTgsNiArOTk1OCw3IEBAIHN0YXRpYyB2b2lkIGljZWxha2VfZ2V0X2Rk aV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCWVudW0gcG9ydCBw b3J0LAogCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKIHsKKwllbnVt IGljbF9wb3J0X2RwbGxfaWQgcG9ydF9kcGxsX2lkOwogCWVudW0gaW50ZWxfZHBsbF9pZCBpZDsK IAl1MzIgdGVtcDsKIApAQCAtOTk2NSwyMiArOTk2NiwyOCBAQCBzdGF0aWMgdm9pZCBpY2VsYWtl X2dldF9kZGlfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJdGVtcCA9 IEk5MTVfUkVBRChEUENMS0FfQ0ZHQ1IwX0lDTCkgJgogCQkgICAgICAgRFBDTEtBX0NGR0NSMF9E RElfQ0xLX1NFTF9NQVNLKHBvcnQpOwogCQlpZCA9IHRlbXAgPj4gRFBDTEtBX0NGR0NSMF9ERElf Q0xLX1NFTF9TSElGVChwb3J0KTsKKwkJcG9ydF9kcGxsX2lkID0gSUNMX1BPUlRfRFBMTF9ERUZB VUxUOwogCX0gZWxzZSBpZiAoaW50ZWxfcG9ydF9pc190YyhkZXZfcHJpdiwgcG9ydCkpIHsKIAkJ dTMyIGNsa19zZWwgPSBJOTE1X1JFQUQoRERJX0NMS19TRUwocG9ydCkpICYgRERJX0NMS19TRUxf TUFTSzsKIAogCQlpZiAoY2xrX3NlbCA9PSBERElfQ0xLX1NFTF9NRykgewogCQkJaWQgPSBpY2xf dGNfcG9ydF90b19wbGxfaWQoaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwKIAkJCQkJCQkJICAg IHBvcnQpKTsKKwkJCXBvcnRfZHBsbF9pZCA9IElDTF9QT1JUX0RQTExfTUdfUEhZOwogCQl9IGVs c2UgewogCQkJV0FSTl9PTihjbGtfc2VsIDwgRERJX0NMS19TRUxfVEJUXzE2Mik7CiAJCQlpZCA9 IERQTExfSURfSUNMX1RCVFBMTDsKKwkJCXBvcnRfZHBsbF9pZCA9IElDTF9QT1JUX0RQTExfREVG QVVMVDsKIAkJfQogCX0gZWxzZSB7CiAJCVdBUk4oMSwgIkludmFsaWQgcG9ydCAleFxuIiwgcG9y dCk7CiAJCXJldHVybjsKIAl9CiAKLQlwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwgPSBpbnRlbF9n ZXRfc2hhcmVkX2RwbGxfYnlfaWQoZGV2X3ByaXYsIGlkKTsKKwlwaXBlX2NvbmZpZy0+aWNsX3Bv cnRfZHBsbHNbcG9ydF9kcGxsX2lkXS5wbGwgPQorCQlpbnRlbF9nZXRfc2hhcmVkX2RwbGxfYnlf aWQoZGV2X3ByaXYsIGlkKTsKKworCWljbF9zZXRfYWN0aXZlX3BvcnRfZHBsbChwaXBlX2NvbmZp ZywgcG9ydF9kcGxsX2lkKTsKIH0KIAogc3RhdGljIHZvaWQgYnh0X2dldF9kZGlfcGxsKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTEyMTE5LDYgKzEyMTI2LDggQEAgY2xl YXJfaW50ZWxfY3J0Y19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK IAlzYXZlZF9zdGF0ZS0+c2NhbGVyX3N0YXRlID0gY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlOwog CXNhdmVkX3N0YXRlLT5zaGFyZWRfZHBsbCA9IGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsOwogCXNh dmVkX3N0YXRlLT5kcGxsX2h3X3N0YXRlID0gY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZTsKKwlt ZW1jcHkoc2F2ZWRfc3RhdGUtPmljbF9wb3J0X2RwbGxzLCBjcnRjX3N0YXRlLT5pY2xfcG9ydF9k cGxscywKKwkgICAgICAgc2l6ZW9mKHNhdmVkX3N0YXRlLT5pY2xfcG9ydF9kcGxscykpOwogCXNh dmVkX3N0YXRlLT5jcmNfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmNyY19lbmFibGVkOwogCWlmIChJ U19HNFgoZGV2X3ByaXYpIHx8CiAJICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcGxsX21nci5jCmluZGV4IDg1YzM4ZWVkOTNhOC4uYTk5NmEzZmFkNDhjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsX21nci5jCkBAIC0yODU2LDM0ICsy ODU2LDc5IEBAIHN0YXRpYyBib29sIGljbF9jYWxjX21nX3BsbF9zdGF0ZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoqCisgKiBpY2xf c2V0X2FjdGl2ZV9wb3J0X2RwbGwgLSBzZWxlY3QgdGhlIGFjdGl2ZSBwb3J0IERQTEwgZm9yIGEg Z2l2ZW4gQ1JUQworICogQGNydGNfc3RhdGU6IHN0YXRlIGZvciB0aGUgQ1JUQyB0byBzZWxlY3Qg dGhlIERQTEwgZm9yCisgKiBAcG9ydF9kcGxsX2lkOiB0aGUgYWN0aXZlIEBwb3J0X2RwbGxfaWQg dG8gc2VsZWN0CisgKgorICogU2VsZWN0IHRoZSBnaXZlbiBAcG9ydF9kcGxsX2lkIGluc3RhbmNl IGZyb20gdGhlIERQTExzIHJlc2VydmVkIGZvciB0aGUKKyAqIENSVEMuCisgKi8KK3ZvaWQgaWNs X3NldF9hY3RpdmVfcG9ydF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAorCQkJICAgICAgZW51bSBpY2xfcG9ydF9kcGxsX2lkIHBvcnRfZHBsbF9pZCkKK3sKKwlzdHJ1 Y3QgaWNsX3BvcnRfZHBsbCAqcG9ydF9kcGxsID0KKwkJJmNydGNfc3RhdGUtPmljbF9wb3J0X2Rw bGxzW3BvcnRfZHBsbF9pZF07CisKKwljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCA9IHBvcnRfZHBs bC0+cGxsOworCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUgPSBwb3J0X2RwbGwtPmh3X3N0YXRl OworfQorCitzdGF0aWMgdm9pZCBpY2xfdXBkYXRlX2FjdGl2ZV9kcGxsKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJ CSAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQoreworCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlID0KKwkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShz dGF0ZSwgY3J0Yyk7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqcHJpbWFyeV9wb3J0Owor CWVudW0gaWNsX3BvcnRfZHBsbF9pZCBwb3J0X2RwbGxfaWQ7CisKKwlwcmltYXJ5X3BvcnQgPSBl bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QgPworCQllbmNfdG9fbXN0KCZlbmNv ZGVyLT5iYXNlKS0+cHJpbWFyeSA6CisJCWVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7 CisKKwlzd2l0Y2ggKHByaW1hcnlfcG9ydC0+dGNfbW9kZSkgeworCWNhc2UgVENfUE9SVF9UQlRf QUxUOgorCQlwb3J0X2RwbGxfaWQgPSBJQ0xfUE9SVF9EUExMX0RFRkFVTFQ7CisJCWJyZWFrOwor CWNhc2UgVENfUE9SVF9EUF9BTFQ6CisJY2FzZSBUQ19QT1JUX0xFR0FDWToKKwkJcG9ydF9kcGxs X2lkID0gSUNMX1BPUlRfRFBMTF9NR19QSFk7CisJCWJyZWFrOworCX0KKworCWljbF9zZXRfYWN0 aXZlX3BvcnRfZHBsbChjcnRjX3N0YXRlLCBwb3J0X2RwbGxfaWQpOworfQorCiBzdGF0aWMgYm9v bCBpY2xfZ2V0X2NvbWJvX3BoeV9kcGxsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LAogCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCSAgIHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl ID0KIAkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Ci0Jc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7CisJc3RydWN0IGljbF9wb3J0X2RwbGwgKnBvcnRf ZHBsbCA9CisJCSZjcnRjX3N0YXRlLT5pY2xfcG9ydF9kcGxsc1tJQ0xfUE9SVF9EUExMX0RFRkFV TFRdOwogCi0JaWYgKCFpY2xfY2FsY19kcGxsX3N0YXRlKGNydGNfc3RhdGUsIGVuY29kZXIsCi0J CQkJICZjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlKSkgeworCWlmICghaWNsX2NhbGNfZHBsbF9z dGF0ZShjcnRjX3N0YXRlLCBlbmNvZGVyLCAmcG9ydF9kcGxsLT5od19zdGF0ZSkpIHsKIAkJRFJN X0RFQlVHX0tNUygiQ291bGQgbm90IGNhbGN1bGF0ZSBjb21ibyBQSFkgUExMIHN0YXRlLlxuIik7 CiAKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCXBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwo c3RhdGUsIGNydGMsICZjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLAotCQkJCSAgICAgRFBMTF9J RF9JQ0xfRFBMTDAsCi0JCQkJICAgICBEUExMX0lEX0lDTF9EUExMMSk7Ci0JaWYgKCFwbGwpIHsK Kwlwb3J0X2RwbGwtPnBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwoc3RhdGUsIGNydGMsCisJ CQkJCQkmcG9ydF9kcGxsLT5od19zdGF0ZSwKKwkJCQkJCURQTExfSURfSUNMX0RQTEwwLAorCQkJ CQkJRFBMTF9JRF9JQ0xfRFBMTDEpOworCWlmICghcG9ydF9kcGxsLT5wbGwpIHsKIAkJRFJNX0RF QlVHX0tNUygiTm8gY29tYm8gUEhZIFBMTCBmb3VuZCBmb3IgcG9ydCAlY1xuIiwKIAkJCSAgICAg IHBvcnRfbmFtZShlbmNvZGVyLT5wb3J0KSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlpbnRl bF9yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoc3RhdGUsIGNydGMsCi0JCQkJICAgIHBsbCwgJmNydGNf c3RhdGUtPmRwbGxfaHdfc3RhdGUpOworCQkJCSAgICBwb3J0X2RwbGwtPnBsbCwgJnBvcnRfZHBs bC0+aHdfc3RhdGUpOwogCi0JY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGwgPSBwbGw7CisJaWNsX3Vw ZGF0ZV9hY3RpdmVfZHBsbChzdGF0ZSwgY3J0YywgZW5jb2Rlcik7CiAKIAlyZXR1cm4gdHJ1ZTsK IH0KQEAgLTI4OTUsNDkgKzI5NDAsNTUgQEAgc3RhdGljIGJvb2wgaWNsX2dldF90Y19waHlfZHBs bHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KIAkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19z dGF0ZShzdGF0ZSwgY3J0Yyk7Ci0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3Rv X3RjKGRldl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydDsKLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKLQllbnVtIGludGVs X2RwbGxfaWQgbWluLCBtYXg7Ci0JYm9vbCByZXQ7Ci0KLQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJ TlRFTF9PVVRQVVRfRFBfTVNUKQotCQlkaWdfcG9ydCA9IGVuY190b19tc3QoJmVuY29kZXItPmJh c2UpLT5wcmltYXJ5OwotCWVsc2UKLQkJZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29k ZXItPmJhc2UpOworCXN0cnVjdCBpY2xfcG9ydF9kcGxsICpwb3J0X2RwbGw7CisJZW51bSBpbnRl bF9kcGxsX2lkIGRwbGxfaWQ7CiAKLQlpZiAoZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9U QlRfQUxUKSB7Ci0JCW1pbiA9IERQTExfSURfSUNMX1RCVFBMTDsKLQkJbWF4ID0gbWluOwotCQly ZXQgPSBpY2xfY2FsY19kcGxsX3N0YXRlKGNydGNfc3RhdGUsIGVuY29kZXIsCi0JCQkJCSAgJmNy dGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUpOwotCX0gZWxzZSB7Ci0JCW1pbiA9IGljbF90Y19wb3J0 X3RvX3BsbF9pZCh0Y19wb3J0KTsKLQkJbWF4ID0gbWluOwotCQlyZXQgPSBpY2xfY2FsY19tZ19w bGxfc3RhdGUoY3J0Y19zdGF0ZSwKLQkJCQkJICAgICZjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRl KTsKKwlwb3J0X2RwbGwgPSAmY3J0Y19zdGF0ZS0+aWNsX3BvcnRfZHBsbHNbSUNMX1BPUlRfRFBM TF9ERUZBVUxUXTsKKwlpZiAoIWljbF9jYWxjX2RwbGxfc3RhdGUoY3J0Y19zdGF0ZSwgZW5jb2Rl ciwgJnBvcnRfZHBsbC0+aHdfc3RhdGUpKSB7CisJCURSTV9ERUJVR19LTVMoIkNvdWxkIG5vdCBj YWxjdWxhdGUgVEJUIFBMTCBzdGF0ZS5cbiIpOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JaWYg KCFyZXQpIHsKLQkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90IGNhbGN1bGF0ZSBQTEwgc3RhdGUu XG4iKTsKKwlwb3J0X2RwbGwtPnBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwoc3RhdGUsIGNy dGMsCisJCQkJCQkmcG9ydF9kcGxsLT5od19zdGF0ZSwKKwkJCQkJCURQTExfSURfSUNMX1RCVFBM TCwKKwkJCQkJCURQTExfSURfSUNMX1RCVFBMTCk7CisJaWYgKCFwb3J0X2RwbGwtPnBsbCkgewor CQlEUk1fREVCVUdfS01TKCJObyBUQlQtQUxUIFBMTCBmb3VuZFxuIik7CiAJCXJldHVybiBmYWxz ZTsKIAl9CisJaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHN0YXRlLCBjcnRjLAorCQkJCSAg ICBwb3J0X2RwbGwtPnBsbCwgJnBvcnRfZHBsbC0+aHdfc3RhdGUpOwogCiAKLQlwbGwgPSBpbnRl bF9maW5kX3NoYXJlZF9kcGxsKHN0YXRlLCBjcnRjLAotCQkJCSAgICAgJmNydGNfc3RhdGUtPmRw bGxfaHdfc3RhdGUsCi0JCQkJICAgICBtaW4sIG1heCk7Ci0JaWYgKCFwbGwpIHsKLQkJRFJNX0RF QlVHX0tNUygiTm8gUExMIHNlbGVjdGVkXG4iKTsKLQkJcmV0dXJuIGZhbHNlOworCXBvcnRfZHBs bCA9ICZjcnRjX3N0YXRlLT5pY2xfcG9ydF9kcGxsc1tJQ0xfUE9SVF9EUExMX01HX1BIWV07CisJ aWYgKCFpY2xfY2FsY19tZ19wbGxfc3RhdGUoY3J0Y19zdGF0ZSwgJnBvcnRfZHBsbC0+aHdfc3Rh dGUpKSB7CisJCURSTV9ERUJVR19LTVMoIkNvdWxkIG5vdCBjYWxjdWxhdGUgTUcgUEhZIFBMTCBz dGF0ZS5cbiIpOworCQlnb3RvIGVycl91bnJlZmVyZW5jZV90YnRfcGxsOwogCX0KIAorCWRwbGxf aWQgPSBpY2xfdGNfcG9ydF90b19wbGxfaWQoaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwKKwkJ CQkJCQkgZW5jb2Rlci0+cG9ydCkpOworCXBvcnRfZHBsbC0+cGxsID0gaW50ZWxfZmluZF9zaGFy ZWRfZHBsbChzdGF0ZSwgY3J0YywKKwkJCQkJCSZwb3J0X2RwbGwtPmh3X3N0YXRlLAorCQkJCQkJ ZHBsbF9pZCwKKwkJCQkJCWRwbGxfaWQpOworCWlmICghcG9ydF9kcGxsLT5wbGwpIHsKKwkJRFJN X0RFQlVHX0tNUygiTm8gTUcgUEhZIFBMTCBmb3VuZFxuIik7CisJCWdvdG8gZXJyX3VucmVmZXJl bmNlX3RidF9wbGw7CisJfQogCWludGVsX3JlZmVyZW5jZV9zaGFyZWRfZHBsbChzdGF0ZSwgY3J0 YywKLQkJCQkgICAgcGxsLCAmY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSk7CisJCQkJICAgIHBv cnRfZHBsbC0+cGxsLCAmcG9ydF9kcGxsLT5od19zdGF0ZSk7CiAKLQljcnRjX3N0YXRlLT5zaGFy ZWRfZHBsbCA9IHBsbDsKKwlpY2xfdXBkYXRlX2FjdGl2ZV9kcGxsKHN0YXRlLCBjcnRjLCBlbmNv ZGVyKTsKIAogCXJldHVybiB0cnVlOworCitlcnJfdW5yZWZlcmVuY2VfdGJ0X3BsbDoKKwlwb3J0 X2RwbGwgPSAmY3J0Y19zdGF0ZS0+aWNsX3BvcnRfZHBsbHNbSUNMX1BPUlRfRFBMTF9ERUZBVUxU XTsKKwlpbnRlbF91bnJlZmVyZW5jZV9zaGFyZWRfZHBsbChzdGF0ZSwgY3J0YywgcG9ydF9kcGxs LT5wbGwpOworCisJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCBpY2xfZ2V0X2RwbGxz KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLApAQCAtMjk1Nyw2ICszMDA4LDI0IEBA IHN0YXRpYyBib29sIGljbF9nZXRfZHBsbHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAJcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgdm9pZCBpY2xfcHV0X2RwbGxzKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCWludGVsX2F0 b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCWVudW0gaWNsX3BvcnRfZHBs bF9pZCBpZDsKKworCWZvciAoaWQgPSBJQ0xfUE9SVF9EUExMX0RFRkFVTFQ7IGlkIDwgSUNMX1BP UlRfRFBMTF9DT1VOVDsgaWQrKykgeworCQlzdHJ1Y3QgaWNsX3BvcnRfZHBsbCAqcG9ydF9kcGxs ID0KKwkJCSZjcnRjX3N0YXRlLT5pY2xfcG9ydF9kcGxsc1tpZF07CisKKwkJaWYgKCFwb3J0X2Rw bGwtPnBsbCkKKwkJCWNvbnRpbnVlOworCisJCWludGVsX3VucmVmZXJlbmNlX3NoYXJlZF9kcGxs KHN0YXRlLCBjcnRjLCBwb3J0X2RwbGwtPnBsbCk7CisJfQorfQorCiBzdGF0aWMgYm9vbCBtZ19w bGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQlz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKIAkJCQlzdHJ1Y3QgaW50ZWxfZHBsbF9od19z dGF0ZSAqaHdfc3RhdGUpCkBAIC0zMzMwLDcgKzMzOTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRwbGxfaW5mbyBpY2xfcGxsc1tdID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxs X21nciBpY2xfcGxsX21nciA9IHsKIAkuZHBsbF9pbmZvID0gaWNsX3BsbHMsCiAJLmdldF9kcGxs cyA9IGljbF9nZXRfZHBsbHMsCi0JLnB1dF9kcGxscyA9IGludGVsX3B1dF9kcGxsLAorCS5wdXRf ZHBsbHMgPSBpY2xfcHV0X2RwbGxzLAogCS5kdW1wX2h3X3N0YXRlID0gaWNsX2R1bXBfaHdfc3Rh dGUsCiB9OwogCkBAIC0zMzQzLDcgKzM0MTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRwbGxf aW5mbyBlaGxfcGxsc1tdID0gewogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBl aGxfcGxsX21nciA9IHsKIAkuZHBsbF9pbmZvID0gZWhsX3BsbHMsCiAJLmdldF9kcGxscyA9IGlj bF9nZXRfZHBsbHMsCi0JLnB1dF9kcGxscyA9IGludGVsX3B1dF9kcGxsLAorCS5wdXRfZHBsbHMg PSBpY2xfcHV0X2RwbGxzLAogCS5kdW1wX2h3X3N0YXRlID0gaWNsX2R1bXBfaHdfc3RhdGUsCiB9 OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxf bWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmgKaW5k ZXggMTZkZGFiMTM4NTc0Li41NzlmMmNlYWZiYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmgKQEAgLTE0MSw2ICsxNDEsMTMgQEAgZW51bSBpbnRl bF9kcGxsX2lkIHsKIH07CiAjZGVmaW5lIEk5MTVfTlVNX1BMTFMgNwogCitlbnVtIGljbF9wb3J0 X2RwbGxfaWQgeworCUlDTF9QT1JUX0RQTExfREVGQVVMVCwKKwlJQ0xfUE9SVF9EUExMX01HX1BI WSwKKworCUlDTF9QT1JUX0RQTExfQ09VTlQsCit9OworCiBzdHJ1Y3QgaW50ZWxfZHBsbF9od19z dGF0ZSB7CiAJLyogaTl4eCwgcGNoIHBsbHMgKi8KIAl1MzIgZHBsbDsKQEAgLTMzNyw2ICszNDQs OCBAQCBib29sIGludGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAogCQkJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKTsKIHZvaWQg aW50ZWxfcmVsZWFzZV9zaGFyZWRfZHBsbHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCiAJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpOwordm9pZCBpY2xfc2V0X2FjdGl2ZV9w b3J0X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgICBl bnVtIGljbF9wb3J0X2RwbGxfaWQgcG9ydF9kcGxsX2lkKTsKIHZvaWQgaW50ZWxfcHJlcGFyZV9z aGFyZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiB2 b2lkIGludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSk7CiB2b2lkIGludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAppbmRleCBkOWU3ZDAxMWVkNGEuLjEyYTEwMmUyMzljNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKQEAgLTgxMiw2ICs4MTIsMTUgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCS8q IEFjdHVhbCByZWdpc3RlciBzdGF0ZSBvZiB0aGUgZHBsbCwgZm9yIHNoYXJlZCBkcGxsIGNyb3Nz LWNoZWNraW5nLiAqLwogCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlIGRwbGxfaHdfc3RhdGU7 CiAKKwkvKgorCSAqIElDTCByZXNlcnZlZCBEUExMcyBmb3IgdGhlIENSVEMvcG9ydC4gVGhlIGFj dGl2ZSBQTEwgaXMgc2VsZWN0ZWQgYnkKKwkgKiBzZXR0aW5nIHNoYXJlZF9kcGxsIGFuZCBkcGxs X2h3X3N0YXRlIHRvIG9uZSBvZiB0aGVzZSByZXNlcnZlZCBvbmVzLgorCSAqLworCXN0cnVjdCBp Y2xfcG9ydF9kcGxsIHsKKwkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7CisJCXN0cnVj dCBpbnRlbF9kcGxsX2h3X3N0YXRlIGh3X3N0YXRlOworCX0gaWNsX3BvcnRfZHBsbHNbSUNMX1BP UlRfRFBMTF9DT1VOVF07CisKIAkvKiBEU0kgUExMIHJlZ2lzdGVycyAqLwogCXN0cnVjdCB7CiAJ CXUzMiBjdHJsLCBkaXY7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==