From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: [PATCH] drm/i915/cnl: Implement CNL display init/unit sequence Date: Thu, 13 Apr 2017 09:13:02 -0700 Message-ID: <1492099982-15880-1-git-send-email-rodrigo.vivi@intel.com> References: <1491506163-14587-30-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id BD96C6E8CE for ; Thu, 13 Apr 2017 16:13:05 +0000 (UTC) In-Reply-To: <1491506163-14587-30-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 IHNldF8KICAgIChEb25lIGJ5IFJvZHJpZ28sIFJlcXVlc3RlZCBieSBWaWxsZSkKdjg6IChSb2Ry aWdvKSBSZW1vdmUgQ0hJQ0tFTl9NSVNDXzIgZG91YmxlIGRlZmluaXRpb24uCgpDYzogUGF1bG8g WmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CkNjOiBDbGludCBUYXlsb3IgPGNsaW50 b24uYS50YXlsb3JAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkg PHJvZHJpZ28udml2aUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCAgICAgICAgIHwgIDIzICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMgICAgICB8IDEwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjQ0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggODM1Mzg5Mi4uOWIyZDhjMCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCkBAIC0xNjU1LDYgKzE2NTUsOSBAQCBlbnVtIHNrbF9kaXNwX3Bvd2Vy X3dlbGxzIHsKICNkZWZpbmUgICBQSFlfUkVTRVJWRUQJCQkoMSA8PCA3KQogI2RlZmluZSBCWFRf UE9SVF9DTDFDTV9EVzAocGh5KQkJX0JYVF9QSFkoKHBoeSksIF9QT1JUX0NMMUNNX0RXMF9CQykK IAorI2RlZmluZSBDTkxfUE9SVF9DTDFDTV9EVzUJCV9NTUlPKDB4MTYyMDE0KQorI2RlZmluZSAg IENMX1BPV0VSX0RPV05fRU5BQkxFCQkoMSA8PCA0KQorCiAjZGVmaW5lIF9QT1JUX0NMMUNNX0RX OV9BCQkweDE2MjAyNAogI2RlZmluZSBfUE9SVF9DTDFDTV9EVzlfQkMJCTB4NkMwMjQKICNkZWZp bmUgICBJUkVGMFJDX09GRlNFVF9TSElGVAkJOApAQCAtMTY4Nyw2ICsxNjkwLDI1IEBAIGVudW0g c2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogI2RlZmluZSBCWFRfUE9SVF9DTDJDTV9EVzYocGh5KQkJ X0JYVF9QSFkoKHBoeSksIF9QT1JUX0NMMkNNX0RXNl9CQykKICNkZWZpbmUgICBEVzZfT0xET19E WU5fUFdSX0RPV05fRU4JKDEgPDwgMjgpCiAKKyNkZWZpbmUgQ05MX1BPUlRfQ09NUF9EVzAJCV9N TUlPKDB4MTYyMTAwKQorI2RlZmluZSAgIENPTVBfSU5JVAkJCSgxIDw8IDMxKQorI2RlZmluZSBD TkxfUE9SVF9DT01QX0RXMQkJX01NSU8oMHgxNjIxMDQpCisjZGVmaW5lIENOTF9QT1JUX0NPTVBf RFczCQlfTU1JTygweDE2MjEwYykKKyNkZWZpbmUgICBQUk9DRVNTX0lORk9fRE9UXzAJCSgwIDw8 IDI2KQorI2RlZmluZSAgIFBST0NFU1NfSU5GT19ET1RfMQkJKDEgPDwgMjYpCisjZGVmaW5lICAg UFJPQ0VTU19JTkZPX0RPVF80CQkoMiA8PCAyNikKKyNkZWZpbmUgICBQUk9DRVNTX0lORk9fTUFT SwkJKDcgPDwgMjYpCisjZGVmaW5lICAgUFJPQ0VTU19JTkZPX1NISUZUCQkyNgorI2RlZmluZSAg IFZPTFRBR0VfSU5GT18wXzg1VgkJKDAgPDwgMjQpCisjZGVmaW5lICAgVk9MVEFHRV9JTkZPXzBf OTVWCQkoMSA8PCAyNCkKKyNkZWZpbmUgICBWT0xUQUdFX0lORk9fMV8wNVYJCSgyIDw8IDI0KQor I2RlZmluZSAgIFZPTFRBR0VfSU5GT19NQVNLCQkoMyA8PCAyNCkKKyNkZWZpbmUgICBWT0xUQUdF X0lORk9fU0hJRlQJCTI0CisjZGVmaW5lIENOTF9QT1JUX0NPTVBfRFc4CQlfTU1JTygweDE2MjEy MCkKKyNkZWZpbmUgICBQUkRJQ19JQ09NUF9ESVMJCSgxIDw8IDE0KQorI2RlZmluZSBDTkxfUE9S VF9DT01QX0RXOQkJX01NSU8oMHgxNjIxMjQpCisjZGVmaW5lIENOTF9QT1JUX0NPTVBfRFcxMAkJ X01NSU8oMHgxNjIxMjgpCisKIC8qIEJYVCBQSFkgUmVmIHJlZ2lzdGVycyAqLwogI2RlZmluZSBf UE9SVF9SRUZfRFczX0EJCQkweDE2MjE4QwogI2RlZmluZSBfUE9SVF9SRUZfRFczX0JDCQkweDZD MThDCkBAIC02NTEzLDYgKzY1MzUsNyBAQCBlbnVtIHsKICNkZWZpbmUgIEtWTV9DT05GSUdfQ0hB TkdFX05PVElGSUNBVElPTl9TRUxFQ1QJKDEgPDwgMTQpCiAKICNkZWZpbmUgQ0hJQ0tFTl9NSVND XzIJCV9NTUlPKDB4NDIwODQpCisjZGVmaW5lICBDT01QX1BXUl9ET1dOCQkoMSA8PCAyMykKICNk ZWZpbmUgIEdMS19DTDBfUFdSX0RPV04JKDEgPDwgMTApCiAjZGVmaW5lICBHTEtfQ0wxX1BXUl9E T1dOCSgxIDw8IDExKQogI2RlZmluZSAgR0xLX0NMMl9QV1JfRE9XTgkoMSA8PCAxMikKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jZGNsay5jCmluZGV4IGJlZTQzOTQuLmY5YmExZTcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY2RjbGsuYwpAQCAtMTU1NSw2ICsxNTU1LDExNCBAQCBzdGF0aWMgdm9pZCBj bmxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpbnRlbF91 cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwogfQogCitzdGF0aWMgaW50IGNubF9jZGNsa19wbGxfdmNv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQoreworCWludCBy YXRpbzsKKworCWlmIChjZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmKQorCQlyZXR1cm4g MDsKKworCXN3aXRjaCAoY2RjbGspIHsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0UoY2RjbGsp OworCWNhc2UgMTY4MDAwOgorCWNhc2UgMzM2MDAwOgorCQlyYXRpbyA9IGRldl9wcml2LT5jZGNs ay5ody5yZWYgPT0gMTkyMDAgPyAzNSA6IDI4OworCQlicmVhazsKKwljYXNlIDUyODAwMDoKKwkJ cmF0aW8gPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmID09IDE5MjAwID8gNTUgOiA0NDsKKwkJYnJl YWs7CisJfQorCisJcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5yZWYgKiByYXRpbzsKK30KKwor c3RhdGljIHZvaWQgY25sX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3sKKwl1MzIgY2RjdGwsIGV4cGVjdGVkOworCisJaW50ZWxfdXBkYXRlX2NkY2xr KGRldl9wcml2KTsKKworCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID09IDAgfHwKKwkgICAg ZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID09IGRldl9wcml2LT5jZGNsay5ody5yZWYpCisJCWdv dG8gc2FuaXRpemU7CisKKwkvKiBEUExMIG9rYXk7IHZlcmlmeSB0aGUgY2RjbG9jaworCSAqCisJ ICogU29tZSBCSU9TIHZlcnNpb25zIGxlYXZlIGFuIGluY29ycmVjdCBkZWNpbWFsIGZyZXF1ZW5j eSB2YWx1ZSBhbmQKKwkgKiBzZXQgcmVzZXJ2ZWQgTUJaIGJpdHMgaW4gQ0RDTEtfQ1RMIGF0IGxl YXN0IGR1cmluZyBleGl0aW5nIGZyb20gUzQsCisJICogc28gc2FuaXRpemUgdGhpcyByZWdpc3Rl ci4KKwkgKi8KKwljZGN0bCA9IEk5MTVfUkVBRChDRENMS19DVEwpOworCS8qCisJICogTGV0J3Mg aWdub3JlIHRoZSBwaXBlIGZpZWxkLCBzaW5jZSBCSU9TIGNvdWxkIGhhdmUgY29uZmlndXJlZCB0 aGUKKwkgKiBkaXZpZGVycyBib3RoIHN5bmNoaW5nIHRvIGFuIGFjdGl2ZSBwaXBlLCBvciBhc3lu Y2hyb25vdXNseQorCSAqIChQSVBFX05PTkUpLgorCSAqLworCWNkY3RsICY9IH5CWFRfQ0RDTEtf Q0QyWF9QSVBFX05PTkU7CisKKwlleHBlY3RlZCA9IChjZGN0bCAmIEJYVF9DRENMS19DRDJYX0RJ Vl9TRUxfTUFTSykgfAorCQkgICBza2xfY2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGsuaHcu Y2RjbGspOworCisJaWYgKGNkY3RsID09IGV4cGVjdGVkKQorCQkvKiBBbGwgd2VsbDsgbm90aGlu ZyB0byBzYW5pdGl6ZSAqLworCQlyZXR1cm47CisKK3Nhbml0aXplOgorCURSTV9ERUJVR19LTVMo IlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUtb3NcbiIpOworCisJLyogZm9yY2Ug Y2RjbGsgcHJvZ3JhbW1pbmcgKi8KKwlkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPSAwOworCisJ LyogZm9yY2UgZnVsbCBQTEwgZGlzYWJsZSArIGVuYWJsZSAqLworCWRldl9wcml2LT5jZGNsay5o dy52Y28gPSAtMTsKK30KKworLyoqCisgKiBjbmxfaW5pdF9jZGNsayAtIEluaXRpYWxpemUgQ0RD TEsgb24gQ05MCisgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCisgKgorICogSW5pdGlhbGl6ZSBD RENMSyBmb3IgQ05MLiBUaGlzIGlzIGdlbmVyYWxseQorICogZG9uZSBvbmx5IGR1cmluZyB0aGUg ZGlzcGxheSBjb3JlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLAorICogYWZ0ZXIgd2hpY2ggdGhl IERNQyB3aWxsIHRha2UgY2FyZSBvZiB0dXJuaW5nIENEQ0xLIG9mZi9vbgorICogYXMgbmVlZGVk LgorICovCisKK3ZvaWQgY25sX2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19zdGF0ZTsKKworCWNu bF9zYW5pdGl6ZV9jZGNsayhkZXZfcHJpdik7CisKKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LmNk Y2xrICE9IDAgJiYKKwkgICAgZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwKQorCQlyZXR1cm47 CisKKwljZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5odzsKKworCWNkY2xrX3N0YXRlLmNk Y2xrID0gMTY4MDAwOworCWNkY2xrX3N0YXRlLnZjbyA9IGNubF9jZGNsa19wbGxfdmNvKGRldl9w cml2LCBjZGNsa19zdGF0ZS5jZGNsayk7CisKKwljbmxfc2V0X2NkY2xrKGRldl9wcml2LCAmY2Rj bGtfc3RhdGUpOworfQorCisvKioKKyAqIGNubF91bmluaXRfY2RjbGsgLSBVbmluaXRpYWxpemUg Q0RDTEsgb24gQ05MCisgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCisgKgorICogVW5pbml0aWFs aXplIENEQ0xLIGZvciBDTkwuIFRoaXMgaXMgZG9uZSBvbmx5CisgKiBkdXJpbmcgdGhlIGRpc3Bs YXkgY29yZSB1bmluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgorICovCit2b2lkIGNubF91bmluaXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSBjZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5odzsKKworCWNkY2xr X3N0YXRlLmNkY2xrID0gY2RjbGtfc3RhdGUucmVmOworCWNkY2xrX3N0YXRlLnZjbyA9IDA7CisK Kwljbmxfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUpOworfQorCiAvKioKICAqIGlu dGVsX2NkY2xrX3N0YXRlX2NvbXBhcmUgLSBEZXRlcm1pbmUgaWYgdHdvIENEQ0xLIHN0YXRlcyBk aWZmZXIKICAqIEBhOiBmaXJzdCBDRENMSyBzdGF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApp bmRleCA3YmMwYzI1Li5hNTI2ZTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTI4 MCw2ICsxMjgwLDggQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCiAvKiBpbnRlbF9jZGNsay5jICovCiB2b2lkIHNrbF9pbml0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIHNrbF91bmluaXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgY25sX2luaXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgY25sX3VuaW5p dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBieHRfaW5p dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBieHRfdW5p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVs X2luaXRfY2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwppbmRleCAxNzk3YzkxLi41YzNjNmVj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCkBAIC0yNjk4LDYgKzI2 OTgsMTExIEBAIHZvaWQgYnh0X2Rpc3BsYXlfY29yZV91bmluaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CiB9 CiAKKyNkZWZpbmUgQ05MX1BST0NNT05fSURYKHZhbCkgXAorCSgoKHZhbCkgJiAoUFJPQ0VTU19J TkZPX01BU0sgfCBWT0xUQUdFX0lORk9fTUFTSykpID4+IFZPTFRBR0VfSU5GT19TSElGVCkKKyNk ZWZpbmUgTlVNX0NOTF9QUk9DTU9OIFwKKwkoQ05MX1BST0NNT05fSURYKFZPTFRBR0VfSU5GT19N QVNLIHwgUFJPQ0VTU19JTkZPX01BU0spICsgMSkKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf cHJvY21vbiB7CisJdTMyIGR3MSwgZHc5LCBkdzEwOworfSBjbmxfcHJvY21vbl92YWx1ZXNbTlVN X0NOTF9QUk9DTU9OXSA9IHsKKwlbQ05MX1BST0NNT05fSURYKFZPTFRBR0VfSU5GT18wXzg1ViB8 IFBST0NFU1NfSU5GT19ET1RfMCldID0KKwkJeyAuZHcxID0gMHgwMCA8PCAxNiwgLmR3OSA9IDB4 NjJBQjY3QkIsIC5kdzEwID0gMHg1MTkxNEY5NiwgfSwKKwlbQ05MX1BST0NNT05fSURYKFZPTFRB R0VfSU5GT18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMCldID0KKwkJeyAuZHcxID0gMHgwMCA8 PCAxNiwgLmR3OSA9IDB4ODZFMTcyQzcsIC5kdzEwID0gMHg3N0NBNUVBQiwgfSwKKwlbQ05MX1BS T0NNT05fSURYKFZPTFRBR0VfSU5GT18wXzk1ViB8IFBST0NFU1NfSU5GT19ET1RfMSldID0KKwkJ eyAuZHcxID0gMHgwMCA8PCAxNiwgLmR3OSA9IDB4OTNGODdGRTEsIC5kdzEwID0gMHg4QUU4NzFD NSwgfSwKKwlbQ05MX1BST0NNT05fSURYKFZPTFRBR0VfSU5GT18xXzA1ViB8IFBST0NFU1NfSU5G T19ET1RfMCldID0KKwkJeyAuZHcxID0gMHgwMCA8PCAxNiwgLmR3OSA9IDB4OThGQTgyREQsIC5k dzEwID0gMHg4OUU0NkRDMSwgfSwKKwlbQ05MX1BST0NNT05fSURYKFZPTFRBR0VfSU5GT18xXzA1 ViB8IFBST0NFU1NfSU5GT19ET1RfMSldID0KKwkJeyAuZHcxID0gMHg0NCA8PCAxNiwgLmR3OSA9 IDB4OUEwMEFCMjUsIC5kdzEwID0gMHg4QUUzOEZGMSwgfSwKK307CisKK3N0YXRpYyB2b2lkIGNu bF9kaXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJv b2wgcmVzdW1lKQoreworCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMg PSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CisJY29uc3Qgc3RydWN0IGNubF9wcm9jbW9uICpw cm9jbW9uOworCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKndlbGw7CisJdTMyIHZhbDsKKworCWdl bjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKKworCS8qIDEuIEVu YWJsZSBQQ0ggUmVzZXQgSGFuZHNoYWtlICovCisJdmFsID0gSTkxNV9SRUFEKEhTV19OREVfUlNU V1JOX09QVCk7CisJdmFsIHw9IFJFU0VUX1BDSF9IQU5EU0hBS0VfRU5BQkxFOworCUk5MTVfV1JJ VEUoSFNXX05ERV9SU1RXUk5fT1BULCB2YWwpOworCisJLyogMi4gRW5hYmxlIENvbXAgKi8KKwl2 YWwgPSBJOTE1X1JFQUQoQ0hJQ0tFTl9NSVNDXzIpOworCXZhbCAmPSB+Q09NUF9QV1JfRE9XTjsK KwlJOTE1X1dSSVRFKENISUNLRU5fTUlTQ18yLCB2YWwpOworCisJdmFsID0gSTkxNV9SRUFEKENO TF9QT1JUX0NPTVBfRFczKTsKKwlwcm9jbW9uID0gJmNubF9wcm9jbW9uX3ZhbHVlc1tDTkxfUFJP Q01PTl9JRFgodmFsKV07CisKKwlXQVJOX09OKHByb2Ntb24tPmR3MTAgPT0gMCk7CisKKwl2YWwg PSBJOTE1X1JFQUQoQ05MX1BPUlRfQ09NUF9EVzEpOworCXZhbCAmPSB+KCgweGZmIDw8IDE2KSB8 IDB4ZmYpOworCXZhbCB8PSBwcm9jbW9uLT5kdzE7CisJSTkxNV9XUklURShDTkxfUE9SVF9DT01Q X0RXMSwgdmFsKTsKKworCUk5MTVfV1JJVEUoQ05MX1BPUlRfQ09NUF9EVzksIHByb2Ntb24tPmR3 OSk7CisJSTkxNV9XUklURShDTkxfUE9SVF9DT01QX0RXMTAsIHByb2Ntb24tPmR3MTApOworCisJ dmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFcwKTsKKwl2YWwgfD0gQ09NUF9JTklUOwor CUk5MTVfV1JJVEUoQ05MX1BPUlRfQ09NUF9EVzAsIHZhbCk7CisKKwkvKiAzLiAqLworCXZhbCA9 IEk5MTVfUkVBRChDTkxfUE9SVF9DTDFDTV9EVzUpOworCXZhbCB8PSBDTF9QT1dFUl9ET1dOX0VO QUJMRTsKKwlJOTE1X1dSSVRFKENOTF9QT1JUX0NMMUNNX0RXNSwgdmFsKTsKKworCS8qIDQuIEVu YWJsZSBQb3dlciBXZWxsIDEgKFBHMSkgYW5kIEF1eCBJTyBQb3dlciAqLworCW11dGV4X2xvY2so JnBvd2VyX2RvbWFpbnMtPmxvY2spOworCXdlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJp diwgU0tMX0RJU1BfUFdfMSk7CisJaW50ZWxfcG93ZXJfd2VsbF9lbmFibGUoZGV2X3ByaXYsIHdl bGwpOworCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisKKwkvKiA1LiBFbmFi bGUgQ0QgY2xvY2sgKi8KKwljbmxfaW5pdF9jZGNsayhkZXZfcHJpdik7CisKKwkvKiA2LiBFbmFi bGUgREJVRiAqLworCWdlbjlfZGJ1Zl9lbmFibGUoZGV2X3ByaXYpOworfQorCisjdW5kZWYgQ05M X1BST0NNT05fSURYCisjdW5kZWYgTlVNX0NOTF9QUk9DTU9OCisKK3N0YXRpYyB2b2lkIGNubF9k aXNwbGF5X2NvcmVfdW5pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sK KwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5w b3dlcl9kb21haW5zOworCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKndlbGw7CisJdTMyIHZhbDsK KworCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKKworCS8q IDEuIERpc2FibGUgYWxsIGRpc3BsYXkgZW5naW5lIGZ1bmN0aW9ucyAtPiBhcmVhZHkgZG9uZSAq LworCisJLyogMi4gRGlzYWJsZSBEQlVGICovCisJZ2VuOV9kYnVmX2Rpc2FibGUoZGV2X3ByaXYp OworCisJLyogMy4gRGlzYWJsZSBDRCBjbG9jayAqLworCWNubF91bmluaXRfY2RjbGsoZGV2X3By aXYpOworCisJLyogNC4gRGlzYWJsZSBQb3dlciBXZWxsIDEgKFBHMSkgYW5kIEF1eCBJTyBQb3dl ciAqLworCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOworCXdlbGwgPSBsb29rdXBf cG93ZXJfd2VsbChkZXZfcHJpdiwgU0tMX0RJU1BfUFdfMSk7CisJaW50ZWxfcG93ZXJfd2VsbF9k aXNhYmxlKGRldl9wcml2LCB3ZWxsKTsKKwltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxv Y2spOworCisJLyogNS4gRGlzYWJsZSBDb21wICovCisJdmFsID0gSTkxNV9SRUFEKENISUNLRU5f TUlTQ18yKTsKKwl2YWwgfD0gQ09NUF9QV1JfRE9XTjsKKwlJOTE1X1dSSVRFKENISUNLRU5fTUlT Q18yLCB2YWwpOworfQorCiBzdGF0aWMgdm9pZCBjaHZfcGh5X2NvbnRyb2xfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAq Y21uX2JjID0KQEAgLTI4MzAsNyArMjkzNSw5IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19p bml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCByZXN1bWUpCiAK IAlwb3dlcl9kb21haW5zLT5pbml0aWFsaXppbmcgPSB0cnVlOwogCi0JaWYgKElTX0dFTjlfQkMo ZGV2X3ByaXYpKSB7CisJaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7CisJCWNubF9kaXNw bGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgcmVzdW1lKTsKKwl9IGVsc2UgaWYgKElTX0dFTjlfQkMo ZGV2X3ByaXYpKSB7CiAJCXNrbF9kaXNwbGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgcmVzdW1lKTsK IAl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7CiAJCWJ4dF9kaXNwbGF5X2NvcmVf aW5pdChkZXZfcHJpdiwgcmVzdW1lKTsKQEAgLTI4NjksNyArMjk3Niw5IEBAIHZvaWQgaW50ZWxf cG93ZXJfZG9tYWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlpZiAoIWk5MTUuZGlzYWJsZV9wb3dlcl93ZWxsKQogCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1 dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0lOSVQpOwogCi0JaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpKQorCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKKwkJY25sX2Rpc3BsYXlfY29yZV91 bmluaXQoZGV2X3ByaXYpOworCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQogCQlza2xf ZGlzcGxheV9jb3JlX3VuaW5pdChkZXZfcHJpdik7CiAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpCiAJCWJ4dF9kaXNwbGF5X2NvcmVfdW5pbml0KGRldl9wcml2KTsKLS0gCjEuOS4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK