From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH v2 04/10] drm/i915: Unduplicate CHV phy-releated pre pll enabling code Date: Wed, 13 Apr 2016 20:47:47 +0300 Message-ID: <1460569673-13694-5-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1460569673-13694-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 90A666E92E for ; Wed, 13 Apr 2016 17:48:07 +0000 (UTC) In-Reply-To: <1460569673-13694-1-git-send-email-ander.conselvan.de.oliveira@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: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org VGhlIHNhbWUgbG9naWMgaXMgdXNlZCBmb3IgRFAgYW5kIEhETUkgc28gbW92ZSBpdCB0byBpbnRl bF9kcGlvX3BoeS5jLgoKU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJh IDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jICAgICAgIHwgODMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgfCA4MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgIHwgIDUgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgIHwgNzQg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNl cnRpb25zKCspLCAxNTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg ZmU0MDc2MS4uMTliZmUwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zNTYwLDYgKzM1 NjAsNyBAQCB2b2lkIGNodl9zZXRfcGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAkJCSAgICAgIGJvb2wgdW5pcV90cmFuc19zY2FsZSk7CiB2b2lkIGNodl9k YXRhX2xhbmVfc29mdF9yZXNldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAg ICAgIGJvb2wgcmVzZXQpOwordm9pZCBjaHZfcGh5X3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKTsKIAogaW50IGludGVsX2dwdV9mcmVxKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCk7CiBpbnQgaW50ZWxfZnJlcV9vcGNvZGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCmluZGV4IDRkNjMwNzEuLmRkNjJiZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpA QCAtMTMxLDExICsxMzEsNiBAQCBzdGF0aWMgdm9pZCB2bHZfc3RlYWxfcG93ZXJfc2VxdWVuY2Vy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgICAgZW51bSBwaXBlIHBpcGUpOwogc3Rh dGljIHZvaWQgaW50ZWxfZHBfdW5zZXRfZWRpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsK IAotc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludCBsYW5l X2NvdW50KQotewotCXJldHVybiB+KCgxIDw8IGxhbmVfY291bnQpIC0gMSkgJiAweGY7Ci19Ci0K IHN0YXRpYyBpbnQKIGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAgKmludGVs X2RwKQogewpAQCAtMjk0NSw4NSArMjk0MCw5IEBAIHN0YXRpYyB2b2lkIGNodl9wcmVfZW5hYmxl X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCiBzdGF0aWMgdm9pZCBjaHZfZHBf cHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJh c2UpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0KLQkJdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNl LmNydGMpOwotCWVudW0gZHBpb19jaGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZHBv cnQpOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQl1bnNpZ25lZCBpbnQg bGFuZV9tYXNrID0KLQkJaW50ZWxfZHBfdW51c2VkX2xhbmVfbWFzayhpbnRlbF9jcnRjLT5jb25m aWctPmxhbmVfY291bnQpOwotCXUzMiB2YWw7Ci0KIAlpbnRlbF9kcF9wcmVwYXJlKGVuY29kZXIp OwogCi0JLyoKLQkgKiBNdXN0IHRyaWNrIHRoZSBzZWNvbmQgY29tbW9uIGxhbmUgaW50byBsaWZl LgotCSAqIE90aGVyd2lzZSB3ZSBjYW4ndCBldmVuIGFjY2VzcyB0aGUgUExMLgotCSAqLwotCWlm IChjaCA9PSBEUElPX0NIMCAmJiBwaXBlID09IFBJUEVfQikKLQkJZHBvcnQtPnJlbGVhc2VfY2wy X292ZXJyaWRlID0KLQkJCSFjaHZfcGh5X3Bvd2VyZ2F0ZV9jaChkZXZfcHJpdiwgRFBJT19QSFkw LCBEUElPX0NIMSwgdHJ1ZSk7Ci0KLQljaHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVyLCB0 cnVlLCBsYW5lX21hc2spOwotCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwotCi0J LyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwotCWNodl9kYXRhX2xhbmVfc29mdF9yZXNldChl bmNvZGVyLCB0cnVlKTsKLQotCS8qIHByb2dyYW0gbGVmdC9yaWdodCBjbG9jayBkaXN0cmlidXRp b24gKi8KLQlpZiAocGlwZSAhPSBQSVBFX0IpIHsKLQkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZf cHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc1X0NIMCk7Ci0JCXZhbCAmPSB+KENIVl9CVUZMRUZURU5B MV9NQVNLIHwgQ0hWX0JVRlJJR0hURU5BMV9NQVNLKTsKLQkJaWYgKGNoID09IERQSU9fQ0gwKQot CQkJdmFsIHw9IENIVl9CVUZMRUZURU5BMV9GT1JDRTsKLQkJaWYgKGNoID09IERQSU9fQ0gxKQot CQkJdmFsIHw9IENIVl9CVUZSSUdIVEVOQTFfRk9SQ0U7Ci0JCXZsdl9kcGlvX3dyaXRlKGRldl9w cml2LCBwaXBlLCBfQ0hWX0NNTl9EVzVfQ0gwLCB2YWwpOwotCX0gZWxzZSB7Ci0JCXZhbCA9IHZs dl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXMV9DSDEpOwotCQl2YWwgJj0g fihDSFZfQlVGTEVGVEVOQTJfTUFTSyB8IENIVl9CVUZSSUdIVEVOQTJfTUFTSyk7Ci0JCWlmIChj aCA9PSBEUElPX0NIMCkKLQkJCXZhbCB8PSBDSFZfQlVGTEVGVEVOQTJfRk9SQ0U7Ci0JCWlmIChj aCA9PSBEUElPX0NIMSkKLQkJCXZhbCB8PSBDSFZfQlVGUklHSFRFTkEyX0ZPUkNFOwotCQl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFcxX0NIMSwgdmFsKTsKLQl9Ci0K LQkvKiBwcm9ncmFtIGNsb2NrIGNoYW5uZWwgdXNhZ2UgKi8KLQl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc4KGNoKSk7Ci0JdmFsIHw9IENIVl9QQ1NfVVNF RENMS0NIQU5ORUxfT1ZSUklERTsKLQlpZiAocGlwZSAhPSBQSVBFX0IpCi0JCXZhbCAmPSB+Q0hW X1BDU19VU0VEQ0xLQ0hBTk5FTDsKLQllbHNlCi0JCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFO TkVMOwotCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc4KGNoKSwg dmFsKTsKLQotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7Ci0JCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzgoY2gpKTsKLQkJ dmFsIHw9IENIVl9QQ1NfVVNFRENMS0NIQU5ORUxfT1ZSUklERTsKLQkJaWYgKHBpcGUgIT0gUElQ RV9CKQotCQkJdmFsICY9IH5DSFZfUENTX1VTRURDTEtDSEFOTkVMOwotCQllbHNlCi0JCQl2YWwg fD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKLQkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBp cGUsIFZMVl9QQ1MyM19EVzgoY2gpLCB2YWwpOwotCX0KLQotCS8qCi0JICogVGhpcyBhIGEgYml0 IHdlaXJkIHNpbmNlIGdlbmVyYWxseSBDTAotCSAqIG1hdGNoZXMgdGhlIHBpcGUsIGJ1dCBoZXJl IHdlIG5lZWQgdG8KLQkgKiBwaWNrIHRoZSBDTCBiYXNlZCBvbiB0aGUgcG9ydC4KLQkgKi8KLQl2 YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTkoY2gpKTsKLQlp ZiAocGlwZSAhPSBQSVBFX0IpCi0JCXZhbCAmPSB+Q0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTDsKLQll bHNlCi0JCXZhbCB8PSBDSFZfQ01OX1VTRURDTEtDSEFOTkVMOwotCXZsdl9kcGlvX3dyaXRlKGRl dl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTkoY2gpLCB2YWwpOwotCi0JbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+c2JfbG9jayk7CisJY2h2X3BoeV9wcmVfcGxsX2VuYWJsZShlbmNvZGVyKTsKIH0K IAogc3RhdGljIHZvaWQgY2h2X2RwX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlv X3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYwppbmRleCA5ODU0 YzkzLi5iNGNhM2ZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlv X3BoeS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKQEAgLTE2 MywzICsxNjMsODQgQEAgdm9pZCBjaHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCiAJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZf UENTMjNfRFcxKGNoKSwgdmFsKTsKIAl9CiB9CisKK3ZvaWQgY2h2X3BoeV9wcmVfcGxsX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPQorCQl0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7CisJZW51 bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7CisJZW51bSBw aXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOworCXVuc2lnbmVkIGludCBsYW5lX21hc2sgPQor CQlpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3Vu dCk7CisJdTMyIHZhbDsKKworCS8qCisJICogTXVzdCB0cmljayB0aGUgc2Vjb25kIGNvbW1vbiBs YW5lIGludG8gbGlmZS4KKwkgKiBPdGhlcndpc2Ugd2UgY2FuJ3QgZXZlbiBhY2Nlc3MgdGhlIFBM TC4KKwkgKi8KKwlpZiAoY2ggPT0gRFBJT19DSDAgJiYgcGlwZSA9PSBQSVBFX0IpCisJCWRwb3J0 LT5yZWxlYXNlX2NsMl9vdmVycmlkZSA9CisJCQkhY2h2X3BoeV9wb3dlcmdhdGVfY2goZGV2X3By aXYsIERQSU9fUEhZMCwgRFBJT19DSDEsIHRydWUpOworCisJY2h2X3BoeV9wb3dlcmdhdGVfbGFu ZXMoZW5jb2RlciwgdHJ1ZSwgbGFuZV9tYXNrKTsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKKworCS8qIEFzc2VydCBkYXRhIGxhbmUgcmVzZXQgKi8KKwljaHZfZGF0YV9sYW5l X3NvZnRfcmVzZXQoZW5jb2RlciwgdHJ1ZSk7CisKKwkvKiBwcm9ncmFtIGxlZnQvcmlnaHQgY2xv Y2sgZGlzdHJpYnV0aW9uICovCisJaWYgKHBpcGUgIT0gUElQRV9CKSB7CisJCXZhbCA9IHZsdl9k cGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXNV9DSDApOworCQl2YWwgJj0gfihD SFZfQlVGTEVGVEVOQTFfTUFTSyB8IENIVl9CVUZSSUdIVEVOQTFfTUFTSyk7CisJCWlmIChjaCA9 PSBEUElPX0NIMCkKKwkJCXZhbCB8PSBDSFZfQlVGTEVGVEVOQTFfRk9SQ0U7CisJCWlmIChjaCA9 PSBEUElPX0NIMSkKKwkJCXZhbCB8PSBDSFZfQlVGUklHSFRFTkExX0ZPUkNFOworCQl2bHZfZHBp b193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc1X0NIMCwgdmFsKTsKKwl9IGVsc2Ug eworCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBfQ0hWX0NNTl9EVzFfQ0gx KTsKKwkJdmFsICY9IH4oQ0hWX0JVRkxFRlRFTkEyX01BU0sgfCBDSFZfQlVGUklHSFRFTkEyX01B U0spOworCQlpZiAoY2ggPT0gRFBJT19DSDApCisJCQl2YWwgfD0gQ0hWX0JVRkxFRlRFTkEyX0ZP UkNFOworCQlpZiAoY2ggPT0gRFBJT19DSDEpCisJCQl2YWwgfD0gQ0hWX0JVRlJJR0hURU5BMl9G T1JDRTsKKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXMV9DSDEs IHZhbCk7CisJfQorCisJLyogcHJvZ3JhbSBjbG9jayBjaGFubmVsIHVzYWdlICovCisJdmFsID0g dmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOChjaCkpOworCXZhbCB8 PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMX09WUlJJREU7CisJaWYgKHBpcGUgIT0gUElQRV9CKQor CQl2YWwgJj0gfkNIVl9QQ1NfVVNFRENMS0NIQU5ORUw7CisJZWxzZQorCQl2YWwgfD0gQ0hWX1BD U19VU0VEQ0xLQ0hBTk5FTDsKKwl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzAxX0RXOChjaCksIHZhbCk7CisKKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50 ID4gMikgeworCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNf RFc4KGNoKSk7CisJCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMX09WUlJJREU7CisJCWlm IChwaXBlICE9IFBJUEVfQikKKwkJCXZhbCAmPSB+Q0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKKwkJ ZWxzZQorCQkJdmFsIHw9IENIVl9QQ1NfVVNFRENMS0NIQU5ORUw7CisJCXZsdl9kcGlvX3dyaXRl KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc4KGNoKSwgdmFsKTsKKwl9CisKKwkvKgorCSAq IFRoaXMgYSBhIGJpdCB3ZWlyZCBzaW5jZSBnZW5lcmFsbHkgQ0wKKwkgKiBtYXRjaGVzIHRoZSBw aXBlLCBidXQgaGVyZSB3ZSBuZWVkIHRvCisJICogcGljayB0aGUgQ0wgYmFzZWQgb24gdGhlIHBv cnQuCisJICovCisJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9E VzE5KGNoKSk7CisJaWYgKHBpcGUgIT0gUElQRV9CKQorCQl2YWwgJj0gfkNIVl9DTU5fVVNFRENM S0NIQU5ORUw7CisJZWxzZQorCQl2YWwgfD0gQ0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTDsKKwl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzE5KGNoKSwgdmFsKTsKKworCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAppbmRleCBlMGZjZmExLi5hZDExMzEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAt MTMyMyw2ICsxMzIzLDExIEBAIGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7CiBib29sCiBpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NU QVRVU19TSVpFXSk7CiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGludGVsX2RwX3VudXNl ZF9sYW5lX21hc2soaW50IGxhbmVfY291bnQpCit7CisJcmV0dXJuIH4oKDEgPDwgbGFuZV9jb3Vu dCkgLSAxKSAmIDB4ZjsKK30KKwogLyogaW50ZWxfZHBfbXN0LmMgKi8KIGludCBpbnRlbF9kcF9t c3RfZW5jb2Rlcl9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 LCBpbnQgY29ubl9pZCk7CiB2b2lkIGludGVsX2RwX21zdF9lbmNvZGVyX2NsZWFudXAoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCmluZGV4IGQxYzBiZTUuLmU4MmQ2ZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1p LmMKQEAgLTE2NjAsODEgKzE2NjAsOSBAQCBzdGF0aWMgdm9pZCB2bHZfaGRtaV9wcmVfcGxsX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAogc3RhdGljIHZvaWQgY2h2X2hk bWlfcHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXIt PmJhc2UpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0KLQkJdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5i YXNlLmNydGMpOwotCWVudW0gZHBpb19jaGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwo ZHBvcnQpOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQl1MzIgdmFsOwot CiAJaW50ZWxfaGRtaV9wcmVwYXJlKGVuY29kZXIpOwogCi0JLyoKLQkgKiBNdXN0IHRyaWNrIHRo ZSBzZWNvbmQgY29tbW9uIGxhbmUgaW50byBsaWZlLgotCSAqIE90aGVyd2lzZSB3ZSBjYW4ndCBl dmVuIGFjY2VzcyB0aGUgUExMLgotCSAqLwotCWlmIChjaCA9PSBEUElPX0NIMCAmJiBwaXBlID09 IFBJUEVfQikKLQkJZHBvcnQtPnJlbGVhc2VfY2wyX292ZXJyaWRlID0KLQkJCSFjaHZfcGh5X3Bv d2VyZ2F0ZV9jaChkZXZfcHJpdiwgRFBJT19QSFkwLCBEUElPX0NIMSwgdHJ1ZSk7Ci0KLQljaHZf cGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVyLCB0cnVlLCAweDApOwotCi0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnNiX2xvY2spOwotCi0JLyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwotCWNo dl9kYXRhX2xhbmVfc29mdF9yZXNldChlbmNvZGVyLCB0cnVlKTsKLQotCS8qIHByb2dyYW0gbGVm dC9yaWdodCBjbG9jayBkaXN0cmlidXRpb24gKi8KLQlpZiAocGlwZSAhPSBQSVBFX0IpIHsKLQkJ dmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5fRFc1X0NIMCk7Ci0J CXZhbCAmPSB+KENIVl9CVUZMRUZURU5BMV9NQVNLIHwgQ0hWX0JVRlJJR0hURU5BMV9NQVNLKTsK LQkJaWYgKGNoID09IERQSU9fQ0gwKQotCQkJdmFsIHw9IENIVl9CVUZMRUZURU5BMV9GT1JDRTsK LQkJaWYgKGNoID09IERQSU9fQ0gxKQotCQkJdmFsIHw9IENIVl9CVUZSSUdIVEVOQTFfRk9SQ0U7 Ci0JCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBfQ0hWX0NNTl9EVzVfQ0gwLCB2YWwp OwotCX0gZWxzZSB7Ci0JCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZf Q01OX0RXMV9DSDEpOwotCQl2YWwgJj0gfihDSFZfQlVGTEVGVEVOQTJfTUFTSyB8IENIVl9CVUZS SUdIVEVOQTJfTUFTSyk7Ci0JCWlmIChjaCA9PSBEUElPX0NIMCkKLQkJCXZhbCB8PSBDSFZfQlVG TEVGVEVOQTJfRk9SQ0U7Ci0JCWlmIChjaCA9PSBEUElPX0NIMSkKLQkJCXZhbCB8PSBDSFZfQlVG UklHSFRFTkEyX0ZPUkNFOwotCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NIVl9D TU5fRFcxX0NIMSwgdmFsKTsKLQl9Ci0KLQkvKiBwcm9ncmFtIGNsb2NrIGNoYW5uZWwgdXNhZ2Ug Ki8KLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc4KGNo KSk7Ci0JdmFsIHw9IENIVl9QQ1NfVVNFRENMS0NIQU5ORUxfT1ZSUklERTsKLQlpZiAocGlwZSAh PSBQSVBFX0IpCi0JCXZhbCAmPSB+Q0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKLQllbHNlCi0JCXZh bCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMOwotCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBw aXBlLCBWTFZfUENTMDFfRFc4KGNoKSwgdmFsKTsKLQotCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2 X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzgoY2gpKTsKLQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xL Q0hBTk5FTF9PVlJSSURFOwotCWlmIChwaXBlICE9IFBJUEVfQikKLQkJdmFsICY9IH5DSFZfUENT X1VTRURDTEtDSEFOTkVMOwotCWVsc2UKLQkJdmFsIHw9IENIVl9QQ1NfVVNFRENMS0NIQU5ORUw7 Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzgoY2gpLCB2YWwp OwotCi0JLyoKLQkgKiBUaGlzIGEgYSBiaXQgd2VpcmQgc2luY2UgZ2VuZXJhbGx5IENMCi0JICog bWF0Y2hlcyB0aGUgcGlwZSwgYnV0IGhlcmUgd2UgbmVlZCB0bwotCSAqIHBpY2sgdGhlIENMIGJh c2VkIG9uIHRoZSBwb3J0LgotCSAqLwotCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBp cGUsIENIVl9DTU5fRFcxOShjaCkpOwotCWlmIChwaXBlICE9IFBJUEVfQikKLQkJdmFsICY9IH5D SFZfQ01OX1VTRURDTEtDSEFOTkVMOwotCWVsc2UKLQkJdmFsIHw9IENIVl9DTU5fVVNFRENMS0NI QU5ORUw7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcxOShjaCks IHZhbCk7Ci0KLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKKwljaHZfcGh5X3By ZV9wbGxfZW5hYmxlKGVuY29kZXIpOwogfQogCiBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wb3N0X3Bs bF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQotLSAKMi40LjExCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK