From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v3 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Fri, 28 Jun 2019 17:36:21 +0300 Message-ID: <20190628143635.22066-10-imre.deak@intel.com> References: <20190628143635.22066-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 286806E93C for ; Fri, 28 Jun 2019 14:37:01 +0000 (UTC) In-Reply-To: <20190628143635.22066-1-imre.deak@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: Jani Nikula , Nick Desaulniers , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org RmFjdG9yIG91dCBoZWxwZXJzIHJlYWRpbmcvcGFyc2luZyB0aGUgVHlwZUMgc3BlY2lmaWMgcmVn aXN0ZXJzLCBtYWtpbmcKY3VycmVudCB1c2VycyBvZiB0aGVtIGNsZWFyZXIgYW5kIGxldHRpbmcg dXMgdXNlIHRoZW0gbGF0ZXIuCgpXaGlsZSBhdCBpdCBhbHNvOgotIFNpbXBsaWZ5IGljbF90Y19w aHlfY29ubmVjdCgpIHdpdGggYW4gZWFybHkgcmV0dXJuIGluIGxlZ2FjeSBtb2RlLgotIFNpbXBs aWZ5IHRoZSBsaXZlIHN0YXR1cyBjaGVjayB1c2luZyBvbmUgYml0bWFzayBmb3IgYWxsIEhQRCBi aXRzLgotIFJlbW92ZSBhIG1pY3JvLW9wdGltaXNhdGlvbiBvZiB0aGUgcmVwZWF0ZWQgc2FmZS1t b2RlIGNsZWFyaW5nLgotIE1ha2Ugc3VyZSB3ZSBmaXggdGhlIGxlZ2FjeSBwb3J0IGZsYWcgaW4g YWxsIGNhc2VzLgoKRXhjZXB0IGZvciB0aGUgbGFzdCB0d28sIG5vIGZ1bmN0aW9uYWwgY2hhbmdl cy4KCnYyOgotIERvbid0IGRvIHJlZyByZWFkcyBhdCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuIChK YW5pKQotIFByZXZlbnQgY29uc3RhbnQgdHJ1bmNhdGVkIGNvbXBpbGVyIHdhcm5pbmcgd2hlbiBh c3NpZ25pbmcgdGhlCiAgdmFsaWRfaHBkX21hc2suIChOaWNrKQotIHMvaW50ZWxfdGNfcG9ydF9n ZXRfbGFuZV9pbmZvL2ludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzay8gKFZpbGxlKQp2MzoKLSBN YWtlIHZhbGlkX2hwZF9tYXNrIGluaXQgY2xlYXIuIChWaWxsZSkKCkNjOiBKb3PDqSBSb2JlcnRv IGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmln by52aXZpQGludGVsLmNvbT4KQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwu Y29tPgpDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KQ2M6IE5pY2sgRGVz YXVsbmllcnMgPG5kZXNhdWxuaWVyc0Bnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpLmMgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfdGMuYyAgfCAxODggKysrKysrKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaCAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMTkg aW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMKaW5kZXggYzkxNDNlMmE2OTk0Li4yYmU3Y2RjMzE5YmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwpAQCAtMjk5Niw4ICsyOTk2LDcgQEAg c3RhdGljIHZvaWQgaWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKIAllbnVtIHBvcnQg cG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Ci0JZW51bSB0Y19wb3J0IHRjX3BvcnQg PSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBwb3J0KTsKLQl1MzIgbG4wLCBsbjEsIGxhbmVf aW5mbzsKKwl1MzIgbG4wLCBsbjEsIGxhbmVfbWFzazsKIAogCWlmIChpbnRlbF9kaWdfcG9ydC0+ dGNfbW9kZSA9PSBUQ19QT1JUX1RCVF9BTFQpCiAJCXJldHVybjsKQEAgLTMwMTAsMTEgKzMwMDks OSBAQCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQogCQlsbjAgJj0gfihNR19EUF9NT0RFX0NGR19EUF9Y MV9NT0RFIHwgTUdfRFBfTU9ERV9DRkdfRFBfWDJfTU9ERSk7CiAJCWxuMSAmPSB+KE1HX0RQX01P REVfQ0ZHX0RQX1gxX01PREUgfCBNR19EUF9NT0RFX0NGR19EUF9YMl9NT0RFKTsKIAotCQlsYW5l X2luZm8gPSAoSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmCi0JCQkgICAgIERQX0xBTkVf QVNTSUdOTUVOVF9NQVNLKHRjX3BvcnQpKSA+PgotCQkJICAgIERQX0xBTkVfQVNTSUdOTUVOVF9T SElGVCh0Y19wb3J0KTsKKwkJbGFuZV9tYXNrID0gaW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9tYXNr KGludGVsX2RpZ19wb3J0KTsKIAotCQlzd2l0Y2ggKGxhbmVfaW5mbykgeworCQlzd2l0Y2ggKGxh bmVfbWFzaykgewogCQljYXNlIDB4MToKIAkJY2FzZSAweDQ6CiAJCQlicmVhazsKQEAgLTMwMzks NyArMzAzNiw3IEBAIHN0YXRpYyB2b2lkIGljbF9wcm9ncmFtX21nX2RwX21vZGUoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCiAJCQkgICAgICAgTUdfRFBfTU9ERV9D RkdfRFBfWDJfTU9ERTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJTUlTU0lOR19DQVNFKGxh bmVfaW5mbyk7CisJCQlNSVNTSU5HX0NBU0UobGFuZV9tYXNrKTsKIAkJfQogCQlicmVhazsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jCmluZGV4IGNhM2IxMWUyNjQ3NC4u ZjA2ODhjNzQ1MGM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3RjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jCkBA IC0yMSwyNSArMjEsMzQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRjX3BvcnRfbW9kZV9uYW1lKGVu dW0gdGNfcG9ydF9tb2RlIG1vZGUpCiAJcmV0dXJuIG5hbWVzW21vZGVdOwogfQogCi1pbnQgaW50 ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQpCit1MzIgaW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9tYXNrKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwogCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7 CisJdTMyIGxhbmVfbWFzazsKKworCWxhbmVfbWFzayA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVY RFBTUCk7CisKKwlyZXR1cm4gKGxhbmVfbWFzayAmIERQX0xBTkVfQVNTSUdOTUVOVF9NQVNLKHRj X3BvcnQpKSA+PgorCSAgICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfU0hJRlQodGNfcG9ydCk7Cit9 CisKK2ludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKIAlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKLQl1MzIgbGFuZV9pbmZvOworCXUzMiBsYW5lX21hc2s7CiAKIAlpZiAoZGlnX3Bv cnQtPnRjX21vZGUgIT0gVENfUE9SVF9EUF9BTFQpCiAJCXJldHVybiA0OwogCi0JbGFuZV9pbmZv ID0gMDsKKwlsYW5lX21hc2sgPSAwOwogCXdpdGhfaW50ZWxfZGlzcGxheV9wb3dlcihkZXZfcHJp diwgUE9XRVJfRE9NQUlOX0RJU1BMQVlfQ09SRSwgd2FrZXJlZikKLQkJbGFuZV9pbmZvID0gKEk5 MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJgotCQkJICAgICBEUF9MQU5FX0FTU0lHTk1FTlRf TUFTSyh0Y19wb3J0KSkgPj4KLQkJCQlEUF9MQU5FX0FTU0lHTk1FTlRfU0hJRlQodGNfcG9ydCk7 CisJCWxhbmVfbWFzayA9IGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhkaWdfcG9ydCk7CiAK LQlzd2l0Y2ggKGxhbmVfaW5mbykgeworCXN3aXRjaCAobGFuZV9tYXNrKSB7CiAJZGVmYXVsdDoK LQkJTUlTU0lOR19DQVNFKGxhbmVfaW5mbyk7CisJCU1JU1NJTkdfQ0FTRShsYW5lX21hc2spOwog CWNhc2UgMToKIAljYXNlIDI6CiAJY2FzZSA0OgpAQCAtNTMsNiArNjIsNzYgQEAgaW50IGludGVs X3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0KQogCX0KIH0KIAorc3RhdGljIHZvaWQgdGNfcG9ydF9maXh1cF9sZWdhY3lfZmxhZyhz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKKwkJCQkgICAgICB1MzIgbGl2ZV9z dGF0dXNfbWFzaykKK3sKKwl1MzIgdmFsaWRfaHBkX21hc2s7CisKKwlpZiAoZGlnX3BvcnQtPnRj X2xlZ2FjeV9wb3J0KQorCQl2YWxpZF9ocGRfbWFzayA9IEJJVChUQ19QT1JUX0xFR0FDWSk7CisJ ZWxzZQorCQl2YWxpZF9ocGRfbWFzayA9IEJJVChUQ19QT1JUX0RQX0FMVCkgfAorCQkJCSBCSVQo VENfUE9SVF9UQlRfQUxUKTsKKworCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiB+dmFsaWRfaHBk X21hc2spKQorCQlyZXR1cm47CisKKwkvKiBJZiBsaXZlIHN0YXR1cyBtaXNtYXRjaGVzIHRoZSBW QlQgZmxhZywgdHJ1c3QgdGhlIGxpdmUgc3RhdHVzLiAqLworCURSTV9FUlJPUigiUG9ydCAlczog bGl2ZSBzdGF0dXMgJTA4eCBtaXNtYXRjaGVzIHRoZSBsZWdhY3kgcG9ydCBmbGFnLCBmaXggZmxh Z1xuIiwKKwkJICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lLCBsaXZlX3N0YXR1c19tYXNrKTsKKwor CWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA9ICFkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7Cit9 CisKK3N0YXRpYyB1MzIgdGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmRpZ19wb3J0KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOworCWVudW0gdGNfcG9ydCB0Y19w b3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7CisJ dTMyIG1hc2sgPSAwOworCXUzMiB2YWw7CisKKwl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxF WERQU1ApOworCisJaWYgKHZhbCAmIFRDX0xJVkVfU1RBVEVfVEJUKHRjX3BvcnQpKQorCQltYXNr IHw9IEJJVChUQ19QT1JUX1RCVF9BTFQpOworCWlmICh2YWwgJiBUQ19MSVZFX1NUQVRFX1RDKHRj X3BvcnQpKQorCQltYXNrIHw9IEJJVChUQ19QT1JUX0RQX0FMVCk7CisKKwlpZiAoSTkxNV9SRUFE KFNERUlTUikgJiBTREVfVENfSE9UUExVR19JQ1AodGNfcG9ydCkpCisJCW1hc2sgfD0gQklUKFRD X1BPUlRfTEVHQUNZKTsKKworCS8qIFRoZSBzaW5rIGNhbiBiZSBjb25uZWN0ZWQgb25seSBpbiBh IHNpbmdsZSBtb2RlLiAqLworCWlmICghV0FSTl9PTihod2VpZ2h0MzIobWFzaykgPiAxKSkKKwkJ dGNfcG9ydF9maXh1cF9sZWdhY3lfZmxhZyhkaWdfcG9ydCwgbWFzayk7CisKKwlyZXR1cm4gbWFz azsKK30KKworc3RhdGljIGJvb2wgaWNsX3RjX3BoeV9zdGF0dXNfY29tcGxldGUoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CisJZW51bSB0Y19w b3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5w b3J0KTsKKworCXJldHVybiBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQUE1TKSAmCisJICAgICAg IERQX1BIWV9NT0RFX1NUQVRVU19DT01QTEVURUQodGNfcG9ydCk7Cit9CisKK3N0YXRpYyB2b2lk IGljbF90Y19waHlfc2V0X3NhZmVfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdf cG9ydCwKKwkJCQkgICAgIGJvb2wgZW5hYmxlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOworCWVudW0gdGNf cG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2Uu cG9ydCk7CisJdTMyIHZhbDsKKworCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBDU1NT KTsKKworCXZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOworCWlm ICghZW5hYmxlKQorCQl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQp OworCisJSTkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOworfQorCiAvKgogICog VGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBDb25uZWN0IEZs b3cgZGVzY3JpYmVkIGJ5IG91cgogICogc3BlY2lmaWNhdGlvbiwgR2VuMTEgVHlwZUMgUHJvZ3Jh bW1pbmcgY2hhcHRlci4gVGhlIHJlc3Qgb2YgdGhlIGZsb3cgKHJlYWRpbmcKQEAgLTc2LDM4ICsx NTUsMzEgQEAgaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogICovCiBzdGF0aWMgYm9vbCBpY2xfdGNfcGh5X2Nv bm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCiB7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRl dik7Ci0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBk aWdfcG9ydC0+YmFzZS5wb3J0KTsKLQl1MzIgdmFsOworCXUzMiBsaXZlX3N0YXR1c19tYXNrOwog CiAJaWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfTEVHQUNZICYmCiAJICAgIGRpZ19w b3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQogCQlyZXR1cm4gdHJ1ZTsKIAotCXZhbCA9 IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBQTVMpOwotCWlmICghKHZhbCAmIERQX1BIWV9NT0RF X1NUQVRVU19DT01QTEVURUQodGNfcG9ydCkpKSB7CisJaWYgKCFpY2xfdGNfcGh5X3N0YXR1c19j b21wbGV0ZShkaWdfcG9ydCkpIHsKIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogUEhZIG5vdCBy ZWFkeVxuIiwKIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwogCQlXQVJOX09OKGRp Z19wb3J0LT50Y19sZWdhY3lfcG9ydCk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQkvKgotCSAq IFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBtYW55IHRpbWVzIGluIGEgcm93IHdpdGhvdXQg YW4gSFBEIGV2ZW50Ci0JICogaW4gYmV0d2Vlbiwgc28gdHJ5IHRvIGF2b2lkIHRoZSB3cml0ZSB3 aGVuIHdlIGNhbi4KLQkgKi8KLQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQQ1NTUyk7 Ci0JaWYgKCEodmFsICYgRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpKSkgewot CQl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwotCQlJOTE1X1dS SVRFKFBPUlRfVFhfREZMRVhEUENTU1MsIHZhbCk7Ci0JfQorCWljbF90Y19waHlfc2V0X3NhZmVf bW9kZShkaWdfcG9ydCwgZmFsc2UpOworCisJaWYgKGRpZ19wb3J0LT50Y19tb2RlID09IFRDX1BP UlRfTEVHQUNZKQorCQlyZXR1cm4gdHJ1ZTsKKworCWxpdmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0 X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOwogCiAJLyoKIAkgKiBOb3cgd2UgaGF2ZSB0byBy ZS1jaGVjayB0aGUgbGl2ZSBzdGF0ZSwgaW4gY2FzZSB0aGUgcG9ydCByZWNlbnRseQogCSAqIGJl Y2FtZSBkaXNjb25uZWN0ZWQuIE5vdCBuZWNlc3NhcnkgZm9yIGxlZ2FjeSBtb2RlLgogCSAqLwot CWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAmJgotCSAgICAhKEk5MTVf UkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJiBUQ19MSVZFX1NUQVRFX1RDKHRjX3BvcnQpKSkgewor CWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiBCSVQoVENfUE9SVF9EUF9BTFQpKSkgewogCQlEUk1f REVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRpc2Nvbm5lY3RcbiIsCiAJCQkgICAgICBk aWdfcG9ydC0+dGNfcG9ydF9uYW1lKTsKIAkJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0 KTsKQEAgLTEyMyw0NiArMTk1LDM1IEBAIHN0YXRpYyBib29sIGljbF90Y19waHlfY29ubmVjdChz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKICAqLwogdm9pZCBpY2xfdGNfcGh5 X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5i YXNlLmRldik7Ci0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9w cml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKLQotCS8qCi0JICogVEJUIGRpc2Nvbm5lY3Rpb24g ZmxvdyBpcyByZWFkIHRoZSBsaXZlIHN0YXR1cywgd2hhdCB3YXMgZG9uZSBpbgotCSAqIGNhbGxl ci4KLQkgKi8KLQlpZiAoZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9EUF9BTFQgfHwKLQkg ICAgZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9MRUdBQ1kpIHsKLQkJdTMyIHZhbDsKLQot CQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQQ1NTUyk7Ci0JCXZhbCAmPSB+RFBfUEhZ X01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwotCQlJOTE1X1dSSVRFKFBPUlRfVFhfREZM RVhEUENTU1MsIHZhbCk7CisJc3dpdGNoIChkaWdfcG9ydC0+dGNfbW9kZSkgeworCWNhc2UgVENf UE9SVF9MRUdBQ1k6CisJY2FzZSBUQ19QT1JUX0RQX0FMVDoKKwkJaWNsX3RjX3BoeV9zZXRfc2Fm ZV9tb2RlKGRpZ19wb3J0LCB0cnVlKTsKKwkJZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RC VF9BTFQ7CisJCWJyZWFrOworCWNhc2UgVENfUE9SVF9UQlRfQUxUOgorCQkvKiBOb3RoaW5nIHRv IGRvLCB3ZSBzdGF5IGluIFRCVC1hbHQgbW9kZSAqLworCQlicmVhazsKKwlkZWZhdWx0OgorCQlN SVNTSU5HX0NBU0UoZGlnX3BvcnQtPnRjX21vZGUpOwogCX0KIAogCURSTV9ERUJVR19LTVMoIlBv cnQgJXM6IG1vZGUgJXMgZGlzY29ubmVjdGVkXG4iLAogCQkgICAgICBkaWdfcG9ydC0+dGNfcG9y dF9uYW1lLAogCQkgICAgICB0Y19wb3J0X21vZGVfbmFtZShkaWdfcG9ydC0+dGNfbW9kZSkpOwot Ci0JZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7CiB9CiAKIHN0YXRpYyB2b2lk IGljbF91cGRhdGVfdGNfcG9ydF90eXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJCQkgICAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCi0J CQkJICAgIGJvb2wgaXNfbGVnYWN5LCBib29sIGlzX3R5cGVjLCBib29sIGlzX3RidCkKKwkJCQkg ICAgdTMyIGxpdmVfc3RhdHVzX21hc2spCiB7CiAJZW51bSB0Y19wb3J0X21vZGUgb2xkX21vZGUg PSBpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZTsKIAotCVdBUk5fT04oaXNfbGVnYWN5ICsgaXNfdHlw ZWMgKyBpc190YnQgIT0gMSk7Ci0KLQlpZiAoaXNfbGVnYWN5KQotCQlpbnRlbF9kaWdfcG9ydC0+ dGNfbW9kZSA9IFRDX1BPUlRfTEVHQUNZOwotCWVsc2UgaWYgKGlzX3R5cGVjKQotCQlpbnRlbF9k aWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfRFBfQUxUOwotCWVsc2UgaWYgKGlzX3RidCkKLQkJ aW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7Ci0JZWxzZQorCWlmICgh bGl2ZV9zdGF0dXNfbWFzaykKIAkJcmV0dXJuOwogCisJaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUg PSBmbHMobGl2ZV9zdGF0dXNfbWFzaykgLSAxOworCiAJaWYgKG9sZF9tb2RlICE9IGludGVsX2Rp Z19wb3J0LT50Y19tb2RlKQogCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBwb3J0IGhhcyBtb2Rl ICVzXG4iLAogCQkJICAgICAgaW50ZWxfZGlnX3BvcnQtPnRjX3BvcnRfbmFtZSwKQEAgLTE4Miw0 MCArMjQzLDE5IEBAIHN0YXRpYyB2b2lkIGljbF91cGRhdGVfdGNfcG9ydF90eXBlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0ZWQo c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Ci0J ZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0OwotCWVudW0gdGNfcG9ydCB0Y19w b3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7Ci0JYm9vbCBpc19sZWdhY3ks IGlzX3R5cGVjLCBpc190YnQ7Ci0JdTMyIGRwc3A7Ci0KLQkvKgotCSAqIENvbXBsYWluIGlmIHdl IGdvdCBhIGxlZ2FjeSBwb3J0IEhQRCwgYnV0IFZCVCBkaWRuJ3QgbWFyayB0aGUgcG9ydCBhcwot CSAqIGxlZ2FjeS4gVHJlYXQgdGhlIHBvcnQgYXMgbGVnYWN5IGZyb20gbm93IG9uLgotCSAqLwot CWlmICghZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ICYmCi0JICAgIEk5MTVfUkVBRChTREVJU1Ip ICYgU0RFX1RDX0hPVFBMVUdfSUNQKHRjX3BvcnQpKSB7Ci0JCURSTV9FUlJPUigiUG9ydCAlczog VkJUIGluY29ycmVjdGx5IGNsYWltcyBwb3J0IGlzIG5vdCBUeXBlQyBsZWdhY3lcbiIsCi0JCQkg IGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwotCQlkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPSB0 cnVlOwotCX0KLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7CisJdTMyIGxp dmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOwogCiAJ LyoKIAkgKiBUaGUgc3BlYyBzYXlzIHdlIHNob3VsZG4ndCBiZSB1c2luZyB0aGUgSVNSIGJpdHMg Zm9yIGRldGVjdGluZwogCSAqIGJldHdlZW4gVEMgYW5kIFRCVC4gV2Ugc2hvdWxkIHVzZSBERkxF WERQU1AuCiAJICovCi0JZHBzcCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCk7Ci0JaXNf dHlwZWMgPSBkcHNwICYgVENfTElWRV9TVEFURV9UQyh0Y19wb3J0KTsKLQlpc190YnQgPSBkcHNw ICYgVENfTElWRV9TVEFURV9UQlQodGNfcG9ydCk7Ci0KLQlpZiAoIWlzX2xlZ2FjeSAmJiAhaXNf dHlwZWMgJiYgIWlzX3RidCkgeworCWlmICghbGl2ZV9zdGF0dXNfbWFzayAmJiAhZGlnX3BvcnQt PnRjX2xlZ2FjeV9wb3J0KSB7CiAJCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9ydCk7CiAK IAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWljbF91cGRhdGVfdGNfcG9ydF90eXBlKGRldl9wcml2 LCBkaWdfcG9ydCwgaXNfbGVnYWN5LCBpc190eXBlYywKLQkJCQlpc190YnQpOwotCisJaWNsX3Vw ZGF0ZV90Y19wb3J0X3R5cGUoZGV2X3ByaXYsIGRpZ19wb3J0LCBsaXZlX3N0YXR1c19tYXNrKTsK IAlpZiAoIWljbF90Y19waHlfY29ubmVjdChkaWdfcG9ydCkpCiAJCXJldHVybiBmYWxzZTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oCmluZGV4IGNhMTczNTMwMzI1Mi4u OGMzMzhjNDU3OTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3RjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oCkBA IC0xMyw2ICsxMyw3IEBAIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQ7CiB2b2lkIGljbF90Y19w aHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7CiAKIGJv b2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGln X3BvcnQpOwordTMyIGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCk7CiBpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291 bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpOwogCiB2b2lkIGludGVsX3Rj X3BvcnRfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwgYm9vbCBpc19s ZWdhY3kpOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=