From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 2/2] drm/radeon: fix dp link rate selection (v2) Date: Fri, 18 Dec 2015 17:31:12 -0500 Message-ID: <1450477872-19768-2-git-send-email-alexander.deucher@amd.com> References: <1450477872-19768-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-f171.google.com (mail-qk0-f171.google.com [209.85.220.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6AE076E37E for ; Fri, 18 Dec 2015 14:31:22 -0800 (PST) Received: by mail-qk0-f171.google.com with SMTP id u65so97859614qkh.2 for ; Fri, 18 Dec 2015 14:31:22 -0800 (PST) In-Reply-To: <1450477872-19768-1-git-send-email-alexander.deucher@amd.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 Cc: Alex Deucher List-Id: dri-devel@lists.freedesktop.org TmVlZCB0byBwcm9wZXJseSBoYW5kbGUgdGhlIG1heCBsaW5rIHJhdGUgaW4gdGhlIGRwY2QuClRo aXMgcHJldmVudHMgc29tZSBjYXNlcyB3aGVyZSA1LjQgR2h6IGlzIHNlbGVjdGVkIHdoZW4KaXQg c2hvdWxkbid0IGJlLgoKdjI6IHNpbXBsaWZ5IGxvZ2ljLCBhZGQgYXJyYXkgYm91bmRzIGNoZWNr CgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19kcC5jICAgfCAxMDggKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9kcF9tc3QuYyB8ICAxMiArKystCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2Rl LmggICB8ICAgNiArLQogMyBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA3NyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2Rw LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2RwLmMKaW5kZXggYmQ3M2I0MC4u NDRlZTcyZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19kcC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfZHAuYwpAQCAtMzAyLDc3ICsz MDIsMzEgQEAgc3RhdGljIGludCBjb252ZXJ0X2JwY190b19icHAoaW50IGJwYykKIAkJcmV0dXJu IGJwYyAqIDM7CiB9CiAKLS8qIGdldCB0aGUgbWF4IHBpeCBjbG9jayBzdXBwb3J0ZWQgYnkgdGhl IGxpbmsgcmF0ZSBhbmQgbGFuZSBudW0gKi8KLXN0YXRpYyBpbnQgZHBfZ2V0X21heF9kcF9waXhf Y2xvY2soaW50IGxpbmtfcmF0ZSwKLQkJCQkgICBpbnQgbGFuZV9udW0sCi0JCQkJICAgaW50IGJw cCkKLXsKLQlyZXR1cm4gKGxpbmtfcmF0ZSAqIGxhbmVfbnVtICogOCkgLyBicHA7Ci19Ci0KIC8q KioqKiByYWRlb24gc3BlY2lmaWMgRFAgZnVuY3Rpb25zICoqKioqLwogCi1pbnQgcmFkZW9uX2Rw X2dldF9tYXhfbGlua19yYXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCQkJ Y29uc3QgdTggZHBjZFtEUF9EUENEX1NJWkVdKQotewotCWludCBtYXhfbGlua19yYXRlOwotCi0J aWYgKHJhZGVvbl9jb25uZWN0b3JfaXNfZHAxMl9jYXBhYmxlKGNvbm5lY3RvcikpCi0JCW1heF9s aW5rX3JhdGUgPSBtaW4oZHJtX2RwX21heF9saW5rX3JhdGUoZHBjZCksIDU0MDAwMCk7Ci0JZWxz ZQotCQltYXhfbGlua19yYXRlID0gbWluKGRybV9kcF9tYXhfbGlua19yYXRlKGRwY2QpLCAyNzAw MDApOwotCi0JcmV0dXJuIG1heF9saW5rX3JhdGU7Ci19Ci0KLS8qIEZpcnN0IGdldCB0aGUgbWlu IGxhbmUjIHdoZW4gbG93IHJhdGUgaXMgdXNlZCBhY2NvcmRpbmcgdG8gcGl4ZWwgY2xvY2sKLSAq IChwcmVmZXIgbG93IHJhdGUpLCBzZWNvbmQgY2hlY2sgbWF4IGxhbmUjIHN1cHBvcnRlZCBieSBE UCBwYW5lbCwKLSAqIGlmIHRoZSBtYXggbGFuZSMgPCBsb3cgcmF0ZSBsYW5lIyB0aGVuIHVzZSBt YXggbGFuZSMgaW5zdGVhZC4KLSAqLwotc3RhdGljIGludCByYWRlb25fZHBfZ2V0X2RwX2xhbmVf bnVtYmVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCQkJCWNvbnN0IHU4IGRw Y2RbRFBfRFBDRF9TSVpFXSwKLQkJCQkJaW50IHBpeF9jbG9jaykKLXsKLQlpbnQgYnBwID0gY29u dmVydF9icGNfdG9fYnBwKHJhZGVvbl9nZXRfbW9uaXRvcl9icGMoY29ubmVjdG9yKSk7Ci0JaW50 IG1heF9saW5rX3JhdGUgPSByYWRlb25fZHBfZ2V0X21heF9saW5rX3JhdGUoY29ubmVjdG9yLCBk cGNkKTsKLQlpbnQgbWF4X2xhbmVfbnVtID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGRwY2QpOwot CWludCBsYW5lX251bTsKLQlpbnQgbWF4X2RwX3BpeF9jbG9jazsKLQotCWZvciAobGFuZV9udW0g PSAxOyBsYW5lX251bSA8IG1heF9sYW5lX251bTsgbGFuZV9udW0gPDw9IDEpIHsKLQkJbWF4X2Rw X3BpeF9jbG9jayA9IGRwX2dldF9tYXhfZHBfcGl4X2Nsb2NrKG1heF9saW5rX3JhdGUsIGxhbmVf bnVtLCBicHApOwotCQlpZiAocGl4X2Nsb2NrIDw9IG1heF9kcF9waXhfY2xvY2spCi0JCQlicmVh azsKLQl9Ci0KLQlyZXR1cm4gbGFuZV9udW07Ci19Ci0KLXN0YXRpYyBpbnQgcmFkZW9uX2RwX2dl dF9kcF9saW5rX2Nsb2NrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCQkJICAg ICAgIGNvbnN0IHU4IGRwY2RbRFBfRFBDRF9TSVpFXSwKLQkJCQkgICAgICAgaW50IHBpeF9jbG9j aykKK2ludCByYWRlb25fZHBfZ2V0X2RwX2xpbmtfY29uZmlnKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCisJCQkJIGNvbnN0IHU4IGRwY2RbRFBfRFBDRF9TSVpFXSwKKwkJCQkgdW5z aWduZWQgcGl4X2Nsb2NrLAorCQkJCSB1bnNpZ25lZCAqZHBfbGFuZXMsIHVuc2lnbmVkICpkcF9y YXRlKQogewogCWludCBicHAgPSBjb252ZXJ0X2JwY190b19icHAocmFkZW9uX2dldF9tb25pdG9y X2JwYyhjb25uZWN0b3IpKTsKLQlpbnQgbGFuZV9udW0sIG1heF9waXhfY2xvY2s7Ci0KLQlpZiAo cmFkZW9uX2Nvbm5lY3Rvcl9lbmNvZGVyX2dldF9kcF9icmlkZ2VfZW5jb2Rlcl9pZChjb25uZWN0 b3IpID09Ci0JICAgIEVOQ09ERVJfT0JKRUNUX0lEX05VVE1FRykKLQkJcmV0dXJuIDI3MDAwMDsK LQotCWxhbmVfbnVtID0gcmFkZW9uX2RwX2dldF9kcF9sYW5lX251bWJlcihjb25uZWN0b3IsIGRw Y2QsIHBpeF9jbG9jayk7Ci0JbWF4X3BpeF9jbG9jayA9IGRwX2dldF9tYXhfZHBfcGl4X2Nsb2Nr KDE2MjAwMCwgbGFuZV9udW0sIGJwcCk7Ci0JaWYgKHBpeF9jbG9jayA8PSBtYXhfcGl4X2Nsb2Nr KQotCQlyZXR1cm4gMTYyMDAwOwotCW1heF9waXhfY2xvY2sgPSBkcF9nZXRfbWF4X2RwX3BpeF9j bG9jaygyNzAwMDAsIGxhbmVfbnVtLCBicHApOwotCWlmIChwaXhfY2xvY2sgPD0gbWF4X3BpeF9j bG9jaykKLQkJcmV0dXJuIDI3MDAwMDsKLQlpZiAocmFkZW9uX2Nvbm5lY3Rvcl9pc19kcDEyX2Nh cGFibGUoY29ubmVjdG9yKSkgewotCQltYXhfcGl4X2Nsb2NrID0gZHBfZ2V0X21heF9kcF9waXhf Y2xvY2soNTQwMDAwLCBsYW5lX251bSwgYnBwKTsKLQkJaWYgKHBpeF9jbG9jayA8PSBtYXhfcGl4 X2Nsb2NrKQotCQkJcmV0dXJuIDU0MDAwMDsKKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgbGlua19y YXRlc1szXSA9IHsgMTYyMDAwLCAyNzAwMDAsIDU0MDAwMCB9OworCXVuc2lnbmVkIG1heF9saW5r X3JhdGUgPSBkcm1fZHBfbWF4X2xpbmtfcmF0ZShkcGNkKTsKKwl1bnNpZ25lZCBtYXhfbGFuZV9u dW0gPSBkcm1fZHBfbWF4X2xhbmVfY291bnQoZHBjZCk7CisJdW5zaWduZWQgbGFuZV9udW0sIGks IG1heF9waXhfY2xvY2s7CisKKwlmb3IgKGxhbmVfbnVtID0gMTsgbGFuZV9udW0gPD0gbWF4X2xh bmVfbnVtOyBsYW5lX251bSA8PD0gMSkgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShs aW5rX3JhdGVzKSAmJiBsaW5rX3JhdGVzW2ldIDw9IG1heF9saW5rX3JhdGU7IGkrKykgeworCQkJ bWF4X3BpeF9jbG9jayA9IChsYW5lX251bSAqIGxpbmtfcmF0ZXNbaV0gKiA4KSAvIGJwcDsKKwkJ CWlmIChtYXhfcGl4X2Nsb2NrID49IHBpeF9jbG9jaykgeworCQkJCSpkcF9sYW5lcyA9IGxhbmVf bnVtOworCQkJCSpkcF9yYXRlID0gbGlua19yYXRlc1tpXTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0K KwkJfQogCX0KIAotCXJldHVybiByYWRlb25fZHBfZ2V0X21heF9saW5rX3JhdGUoY29ubmVjdG9y LCBkcGNkKTsKKwlyZXR1cm4gLUVJTlZBTDsKIH0KIAogc3RhdGljIHU4IHJhZGVvbl9kcF9lbmNv ZGVyX3NlcnZpY2Uoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYsCkBAIC00OTEsNiArNDQ1LDcg QEAgdm9pZCByYWRlb25fZHBfc2V0X2xpbmtfY29uZmlnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCiB7CiAJc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3Ig PSB0b19yYWRlb25fY29ubmVjdG9yKGNvbm5lY3Rvcik7CiAJc3RydWN0IHJhZGVvbl9jb25uZWN0 b3JfYXRvbV9kaWcgKmRpZ19jb25uZWN0b3I7CisJaW50IHJldDsKIAogCWlmICghcmFkZW9uX2Nv bm5lY3Rvci0+Y29uX3ByaXYpCiAJCXJldHVybjsKQEAgLTQ5OCwxMCArNDUzLDE0IEBAIHZvaWQg cmFkZW9uX2RwX3NldF9saW5rX2NvbmZpZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAogCiAJaWYgKChkaWdfY29ubmVjdG9yLT5kcF9zaW5rX3R5cGUgPT0gQ09OTkVDVE9SX09CSkVD VF9JRF9ESVNQTEFZUE9SVCkgfHwKIAkgICAgKGRpZ19jb25uZWN0b3ItPmRwX3NpbmtfdHlwZSA9 PSBDT05ORUNUT1JfT0JKRUNUX0lEX2VEUCkpIHsKLQkJZGlnX2Nvbm5lY3Rvci0+ZHBfY2xvY2sg PQotCQkJcmFkZW9uX2RwX2dldF9kcF9saW5rX2Nsb2NrKGNvbm5lY3RvciwgZGlnX2Nvbm5lY3Rv ci0+ZHBjZCwgbW9kZS0+Y2xvY2spOwotCQlkaWdfY29ubmVjdG9yLT5kcF9sYW5lX2NvdW50ID0K LQkJCXJhZGVvbl9kcF9nZXRfZHBfbGFuZV9udW1iZXIoY29ubmVjdG9yLCBkaWdfY29ubmVjdG9y LT5kcGNkLCBtb2RlLT5jbG9jayk7CisJCXJldCA9IHJhZGVvbl9kcF9nZXRfZHBfbGlua19jb25m aWcoY29ubmVjdG9yLCBkaWdfY29ubmVjdG9yLT5kcGNkLAorCQkJCQkJICAgbW9kZS0+Y2xvY2ss CisJCQkJCQkgICAmZGlnX2Nvbm5lY3Rvci0+ZHBfbGFuZV9jb3VudCwKKwkJCQkJCSAgICZkaWdf Y29ubmVjdG9yLT5kcF9jbG9jayk7CisJCWlmIChyZXQpIHsKKwkJCWRpZ19jb25uZWN0b3ItPmRw X2Nsb2NrID0gMDsKKwkJCWRpZ19jb25uZWN0b3ItPmRwX2xhbmVfY291bnQgPSAwOworCQl9CiAJ fQogfQogCkBAIC01MTAsNyArNDY5LDggQEAgaW50IHJhZGVvbl9kcF9tb2RlX3ZhbGlkX2hlbHBl cihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogewogCXN0cnVjdCByYWRlb25fY29u bmVjdG9yICpyYWRlb25fY29ubmVjdG9yID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25uZWN0b3Ip OwogCXN0cnVjdCByYWRlb25fY29ubmVjdG9yX2F0b21fZGlnICpkaWdfY29ubmVjdG9yOwotCWlu dCBkcF9jbG9jazsKKwl1bnNpZ25lZCBkcF9jbG9jaywgZHBfbGFuZXM7CisJaW50IHJldDsKIAog CWlmICgobW9kZS0+Y2xvY2sgPiAzNDAwMDApICYmCiAJICAgICghcmFkZW9uX2Nvbm5lY3Rvcl9p c19kcDEyX2NhcGFibGUoY29ubmVjdG9yKSkpCkBAIC01MjAsOCArNDgwLDEyIEBAIGludCByYWRl b25fZHBfbW9kZV92YWxpZF9oZWxwZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK IAkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKIAlkaWdfY29ubmVjdG9yID0gcmFkZW9uX2Nvbm5l Y3Rvci0+Y29uX3ByaXY7CiAKLQlkcF9jbG9jayA9Ci0JCXJhZGVvbl9kcF9nZXRfZHBfbGlua19j bG9jayhjb25uZWN0b3IsIGRpZ19jb25uZWN0b3ItPmRwY2QsIG1vZGUtPmNsb2NrKTsKKwlyZXQg PSByYWRlb25fZHBfZ2V0X2RwX2xpbmtfY29uZmlnKGNvbm5lY3RvciwgZGlnX2Nvbm5lY3Rvci0+ ZHBjZCwKKwkJCQkJICAgbW9kZS0+Y2xvY2ssCisJCQkJCSAgICZkcF9sYW5lcywKKwkJCQkJICAg JmRwX2Nsb2NrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gTU9ERV9DTE9DS19ISUdIOwogCiAJaWYg KChkcF9jbG9jayA9PSA1NDAwMDApICYmCiAJICAgICghcmFkZW9uX2Nvbm5lY3Rvcl9pc19kcDEy X2NhcGFibGUoY29ubmVjdG9yKSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RwX21zdC5j CmluZGV4IDc0NGY1YzQuLmI0MzFjOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uX2RwX21zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Rw X21zdC5jCkBAIC01MjUsMTEgKzUyNSwxNyBAQCBzdGF0aWMgYm9vbCByYWRlb25fbXN0X21vZGVf Zml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCWRybV9tb2RlX3NldF9jcnRjaW5m byhhZGp1c3RlZF9tb2RlLCAwKTsKIAl7CiAJICBzdHJ1Y3QgcmFkZW9uX2Nvbm5lY3Rvcl9hdG9t X2RpZyAqZGlnX2Nvbm5lY3RvcjsKKwkgIGludCByZXQ7CiAKIAkgIGRpZ19jb25uZWN0b3IgPSBt c3RfZW5jLT5jb25uZWN0b3ItPmNvbl9wcml2OwotCSAgZGlnX2Nvbm5lY3Rvci0+ZHBfbGFuZV9j b3VudCA9IGRybV9kcF9tYXhfbGFuZV9jb3VudChkaWdfY29ubmVjdG9yLT5kcGNkKTsKLQkgIGRp Z19jb25uZWN0b3ItPmRwX2Nsb2NrID0gcmFkZW9uX2RwX2dldF9tYXhfbGlua19yYXRlKCZtc3Rf ZW5jLT5jb25uZWN0b3ItPmJhc2UsCi0JCQkJCQkJCWRpZ19jb25uZWN0b3ItPmRwY2QpOworCSAg cmV0ID0gcmFkZW9uX2RwX2dldF9kcF9saW5rX2NvbmZpZygmbXN0X2VuYy0+Y29ubmVjdG9yLT5i YXNlLAorCQkJCQkgICAgIGRpZ19jb25uZWN0b3ItPmRwY2QsIGFkanVzdGVkX21vZGUtPmNsb2Nr LAorCQkJCQkgICAgICZkaWdfY29ubmVjdG9yLT5kcF9sYW5lX2NvdW50LAorCQkJCQkgICAgICZk aWdfY29ubmVjdG9yLT5kcF9jbG9jayk7CisJICBpZiAocmV0KSB7CisJCSAgZGlnX2Nvbm5lY3Rv ci0+ZHBfbGFuZV9jb3VudCA9IDA7CisJCSAgZGlnX2Nvbm5lY3Rvci0+ZHBfY2xvY2sgPSAwOwor CSAgfQogCSAgRFJNX0RFQlVHX0tNUygiZGlnIGNsb2NrICVwICVkICVkXG4iLCBkaWdfY29ubmVj dG9yLAogCQkJZGlnX2Nvbm5lY3Rvci0+ZHBfbGFuZV9jb3VudCwgZGlnX2Nvbm5lY3Rvci0+ZHBf Y2xvY2spOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21v ZGUuaCBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21vZGUuaAppbmRleCBkOGJhYmI4 Li4yYzgzMzEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2Rl LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW9kZS5oCkBAIC03NTYsOCAr NzU2LDEwIEBAIGV4dGVybiB1OCByYWRlb25fZHBfZ2V0c2lua3R5cGUoc3RydWN0IHJhZGVvbl9j b25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3IpOwogZXh0ZXJuIGJvb2wgcmFkZW9uX2RwX2dldGRw Y2Qoc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25uZWN0b3IpOwogZXh0ZXJuIGlu dCByYWRlb25fZHBfZ2V0X3BhbmVsX21vZGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAog CQkJCSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKLWludCByYWRlb25fZHBf Z2V0X21heF9saW5rX3JhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJCQlj b25zdCB1OCAqZHBjZCk7CitleHRlcm4gaW50IHJhZGVvbl9kcF9nZXRfZHBfbGlua19jb25maWco c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkJY29uc3QgdTggKmRwY2QsCisJ CQkJCXVuc2lnbmVkIHBpeF9jbG9jaywKKwkJCQkJdW5zaWduZWQgKmRwX2xhbmVzLCB1bnNpZ25l ZCAqZHBfcmF0ZSk7CiBleHRlcm4gdm9pZCByYWRlb25fZHBfc2V0X3J4X3Bvd2VyX3N0YXRlKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJCSB1OCBwb3dlcl9zdGF0ZSk7CiBl eHRlcm4gdm9pZCByYWRlb25fZHBfYXV4X2luaXQoc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJh ZGVvbl9jb25uZWN0b3IpOwotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==