From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v2 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Tue, 25 Jun 2019 16:48:19 +0300 Message-ID: <20190625134819.GA23579@ideak-desk.fi.intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> <20190620140600.11357-10-imre.deak@intel.com> <20190625130554.GA5942@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F0E16E0F2 for ; Tue, 25 Jun 2019 13:48:28 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190625130554.GA5942@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Jani Nikula , intel-gfx@lists.freedesktop.org, Nick Desaulniers , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMjUsIDIwMTkgYXQgMDQ6MDU6NTRQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgSnVuIDIwLCAyMDE5IGF0IDA1OjA1OjQ2UE0gKzAzMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IEZhY3RvciBvdXQgaGVscGVycyByZWFkaW5nL3BhcnNpbmcgdGhlIFR5 cGVDIHNwZWNpZmljIHJlZ2lzdGVycywgbWFraW5nCj4gPiBjdXJyZW50IHVzZXJzIG9mIHRoZW0g Y2xlYXJlciBhbmQgbGV0dGluZyB1cyB1c2UgdGhlbSBsYXRlci4KPiA+IAo+ID4gV2hpbGUgYXQg aXQgYWxzbzoKPiA+IC0gU2ltcGxpZnkgaWNsX3RjX3BoeV9jb25uZWN0KCkgd2l0aCBhbiBlYXJs eSByZXR1cm4gaW4gbGVnYWN5IG1vZGUuCj4gPiAtIFNpbXBsaWZ5IHRoZSBsaXZlIHN0YXR1cyBj aGVjayB1c2luZyBvbmUgYml0bWFzayBmb3IgYWxsIEhQRCBiaXRzLgo+ID4gLSBSZW1vdmUgYSBt aWNyby1vcHRpbWlzYXRpb24gb2YgdGhlIHJlcGVhdGVkIHNhZmUtbW9kZSBjbGVhcmluZy4KPiA+ IC0gTWFrZSBzdXJlIHdlIGZpeCB0aGUgbGVnYWN5IHBvcnQgZmxhZyBpbiBhbGwgY2FzZXMuCj4g PiAKPiA+IEV4Y2VwdCBmb3IgdGhlIGxhc3QgdHdvLCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCj4g PiAKPiA+IHYyOgo+ID4gLSBEb24ndCBkbyByZWcgcmVhZHMgYXQgdmFyaWFibGUgZGVjbGFyYXRp b25zLiAoSmFuaSkKPiA+IC0gUHJldmVudCBjb25zdGFudCB0cnVuY2F0ZWQgY29tcGlsZXIgd2Fy bmluZyB3aGVuIGFzc2lnbmluZyB0aGUKPiA+ICAgdmFsaWRfaHBkX21hc2suIChOaWNrKQo+ID4g LSBzL2ludGVsX3RjX3BvcnRfZ2V0X2xhbmVfaW5mby9pbnRlbF90Y19wb3J0X2dldF9sYW5lX21h c2svIChWaWxsZSkKPiA+IAo+ID4gQ2M6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291 emFAaW50ZWwuY29tPgo+ID4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNv bT4KPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+IENj OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+ID4gQ2M6IE5pY2sgRGVzYXVs bmllcnMgPG5kZXNhdWxuaWVyc0Bnb29nbGUuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogSW1yZSBE ZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kZGkuYyB8ICAxMSArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfdGMuYyAgfCAxODUgKysrKysrKysrKysrKystLS0tLS0tLS0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmggIHwgICAxICsKPiA+ICAzIGZp bGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKPiA+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPiBpbmRleCBjOTE0M2Uy YTY5OTQuLjJiZTdjZGMzMTliYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMKPiA+IEBAIC0yOTk2LDggKzI5OTYsNyBAQCBzdGF0aWMgdm9pZCBpY2xf cHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0KQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiAgCWVudW0gcG9ydCBwb3J0 ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+IC0JZW51bSB0Y19wb3J0IHRjX3BvcnQg PSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBwb3J0KTsKPiA+IC0JdTMyIGxuMCwgbG4xLCBs YW5lX2luZm87Cj4gPiArCXUzMiBsbjAsIGxuMSwgbGFuZV9tYXNrOwo+ID4gIAo+ID4gIAlpZiAo aW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9UQlRfQUxUKQo+ID4gIAkJcmV0dXJu Owo+ID4gQEAgLTMwMTAsMTEgKzMwMDksOSBAQCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19k cF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4gIAkJ bG4wICY9IH4oTUdfRFBfTU9ERV9DRkdfRFBfWDFfTU9ERSB8IE1HX0RQX01PREVfQ0ZHX0RQX1gy X01PREUpOwo+ID4gIAkJbG4xICY9IH4oTUdfRFBfTU9ERV9DRkdfRFBfWDFfTU9ERSB8IE1HX0RQ X01PREVfQ0ZHX0RQX1gyX01PREUpOwo+ID4gIAo+ID4gLQkJbGFuZV9pbmZvID0gKEk5MTVfUkVB RChQT1JUX1RYX0RGTEVYRFBTUCkgJgo+ID4gLQkJCSAgICAgRFBfTEFORV9BU1NJR05NRU5UX01B U0sodGNfcG9ydCkpID4+Cj4gPiAtCQkJICAgIERQX0xBTkVfQVNTSUdOTUVOVF9TSElGVCh0Y19w b3J0KTsKPiA+ICsJCWxhbmVfbWFzayA9IGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhpbnRl bF9kaWdfcG9ydCk7Cj4gPiAgCj4gPiAtCQlzd2l0Y2ggKGxhbmVfaW5mbykgewo+ID4gKwkJc3dp dGNoIChsYW5lX21hc2spIHsKPiA+ICAJCWNhc2UgMHgxOgo+ID4gIAkJY2FzZSAweDQ6Cj4gPiAg CQkJYnJlYWs7Cj4gPiBAQCAtMzAzOSw3ICszMDM2LDcgQEAgc3RhdGljIHZvaWQgaWNsX3Byb2dy YW1fbWdfZHBfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkK PiA+ICAJCQkgICAgICAgTUdfRFBfTU9ERV9DRkdfRFBfWDJfTU9ERTsKPiA+ICAJCQlicmVhazsK PiA+ICAJCWRlZmF1bHQ6Cj4gPiAtCQkJTUlTU0lOR19DQVNFKGxhbmVfaW5mbyk7Cj4gPiArCQkJ TUlTU0lOR19DQVNFKGxhbmVfbWFzayk7Cj4gPiAgCQl9Cj4gPiAgCQlicmVhazsKPiA+ICAKPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMKPiA+IGluZGV4IGNhM2IxMWUy NjQ3NC4uZmJmMGE4YzkzNjFmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF90Yy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3RjLmMKPiA+IEBAIC0yMSwyNSArMjEsMzQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRj X3BvcnRfbW9kZV9uYW1lKGVudW0gdGNfcG9ydF9tb2RlIG1vZGUpCj4gPiAgCXJldHVybiBuYW1l c1ttb2RlXTsKPiA+ICB9Cj4gPiAgCj4gPiAtaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5l X2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gK3UzMiBpbnRl bF90Y19wb3J0X2dldF9sYW5lX21hc2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3Bv cnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICAJZW51bSB0Y19wb3J0IHRjX3BvcnQg PSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKPiA+ICsJ dTMyIGxhbmVfbWFzazsKPiA+ICsKPiA+ICsJbGFuZV9tYXNrID0gSTkxNV9SRUFEKFBPUlRfVFhf REZMRVhEUFNQKTsKPiA+ICsKPiA+ICsJcmV0dXJuIChsYW5lX21hc2sgJiBEUF9MQU5FX0FTU0lH Tk1FTlRfTUFTSyh0Y19wb3J0KSkgPj4KPiA+ICsJICAgICAgIERQX0xBTkVfQVNTSUdOTUVOVF9T SElGVCh0Y19wb3J0KTsKPiA+ICt9Cj4gPiArCj4gPiAraW50IGludGVsX3RjX3BvcnRfZmlhX21h eF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gK3sK PiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9y dC0+YmFzZS5iYXNlLmRldik7Cj4gPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ID4gLQl1 MzIgbGFuZV9pbmZvOwo+ID4gKwl1MzIgbGFuZV9tYXNrOwo+ID4gIAo+ID4gIAlpZiAoZGlnX3Bv cnQtPnRjX21vZGUgIT0gVENfUE9SVF9EUF9BTFQpCj4gPiAgCQlyZXR1cm4gNDsKPiA+ICAKPiA+ IC0JbGFuZV9pbmZvID0gMDsKPiA+ICsJbGFuZV9tYXNrID0gMDsKPiA+ICAJd2l0aF9pbnRlbF9k aXNwbGF5X3Bvd2VyKGRldl9wcml2LCBQT1dFUl9ET01BSU5fRElTUExBWV9DT1JFLCB3YWtlcmVm KQo+ID4gLQkJbGFuZV9pbmZvID0gKEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJgo+ID4g LQkJCSAgICAgRFBfTEFORV9BU1NJR05NRU5UX01BU0sodGNfcG9ydCkpID4+Cj4gPiAtCQkJCURQ X0xBTkVfQVNTSUdOTUVOVF9TSElGVCh0Y19wb3J0KTsKPiA+ICsJCWxhbmVfbWFzayA9IGludGVs X3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhkaWdfcG9ydCk7Cj4gPiAgCj4gPiAtCXN3aXRjaCAobGFu ZV9pbmZvKSB7Cj4gPiArCXN3aXRjaCAobGFuZV9tYXNrKSB7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAt CQlNSVNTSU5HX0NBU0UobGFuZV9pbmZvKTsKPiA+ICsJCU1JU1NJTkdfQ0FTRShsYW5lX21hc2sp Owo+ID4gIAljYXNlIDE6Cj4gPiAgCWNhc2UgMjoKPiA+ICAJY2FzZSA0Ogo+ID4gQEAgLTUzLDYg KzYyLDczIEBAIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0 aWMgdm9pZCB0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmRpZ19wb3J0LAo+ID4gKwkJCQkgICAgICB1MzIgbGl2ZV9zdGF0dXNfbWFzaykKPiA+ICt7 Cj4gPiArCXUzMiB2YWxpZF9ocGRfbWFzayA9IEJJVChUQ19QT1JUX0xFR0FDWSk7Cj4gPiArCj4g PiArCWlmICghZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KQo+ID4gKwkJdmFsaWRfaHBkX21hc2sg PSB+dmFsaWRfaHBkX21hc2s7Cj4gCj4gTWlnaHQgYmUgYSBiaXQgbGVzcyBjb25mdXNpbmcgaWYg d2Ugd3JpdGUgdGhpcyBhczoKPiAKPiBpZiAobGVnYWN5KQo+IAl2YWxpZF9ocGRfbWFzayA9IExF R0FDWTsKPiBlbHNlCj4gCXZhbGlkX2hwZF9tYXNrID0gRFBfQUxUIHwgVEJUX0FMVDsKCk9rLCB3 aWxsIGNoYW5nZSB0aGF0LgoKPiAKPiBPdGhlcndpc2UgbGd0bQo+IFJldmlld2VkLWJ5OiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IAo+ID4gKwo+ID4g KwlpZiAoIShsaXZlX3N0YXR1c19tYXNrICYgfnZhbGlkX2hwZF9tYXNrKSkKPiA+ICsJCXJldHVy bjsKPiA+ICsKPiA+ICsJLyogSWYgbGl2ZSBzdGF0dXMgbWlzbWF0Y2hlcyB0aGUgVkJUIGZsYWcs IHRydXN0IHRoZSBsaXZlIHN0YXR1cy4gKi8KPiA+ICsJRFJNX0VSUk9SKCJQb3J0ICVzOiBsaXZl IHN0YXR1cyAlMDh4IG1pc21hdGNoZXMgdGhlIGxlZ2FjeSBwb3J0IGZsYWcsIGZpeCBmbGFnXG4i LAo+ID4gKwkJICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lLCBsaXZlX3N0YXR1c19tYXNrKTsKPiA+ ICsKPiA+ICsJZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gIWRpZ19wb3J0LT50Y19sZWdhY3lf cG9ydDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHUzMiB0Y19wb3J0X2xpdmVfc3RhdHVzX21h c2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiArewo+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJh c2UuZGV2KTsKPiA+ICsJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRl dl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKPiA+ICsJdTMyIG1hc2sgPSAwOwo+ID4gKwl1 MzIgdmFsOwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApOwo+ ID4gKwo+ID4gKwlpZiAodmFsICYgVENfTElWRV9TVEFURV9UQlQodGNfcG9ydCkpCj4gPiArCQlt YXNrIHw9IEJJVChUQ19QT1JUX1RCVF9BTFQpOwo+ID4gKwlpZiAodmFsICYgVENfTElWRV9TVEFU RV9UQyh0Y19wb3J0KSkKPiA+ICsJCW1hc2sgfD0gQklUKFRDX1BPUlRfRFBfQUxUKTsKPiA+ICsK PiA+ICsJaWYgKEk5MTVfUkVBRChTREVJU1IpICYgU0RFX1RDX0hPVFBMVUdfSUNQKHRjX3BvcnQp KQo+ID4gKwkJbWFzayB8PSBCSVQoVENfUE9SVF9MRUdBQ1kpOwo+ID4gKwo+ID4gKwkvKiBUaGUg c2luayBjYW4gYmUgY29ubmVjdGVkIG9ubHkgaW4gYSBzaW5nbGUgbW9kZS4gKi8KPiA+ICsJaWYg KCFXQVJOX09OKGh3ZWlnaHQzMihtYXNrKSA+IDEpKQo+ID4gKwkJdGNfcG9ydF9maXh1cF9sZWdh Y3lfZmxhZyhkaWdfcG9ydCwgbWFzayk7Cj4gPiArCj4gPiArCXJldHVybiBtYXNrOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBpY2xfdGNfcGh5X3N0YXR1c19jb21wbGV0ZShzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ ID4gKwllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRp Z19wb3J0LT5iYXNlLnBvcnQpOwo+ID4gKwo+ID4gKwlyZXR1cm4gSTkxNV9SRUFEKFBPUlRfVFhf REZMRVhEUFBNUykgJgo+ID4gKwkgICAgICAgRFBfUEhZX01PREVfU1RBVFVTX0NPTVBMRVRFRCh0 Y19wb3J0KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaWNsX3RjX3BoeV9zZXRfc2Fm ZV9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0LAo+ID4gKwkJCQkgICAg IGJvb2wgZW5hYmxlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiArCWVudW0gdGNfcG9y dCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9y dCk7Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RG TEVYRFBDU1NTKTsKPiA+ICsKPiA+ICsJdmFsICY9IH5EUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NB RkUodGNfcG9ydCk7Cj4gPiArCWlmICghZW5hYmxlKQo+ID4gKwkJdmFsIHw9IERQX1BIWV9NT0RF X1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0KTsKPiA+ICsKPiA+ICsJSTkxNV9XUklURShQT1JUX1RY X0RGTEVYRFBDU1NTLCB2YWwpOwo+ID4gK30KPiA+ICsKPiA+ICAvKgo+ID4gICAqIFRoaXMgZnVu Y3Rpb24gaW1wbGVtZW50cyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgQ29ubmVjdCBGbG93IGRlc2Ny aWJlZCBieSBvdXIKPiA+ICAgKiBzcGVjaWZpY2F0aW9uLCBHZW4xMSBUeXBlQyBQcm9ncmFtbWlu ZyBjaGFwdGVyLiBUaGUgcmVzdCBvZiB0aGUgZmxvdyAocmVhZGluZwo+ID4gQEAgLTc2LDM4ICsx NTIsMzEgQEAgaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gICAqLwo+ID4gIHN0YXRpYyBib29sIGljbF90 Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICB7 Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gLQllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3Bv cnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQpOwo+ID4gLQl1MzIgdmFsOwo+ ID4gKwl1MzIgbGl2ZV9zdGF0dXNfbWFzazsKPiA+ICAKPiA+ICAJaWYgKGRpZ19wb3J0LT50Y19t b2RlICE9IFRDX1BPUlRfTEVHQUNZICYmCj4gPiAgCSAgICBkaWdfcG9ydC0+dGNfbW9kZSAhPSBU Q19QT1JUX0RQX0FMVCkKPiA+ICAJCXJldHVybiB0cnVlOwo+ID4gIAo+ID4gLQl2YWwgPSBJOTE1 X1JFQUQoUE9SVF9UWF9ERkxFWERQUE1TKTsKPiA+IC0JaWYgKCEodmFsICYgRFBfUEhZX01PREVf U1RBVFVTX0NPTVBMRVRFRCh0Y19wb3J0KSkpIHsKPiA+ICsJaWYgKCFpY2xfdGNfcGh5X3N0YXR1 c19jb21wbGV0ZShkaWdfcG9ydCkpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IFBI WSBub3QgcmVhZHlcbiIsCj4gPiAgCQkJICAgICAgZGlnX3BvcnQtPnRjX3BvcnRfbmFtZSk7Cj4g PiAgCQlXQVJOX09OKGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCk7Cj4gPiAgCQlyZXR1cm4gZmFs c2U7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JLyoKPiA+IC0JICogVGhpcyBmdW5jdGlvbiBtYXkgYmUg Y2FsbGVkIG1hbnkgdGltZXMgaW4gYSByb3cgd2l0aG91dCBhbiBIUEQgZXZlbnQKPiA+IC0JICog aW4gYmV0d2Vlbiwgc28gdHJ5IHRvIGF2b2lkIHRoZSB3cml0ZSB3aGVuIHdlIGNhbi4KPiA+IC0J ICovCj4gPiAtCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBDU1NTKTsKPiA+IC0JaWYg KCEodmFsICYgRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpKSkgewo+ID4gLQkJ dmFsIHw9IERQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0KTsKPiA+IC0JCUk5MTVf V1JJVEUoUE9SVF9UWF9ERkxFWERQQ1NTUywgdmFsKTsKPiA+IC0JfQo+ID4gKwlpY2xfdGNfcGh5 X3NldF9zYWZlX21vZGUoZGlnX3BvcnQsIGZhbHNlKTsKPiA+ICsKPiA+ICsJaWYgKGRpZ19wb3J0 LT50Y19tb2RlID09IFRDX1BPUlRfTEVHQUNZKQo+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiArCj4g PiArCWxpdmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQp Owo+ID4gIAo+ID4gIAkvKgo+ID4gIAkgKiBOb3cgd2UgaGF2ZSB0byByZS1jaGVjayB0aGUgbGl2 ZSBzdGF0ZSwgaW4gY2FzZSB0aGUgcG9ydCByZWNlbnRseQo+ID4gIAkgKiBiZWNhbWUgZGlzY29u bmVjdGVkLiBOb3QgbmVjZXNzYXJ5IGZvciBsZWdhY3kgbW9kZS4KPiA+ICAJICovCj4gPiAtCWlm IChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAmJgo+ID4gLQkgICAgIShJOTE1 X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApICYgVENfTElWRV9TVEFURV9UQyh0Y19wb3J0KSkpIHsK PiA+ICsJaWYgKCEobGl2ZV9zdGF0dXNfbWFzayAmIEJJVChUQ19QT1JUX0RQX0FMVCkpKSB7Cj4g PiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRpc2Nvbm5lY3RcbiIsCj4g PiAgCQkJICAgICAgZGlnX3BvcnQtPnRjX3BvcnRfbmFtZSk7Cj4gPiAgCQlpY2xfdGNfcGh5X2Rp c2Nvbm5lY3QoZGlnX3BvcnQpOwo+ID4gQEAgLTEyMyw0NiArMTkyLDM1IEBAIHN0YXRpYyBib29s IGljbF90Y19waHlfY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkK PiA+ICAgKi8KPiA+ICB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gLQllbnVt IHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5i YXNlLnBvcnQpOwo+ID4gLQo+ID4gLQkvKgo+ID4gLQkgKiBUQlQgZGlzY29ubmVjdGlvbiBmbG93 IGlzIHJlYWQgdGhlIGxpdmUgc3RhdHVzLCB3aGF0IHdhcyBkb25lIGluCj4gPiAtCSAqIGNhbGxl ci4KPiA+IC0JICovCj4gPiAtCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FM VCB8fAo+ID4gLQkgICAgZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9MRUdBQ1kpIHsKPiA+ IC0JCXUzMiB2YWw7Cj4gPiAtCj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQ Q1NTUyk7Cj4gPiAtCQl2YWwgJj0gfkRQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0 KTsKPiA+IC0JCUk5MTVfV1JJVEUoUE9SVF9UWF9ERkxFWERQQ1NTUywgdmFsKTsKPiA+ICsJc3dp dGNoIChkaWdfcG9ydC0+dGNfbW9kZSkgewo+ID4gKwljYXNlIFRDX1BPUlRfTEVHQUNZOgo+ID4g KwljYXNlIFRDX1BPUlRfRFBfQUxUOgo+ID4gKwkJaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKGRp Z19wb3J0LCB0cnVlKTsKPiA+ICsJCWRpZ19wb3J0LT50Y19tb2RlID0gVENfUE9SVF9UQlRfQUxU Owo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgVENfUE9SVF9UQlRfQUxUOgo+ID4gKwkJLyogTm90 aGluZyB0byBkbywgd2Ugc3RheSBpbiBUQlQtYWx0IG1vZGUgKi8KPiA+ICsJCWJyZWFrOwo+ID4g KwlkZWZhdWx0Ogo+ID4gKwkJTUlTU0lOR19DQVNFKGRpZ19wb3J0LT50Y19tb2RlKTsKPiA+ICAJ fQo+ID4gIAo+ID4gIAlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBtb2RlICVzIGRpc2Nvbm5lY3Rl ZFxuIiwKPiA+ICAJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUsCj4gPiAgCQkgICAgICB0 Y19wb3J0X21vZGVfbmFtZShkaWdfcG9ydC0+dGNfbW9kZSkpOwo+ID4gLQo+ID4gLQlkaWdfcG9y dC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZv aWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gIAkJCQkgICAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCj4gPiAtCQkJCSAgICBib29sIGlzX2xlZ2FjeSwgYm9vbCBpc190eXBlYywgYm9vbCBpc190 YnQpCj4gPiArCQkJCSAgICB1MzIgbGl2ZV9zdGF0dXNfbWFzaykKPiA+ICB7Cj4gPiAgCWVudW0g dGNfcG9ydF9tb2RlIG9sZF9tb2RlID0gaW50ZWxfZGlnX3BvcnQtPnRjX21vZGU7Cj4gPiAgCj4g PiAtCVdBUk5fT04oaXNfbGVnYWN5ICsgaXNfdHlwZWMgKyBpc190YnQgIT0gMSk7Cj4gPiAtCj4g PiAtCWlmIChpc19sZWdhY3kpCj4gPiAtCQlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BP UlRfTEVHQUNZOwo+ID4gLQllbHNlIGlmIChpc190eXBlYykKPiA+IC0JCWludGVsX2RpZ19wb3J0 LT50Y19tb2RlID0gVENfUE9SVF9EUF9BTFQ7Cj4gPiAtCWVsc2UgaWYgKGlzX3RidCkKPiA+IC0J CWludGVsX2RpZ19wb3J0LT50Y19tb2RlID0gVENfUE9SVF9UQlRfQUxUOwo+ID4gLQllbHNlCj4g PiArCWlmICghbGl2ZV9zdGF0dXNfbWFzaykKPiA+ICAJCXJldHVybjsKPiA+ICAKPiA+ICsJaW50 ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBmbHMobGl2ZV9zdGF0dXNfbWFzaykgLSAxOwo+ID4gKwo+ ID4gIAlpZiAob2xkX21vZGUgIT0gaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUpCj4gPiAgCQlEUk1f REVCVUdfS01TKCJQb3J0ICVzOiBwb3J0IGhhcyBtb2RlICVzXG4iLAo+ID4gIAkJCSAgICAgIGlu dGVsX2RpZ19wb3J0LT50Y19wb3J0X25hbWUsCj4gPiBAQCAtMTgyLDQwICsyNDAsMTkgQEAgc3Rh dGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+IC0J ZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gLQllbnVtIHRjX3BvcnQg dGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIHBvcnQpOwo+ID4gLQlib29sIGlz X2xlZ2FjeSwgaXNfdHlwZWMsIGlzX3RidDsKPiA+IC0JdTMyIGRwc3A7Cj4gPiAtCj4gPiAtCS8q Cj4gPiAtCSAqIENvbXBsYWluIGlmIHdlIGdvdCBhIGxlZ2FjeSBwb3J0IEhQRCwgYnV0IFZCVCBk aWRuJ3QgbWFyayB0aGUgcG9ydCBhcwo+ID4gLQkgKiBsZWdhY3kuIFRyZWF0IHRoZSBwb3J0IGFz IGxlZ2FjeSBmcm9tIG5vdyBvbi4KPiA+IC0JICovCj4gPiAtCWlmICghZGlnX3BvcnQtPnRjX2xl Z2FjeV9wb3J0ICYmCj4gPiAtCSAgICBJOTE1X1JFQUQoU0RFSVNSKSAmIFNERV9UQ19IT1RQTFVH X0lDUCh0Y19wb3J0KSkgewo+ID4gLQkJRFJNX0VSUk9SKCJQb3J0ICVzOiBWQlQgaW5jb3JyZWN0 bHkgY2xhaW1zIHBvcnQgaXMgbm90IFR5cGVDIGxlZ2FjeVxuIiwKPiA+IC0JCQkgIGRpZ19wb3J0 LT50Y19wb3J0X25hbWUpOwo+ID4gLQkJZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gdHJ1ZTsK PiA+IC0JfQo+ID4gLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7Cj4gPiAr CXUzMiBsaXZlX3N0YXR1c19tYXNrID0gdGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKGRpZ19wb3J0 KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogVGhlIHNwZWMgc2F5cyB3ZSBzaG91bGRuJ3QgYmUg dXNpbmcgdGhlIElTUiBiaXRzIGZvciBkZXRlY3RpbmcKPiA+ICAJICogYmV0d2VlbiBUQyBhbmQg VEJULiBXZSBzaG91bGQgdXNlIERGTEVYRFBTUC4KPiA+ICAJICovCj4gPiAtCWRwc3AgPSBJOTE1 X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApOwo+ID4gLQlpc190eXBlYyA9IGRwc3AgJiBUQ19MSVZF X1NUQVRFX1RDKHRjX3BvcnQpOwo+ID4gLQlpc190YnQgPSBkcHNwICYgVENfTElWRV9TVEFURV9U QlQodGNfcG9ydCk7Cj4gPiAtCj4gPiAtCWlmICghaXNfbGVnYWN5ICYmICFpc190eXBlYyAmJiAh aXNfdGJ0KSB7Cj4gPiArCWlmICghbGl2ZV9zdGF0dXNfbWFzayAmJiAhZGlnX3BvcnQtPnRjX2xl Z2FjeV9wb3J0KSB7Cj4gPiAgCQlpY2xfdGNfcGh5X2Rpc2Nvbm5lY3QoZGlnX3BvcnQpOwo+ID4g IAo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCWljbF91cGRhdGVfdGNf cG9ydF90eXBlKGRldl9wcml2LCBkaWdfcG9ydCwgaXNfbGVnYWN5LCBpc190eXBlYywKPiA+IC0J CQkJaXNfdGJ0KTsKPiA+IC0KPiA+ICsJaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoZGV2X3ByaXYs IGRpZ19wb3J0LCBsaXZlX3N0YXR1c19tYXNrKTsKPiA+ICAJaWYgKCFpY2xfdGNfcGh5X2Nvbm5l Y3QoZGlnX3BvcnQpKQo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaAo+ID4gaW5kZXggY2ExNzM1MzAzMjUyLi44YzMzOGM0 NTc5NmQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3RjLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaAo+ ID4gQEAgLTEzLDYgKzEzLDcgQEAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydDsKPiA+ICB2b2lk IGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCk7Cj4gPiAgCj4gPiAgYm9vbCBpbnRlbF90Y19wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiArdTMyIGludGVsX3RjX3BvcnRfZ2V0X2xhbmVf bWFzayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiAgaW50IGludGVs X3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0KTsKPiA+ICAKPiA+ICB2b2lkIGludGVsX3RjX3BvcnRfaW5pdChzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwgYm9vbCBpc19sZWdhY3kpOwo+ID4gLS0gCj4gPiAyLjE3 LjEKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cj4gCj4gLS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4