From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH 30/67] drm/i915/cnl: Implement CNL display init/unit sequence Date: Thu, 6 Apr 2017 12:15:26 -0700 Message-ID: <1491506163-14587-30-git-send-email-rodrigo.vivi@intel.com> References: <1491506163-14587-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95E0F6EA09 for ; Thu, 6 Apr 2017 19:16:03 +0000 (UTC) In-Reply-To: <1491506163-14587-1-git-send-email-rodrigo.vivi@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: Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklt cGxlbWVudCB0aGUgQ05MIGRpc3BsYXkgaW5pdC91bmluaXQgc2VxdWVuY2UgYXMgb3V0bGluZWQg aW4gQnNwZWMuCgpRdWl0ZSBzaW1pbGFyIHRvIFNLTC9CWFQuIFRoZSBtYWluIGNvbXBsaWNhaXRv biBpcyBwcm9iYWJseSB0aGUgZXh0cmEKcHJvY21vbiBzZXR1cCB3ZSBtdXN0IGRvIGJhc2VkIG9u IHRoZSBwcm9jZXNzL3ZvbHRhZ2UgaW5mb3JtYXRpb24gd2UKY2FuIHJlYWQgb3V0IGZyb20gc29t ZSByZWdpc3Rlci4KCkZvciBub3cgd2UgYXNzdW1lIERNQyB3aWxsIGhhbmRsZSB0aGUgQVVYIHdl bGxzLCBhbmQgd2UnbGwganVzdCBlbmFibGUKYWxsIG9mIHRoZW0gZHVyaW5nIHRoZSBpbml0IHNl cXVlbmNlLiBFdmVuIGlmIERNQyB3aWxsIGhhbmRsZSB0aGVtLCB3ZQpzaG91bGQgcGVyaGFwcyB0 cmltIHRoZSBzZXQgb2YgZW5hYmxlZCB3ZWxscyBiYXNlZCBvbiB3aGljaCBEREkgcG9ydHMKYXJl IGFjdHVhbGx5IHByZXNlbnQuCgp2Mjogcy9za2xfZGJ1Zi9nZW45X2RidWYvIHRvIGZvbGxvdyB1 cHN0cmVhbQogICAgYnh0IG5lZWRlZCBhIGNkY2xrIHNhbml0aXplIHN0ZXAsIHNvIGxldCdzIGFk ZCBpdCBmb3IgY25sIHRvbwp2Mzogcy9DSElDS0VOX01JU0NfMS9DSElDS0VOX01JU0NfMi8gKEFu ZGVyKQp2NDogUmViYXNlZCBieSBSb2RyaWdvIGFmdGVyIFZpbGxlJ3MgY2RjbGsgcmV3b3JrCnY1 OiBSZW1vdmVkIHVuZWNlc3NhcnkgQXV4IElPIGZvcmNlZCBlbmFibGUvZGlzYWJsZSwgRml4IERX MTAgc2V0dXAKICAgIEZpeCBwcm9jcG9uIE1hc2suIChDcmVkaXRzLXRvIFBhdWxvIGFuZCBDbGlu dCkKICAgIFJlbW92ZSBBMCB3b3JrYXJvdW5kLgp2NjogUmViYXNlZCBvbiB0b3Agb2YgcmVjZW50 IGNvZGUgKFJvZHJpZ28pLgp2NzogUmVzcGVjdCB0aGUgb3JkZXIgb2Ygc2FuaXRpemVfIGFmdGVy IHNldF8KICAgIChEb25lIGJ5IFJvZHJpZ28sIFJlcXVlc3RlZCBieSBWaWxsZSkKCkNjOiBQYXVs byBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KQ2M6IENsaW50IFRheWxvciA8Y2xp bnRvbi5hLnRheWxvckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2 aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oICAgICAgICAgfCAgMjUgKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y2RjbGsuYyAgICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA4MzUzODkyLi4zY2ZjNjVmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKQEAgLTE2NTUsNiArMTY1NSw5IEBAIGVudW0gc2tsX2Rpc3BfcG93 ZXJfd2VsbHMgewogI2RlZmluZSAgIFBIWV9SRVNFUlZFRAkJCSgxIDw8IDcpCiAjZGVmaW5lIEJY VF9QT1JUX0NMMUNNX0RXMChwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFcwX0JD KQogCisjZGVmaW5lIENOTF9QT1JUX0NMMUNNX0RXNQkJX01NSU8oMHgxNjIwMTQpCisjZGVmaW5l ICAgQ0xfUE9XRVJfRE9XTl9FTkFCTEUJCSgxIDw8IDQpCisKICNkZWZpbmUgX1BPUlRfQ0wxQ01f RFc5X0EJCTB4MTYyMDI0CiAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXOV9CQwkJMHg2QzAyNAogI2Rl ZmluZSAgIElSRUYwUkNfT0ZGU0VUX1NISUZUCQk4CkBAIC0xNjg3LDYgKzE2OTAsMjUgQEAgZW51 bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIEJYVF9QT1JUX0NMMkNNX0RXNihwaHkp CQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wyQ01fRFc2X0JDKQogI2RlZmluZSAgIERXNl9PTERP X0RZTl9QV1JfRE9XTl9FTgkoMSA8PCAyOCkKIAorI2RlZmluZSBDTkxfUE9SVF9DT01QX0RXMAkJ X01NSU8oMHgxNjIxMDApCisjZGVmaW5lICAgQ09NUF9JTklUCQkJKDEgPDwgMzEpCisjZGVmaW5l IENOTF9QT1JUX0NPTVBfRFcxCQlfTU1JTygweDE2MjEwNCkKKyNkZWZpbmUgQ05MX1BPUlRfQ09N UF9EVzMJCV9NTUlPKDB4MTYyMTBjKQorI2RlZmluZSAgIFBST0NFU1NfSU5GT19ET1RfMAkJKDAg PDwgMjYpCisjZGVmaW5lICAgUFJPQ0VTU19JTkZPX0RPVF8xCQkoMSA8PCAyNikKKyNkZWZpbmUg ICBQUk9DRVNTX0lORk9fRE9UXzQJCSgyIDw8IDI2KQorI2RlZmluZSAgIFBST0NFU1NfSU5GT19N QVNLCQkoNyA8PCAyNikKKyNkZWZpbmUgICBQUk9DRVNTX0lORk9fU0hJRlQJCTI2CisjZGVmaW5l ICAgVk9MVEFHRV9JTkZPXzBfODVWCQkoMCA8PCAyNCkKKyNkZWZpbmUgICBWT0xUQUdFX0lORk9f MF85NVYJCSgxIDw8IDI0KQorI2RlZmluZSAgIFZPTFRBR0VfSU5GT18xXzA1VgkJKDIgPDwgMjQp CisjZGVmaW5lICAgVk9MVEFHRV9JTkZPX01BU0sJCSgzIDw8IDI0KQorI2RlZmluZSAgIFZPTFRB R0VfSU5GT19TSElGVAkJMjQKKyNkZWZpbmUgQ05MX1BPUlRfQ09NUF9EVzgJCV9NTUlPKDB4MTYy MTIwKQorI2RlZmluZSAgIFBSRElDX0lDT01QX0RJUwkJKDEgPDwgMTQpCisjZGVmaW5lIENOTF9Q T1JUX0NPTVBfRFc5CQlfTU1JTygweDE2MjEyNCkKKyNkZWZpbmUgQ05MX1BPUlRfQ09NUF9EVzEw CQlfTU1JTygweDE2MjEyOCkKKwogLyogQlhUIFBIWSBSZWYgcmVnaXN0ZXJzICovCiAjZGVmaW5l IF9QT1JUX1JFRl9EVzNfQQkJCTB4MTYyMThDCiAjZGVmaW5lIF9QT1JUX1JFRl9EVzNfQkMJCTB4 NkMxOEMKQEAgLTY1MTcsNiArNjUzOSw5IEBAIGVudW0gewogI2RlZmluZSAgR0xLX0NMMV9QV1Jf RE9XTgkoMSA8PCAxMSkKICNkZWZpbmUgIEdMS19DTDJfUFdSX0RPV04JKDEgPDwgMTIpCiAKKyNk ZWZpbmUgQ0hJQ0tFTl9NSVNDXzIJCV9NTUlPKDB4NDIwODQpCisjZGVmaW5lICBDT01QX1BXUl9E T1dOCQkoMSA8PCAyMykKKwogI2RlZmluZSBfQ0hJQ0tFTl9QSVBFU0xfMV9BCTB4NDIwYjAKICNk ZWZpbmUgX0NISUNLRU5fUElQRVNMXzFfQgkweDQyMGI0CiAjZGVmaW5lICBIU1dfRkJDUV9ESVMJ CQkoMSA8PCAyMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xr LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCmluZGV4IGJlZTQzOTQuLmY5 YmExZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwpAQCAtMTU1NSw2ICsxNTU1LDEx NCBAQCBzdGF0aWMgdm9pZCBjbmxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwogfQogCitzdGF0aWMgaW50 IGNubF9jZGNsa19wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50 IGNkY2xrKQoreworCWludCByYXRpbzsKKworCWlmIChjZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsu aHcucmVmKQorCQlyZXR1cm4gMDsKKworCXN3aXRjaCAoY2RjbGspIHsKKwlkZWZhdWx0OgorCQlN SVNTSU5HX0NBU0UoY2RjbGspOworCWNhc2UgMTY4MDAwOgorCWNhc2UgMzM2MDAwOgorCQlyYXRp byA9IGRldl9wcml2LT5jZGNsay5ody5yZWYgPT0gMTkyMDAgPyAzNSA6IDI4OworCQlicmVhazsK KwljYXNlIDUyODAwMDoKKwkJcmF0aW8gPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmID09IDE5MjAw ID8gNTUgOiA0NDsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5y ZWYgKiByYXRpbzsKK30KKworc3RhdGljIHZvaWQgY25sX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwl1MzIgY2RjdGwsIGV4cGVjdGVkOworCisJ aW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKKworCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcu dmNvID09IDAgfHwKKwkgICAgZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID09IGRldl9wcml2LT5j ZGNsay5ody5yZWYpCisJCWdvdG8gc2FuaXRpemU7CisKKwkvKiBEUExMIG9rYXk7IHZlcmlmeSB0 aGUgY2RjbG9jaworCSAqCisJICogU29tZSBCSU9TIHZlcnNpb25zIGxlYXZlIGFuIGluY29ycmVj dCBkZWNpbWFsIGZyZXF1ZW5jeSB2YWx1ZSBhbmQKKwkgKiBzZXQgcmVzZXJ2ZWQgTUJaIGJpdHMg aW4gQ0RDTEtfQ1RMIGF0IGxlYXN0IGR1cmluZyBleGl0aW5nIGZyb20gUzQsCisJICogc28gc2Fu aXRpemUgdGhpcyByZWdpc3Rlci4KKwkgKi8KKwljZGN0bCA9IEk5MTVfUkVBRChDRENMS19DVEwp OworCS8qCisJICogTGV0J3MgaWdub3JlIHRoZSBwaXBlIGZpZWxkLCBzaW5jZSBCSU9TIGNvdWxk IGhhdmUgY29uZmlndXJlZCB0aGUKKwkgKiBkaXZpZGVycyBib3RoIHN5bmNoaW5nIHRvIGFuIGFj dGl2ZSBwaXBlLCBvciBhc3luY2hyb25vdXNseQorCSAqIChQSVBFX05PTkUpLgorCSAqLworCWNk Y3RsICY9IH5CWFRfQ0RDTEtfQ0QyWF9QSVBFX05PTkU7CisKKwlleHBlY3RlZCA9IChjZGN0bCAm IEJYVF9DRENMS19DRDJYX0RJVl9TRUxfTUFTSykgfAorCQkgICBza2xfY2RjbGtfZGVjaW1hbChk ZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspOworCisJaWYgKGNkY3RsID09IGV4cGVjdGVkKQorCQkv KiBBbGwgd2VsbDsgbm90aGluZyB0byBzYW5pdGl6ZSAqLworCQlyZXR1cm47CisKK3Nhbml0aXpl OgorCURSTV9ERUJVR19LTVMoIlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUtb3Nc biIpOworCisJLyogZm9yY2UgY2RjbGsgcHJvZ3JhbW1pbmcgKi8KKwlkZXZfcHJpdi0+Y2RjbGsu aHcuY2RjbGsgPSAwOworCisJLyogZm9yY2UgZnVsbCBQTEwgZGlzYWJsZSArIGVuYWJsZSAqLwor CWRldl9wcml2LT5jZGNsay5ody52Y28gPSAtMTsKK30KKworLyoqCisgKiBjbmxfaW5pdF9jZGNs ayAtIEluaXRpYWxpemUgQ0RDTEsgb24gQ05MCisgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCisg KgorICogSW5pdGlhbGl6ZSBDRENMSyBmb3IgQ05MLiBUaGlzIGlzIGdlbmVyYWxseQorICogZG9u ZSBvbmx5IGR1cmluZyB0aGUgZGlzcGxheSBjb3JlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLAor ICogYWZ0ZXIgd2hpY2ggdGhlIERNQyB3aWxsIHRha2UgY2FyZSBvZiB0dXJuaW5nIENEQ0xLIG9m Zi9vbgorICogYXMgbmVlZGVkLgorICovCisKK3ZvaWQgY25sX2luaXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBj ZGNsa19zdGF0ZTsKKworCWNubF9zYW5pdGl6ZV9jZGNsayhkZXZfcHJpdik7CisKKwlpZiAoZGV2 X3ByaXYtPmNkY2xrLmh3LmNkY2xrICE9IDAgJiYKKwkgICAgZGV2X3ByaXYtPmNkY2xrLmh3LnZj byAhPSAwKQorCQlyZXR1cm47CisKKwljZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5odzsK KworCWNkY2xrX3N0YXRlLmNkY2xrID0gMTY4MDAwOworCWNkY2xrX3N0YXRlLnZjbyA9IGNubF9j ZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsa19zdGF0ZS5jZGNsayk7CisKKwljbmxfc2V0X2Nk Y2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUpOworfQorCisvKioKKyAqIGNubF91bmluaXRfY2Rj bGsgLSBVbmluaXRpYWxpemUgQ0RDTEsgb24gQ05MCisgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNl CisgKgorICogVW5pbml0aWFsaXplIENEQ0xLIGZvciBDTkwuIFRoaXMgaXMgZG9uZSBvbmx5Cisg KiBkdXJpbmcgdGhlIGRpc3BsYXkgY29yZSB1bmluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgorICov Cit2b2lkIGNubF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQoreworCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19zdGF0ZSA9IGRldl9wcml2LT5j ZGNsay5odzsKKworCWNkY2xrX3N0YXRlLmNkY2xrID0gY2RjbGtfc3RhdGUucmVmOworCWNkY2xr X3N0YXRlLnZjbyA9IDA7CisKKwljbmxfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUp OworfQorCiAvKioKICAqIGludGVsX2NkY2xrX3N0YXRlX2NvbXBhcmUgLSBEZXRlcm1pbmUgaWYg dHdvIENEQ0xLIHN0YXRlcyBkaWZmZXIKICAqIEBhOiBmaXJzdCBDRENMSyBzdGF0ZQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAppbmRleCA3YmMwYzI1Li5hNTI2ZTZlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaApAQCAtMTI4MCw2ICsxMjgwLDggQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19l bmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAvKiBpbnRlbF9jZGNsay5jICov CiB2b2lkIHNrbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiB2b2lkIHNrbF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKK3ZvaWQgY25sX2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKK3ZvaWQgY25sX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBieHRfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBieHRfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiB2b2lkIGludGVsX2luaXRfY2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwppbmRl eCAxNzk3YzkxLi41YzNjNmVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jCkBAIC0yNjk4LDYgKzI2OTgsMTExIEBAIHZvaWQgYnh0X2Rpc3BsYXlfY29yZV91bmluaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCW11dGV4X3VubG9jaygmcG93ZXJf ZG9tYWlucy0+bG9jayk7CiB9CiAKKyNkZWZpbmUgQ05MX1BST0NNT05fSURYKHZhbCkgXAorCSgo KHZhbCkgJiAoUFJPQ0VTU19JTkZPX01BU0sgfCBWT0xUQUdFX0lORk9fTUFTSykpID4+IFZPTFRB R0VfSU5GT19TSElGVCkKKyNkZWZpbmUgTlVNX0NOTF9QUk9DTU9OIFwKKwkoQ05MX1BST0NNT05f SURYKFZPTFRBR0VfSU5GT19NQVNLIHwgUFJPQ0VTU19JTkZPX01BU0spICsgMSkKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfcHJvY21vbiB7CisJdTMyIGR3MSwgZHc5LCBkdzEwOworfSBjbmxf cHJvY21vbl92YWx1ZXNbTlVNX0NOTF9QUk9DTU9OXSA9IHsKKwlbQ05MX1BST0NNT05fSURYKFZP TFRBR0VfSU5GT18wXzg1ViB8IFBST0NFU1NfSU5GT19ET1RfMCldID0KKwkJeyAuZHcxID0gMHgw MCA8PCAxNiwgLmR3OSA9IDB4NjJBQjY3QkIsIC5kdzEwID0gMHg1MTkxNEY5NiwgfSwKKwlbQ05M X1BST0NNT05fSURYKFZPTFRBR0VfSU5GT18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMCldID0K KwkJeyAuZHcxID0gMHgwMCA8PCAxNiwgLmR3OSA9IDB4ODZFMTcyQzcsIC5kdzEwID0gMHg3N0NB NUVBQiwgfSwKKwlbQ05MX1BST0NNT05fSURYKFZPTFRBR0VfSU5GT18wXzk1ViB8IFBST0NFU1Nf SU5GT19ET1RfMSldID0KKwkJeyAuZHcxID0gMHgwMCA8PCAxNiwgLmR3OSA9IDB4OTNGODdGRTEs IC5kdzEwID0gMHg4QUU4NzFDNSwgfSwKKwlbQ05MX1BST0NNT05fSURYKFZPTFRBR0VfSU5GT18x XzA1ViB8IFBST0NFU1NfSU5GT19ET1RfMCldID0KKwkJeyAuZHcxID0gMHgwMCA8PCAxNiwgLmR3 OSA9IDB4OThGQTgyREQsIC5kdzEwID0gMHg4OUU0NkRDMSwgfSwKKwlbQ05MX1BST0NNT05fSURY KFZPTFRBR0VfSU5GT18xXzA1ViB8IFBST0NFU1NfSU5GT19ET1RfMSldID0KKwkJeyAuZHcxID0g MHg0NCA8PCAxNiwgLmR3OSA9IDB4OUEwMEFCMjUsIC5kdzEwID0gMHg4QUUzOEZGMSwgfSwKK307 CisKK3N0YXRpYyB2b2lkIGNubF9kaXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGJvb2wgcmVzdW1lKQoreworCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFp bnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CisJY29uc3Qgc3Ry dWN0IGNubF9wcm9jbW9uICpwcm9jbW9uOworCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKndlbGw7 CisJdTMyIHZhbDsKKworCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNB QkxFKTsKKworCS8qIDEuIEVuYWJsZSBQQ0ggUmVzZXQgSGFuZHNoYWtlICovCisJdmFsID0gSTkx NV9SRUFEKEhTV19OREVfUlNUV1JOX09QVCk7CisJdmFsIHw9IFJFU0VUX1BDSF9IQU5EU0hBS0Vf RU5BQkxFOworCUk5MTVfV1JJVEUoSFNXX05ERV9SU1RXUk5fT1BULCB2YWwpOworCisJLyogMi4g RW5hYmxlIENvbXAgKi8KKwl2YWwgPSBJOTE1X1JFQUQoQ0hJQ0tFTl9NSVNDXzIpOworCXZhbCAm PSB+Q09NUF9QV1JfRE9XTjsKKwlJOTE1X1dSSVRFKENISUNLRU5fTUlTQ18yLCB2YWwpOworCisJ dmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFczKTsKKwlwcm9jbW9uID0gJmNubF9wcm9j bW9uX3ZhbHVlc1tDTkxfUFJPQ01PTl9JRFgodmFsKV07CisKKwlXQVJOX09OKHByb2Ntb24tPmR3 MTAgPT0gMCk7CisKKwl2YWwgPSBJOTE1X1JFQUQoQ05MX1BPUlRfQ09NUF9EVzEpOworCXZhbCAm PSB+KCgweGZmIDw8IDE2KSB8IDB4ZmYpOworCXZhbCB8PSBwcm9jbW9uLT5kdzE7CisJSTkxNV9X UklURShDTkxfUE9SVF9DT01QX0RXMSwgdmFsKTsKKworCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ09N UF9EVzksIHByb2Ntb24tPmR3OSk7CisJSTkxNV9XUklURShDTkxfUE9SVF9DT01QX0RXMTAsIHBy b2Ntb24tPmR3MTApOworCisJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFcwKTsKKwl2 YWwgfD0gQ09NUF9JTklUOworCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ09NUF9EVzAsIHZhbCk7CisK KwkvKiAzLiAqLworCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DTDFDTV9EVzUpOworCXZhbCB8 PSBDTF9QT1dFUl9ET1dOX0VOQUJMRTsKKwlJOTE1X1dSSVRFKENOTF9QT1JUX0NMMUNNX0RXNSwg dmFsKTsKKworCS8qIDQuIEVuYWJsZSBQb3dlciBXZWxsIDEgKFBHMSkgYW5kIEF1eCBJTyBQb3dl ciAqLworCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOworCXdlbGwgPSBsb29rdXBf cG93ZXJfd2VsbChkZXZfcHJpdiwgU0tMX0RJU1BfUFdfMSk7CisJaW50ZWxfcG93ZXJfd2VsbF9l bmFibGUoZGV2X3ByaXYsIHdlbGwpOworCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9j ayk7CisKKwkvKiA1LiBFbmFibGUgQ0QgY2xvY2sgKi8KKwljbmxfaW5pdF9jZGNsayhkZXZfcHJp dik7CisKKwkvKiA2LiBFbmFibGUgREJVRiAqLworCWdlbjlfZGJ1Zl9lbmFibGUoZGV2X3ByaXYp OworfQorCisjdW5kZWYgQ05MX1BST0NNT05fSURYCisjdW5kZWYgTlVNX0NOTF9QUk9DTU9OCisK K3N0YXRpYyB2b2lkIGNubF9kaXNwbGF5X2NvcmVfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21h aW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwg KndlbGw7CisJdTMyIHZhbDsKKworCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFU RV9ESVNBQkxFKTsKKworCS8qIDEuIERpc2FibGUgYWxsIGRpc3BsYXkgZW5naW5lIGZ1bmN0aW9u cyAtPiBhcmVhZHkgZG9uZSAqLworCisJLyogMi4gRGlzYWJsZSBEQlVGICovCisJZ2VuOV9kYnVm X2Rpc2FibGUoZGV2X3ByaXYpOworCisJLyogMy4gRGlzYWJsZSBDRCBjbG9jayAqLworCWNubF91 bmluaXRfY2RjbGsoZGV2X3ByaXYpOworCisJLyogNC4gRGlzYWJsZSBQb3dlciBXZWxsIDEgKFBH MSkgYW5kIEF1eCBJTyBQb3dlciAqLworCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2sp OworCXdlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJpdiwgU0tMX0RJU1BfUFdfMSk7CisJ aW50ZWxfcG93ZXJfd2VsbF9kaXNhYmxlKGRldl9wcml2LCB3ZWxsKTsKKwltdXRleF91bmxvY2so JnBvd2VyX2RvbWFpbnMtPmxvY2spOworCisJLyogNS4gRGlzYWJsZSBDb21wICovCisJdmFsID0g STkxNV9SRUFEKENISUNLRU5fTUlTQ18yKTsKKwl2YWwgfD0gQ09NUF9QV1JfRE9XTjsKKwlJOTE1 X1dSSVRFKENISUNLRU5fTUlTQ18yLCB2YWwpOworfQorCiBzdGF0aWMgdm9pZCBjaHZfcGh5X2Nv bnRyb2xfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0 IGk5MTVfcG93ZXJfd2VsbCAqY21uX2JjID0KQEAgLTI4MzAsNyArMjkzNSw5IEBAIHZvaWQgaW50 ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgYm9vbCByZXN1bWUpCiAKIAlwb3dlcl9kb21haW5zLT5pbml0aWFsaXppbmcgPSB0cnVlOwog Ci0JaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJaWYgKElTX0NBTk5PTkxBS0UoZGV2X3By aXYpKSB7CisJCWNubF9kaXNwbGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgcmVzdW1lKTsKKwl9IGVs c2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CiAJCXNrbF9kaXNwbGF5X2NvcmVfaW5pdChk ZXZfcHJpdiwgcmVzdW1lKTsKIAl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7CiAJ CWJ4dF9kaXNwbGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgcmVzdW1lKTsKQEAgLTI4NjksNyArMjk3 Niw5IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlpZiAoIWk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsKQogCQlpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwogCi0JaWYg KElTX0dFTjlfQkMoZGV2X3ByaXYpKQorCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKKwkJ Y25sX2Rpc3BsYXlfY29yZV91bmluaXQoZGV2X3ByaXYpOworCWVsc2UgaWYgKElTX0dFTjlfQkMo ZGV2X3ByaXYpKQogCQlza2xfZGlzcGxheV9jb3JlX3VuaW5pdChkZXZfcHJpdik7CiAJZWxzZSBp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCiAJCWJ4dF9kaXNwbGF5X2NvcmVfdW5pbml0KGRldl9w cml2KTsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK