From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [CI v3 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Thu, 27 Jun 2019 13:34:13 +0300 Message-ID: <20190627103413.GC23002@ideak-desk.fi.intel.com> References: <20190620140600.11357-10-imre.deak@intel.com> <20190626205010.18597-1-imre.deak@intel.com> <9f425a9ac00911fcd86eae3c0df76d8fd2fa796f.camel@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 mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9731889DC5 for ; Thu, 27 Jun 2019 10:34:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: <9f425a9ac00911fcd86eae3c0df76d8fd2fa796f.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Souza, Jose" Cc: "Nikula, Jani" , "intel-gfx@lists.freedesktop.org" , "ndesaulniers@google.com" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMjcsIDIwMTkgYXQgMDE6NTU6NTdBTSArMDMwMCwgU291emEsIEpvc2Ugd3Jv dGU6Cj4gT24gV2VkLCAyMDE5LTA2LTI2IGF0IDIzOjUwICswMzAwLCBJbXJlIERlYWsgd3JvdGU6 Cj4gPiBGYWN0b3Igb3V0IGhlbHBlcnMgcmVhZGluZy9wYXJzaW5nIHRoZSBUeXBlQyBzcGVjaWZp YyByZWdpc3RlcnMsCj4gPiBtYWtpbmcKPiA+IGN1cnJlbnQgdXNlcnMgb2YgdGhlbSBjbGVhcmVy IGFuZCBsZXR0aW5nIHVzIHVzZSB0aGVtIGxhdGVyLgo+ID4gCj4gPiBXaGlsZSBhdCBpdCBhbHNv Ogo+ID4gLSBTaW1wbGlmeSBpY2xfdGNfcGh5X2Nvbm5lY3QoKSB3aXRoIGFuIGVhcmx5IHJldHVy biBpbiBsZWdhY3kgbW9kZS4KPiA+IC0gU2ltcGxpZnkgdGhlIGxpdmUgc3RhdHVzIGNoZWNrIHVz aW5nIG9uZSBiaXRtYXNrIGZvciBhbGwgSFBEIGJpdHMuCj4gPiAtIFJlbW92ZSBhIG1pY3JvLW9w dGltaXNhdGlvbiBvZiB0aGUgcmVwZWF0ZWQgc2FmZS1tb2RlIGNsZWFyaW5nLgo+ID4gLSBNYWtl IHN1cmUgd2UgZml4IHRoZSBsZWdhY3kgcG9ydCBmbGFnIGluIGFsbCBjYXNlcy4KPiA+IAo+ID4g RXhjZXB0IGZvciB0aGUgbGFzdCB0d28sIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KPiA+IAo+ID4g djI6Cj4gPiAtIERvbid0IGRvIHJlZyByZWFkcyBhdCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuIChK YW5pKQo+ID4gLSBQcmV2ZW50IGNvbnN0YW50IHRydW5jYXRlZCBjb21waWxlciB3YXJuaW5nIHdo ZW4gYXNzaWduaW5nIHRoZQo+ID4gICB2YWxpZF9ocGRfbWFzay4gKE5pY2spCj4gPiAtIHMvaW50 ZWxfdGNfcG9ydF9nZXRfbGFuZV9pbmZvL2ludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzay8gKFZp bGxlKQo+ID4gdjM6Cj4gPiAtIE1ha2UgdmFsaWRfaHBkX21hc2sgaW5pdCBjbGVhci4gKFZpbGxl KQo+ID4gCj4gPiBDYzogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5j b20+Cj4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gQ2M6 IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gQ2M6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPiBDYzogTmljayBEZXNhdWxuaWVycyA8bmRl c2F1bG5pZXJzQGdvb2dsZS5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUu ZGVha0BpbnRlbC5jb20+Cj4gPiBSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMgfCAgMTEgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3RjLmMgIHwgMTg4ICsrKysrKysrKysrKysrLS0tLS0tLQo+ID4gLS0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmggIHwgICAxICsKPiA+ICAz IGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKPiA+IAo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMK PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwo+ID4gaW5kZXgg YzkxNDNlMmE2OTk0Li4yYmU3Y2RjMzE5YmEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPiBAQCAtMjk5Niw4ICsyOTk2LDcgQEAgc3RhdGljIHZv aWQgaWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QKPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGludGVsX2RpZ19wb3J0LQo+ID4gPmJhc2UuYmFzZS5kZXYpOwo+ID4g IAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gPiAtCWVudW0g dGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiAt CXUzMiBsbjAsIGxuMSwgbGFuZV9pbmZvOwo+ID4gKwl1MzIgbG4wLCBsbjEsIGxhbmVfbWFzazsK PiA+ICAKPiA+ICAJaWYgKGludGVsX2RpZ19wb3J0LT50Y19tb2RlID09IFRDX1BPUlRfVEJUX0FM VCkKPiA+ICAJCXJldHVybjsKPiA+IEBAIC0zMDEwLDExICszMDA5LDkgQEAgc3RhdGljIHZvaWQg aWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QKPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQpCj4gPiAgCQlsbjAgJj0gfihNR19EUF9NT0RFX0NGR19EUF9YMV9NT0RFIHwK PiA+IE1HX0RQX01PREVfQ0ZHX0RQX1gyX01PREUpOwo+ID4gIAkJbG4xICY9IH4oTUdfRFBfTU9E RV9DRkdfRFBfWDFfTU9ERSB8Cj4gPiBNR19EUF9NT0RFX0NGR19EUF9YMl9NT0RFKTsKPiA+ICAK PiA+IC0JCWxhbmVfaW5mbyA9IChJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApICYKPiA+IC0J CQkgICAgIERQX0xBTkVfQVNTSUdOTUVOVF9NQVNLKHRjX3BvcnQpKSA+Pgo+ID4gLQkJCSAgICBE UF9MQU5FX0FTU0lHTk1FTlRfU0hJRlQodGNfcG9ydCk7Cj4gPiArCQlsYW5lX21hc2sgPQo+ID4g aW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9tYXNrKGludGVsX2RpZ19wb3J0KTsKPiA+ICAKPiA+IC0J CXN3aXRjaCAobGFuZV9pbmZvKSB7Cj4gPiArCQlzd2l0Y2ggKGxhbmVfbWFzaykgewo+ID4gIAkJ Y2FzZSAweDE6Cj4gPiAgCQljYXNlIDB4NDoKPiA+ICAJCQlicmVhazsKPiA+IEBAIC0zMDM5LDcg KzMwMzYsNyBAQCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdAo+ID4g aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiA+ICAJCQkgICAgICAgTUdfRFBf TU9ERV9DRkdfRFBfWDJfTU9ERTsKPiA+ICAJCQlicmVhazsKPiA+ICAJCWRlZmF1bHQ6Cj4gPiAt CQkJTUlTU0lOR19DQVNFKGxhbmVfaW5mbyk7Cj4gPiArCQkJTUlTU0lOR19DQVNFKGxhbmVfbWFz ayk7Cj4gPiAgCQl9Cj4gPiAgCQlicmVhazsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF90Yy5jCj4gPiBpbmRleCBjYTNiMTFlMjY0NzQuLmYwNjg4Yzc0NTBj NyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMu Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jCj4gPiBA QCAtMjEsMjUgKzIxLDM0IEBAIHN0YXRpYyBjb25zdCBjaGFyICp0Y19wb3J0X21vZGVfbmFtZShl bnVtCj4gPiB0Y19wb3J0X21vZGUgbW9kZSkKPiA+ICAJcmV0dXJuIG5hbWVzW21vZGVdOwo+ID4g IH0KPiA+ICAKPiA+IC1pbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291bnQoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydAo+ID4gKmRpZ19wb3J0KQo+ID4gK3UzMiBpbnRlbF90Y19wb3J0 X2dldF9sYW5lX21hc2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAg ewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19w b3J0LQo+ID4gPmJhc2UuYmFzZS5kZXYpOwo+ID4gIAllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGlu dGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LQo+ID4gPmJhc2UucG9ydCk7Cj4gPiAr CXUzMiBsYW5lX21hc2s7Cj4gPiArCj4gPiArCWxhbmVfbWFzayA9IEk5MTVfUkVBRChQT1JUX1RY X0RGTEVYRFBTUCk7Cj4gPiArCj4gPiArCXJldHVybiAobGFuZV9tYXNrICYgRFBfTEFORV9BU1NJ R05NRU5UX01BU0sodGNfcG9ydCkpID4+Cj4gPiArCSAgICAgICBEUF9MQU5FX0FTU0lHTk1FTlRf U0hJRlQodGNfcG9ydCk7Cj4gPiArfQo+ID4gKwo+ID4gK2ludCBpbnRlbF90Y19wb3J0X2ZpYV9t YXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQpCj4g PiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRp Z19wb3J0LQo+ID4gPmJhc2UuYmFzZS5kZXYpOwo+ID4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiA+IC0JdTMyIGxhbmVfaW5mbzsKPiA+ICsJdTMyIGxhbmVfbWFzazsKPiA+ICAKPiA+ICAJ aWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQo+ID4gIAkJcmV0dXJuIDQ7 Cj4gPiAgCj4gPiAtCWxhbmVfaW5mbyA9IDA7Cj4gPiArCWxhbmVfbWFzayA9IDA7Cj4gPiAgCXdp dGhfaW50ZWxfZGlzcGxheV9wb3dlcihkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0RJU1BMQVlfQ09S RSwKPiA+IHdha2VyZWYpCj4gPiAtCQlsYW5lX2luZm8gPSAoSTkxNV9SRUFEKFBPUlRfVFhfREZM RVhEUFNQKSAmCj4gPiAtCQkJICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0KSkg Pj4KPiA+IC0JCQkJRFBfTEFORV9BU1NJR05NRU5UX1NISUZUKHRjX3BvcnQpOwo+ID4gKwkJbGFu ZV9tYXNrID0gaW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9tYXNrKGRpZ19wb3J0KTsKPiA+ICAKPiA+ IC0Jc3dpdGNoIChsYW5lX2luZm8pIHsKPiA+ICsJc3dpdGNoIChsYW5lX21hc2spIHsKPiA+ICAJ ZGVmYXVsdDoKPiA+IC0JCU1JU1NJTkdfQ0FTRShsYW5lX2luZm8pOwo+ID4gKwkJTUlTU0lOR19D QVNFKGxhbmVfbWFzayk7Cj4gPiAgCWNhc2UgMToKPiA+ICAJY2FzZSAyOgo+ID4gIAljYXNlIDQ6 Cj4gPiBAQCAtNTMsNiArNjIsNzYgQEAgaW50IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2Nv dW50KHN0cnVjdAo+ID4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICAJfQo+ID4g IH0KPiA+ICAKPiA+ICtzdGF0aWMgdm9pZCB0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQKPiA+ICpkaWdfcG9ydCwKPiA+ICsJCQkJICAgICAgdTMyIGxp dmVfc3RhdHVzX21hc2spCj4gPiArewo+ID4gKwl1MzIgdmFsaWRfaHBkX21hc2s7Cj4gPiArCj4g PiArCWlmIChkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpCj4gPiArCQl2YWxpZF9ocGRfbWFzayA9 IEJJVChUQ19QT1JUX0xFR0FDWSk7Cj4gPiArCWVsc2UKPiA+ICsJCXZhbGlkX2hwZF9tYXNrID0g QklUKFRDX1BPUlRfRFBfQUxUKSB8Cj4gPiArCQkJCSBCSVQoVENfUE9SVF9UQlRfQUxUKTsKPiA+ ICsKPiA+ICsJaWYgKCEobGl2ZV9zdGF0dXNfbWFzayAmIH52YWxpZF9ocGRfbWFzaykpCj4gPiAr CQlyZXR1cm47Cj4gPiArCj4gPiArCS8qIElmIGxpdmUgc3RhdHVzIG1pc21hdGNoZXMgdGhlIFZC VCBmbGFnLCB0cnVzdCB0aGUgbGl2ZQo+ID4gc3RhdHVzLiAqLwo+ID4gKwlEUk1fRVJST1IoIlBv cnQgJXM6IGxpdmUgc3RhdHVzICUwOHggbWlzbWF0Y2hlcyB0aGUgbGVnYWN5IHBvcnQKPiA+IGZs YWcsIGZpeCBmbGFnXG4iLAo+ID4gKwkJICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lLCBsaXZlX3N0 YXR1c19tYXNrKTsKPiA+ICsKPiA+ICsJZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gIWRpZ19w b3J0LT50Y19sZWdhY3lfcG9ydDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHUzMiB0Y19wb3J0 X2xpdmVfc3RhdHVzX21hc2soc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+ID4gKmRpZ19wb3J0 KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkaWdfcG9ydC0KPiA+ID5iYXNlLmJhc2UuZGV2KTsKPiA+ICsJZW51bSB0Y19wb3J0IHRjX3Bv cnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0KPiA+ID5iYXNlLnBvcnQp Owo+ID4gKwl1MzIgbWFzayA9IDA7Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IEk5 MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCk7Cj4gPiArCj4gPiArCWlmICh2YWwgJiBUQ19MSVZF X1NUQVRFX1RCVCh0Y19wb3J0KSkKPiA+ICsJCW1hc2sgfD0gQklUKFRDX1BPUlRfVEJUX0FMVCk7 Cj4gPiArCWlmICh2YWwgJiBUQ19MSVZFX1NUQVRFX1RDKHRjX3BvcnQpKQo+ID4gKwkJbWFzayB8 PSBCSVQoVENfUE9SVF9EUF9BTFQpOwo+ID4gKwo+ID4gKwlpZiAoSTkxNV9SRUFEKFNERUlTUikg JiBTREVfVENfSE9UUExVR19JQ1AodGNfcG9ydCkpCj4gPiArCQltYXNrIHw9IEJJVChUQ19QT1JU X0xFR0FDWSk7Cj4gPiArCj4gPiArCS8qIFRoZSBzaW5rIGNhbiBiZSBjb25uZWN0ZWQgb25seSBp biBhIHNpbmdsZSBtb2RlLiAqLwo+ID4gKwlpZiAoIVdBUk5fT04oaHdlaWdodDMyKG1hc2spID4g MSkpCj4gPiArCQl0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKGRpZ19wb3J0LCBtYXNrKTsKPiA+ ICsKPiA+ICsJcmV0dXJuIG1hc2s7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sIGljbF90 Y19waHlfc3RhdHVzX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQKPiA+ICpkaWdf cG9ydCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGlnX3BvcnQtCj4gPiA+YmFzZS5iYXNlLmRldik7Cj4gPiArCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtCj4gPiA+YmFzZS5w b3J0KTsKPiA+ICsKPiA+ICsJcmV0dXJuIEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBQTVMpICYK PiA+ICsJICAgICAgIERQX1BIWV9NT0RFX1NUQVRVU19DT01QTEVURUQodGNfcG9ydCk7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGljbF90Y19waHlfc2V0X3NhZmVfbW9kZShzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQsCj4gPiArCQkJCSAgICAgYm9vbCBlbmFi bGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRpZ19wb3J0LQo+ID4gPmJhc2UuYmFzZS5kZXYpOwo+ID4gKwllbnVtIHRjX3BvcnQgdGNf cG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LQo+ID4gPmJhc2UucG9y dCk7Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RG TEVYRFBDU1NTKTsKPiA+ICsKPiA+ICsJdmFsICY9IH5EUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NB RkUodGNfcG9ydCk7Cj4gPiArCWlmICghZW5hYmxlKQo+ID4gKwkJdmFsIHw9IERQX1BIWV9NT0RF X1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0KTsKPiA+ICsKPiA+ICsJSTkxNV9XUklURShQT1JUX1RY X0RGTEVYRFBDU1NTLCB2YWwpOwo+ID4gK30KPiAKPiBXaHkgdGhvc2UgMiBoYXZlICJpY2xfIiB3 aGlsZSB0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKCkgYW5kCj4gdGNfcG9ydF9saXZlX3N0YXR1 c19tYXNrKCkgZG9uJ3Q/CgpBbGwgdGhlIGljbF90Y19waHlfKiBmdW5jcyBhcmUgbmFtZWQgYXMg c3VjaCBhcyB0aGV5IGFyZSBzcGVjaWZpYyB0byBQSFkKcHJvZ3JhbW1pbmcsIHRoZSByZXN0IGFy ZSBzcGVjaWZpYyB0byB0aGUgVHlwZUMgcG9ydC4KCj4gCj4gT3RoZXIgdGhhbiB0aGF0Ogo+IAo+ IFJldmlld2VkLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNv bT4KPiAKPiA+ICsKPiA+ICAvKgo+ID4gICAqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUg Zmlyc3QgcGFydCBvZiB0aGUgQ29ubmVjdCBGbG93Cj4gPiBkZXNjcmliZWQgYnkgb3VyCj4gPiAg ICogc3BlY2lmaWNhdGlvbiwgR2VuMTEgVHlwZUMgUHJvZ3JhbW1pbmcgY2hhcHRlci4gVGhlIHJl c3Qgb2YgdGhlCj4gPiBmbG93IChyZWFkaW5nCj4gPiBAQCAtNzYsMzggKzE1NSwzMSBAQCBpbnQg aW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291bnQoc3RydWN0Cj4gPiBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0KQo+ID4gICAqLwo+ID4gIHN0YXRpYyBib29sIGljbF90Y19waHlfY29u bmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICB7Cj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4gPiA+ YmFzZS5iYXNlLmRldik7Cj4gPiAtCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90 b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtCj4gPiA+YmFzZS5wb3J0KTsKPiA+IC0JdTMyIHZhbDsK PiA+ICsJdTMyIGxpdmVfc3RhdHVzX21hc2s7Cj4gPiAgCj4gPiAgCWlmIChkaWdfcG9ydC0+dGNf bW9kZSAhPSBUQ19QT1JUX0xFR0FDWSAmJgo+ID4gIAkgICAgZGlnX3BvcnQtPnRjX21vZGUgIT0g VENfUE9SVF9EUF9BTFQpCj4gPiAgCQlyZXR1cm4gdHJ1ZTsKPiA+ICAKPiA+IC0JdmFsID0gSTkx NV9SRUFEKFBPUlRfVFhfREZMRVhEUFBNUyk7Cj4gPiAtCWlmICghKHZhbCAmIERQX1BIWV9NT0RF X1NUQVRVU19DT01QTEVURUQodGNfcG9ydCkpKSB7Cj4gPiArCWlmICghaWNsX3RjX3BoeV9zdGF0 dXNfY29tcGxldGUoZGlnX3BvcnQpKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJQb3J0ICVzOiBQ SFkgbm90IHJlYWR5XG4iLAo+ID4gIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwo+ ID4gIAkJV0FSTl9PTihkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQpOwo+ID4gIAkJcmV0dXJuIGZh bHNlOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCS8qCj4gPiAtCSAqIFRoaXMgZnVuY3Rpb24gbWF5IGJl IGNhbGxlZCBtYW55IHRpbWVzIGluIGEgcm93IHdpdGhvdXQgYW4KPiA+IEhQRCBldmVudAo+ID4g LQkgKiBpbiBiZXR3ZWVuLCBzbyB0cnkgdG8gYXZvaWQgdGhlIHdyaXRlIHdoZW4gd2UgY2FuLgo+ ID4gLQkgKi8KPiA+IC0JdmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUENTU1MpOwo+ID4g LQlpZiAoISh2YWwgJiBEUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNfcG9ydCkpKSB7Cj4g PiAtCQl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwo+ID4gLQkJ STkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOwo+ID4gLQl9Cj4gPiArCWljbF90 Y19waHlfc2V0X3NhZmVfbW9kZShkaWdfcG9ydCwgZmFsc2UpOwo+ID4gKwo+ID4gKwlpZiAoZGln X3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9MRUdBQ1kpCj4gPiArCQlyZXR1cm4gdHJ1ZTsKPiA+ ICsKPiA+ICsJbGl2ZV9zdGF0dXNfbWFzayA9IHRjX3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhkaWdf cG9ydCk7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAqIE5vdyB3ZSBoYXZlIHRvIHJlLWNoZWNrIHRo ZSBsaXZlIHN0YXRlLCBpbiBjYXNlIHRoZSBwb3J0Cj4gPiByZWNlbnRseQo+ID4gIAkgKiBiZWNh bWUgZGlzY29ubmVjdGVkLiBOb3QgbmVjZXNzYXJ5IGZvciBsZWdhY3kgbW9kZS4KPiA+ICAJICov Cj4gPiAtCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAmJgo+ID4gLQkg ICAgIShJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApICYKPiA+IFRDX0xJVkVfU1RBVEVfVEMo dGNfcG9ydCkpKSB7Cj4gPiArCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiBCSVQoVENfUE9SVF9E UF9BTFQpKSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogUEhZIHN1ZGRlbiBkaXNj b25uZWN0XG4iLAo+ID4gIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0X25hbWUpOwo+ID4gIAkJ aWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0KTsKPiA+IEBAIC0xMjMsNDYgKzE5NSwzNSBA QCBzdGF0aWMgYm9vbCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0Cj4gPiBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0KQo+ID4gICAqLwo+ID4gIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0 KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIHsKPiA+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0KPiA+ID5iYXNl LmJhc2UuZGV2KTsKPiA+IC0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3Rj KGRldl9wcml2LCBkaWdfcG9ydC0KPiA+ID5iYXNlLnBvcnQpOwo+ID4gLQo+ID4gLQkvKgo+ID4g LQkgKiBUQlQgZGlzY29ubmVjdGlvbiBmbG93IGlzIHJlYWQgdGhlIGxpdmUgc3RhdHVzLCB3aGF0 IHdhcwo+ID4gZG9uZSBpbgo+ID4gLQkgKiBjYWxsZXIuCj4gPiAtCSAqLwo+ID4gLQlpZiAoZGln X3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9EUF9BTFQgfHwKPiA+IC0JICAgIGRpZ19wb3J0LT50 Y19tb2RlID09IFRDX1BPUlRfTEVHQUNZKSB7Cj4gPiAtCQl1MzIgdmFsOwo+ID4gLQo+ID4gLQkJ dmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUENTU1MpOwo+ID4gLQkJdmFsICY9IH5EUF9Q SFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNfcG9ydCk7Cj4gPiAtCQlJOTE1X1dSSVRFKFBPUlRf VFhfREZMRVhEUENTU1MsIHZhbCk7Cj4gPiArCXN3aXRjaCAoZGlnX3BvcnQtPnRjX21vZGUpIHsK PiA+ICsJY2FzZSBUQ19QT1JUX0xFR0FDWToKPiA+ICsJY2FzZSBUQ19QT1JUX0RQX0FMVDoKPiA+ ICsJCWljbF90Y19waHlfc2V0X3NhZmVfbW9kZShkaWdfcG9ydCwgdHJ1ZSk7Cj4gPiArCQlkaWdf cG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNl IFRDX1BPUlRfVEJUX0FMVDoKPiA+ICsJCS8qIE5vdGhpbmcgdG8gZG8sIHdlIHN0YXkgaW4gVEJU LWFsdCBtb2RlICovCj4gPiArCQlicmVhazsKPiA+ICsJZGVmYXVsdDoKPiA+ICsJCU1JU1NJTkdf Q0FTRShkaWdfcG9ydC0+dGNfbW9kZSk7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJRFJNX0RFQlVHX0tN UygiUG9ydCAlczogbW9kZSAlcyBkaXNjb25uZWN0ZWRcbiIsCj4gPiAgCQkgICAgICBkaWdfcG9y dC0+dGNfcG9ydF9uYW1lLAo+ID4gIAkJICAgICAgdGNfcG9ydF9tb2RlX25hbWUoZGlnX3BvcnQt PnRjX21vZGUpKTsKPiA+IC0KPiA+IC0JZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9B TFQ7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGljbF91cGRhdGVfdGNfcG9ydF90eXBl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiAgCQkJCSAgICBzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqaW50ZWxfZGlnX3BvcnQsCj4gPiAtCQkJCSAgICBi b29sIGlzX2xlZ2FjeSwgYm9vbCBpc190eXBlYywgYm9vbAo+ID4gaXNfdGJ0KQo+ID4gKwkJCQkg ICAgdTMyIGxpdmVfc3RhdHVzX21hc2spCj4gPiAgewo+ID4gIAllbnVtIHRjX3BvcnRfbW9kZSBv bGRfbW9kZSA9IGludGVsX2RpZ19wb3J0LT50Y19tb2RlOwo+ID4gIAo+ID4gLQlXQVJOX09OKGlz X2xlZ2FjeSArIGlzX3R5cGVjICsgaXNfdGJ0ICE9IDEpOwo+ID4gLQo+ID4gLQlpZiAoaXNfbGVn YWN5KQo+ID4gLQkJaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX0xFR0FDWTsKPiA+ IC0JZWxzZSBpZiAoaXNfdHlwZWMpCj4gPiAtCQlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRD X1BPUlRfRFBfQUxUOwo+ID4gLQllbHNlIGlmIChpc190YnQpCj4gPiAtCQlpbnRlbF9kaWdfcG9y dC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiA+IC0JZWxzZQo+ID4gKwlpZiAoIWxpdmVf c3RhdHVzX21hc2spCj4gPiAgCQlyZXR1cm47Cj4gPiAgCj4gPiArCWludGVsX2RpZ19wb3J0LT50 Y19tb2RlID0gZmxzKGxpdmVfc3RhdHVzX21hc2spIC0gMTsKPiA+ICsKPiA+ICAJaWYgKG9sZF9t b2RlICE9IGludGVsX2RpZ19wb3J0LT50Y19tb2RlKQo+ID4gIAkJRFJNX0RFQlVHX0tNUygiUG9y dCAlczogcG9ydCBoYXMgbW9kZSAlc1xuIiwKPiA+ICAJCQkgICAgICBpbnRlbF9kaWdfcG9ydC0+ dGNfcG9ydF9uYW1lLAo+ID4gQEAgLTE4Miw0MCArMjQzLDE5IEBAIHN0YXRpYyB2b2lkIGljbF91 cGRhdGVfdGNfcG9ydF90eXBlKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gPiAgYm9vbCBpbnRlbF90Y19wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4gPiA+YmFzZS5iYXNlLmRldik7Cj4gPiAtCWVudW0g cG9ydCBwb3J0ID0gZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+IC0JZW51bSB0Y19wb3J0IHRjX3Bv cnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBwb3J0KTsKPiA+IC0JYm9vbCBpc19sZWdh Y3ksIGlzX3R5cGVjLCBpc190YnQ7Cj4gPiAtCXUzMiBkcHNwOwo+ID4gLQo+ID4gLQkvKgo+ID4g LQkgKiBDb21wbGFpbiBpZiB3ZSBnb3QgYSBsZWdhY3kgcG9ydCBIUEQsIGJ1dCBWQlQgZGlkbid0 IG1hcmsKPiA+IHRoZSBwb3J0IGFzCj4gPiAtCSAqIGxlZ2FjeS4gVHJlYXQgdGhlIHBvcnQgYXMg bGVnYWN5IGZyb20gbm93IG9uLgo+ID4gLQkgKi8KPiA+IC0JaWYgKCFkaWdfcG9ydC0+dGNfbGVn YWN5X3BvcnQgJiYKPiA+IC0JICAgIEk5MTVfUkVBRChTREVJU1IpICYgU0RFX1RDX0hPVFBMVUdf SUNQKHRjX3BvcnQpKSB7Cj4gPiAtCQlEUk1fRVJST1IoIlBvcnQgJXM6IFZCVCBpbmNvcnJlY3Rs eSBjbGFpbXMgcG9ydCBpcyBub3QKPiA+IFR5cGVDIGxlZ2FjeVxuIiwKPiA+IC0JCQkgIGRpZ19w b3J0LT50Y19wb3J0X25hbWUpOwo+ID4gLQkJZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gdHJ1 ZTsKPiA+IC0JfQo+ID4gLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7Cj4g PiArCXUzMiBsaXZlX3N0YXR1c19tYXNrID0gdGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKGRpZ19w b3J0KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogVGhlIHNwZWMgc2F5cyB3ZSBzaG91bGRuJ3Qg YmUgdXNpbmcgdGhlIElTUiBiaXRzIGZvcgo+ID4gZGV0ZWN0aW5nCj4gPiAgCSAqIGJldHdlZW4g VEMgYW5kIFRCVC4gV2Ugc2hvdWxkIHVzZSBERkxFWERQU1AuCj4gPiAgCSAqLwo+ID4gLQlkcHNw ID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKTsKPiA+IC0JaXNfdHlwZWMgPSBkcHNwICYg VENfTElWRV9TVEFURV9UQyh0Y19wb3J0KTsKPiA+IC0JaXNfdGJ0ID0gZHBzcCAmIFRDX0xJVkVf U1RBVEVfVEJUKHRjX3BvcnQpOwo+ID4gLQo+ID4gLQlpZiAoIWlzX2xlZ2FjeSAmJiAhaXNfdHlw ZWMgJiYgIWlzX3RidCkgewo+ID4gKwlpZiAoIWxpdmVfc3RhdHVzX21hc2sgJiYgIWRpZ19wb3J0 LT50Y19sZWdhY3lfcG9ydCkgewo+ID4gIAkJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0 KTsKPiA+ICAKPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpY2xfdXBk YXRlX3RjX3BvcnRfdHlwZShkZXZfcHJpdiwgZGlnX3BvcnQsIGlzX2xlZ2FjeSwKPiA+IGlzX3R5 cGVjLAo+ID4gLQkJCQlpc190YnQpOwo+ID4gLQo+ID4gKwlpY2xfdXBkYXRlX3RjX3BvcnRfdHlw ZShkZXZfcHJpdiwgZGlnX3BvcnQsIGxpdmVfc3RhdHVzX21hc2spOwo+ID4gIAlpZiAoIWljbF90 Y19waHlfY29ubmVjdChkaWdfcG9ydCkpCj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaAo+ID4gaW5kZXggY2ExNzM1 MzAzMjUyLi44YzMzOGM0NTc5NmQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3RjLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdGMuaAo+ID4gQEAgLTEzLDYgKzEzLDcgQEAgc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydDsKPiA+ICB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiAgCj4gPiAgYm9vbCBpbnRlbF90Y19wb3J0X2Nvbm5lY3Rl ZChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiArdTMyIGludGVsX3Rj X3BvcnRfZ2V0X2xhbmVfbWFzayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3Bv cnQpOwo+ID4gIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQpOwo+ID4gIAo+ID4gIHZvaWQgaW50ZWxfdGNf cG9ydF9pbml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0LCBib29sCj4gPiBp c19sZWdhY3kpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=