From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v2 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Thu, 20 Jun 2019 17:05:46 +0300 Message-ID: <20190620140600.11357-10-imre.deak@intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EEFD6E592 for ; Thu, 20 Jun 2019 14:06:21 +0000 (UTC) In-Reply-To: <20190620140600.11357-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 ZXRfbGFuZV9pbmZvL2ludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzay8gKFZpbGxlKQoKQ2M6IEpv c8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgpDYzogUm9kcmlnbyBW aXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnph bm9uaUBpbnRlbC5jb20+CkNjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgpD YzogTmljayBEZXNhdWxuaWVycyA8bmRlc2F1bG5pZXJzQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3RjLmMgIHwgMTg1ICsrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmggIHwgICAxICsKIDMgZmlsZXMgY2hhbmdl ZCwgMTE2IGluc2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RkaS5jCmluZGV4IGM5MTQzZTJhNjk5NC4uMmJlN2NkYzMxOWJhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKQEAgLTI5OTYsOCArMjk5 Niw3IEBAIHN0YXRpYyB2b2lkIGljbF9wcm9ncmFtX21nX2RwX21vZGUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CiAJZW51 bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0OwotCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7Ci0JdTMyIGxuMCwgbG4x LCBsYW5lX2luZm87CisJdTMyIGxuMCwgbG4xLCBsYW5lX21hc2s7CiAKIAlpZiAoaW50ZWxfZGln X3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9UQlRfQUxUKQogCQlyZXR1cm47CkBAIC0zMDEwLDEx ICszMDA5LDkgQEAgc3RhdGljIHZvaWQgaWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKIAkJbG4wICY9IH4oTUdfRFBfTU9ERV9D RkdfRFBfWDFfTU9ERSB8IE1HX0RQX01PREVfQ0ZHX0RQX1gyX01PREUpOwogCQlsbjEgJj0gfihN R19EUF9NT0RFX0NGR19EUF9YMV9NT0RFIHwgTUdfRFBfTU9ERV9DRkdfRFBfWDJfTU9ERSk7CiAK LQkJbGFuZV9pbmZvID0gKEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJgotCQkJICAgICBE UF9MQU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0KSkgPj4KLQkJCSAgICBEUF9MQU5FX0FTU0lH Tk1FTlRfU0hJRlQodGNfcG9ydCk7CisJCWxhbmVfbWFzayA9IGludGVsX3RjX3BvcnRfZ2V0X2xh bmVfbWFzayhpbnRlbF9kaWdfcG9ydCk7CiAKLQkJc3dpdGNoIChsYW5lX2luZm8pIHsKKwkJc3dp dGNoIChsYW5lX21hc2spIHsKIAkJY2FzZSAweDE6CiAJCWNhc2UgMHg0OgogCQkJYnJlYWs7CkBA IC0zMDM5LDcgKzMwMzYsNyBAQCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQogCQkJICAgICAgIE1HX0RQ X01PREVfQ0ZHX0RQX1gyX01PREU7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCU1JU1NJTkdf Q0FTRShsYW5lX2luZm8pOworCQkJTUlTU0lOR19DQVNFKGxhbmVfbWFzayk7CiAJCX0KIAkJYnJl YWs7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYwppbmRleCBjYTNiMTFl MjY0NzQuLmZiZjBhOGM5MzYxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF90Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf dGMuYwpAQCAtMjEsMjUgKzIxLDM0IEBAIHN0YXRpYyBjb25zdCBjaGFyICp0Y19wb3J0X21vZGVf bmFtZShlbnVtIHRjX3BvcnRfbW9kZSBtb2RlKQogCXJldHVybiBuYW1lc1ttb2RlXTsKIH0KIAot aW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0KQordTMyIGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKIAllbnVtIHRj X3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNl LnBvcnQpOworCXUzMiBsYW5lX21hc2s7CisKKwlsYW5lX21hc2sgPSBJOTE1X1JFQUQoUE9SVF9U WF9ERkxFWERQU1ApOworCisJcmV0dXJuIChsYW5lX21hc2sgJiBEUF9MQU5FX0FTU0lHTk1FTlRf TUFTSyh0Y19wb3J0KSkgPj4KKwkgICAgICAgRFBfTEFORV9BU1NJR05NRU5UX1NISUZUKHRjX3Bv cnQpOworfQorCitpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291bnQoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CiAJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7Ci0JdTMyIGxhbmVfaW5mbzsKKwl1MzIgbGFuZV9tYXNrOwogCiAJaWYg KGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQogCQlyZXR1cm4gNDsKIAotCWxh bmVfaW5mbyA9IDA7CisJbGFuZV9tYXNrID0gMDsKIAl3aXRoX2ludGVsX2Rpc3BsYXlfcG93ZXIo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9ESVNQTEFZX0NPUkUsIHdha2VyZWYpCi0JCWxhbmVfaW5m byA9IChJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApICYKLQkJCSAgICAgRFBfTEFORV9BU1NJ R05NRU5UX01BU0sodGNfcG9ydCkpID4+Ci0JCQkJRFBfTEFORV9BU1NJR05NRU5UX1NISUZUKHRj X3BvcnQpOworCQlsYW5lX21hc2sgPSBpbnRlbF90Y19wb3J0X2dldF9sYW5lX21hc2soZGlnX3Bv cnQpOwogCi0Jc3dpdGNoIChsYW5lX2luZm8pIHsKKwlzd2l0Y2ggKGxhbmVfbWFzaykgewogCWRl ZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShsYW5lX2luZm8pOworCQlNSVNTSU5HX0NBU0UobGFuZV9t YXNrKTsKIAljYXNlIDE6CiAJY2FzZSAyOgogCWNhc2UgNDoKQEAgLTUzLDYgKzYyLDczIEBAIGlu dCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIHRjX3BvcnRfZml4dXBfbGVnYWN5 X2ZsYWcoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsCisJCQkJICAgICAgdTMy IGxpdmVfc3RhdHVzX21hc2spCit7CisJdTMyIHZhbGlkX2hwZF9tYXNrID0gQklUKFRDX1BPUlRf TEVHQUNZKTsKKworCWlmICghZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KQorCQl2YWxpZF9ocGRf bWFzayA9IH52YWxpZF9ocGRfbWFzazsKKworCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiB+dmFs aWRfaHBkX21hc2spKQorCQlyZXR1cm47CisKKwkvKiBJZiBsaXZlIHN0YXR1cyBtaXNtYXRjaGVz IHRoZSBWQlQgZmxhZywgdHJ1c3QgdGhlIGxpdmUgc3RhdHVzLiAqLworCURSTV9FUlJPUigiUG9y dCAlczogbGl2ZSBzdGF0dXMgJTA4eCBtaXNtYXRjaGVzIHRoZSBsZWdhY3kgcG9ydCBmbGFnLCBm aXggZmxhZ1xuIiwKKwkJICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lLCBsaXZlX3N0YXR1c19tYXNr KTsKKworCWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA9ICFkaWdfcG9ydC0+dGNfbGVnYWN5X3Bv cnQ7Cit9CisKK3N0YXRpYyB1MzIgdGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOworCWVudW0gdGNfcG9y dCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9y dCk7CisJdTMyIG1hc2sgPSAwOworCXUzMiB2YWw7CisKKwl2YWwgPSBJOTE1X1JFQUQoUE9SVF9U WF9ERkxFWERQU1ApOworCisJaWYgKHZhbCAmIFRDX0xJVkVfU1RBVEVfVEJUKHRjX3BvcnQpKQor CQltYXNrIHw9IEJJVChUQ19QT1JUX1RCVF9BTFQpOworCWlmICh2YWwgJiBUQ19MSVZFX1NUQVRF X1RDKHRjX3BvcnQpKQorCQltYXNrIHw9IEJJVChUQ19QT1JUX0RQX0FMVCk7CisKKwlpZiAoSTkx NV9SRUFEKFNERUlTUikgJiBTREVfVENfSE9UUExVR19JQ1AodGNfcG9ydCkpCisJCW1hc2sgfD0g QklUKFRDX1BPUlRfTEVHQUNZKTsKKworCS8qIFRoZSBzaW5rIGNhbiBiZSBjb25uZWN0ZWQgb25s eSBpbiBhIHNpbmdsZSBtb2RlLiAqLworCWlmICghV0FSTl9PTihod2VpZ2h0MzIobWFzaykgPiAx KSkKKwkJdGNfcG9ydF9maXh1cF9sZWdhY3lfZmxhZyhkaWdfcG9ydCwgbWFzayk7CisKKwlyZXR1 cm4gbWFzazsKK30KKworc3RhdGljIGJvb2wgaWNsX3RjX3BoeV9zdGF0dXNfY29tcGxldGUoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CisJZW51 bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+ YmFzZS5wb3J0KTsKKworCXJldHVybiBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQUE1TKSAmCisJ ICAgICAgIERQX1BIWV9NT0RFX1NUQVRVU19DT01QTEVURUQodGNfcG9ydCk7Cit9CisKK3N0YXRp YyB2b2lkIGljbF90Y19waHlfc2V0X3NhZmVfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICpkaWdfcG9ydCwKKwkJCQkgICAgIGJvb2wgZW5hYmxlKQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOworCWVu dW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQt PmJhc2UucG9ydCk7CisJdTMyIHZhbDsKKworCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVY RFBDU1NTKTsKKworCXZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQp OworCWlmICghZW5hYmxlKQorCQl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRj X3BvcnQpOworCisJSTkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOworfQorCiAv KgogICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBDb25u ZWN0IEZsb3cgZGVzY3JpYmVkIGJ5IG91cgogICogc3BlY2lmaWNhdGlvbiwgR2VuMTEgVHlwZUMg UHJvZ3JhbW1pbmcgY2hhcHRlci4gVGhlIHJlc3Qgb2YgdGhlIGZsb3cgKHJlYWRpbmcKQEAgLTc2 LDM4ICsxNTIsMzEgQEAgaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQogICovCiBzdGF0aWMgYm9vbCBpY2xfdGNf cGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5i YXNlLmRldik7Ci0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9w cml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKLQl1MzIgdmFsOworCXUzMiBsaXZlX3N0YXR1c19t YXNrOwogCiAJaWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfTEVHQUNZICYmCiAJICAg IGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQogCQlyZXR1cm4gdHJ1ZTsKIAot CXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBQTVMpOwotCWlmICghKHZhbCAmIERQX1BI WV9NT0RFX1NUQVRVU19DT01QTEVURUQodGNfcG9ydCkpKSB7CisJaWYgKCFpY2xfdGNfcGh5X3N0 YXR1c19jb21wbGV0ZShkaWdfcG9ydCkpIHsKIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogUEhZ IG5vdCByZWFkeVxuIiwKIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwogCQlXQVJO X09OKGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQkv KgotCSAqIFRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBtYW55IHRpbWVzIGluIGEgcm93IHdp dGhvdXQgYW4gSFBEIGV2ZW50Ci0JICogaW4gYmV0d2Vlbiwgc28gdHJ5IHRvIGF2b2lkIHRoZSB3 cml0ZSB3aGVuIHdlIGNhbi4KLQkgKi8KLQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQ Q1NTUyk7Ci0JaWYgKCEodmFsICYgRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQp KSkgewotCQl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwotCQlJ OTE1X1dSSVRFKFBPUlRfVFhfREZMRVhEUENTU1MsIHZhbCk7Ci0JfQorCWljbF90Y19waHlfc2V0 X3NhZmVfbW9kZShkaWdfcG9ydCwgZmFsc2UpOworCisJaWYgKGRpZ19wb3J0LT50Y19tb2RlID09 IFRDX1BPUlRfTEVHQUNZKQorCQlyZXR1cm4gdHJ1ZTsKKworCWxpdmVfc3RhdHVzX21hc2sgPSB0 Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOwogCiAJLyoKIAkgKiBOb3cgd2UgaGF2 ZSB0byByZS1jaGVjayB0aGUgbGl2ZSBzdGF0ZSwgaW4gY2FzZSB0aGUgcG9ydCByZWNlbnRseQog CSAqIGJlY2FtZSBkaXNjb25uZWN0ZWQuIE5vdCBuZWNlc3NhcnkgZm9yIGxlZ2FjeSBtb2RlLgog CSAqLwotCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAmJgotCSAgICAh KEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJiBUQ19MSVZFX1NUQVRFX1RDKHRjX3BvcnQp KSkgeworCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiBCSVQoVENfUE9SVF9EUF9BTFQpKSkgewog CQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRpc2Nvbm5lY3RcbiIsCiAJCQkg ICAgICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lKTsKIAkJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRp Z19wb3J0KTsKQEAgLTEyMyw0NiArMTkyLDM1IEBAIHN0YXRpYyBib29sIGljbF90Y19waHlfY29u bmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKICAqLwogdm9pZCBpY2xf dGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+ YmFzZS5iYXNlLmRldik7Ci0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3Rj KGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKLQotCS8qCi0JICogVEJUIGRpc2Nvbm5l Y3Rpb24gZmxvdyBpcyByZWFkIHRoZSBsaXZlIHN0YXR1cywgd2hhdCB3YXMgZG9uZSBpbgotCSAq IGNhbGxlci4KLQkgKi8KLQlpZiAoZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9EUF9BTFQg fHwKLQkgICAgZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9MRUdBQ1kpIHsKLQkJdTMyIHZh bDsKLQotCQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQQ1NTUyk7Ci0JCXZhbCAmPSB+ RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwotCQlJOTE1X1dSSVRFKFBPUlRf VFhfREZMRVhEUENTU1MsIHZhbCk7CisJc3dpdGNoIChkaWdfcG9ydC0+dGNfbW9kZSkgeworCWNh c2UgVENfUE9SVF9MRUdBQ1k6CisJY2FzZSBUQ19QT1JUX0RQX0FMVDoKKwkJaWNsX3RjX3BoeV9z ZXRfc2FmZV9tb2RlKGRpZ19wb3J0LCB0cnVlKTsKKwkJZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19Q T1JUX1RCVF9BTFQ7CisJCWJyZWFrOworCWNhc2UgVENfUE9SVF9UQlRfQUxUOgorCQkvKiBOb3Ro aW5nIHRvIGRvLCB3ZSBzdGF5IGluIFRCVC1hbHQgbW9kZSAqLworCQlicmVhazsKKwlkZWZhdWx0 OgorCQlNSVNTSU5HX0NBU0UoZGlnX3BvcnQtPnRjX21vZGUpOwogCX0KIAogCURSTV9ERUJVR19L TVMoIlBvcnQgJXM6IG1vZGUgJXMgZGlzY29ubmVjdGVkXG4iLAogCQkgICAgICBkaWdfcG9ydC0+ dGNfcG9ydF9uYW1lLAogCQkgICAgICB0Y19wb3J0X21vZGVfbmFtZShkaWdfcG9ydC0+dGNfbW9k ZSkpOwotCi0JZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7CiB9CiAKIHN0YXRp YyB2b2lkIGljbF91cGRhdGVfdGNfcG9ydF90eXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCQkgICAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCi0JCQkJICAgIGJvb2wgaXNfbGVnYWN5LCBib29sIGlzX3R5cGVjLCBib29sIGlzX3RidCkK KwkJCQkgICAgdTMyIGxpdmVfc3RhdHVzX21hc2spCiB7CiAJZW51bSB0Y19wb3J0X21vZGUgb2xk X21vZGUgPSBpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZTsKIAotCVdBUk5fT04oaXNfbGVnYWN5ICsg aXNfdHlwZWMgKyBpc190YnQgIT0gMSk7Ci0KLQlpZiAoaXNfbGVnYWN5KQotCQlpbnRlbF9kaWdf cG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfTEVHQUNZOwotCWVsc2UgaWYgKGlzX3R5cGVjKQotCQlp bnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfRFBfQUxUOwotCWVsc2UgaWYgKGlzX3Ri dCkKLQkJaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7Ci0JZWxzZQor CWlmICghbGl2ZV9zdGF0dXNfbWFzaykKIAkJcmV0dXJuOwogCisJaW50ZWxfZGlnX3BvcnQtPnRj X21vZGUgPSBmbHMobGl2ZV9zdGF0dXNfbWFzaykgLSAxOworCiAJaWYgKG9sZF9tb2RlICE9IGlu dGVsX2RpZ19wb3J0LT50Y19tb2RlKQogCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBwb3J0IGhh cyBtb2RlICVzXG4iLAogCQkJICAgICAgaW50ZWxfZGlnX3BvcnQtPnRjX3BvcnRfbmFtZSwKQEAg LTE4Miw0MCArMjQwLDE5IEBAIHN0YXRpYyB2b2lkIGljbF91cGRhdGVfdGNfcG9ydF90eXBlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25u ZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRl dik7Ci0JZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0OwotCWVudW0gdGNfcG9y dCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7Ci0JYm9vbCBpc19s ZWdhY3ksIGlzX3R5cGVjLCBpc190YnQ7Ci0JdTMyIGRwc3A7Ci0KLQkvKgotCSAqIENvbXBsYWlu IGlmIHdlIGdvdCBhIGxlZ2FjeSBwb3J0IEhQRCwgYnV0IFZCVCBkaWRuJ3QgbWFyayB0aGUgcG9y dCBhcwotCSAqIGxlZ2FjeS4gVHJlYXQgdGhlIHBvcnQgYXMgbGVnYWN5IGZyb20gbm93IG9uLgot CSAqLwotCWlmICghZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ICYmCi0JICAgIEk5MTVfUkVBRChT REVJU1IpICYgU0RFX1RDX0hPVFBMVUdfSUNQKHRjX3BvcnQpKSB7Ci0JCURSTV9FUlJPUigiUG9y dCAlczogVkJUIGluY29ycmVjdGx5IGNsYWltcyBwb3J0IGlzIG5vdCBUeXBlQyBsZWdhY3lcbiIs Ci0JCQkgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwotCQlkaWdfcG9ydC0+dGNfbGVnYWN5X3Bv cnQgPSB0cnVlOwotCX0KLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7CisJ dTMyIGxpdmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQp OwogCiAJLyoKIAkgKiBUaGUgc3BlYyBzYXlzIHdlIHNob3VsZG4ndCBiZSB1c2luZyB0aGUgSVNS IGJpdHMgZm9yIGRldGVjdGluZwogCSAqIGJldHdlZW4gVEMgYW5kIFRCVC4gV2Ugc2hvdWxkIHVz ZSBERkxFWERQU1AuCiAJICovCi0JZHBzcCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCk7 Ci0JaXNfdHlwZWMgPSBkcHNwICYgVENfTElWRV9TVEFURV9UQyh0Y19wb3J0KTsKLQlpc190YnQg PSBkcHNwICYgVENfTElWRV9TVEFURV9UQlQodGNfcG9ydCk7Ci0KLQlpZiAoIWlzX2xlZ2FjeSAm JiAhaXNfdHlwZWMgJiYgIWlzX3RidCkgeworCWlmICghbGl2ZV9zdGF0dXNfbWFzayAmJiAhZGln X3BvcnQtPnRjX2xlZ2FjeV9wb3J0KSB7CiAJCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9y dCk7CiAKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWljbF91cGRhdGVfdGNfcG9ydF90eXBlKGRl dl9wcml2LCBkaWdfcG9ydCwgaXNfbGVnYWN5LCBpc190eXBlYywKLQkJCQlpc190YnQpOwotCisJ aWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoZGV2X3ByaXYsIGRpZ19wb3J0LCBsaXZlX3N0YXR1c19t YXNrKTsKIAlpZiAoIWljbF90Y19waHlfY29ubmVjdChkaWdfcG9ydCkpCiAJCXJldHVybiBmYWxz ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oCmluZGV4IGNhMTczNTMw MzI1Mi4uOGMzMzhjNDU3OTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3RjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90 Yy5oCkBAIC0xMyw2ICsxMyw3IEBAIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQ7CiB2b2lkIGlj bF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7 CiAKIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqZGlnX3BvcnQpOwordTMyIGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7CiBpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xh bmVfY291bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpOwogCiB2b2lkIGlu dGVsX3RjX3BvcnRfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwgYm9v bCBpc19sZWdhY3kpOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZng=