From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [RFC 5/7] drm/i915/dp: Validate modes that can only be handled in a bigjoiner configuration Date: Tue, 2 Jul 2019 21:42:03 +0200 Message-ID: <20190702194205.13366-6-maarten.lankhorst@linux.intel.com> References: <20190702194205.13366-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id F2C766E03B for ; Tue, 2 Jul 2019 19:42:11 +0000 (UTC) In-Reply-To: <20190702194205.13366-1-maarten.lankhorst@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 List-Id: intel-gfx@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMg fCAyMzQgKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmggfCAgIDQgLQogMiBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygr KSwgMTA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAu YwppbmRleCBiNDFmZjg4ZDMyNTguLmJmMjg5NzBjMDFhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHAuYwpAQCAtMjQ4LDcgKzI0OCw3IEBAIGludGVsX2RwX21heF9kYXRh X3JhdGUoaW50IG1heF9saW5rX2Nsb2NrLCBpbnQgbWF4X2xhbmVzKQogfQogCiBzdGF0aWMgaW50 Ci1pbnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQoraW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgYm9vbCBhbGxvd19iaWdqb2luZXIpCiB7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CiAJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7CkBAIC0yNTgs NiArMjU4LDkgQEAgaW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKIAogCWludCB0eXBlID0gaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHNb MF0gJiBEUF9EU19QT1JUX1RZUEVfTUFTSzsKIAorCWlmIChhbGxvd19iaWdqb2luZXIgJiYgSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMSkKKwkJbWF4X2RvdGNsayAqPSAyOworCiAJaWYgKHR5cGUg IT0gRFBfRFNfUE9SVF9UWVBFX1ZHQSkKIAkJcmV0dXJuIG1heF9kb3RjbGs7CiAKQEAgLTQ5Myw2 ICs0OTYsMTAzIEBAIGludCBpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHUxNiBp bnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAoaW50IGxpbmtfY2xvY2ssIHU4IGxhbmVfY291bnQs CisJCQkJICAgICAgIGludCBtb2RlX2Nsb2NrLCBpbnQgbW9kZV9oZGlzcGxheSwKKwkJCQkgICAg ICAgYm9vbCBiaWdqb2luZXIpCit7CisJdTE2IGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBwX3NtYWxs X2pvaW5lcl9yYW07CisJaW50IGk7CisKKwkvKgorCSAqIEF2YWlsYWJsZSBMaW5rIEJhbmR3aWR0 aChLYml0cy9zZWMpID0gKE51bWJlck9mTGFuZXMpKgorCSAqIChMaW5rU3ltYm9sQ2xvY2spKiA4 ICogKCgxMDAtRkVDT3ZlcmhlYWQpLzEwMCkqKFRpbWVTbG90c1Blck1UUCkKKwkgKiBGRUNPdmVy aGVhZCA9IDIuNCUsIGZvciBTU1QgLT4gVGltZVNsb3RzUGVyTVRQIGlzIDEsCisJICogZm9yIE1T VCAtPiBUaW1lU2xvdHNQZXJNVFAgaGFzIHRvIGJlIGNhbGN1bGF0ZWQKKwkgKi8KKwliaXRzX3Bl cl9waXhlbCA9IChsaW5rX2Nsb2NrICogbGFuZV9jb3VudCAqIDggKgorCQkJICBEUF9EU0NfRkVD X09WRVJIRUFEX0ZBQ1RPUikgLworCQltb2RlX2Nsb2NrOworCisJLyogU21hbGwgSm9pbmVyIENo ZWNrOiBvdXRwdXQgYnBwIDw9IGpvaW5lciBSQU0gKGJpdHMpIC8gSG9yaXouIHdpZHRoICovCisJ bWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtID0gRFBfRFNDX01BWF9TTUFMTF9KT0lORVJfUkFNX0JV RkZFUiAvCisJCW1vZGVfaGRpc3BsYXk7CisKKwlpZiAoYmlnam9pbmVyKQorCQltYXhfYnBwX3Nt YWxsX2pvaW5lcl9yYW0gKj0gMjsKKworCS8qCisJICogR3JlYXRlc3QgYWxsb3dlZCBEU0MgQlBQ ID0gTUlOIChvdXRwdXQgQlBQIGZyb20gYXZhaWFsYmxlIExpbmsgQlcKKwkgKiBjaGVjaywgb3V0 cHV0IGJwcCBmcm9tIHNtYWxsIGpvaW5lciBSQU0gY2hlY2spCisJICovCisJYml0c19wZXJfcGl4 ZWwgPSBtaW4oYml0c19wZXJfcGl4ZWwsIG1heF9icHBfc21hbGxfam9pbmVyX3JhbSk7CisKKwkv KiBFcnJvciBvdXQgaWYgdGhlIG1heCBicHAgaXMgbGVzcyB0aGFuIHNtYWxsZXN0IGFsbG93ZWQg dmFsaWQgYnBwICovCisJaWYgKGJpdHNfcGVyX3BpeGVsIDwgdmFsaWRfZHNjX2JwcFswXSkgewor CQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBCUFAgJWRcbiIsIGJpdHNfcGVyX3BpeGVsKTsK KwkJcmV0dXJuIDA7CisJfQorCisJLyogRmluZCB0aGUgbmVhcmVzdCBtYXRjaCBpbiB0aGUgYXJy YXkgb2Yga25vd24gQlBQcyBmcm9tIFZFU0EgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RSh2YWxpZF9kc2NfYnBwKSAtIDE7IGkrKykgeworCQlpZiAoYml0c19wZXJfcGl4ZWwgPCB2YWxp ZF9kc2NfYnBwW2kgKyAxXSkKKwkJCWJyZWFrOworCX0KKwliaXRzX3Blcl9waXhlbCA9IHZhbGlk X2RzY19icHBbaV07CisKKwkvKgorCSAqIENvbXByZXNzZWQgQlBQIGluIFU2LjQgZm9ybWF0IHNv IG11bHRpcGx5IGJ5IDE2LCBmb3IgR2VuIDExLAorCSAqIGZyYWN0aW9uYWwgcGFydCBpcyAwCisJ ICovCisJcmV0dXJuIGJpdHNfcGVyX3BpeGVsIDw8IDQ7Cit9CisKK3N0YXRpYyB1OCBpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJICAg ICAgIGludCBtb2RlX2Nsb2NrLCBpbnQgbW9kZV9oZGlzcGxheSwKKwkJCQkgICAgICAgYm9vbCBi aWdqb2luZXIpCit7CisJdTggbWluX3NsaWNlX2NvdW50LCBpOworCWludCBtYXhfc2xpY2Vfd2lk dGg7CisKKwlpZiAobW9kZV9jbG9jayA8PSBEUF9EU0NfUEVBS19QSVhFTF9SQVRFKQorCQltaW5f c2xpY2VfY291bnQgPSBESVZfUk9VTkRfVVAobW9kZV9jbG9jaywKKwkJCQkJICAgICAgIERQX0RT Q19NQVhfRU5DX1RIUk9VR0hQVVRfMCk7CisJZWxzZQorCQltaW5fc2xpY2VfY291bnQgPSBESVZf Uk9VTkRfVVAobW9kZV9jbG9jaywKKwkJCQkJICAgICAgIERQX0RTQ19NQVhfRU5DX1RIUk9VR0hQ VVRfMSk7CisKKwltYXhfc2xpY2Vfd2lkdGggPSBkcm1fZHBfZHNjX3NpbmtfbWF4X3NsaWNlX3dp ZHRoKGludGVsX2RwLT5kc2NfZHBjZCk7CisJaWYgKG1heF9zbGljZV93aWR0aCA8IERQX0RTQ19N SU5fU0xJQ0VfV0lEVEhfVkFMVUUpIHsKKwkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgc2xp Y2Ugd2lkdGggJWQgYnkgRFAgRFNDIFNpbmsgZGV2aWNlXG4iLAorCQkJICAgICAgbWF4X3NsaWNl X3dpZHRoKTsKKwkJcmV0dXJuIDA7CisJfQorCS8qIEFsc28gdGFrZSBpbnRvIGFjY291bnQgbWF4 IHNsaWNlIHdpZHRoICovCisJbWluX3NsaWNlX2NvdW50ID0gbWluX3QodTgsIG1pbl9zbGljZV9j b3VudCwKKwkJCQlESVZfUk9VTkRfVVAobW9kZV9oZGlzcGxheSwKKwkJCQkJICAgICBtYXhfc2xp Y2Vfd2lkdGgpKTsKKworCS8qIEZpbmQgdGhlIGNsb3Nlc3QgbWF0Y2ggdG8gdGhlIHZhbGlkIHNs aWNlIGNvdW50IHZhbHVlcyAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZhbGlkX2Rz Y19zbGljZWNvdW50KTsgaSsrKSB7CisJCXU4IHRlc3Rfc2xpY2VfY291bnQgPSBiaWdqb2luZXIg PworCQkJMiAqIHZhbGlkX2RzY19zbGljZWNvdW50W2ldIDoKKwkJCXZhbGlkX2RzY19zbGljZWNv dW50W2ldOworCisJCWlmICh0ZXN0X3NsaWNlX2NvdW50ID4KKwkJICAgIGRybV9kcF9kc2Nfc2lu a19tYXhfc2xpY2VfY291bnQoaW50ZWxfZHAtPmRzY19kcGNkLCBmYWxzZSkpCisJCQlicmVhazsK KworCQkvKiBiaWcgam9pbmVyIG5lZWRzIHNtYWxsIGpvaW5lciB0byBiZSBlbmFibGVkICovCisJ CWlmIChiaWdqb2luZXIgJiYgdGVzdF9zbGljZV9jb3VudCA8IDQpCisJCQljb250aW51ZTsKKwor CQlpZiAobWluX3NsaWNlX2NvdW50IDw9IHRlc3Rfc2xpY2VfY291bnQpCisJCQlyZXR1cm4gdGVz dF9zbGljZV9jb3VudDsKKwl9CisKKwlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBTbGljZSBD b3VudCAlZFxuIiwgbWluX3NsaWNlX2NvdW50KTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGVu dW0gZHJtX21vZGVfc3RhdHVzCiBpbnRlbF9kcF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCiAJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKQEAg LTUwNiwxMiArNjA2LDE1IEBAIGludGVsX2RwX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKIAlpbnQgbWF4X2RvdGNsazsKIAl1MTYgZHNjX21heF9vdXRwdXRfYnBw ID0gMDsKIAl1OCBkc2Nfc2xpY2VfY291bnQgPSAwOwotCWJvb2wgZHNjOworCWJvb2wgZHNjID0g ZmFsc2UsIGJpZ2pvaW5lciA9IGZhbHNlOwogCiAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVf RkxBR19EQkxTQ0FOKQogCQlyZXR1cm4gTU9ERV9OT19EQkxFU0NBTjsKIAotCW1heF9kb3RjbGsg PSBpbnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhpbnRlbF9kcCk7CisJaWYgKG1vZGUt PmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspCisJCXJldHVybiBNT0RFX0hfSUxMRUdBTDsK KworCW1heF9kb3RjbGsgPSBpbnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhpbnRlbF9k cCwgZmFsc2UpOwogCiAJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkgJiYgZml4ZWRfbW9k ZSkgewogCQlpZiAobW9kZS0+aGRpc3BsYXkgPiBmaXhlZF9tb2RlLT5oZGlzcGxheSkKQEAgLTUy Myw2ICs2MjYsMTggQEAgaW50ZWxfZHBfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAogCQl0YXJnZXRfY2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKIAl9CiAKKwlp ZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkKKwkJcmV0dXJuIE1PREVfQ0xPQ0tfTE9XOworCisJaWYg KHRhcmdldF9jbG9jayA+IG1heF9kb3RjbGspIHsKKwkJbWF4X2RvdGNsayA9IGludGVsX2RwX2Rv d25zdHJlYW1fbWF4X2RvdGNsb2NrKGludGVsX2RwLCB0cnVlKTsKKworCQlpZiAodGFyZ2V0X2Ns b2NrID4gbWF4X2RvdGNsaykKKwkJCXJldHVybiBNT0RFX0NMT0NLX0hJR0g7CisKKwkJYmlnam9p bmVyID0gdHJ1ZTsKKwl9CisKIAltYXhfbGlua19jbG9jayA9IGludGVsX2RwX21heF9saW5rX3Jh dGUoaW50ZWxfZHApOwogCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVs X2RwKTsKIApAQCAtNTQ2LDI4ICs2NjEsMjQgQEAgaW50ZWxfZHBfbW9kZV92YWxpZChzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJCWludGVsX2RwX2RzY19nZXRfb3V0cHV0X2Jw cChtYXhfbGlua19jbG9jaywKIAkJCQkJCQkgICAgbWF4X2xhbmVzLAogCQkJCQkJCSAgICB0YXJn ZXRfY2xvY2ssCi0JCQkJCQkJICAgIG1vZGUtPmhkaXNwbGF5KSA+PiA0OworCQkJCQkJCSAgICBt b2RlLT5oZGlzcGxheSwKKwkJCQkJCQkgICAgYmlnam9pbmVyKSA+PiA0OwogCQkJZHNjX3NsaWNl X2NvdW50ID0KIAkJCQlpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAogCQkJ CQkJCSAgICAgdGFyZ2V0X2Nsb2NrLAotCQkJCQkJCSAgICAgbW9kZS0+aGRpc3BsYXkpOworCQkJ CQkJCSAgICAgbW9kZS0+aGRpc3BsYXksCisJCQkJCQkJICAgICBiaWdqb2luZXIpOwogCQl9Ci0J fQotCi0JZHNjID0gZHNjX21heF9vdXRwdXRfYnBwICYmIGRzY19zbGljZV9jb3VudDsKIAotCS8q IEdlbjExIGhhcyBiaWcgam9pbmVyIGZvciBoYW5kbGluZyB0aGlzICovCi0JaWYgKGRzYyAmJiBk c2Nfc2xpY2VfY291bnQgPj0gMiAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQotCQltYXhf ZG90Y2xrICo9IDI7CisJCWRzYyA9IGRzY19tYXhfb3V0cHV0X2JwcCAmJiBkc2Nfc2xpY2VfY291 bnQ7CisJfQogCi0JaWYgKChtb2RlX3JhdGUgPiBtYXhfcmF0ZSAmJiAhZHNjKSB8fCB0YXJnZXRf Y2xvY2sgPiBtYXhfZG90Y2xrKQorCS8qIGJpZyBqb2luZXIgY29uZmlndXJhdGlvbiBuZWVkcyBE U0MgKi8KKwlpZiAoYmlnam9pbmVyICYmICFkc2MpCiAJCXJldHVybiBNT0RFX0NMT0NLX0hJR0g7 CiAKLQlpZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkKLQkJcmV0dXJuIE1PREVfQ0xPQ0tfTE9XOwot Ci0JaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspCi0JCXJldHVybiBNT0RF X0hfSUxMRUdBTDsKKwlpZiAobW9kZV9yYXRlID4gbWF4X3JhdGUgJiYgIWRzYykKKwkJcmV0dXJu IE1PREVfQ0xPQ0tfSElHSDsKIAogCXJldHVybiBNT0RFX09LOwogfQpAQCAtMTk1MCwxMSArMjA2 MSwxMSBAQCBzdGF0aWMgaW50IGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAogCQkJaW50ZWxfZHBfZHNjX2dldF9vdXRwdXRfYnBwKHBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrLAogCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAogCQkJ CQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCi0JCQkJCQkgICAgYWRqdXN0ZWRfbW9k ZS0+Y3J0Y19oZGlzcGxheSk7CisJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxh eSwgZmFsc2UpOwogCQlkc2NfZHBfc2xpY2VfY291bnQgPQogCQkJaW50ZWxfZHBfZHNjX2dldF9z bGljZV9jb3VudChpbnRlbF9kcCwKIAkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9j aywKLQkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSk7CisJCQkJCQkgICAg IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXksIGZhbHNlKTsKIAkJaWYgKCFkc2NfbWF4X291 dHB1dF9icHAgfHwgIWRzY19kcF9zbGljZV9jb3VudCkgewogCQkJRFJNX0RFQlVHX0tNUygiQ29t cHJlc3NlZCBCUFAvU2xpY2UgQ291bnQgbm90IHN1cHBvcnRlZFxuIik7CiAJCQlyZXR1cm4gLUVJ TlZBTDsKQEAgLTQzMjUsOTEgKzQ0MzYsNiBAQCBpbnRlbF9kcF9nZXRfc2lua19pcnFfZXNpKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpzaW5rX2lycV92ZWN0b3IpCiAJCURQX0RQUlhf RVNJX0xFTjsKIH0KIAotdTE2IGludGVsX2RwX2RzY19nZXRfb3V0cHV0X2JwcChpbnQgbGlua19j bG9jaywgdTggbGFuZV9jb3VudCwKLQkJCQlpbnQgbW9kZV9jbG9jaywgaW50IG1vZGVfaGRpc3Bs YXkpCi17Ci0JdTE2IGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW07Ci0J aW50IGk7Ci0KLQkvKgotCSAqIEF2YWlsYWJsZSBMaW5rIEJhbmR3aWR0aChLYml0cy9zZWMpID0g KE51bWJlck9mTGFuZXMpKgotCSAqIChMaW5rU3ltYm9sQ2xvY2spKiA4ICogKCgxMDAtRkVDT3Zl cmhlYWQpLzEwMCkqKFRpbWVTbG90c1Blck1UUCkKLQkgKiBGRUNPdmVyaGVhZCA9IDIuNCUsIGZv ciBTU1QgLT4gVGltZVNsb3RzUGVyTVRQIGlzIDEsCi0JICogZm9yIE1TVCAtPiBUaW1lU2xvdHNQ ZXJNVFAgaGFzIHRvIGJlIGNhbGN1bGF0ZWQKLQkgKi8KLQliaXRzX3Blcl9waXhlbCA9IChsaW5r X2Nsb2NrICogbGFuZV9jb3VudCAqIDggKgotCQkJICBEUF9EU0NfRkVDX09WRVJIRUFEX0ZBQ1RP UikgLwotCQltb2RlX2Nsb2NrOwotCi0JLyogU21hbGwgSm9pbmVyIENoZWNrOiBvdXRwdXQgYnBw IDw9IGpvaW5lciBSQU0gKGJpdHMpIC8gSG9yaXouIHdpZHRoICovCi0JbWF4X2JwcF9zbWFsbF9q b2luZXJfcmFtID0gRFBfRFNDX01BWF9TTUFMTF9KT0lORVJfUkFNX0JVRkZFUiAvCi0JCW1vZGVf aGRpc3BsYXk7Ci0KLQkvKgotCSAqIEdyZWF0ZXN0IGFsbG93ZWQgRFNDIEJQUCA9IE1JTiAob3V0 cHV0IEJQUCBmcm9tIGF2YWlhbGJsZSBMaW5rIEJXCi0JICogY2hlY2ssIG91dHB1dCBicHAgZnJv bSBzbWFsbCBqb2luZXIgUkFNIGNoZWNrKQotCSAqLwotCWJpdHNfcGVyX3BpeGVsID0gbWluKGJp dHNfcGVyX3BpeGVsLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW0pOwotCi0JLyogRXJyb3Igb3V0 IGlmIHRoZSBtYXggYnBwIGlzIGxlc3MgdGhhbiBzbWFsbGVzdCBhbGxvd2VkIHZhbGlkIGJwcCAq LwotCWlmIChiaXRzX3Blcl9waXhlbCA8IHZhbGlkX2RzY19icHBbMF0pIHsKLQkJRFJNX0RFQlVH X0tNUygiVW5zdXBwb3J0ZWQgQlBQICVkXG4iLCBiaXRzX3Blcl9waXhlbCk7Ci0JCXJldHVybiAw OwotCX0KLQotCS8qIEZpbmQgdGhlIG5lYXJlc3QgbWF0Y2ggaW4gdGhlIGFycmF5IG9mIGtub3du IEJQUHMgZnJvbSBWRVNBICovCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodmFsaWRfZHNj X2JwcCkgLSAxOyBpKyspIHsKLQkJaWYgKGJpdHNfcGVyX3BpeGVsIDwgdmFsaWRfZHNjX2JwcFtp ICsgMV0pCi0JCQlicmVhazsKLQl9Ci0JYml0c19wZXJfcGl4ZWwgPSB2YWxpZF9kc2NfYnBwW2ld OwotCi0JLyoKLQkgKiBDb21wcmVzc2VkIEJQUCBpbiBVNi40IGZvcm1hdCBzbyBtdWx0aXBseSBi eSAxNiwgZm9yIEdlbiAxMSwKLQkgKiBmcmFjdGlvbmFsIHBhcnQgaXMgMAotCSAqLwotCXJldHVy biBiaXRzX3Blcl9waXhlbCA8PCA0OwotfQotCi11OCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2Nv dW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCi0JCQkJaW50IG1vZGVfY2xvY2ssCi0JCQkJ aW50IG1vZGVfaGRpc3BsYXkpCi17Ci0JdTggbWluX3NsaWNlX2NvdW50LCBpOwotCWludCBtYXhf c2xpY2Vfd2lkdGg7Ci0KLQlpZiAobW9kZV9jbG9jayA8PSBEUF9EU0NfUEVBS19QSVhFTF9SQVRF KQotCQltaW5fc2xpY2VfY291bnQgPSBESVZfUk9VTkRfVVAobW9kZV9jbG9jaywKLQkJCQkJICAg ICAgIERQX0RTQ19NQVhfRU5DX1RIUk9VR0hQVVRfMCk7Ci0JZWxzZQotCQltaW5fc2xpY2VfY291 bnQgPSBESVZfUk9VTkRfVVAobW9kZV9jbG9jaywKLQkJCQkJICAgICAgIERQX0RTQ19NQVhfRU5D X1RIUk9VR0hQVVRfMSk7Ci0KLQltYXhfc2xpY2Vfd2lkdGggPSBkcm1fZHBfZHNjX3NpbmtfbWF4 X3NsaWNlX3dpZHRoKGludGVsX2RwLT5kc2NfZHBjZCk7Ci0JaWYgKG1heF9zbGljZV93aWR0aCA8 IERQX0RTQ19NSU5fU0xJQ0VfV0lEVEhfVkFMVUUpIHsKLQkJRFJNX0RFQlVHX0tNUygiVW5zdXBw b3J0ZWQgc2xpY2Ugd2lkdGggJWQgYnkgRFAgRFNDIFNpbmsgZGV2aWNlXG4iLAotCQkJICAgICAg bWF4X3NsaWNlX3dpZHRoKTsKLQkJcmV0dXJuIDA7Ci0JfQotCS8qIEFsc28gdGFrZSBpbnRvIGFj Y291bnQgbWF4IHNsaWNlIHdpZHRoICovCi0JbWluX3NsaWNlX2NvdW50ID0gbWluX3QodTgsIG1p bl9zbGljZV9jb3VudCwKLQkJCQlESVZfUk9VTkRfVVAobW9kZV9oZGlzcGxheSwKLQkJCQkJICAg ICBtYXhfc2xpY2Vfd2lkdGgpKTsKLQotCS8qIEZpbmQgdGhlIGNsb3Nlc3QgbWF0Y2ggdG8gdGhl IHZhbGlkIHNsaWNlIGNvdW50IHZhbHVlcyAqLwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHZhbGlkX2RzY19zbGljZWNvdW50KTsgaSsrKSB7Ci0JCWlmICh2YWxpZF9kc2Nfc2xpY2Vjb3Vu dFtpXSA+Ci0JCSAgICBkcm1fZHBfZHNjX3NpbmtfbWF4X3NsaWNlX2NvdW50KGludGVsX2RwLT5k c2NfZHBjZCwKLQkJCQkJCSAgICBmYWxzZSkpCi0JCQlicmVhazsKLQkJaWYgKG1pbl9zbGljZV9j b3VudCAgPD0gdmFsaWRfZHNjX3NsaWNlY291bnRbaV0pCi0JCQlyZXR1cm4gdmFsaWRfZHNjX3Ns aWNlY291bnRbaV07Ci0JfQotCi0JRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgU2xpY2UgQ291 bnQgJWRcbiIsIG1pbl9zbGljZV9jb3VudCk7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lk CiBpbnRlbF9waXhlbF9lbmNvZGluZ19zZXR1cF92c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaAppbmRleCA2NTdiYmIxZjVlZDAu LmIxMWNhNDUyNzJlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaApA QCAtMTAyLDEwICsxMDIsNiBAQCBib29sIGludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19oYnIyKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogYm9vbCBpbnRlbF9kcF9zb3VyY2Vfc3VwcG9ydHNf aGJyMyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIGJvb2wKIGludGVsX2RwX2dldF9saW5r X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1OCAqbGlua19zdGF0dXMpOwotdTE2 IGludGVsX2RwX2RzY19nZXRfb3V0cHV0X2JwcChpbnQgbGlua19jbG9jaywgdTggbGFuZV9jb3Vu dCwKLQkJCQlpbnQgbW9kZV9jbG9jaywgaW50IG1vZGVfaGRpc3BsYXkpOwotdTggaW50ZWxfZHBf ZHNjX2dldF9zbGljZV9jb3VudChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbW9kZV9j bG9jaywKLQkJCQlpbnQgbW9kZV9oZGlzcGxheSk7CiAKIGJvb2wgaW50ZWxfZHBfcmVhZF9kcGNk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogYm9vbCBpbnRlbF9kcF9nZXRfY29sb3JpbWV0 cnlfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=