From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Tue, 25 Jun 2019 16:05:54 +0300 Message-ID: <20190625130554.GA5942@intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> <20190620140600.11357-10-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id A78AC6E106 for ; Tue, 25 Jun 2019 13:05:58 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190620140600.11357-10-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: Imre Deak Cc: Jani Nikula , intel-gfx@lists.freedesktop.org, Nick Desaulniers , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMjAsIDIwMTkgYXQgMDU6MDU6NDZQTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IEZhY3RvciBvdXQgaGVscGVycyByZWFkaW5nL3BhcnNpbmcgdGhlIFR5cGVDIHNwZWNpZmlj IHJlZ2lzdGVycywgbWFraW5nCj4gY3VycmVudCB1c2VycyBvZiB0aGVtIGNsZWFyZXIgYW5kIGxl dHRpbmcgdXMgdXNlIHRoZW0gbGF0ZXIuCj4gCj4gV2hpbGUgYXQgaXQgYWxzbzoKPiAtIFNpbXBs aWZ5IGljbF90Y19waHlfY29ubmVjdCgpIHdpdGggYW4gZWFybHkgcmV0dXJuIGluIGxlZ2FjeSBt b2RlLgo+IC0gU2ltcGxpZnkgdGhlIGxpdmUgc3RhdHVzIGNoZWNrIHVzaW5nIG9uZSBiaXRtYXNr IGZvciBhbGwgSFBEIGJpdHMuCj4gLSBSZW1vdmUgYSBtaWNyby1vcHRpbWlzYXRpb24gb2YgdGhl IHJlcGVhdGVkIHNhZmUtbW9kZSBjbGVhcmluZy4KPiAtIE1ha2Ugc3VyZSB3ZSBmaXggdGhlIGxl Z2FjeSBwb3J0IGZsYWcgaW4gYWxsIGNhc2VzLgo+IAo+IEV4Y2VwdCBmb3IgdGhlIGxhc3QgdHdv LCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCj4gCj4gdjI6Cj4gLSBEb24ndCBkbyByZWcgcmVhZHMg YXQgdmFyaWFibGUgZGVjbGFyYXRpb25zLiAoSmFuaSkKPiAtIFByZXZlbnQgY29uc3RhbnQgdHJ1 bmNhdGVkIGNvbXBpbGVyIHdhcm5pbmcgd2hlbiBhc3NpZ25pbmcgdGhlCj4gICB2YWxpZF9ocGRf bWFzay4gKE5pY2spCj4gLSBzL2ludGVsX3RjX3BvcnRfZ2V0X2xhbmVfaW5mby9pbnRlbF90Y19w b3J0X2dldF9sYW5lX21hc2svIChWaWxsZSkKPiAKPiBDYzogSm9zw6kgUm9iZXJ0byBkZSBTb3V6 YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+Cj4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZp QGludGVsLmNvbT4KPiBDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+ Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gQ2M6IE5pY2sgRGVz YXVsbmllcnMgPG5kZXNhdWxuaWVyc0Bnb29nbGUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEltcmUg RGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYyB8ICAxMSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3RjLmMgIHwgMTg1ICsrKysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaCAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5n ZWQsIDExNiBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiBpbmRleCBjOTE0M2UyYTY5OTQuLjJiZTdjZGMz MTliYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rk aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwo+IEBA IC0yOTk2LDggKzI5OTYsNyBAQCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2RpZ19wb3J0LT5iYXNl LmJhc2UuZGV2KTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9y dDsKPiAtCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwg cG9ydCk7Cj4gLQl1MzIgbG4wLCBsbjEsIGxhbmVfaW5mbzsKPiArCXUzMiBsbjAsIGxuMSwgbGFu ZV9tYXNrOwo+ICAKPiAgCWlmIChpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX1RC VF9BTFQpCj4gIAkJcmV0dXJuOwo+IEBAIC0zMDEwLDExICszMDA5LDkgQEAgc3RhdGljIHZvaWQg aWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCkKPiAgCQlsbjAgJj0gfihNR19EUF9NT0RFX0NGR19EUF9YMV9NT0RFIHwgTUdfRFBf TU9ERV9DRkdfRFBfWDJfTU9ERSk7Cj4gIAkJbG4xICY9IH4oTUdfRFBfTU9ERV9DRkdfRFBfWDFf TU9ERSB8IE1HX0RQX01PREVfQ0ZHX0RQX1gyX01PREUpOwo+ICAKPiAtCQlsYW5lX2luZm8gPSAo STkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmCj4gLQkJCSAgICAgRFBfTEFORV9BU1NJR05N RU5UX01BU0sodGNfcG9ydCkpID4+Cj4gLQkJCSAgICBEUF9MQU5FX0FTU0lHTk1FTlRfU0hJRlQo dGNfcG9ydCk7Cj4gKwkJbGFuZV9tYXNrID0gaW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9tYXNrKGlu dGVsX2RpZ19wb3J0KTsKPiAgCj4gLQkJc3dpdGNoIChsYW5lX2luZm8pIHsKPiArCQlzd2l0Y2gg KGxhbmVfbWFzaykgewo+ICAJCWNhc2UgMHgxOgo+ICAJCWNhc2UgMHg0Ogo+ICAJCQlicmVhazsK PiBAQCAtMzAzOSw3ICszMDM2LDcgQEAgc3RhdGljIHZvaWQgaWNsX3Byb2dyYW1fbWdfZHBfbW9k ZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgCQkJICAgICAg IE1HX0RQX01PREVfQ0ZHX0RQX1gyX01PREU7Cj4gIAkJCWJyZWFrOwo+ICAJCWRlZmF1bHQ6Cj4g LQkJCU1JU1NJTkdfQ0FTRShsYW5lX2luZm8pOwo+ICsJCQlNSVNTSU5HX0NBU0UobGFuZV9tYXNr KTsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3RjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX3RjLmMKPiBpbmRleCBjYTNiMTFlMjY0NzQuLmZiZjBhOGM5MzYxZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMKPiBAQCAtMjEsMjUgKzIxLDM0IEBAIHN0 YXRpYyBjb25zdCBjaGFyICp0Y19wb3J0X21vZGVfbmFtZShlbnVtIHRjX3BvcnRfbW9kZSBtb2Rl KQo+ICAJcmV0dXJuIG5hbWVzW21vZGVdOwo+ICB9Cj4gIAo+IC1pbnQgaW50ZWxfdGNfcG9ydF9m aWFfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4g K3UzMiBpbnRlbF90Y19wb3J0X2dldF9sYW5lX21hc2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqZGlnX3BvcnQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ICAJZW51bSB0Y19wb3J0IHRjX3Bv cnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKPiAr CXUzMiBsYW5lX21hc2s7Cj4gKwo+ICsJbGFuZV9tYXNrID0gSTkxNV9SRUFEKFBPUlRfVFhfREZM RVhEUFNQKTsKPiArCj4gKwlyZXR1cm4gKGxhbmVfbWFzayAmIERQX0xBTkVfQVNTSUdOTUVOVF9N QVNLKHRjX3BvcnQpKSA+Pgo+ICsJICAgICAgIERQX0xBTkVfQVNTSUdOTUVOVF9TSElGVCh0Y19w b3J0KTsKPiArfQo+ICsKPiAraW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsK PiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0JdTMyIGxhbmVfaW5mbzsKPiArCXUzMiBs YW5lX21hc2s7Cj4gIAo+ICAJaWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxU KQo+ICAJCXJldHVybiA0Owo+ICAKPiAtCWxhbmVfaW5mbyA9IDA7Cj4gKwlsYW5lX21hc2sgPSAw Owo+ICAJd2l0aF9pbnRlbF9kaXNwbGF5X3Bvd2VyKGRldl9wcml2LCBQT1dFUl9ET01BSU5fRElT UExBWV9DT1JFLCB3YWtlcmVmKQo+IC0JCWxhbmVfaW5mbyA9IChJOTE1X1JFQUQoUE9SVF9UWF9E RkxFWERQU1ApICYKPiAtCQkJICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0KSkg Pj4KPiAtCQkJCURQX0xBTkVfQVNTSUdOTUVOVF9TSElGVCh0Y19wb3J0KTsKPiArCQlsYW5lX21h c2sgPSBpbnRlbF90Y19wb3J0X2dldF9sYW5lX21hc2soZGlnX3BvcnQpOwo+ICAKPiAtCXN3aXRj aCAobGFuZV9pbmZvKSB7Cj4gKwlzd2l0Y2ggKGxhbmVfbWFzaykgewo+ICAJZGVmYXVsdDoKPiAt CQlNSVNTSU5HX0NBU0UobGFuZV9pbmZvKTsKPiArCQlNSVNTSU5HX0NBU0UobGFuZV9tYXNrKTsK PiAgCWNhc2UgMToKPiAgCWNhc2UgMjoKPiAgCWNhc2UgNDoKPiBAQCAtNTMsNiArNjIsNzMgQEAg aW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0KQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCB0Y19wb3J0X2Zp eHVwX2xlZ2FjeV9mbGFnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0LAo+ICsJ CQkJICAgICAgdTMyIGxpdmVfc3RhdHVzX21hc2spCj4gK3sKPiArCXUzMiB2YWxpZF9ocGRfbWFz ayA9IEJJVChUQ19QT1JUX0xFR0FDWSk7Cj4gKwo+ICsJaWYgKCFkaWdfcG9ydC0+dGNfbGVnYWN5 X3BvcnQpCj4gKwkJdmFsaWRfaHBkX21hc2sgPSB+dmFsaWRfaHBkX21hc2s7CgpNaWdodCBiZSBh IGJpdCBsZXNzIGNvbmZ1c2luZyBpZiB3ZSB3cml0ZSB0aGlzIGFzOgoKaWYgKGxlZ2FjeSkKCXZh bGlkX2hwZF9tYXNrID0gTEVHQUNZOwplbHNlCgl2YWxpZF9ocGRfbWFzayA9IERQX0FMVCB8IFRC VF9BTFQ7CgpPdGhlcndpc2UgbGd0bQpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gKwo+ICsJaWYgKCEobGl2ZV9zdGF0dXNfbWFz ayAmIH52YWxpZF9ocGRfbWFzaykpCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIElmIGxpdmUgc3Rh dHVzIG1pc21hdGNoZXMgdGhlIFZCVCBmbGFnLCB0cnVzdCB0aGUgbGl2ZSBzdGF0dXMuICovCj4g KwlEUk1fRVJST1IoIlBvcnQgJXM6IGxpdmUgc3RhdHVzICUwOHggbWlzbWF0Y2hlcyB0aGUgbGVn YWN5IHBvcnQgZmxhZywgZml4IGZsYWdcbiIsCj4gKwkJICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1l LCBsaXZlX3N0YXR1c19tYXNrKTsKPiArCj4gKwlkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPSAh ZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIHRjX3BvcnRf bGl2ZV9zdGF0dXNfbWFzayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9y dC0+YmFzZS5iYXNlLmRldik7Cj4gKwllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRf dG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQpOwo+ICsJdTMyIG1hc2sgPSAwOwo+ ICsJdTMyIHZhbDsKPiArCj4gKwl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApOwo+ ICsKPiArCWlmICh2YWwgJiBUQ19MSVZFX1NUQVRFX1RCVCh0Y19wb3J0KSkKPiArCQltYXNrIHw9 IEJJVChUQ19QT1JUX1RCVF9BTFQpOwo+ICsJaWYgKHZhbCAmIFRDX0xJVkVfU1RBVEVfVEModGNf cG9ydCkpCj4gKwkJbWFzayB8PSBCSVQoVENfUE9SVF9EUF9BTFQpOwo+ICsKPiArCWlmIChJOTE1 X1JFQUQoU0RFSVNSKSAmIFNERV9UQ19IT1RQTFVHX0lDUCh0Y19wb3J0KSkKPiArCQltYXNrIHw9 IEJJVChUQ19QT1JUX0xFR0FDWSk7Cj4gKwo+ICsJLyogVGhlIHNpbmsgY2FuIGJlIGNvbm5lY3Rl ZCBvbmx5IGluIGEgc2luZ2xlIG1vZGUuICovCj4gKwlpZiAoIVdBUk5fT04oaHdlaWdodDMyKG1h c2spID4gMSkpCj4gKwkJdGNfcG9ydF9maXh1cF9sZWdhY3lfZmxhZyhkaWdfcG9ydCwgbWFzayk7 Cj4gKwo+ICsJcmV0dXJuIG1hc2s7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGljbF90Y19waHlf c3RhdHVzX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0 LT5iYXNlLmJhc2UuZGV2KTsKPiArCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90 b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gKwo+ICsJcmV0dXJuIEk5MTVf UkVBRChQT1JUX1RYX0RGTEVYRFBQTVMpICYKPiArCSAgICAgICBEUF9QSFlfTU9ERV9TVEFUVVNf Q09NUExFVEVEKHRjX3BvcnQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcGh5X3Nl dF9zYWZlX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsCj4gKwkJCQkg ICAgIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiArCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7 Cj4gKwl1MzIgdmFsOwo+ICsKPiArCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBDU1NT KTsKPiArCj4gKwl2YWwgJj0gfkRQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0KTsK PiArCWlmICghZW5hYmxlKQo+ICsJCXZhbCB8PSBEUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUo dGNfcG9ydCk7Cj4gKwo+ICsJSTkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOwo+ ICt9Cj4gKwo+ICAvKgo+ICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIGZpcnN0IHBh cnQgb2YgdGhlIENvbm5lY3QgRmxvdyBkZXNjcmliZWQgYnkgb3VyCj4gICAqIHNwZWNpZmljYXRp b24sIEdlbjExIFR5cGVDIFByb2dyYW1taW5nIGNoYXB0ZXIuIFRoZSByZXN0IG9mIHRoZSBmbG93 IChyZWFkaW5nCj4gQEAgLTc2LDM4ICsxNTIsMzEgQEAgaW50IGludGVsX3RjX3BvcnRfZmlhX21h eF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ICAgKi8K PiAgc3RhdGljIGJvb2wgaWNsX3RjX3BoeV9jb25uZWN0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmRpZ19wb3J0KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAtCWVudW0gdGNfcG9ydCB0Y19w b3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4g LQl1MzIgdmFsOwo+ICsJdTMyIGxpdmVfc3RhdHVzX21hc2s7Cj4gIAo+ICAJaWYgKGRpZ19wb3J0 LT50Y19tb2RlICE9IFRDX1BPUlRfTEVHQUNZICYmCj4gIAkgICAgZGlnX3BvcnQtPnRjX21vZGUg IT0gVENfUE9SVF9EUF9BTFQpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+IC0JdmFsID0gSTkxNV9S RUFEKFBPUlRfVFhfREZMRVhEUFBNUyk7Cj4gLQlpZiAoISh2YWwgJiBEUF9QSFlfTU9ERV9TVEFU VVNfQ09NUExFVEVEKHRjX3BvcnQpKSkgewo+ICsJaWYgKCFpY2xfdGNfcGh5X3N0YXR1c19jb21w bGV0ZShkaWdfcG9ydCkpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgbm90IHJl YWR5XG4iLAo+ICAJCQkgICAgICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lKTsKPiAgCQlXQVJOX09O KGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAK PiAtCS8qCj4gLQkgKiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgbWFueSB0aW1lcyBpbiBh IHJvdyB3aXRob3V0IGFuIEhQRCBldmVudAo+IC0JICogaW4gYmV0d2Vlbiwgc28gdHJ5IHRvIGF2 b2lkIHRoZSB3cml0ZSB3aGVuIHdlIGNhbi4KPiAtCSAqLwo+IC0JdmFsID0gSTkxNV9SRUFEKFBP UlRfVFhfREZMRVhEUENTU1MpOwo+IC0JaWYgKCEodmFsICYgRFBfUEhZX01PREVfU1RBVFVTX05P VF9TQUZFKHRjX3BvcnQpKSkgewo+IC0JCXZhbCB8PSBEUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NB RkUodGNfcG9ydCk7Cj4gLQkJSTkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOwo+ IC0JfQo+ICsJaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKGRpZ19wb3J0LCBmYWxzZSk7Cj4gKwo+ ICsJaWYgKGRpZ19wb3J0LT50Y19tb2RlID09IFRDX1BPUlRfTEVHQUNZKQo+ICsJCXJldHVybiB0 cnVlOwo+ICsKPiArCWxpdmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2so ZGlnX3BvcnQpOwo+ICAKPiAgCS8qCj4gIAkgKiBOb3cgd2UgaGF2ZSB0byByZS1jaGVjayB0aGUg bGl2ZSBzdGF0ZSwgaW4gY2FzZSB0aGUgcG9ydCByZWNlbnRseQo+ICAJICogYmVjYW1lIGRpc2Nv bm5lY3RlZC4gTm90IG5lY2Vzc2FyeSBmb3IgbGVnYWN5IG1vZGUuCj4gIAkgKi8KPiAtCWlmIChk aWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAmJgo+IC0JICAgICEoSTkxNV9SRUFE KFBPUlRfVFhfREZMRVhEUFNQKSAmIFRDX0xJVkVfU1RBVEVfVEModGNfcG9ydCkpKSB7Cj4gKwlp ZiAoIShsaXZlX3N0YXR1c19tYXNrICYgQklUKFRDX1BPUlRfRFBfQUxUKSkpIHsKPiAgCQlEUk1f REVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRpc2Nvbm5lY3RcbiIsCj4gIAkJCSAgICAg IGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwo+ICAJCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdf cG9ydCk7Cj4gQEAgLTEyMyw0NiArMTkyLDM1IEBAIHN0YXRpYyBib29sIGljbF90Y19waHlfY29u bmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiAgICovCj4gIHZvaWQg aWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0 KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRp Z19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAtCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxf cG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gLQo+IC0JLyoKPiAt CSAqIFRCVCBkaXNjb25uZWN0aW9uIGZsb3cgaXMgcmVhZCB0aGUgbGl2ZSBzdGF0dXMsIHdoYXQg d2FzIGRvbmUgaW4KPiAtCSAqIGNhbGxlci4KPiAtCSAqLwo+IC0JaWYgKGRpZ19wb3J0LT50Y19t b2RlID09IFRDX1BPUlRfRFBfQUxUIHx8Cj4gLQkgICAgZGlnX3BvcnQtPnRjX21vZGUgPT0gVENf UE9SVF9MRUdBQ1kpIHsKPiAtCQl1MzIgdmFsOwo+IC0KPiAtCQl2YWwgPSBJOTE1X1JFQUQoUE9S VF9UWF9ERkxFWERQQ1NTUyk7Cj4gLQkJdmFsICY9IH5EUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NB RkUodGNfcG9ydCk7Cj4gLQkJSTkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOwo+ ICsJc3dpdGNoIChkaWdfcG9ydC0+dGNfbW9kZSkgewo+ICsJY2FzZSBUQ19QT1JUX0xFR0FDWToK PiArCWNhc2UgVENfUE9SVF9EUF9BTFQ6Cj4gKwkJaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKGRp Z19wb3J0LCB0cnVlKTsKPiArCQlkaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsK PiArCQlicmVhazsKPiArCWNhc2UgVENfUE9SVF9UQlRfQUxUOgo+ICsJCS8qIE5vdGhpbmcgdG8g ZG8sIHdlIHN0YXkgaW4gVEJULWFsdCBtb2RlICovCj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ ICsJCU1JU1NJTkdfQ0FTRShkaWdfcG9ydC0+dGNfbW9kZSk7Cj4gIAl9Cj4gIAo+ICAJRFJNX0RF QlVHX0tNUygiUG9ydCAlczogbW9kZSAlcyBkaXNjb25uZWN0ZWRcbiIsCj4gIAkJICAgICAgZGln X3BvcnQtPnRjX3BvcnRfbmFtZSwKPiAgCQkgICAgICB0Y19wb3J0X21vZGVfbmFtZShkaWdfcG9y dC0+dGNfbW9kZSkpOwo+IC0KPiAtCWRpZ19wb3J0LT50Y19tb2RlID0gVENfUE9SVF9UQlRfQUxU Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfdXBkYXRlX3RjX3BvcnRfdHlwZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gLQkJCQkgICAgYm9vbCBpc19sZWdhY3ksIGJvb2wg aXNfdHlwZWMsIGJvb2wgaXNfdGJ0KQo+ICsJCQkJICAgIHUzMiBsaXZlX3N0YXR1c19tYXNrKQo+ ICB7Cj4gIAllbnVtIHRjX3BvcnRfbW9kZSBvbGRfbW9kZSA9IGludGVsX2RpZ19wb3J0LT50Y19t b2RlOwo+ICAKPiAtCVdBUk5fT04oaXNfbGVnYWN5ICsgaXNfdHlwZWMgKyBpc190YnQgIT0gMSk7 Cj4gLQo+IC0JaWYgKGlzX2xlZ2FjeSkKPiAtCQlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRD X1BPUlRfTEVHQUNZOwo+IC0JZWxzZSBpZiAoaXNfdHlwZWMpCj4gLQkJaW50ZWxfZGlnX3BvcnQt PnRjX21vZGUgPSBUQ19QT1JUX0RQX0FMVDsKPiAtCWVsc2UgaWYgKGlzX3RidCkKPiAtCQlpbnRl bF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiAtCWVsc2UKPiArCWlmICgh bGl2ZV9zdGF0dXNfbWFzaykKPiAgCQlyZXR1cm47Cj4gIAo+ICsJaW50ZWxfZGlnX3BvcnQtPnRj X21vZGUgPSBmbHMobGl2ZV9zdGF0dXNfbWFzaykgLSAxOwo+ICsKPiAgCWlmIChvbGRfbW9kZSAh PSBpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSkKPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBw b3J0IGhhcyBtb2RlICVzXG4iLAo+ICAJCQkgICAgICBpbnRlbF9kaWdfcG9ydC0+dGNfcG9ydF9u YW1lLAo+IEBAIC0xODIsNDAgKzI0MCwxOSBAQCBzdGF0aWMgdm9pZCBpY2xfdXBkYXRlX3RjX3Bv cnRfdHlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIGJvb2wgaW50ZWxf dGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXYpOwo+IC0JZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5w b3J0Owo+IC0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2 LCBwb3J0KTsKPiAtCWJvb2wgaXNfbGVnYWN5LCBpc190eXBlYywgaXNfdGJ0Owo+IC0JdTMyIGRw c3A7Cj4gLQo+IC0JLyoKPiAtCSAqIENvbXBsYWluIGlmIHdlIGdvdCBhIGxlZ2FjeSBwb3J0IEhQ RCwgYnV0IFZCVCBkaWRuJ3QgbWFyayB0aGUgcG9ydCBhcwo+IC0JICogbGVnYWN5LiBUcmVhdCB0 aGUgcG9ydCBhcyBsZWdhY3kgZnJvbSBub3cgb24uCj4gLQkgKi8KPiAtCWlmICghZGlnX3BvcnQt PnRjX2xlZ2FjeV9wb3J0ICYmCj4gLQkgICAgSTkxNV9SRUFEKFNERUlTUikgJiBTREVfVENfSE9U UExVR19JQ1AodGNfcG9ydCkpIHsKPiAtCQlEUk1fRVJST1IoIlBvcnQgJXM6IFZCVCBpbmNvcnJl Y3RseSBjbGFpbXMgcG9ydCBpcyBub3QgVHlwZUMgbGVnYWN5XG4iLAo+IC0JCQkgIGRpZ19wb3J0 LT50Y19wb3J0X25hbWUpOwo+IC0JCWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA9IHRydWU7Cj4g LQl9Cj4gLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7Cj4gKwl1MzIgbGl2 ZV9zdGF0dXNfbWFzayA9IHRjX3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhkaWdfcG9ydCk7Cj4gIAo+ ICAJLyoKPiAgCSAqIFRoZSBzcGVjIHNheXMgd2Ugc2hvdWxkbid0IGJlIHVzaW5nIHRoZSBJU1Ig Yml0cyBmb3IgZGV0ZWN0aW5nCj4gIAkgKiBiZXR3ZWVuIFRDIGFuZCBUQlQuIFdlIHNob3VsZCB1 c2UgREZMRVhEUFNQLgo+ICAJICovCj4gLQlkcHNwID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhE UFNQKTsKPiAtCWlzX3R5cGVjID0gZHBzcCAmIFRDX0xJVkVfU1RBVEVfVEModGNfcG9ydCk7Cj4g LQlpc190YnQgPSBkcHNwICYgVENfTElWRV9TVEFURV9UQlQodGNfcG9ydCk7Cj4gLQo+IC0JaWYg KCFpc19sZWdhY3kgJiYgIWlzX3R5cGVjICYmICFpc190YnQpIHsKPiArCWlmICghbGl2ZV9zdGF0 dXNfbWFzayAmJiAhZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KSB7Cj4gIAkJaWNsX3RjX3BoeV9k aXNjb25uZWN0KGRpZ19wb3J0KTsKPiAgCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAt CWljbF91cGRhdGVfdGNfcG9ydF90eXBlKGRldl9wcml2LCBkaWdfcG9ydCwgaXNfbGVnYWN5LCBp c190eXBlYywKPiAtCQkJCWlzX3RidCk7Cj4gLQo+ICsJaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUo ZGV2X3ByaXYsIGRpZ19wb3J0LCBsaXZlX3N0YXR1c19tYXNrKTsKPiAgCWlmICghaWNsX3RjX3Bo eV9jb25uZWN0KGRpZ19wb3J0KSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmgKPiBpbmRleCBjYTE3MzUzMDMyNTIuLjhjMzM4YzQ1 Nzk2ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Rj LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmgKPiBAQCAt MTMsNiArMTMsNyBAQCBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Owo+ICB2b2lkIGljbF90Y19w aHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gIAo+ ICBib29sIGludGVsX3RjX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0KTsKPiArdTMyIGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhf bGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gIAo+ICB2 b2lkIGludGVsX3RjX3BvcnRfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCwgYm9vbCBpc19sZWdhY3kpOwo+IC0tIAo+IDIuMTcuMQo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=