From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Sat, 8 Jun 2019 20:23:46 +0300 Message-ID: <20190608172346.GA27722@ideak-desk.fi.intel.com> References: <20190604145826.16424-1-imre.deak@intel.com> <20190604145826.16424-10-imre.deak@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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFFE889091 for ; Sat, 8 Jun 2019 17:23:52 +0000 (UTC) Content-Disposition: inline In-Reply-To: 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: "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCBKdW4gMDgsIDIwMTkgYXQgMTI6MjI6NDZBTSArMDMwMCwgU291emEsIEpvc2Ugd3Jv dGU6Cj4gT24gVHVlLCAyMDE5LTA2LTA0IGF0IDE3OjU4ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6 Cj4gPiBGYWN0b3Igb3V0IGhlbHBlcnMgcmVhZGluZy9wYXJzaW5nIHRoZSBUeXBlQyBzcGVjaWZp YyByZWdpc3RlcnMsCj4gPiBtYWtpbmcKPiA+IGN1cnJlbnQgdXNlcnMgb2YgdGhlbSBjbGVhcmVy IGFuZCBsZXR0aW5nIHVzIHVzZSB0aGVtIGxhdGVyLgo+ID4gCj4gPiBXaGlsZSBhdCBpdCBhbHNv Ogo+ID4gLSBTaW1wbGlmeSBpY2xfdGNfcGh5X2Nvbm5lY3QoKSB3aXRoIGFuIGVhcmx5IHJldHVy biBpbiBsZWdhY3kgbW9kZS4KPiA+IC0gU2ltcGxpZnkgdGhlIGxpdmUgc3RhdHVzIGNoZWNrIHVz aW5nIG9uZSBiaXRtYXNrIGZvciBhbGwgSFBEIGJpdHMuCj4gPiAtIFJlbW92ZSBhIG1pY3JvLW9w dGltaXNhdGlvbiBvZiB0aGUgcmVwZWF0ZWQgc2FmZS1tb2RlIGNsZWFyaW5nLgo+ID4gLSBNYWtl IHN1cmUgd2UgZml4IHRoZSBsZWdhY3kgcG9ydCBmbGFnIGluIGFsbCBjYXNlcy4KPiA+IAo+ID4g RXhjZXB0IGZvciB0aGUgbGFzdCB0d28sIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KPiA+IAo+ID4g Q2M6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4gQ2M6 IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiA+IENjOiBQYXVsbyBaYW5v bmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVh ayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jIHwgICA1ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMu YyAgfCAxNjYgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gPiAtLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMuaCAgfCAgIDEgKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwg MTAzIGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiA+IGluZGV4IDhmMjIzZDQ4ZDU2Mi4uZDIzNjgzOWJlZTE5IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBAQCAtMjk4Myw3ICsyOTgzLDYgQEAg c3RhdGljIHZvaWQgaWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QKPiA+IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2RpZ19wb3J0LQo+ID4gPmJhc2UuYmFzZS5k ZXYpOwo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4g PiAtCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9y dCk7Cj4gPiAgCXUzMiBsbjAsIGxuMSwgbGFuZV9pbmZvOwo+ID4gIAo+ID4gIAlpZiAoaW50ZWxf ZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9UQlRfQUxUKQo+ID4gQEAgLTI5OTcsOSArMjk5 Niw3IEBAIHN0YXRpYyB2b2lkIGljbF9wcm9ncmFtX21nX2RwX21vZGUoc3RydWN0Cj4gPiBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4gIAkJbG4wICY9IH4oTUdfRFBfTU9E RV9DRkdfRFBfWDFfTU9ERSB8Cj4gPiBNR19EUF9NT0RFX0NGR19EUF9YMl9NT0RFKTsKPiA+ICAJ CWxuMSAmPSB+KE1HX0RQX01PREVfQ0ZHX0RQX1gxX01PREUgfAo+ID4gTUdfRFBfTU9ERV9DRkdf RFBfWDJfTU9ERSk7Cj4gPiAgCj4gPiAtCQlsYW5lX2luZm8gPSAoSTkxNV9SRUFEKFBPUlRfVFhf REZMRVhEUFNQKSAmCj4gPiAtCQkJICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0 KSkgPj4KPiA+IC0JCQkgICAgRFBfTEFORV9BU1NJR05NRU5UX1NISUZUKHRjX3BvcnQpOwo+ID4g KwkJbGFuZV9pbmZvID0KPiA+IGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfaW5mbyhpbnRlbF9kaWdf cG9ydCk7Cj4gPiAgCj4gPiAgCQlzd2l0Y2ggKGxhbmVfaW5mbykgewo+ID4gIAkJY2FzZSAweDE6 Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMuYwo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5jCj4gPiBpbmRleCAwNzQ4ODIzNWI2N2EuLjNm ZGNmYTJiYmFlZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Rj LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmMKPiA+IEBAIC00Mywx MCArNDMsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRjX3BvcnRfbW9kZV9uYW1lKGVudW0KPiA+ IHRjX3BvcnRfbW9kZSBtb2RlKQo+ID4gIAlyZXR1cm4gbmFtZXNbbW9kZV07Cj4gPiAgfQo+ID4g IAo+ID4gLWludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQpCj4gPiArdTMyIGludGVsX3RjX3BvcnRfZ2V0X2xh bmVfaW5mbyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICB7Cj4gPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4g PiA+YmFzZS5iYXNlLmRldik7Cj4gPiAgCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9y dF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtCj4gPiA+YmFzZS5wb3J0KTsKPiA+ICsJdTMyIGxh bmVfaW5mbyA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCk7Cj4gPiArCj4gPiArCXJldHVy biAobGFuZV9pbmZvICYgRFBfTEFORV9BU1NJR05NRU5UX01BU0sodGNfcG9ydCkpID4+Cj4gPiAr CSAgICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfU0hJRlQodGNfcG9ydCk7Cj4gPiArfQo+ID4gKwo+ ID4gK2ludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LQo+ID4gPmJhc2UuYmFzZS5kZXYpOwo+ ID4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiA+ICAJdTMyIGxhbmVfaW5mbzsKPiA+ICAK PiA+IEBAIC01NSw5ICs2NCw3IEBAIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3Vu dChzdHJ1Y3QKPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgCj4gPiAgCWxh bmVfaW5mbyA9IDA7Cj4gPiAgCXdpdGhfaW50ZWxfZGlzcGxheV9wb3dlcihkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX0RJU1BMQVlfQ09SRSwKPiA+IHdha2VyZWYpCj4gPiAtCQlsYW5lX2luZm8gPSAo STkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmCj4gPiAtCQkJICAgICBEUF9MQU5FX0FTU0lH Tk1FTlRfTUFTSyh0Y19wb3J0KSkgPj4KPiA+IC0JCQkJRFBfTEFORV9BU1NJR05NRU5UX1NISUZU KHRjX3BvcnQpOwo+ID4gKwkJbGFuZV9pbmZvID0gaW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9pbmZv KGRpZ19wb3J0KTsKPiA+ICAKPiA+ICAJc3dpdGNoIChsYW5lX2luZm8pIHsKPiA+ICAJZGVmYXVs dDoKPiA+IEBAIC03NSw2ICs4Miw2OSBAQCBpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVf Y291bnQoc3RydWN0Cj4gPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIAl9Cj4g PiAgfQo+ID4gIAo+ID4gK3N0YXRpYyB2b2lkIHRjX3BvcnRfZml4dXBfbGVnYWN5X2ZsYWcoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+ID4gKmRpZ19wb3J0LAo+ID4gKwkJCQkgICAgICB1MzIg bGl2ZV9zdGF0dXNfbWFzaykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4gPiA+YmFzZS5iYXNlLmRldik7Cj4gPiArCWVu dW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQt Cj4gPiA+YmFzZS5wb3J0KTsKPiA+ICsJdTMyIHZhbGlkX2hwZF9tYXNrID0gZGlnX3BvcnQtPnRj X2xlZ2FjeV9wb3J0ID8KPiA+IEJJVChUQ19QT1JUX0xFR0FDWSkgOgo+ID4gKwkJCQkJCQl+QklU KFRDX1BPUlRfTEUKPiA+IEdBQ1kpOwo+ID4gKwo+ID4gKwlpZiAoIShsaXZlX3N0YXR1c19tYXNr ICYgfnZhbGlkX2hwZF9tYXNrKSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ICsJLyogSWYgbGl2 ZSBzdGF0dXMgbWlzbWF0Y2hlcyB0aGUgVkJUIGZsYWcsIHRydXN0IHRoZSBsaXZlCj4gPiBzdGF0 dXMuICovCj4gPiArCURSTV9FUlJPUigiUG9ydCAlczogbGl2ZSBzdGF0dXMgJTA4eCBtaXNtYXRj aGVzIHRoZSBsZWdhY3kgcG9ydAo+ID4gZmxhZywgZml4IGZsYWdcbiIsCj4gPiArCQkgIHRjX3Bv cnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCksIGxpdmVfc3RhdHVzX21hc2spOwo+ID4gKwo+ID4g KwlkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPSAhZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0Owo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdTMyIHRjX3BvcnRfbGl2ZV9zdGF0dXNfbWFzayhzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQpCj4gPiArewo+ID4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LQo+ID4gPmJhc2Uu YmFzZS5kZXYpOwo+ID4gKwllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMo ZGV2X3ByaXYsIGRpZ19wb3J0LQo+ID4gPmJhc2UucG9ydCk7Cj4gPiArCXUzMiB2YWwgPSBJOTE1 X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApOwo+ID4gKwl1MzIgbWFzayA9IDA7Cj4gPiArCj4gPiAr CWlmICh2YWwgJiBUQ19MSVZFX1NUQVRFX1RCVCh0Y19wb3J0KSkKPiA+ICsJCW1hc2sgfD0gQklU KFRDX1BPUlRfVEJUX0FMVCk7Cj4gPiArCWlmICh2YWwgJiBUQ19MSVZFX1NUQVRFX1RDKHRjX3Bv cnQpKQo+ID4gKwkJbWFzayB8PSBCSVQoVENfUE9SVF9EUF9BTFQpOwo+ID4gKwo+ID4gKwlpZiAo STkxNV9SRUFEKFNERUlTUikgJiBTREVfVENfSE9UUExVR19JQ1AodGNfcG9ydCkpCj4gPiArCQlt YXNrIHw9IEJJVChUQ19QT1JUX0xFR0FDWSk7Cj4gPiArCj4gPiArCS8qIFRoZSBzaW5rIGNhbiBi ZSBjb25uZWN0ZWQgb25seSBpbiBhIHNpbmdsZSBtb2RlLiAqLwo+ID4gKwlpZiAoIVdBUk5fT04o aHdlaWdodDMyKG1hc2spID4gMSkpCj4gPiArCQl0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKGRp Z19wb3J0LCBtYXNrKTsKPiAKPiBUaGUgbWFzayBzaG91bGQgYmUgdXBkYXRlZCBhZnRlciB0aGUg Zml4dXAKCnRjX3BvcnRfZml4dXBfbGVnYWN5X2ZsYWcoKSB3aWxsIG9ubHkgZml4IGRpZ19wb3J0 LT50Y19sZWdhY3lfcG9ydCBiYXNlZApvbiB0aGUgbWFzaywgYnV0IG1hc2sgaXRzZWxmIHdpbGwg cmVtYWluIHRoZSBzYW1lLiAoV2UgdHJ1c3QgdGhlIGxpdmUKc3RhdHVzIGJhc2VkIG1hc2sgd2hh dCBpcyB0aGUgSFcncyBvcGluaW9uIGFib3V0IHdoYXQga2luZCBvZiBzaW5rIGdvdApjb25uZWN0 ZWQuKQoKSWYgaHdlaWdodDMyKG1hc2spPjEgd2UgY2FuJ3QgcmVhbGx5IGRvIGFueXRoaW5nLCBp dCdkIGJlIHNvbWUgSFcgaXNzdWUKd2hpY2ggd2UgaGF2ZW4ndCBzZWVuIHNvIGZhciBhbmQgdGhh dCdzIGhhbmRsZWQgYW55d2F5IHdoZW5ldmVyCmNvbnZlcnRpbmcgdGhlIG1hc2sgdG8gdGNfbW9k ZSBieSBhIHByaW9yaXR5IHNjaGVtZQoodGNfbW9kZT1mbHMobWFzayktMSkuCgo+IAo+ID4gKwo+ ID4gKwlyZXR1cm4gbWFzazsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgaWNsX3RjX3Bo eV9zdGF0dXNfY29tcGxldGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+ID4gKmRpZ19wb3J0 KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkaWdfcG9ydC0KPiA+ID5iYXNlLmJhc2UuZGV2KTsKPiA+ICsJZW51bSB0Y19wb3J0IHRjX3Bv cnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0KPiA+ID5iYXNlLnBvcnQp Owo+ID4gKwo+ID4gKwlyZXR1cm4gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFBNUykgJgo+ID4g KwkgICAgICAgRFBfUEhZX01PREVfU1RBVFVTX0NPTVBMRVRFRCh0Y19wb3J0KTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIHZvaWQgaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQKPiA+ICpkaWdfcG9ydCwKPiA+ICsJCQkJICAgICBib29sIGVuYWJsZSkK PiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGlnX3BvcnQtCj4gPiA+YmFzZS5iYXNlLmRldik7Cj4gPiArCWVudW0gdGNfcG9ydCB0Y19wb3J0 ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtCj4gPiA+YmFzZS5wb3J0KTsK PiA+ICsJdTMyIHZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBDU1NTKTsKPiA+ICsKPiA+ ICsJdmFsICY9IH5EUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNfcG9ydCk7Cj4gPiArCWlm ICghZW5hYmxlKQo+ID4gKwkJdmFsIHw9IERQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0Y19w b3J0KTsKPiAKPiBXaHkgY29tcGxldGUgcmVtb3ZlIHRoZSBvcHRpbWl6YXRpb25zPwo+IFlvdSBj b3VsZCBkbzoKPiAKPiBvbGRfdmFsID0gdmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUENT U1MpOwo+IHZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwo+IAo+ IGlmICghZW5hYmxlKQo+IAl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3Bv cnQpOwo+IAo+IGlmICh2YWwgIT0gb2xkX3ZhbCkKPiAJSTkxNV9XUklURShQT1JUX1RYX0RGTEVY RFBDU1NTLCB2YWwpOwoKWW91IGNvdWxkIG9wdGltaXplIHJlZ2lzdGVyIHdyaXRlcyB3aGVyZSB0 aGVyZSBpcyBhIHJlcXVpcmVtZW50IGZvciBpdCwKYnV0IHRoZXJlIGlzbid0IGFueSBuZWVkIGZv ciB0aGF0IGhlcmUuCgo+ID4gKwo+ID4gKwlJOTE1X1dSSVRFKFBPUlRfVFhfREZMRVhEUENTU1Ms IHZhbCk7Cj4gPiArfQo+ID4gKwo+ID4gIC8qCj4gPiAgICogVGhpcyBmdW5jdGlvbiBpbXBsZW1l bnRzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBDb25uZWN0IEZsb3cKPiA+IGRlc2NyaWJlZCBieSBv dXIKPiA+ICAgKiBzcGVjaWZpY2F0aW9uLCBHZW4xMSBUeXBlQyBQcm9ncmFtbWluZyBjaGFwdGVy LiBUaGUgcmVzdCBvZiB0aGUKPiA+IGZsb3cgKHJlYWRpbmcKPiA+IEBAIC0xMDAsMzYgKzE3MCwz MSBAQCBzdGF0aWMgYm9vbCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0Cj4gPiBpbnRlbF9kaWdp dGFsX3BvcnQgKmRpZ19wb3J0KQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0KPiA+ID5iYXNlLmJhc2UuZGV2KTsKPiA+ICAJ ZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9y dC0KPiA+ID5iYXNlLnBvcnQpOwo+ID4gLQl1MzIgdmFsOwo+ID4gKwl1MzIgbGl2ZV9zdGF0dXNf bWFzazsKPiA+ICAKPiA+ICAJaWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfTEVHQUNZ ICYmCj4gPiAgCSAgICBkaWdfcG9ydC0+dGNfbW9kZSAhPSBUQ19QT1JUX0RQX0FMVCkKPiA+ICAJ CXJldHVybiB0cnVlOwo+ID4gIAo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQ UE1TKTsKPiA+IC0JaWYgKCEodmFsICYgRFBfUEhZX01PREVfU1RBVFVTX0NPTVBMRVRFRCh0Y19w b3J0KSkpIHsKPiA+ICsJaWYgKCFpY2xfdGNfcGh5X3N0YXR1c19jb21wbGV0ZShkaWdfcG9ydCkp IHsKPiA+ICAJCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IFBIWSBub3QgcmVhZHlcbiIsCj4gPiAg CQkJICAgICAgdGNfcG9ydF9uYW1lKGRldl9wcml2LCB0Y19wb3J0KSk7Cj4gPiAgCQlXQVJOX09O KGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCk7Cj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCX0K PiA+ICAKPiA+IC0JLyoKPiA+IC0JICogVGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIG1hbnkg dGltZXMgaW4gYSByb3cgd2l0aG91dCBhbgo+ID4gSFBEIGV2ZW50Cj4gPiAtCSAqIGluIGJldHdl ZW4sIHNvIHRyeSB0byBhdm9pZCB0aGUgd3JpdGUgd2hlbiB3ZSBjYW4uCj4gPiAtCSAqLwo+ID4g LQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQQ1NTUyk7Cj4gPiAtCWlmICghKHZhbCAm IERQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0Y19wb3J0KSkpIHsKPiA+IC0JCXZhbCB8PSBE UF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNfcG9ydCk7Cj4gPiAtCQlJOTE1X1dSSVRFKFBP UlRfVFhfREZMRVhEUENTU1MsIHZhbCk7Cj4gPiAtCX0KPiA+ICsJaWNsX3RjX3BoeV9zZXRfc2Fm ZV9tb2RlKGRpZ19wb3J0LCBmYWxzZSk7Cj4gPiArCj4gPiArCWlmIChkaWdfcG9ydC0+dGNfbW9k ZSA9PSBUQ19QT1JUX0xFR0FDWSkKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwo+ID4gKwlsaXZl X3N0YXR1c19tYXNrID0gdGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKGRpZ19wb3J0KTsKPiA+ICAK PiA+ICAJLyoKPiA+ICAJICogTm93IHdlIGhhdmUgdG8gcmUtY2hlY2sgdGhlIGxpdmUgc3RhdGUs IGluIGNhc2UgdGhlIHBvcnQKPiA+IHJlY2VudGx5Cj4gPiAgCSAqIGJlY2FtZSBkaXNjb25uZWN0 ZWQuIE5vdCBuZWNlc3NhcnkgZm9yIGxlZ2FjeSBtb2RlLgo+ID4gIAkgKi8KPiA+IC0JaWYgKGRp Z19wb3J0LT50Y19tb2RlID09IFRDX1BPUlRfRFBfQUxUICYmCj4gPiAtCSAgICAhKEk5MTVfUkVB RChQT1JUX1RYX0RGTEVYRFBTUCkgJgo+ID4gVENfTElWRV9TVEFURV9UQyh0Y19wb3J0KSkpIHsK PiA+ICsJaWYgKCEobGl2ZV9zdGF0dXNfbWFzayAmIEJJVChUQ19QT1JUX0RQX0FMVCkpKSB7Cj4g Cj4gV2hlbiBsaXZlIHN0YXR1cyBpcyBUQ19QT1JUX1RCVF9BTFQgaXQgd2lsbCBjYXVzZSB0aGUg InN1ZGRlbgo+IGRpc2Nvbm5lY3QiIHRvIGJlIHByaW50ZWQgZWFjaCB0aW1lCgpUaGF0IGNhbid0 IHJlYWxseSBoYXBwZW4uIFRoZXJlIHdhcyBmaXJzdCBhIERQLWFsdCBIUEQsIGFmdGVyIHdoaWNo CmljbF91cGRhdGVfdGNfcG9ydF90eXBlKCkgc2V0IHRjX21vZGUgPSBUQ19QT1JUX0RQX0FMVC4g VGhlIG9ubHkgcmVhc29uCmZvciB0aGlzIGxpdmUgc3RhdHVzIGNoZWNrIGlzIHRvIGRldGVjdCBh IHF1aWNrIHVucGx1ZyBvZiB0aGUgRFAtYWx0CnNpbmsgKGFzIHJlcXVpcmVkIGJ5IEJTcGVjKSwg YWZ0ZXIgd2hpY2ggbGl2ZSBzdGF0dXMgd2lsbCBiZSAwIGhlcmUuCgo+IGFsdGhvdWdoIGljbF90 Y19waHlfZGlzY29ubmVjdCgpIHdpbGwgZG8gbm90aGluZyBmb3IgVEJULgoKV2UnbGwgaGF2ZSBo ZXJlIHRjX21vZGUgPSBUQ19QT1JUX0RQX0FMVCwgaW4gd2hpY2ggY2FzZQppY2xfdGNfcGh5X2Rp c2Nvbm5lY3QoKSB3aWxsIGhhdmUgdG8gc3dpdGNoIGJhY2sgdG8gc2FmZSBtb2RlIChzaW5jZQph Ym92ZSB3ZSBzd2l0Y2hlZCB0byB1bnNhZmUgbW9kZSBhbHJlYWR5KS4KCk5vdGUgdGhhdCB0aGVy ZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyIGhlcmUgd3J0LiB0aGUgY3VycmVudCBjb2RlLgoK PiAKPiA+ICAJCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IFBIWSBzdWRkZW4gZGlzY29ubmVjdFxu IiwKPiA+ICAJCQkgICAgICB0Y19wb3J0X25hbWUoZGV2X3ByaXYsIHRjX3BvcnQpKTsKPiA+ICAJ CWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9ydCk7Cj4gPiBAQCAtMTQ4LDQ0ICsyMTMsMzYg QEAgdm9pZCBpY2xfdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0Cj4gPiBpbnRlbF9kaWdpdGFsX3Bv cnQgKmRpZ19wb3J0KQo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRpZ19wb3J0LQo+ID4gPmJhc2UuYmFzZS5kZXYpOwo+ID4gIAllbnVtIHRjX3BvcnQg dGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LQo+ID4gPmJhc2Uu cG9ydCk7Cj4gPiAgCj4gPiAtCS8qCj4gPiAtCSAqIFRCVCBkaXNjb25uZWN0aW9uIGZsb3cgaXMg cmVhZCB0aGUgbGl2ZSBzdGF0dXMsIHdoYXQgd2FzCj4gPiBkb25lIGluCj4gPiAtCSAqIGNhbGxl 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+ICAJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCksCj4gPiAg CQkgICAgICB0Y19wb3J0X21vZGVfbmFtZShkaWdfcG9ydC0+dGNfbW9kZSkpOwo+ID4gLQo+ID4g LQlkaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiA+ICB9Cj4gPiAgCj4gPiAg c3RhdGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPiA+ICpkZXZfcHJpdiwKPiA+ICAJCQkJICAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQK PiA+ICppbnRlbF9kaWdfcG9ydCwKPiA+IC0JCQkJICAgIGJvb2wgaXNfbGVnYWN5LCBib29sIGlz X3R5cGVjLCBib29sCj4gPiBpc190YnQpCj4gPiArCQkJCSAgICB1MzIgbGl2ZV9zdGF0dXNfbWFz aykKPiA+ICB7Cj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9y dDsKPiA+ICAJZW51bSB0Y19wb3J0X21vZGUgb2xkX21vZGUgPSBpbnRlbF9kaWdfcG9ydC0+dGNf bW9kZTsKPiA+ICAKPiA+IC0JV0FSTl9PTihpc19sZWdhY3kgKyBpc190eXBlYyArIGlzX3RidCAh PSAxKTsKPiA+IC0KPiA+IC0JaWYgKGlzX2xlZ2FjeSkKPiA+IC0JCWludGVsX2RpZ19wb3J0LT50 Y19tb2RlID0gVENfUE9SVF9MRUdBQ1k7Cj4gPiAtCWVsc2UgaWYgKGlzX3R5cGVjKQo+ID4gLQkJ aW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX0RQX0FMVDsKPiA+IC0JZWxzZSBpZiAo aXNfdGJ0KQo+ID4gLQkJaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7 Cj4gPiAtCWVsc2UKPiA+ICsJaWYgKCFsaXZlX3N0YXR1c19tYXNrKQo+ID4gIAkJcmV0dXJuOwo+ ID4gIAo+ID4gKwlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IGZscyhsaXZlX3N0YXR1c19tYXNr KSAtIDE7Cj4gPiArCj4gPiAgCWlmIChvbGRfbW9kZSAhPSBpbnRlbF9kaWdfcG9ydC0+dGNfbW9k ZSkKPiA+ICAJCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IHBvcnQgaGFzIG1vZGUgJXNcbiIsCj4g PiAgCQkJICAgICAgdGNfcG9ydF9uYW1lKGRldl9wcml2LAo+ID4gQEAgLTIwNyw0MCArMjY0LDE5 IEBAIHN0YXRpYyB2b2lkIGljbF91cGRhdGVfdGNfcG9ydF90eXBlKHN0cnVjdAo+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgYm9vbCBpbnRlbF90Y19wb3J0X2Nvbm5lY3RlZChz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtCj4gPiA+YmFzZS5i YXNlLmRldik7Cj4gPiAtCWVudW0gcG9ydCBwb3J0ID0gZGlnX3BvcnQtPmJhc2UucG9ydDsKPiA+ IC0JZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBwb3J0 KTsKPiA+IC0JYm9vbCBpc19sZWdhY3ksIGlzX3R5cGVjLCBpc190YnQ7Cj4gPiAtCXUzMiBkcHNw Owo+ID4gLQo+ID4gLQkvKgo+ID4gLQkgKiBDb21wbGFpbiBpZiB3ZSBnb3QgYSBsZWdhY3kgcG9y dCBIUEQsIGJ1dCBWQlQgZGlkbid0IG1hcmsKPiA+IHRoZSBwb3J0IGFzCj4gPiAtCSAqIGxlZ2Fj eS4gVHJlYXQgdGhlIHBvcnQgYXMgbGVnYWN5IGZyb20gbm93IG9uLgo+ID4gLQkgKi8KPiA+IC0J aWYgKCFkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgJiYKPiA+IC0JICAgIEk5MTVfUkVBRChTREVJ U1IpICYgU0RFX1RDX0hPVFBMVUdfSUNQKHRjX3BvcnQpKSB7Cj4gPiAtCQlEUk1fRVJST1IoIlBv cnQgJXM6IFZCVCBpbmNvcnJlY3RseSBjbGFpbXMgcG9ydCBpcyBub3QKPiA+IFR5cGVDIGxlZ2Fj eVxuIiwKPiA+IC0JCQkgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCkpOwo+ID4gLQkJ ZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0ID0gdHJ1ZTsKPiA+IC0JfQo+ID4gLQlpc19sZWdhY3kg PSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7Cj4gPiArCXUzMiBsaXZlX3N0YXR1c19tYXNrID0g dGNfcG9ydF9saXZlX3N0YXR1c19tYXNrKGRpZ19wb3J0KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJ ICogVGhlIHNwZWMgc2F5cyB3ZSBzaG91bGRuJ3QgYmUgdXNpbmcgdGhlIElTUiBiaXRzIGZvcgo+ ID4gZGV0ZWN0aW5nCj4gPiAgCSAqIGJldHdlZW4gVEMgYW5kIFRCVC4gV2Ugc2hvdWxkIHVzZSBE RkxFWERQU1AuCj4gPiAgCSAqLwo+ID4gLQlkcHNwID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhE UFNQKTsKPiA+IC0JaXNfdHlwZWMgPSBkcHNwICYgVENfTElWRV9TVEFURV9UQyh0Y19wb3J0KTsK PiA+IC0JaXNfdGJ0ID0gZHBzcCAmIFRDX0xJVkVfU1RBVEVfVEJUKHRjX3BvcnQpOwo+ID4gLQo+ ID4gLQlpZiAoIWlzX2xlZ2FjeSAmJiAhaXNfdHlwZWMgJiYgIWlzX3RidCkgewo+ID4gKwlpZiAo IWxpdmVfc3RhdHVzX21hc2sgJiYgIWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCkgewo+IAo+IFNv IG5vdyBpdCB3aWxsIGtlZXAgbGVnYWN5IHBvcnQgYXMgdW5zYWZlIGV2ZW4gd2hlbiBkaXNjb25u ZWN0ZWQuCj4gTWF5YmUgd29ydGggbWVudGlvbiBpbiBjb21taXQgbWVzc2FnZS4KClRoYXQgaXMg aG93IGl0IHdhcyBhbHNvIGJlZm9yZSwgc2luY2UgYWJvdmUgd2UgaGFkCgoJaXNfbGVnYWN5ID0g ZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0CgpTbyBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgoKPiAK PiA+ICAJCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9ydCk7Cj4gPiAgCj4gPiAgCQlyZXR1 cm4gZmFsc2U7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoZGV2 X3ByaXYsIGRpZ19wb3J0LCBpc19sZWdhY3ksCj4gPiBpc190eXBlYywKPiA+IC0JCQkJaXNfdGJ0 KTsKPiA+IC0KPiA+ICsJaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoZGV2X3ByaXYsIGRpZ19wb3J0 LCBsaXZlX3N0YXR1c19tYXNrKTsKPiA+ICAJaWYgKCFpY2xfdGNfcGh5X2Nvbm5lY3QoZGlnX3Bv cnQpKQo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3RjLmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dGMuaAo+ID4gaW5kZXggOTRjNjJhYzRhMTYyLi5lOTM3ZjUzMjY5NTkgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90Yy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF90Yy5oCj4gPiBAQCAtOCw2ICs4LDcgQEAgc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydDsKPiA+ICB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiAgCj4gPiAgYm9vbCBpbnRlbF90Y19wb3J0X2Nvbm5l Y3RlZChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7Cj4gPiArdTMyIGludGVs X3RjX3BvcnRfZ2V0X2xhbmVfaW5mbyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGln X3BvcnQpOwo+ID4gIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3VudChzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqZGlnX3BvcnQpOwo+ID4gIAo+ID4gICNlbmRpZiAvKiBf X0lOVEVMX1RDX0hfXyAqLwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng=