From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 11/16] drm/i915: Compute DSI PLL parameters during .compute_config() Date: Tue, 15 Mar 2016 16:40:04 +0200 Message-ID: <1458052809-23426-12-git-send-email-ville.syrjala@linux.intel.com> References: <1458052809-23426-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 323846E75B for ; Tue, 15 Mar 2016 14:40:49 +0000 (UTC) In-Reply-To: <1458052809-23426-1-git-send-email-ville.syrjala@linux.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: Deepak M List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkNv bXB1dGUgdGhlIERTSSBQTEwgcGFyYW1ldGVycyBkdXJpbmcgLmNvbXB1dGVfY29uZmlnKCkgcmF0 aGVyIHRoYW4KLnByZV9wbGxfZW5hYmxlKCkgc28gdGhhdCB3ZSBjYW4gZmFpbCBncmFjZWZ1bGx5 IGlmIHdlIGNhbid0IGZpbmQKc3VpdGFibGUgcGFyYW1ldGVycy4KCkluIG9yZGVyIHRvIGRvIHRo YXQgd2UgbmVlZCB0byBzdG9yZSB0aGUgRFNJIFBMTCBwYXJhbWV0ZXJzIGluCnBpcGVfY29uZmln LgoKdjI6IEhhbmRsZSBCWFQgdG9vCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgfCAgIDUgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICB8ICAxNSAr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuaCAgICAgfCAgMTQgKystLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jIHwgMTU1ICsrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCA4 MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggM2U2 YjVmYjE0MGFkLi5kMGI3ZmM4NWJjM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKQEAgLTEyNzU3LDYgKzEyNzU3LDkgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2Zn Y3IxKTsKIAlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMik7CiAKKwlQSVBF X0NPTkZfQ0hFQ0tfWChkc2lfcGxsLmN0cmwpOworCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwu ZGl2KTsKKwogCWlmIChJU19HNFgoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KQog CQlQSVBFX0NPTkZfQ0hFQ0tfSShwaXBlX2JwcCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK aW5kZXggMDJiM2QyMjg2MmExLi44OTIyOTAzNzQzNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCkBAIC00OTUsNiArNDk1LDExIEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKIAkvKiBB Y3R1YWwgcmVnaXN0ZXIgc3RhdGUgb2YgdGhlIGRwbGwsIGZvciBzaGFyZWQgZHBsbCBjcm9zcy1j aGVja2luZy4gKi8KIAlzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSBkcGxsX2h3X3N0YXRlOwog CisJLyogRFNJIFBMTCByZWdpc3RlcnMgKi8KKwlzdHJ1Y3QgeworCQl1MzIgY3RybCwgZGl2Owor CX0gZHNpX3BsbDsKKwogCWludCBwaXBlX2JwcDsKIAlzdHJ1Y3QgaW50ZWxfbGlua19tX24gZHBf bV9uOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCmluZGV4IDc4NzQxMWUxYzM2Zi4uMWI0ZTgz ZGY0NTYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwpAQCAtMjczLDYgKzI3Myw3IEBAIHN0 YXRpYyBib29sIGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBpbnRl bF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3RvcjsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4 ZWRfbW9kZSA9IGludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZml4ZWRfbW9kZTsKIAlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOworCWludCByZXQ7CiAKIAlEUk1fREVCVUdfS01TKCJcbiIpOwogCkBAIC0yODQsMTAg KzI4NSwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJLyogRFNJIHVzZXMgc2hvcnQgcGFja2V0cyBmb3Igc3lu YyBldmVudHMsIHNvIGNsZWFyIG1vZGUgZmxhZ3MgZm9yIERTSSAqLwogCWFkanVzdGVkX21vZGUt PmZsYWdzID0gMDsKIAotCS8qCi0JICogRklYTUUgbW92ZSB0aGUgRFNJIFBMTCBjYWxjIGZyb20g dmx2X2VuYWJsZV9kc2lfcGxsKCkKLQkgKiB0byAuY29tcHV0ZV9jb25maWcoKS4KLQkgKi8KKwly ZXQgPSBpbnRlbF9jb21wdXRlX2RzaV9wbGwoZW5jb2RlciwgcGlwZV9jb25maWcpOworCWlmIChy ZXQpCisJCXJldHVybiBmYWxzZTsKKwogCXBpcGVfY29uZmlnLT5jbG9ja19zZXQgPSB0cnVlOwog CiAJcmV0dXJuIHRydWU7CkBAIC00NzcsNiArNDc4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNp X3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxf ZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7CisJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7CiAJZW51bSBwb3J0 IHBvcnQ7CiAJdTMyIHRtcDsKIApAQCAtNDg3LDcgKzQ4OSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2RzaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCSAqIGxvY2su IEl0IG5lZWRzIHRvIGJlIGZ1bGx5IHBvd2VyZWQgZG93biB0byBmaXggaXQuCiAJICovCiAJaW50 ZWxfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwotCWludGVsX2VuYWJsZV9kc2lfcGxsKGVuY29k ZXIpOworCWludGVsX2VuYWJsZV9kc2lfcGxsKGVuY29kZXIsIGNydGMtPmNvbmZpZyk7CiAKIAlp bnRlbF9kc2lfcHJlcGFyZShlbmNvZGVyKTsKIApAQCAtNzE1LDcgKzcxNyw4IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CiAJcGlwZV9jb25maWctPmhhc19kc2lfZW5jb2RlciA9IHRydWU7CiAKLQlwY2xrID0gaW50ZWxf ZHNpX2dldF9wY2xrKGVuY29kZXIsIHBpcGVfY29uZmlnLT5waXBlX2JwcCk7CisJcGNsayA9IGlu dGVsX2RzaV9nZXRfcGNsayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHAsCisJCQkJICBw aXBlX2NvbmZpZyk7CiAJaWYgKCFwY2xrKQogCQlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpLmgKaW5kZXggOTJmMzkyMjdiMzYxLi5lOTRjMDcxNzBiZjYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RzaS5oCkBAIC0xMjYsMTEgKzEyNiwxNSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRl bF9kc2kgKmVuY190b19pbnRlbF9kc2koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCXJl dHVybiBjb250YWluZXJfb2YoZW5jb2Rlciwgc3RydWN0IGludGVsX2RzaSwgYmFzZS5iYXNlKTsK IH0KIAotZXh0ZXJuIHZvaWQgaW50ZWxfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpOwotZXh0ZXJuIHZvaWQgaW50ZWxfZGlzYWJsZV9kc2lfcGxsKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKTsKLWV4dGVybiB1MzIgaW50ZWxfZHNpX2dldF9wY2xrKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgcGlwZV9icHApOwotZXh0ZXJuIHZvaWQg aW50ZWxfZHNpX3Jlc2V0X2Nsb2NrcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJ CQkJCQllbnVtIHBvcnQgcG9ydCk7CitpbnQgaW50ZWxfY29tcHV0ZV9kc2lfcGxsKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29u ZmlnKTsKK3ZvaWQgaW50ZWxfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCisJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpOwordm9p ZCBpbnRlbF9kaXNhYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOwor dTMyIGludGVsX2RzaV9nZXRfcGNsayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50 IHBpcGVfYnBwLAorCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNvbmZpZyk7Cit2 b2lkIGludGVsX2RzaV9yZXNldF9jbG9ja3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CisJCQkgICAgZW51bSBwb3J0IHBvcnQpOwogCiBzdHJ1Y3QgZHJtX3BhbmVsICp2YnRfcGFuZWxf aW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBwYW5lbF9pZCk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwppbmRleCA5NzhjYzI2NjhhM2QuLmQzNWM4ZGMyOGZi NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwpAQCAtNTEsMTAgKzUxLDYgQEAg aW50IGRzaV9waXhlbF9mb3JtYXRfYnBwKGludCBwaXhlbF9mb3JtYXQpCiAJcmV0dXJuIGJwcDsK IH0KIAotc3RydWN0IGRzaV9tbnAgewotCXUzMiBkc2lfcGxsX2N0cmw7Ci0JdTMyIGRzaV9wbGxf ZGl2OwotfTsKIAogc3RhdGljIGNvbnN0IHUxNiBsZnNyX2NvbnZlcnRzW10gPSB7CiAJNDI2LCA0 NjksIDIzNCwgMzczLCA0NDIsIDIyMSwgMTEwLCAzMTEsIDQxMSwJCS8qIDYyIC0gNzAgKi8KQEAg LTc3LDcgKzczLDggQEAgc3RhdGljIHUzMiBkc2lfY2xrX2Zyb21fcGNsayh1MzIgcGNsaywgaW50 IHBpeGVsX2Zvcm1hdCwgaW50IGxhbmVfY291bnQpCiB9CiAKIHN0YXRpYyBpbnQgZHNpX2NhbGNf bW5wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCXN0cnVjdCBkc2lfbW5w ICpkc2lfbW5wLCBpbnQgdGFyZ2V0X2RzaV9jbGspCisJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY29uZmlnLAorCQkJaW50IHRhcmdldF9kc2lfY2xrKQogewogCXVuc2lnbmVkIGludCBjYWxj X20gPSAwLCBjYWxjX3AgPSAwOwogCXVuc2lnbmVkIGludCBtX21pbiwgbV9tYXgsIHBfbWluID0g MiwgcF9tYXggPSA2OwpAQCAtMTIzLDggKzEyMCw4IEBAIHN0YXRpYyBpbnQgZHNpX2NhbGNfbW5w KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkvKiByZWdpc3RlciBoYXMgbG9n MihOMSksIHRoaXMgd29ya3MgZmluZSBmb3IgcG93ZXJzIG9mIHR3byAqLwogCW4gPSBmZnMobikg LSAxOwogCW1fc2VlZCA9IGxmc3JfY29udmVydHNbY2FsY19tIC0gNjJdOwotCWRzaV9tbnAtPmRz aV9wbGxfY3RybCA9IDEgPDwgKERTSV9QTExfUDFfUE9TVF9ESVZfU0hJRlQgKyBjYWxjX3AgLSAy KTsKLQlkc2lfbW5wLT5kc2lfcGxsX2RpdiA9IG4gPDwgRFNJX1BMTF9OMV9ESVZfU0hJRlQgfAor CWNvbmZpZy0+ZHNpX3BsbC5jdHJsID0gMSA8PCAoRFNJX1BMTF9QMV9QT1NUX0RJVl9TSElGVCAr IGNhbGNfcCAtIDIpOworCWNvbmZpZy0+ZHNpX3BsbC5kaXYgPSBuIDw8IERTSV9QTExfTjFfRElW X1NISUZUIHwKIAkJbV9zZWVkIDw8IERTSV9QTExfTTFfRElWX1NISUZUOwogCiAJcmV0dXJuIDA7 CkBAIC0xMzQsNTQgKzEzMSw2MyBAQCBzdGF0aWMgaW50IGRzaV9jYWxjX21ucChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKiBYWFg6IFRoZSBtdXhpbmcgYW5kIGdhdGluZyBp cyBoYXJkIGNvZGVkIGZvciBub3cuIE5lZWQgdG8gYWRkIHN1cHBvcnQgZm9yCiAgKiBzaGFyaW5n IFBMTHMgd2l0aCB0d28gRFNJIG91dHB1dHMuCiAgKi8KLXN0YXRpYyB2b2lkIHZsdl9jb25maWd1 cmVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyBpbnQgdmx2 X2NvbXB1dGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAg ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGVuY29kZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1 Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNl KTsKIAlpbnQgcmV0OwotCXN0cnVjdCBkc2lfbW5wIGRzaV9tbnA7CiAJdTMyIGRzaV9jbGs7CiAK IAlkc2lfY2xrID0gZHNpX2Nsa19mcm9tX3BjbGsoaW50ZWxfZHNpLT5wY2xrLCBpbnRlbF9kc2kt PnBpeGVsX2Zvcm1hdCwKIAkJCQkgICAgaW50ZWxfZHNpLT5sYW5lX2NvdW50KTsKIAotCXJldCA9 IGRzaV9jYWxjX21ucChkZXZfcHJpdiwgJmRzaV9tbnAsIGRzaV9jbGspOworCXJldCA9IGRzaV9j YWxjX21ucChkZXZfcHJpdiwgY29uZmlnLCBkc2lfY2xrKTsKIAlpZiAocmV0KSB7CiAJCURSTV9E RUJVR19LTVMoImRzaV9jYWxjX21ucCBmYWlsZWRcbiIpOwotCQlyZXR1cm47CisJCXJldHVybiBy ZXQ7CiAJfQogCiAJaWYgKGludGVsX2RzaS0+cG9ydHMgJiAoMSA8PCBQT1JUX0EpKQotCQlkc2lf bW5wLmRzaV9wbGxfY3RybCB8PSBEU0lfUExMX0NMS19HQVRFX0RTSTBfRFNJUExMOworCQljb25m aWctPmRzaV9wbGwuY3RybCB8PSBEU0lfUExMX0NMS19HQVRFX0RTSTBfRFNJUExMOwogCiAJaWYg KGludGVsX2RzaS0+cG9ydHMgJiAoMSA8PCBQT1JUX0MpKQotCQlkc2lfbW5wLmRzaV9wbGxfY3Ry bCB8PSBEU0lfUExMX0NMS19HQVRFX0RTSTFfRFNJUExMOworCQljb25maWctPmRzaV9wbGwuY3Ry bCB8PSBEU0lfUExMX0NMS19HQVRFX0RTSTFfRFNJUExMOworCisJY29uZmlnLT5kc2lfcGxsLmN0 cmwgfD0gRFNJX1BMTF9WQ09fRU47CiAKIAlEUk1fREVCVUdfS01TKCJkc2kgcGxsIGRpdiAlMDh4 LCBjdHJsICUwOHhcbiIsCi0JCSAgICAgIGRzaV9tbnAuZHNpX3BsbF9kaXYsIGRzaV9tbnAuZHNp X3BsbF9jdHJsKTsKKwkJICAgICAgY29uZmlnLT5kc2lfcGxsLmRpdiwgY29uZmlnLT5kc2lfcGxs LmN0cmwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHZsdl9jb25maWd1cmVfZHNp X3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjb25maWcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAKIAl2bHZfY2NrX3dyaXRlKGRl dl9wcml2LCBDQ0tfUkVHX0RTSV9QTExfQ09OVFJPTCwgMCk7Ci0Jdmx2X2Nja193cml0ZShkZXZf cHJpdiwgQ0NLX1JFR19EU0lfUExMX0RJVklERVIsIGRzaV9tbnAuZHNpX3BsbF9kaXYpOwotCXZs dl9jY2tfd3JpdGUoZGV2X3ByaXYsIENDS19SRUdfRFNJX1BMTF9DT05UUk9MLCBkc2lfbW5wLmRz aV9wbGxfY3RybCk7CisJdmx2X2Nja193cml0ZShkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0RJ VklERVIsIGNvbmZpZy0+ZHNpX3BsbC5kaXYpOworCXZsdl9jY2tfd3JpdGUoZGV2X3ByaXYsIEND S19SRUdfRFNJX1BMTF9DT05UUk9MLAorCQkgICAgICBjb25maWctPmRzaV9wbGwuY3RybCAmIH5E U0lfUExMX1ZDT19FTik7CiB9CiAKLXN0YXRpYyB2b2lkIHZsdl9lbmFibGVfZHNpX3BsbChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyB2b2lkIHZsdl9lbmFibGVfZHNpX3Bs bChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuY29kZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKLQl1MzIgdG1wOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwogCiAJRFJNX0RFQlVHX0tNUygiXG4iKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKIAotCXZsdl9jb25maWd1cmVfZHNpX3BsbChlbmNvZGVyKTsKKwl2bHZfY29uZmln dXJlX2RzaV9wbGwoZW5jb2RlciwgY29uZmlnKTsKIAogCS8qIHdhaXQgYXQgbGVhc3QgMC41IHVz IGFmdGVyIHVuZ2F0aW5nIGJlZm9yZSBlbmFibGluZyBWQ08gKi8KIAl1c2xlZXBfcmFuZ2UoMSwg MTApOwogCi0JdG1wID0gdmx2X2Nja19yZWFkKGRldl9wcml2LCBDQ0tfUkVHX0RTSV9QTExfQ09O VFJPTCk7Ci0JdG1wIHw9IERTSV9QTExfVkNPX0VOOwotCXZsdl9jY2tfd3JpdGUoZGV2X3ByaXYs IENDS19SRUdfRFNJX1BMTF9DT05UUk9MLCB0bXApOworCXZsdl9jY2tfd3JpdGUoZGV2X3ByaXYs IENDS19SRUdfRFNJX1BMTF9DT05UUk9MLCBjb25maWctPmRzaV9wbGwuY3RybCk7CiAKIAlpZiAo d2FpdF9mb3Iodmx2X2Nja19yZWFkKGRldl9wcml2LCBDQ0tfUkVHX0RTSV9QTExfQ09OVFJPTCkg JgogCQkJCQkJRFNJX1BMTF9MT0NLLCAyMCkpIHsKQEAgLTE5Nyw3ICsyMDMsNyBAQCBzdGF0aWMg dm9pZCB2bHZfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAK IHN0YXRpYyB2b2lkIHZsdl9kaXNhYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5jb2Rlci0+ YmFzZS5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXUzMiB0bXA7CiAKIAlEUk1fREVCVUdf S01TKCJcbiIpOwpAQCAtMjE0LDcgKzIyMCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9kaXNhYmxlX2Rz aV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAKIHN0YXRpYyB2b2lkIGJ4dF9k aXNhYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5jb2Rlci0+YmFzZS5kZXYtPmRldl9wcml2 YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rl ci0+YmFzZS5kZXYpOwogCXUzMiB2YWw7CiAKIAlEUk1fREVCVUdfS01TKCJcbiIpOwpAQCAtMjQx LDkgKzI0NywxMCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfYnBwX21pc21hdGNoKGludCBwaXhlbF9m b3JtYXQsIGludCBwaXBlX2JwcCkKIAkgICAgIGJwcCwgcGlwZV9icHApOwogfQogCi1zdGF0aWMg dTMyIHZsdl9kc2lfZ2V0X3BjbGsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBw aXBlX2JwcCkKK3N0YXRpYyB1MzIgdmx2X2RzaV9nZXRfcGNsayhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwgaW50IHBpcGVfYnBwLAorCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjb25maWcpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5jb2Rl ci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9kc2kgKmlu dGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCXUzMiBkc2lfY2xv Y2ssIHBjbGs7CiAJdTMyIHBsbF9jdGwsIHBsbF9kaXY7CkBAIC0yNTgsNiArMjY1LDkgQEAgc3Rh dGljIHUzMiB2bHZfZHNpX2dldF9wY2xrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgcGlwZV9icHApCiAJcGxsX2RpdiA9IHZsdl9jY2tfcmVhZChkZXZfcHJpdiwgQ0NLX1JFR19E U0lfUExMX0RJVklERVIpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwogCisJ Y29uZmlnLT5kc2lfcGxsLmN0cmwgPSBwbGxfY3RsICYgfkRTSV9QTExfTE9DSzsKKwljb25maWct PmRzaV9wbGwuZGl2ID0gcGxsX2RpdjsKKwogCS8qIG1hc2sgb3V0IG90aGVyIGJpdHMgYW5kIGV4 dHJhY3QgdGhlIFAxIGRpdmlzb3IgKi8KIAlwbGxfY3RsICY9IERTSV9QTExfUDFfUE9TVF9ESVZf TUFTSzsKIAlwbGxfY3RsID0gcGxsX2N0bCA+PiAoRFNJX1BMTF9QMV9QT1NUX0RJVl9TSElGVCAt IDIpOwpAQCAtMzAzLDcgKzMxMyw4IEBAIHN0YXRpYyB1MzIgdmx2X2RzaV9nZXRfcGNsayhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHBpcGVfYnBwKQogCXJldHVybiBwY2xrOwog fQogCi1zdGF0aWMgdTMyIGJ4dF9kc2lfZ2V0X3BjbGsoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsIGludCBwaXBlX2JwcCkKK3N0YXRpYyB1MzIgYnh0X2RzaV9nZXRfcGNsayhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50IHBpcGVfYnBwLAorCQkJICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjb25maWcpCiB7CiAJdTMyIHBjbGs7CiAJdTMyIGRzaV9jbGs7CkBAIC0z MTcsMTUgKzMyOCw5IEBAIHN0YXRpYyB1MzIgYnh0X2RzaV9nZXRfcGNsayhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50IHBpcGVfYnBwKQogCQlyZXR1cm4gMDsKIAl9CiAKLQlkc2lf cmF0aW8gPSBJOTE1X1JFQUQoQlhUX0RTSV9QTExfQ1RMKSAmCi0JCQkJQlhUX0RTSV9QTExfUkFU SU9fTUFTSzsKKwljb25maWctPmRzaV9wbGwuY3RybCA9IEk5MTVfUkVBRChCWFRfRFNJX1BMTF9D VEwpOwogCi0JLyogSW52YWxpZCBEU0kgcmF0aW8gPyAqLwotCWlmIChkc2lfcmF0aW8gPCBCWFRf RFNJX1BMTF9SQVRJT19NSU4gfHwKLQkJCWRzaV9yYXRpbyA+IEJYVF9EU0lfUExMX1JBVElPX01B WCkgewotCQlEUk1fRVJST1IoIkludmFsaWQgRFNJIHBsbCByYXRpbygldSkgcHJvZ3JhbW1lZFxu IiwgZHNpX3JhdGlvKTsKLQkJcmV0dXJuIDA7Ci0JfQorCWRzaV9yYXRpbyA9IGNvbmZpZy0+ZHNp X3BsbC5jdHJsICYgQlhUX0RTSV9QTExfUkFUSU9fTUFTSzsKIAogCWRzaV9jbGsgPSAoZHNpX3Jh dGlvICogQlhUX1JFRl9DTE9DS19LSFopIC8gMjsKIApAQCAtMzM4LDEyICszNDMsMTMgQEAgc3Rh dGljIHUzMiBieHRfZHNpX2dldF9wY2xrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgcGlwZV9icHApCiAJcmV0dXJuIHBjbGs7CiB9CiAKLXUzMiBpbnRlbF9kc2lfZ2V0X3BjbGso c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBwaXBlX2JwcCkKK3UzMiBpbnRlbF9k c2lfZ2V0X3BjbGsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBwaXBlX2JwcCwK KwkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCiB7CiAJaWYgKElTX0JS T1hUT04oZW5jb2Rlci0+YmFzZS5kZXYpKQotCQlyZXR1cm4gYnh0X2RzaV9nZXRfcGNsayhlbmNv ZGVyLCBwaXBlX2JwcCk7CisJCXJldHVybiBieHRfZHNpX2dldF9wY2xrKGVuY29kZXIsIHBpcGVf YnBwLCBjb25maWcpOwogCWVsc2UKLQkJcmV0dXJuIHZsdl9kc2lfZ2V0X3BjbGsoZW5jb2Rlciwg cGlwZV9icHApOworCQlyZXR1cm4gdmx2X2RzaV9nZXRfcGNsayhlbmNvZGVyLCBwaXBlX2JwcCwg Y29uZmlnKTsKIH0KIAogc3RhdGljIHZvaWQgdmx2X2RzaV9yZXNldF9jbG9ja3Moc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsIGVudW0gcG9ydCBwb3J0KQpAQCAtMzYwLDcgKzM2Niw4IEBA IHN0YXRpYyB2b2lkIHZsdl9kc2lfcmVzZXRfY2xvY2tzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLCBlbnVtIHBvcnQgcG9ydCkKIH0KIAogLyogUHJvZ3JhbSBCWFQgTWlwaSBjbG9ja3Mg YW5kIGRpdmlkZXJzICovCi1zdGF0aWMgdm9pZCBieHRfZHNpX3Byb2dyYW1fY2xvY2tzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQorc3RhdGljIHZvaWQgYnh0X2RzaV9w cm9ncmFtX2Nsb2NrcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCwKKwkJ CQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdTMyIHRtcDsK QEAgLTM4MCw4ICszODcsNyBAQCBzdGF0aWMgdm9pZCBieHRfZHNpX3Byb2dyYW1fY2xvY2tzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQogCXRtcCAmPSB+KEJYVF9NSVBJ X1JYX0VTQ0xLX0xPV0VSX0ZJWERJVl9NQVNLKHBvcnQpKTsKIAogCS8qIEdldCB0aGUgY3VycmVu dCBEU0kgcmF0ZShhY3R1YWwpICovCi0JcGxsX3JhdGlvID0gSTkxNV9SRUFEKEJYVF9EU0lfUExM X0NUTCkgJgotCQkJCUJYVF9EU0lfUExMX1JBVElPX01BU0s7CisJcGxsX3JhdGlvID0gY29uZmln LT5kc2lfcGxsLmN0cmwgJiBCWFRfRFNJX1BMTF9SQVRJT19NQVNLOwogCWRzaV9yYXRlID0gKEJY VF9SRUZfQ0xPQ0tfS0haICogcGxsX3JhdGlvKSAvIDI7CiAKIAkvKgpAQCAtNDE3LDE2ICs0MjMs MTUgQEAgc3RhdGljIHZvaWQgYnh0X2RzaV9wcm9ncmFtX2Nsb2NrcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKIAlJOTE1X1dSSVRFKEJYVF9NSVBJX0NMT0NLX0NUTCwg dG1wKTsKIH0KIAotc3RhdGljIGJvb2wgYnh0X2NvbmZpZ3VyZV9kc2lfcGxsKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQorc3RhdGljIGludCBieHRfY29tcHV0ZV9kc2lfcGxsKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjb25maWcpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5j b2Rlci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2Rz aSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwogCXU4IGRzaV9yYXRpbzsKIAl1 MzIgZHNpX2NsazsKLQl1MzIgdmFsOwogCiAJZHNpX2NsayA9IGRzaV9jbGtfZnJvbV9wY2xrKGlu dGVsX2RzaS0+cGNsaywgaW50ZWxfZHNpLT5waXhlbF9mb3JtYXQsCi0JCQlpbnRlbF9kc2ktPmxh bmVfY291bnQpOworCQkJCSAgICBpbnRlbF9kc2ktPmxhbmVfY291bnQpOwogCiAJLyoKIAkgKiBG cm9tIGNsb2NrIGRpYWdyYW0sIHRvIGdldCBQTEwgcmF0aW8gZGl2aWRlciwgZGl2aWRlIGRvdWJs ZSBvZiBEU0kKQEAgLTQzNSw5ICs0NDAsOSBAQCBzdGF0aWMgYm9vbCBieHRfY29uZmlndXJlX2Rz aV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJICovCiAJZHNpX3JhdGlvID0g RElWX1JPVU5EX1VQKGRzaV9jbGsgKiAyLCBCWFRfUkVGX0NMT0NLX0tIWik7CiAJaWYgKGRzaV9y YXRpbyA8IEJYVF9EU0lfUExMX1JBVElPX01JTiB8fAotCQkJZHNpX3JhdGlvID4gQlhUX0RTSV9Q TExfUkFUSU9fTUFYKSB7CisJICAgIGRzaV9yYXRpbyA+IEJYVF9EU0lfUExMX1JBVElPX01BWCkg ewogCQlEUk1fRVJST1IoIkNhbnQgZ2V0IGEgc3VpdGFibGUgcmF0aW8gZnJvbSBEU0kgUExMIHJh dGlvc1xuIik7Ci0JCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIC1FQ0hSTkc7CiAJfQogCiAJLyoK QEAgLTQ0NSwyNyArNDUwLDI4IEBAIHN0YXRpYyBib29sIGJ4dF9jb25maWd1cmVfZHNpX3BsbChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkgKiBTcGVjIHNheXMgYm90aCBoYXZlIHRv IGJlIHByb2dyYW1tZWQsIGV2ZW4gaWYgb25lIGlzIG5vdCBnZXR0aW5nCiAJICogdXNlZC4gQ29u ZmlndXJlIE1JUElfQ0xPQ0tfQ1RMIGRpdmlkZXJzIGluIG1vZGVzZXQKIAkgKi8KLQl2YWwgPSBJ OTE1X1JFQUQoQlhUX0RTSV9QTExfQ1RMKTsKLQl2YWwgJj0gfkJYVF9EU0lfUExMX1BWRF9SQVRJ T19NQVNLOwotCXZhbCAmPSB+QlhUX0RTSV9GUkVRX1NFTF9NQVNLOwotCXZhbCAmPSB+QlhUX0RT SV9QTExfUkFUSU9fTUFTSzsKLQl2YWwgfD0gKGRzaV9yYXRpbyB8IEJYVF9EU0lBXzE2WF9CWTIg fCBCWFRfRFNJQ18xNlhfQlkyKTsKKwljb25maWctPmRzaV9wbGwuY3RybCA9IGRzaV9yYXRpbyB8 IEJYVF9EU0lBXzE2WF9CWTIgfCBCWFRfRFNJQ18xNlhfQlkyOwogCiAJLyogQXMgcGVyIHJlY29t bWVuZGF0aW9uIGZyb20gaGFyZHdhcmUgdGVhbSwKIAkgKiBQcm9nIFBWRCByYXRpbyA9MSBpZiBk c2kgcmF0aW8gPD0gNTAKIAkgKi8KLQlpZiAoZHNpX3JhdGlvIDw9IDUwKSB7Ci0JCXZhbCAmPSB+ QlhUX0RTSV9QTExfUFZEX1JBVElPX01BU0s7Ci0JCXZhbCB8PSBCWFRfRFNJX1BMTF9QVkRfUkFU SU9fMTsKLQl9CisJaWYgKGRzaV9yYXRpbyA8PSA1MCkKKwkJY29uZmlnLT5kc2lfcGxsLmN0cmwg fD0gQlhUX0RTSV9QTExfUFZEX1JBVElPXzE7CiAKLQlJOTE1X1dSSVRFKEJYVF9EU0lfUExMX0NU TCwgdmFsKTsKLQlQT1NUSU5HX1JFQUQoQlhUX0RTSV9QTExfQ1RMKTsKKwlyZXR1cm4gMDsKK30K IAotCXJldHVybiB0cnVlOworc3RhdGljIHZvaWQgYnh0X2NvbmZpZ3VyZV9kc2lfcGxsKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNvbmZpZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCUk5MTVfV1JJVEUoQlhUX0RTSV9QTExfQ1RM LCBjb25maWctPmRzaV9wbGwuY3RybCk7CisJUE9TVElOR19SRUFEKEJYVF9EU0lfUExMX0NUTCk7 CiB9CiAKLXN0YXRpYyB2b2lkIGJ4dF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKK3N0YXRpYyB2b2lkIGJ4dF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY29uZmlnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29k ZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kg PSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKQEAgLTQ3NSwxNCArNDgxLDExIEBA IHN0YXRpYyB2b2lkIGJ4dF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKIAlEUk1fREVCVUdfS01TKCJcbiIpOwogCiAJLyogQ29uZmlndXJlIFBMTCB2YWxlcyAq LwotCWlmICghYnh0X2NvbmZpZ3VyZV9kc2lfcGxsKGVuY29kZXIpKSB7Ci0JCURSTV9FUlJPUigi Q29uZmlndXJlIERTSSBQTEwgZmFpbGVkLCBhYm9ydCBQTEwgZW5hYmxlXG4iKTsKLQkJcmV0dXJu OwotCX0KKwlieHRfY29uZmlndXJlX2RzaV9wbGwoZW5jb2RlciwgY29uZmlnKTsKIAogCS8qIFBy b2dyYW0gVFgsIFJYLCBEcGh5IGNsb2NrcyAqLwogCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGlu dGVsX2RzaS0+cG9ydHMpCi0JCWJ4dF9kc2lfcHJvZ3JhbV9jbG9ja3MoZW5jb2Rlci0+YmFzZS5k ZXYsIHBvcnQpOworCQlieHRfZHNpX3Byb2dyYW1fY2xvY2tzKGVuY29kZXItPmJhc2UuZGV2LCBw b3J0LCBjb25maWcpOwogCiAJLyogRW5hYmxlIERTSSBQTEwgKi8KIAl2YWwgPSBJOTE1X1JFQUQo QlhUX0RTSV9QTExfRU5BQkxFKTsKQEAgLTQ5OCwxNCArNTAxLDI4IEBAIHN0YXRpYyB2b2lkIGJ4 dF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAlEUk1fREVC VUdfS01TKCJEU0kgUExMIGxvY2tlZFxuIik7CiB9CiAKLXZvaWQgaW50ZWxfZW5hYmxlX2RzaV9w bGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCitpbnQgaW50ZWxfY29tcHV0ZV9kc2lf cGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY29uZmlnKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5i YXNlLmRldjsKKworCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYp KQorCQlyZXR1cm4gdmx2X2NvbXB1dGVfZHNpX3BsbChlbmNvZGVyLCBjb25maWcpOworCWVsc2Ug aWYgKElTX0JST1hUT04oZGV2KSkKKwkJcmV0dXJuIGJ4dF9jb21wdXRlX2RzaV9wbGwoZW5jb2Rl ciwgY29uZmlnKTsKKworCXJldHVybiAtRU5PREVWOworfQorCit2b2lkIGludGVsX2VuYWJsZV9k c2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl bmNvZGVyLT5iYXNlLmRldjsKIAogCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZ VklFVyhkZXYpKQotCQl2bHZfZW5hYmxlX2RzaV9wbGwoZW5jb2Rlcik7CisJCXZsdl9lbmFibGVf ZHNpX3BsbChlbmNvZGVyLCBjb25maWcpOwogCWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkKLQkJ Ynh0X2VuYWJsZV9kc2lfcGxsKGVuY29kZXIpOworCQlieHRfZW5hYmxlX2RzaV9wbGwoZW5jb2Rl ciwgY29uZmlnKTsKIH0KIAogdm9pZCBpbnRlbF9kaXNhYmxlX2RzaV9wbGwoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCi0tIAoyLjQuMTAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=