From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas De Marchi Subject: [PATCH v2 19/40] drm/i915/tgl: Select master transcoder in DP MST Date: Sat, 17 Aug 2019 02:38:41 -0700 Message-ID: <20190817093902.2171-20-lucas.demarchi@intel.com> References: <20190817093902.2171-1-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFAA989548 for ; Sat, 17 Aug 2019 09:39:41 +0000 (UTC) In-Reply-To: <20190817093902.2171-1-lucas.demarchi@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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+CgpPbiBU R0wgdGhlIGJsZW5kaW5nIG9mIGFsbCB0aGUgc3RyZWFtcyBoYXZlIG1vdmVkIGZyb20gRERJIHRv CnRyYW5zY29kZXIsIHNvIG5vdyBldmVyeSB0cmFuc2NvZGVyIHdvcmtpbmcgb3ZlciB0aGUgc2Ft ZSBNU1QgcG9ydCBtdXN0CnNlbmQgaXRzIHN0cmVhbSB0byBhIG1hc3RlciB0cmFuc2NvZGVyIGFu ZCBtYXN0ZXIgd2lsbCBzZW5kIHRvIERESQpyZXNwZWN0aW5nIHRoZSB0aW1lIHNsb3RzLgoKU28g aGVyZSBpdCBpcyBwaWNraW5nIHRoZSBsb3dlc3QgcGlwZS90cmFuc2NvZGVyIGFzIGl0IHdpbGwg YmUKZW5hYmxlZCBmaXJzdCBhbmQgZGlzYWJsZWQgbGFzdC4KQlNwZWM6IDUwNDkzCkJTcGVjOiA0 OTE5MAoKdjI6IE1pc3NlZCBzZXQgbXN0X21hc3Rlcl90cmFucyB0byBUUkFOU0NPREVSX0lOVkFM SUQgd2hlbiBjb21wdXRpbmcgSFNXCiAgICBlbmNvZGVyIGNvbmZpZy4gSFNXIENSVCBodyBzdGF0 ZSByZWFkb3V0IGNhbGxzCiAgICBoc3dfY3J0X2dldF9jb25maWcoKS0+aW50ZWxfZGRpX2dldF9j b25maWcoKSB0aGF0IHdpbGwgc2V0CiAgICBtc3RfbWFzdGVyX3RyYW5zIHRvIFRSQU5TQ09ERVJf SU5WQUxJRCBjYXVzaW5nIHRoZSBtaXNtYXRjaCB3aGVuCiAgICB2ZXJpZnlpbmcgQ1JUQyBzdGF0 ZSBhZnRlciBhIG1vZGVzZXQuIChKb3PDqSkKCkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4KQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMgICAgICB8ICAg MiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jICAgICAgfCAgMTcg KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8ICAxNSAr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmggIHwgICAzICsK IC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAgMyArCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jICAgfCAxNTkgKysrKysr KysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5o ICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAg IHwgICAzICsKIDggZmlsZXMgY2hhbmdlZCwgMjAxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMKaW5kZXggZTZlOGQ0 YTgyMDQ0Li41MDMxMzUyMDBjYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfY3J0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jcnQuYwpAQCAtNDE2LDYgKzQxNiw4IEBAIHN0YXRpYyBpbnQgaHN3X2NydF9jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkvKiBGREkgbXVzdCBhbHdheXMg YmUgMi43IEdIeiAqLwogCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gMTM1MDAwICogMjsKIAor CXBpcGVfY29uZmlnLT5tc3RfbWFzdGVyX3RyYW5zID0gVFJBTlNDT0RFUl9JTlZBTElEOworCiAJ cmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCmlu ZGV4IDFmNTkxZTY5Yjc0Mi4uNTBhMjZiZWE4Y2RlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpLmMKQEAgLTE4NDAsNiArMTg0MCwxMiBAQCB2b2lkIGludGVsX2RkaV9l bmFibGVfdHJhbnNjb2Rlcl9mdW5jKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQogCX0gZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfRFBfTVNUKSkgewogCQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9N U1Q7CiAJCXRlbXAgfD0gRERJX1BPUlRfV0lEVEgoY3J0Y19zdGF0ZS0+bGFuZV9jb3VudCk7CisK KwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsKKwkJCWVudW0gdHJhbnNjb2RlciBt YXN0ZXIgPSBjcnRjX3N0YXRlLT5tc3RfbWFzdGVyX3RyYW5zOworCisJCQl0ZW1wIHw9IFRSQU5T X0RESV9NU1RfVFJBTlNQT1JUX1NFTEVDVF9EUFRQKG1hc3Rlcik7CisJCX0KIAl9IGVsc2Ugewog CQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EUF9TU1Q7CiAJCXRlbXAgfD0gRERJX1BP UlRfV0lEVEgoY3J0Y19zdGF0ZS0+bGFuZV9jb3VudCk7CkBAIC0zODYxLDYgKzM4NjcsOCBAQCB2 b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CQlicmVhazsKIAl9CiAKKwlwaXBlX2NvbmZpZy0+bXN0X21hc3Rlcl90cmFucyA9IFRSQU5TQ09E RVJfSU5WQUxJRDsKKwogCXN3aXRjaCAodGVtcCAmIFRSQU5TX0RESV9NT0RFX1NFTEVDVF9NQVNL KSB7CiAJY2FzZSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfSERNSToKIAkJcGlwZV9jb25maWctPmhh c19oZG1pX3NpbmsgPSB0cnVlOwpAQCAtMzg5Niw2ICszOTA0LDEzIEBAIHZvaWQgaW50ZWxfZGRp X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCXBpcGVfY29uZmln LT5vdXRwdXRfdHlwZXMgfD0gQklUKElOVEVMX09VVFBVVF9EUF9NU1QpOwogCQlwaXBlX2NvbmZp Zy0+bGFuZV9jb3VudCA9CiAJCQkoKHRlbXAgJiBERElfUE9SVF9XSURUSF9NQVNLKSA+PiBERElf UE9SVF9XSURUSF9TSElGVCkgKyAxOworCisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEy KSB7CisJCQl0ZW1wID0gdGVtcCAmIFRSQU5TX0RESV9NU1RfVFJBTlNQT1JUX1NFTEVDVF9NQVNL OworCQkJdGVtcCA9IHRlbXAgPj4gVFJBTlNfRERJX01TVF9UUkFOU1BPUlRfU0VMRUNUX1NISUZU OworCQkJcGlwZV9jb25maWctPm1zdF9tYXN0ZXJfdHJhbnMgPSB0ZW1wOworCQl9CisKIAkJaW50 ZWxfZHBfZ2V0X21fbihpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7CiAJCWJyZWFrOwogCWRlZmF1 bHQ6CkBAIC0zOTk4LDYgKzQwMTMsOCBAQCBzdGF0aWMgaW50IGludGVsX2RkaV9jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCWludGVsX2RkaV9jb21wdXRl X21pbl92b2x0YWdlX2xldmVsKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CiAKKwlwaXBlX2NvbmZp Zy0+bXN0X21hc3Rlcl90cmFucyA9IFRSQU5TQ09ERVJfSU5WQUxJRDsKKwogCXJldHVybiAwOwog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCmluZGV4 IGRkYjg0MzZlMjIwOC4uMTA5ZDRmZDk2MWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImRpc3Bs YXkvaW50ZWxfY3J0LmgiCiAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kZGkuaCIKICNpbmNsdWRl ICJkaXNwbGF5L2ludGVsX2RwLmgiCisjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kcF9tc3QuaCIK ICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2RzaS5oIgogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxf ZHZvLmgiCiAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9nbWJ1cy5oIgpAQCAtMTIxMzgsNiArMTIx MzksMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAKIAlpbnRlbF9kcGxsX2R1bXBfaHdfc3Rh dGUoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZSk7CiAKKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMiAmJgorCSAgICBpbnRlbF9jcnRjX2hhc190eXBlKHBpcGVfY29u ZmlnLCBJTlRFTF9PVVRQVVRfRFBfTVNUKSkgeworCQllbnVtIHRyYW5zY29kZXIgbWFzdGVyID0g cGlwZV9jb25maWctPm1zdF9tYXN0ZXJfdHJhbnM7CisKKwkJRFJNX0RFQlVHX0tNUygibWFzdGVy IG1zdCBjcHVfdHJhbnNjb2RlcjogJXNcbiIsCisJCQkgICAgICB0cmFuc2NvZGVyX25hbWUobWFz dGVyKSk7CisJfQorCiBkdW1wX3BsYW5lczoKIAlpZiAoIXN0YXRlKQogCQlyZXR1cm47CkBAIC0x MjgyMSw2ICsxMjgzMCw4IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAogCVBJUEVfQ09ORl9DSEVDS19JTkZP RlJBTUUoaGRtaSk7CiAJUElQRV9DT05GX0NIRUNLX0lORk9GUkFNRShkcm0pOwogCisJUElQRV9D T05GX0NIRUNLX0kobXN0X21hc3Rlcl90cmFucyk7CisKICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tf WAogI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19JCiAjdW5kZWYgUElQRV9DT05GX0NIRUNLX0JPT0wK QEAgLTEzNTk3LDYgKzEzNjA4LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaW50IHJldCwgaTsKIAlib29sIGFueV9tcyA9IHN0YXRl LT5jZGNsay5mb3JjZV9taW5fY2RjbGtfY2hhbmdlZDsKIAorCXJldCA9IGludGVsX2RwX21zdF9h dG9taWNfYWRkX2FmZmVjdGVkX2NydGNzKHN0YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCiAJLyogQ2F0Y2ggSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEICovCiAJZm9yX2VhY2hfb2xk bmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAogCQkJ CQkgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmgKaW5kZXggYjYzZmI3YTQ1OTllLi4yODJlOGQ4ZjFjYzEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oCkBAIC05MSw2ICs5 MSw4IEBAIGVudW0gcGlwZSB7CiAjZGVmaW5lIHBpcGVfbmFtZShwKSAoKHApICsgJ0EnKQogCiBl bnVtIHRyYW5zY29kZXIgeworCVRSQU5TQ09ERVJfSU5WQUxJRCA9IC0xLAorCiAJLyoKIAkgKiBU aGUgZm9sbG93aW5nIHRyYW5zY29kZXJzIGhhdmUgYSAxOjEgdHJhbnNjb2RlciAtPiBwaXBlIG1h cHBpbmcsCiAJICoga2VlcCB0aGVpciB2YWx1ZXMgZml4ZWQ6IHRoZSBjb2RlIGFzc3VtZXMgdGhh dCBUUkFOU0NPREVSX0E9MCwgdGhlCkBAIC0xMzIsNiArMTM0LDcgQEAgc3RhdGljIGlubGluZSBj b25zdCBjaGFyICp0cmFuc2NvZGVyX25hbWUoZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIpCiAJ CXJldHVybiAiRFNJIEEiOwogCWNhc2UgVFJBTlNDT0RFUl9EU0lfQzoKIAkJcmV0dXJuICJEU0kg QyI7CisJY2FzZSBUUkFOU0NPREVSX0lOVkFMSUQ6CiAJZGVmYXVsdDoKIAkJcmV0dXJuICI8aW52 YWxpZD4iOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmgKaW5kZXggM2MxYTVmM2UxZDIyLi5iN2RhOTU1OTU0YjcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCkBA IC05ODQsNiArOTg0LDkgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCiAJLyogRm9yd2Fy ZCBFcnJvciBjb3JyZWN0aW9uIFN0YXRlICovCiAJYm9vbCBmZWNfZW5hYmxlOworCisJLyogTWFz dGVyIHRyYW5zY29kZXIgZm9yIGFsbCBzdHJlYW1zLCBvbmx5IHVzZWQgb24gVEdMKyAqLworCWVu dW0gdHJhbnNjb2RlciBtc3RfbWFzdGVyX3RyYW5zOwogfTsKIAogc3RydWN0IGludGVsX2NydGMg ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmMKaW5kZXggZjUy Y2RkNGNhODc3Li42NzBhMTJmZDJmMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcF9tc3QuYwpAQCAtODcsNiArODcsNTAgQEAgc3RhdGljIGludCBpbnRlbF9kcF9t c3RfY29tcHV0ZV9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAly ZXR1cm4gMDsKIH0KIAorLyoKKyAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIENSVENzIGFuZCByZXR1 cm4gdGhlIHRyYW5zY29kZXIgb2YgdGhlIGxvd2VzdCBDUlRDIHRoYXQKKyAqIHNoYXJlIHRoZSBz YW1lIE1TVCBjb25uZWN0b3IuCisgKi8KK3N0YXRpYyBlbnVtIHRyYW5zY29kZXIKK21zdF9jb21w dXRlX21hc3Rlcl90cmFucyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkgc3Ry dWN0IGRybV9jb25uZWN0b3IgKm1zdF9jb25uKQoreworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmludGVsX21zdF9jb25uID0gdG9faW50ZWxfY29ubmVjdG9yKG1zdF9jb25uKTsKKwlzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShz dGF0ZSk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0 ZS0+ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3J0Y19zdGF0ZTsKKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKwlpbnQgaTsKKworCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgMTIpCisJCXJldHVybiBUUkFOU0NPREVSX0lOVkFMSUQ7CisKKwkvKiBJdGVy YXRlIGZyb20gdGhlIGxvd2VzdCB0byB0aGUgaGlnaGVzdCBwaXBlICovCisJZm9yX2VhY2hfbmV3 X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGludGVsX2NydGMsIGludGVsX2NydGNf c3RhdGUsIGkpIHsKKwkJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRl bF9jb25uX3N0YXRlOworCQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uOworCQlp bnQgajsKKworCQlpZiAoIWludGVsX2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQorCQkJY29udGlu dWU7CisKKwkJZm9yX2VhY2hfbmV3X2ludGVsX2Nvbm5lY3Rvcl9pbl9zdGF0ZShpbnRlbF9zdGF0 ZSwgaW50ZWxfY29ubiwKKwkJCQkJCSAgICAgIGludGVsX2Nvbm5fc3RhdGUsIGopIHsKKwkJCS8q IE9ubHkgY2FyZSBhYm91dCBjb25uZWN0b3JzIG9mIHRoaXMgQ1JUQyAqLworCQkJaWYgKGludGVs X2Nvbm5fc3RhdGUtPmJhc2UuY3J0YyAhPQorCQkJICAgIGludGVsX2NydGNfc3RhdGUtPmJhc2Uu Y3J0YykKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGludGVsX2Nvbm4tPm1zdF9wb3J0ICE9IGlu dGVsX21zdF9jb25uLT5tc3RfcG9ydCkKKwkJCQljb250aW51ZTsKKworCQkJcmV0dXJuIGludGVs X2NydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOworCQl9CisJfQorCisJcmV0dXJuIFRSQU5TQ09E RVJfSU5WQUxJRDsKK30KKwogc3RhdGljIGludCBpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25maWco c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZywKIAkJCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCkBAIC05NCwxNCArMTM4LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxf ZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwogCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50ZWxfbXN0ID0gZW5jX3RvX21z dCgmZW5jb2Rlci0+YmFzZSk7CiAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9t c3QtPnByaW1hcnktPmRwOwotCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9Ci0J CXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOworCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7CisJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5l Y3Rvcik7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25u X3N0YXRlID0KIAkJdG9faW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7 CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQogCQkmcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKLQl2b2lkICpwb3J0ID0gY29ubmVjdG9yLT5w b3J0OworCXZvaWQgKnBvcnQgPSBpbnRlbF9jb25uZWN0b3ItPnBvcnQ7CiAJc3RydWN0IGxpbmtf Y29uZmlnX2xpbWl0cyBsaW1pdHM7CisJZW51bSB0cmFuc2NvZGVyIG1hc3RlcjsKIAlpbnQgcmV0 OwogCiAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxTQ0FOKQpA QCAtMTQ2LDYgKzE5MSw1MSBAQCBzdGF0aWMgaW50IGludGVsX2RwX21zdF9jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCWludGVsX2RkaV9jb21wdXRlX21p bl92b2x0YWdlX2xldmVsKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CiAKKwltYXN0ZXIgPSBtc3Rf Y29tcHV0ZV9tYXN0ZXJfdHJhbnMoY29ubl9zdGF0ZS0+c3RhdGUsIGNvbm5lY3Rvcik7CisJcGlw ZV9jb25maWctPm1zdF9tYXN0ZXJfdHJhbnMgPSBtYXN0ZXI7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludAoraW50ZWxfZHBfbXN0X21hc3Rlcl90cmFuc19jaGVjayhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubiwKKwkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5f c3RhdGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uLT5kZXYpOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG5ld19jb25uX3N0 YXRlLT5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUg PQorCQlkcm1fYXRvbWljX2dldF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uKTsKKwlz dHJ1Y3QgZHJtX2NydGMgKm5ld19jcnRjID0gbmV3X2Nvbm5fc3RhdGUtPmNydGM7CisJc3RydWN0 IGRybV9jcnRjICpvbGRfY3J0YyA9IG9sZF9jb25uX3N0YXRlLT5jcnRjOworCWVudW0gdHJhbnNj b2RlciBvbGRfbWFzdGVyX3RyYW5zID0gVFJBTlNDT0RFUl9JTlZBTElEOworCWVudW0gdHJhbnNj b2RlciBuZXdfbWFzdGVyX3RyYW5zID0gVFJBTlNDT0RFUl9JTlZBTElEOworCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsICpvbGRfY3J0Y19zdGF0ZTsKKworCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgMTIpCisJCXJldHVybiAwOworCisJaWYgKG9sZF9jcnRjKSB7CisJ CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jcnRjX3N0YXRlOworCisJCW9sZF9jcnRj X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIG9sZF9jcnRjKTsK KwkJaW50ZWxfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUp OworCQlvbGRfbWFzdGVyX3RyYW5zID0gaW50ZWxfY3J0Y19zdGF0ZS0+bXN0X21hc3Rlcl90cmFu czsKKwl9CisKKwlpZiAobmV3X2NydGMpIHsKKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmlu dGVsX2NydGNfc3RhdGU7CisKKwkJbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdf Y3J0Y19zdGF0ZShzdGF0ZSwgbmV3X2NydGMpOworCQlpbnRlbF9jcnRjX3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7CisJCW5ld19tYXN0ZXJfdHJhbnMgPSBtc3Rf Y29tcHV0ZV9tYXN0ZXJfdHJhbnMoc3RhdGUsIGNvbm4pOworCX0KKworCWlmIChvbGRfY3J0YyAm JiBvbGRfbWFzdGVyX3RyYW5zICE9IG5ld19tYXN0ZXJfdHJhbnMpCisJCW9sZF9jcnRjX3N0YXRl LT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCisJaWYgKG5ld19jcnRjICYmIG9sZF9tYXN0ZXJfdHJh bnMgIT0gbmV3X21hc3Rlcl90cmFucykKKwkJbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9 IHRydWU7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTY4LDYgKzI1OCwxMCBAQCBpbnRlbF9kcF9t c3RfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJaWYgKHJl dCkKIAkJcmV0dXJuIHJldDsKIAorCXJldCA9IGludGVsX2RwX21zdF9tYXN0ZXJfdHJhbnNfY2hl Y2soY29ubmVjdG9yLCBuZXdfY29ubl9zdGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KwogCWlmICghb2xkX2Nvbm5fc3RhdGUtPmNydGMpCiAJCXJldHVybiAwOwogCkBAIC02NjYsMyAr NzYwLDYyIEBAIGludGVsX2RwX21zdF9lbmNvZGVyX2NsZWFudXAoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCiAJZHJtX2RwX21zdF90b3BvbG9neV9tZ3JfZGVzdHJv eSgmaW50ZWxfZHAtPm1zdF9tZ3IpOwogCS8qIGVuY29kZXJzIHdpbGwgZ2V0IGtpbGxlZCBieSBu b3JtYWwgY2xlYW51cCAqLwogfQorCisvKioKKyAqIGludGVsX2RwX21zdF9hdG9taWNfYWRkX2Fm ZmVjdGVkX2NydGNzIC0gQWRkIGFsbCBDUlRDcyB0aGF0IHNoYXJlIHRoZSBNU1QKKyAqIHN0cmVh bSB3aXRoIHRoZSBDUlRDcyBpbiB0aGUgY3VycmVudCBhdG9taWMgc3RhdGUuCisgKiBAc3RhdGU6 IHN0YXRlIHRvIGFkZCBDUlRDcworICoKKyAqIEl0IGlzIG5lZWRlZCBhZGQgdGhlIENSVENzIHRy aWdnZXIgYSBjYWxsIHRvIGF0b21pY19jaGVjaygpIHRvCisgKiBldmVyeSBjb25uZWN0b3IgYXR0 YWNoZWQgdG8gdGhlIENSVEMgaW4gY2FzZSBhIG5ldyBtYXN0ZXIgdHJhbnNjb2RlciB3aWxsCisg KiBiZSBuZWVkZWQuCisgKi8KK2ludCBpbnRlbF9kcF9tc3RfYXRvbWljX2FkZF9hZmZlY3RlZF9j cnRjcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7CisJc3RydWN0 IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlOworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7CisJc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqaW50ZWxfY29ubjsKKwlpbnQgaTsKKworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg MTIpCisJCXJldHVybiAwOworCisJZm9yX2VhY2hfbmV3X2ludGVsX2Nvbm5lY3Rvcl9pbl9zdGF0 ZShzdGF0ZSwgaW50ZWxfY29ubiwgaW50ZWxfY29ubl9zdGF0ZSwgaSkgeworCQlzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9saXN0X2l0ZXI7CisJCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uX2l0ZXI7CisKKwkJaWYgKCFpbnRlbF9jb25uLT5tc3RfcG9ydCkKKwkJCWNvbnRp bnVlOworCisJCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5fbGlzdF9p dGVyKTsKKwkJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm5faXRlciwgJmNvbm5fbGlz dF9pdGVyKSB7CisJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9pdGVyX3N0YXRl OworCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubl9pdGVyOworCQkJc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCisJCQlpbnRlbF9jb25uX2l0ZXIgPSB0b19p bnRlbF9jb25uZWN0b3IoY29ubl9pdGVyKTsKKworCQkJaWYgKGludGVsX2Nvbm5faXRlci0+bXN0 X3BvcnQgIT0gaW50ZWxfY29ubi0+bXN0X3BvcnQpCisJCQkJY29udGludWU7CisKKwkJCWNvbm5f aXRlcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZSgmc3RhdGUtPmJhc2Us IGNvbm5faXRlcik7CisJCQlpZiAoSVNfRVJSKGNvbm5faXRlcl9zdGF0ZSkpIHsKKwkJCQlkcm1f Y29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5fbGlzdF9pdGVyKTsKKwkJCQlyZXR1cm4gUFRS X0VSUihjb25uX2l0ZXJfc3RhdGUpOworCQkJfQorCQkJaWYgKCFjb25uX2l0ZXJfc3RhdGUtPmNy dGMpCisJCQkJY29udGludWU7CisKKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRj X3N0YXRlKCZzdGF0ZS0+YmFzZSwKKwkJCQkJCQkgICAgICAgY29ubl9pdGVyX3N0YXRlLT5jcnRj KTsKKwkJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpIHsKKwkJCQlkcm1fY29ubmVjdG9yX2xpc3Rf aXRlcl9lbmQoJmNvbm5fbGlzdF9pdGVyKTsKKwkJCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRl KTsKKwkJCX0KKwkJfQorCQlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5fbGlzdF9p dGVyKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwX21zdC5oCmluZGV4IGY2NjBhZDgwZGIwNC4uMTczNTk4YWE4MWQyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmgKQEAgLTYsMTAgKzYsMTIg QEAKICNpZm5kZWYgX19JTlRFTF9EUF9NU1RfSF9fCiAjZGVmaW5lIF9fSU5URUxfRFBfTVNUX0hf XwogCitzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlOwogc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dDsKIAogaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2lkKTsKIHZvaWQgaW50ZWxfZHBfbXN0X2Vu Y29kZXJfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7 CitpbnQgaW50ZWxfZHBfbXN0X2F0b21pY19hZGRfYWZmZWN0ZWRfY3J0Y3Moc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUpOwogaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2FjdGl2ZV9s aW5rcyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7CiAKICNlbmRp ZiAvKiBfX0lOVEVMX0RQX01TVF9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDA0 NWQ0MjFlOWE3YS4uYTU1ZjE1ZWI2MTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTk0 MTksNiArOTQxOSw5IEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewogI2RlZmluZSAgVFJBTlNfRERJ X0VEUF9JTlBVVF9BX09OT0ZGCSg0IDw8IDEyKQogI2RlZmluZSAgVFJBTlNfRERJX0VEUF9JTlBV VF9CX09OT0ZGCSg1IDw8IDEyKQogI2RlZmluZSAgVFJBTlNfRERJX0VEUF9JTlBVVF9DX09OT0ZG CSg2IDw8IDEyKQorI2RlZmluZSAgVFJBTlNfRERJX01TVF9UUkFOU1BPUlRfU0VMRUNUX1NISUZU CQkxMCAvKiBUR0wrICovCisjZGVmaW5lICBUUkFOU19ERElfTVNUX1RSQU5TUE9SVF9TRUxFQ1Rf TUFTSwkJKDB4MyA8PCAxMCkKKyNkZWZpbmUgIFRSQU5TX0RESV9NU1RfVFJBTlNQT1JUX1NFTEVD VF9EUFRQKHRyYW5zKQkoKHRyYW5zKSA8PCAxMCkKICNkZWZpbmUgIFRSQU5TX0RESV9IRENQX1NJ R05BTExJTkcJKDEgPDwgOSkKICNkZWZpbmUgIFRSQU5TX0RESV9EUF9WQ19QQVlMT0FEX0FMTE9D CSgxIDw8IDgpCiAjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJMRSAo MSA8PCA3KQotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=