From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 34/45] drm/amd/display: Compensate for XGMI SS downspread on dprefclk Date: Tue, 11 Dec 2018 17:57:40 -0500 Message-ID: <1544569071-7114-35-git-send-email-sunpeng.li@amd.com> References: <1544569071-7114-1-git-send-email-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1544569071-7114-1-git-send-email-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: sunpeng.li-5C7GfCeVMHo@public.gmane.org RnJvbTogTGVvIExpIDxzdW5wZW5nLmxpQGFtZC5jb20+CgpbV2h5XQpXaGVuIFhHTUkgaXMgZW5h YmxlZCwgd2UgbmVlZCB0byBhZGp1c3QgdGhlIGRwcmVmY2xrIGFjY29yZGluZyB0byB0aGUKV0FG TCBsaW5rJ3Mgc3ByZWFkIHNwZWN0cnVtIGluZm8uIFRoaXMgaXMgZm9yIFZHMjAgKERDRTEyMSkg b25seS4KCltIb3ddCmRjZV9jbGtfbWdyIGFscmVhZHkgc3RvcmVzIFNTIGluZm8sIGN1cnJlbnRs eSBiZWluZyB1c2VkIGJ5IGF1ZGlvIGNsb2NrLgpUaGVyZWZvcmUsIHBhdGNoIHRoZSBjbGtfbWdy J3MgU1MgaW5mbyB3aXRoIHRoZSB4R01JIFNTIGluZm8sIGlmIHhHTUkKaXMgZW5hYmxlZC4gRm9y IGRpc3BsYXkgY2xvY2ssIGFkanVzdCBpdCBkdXJpbmcgZGNlMTJfdXBkYXRlX2Nsb2NrcygpCmJl Zm9yZSBjYWxsaW5nIHNldF9jbG9jaygpLgoKU2luY2Ugd2UgcmVseSBvbiBhIG1taHViIHJlZ2lz dGVyIHRvIHJlbGlhYmx5IGRldGVybWluZSBpZiB4R01JIGlzCmVuYWJsZWQsIHRoZSBwYXRjaGlu ZyBzdGVwIG5lZWRzIHRvIGhhcHBlbiBhZnRlciByZXNvdXJjZV9jb25zdHJ1Y3QoKQpoYXMgaW5p dGlhbGl6ZWQgdGhlIGhhcmR3YXJlIHNlcXVlbmNlci4KClNpZ25lZC1vZmYtYnk6IExlbyBMaSA8 c3VucGVuZy5saUBhbWQuY29tPgpSZXZpZXdlZC1ieTogSGVyc2VuIFd1IDxoZXJzZW54cy53dUBh bWQuY29tPgpBY2tlZC1ieTogSGFycnkgV2VudGxhbmQgPEhhcnJ5LldlbnRsYW5kQGFtZC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21nci5jICAg fCA2NCArKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Rj ZS9kY2VfY2xrX21nci5oICAgfCAzNSArKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvZGNlL2RjZV9od3NlcS5oICAgICB8IDEyICsrKysKIC4uLi9hbWQvZGlzcGxheS9k Yy9kY2UxMjAvZGNlMTIwX2h3X3NlcXVlbmNlci5jICAgIHwgMTUgKysrKwogLi4uL2FtZC9kaXNw bGF5L2RjL2RjZTEyMC9kY2UxMjBfaHdfc2VxdWVuY2VyLmggICAgfCAgMSArCiAuLi4vZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjZTEyMC9kY2UxMjBfcmVzb3VyY2UuYyAgICB8IDgxICsrKysrKysrKysr KysrKysrKysrLS0KIDYgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2Uv ZGNlX2Nsa19tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2Ns a19tZ3IuYwppbmRleCBkMDViMTc1Li4zYzUyYTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9jbGtfbWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21nci5jCkBAIC00NTAsNiArNDUwLDQyIEBAIHZv aWQgZGNlX2Nsb2NrX3JlYWRfc3NfaW5mbyhzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNl KQogCX0KIH0KIAorLyoqCisgKiBkY2UxMjFfY2xvY2tfcGF0Y2hfeGdtaV9zc19pbmZvKCkgLSBT YXZlIFhHTUkgc3ByZWFkIHNwZWN0cnVtIGluZm8KKyAqIEBjbGtfbWdyOiBjbG9jayBtYW5hZ2Vy IGJhc2Ugc3RydWN0dXJlCisgKgorICogUmVhZHMgZnJvbSBWQklPUyB0aGUgWEdNSSBzcHJlYWQg c3BlY3RydW0gaW5mbyBhbmQgc2F2ZXMgaXQgd2l0aGluCisgKiB0aGUgZGNlIGNsb2NrIG1hbmFn ZXIuIFRoaXMgb3BlcmF0aW9uIHdpbGwgb3ZlcndyaXRlIHRoZSBleGlzdGluZyBkcHJlZmNsawor ICogU1MgdmFsdWVzIGlmIHRoZSB2QklPUyBxdWVyeSBzdWNjZWVkcy4gT3RoZXJ3aXNlLCBpdCBk b2VzIG5vdGhpbmcuIEl0IGFsc28KKyAqIHNldHMgdGhlIC0+eGdtaV9lbmFibGVkIGZsYWcuCisg Ki8KK3ZvaWQgZGNlMTIxX2Nsb2NrX3BhdGNoX3hnbWlfc3NfaW5mbyhzdHJ1Y3QgY2xrX21nciAq Y2xrX21ncikKK3sKKwlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0gVE9fRENFX0NM S19NR1IoY2xrX21ncik7CisJZW51bSBicF9yZXN1bHQgcmVzdWx0OworCXN0cnVjdCBzcHJlYWRf c3BlY3RydW1faW5mbyBpbmZvID0geyB7IDAgfSB9OworCXN0cnVjdCBkY19iaW9zICpicCA9IGNs a19tZ3JfZGNlLT5iYXNlLmN0eC0+ZGNfYmlvczsKKworCWNsa19tZ3JfZGNlLT54Z21pX2VuYWJs ZWQgPSBmYWxzZTsKKworCXJlc3VsdCA9IGJwLT5mdW5jcy0+Z2V0X3NwcmVhZF9zcGVjdHJ1bV9p bmZvKGJwLCBBU19TSUdOQUxfVFlQRV9YR01JLAorCQkJCQkJICAgICAwLCAmaW5mbyk7CisJaWYg KHJlc3VsdCA9PSBCUF9SRVNVTFRfT0sgJiYgaW5mby5zcHJlYWRfc3BlY3RydW1fcGVyY2VudGFn ZSAhPSAwKSB7CisJCWNsa19tZ3JfZGNlLT54Z21pX2VuYWJsZWQgPSB0cnVlOworCQljbGtfbWdy X2RjZS0+c3Nfb25fZHByZWZjbGsgPSB0cnVlOworCQljbGtfbWdyX2RjZS0+ZHByZWZjbGtfc3Nf ZGl2aWRlciA9CisJCQkJaW5mby5zcHJlYWRfcGVyY2VudGFnZV9kaXZpZGVyOworCisJCWlmIChp bmZvLnR5cGUuQ0VOVEVSX01PREUgPT0gMCkgeworCQkJLyogQ3VycmVudGx5IGZvciBEUCBSZWZl cmVuY2UgY2xvY2sgd2UKKwkJCSAqIG5lZWQgb25seSBTUyBwZXJjZW50YWdlIGZvcgorCQkJICog ZG93bnNwcmVhZCAqLworCQkJY2xrX21ncl9kY2UtPmRwcmVmY2xrX3NzX3BlcmNlbnRhZ2UgPQor CQkJCQlpbmZvLnNwcmVhZF9zcGVjdHJ1bV9wZXJjZW50YWdlOworCQl9CisJfQorfQorCiB2b2lk IGRjZTExMF9maWxsX2Rpc3BsYXlfY29uZmlncygKIAljb25zdCBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQsCiAJc3RydWN0IGRtX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiAqcHBfZGlzcGxheV9j ZmcpCkBAIC03MTAsNiArNzQ2LDEzIEBAIHN0YXRpYyB2b2lkIGRjZTEyX3VwZGF0ZV9jbG9ja3Mo c3RydWN0IGNsa19tZ3IgKmNsa19tZ3IsCiAKIAlpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZlX3Rv X2xvd2VyLCBwYXRjaGVkX2Rpc3BfY2xrLCBjbGtfbWdyLT5jbGtzLmRpc3BjbGtfa2h6KSkgewog CQljbG9ja192b2x0YWdlX3JlcS5jbGtfdHlwZSA9IERNX1BQX0NMT0NLX1RZUEVfRElTUExBWV9D TEs7CisJCS8qCisJCSAqIFdoZW4geEdNSSBpcyBlbmFibGVkLCB0aGUgZGlzcGxheSBjbGsgbmVl ZHMgdG8gYmUgYWRqdXN0ZWQKKwkJICogd2l0aCB0aGUgV0FGTCBsaW5rJ3MgU1MgcGVyY2VudGFn ZS4KKwkJICovCisJCWlmIChjbGtfbWdyX2RjZS0+eGdtaV9lbmFibGVkKQorCQkJcGF0Y2hlZF9k aXNwX2NsayA9IGNsa19tZ3JfYWRqdXN0X2RwX3JlZl9mcmVxX2Zvcl9zcygKKwkJCQkJY2xrX21n cl9kY2UsIHBhdGNoZWRfZGlzcF9jbGspOwogCQljbG9ja192b2x0YWdlX3JlcS5jbG9ja3NfaW5f a2h6ID0gcGF0Y2hlZF9kaXNwX2NsazsKIAkJY2xrX21nci0+Y2xrcy5kaXNwY2xrX2toeiA9IGRj ZTExMl9zZXRfY2xvY2soY2xrX21nciwgcGF0Y2hlZF9kaXNwX2Nsayk7CiAKQEAgLTg3NSw2ICs5 MTgsMjcgQEAgc3RydWN0IGNsa19tZ3IgKmRjZTEyMF9jbGtfbWdyX2NyZWF0ZShzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4KQogCXJldHVybiAmY2xrX21ncl9kY2UtPmJhc2U7CiB9CiAKK3N0cnVjdCBj bGtfbWdyICpkY2UxMjFfY2xrX21ncl9jcmVhdGUoc3RydWN0IGRjX2NvbnRleHQgKmN0eCkKK3sK KwlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0ga3phbGxvYyhzaXplb2YoKmNsa19t Z3JfZGNlKSwKKwkJCQkJCSAgR0ZQX0tFUk5FTCk7CisKKwlpZiAoY2xrX21ncl9kY2UgPT0gTlVM TCkgeworCQlCUkVBS19UT19ERUJVR0dFUigpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwltZW1j cHkoY2xrX21ncl9kY2UtPm1heF9jbGtzX2J5X3N0YXRlLCBkY2UxMjBfbWF4X2Nsa3NfYnlfc3Rh dGUsCisJICAgICAgIHNpemVvZihkY2UxMjBfbWF4X2Nsa3NfYnlfc3RhdGUpKTsKKworCWRjZV9j bGtfbWdyX2NvbnN0cnVjdChjbGtfbWdyX2RjZSwgY3R4LCBOVUxMLCBOVUxMLCBOVUxMKTsKKwor CWNsa19tZ3JfZGNlLT5kcHJlZmNsa19raHogPSA2MjUwMDA7CisJY2xrX21ncl9kY2UtPmJhc2Uu ZnVuY3MgPSAmZGNlMTIwX2Z1bmNzOworCisJcmV0dXJuICZjbGtfbWdyX2RjZS0+YmFzZTsKK30K Kwogdm9pZCBkY2VfY2xrX21ncl9kZXN0cm95KHN0cnVjdCBjbGtfbWdyICoqY2xrX21ncikKIHsK IAlzdHJ1Y3QgZGNlX2Nsa19tZ3IgKmNsa19tZ3JfZGNlID0gVE9fRENFX0NMS19NR1IoKmNsa19t Z3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2Vf Y2xrX21nci5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZS9kY2VfY2xrX21n ci5oCmluZGV4IDNiY2ViMzEuLmM4ZjhjNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9kY2UvZGNlX2Nsa19tZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvZGNlL2RjZV9jbGtfbWdyLmgKQEAgLTk0LDExICs5NCwzNyBAQCBzdHJ1Y3Qg ZGNlX2Nsa19tZ3IgewogCSAqIFRoaXMgaXMgYmFzaWNhbGx5ICJDcnlzdGFsIEZyZXF1ZW5jeSBJ biBLSHoiIChYVEFMSU4pIGZyZXF1ZW5jeSAqLwogCWludCBkZnNfYnlwYXNzX2Rpc3BfY2xrOwog Ci0JLyogRmxhZyBmb3IgRW5hYmxlZCBTUyBvbiBEUFJFRkNMSyAqLworCS8qKgorCSAqIEBzc19v bl9kcHJlZmNsazoKKwkgKgorCSAqIFRydWUgaWYgc3ByZWFkIHNwZWN0cnVtIGlzIGVuYWJsZWQg b24gdGhlIERQIHJlZiBjbG9jay4KKwkgKi8KIAlib29sIHNzX29uX2RwcmVmY2xrOwotCS8qIERQ UkVGQ0xLIFNTIHBlcmNlbnRhZ2UgKGlmIGRvd24tc3ByZWFkIGVuYWJsZWQpICovCisKKwkvKioK KwkgKiBAeGdtaV9lbmFibGVkOgorCSAqCisJICogVHJ1ZSBpZiB4R01JIGlzIGVuYWJsZWQuIE9u IFZHMjAsIGJvdGggYXVkaW8gYW5kIGRpc3BsYXkgY2xvY2tzIG5lZWQKKwkgKiB0byBiZSBhZGp1 c3RlZCB3aXRoIHRoZSBXQUZMIGxpbmsncyBTUyBpbmZvIGlmIHhHTUkgaXMgZW5hYmxlZC4KKwkg Ki8KKwlib29sIHhnbWlfZW5hYmxlZDsKKworCS8qKgorCSAqIEBkcHJlZmNsa19zc19wZXJjZW50 YWdlOgorCSAqCisJICogRFBSRUZDTEsgU1MgcGVyY2VudGFnZSAoaWYgZG93bi1zcHJlYWQgZW5h YmxlZCkuCisJICoKKwkgKiBOb3RlIHRoYXQgaWYgWEdNSSBpcyBlbmFibGVkLCB0aGUgU1MgaW5m byAocGVyY2VudGFnZSBhbmQgZGl2aWRlcikKKwkgKiBmcm9tIHRoZSBXQUZMIGxpbmsgaXMgdXNl ZCBpbnN0ZWFkLiBUaGlzIGlzIGRlY2lkZWQgZHVyaW5nCisJICogZGNlX2Nsa19tZ3IgaW5pdGlh bGl6YXRpb24uCisJICovCiAJaW50IGRwcmVmY2xrX3NzX3BlcmNlbnRhZ2U7Ci0JLyogRFBSRUZD TEsgU1MgcGVyY2VudGFnZSBEaXZpZGVyICgxMDAgb3IgMTAwMCkgKi8KKworCS8qKgorCSAqIEBk cHJlZmNsa19zc19kaXZpZGVyOgorCSAqCisJICogRFBSRUZDTEsgU1MgcGVyY2VudGFnZSBEaXZp ZGVyICgxMDAgb3IgMTAwMCkuCisJICovCiAJaW50IGRwcmVmY2xrX3NzX2RpdmlkZXI7CiAJaW50 IGRwcmVmY2xrX2toejsKIApAQCAtMTYzLDYgKzE4OSw5IEBAIHN0cnVjdCBjbGtfbWdyICpkY2Ux MTJfY2xrX21ncl9jcmVhdGUoCiAKIHN0cnVjdCBjbGtfbWdyICpkY2UxMjBfY2xrX21ncl9jcmVh dGUoc3RydWN0IGRjX2NvbnRleHQgKmN0eCk7CiAKK3N0cnVjdCBjbGtfbWdyICpkY2UxMjFfY2xr X21ncl9jcmVhdGUoc3RydWN0IGRjX2NvbnRleHQgKmN0eCk7Cit2b2lkIGRjZTEyMV9jbG9ja19w YXRjaF94Z21pX3NzX2luZm8oc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOworCiB2b2lkIGRjZV9j bGtfbWdyX2Rlc3Ryb3koc3RydWN0IGNsa19tZ3IgKipjbGtfbWdyKTsKIAogaW50IGRlbnRpc3Rf Z2V0X2RpdmlkZXJfZnJvbV9kaWQoaW50IGRpZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9od3NlcS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2RjZS9kY2VfaHdzZXEuaAppbmRleCBjODNhN2YwLi45NTZiZGYxIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlL2RjZV9od3NlcS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UvZGNlX2h3c2VxLmgKQEAgLTEzMyw2 ICsxMzMsMTAgQEAKIAlTUihEQ0hVQl9BR1BfVE9QKSwgXAogCUJMX1JFR19MSVNUKCkKIAorI2Rl ZmluZSBIV1NFUV9WRzIwX1JFR19MSVNUKCkgXAorCUhXU0VRX0RDRTEyMF9SRUdfTElTVCgpLFwK KwlNTUhVQl9TUihNQ19WTV9YR01JX0xGQl9DTlRMKQorCiAjZGVmaW5lIEhXU0VRX0RDRTExMl9S RUdfTElTVCgpIFwKIAlIV1NFUV9EQ0UxMF9SRUdfTElTVCgpLCBcCiAJSFdTRVFfUElYRUxfUkFU RV9SRUdfTElTVChDUlRDKSwgXApAQCAtMjk4LDYgKzMwMiw3IEBAIHN0cnVjdCBkY2VfaHdzZXFf cmVnaXN0ZXJzIHsKIAl1aW50MzJfdCBNQ19WTV9TWVNURU1fQVBFUlRVUkVfREVGQVVMVF9BRERS X0xTQjsKIAl1aW50MzJfdCBNQ19WTV9TWVNURU1fQVBFUlRVUkVfTE9XX0FERFI7CiAJdWludDMy X3QgTUNfVk1fU1lTVEVNX0FQRVJUVVJFX0hJR0hfQUREUjsKKwl1aW50MzJfdCBNQ19WTV9YR01J X0xGQl9DTlRMOwogCXVpbnQzMl90IEFaQUxJQV9BVURJT19EVE87CiAJdWludDMyX3QgQVpBTElB X0NPTlRST0xMRVJfQ0xPQ0tfR0FUSU5HOwogfTsKQEAgLTM4Miw2ICszODcsMTEgQEAgc3RydWN0 IGRjZV9od3NlcV9yZWdpc3RlcnMgewogCUhXU19TRigsIExWVE1BX1BXUlNFUV9DTlRMLCBMVlRN QV9CTE9OLCBtYXNrX3NoKSwgXAogCUhXU19TRigsIExWVE1BX1BXUlNFUV9TVEFURSwgTFZUTUFf UFdSU0VRX1RBUkdFVF9TVEFURV9SLCBtYXNrX3NoKQogCisjZGVmaW5lIEhXU0VRX1ZHMjBfTUFT S19TSF9MSVNUKG1hc2tfc2gpXAorCUhXU0VRX0RDRTEyX01BU0tfU0hfTElTVChtYXNrX3NoKSxc CisJSFdTX1NGKCwgTUNfVk1fWEdNSV9MRkJfQ05UTCwgUEZfTEZCX1JFR0lPTiwgbWFza19zaCks XAorCUhXU19TRigsIE1DX1ZNX1hHTUlfTEZCX0NOVEwsIFBGX01BWF9SRUdJT04sIG1hc2tfc2gp CisKICNkZWZpbmUgSFdTRVFfRENOX01BU0tfU0hfTElTVChtYXNrX3NoKVwKIAlIV1NFUV9QSVhF TF9SQVRFX01BU0tfU0hfTElTVChtYXNrX3NoLCBPVEcwXyksXAogCUhXU19TRjEoT1RHMF8sIFBI WVBMTF9QSVhFTF9SQVRFX0NOVEwsIFBIWVBMTF9QSVhFTF9SQVRFX1NPVVJDRSwgbWFza19zaCks IFwKQEAgLTQ3MCw2ICs0ODAsOCBAQCBzdHJ1Y3QgZGNlX2h3c2VxX3JlZ2lzdGVycyB7CiAJdHlw ZSBQSFlTSUNBTF9QQUdFX05VTUJFUl9NU0I7XAogCXR5cGUgUEhZU0lDQUxfUEFHRV9OVU1CRVJf TFNCO1wKIAl0eXBlIExPR0lDQUxfQUREUjsgXAorCXR5cGUgUEZfTEZCX1JFR0lPTjtcCisJdHlw ZSBQRl9NQVhfUkVHSU9OO1wKIAl0eXBlIEVOQUJMRV9MMV9UTEI7XAogCXR5cGUgU1lTVEVNX0FD Q0VTU19NT0RFO1wKIAl0eXBlIExWVE1BX0JMT047XApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTEyMC9kY2UxMjBfaHdfc2VxdWVuY2VyLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZGNlMTIwL2RjZTEyMF9od19zZXF1ZW5jZXIuYwppbmRl eCBlYjBmNWY5Li4xY2EzMDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvZGNlMTIwL2RjZTEyMF9od19zZXF1ZW5jZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvZGNlMTIwL2RjZTEyMF9od19zZXF1ZW5jZXIuYwpAQCAtMjQ0LDYgKzI0 NCwyMSBAQCBzdGF0aWMgdm9pZCBkY2UxMjBfdXBkYXRlX2RjaHViKAogCWRoX2RhdGEtPmRjaHVi X2luZm9fdmFsaWQgPSBmYWxzZTsKIH0KIAorLyoqCisgKiBkY2UxMjFfeGdtaV9lbmFibGVkKCkg LSBDaGVjayBpZiB4R01JIGlzIGVuYWJsZWQKKyAqIEBod3M6IERDRSBoYXJkd2FyZSBzZXF1ZW5j ZXIgb2JqZWN0CisgKgorICogUmV0dXJuIHRydWUgaWYgeEdNSSBpcyBlbmFibGVkLiBGYWxzZSBv dGhlcndpc2UuCisgKi8KK2Jvb2wgZGNlMTIxX3hnbWlfZW5hYmxlZChzdHJ1Y3QgZGNlX2h3c2Vx ICpod3MpCit7CisJdWludDMyX3QgcGZfbWF4X3JlZ2lvbjsKKworCVJFR19HRVQoTUNfVk1fWEdN SV9MRkJfQ05UTCwgUEZfTUFYX1JFR0lPTiwgJnBmX21heF9yZWdpb24pOworCS8qIFBGX01BWF9S RUdJT04gPT0gMCBtZWFucyB4Z21pIGlzIGRpc2FibGVkICovCisJcmV0dXJuICEhcGZfbWF4X3Jl Z2lvbjsKK30KKwogdm9pZCBkY2UxMjBfaHdfc2VxdWVuY2VyX2NvbnN0cnVjdChzdHJ1Y3QgZGMg KmRjKQogewogCS8qIEFsbCByZWdpc3RlcnMgdXNlZCBieSBkY2UxMS4yIG1hdGNoIHRob3NlIGlu IGRjZTExIGluIG9mZnNldCBhbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9kY2UxMjAvZGNlMTIwX2h3X3NlcXVlbmNlci5oIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2RjZTEyMC9kY2UxMjBfaHdfc2VxdWVuY2VyLmgKaW5kZXggNzdhNmI4Ni4u YzUxYWZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTEy MC9kY2UxMjBfaHdfc2VxdWVuY2VyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2RjZTEyMC9kY2UxMjBfaHdfc2VxdWVuY2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogc3Ry dWN0IGRjOwogCitib29sIGRjZTEyMV94Z21pX2VuYWJsZWQoc3RydWN0IGRjZV9od3NlcSAqaHdz KTsKIHZvaWQgZGNlMTIwX2h3X3NlcXVlbmNlcl9jb25zdHJ1Y3Qoc3RydWN0IGRjICpkYyk7CiAK ICNlbmRpZiAvKiBfX0RDX0hXU1NfRENFMTEyX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RjZTEyMC9kY2UxMjBfcmVzb3VyY2UuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9kY2UxMjAvZGNlMTIwX3Jlc291cmNlLmMKaW5kZXggZjEy Njk2Ni4uNDhhMjEwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2RjZTEyMC9kY2UxMjBfcmVzb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvZGNlMTIwL2RjZTEyMF9yZXNvdXJjZS5jCkBAIC02Miw2ICs2Miw4IEBACiAjaW5jbHVk ZSAic29jMTVfaHdfaXAuaCIKICNpbmNsdWRlICJ2ZWdhMTBfaXBfb2Zmc2V0LmgiCiAjaW5jbHVk ZSAibmJpby9uYmlvXzZfMV9vZmZzZXQuaCIKKyNpbmNsdWRlICJtbWh1Yi9tbWh1Yl85XzRfMF9v ZmZzZXQuaCIKKyNpbmNsdWRlICJtbWh1Yi9tbWh1Yl85XzRfMF9zaF9tYXNrLmgiCiAjaW5jbHVk ZSAicmVnX2hlbHBlci5oIgogCiAjaW5jbHVkZSAiZGNlMTAwL2RjZTEwMF9yZXNvdXJjZS5oIgpA QCAtMTM5LDYgKzE0MSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRjZTExMF90aW1pbmdfZ2Vu ZXJhdG9yX29mZnNldHMgZGNlMTIwX3RnX29mZnNldHNbXSA9IHsKIAkucmVnX25hbWUgPSBCQVNF KG1tICMjIGJsb2NrICMjIGlkICMjIF8gIyMgcmVnX25hbWUgIyMgX0JBU0VfSURYKSArIFwKIAkJ CQkJbW0gIyMgYmxvY2sgIyMgaWQgIyMgXyAjIyByZWdfbmFtZQogCisvKiBNTUhVQiAqLworI2Rl ZmluZSBNTUhVQl9CQVNFX0lOTkVSKHNlZykgXAorCU1NSFVCX0JBU0VfX0lOU1QwX1NFRyAjIyBz ZWcKKworI2RlZmluZSBNTUhVQl9CQVNFKHNlZykgXAorCU1NSFVCX0JBU0VfSU5ORVIoc2VnKQor CisjZGVmaW5lIE1NSFVCX1NSKHJlZ19uYW1lKVwKKwkJLnJlZ19uYW1lID0gTU1IVUJfQkFTRSht bSAjIyByZWdfbmFtZSAjIyBfQkFTRV9JRFgpICsgIFwKKwkJCQkJbW0gIyMgcmVnX25hbWUKKwog LyogbWFjcm9zIHRvIGV4cGVuZCByZWdpc3RlciBsaXN0IG1hY3JvIGRlZmluZWQgaW4gSFcgb2Jq ZWN0IGhlYWRlciBmaWxlCiAgKiBlbmQgKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC02ODEs NiArNjk0LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGNlX2h3c2VxX21hc2sgaHdzZXFfbWFz ayA9IHsKIAkJSFdTRVFfRENFMTJfTUFTS19TSF9MSVNUKF9NQVNLKQogfTsKIAorLyogSFdTRVEg cmVncyBmb3IgVkcyMCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkY2VfaHdzZXFfcmVnaXN0ZXJz IGRjZTEyMV9od3NlcV9yZWcgPSB7CisJCUhXU0VRX1ZHMjBfUkVHX0xJU1QoKQorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkY2VfaHdzZXFfc2hpZnQgZGNlMTIxX2h3c2VxX3NoaWZ0ID0gewor CQlIV1NFUV9WRzIwX01BU0tfU0hfTElTVChfX1NISUZUKQorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkY2VfaHdzZXFfbWFzayBkY2UxMjFfaHdzZXFfbWFzayA9IHsKKwkJSFdTRVFfVkcyMF9N QVNLX1NIX0xJU1QoX01BU0spCit9OworCiBzdGF0aWMgc3RydWN0IGRjZV9od3NlcSAqZGNlMTIw X2h3c2VxX2NyZWF0ZSgKIAlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KQogewpAQCAtNjk1LDYgKzcy MSwyMCBAQCBzdGF0aWMgc3RydWN0IGRjZV9od3NlcSAqZGNlMTIwX2h3c2VxX2NyZWF0ZSgKIAly ZXR1cm4gaHdzOwogfQogCitzdGF0aWMgc3RydWN0IGRjZV9od3NlcSAqZGNlMTIxX2h3c2VxX2Ny ZWF0ZSgKKwlzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KQoreworCXN0cnVjdCBkY2VfaHdzZXEgKmh3 cyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkY2VfaHdzZXEpLCBHRlBfS0VSTkVMKTsKKworCWlm IChod3MpIHsKKwkJaHdzLT5jdHggPSBjdHg7CisJCWh3cy0+cmVncyA9ICZkY2UxMjFfaHdzZXFf cmVnOworCQlod3MtPnNoaWZ0cyA9ICZkY2UxMjFfaHdzZXFfc2hpZnQ7CisJCWh3cy0+bWFza3Mg PSAmZGNlMTIxX2h3c2VxX21hc2s7CisJfQorCXJldHVybiBod3M7Cit9CisKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcmVzb3VyY2VfY3JlYXRlX2Z1bmNzIHJlc19jcmVhdGVfZnVuY3MgPSB7CiAJLnJl YWRfZGNlX3N0cmFwcyA9IHJlYWRfZGNlX3N0cmFwcywKIAkuY3JlYXRlX2F1ZGlvID0gY3JlYXRl X2F1ZGlvLApAQCAtNzAyLDYgKzc0MiwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJlc291cmNl X2NyZWF0ZV9mdW5jcyByZXNfY3JlYXRlX2Z1bmNzID0gewogCS5jcmVhdGVfaHdzZXEgPSBkY2Ux MjBfaHdzZXFfY3JlYXRlLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9jcmVh dGVfZnVuY3MgZGNlMTIxX3Jlc19jcmVhdGVfZnVuY3MgPSB7CisJLnJlYWRfZGNlX3N0cmFwcyA9 IHJlYWRfZGNlX3N0cmFwcywKKwkuY3JlYXRlX2F1ZGlvID0gY3JlYXRlX2F1ZGlvLAorCS5jcmVh dGVfc3RyZWFtX2VuY29kZXIgPSBkY2UxMjBfc3RyZWFtX2VuY29kZXJfY3JlYXRlLAorCS5jcmVh dGVfaHdzZXEgPSBkY2UxMjFfaHdzZXFfY3JlYXRlLAorfTsKKworCiAjZGVmaW5lIG1pX2luc3Rf cmVncyhpZCkgeyBNSV9EQ0UxMl9SRUdfTElTVChpZCkgfQogc3RhdGljIGNvbnN0IHN0cnVjdCBk Y2VfbWVtX2lucHV0X3JlZ2lzdGVycyBtaV9yZWdzW10gPSB7CiAJCW1pX2luc3RfcmVncygwKSwK QEAgLTkxMSw3ICs5NTksOCBAQCBzdGF0aWMgYm9vbCBjb25zdHJ1Y3QoCiAJaW50IGo7CiAJc3Ry dWN0IGRjX2NvbnRleHQgKmN0eCA9IGRjLT5jdHg7CiAJc3RydWN0IGlycV9zZXJ2aWNlX2luaXRf ZGF0YSBpcnFfaW5pdF9kYXRhOwotCWJvb2wgaGFydmVzdF9lbmFibGVkID0gQVNJQ1JFVl9JU19W RUdBMjBfUChjdHgtPmFzaWNfaWQuaHdfaW50ZXJuYWxfcmV2KTsKKwlzdGF0aWMgY29uc3Qgc3Ry dWN0IHJlc291cmNlX2NyZWF0ZV9mdW5jcyAqcmVzX2Z1bmNzOworCWJvb2wgaXNfdmcyMCA9IEFT SUNSRVZfSVNfVkVHQTIwX1AoY3R4LT5hc2ljX2lkLmh3X2ludGVybmFsX3Jldik7CiAJdWludDMy X3QgcGlwZV9mdXNlczsKIAogCWN0eC0+ZGNfYmlvcy0+cmVncyA9ICZiaW9zX3JlZ3M7CkBAIC05 NzUsNyArMTAyNCwxMSBAQCBzdGF0aWMgYm9vbCBjb25zdHJ1Y3QoCiAJCX0KIAl9CiAKLQlwb29s LT5iYXNlLmNsa19tZ3IgPSBkY2UxMjBfY2xrX21ncl9jcmVhdGUoY3R4KTsKKwlpZiAoaXNfdmcy MCkKKwkJcG9vbC0+YmFzZS5jbGtfbWdyID0gZGNlMTIxX2Nsa19tZ3JfY3JlYXRlKGN0eCk7CisJ ZWxzZQorCQlwb29sLT5iYXNlLmNsa19tZ3IgPSBkY2UxMjBfY2xrX21ncl9jcmVhdGUoY3R4KTsK KwogCWlmIChwb29sLT5iYXNlLmNsa19tZ3IgPT0gTlVMTCkgewogCQlkbV9lcnJvcigiREM6IGZh aWxlZCB0byBjcmVhdGUgZGlzcGxheSBjbG9jayFcbiIpOwogCQlCUkVBS19UT19ERUJVR0dFUigp OwpAQCAtMTAwOCwxNCArMTA2MSwxNCBAQCBzdGF0aWMgYm9vbCBjb25zdHJ1Y3QoCiAJaWYgKCFw b29sLT5iYXNlLmlycXMpCiAJCWdvdG8gaXJxc19jcmVhdGVfZmFpbDsKIAotCS8qIHJldHJpZXZl IHZhbGlkIHBpcGUgZnVzZXMgKi8KLQlpZiAoaGFydmVzdF9lbmFibGVkKQorCS8qIFZHMjA6IFBp cGUgaGFydmVzdGluZyBlbmFibGVkLCByZXRyaWV2ZSB2YWxpZCBwaXBlIGZ1c2VzICovCisJaWYg KGlzX3ZnMjApCiAJCXBpcGVfZnVzZXMgPSByZWFkX3BpcGVfZnVzZXMoY3R4KTsKIAogCS8qIGlu ZGV4IHRvIHZhbGlkIHBpcGUgcmVzb3VyY2UgKi8KIAlqID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwg cG9vbC0+YmFzZS5waXBlX2NvdW50OyBpKyspIHsKLQkJaWYgKGhhcnZlc3RfZW5hYmxlZCkgewor CQlpZiAoaXNfdmcyMCkgewogCQkJaWYgKChwaXBlX2Z1c2VzICYgKDEgPDwgaSkpICE9IDApIHsK IAkJCQlkbV9lcnJvcigiREM6IHNraXAgaW52YWxpZCBwaXBlICVkIVxuIiwgaSk7CiAJCQkJY29u dGludWU7CkBAIC0xMDkzLDEwICsxMTQ2LDI0IEBAIHN0YXRpYyBib29sIGNvbnN0cnVjdCgKIAlw b29sLT5iYXNlLnBpcGVfY291bnQgPSBqOwogCXBvb2wtPmJhc2UudGltaW5nX2dlbmVyYXRvcl9j b3VudCA9IGo7CiAKLQlpZiAoIXJlc291cmNlX2NvbnN0cnVjdChudW1fdmlydHVhbF9saW5rcywg ZGMsICZwb29sLT5iYXNlLAotCQkJICZyZXNfY3JlYXRlX2Z1bmNzKSkKKwlpZiAoaXNfdmcyMCkK KwkJcmVzX2Z1bmNzID0gJmRjZTEyMV9yZXNfY3JlYXRlX2Z1bmNzOworCWVsc2UKKwkJcmVzX2Z1 bmNzID0gJnJlc19jcmVhdGVfZnVuY3M7CisKKwlpZiAoIXJlc291cmNlX2NvbnN0cnVjdChudW1f dmlydHVhbF9saW5rcywgZGMsICZwb29sLT5iYXNlLCByZXNfZnVuY3MpKQogCQlnb3RvIHJlc19j cmVhdGVfZmFpbDsKIAorCS8qCisJICogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2suIFRoZSB4R01J IGVuYWJsZWQgaW5mbyBpcyB1c2VkIHRvIGRldGVybWluZQorCSAqIGlmIGF1ZGlvIGFuZCBkaXNw bGF5IGNsb2NrcyBuZWVkIHRvIGJlIGFkanVzdGVkIHdpdGggdGhlIFdBRkwgbGluaydzCisJICog U1MgaW5mby4gVGhpcyBpcyBhIHJlc3BvbnNpYmxpdHkgb2YgdGhlIGNsa19tZ3IuIEJ1dCBzaW5j ZSBNTUhVQiBpcworCSAqIHVuZGVyIGh3c2VxLCBhbmQgdGhlIHJlbGV2YW50IHJlZ2lzdGVyIGlz IGluIE1NSFVCLCB3ZSBoYXZlIHRvIGRvIGl0CisJICogaGVyZS4KKwkgKi8KKwlpZiAoaXNfdmcy MCAmJiBkY2UxMjFfeGdtaV9lbmFibGVkKGRjLT5od3NlcSkpCisJCWRjZTEyMV9jbG9ja19wYXRj aF94Z21pX3NzX2luZm8ocG9vbC0+YmFzZS5jbGtfbWdyKTsKKwogCS8qIENyZWF0ZSBoYXJkd2Fy ZSBzZXF1ZW5jZXIgKi8KIAlpZiAoIWRjZTEyMF9od19zZXF1ZW5jZXJfY3JlYXRlKGRjKSkKIAkJ Z290byBjb250cm9sbGVyX2NyZWF0ZV9mYWlsOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=