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: Thu, 6 Jun 2019 12:19:37 +0300 Message-ID: <20190606091937.GB4301@ideak-desk.fi.intel.com> References: <20190604145826.16424-1-imre.deak@intel.com> <20190604145826.16424-10-imre.deak@intel.com> <87muiv14o7.fsf@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 28CC1893ED for ; Thu, 6 Jun 2019 09:19:41 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87muiv14o7.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMDYsIDIwMTkgYXQgMTE6NDc6MjBBTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAwNCBKdW4gMjAxOSwgSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29t PiB3cm90ZToKPiA+IEZhY3RvciBvdXQgaGVscGVycyByZWFkaW5nL3BhcnNpbmcgdGhlIFR5cGVD IHNwZWNpZmljIHJlZ2lzdGVycywgbWFraW5nCj4gPiBjdXJyZW50IHVzZXJzIG9mIHRoZW0gY2xl YXJlciBhbmQgbGV0dGluZyB1cyB1c2UgdGhlbSBsYXRlci4KPiA+Cj4gPiBXaGlsZSBhdCBpdCBh bHNvOgo+ID4gLSBTaW1wbGlmeSBpY2xfdGNfcGh5X2Nvbm5lY3QoKSB3aXRoIGFuIGVhcmx5IHJl dHVybiBpbiBsZWdhY3kgbW9kZS4KPiA+IC0gU2ltcGxpZnkgdGhlIGxpdmUgc3RhdHVzIGNoZWNr IHVzaW5nIG9uZSBiaXRtYXNrIGZvciBhbGwgSFBEIGJpdHMuCj4gPiAtIFJlbW92ZSBhIG1pY3Jv LW9wdGltaXNhdGlvbiBvZiB0aGUgcmVwZWF0ZWQgc2FmZS1tb2RlIGNsZWFyaW5nLgo+ID4gLSBN YWtlIHN1cmUgd2UgZml4IHRoZSBsZWdhY3kgcG9ydCBmbGFnIGluIGFsbCBjYXNlcy4KPiA+Cj4g PiBFeGNlcHQgZm9yIHRoZSBsYXN0IHR3bywgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgo+ID4KPiA+ IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KPiA+IENj OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiBDYzogUGF1bG8gWmFu b25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYyB8ICAgNSArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Rj LmMgIHwgMTY2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF90Yy5oICB8ICAgMSArCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDMg aW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMKPiA+IGluZGV4IDhmMjIzZDQ4ZDU2Mi4uZDIzNjgzOWJlZTE5IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBAQCAtMjk4Myw3ICsyOTgzLDYgQEAgc3RhdGljIHZv aWQgaWNsX3Byb2dyYW1fbWdfZHBfbW9kZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gIAllbnVtIHBv cnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gPiAtCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiAgCXUzMiBsbjAs IGxuMSwgbGFuZV9pbmZvOwo+ID4gIAo+ID4gIAlpZiAoaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUg PT0gVENfUE9SVF9UQlRfQUxUKQo+ID4gQEAgLTI5OTcsOSArMjk5Niw3IEBAIHN0YXRpYyB2b2lk IGljbF9wcm9ncmFtX21nX2RwX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQpCj4gPiAgCQlsbjAgJj0gfihNR19EUF9NT0RFX0NGR19EUF9YMV9NT0RFIHwgTUdf RFBfTU9ERV9DRkdfRFBfWDJfTU9ERSk7Cj4gPiAgCQlsbjEgJj0gfihNR19EUF9NT0RFX0NGR19E UF9YMV9NT0RFIHwgTUdfRFBfTU9ERV9DRkdfRFBfWDJfTU9ERSk7Cj4gPiAgCj4gPiAtCQlsYW5l X2luZm8gPSAoSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmCj4gPiAtCQkJICAgICBEUF9M QU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0KSkgPj4KPiA+IC0JCQkgICAgRFBfTEFORV9BU1NJ R05NRU5UX1NISUZUKHRjX3BvcnQpOwo+ID4gKwkJbGFuZV9pbmZvID0gaW50ZWxfdGNfcG9ydF9n ZXRfbGFuZV9pbmZvKGludGVsX2RpZ19wb3J0KTsKPiA+ICAKPiA+ICAJCXN3aXRjaCAobGFuZV9p bmZvKSB7Cj4gPiAgCQljYXNlIDB4MToKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF90Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdGMuYwo+ID4gaW5k ZXggMDc0ODgyMzViNjdhLi4zZmRjZmEyYmJhZWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF90Yy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF90Yy5jCj4gPiBAQCAtNDMsMTAgKzQzLDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyICp0Y19wb3J0 X21vZGVfbmFtZShlbnVtIHRjX3BvcnRfbW9kZSBtb2RlKQo+ID4gIAlyZXR1cm4gbmFtZXNbbW9k ZV07Cj4gPiAgfQo+ID4gIAo+ID4gLWludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9jb3Vu dChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICt1MzIgaW50ZWxfdGNf cG9ydF9nZXRfbGFuZV9pbmZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KQo+ ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk aWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiAgCWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50 ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2UucG9ydCk7Cj4gPiArCXUzMiBs YW5lX2luZm8gPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApOwo+IAo+IFBsZWFzZSBkb24n dCBkbyByZWdpc3RlciByZWFkcyBpbiBkZWNsYXJhdGlvbnMuIERpdHRvIGJlbG93LgoKT2suCgo+ IAo+ID4gKwo+ID4gKwlyZXR1cm4gKGxhbmVfaW5mbyAmIERQX0xBTkVfQVNTSUdOTUVOVF9NQVNL KHRjX3BvcnQpKSA+Pgo+ID4gKwkgICAgICAgRFBfTEFORV9BU1NJR05NRU5UX1NISUZUKHRjX3Bv cnQpOwo+ID4gK30KPiA+ICsKPiA+ICtpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291 bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiArewo+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJh c2UuZGV2KTsKPiA+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gPiAgCXUzMiBsYW5lX2lu Zm87Cj4gPiAgCj4gPiBAQCAtNTUsOSArNjQsNyBAQCBpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4 X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiAgCj4g PiAgCWxhbmVfaW5mbyA9IDA7Cj4gPiAgCXdpdGhfaW50ZWxfZGlzcGxheV9wb3dlcihkZXZfcHJp diwgUE9XRVJfRE9NQUlOX0RJU1BMQVlfQ09SRSwgd2FrZXJlZikKPiA+IC0JCWxhbmVfaW5mbyA9 IChJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQU1ApICYKPiA+IC0JCQkgICAgIERQX0xBTkVfQVNT SUdOTUVOVF9NQVNLKHRjX3BvcnQpKSA+Pgo+ID4gLQkJCQlEUF9MQU5FX0FTU0lHTk1FTlRfU0hJ RlQodGNfcG9ydCk7Cj4gPiArCQlsYW5lX2luZm8gPSBpbnRlbF90Y19wb3J0X2dldF9sYW5lX2lu Zm8oZGlnX3BvcnQpOwo+ID4gIAo+ID4gIAlzd2l0Y2ggKGxhbmVfaW5mbykgewo+ID4gIAlkZWZh dWx0Ogo+ID4gQEAgLTc1LDYgKzgyLDY5IEBAIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFu ZV9jb3VudChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICAJfQo+ID4g IH0KPiA+ICAKPiA+ICtzdGF0aWMgdm9pZCB0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0LAo+ID4gKwkJCQkgICAgICB1MzIgbGl2ZV9z dGF0dXNfbWFzaykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gKwllbnVtIHRjX3BvcnQg dGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQp Owo+ID4gKwl1MzIgdmFsaWRfaHBkX21hc2sgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPyBC SVQoVENfUE9SVF9MRUdBQ1kpIDoKPiA+ICsJCQkJCQkJfkJJVChUQ19QT1JUX0xFR0FDWSk7Cj4g PiArCj4gPiArCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiB+dmFsaWRfaHBkX21hc2spKQo+ID4g KwkJcmV0dXJuOwo+ID4gKwo+ID4gKwkvKiBJZiBsaXZlIHN0YXR1cyBtaXNtYXRjaGVzIHRoZSBW QlQgZmxhZywgdHJ1c3QgdGhlIGxpdmUgc3RhdHVzLiAqLwo+ID4gKwlEUk1fRVJST1IoIlBvcnQg JXM6IGxpdmUgc3RhdHVzICUwOHggbWlzbWF0Y2hlcyB0aGUgbGVnYWN5IHBvcnQgZmxhZywgZml4 IGZsYWdcbiIsCj4gPiArCQkgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNfcG9ydCksIGxpdmVf c3RhdHVzX21hc2spOwo+ID4gKwo+ID4gKwlkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPSAhZGln X3BvcnQtPnRjX2xlZ2FjeV9wb3J0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdTMyIHRjX3Bv cnRfbGl2ZV9zdGF0dXNfbWFzayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkK PiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYpOwo+ID4gKwllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGlu dGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LT5iYXNlLnBvcnQpOwo+ID4gKwl1MzIg dmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKTsKPiA+ICsJdTMyIG1hc2sgPSAwOwo+ 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 dCk7Cj4gPiArCXUzMiB2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQQ1NTUyk7Cj4gPiAr Cj4gPiArCXZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwo+ID4g KwlpZiAoIWVuYWJsZSkKPiA+ICsJCXZhbCB8PSBEUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUo dGNfcG9ydCk7Cj4gPiArCj4gPiArCUk5MTVfV1JJVEUoUE9SVF9UWF9ERkxFWERQQ1NTUywgdmFs KTsKPiA+ICt9Cj4gPiArCj4gPiAgLyoKPiA+ICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMg dGhlIGZpcnN0IHBhcnQgb2YgdGhlIENvbm5lY3QgRmxvdyBkZXNjcmliZWQgYnkgb3VyCj4gPiAg ICogc3BlY2lmaWNhdGlvbiwgR2VuMTEgVHlwZUMgUHJvZ3JhbW1pbmcgY2hhcHRlci4gVGhlIHJl c3Qgb2YgdGhlIGZsb3cgKHJlYWRpbmcKPiA+IEBAIC0xMDAsMzYgKzE3MCwzMSBAQCBzdGF0aWMg Ym9vbCBpY2xfdGNfcGh5X2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3Bv cnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICAJZW51bSB0Y19wb3J0IHRjX3BvcnQg PSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0+YmFzZS5wb3J0KTsKPiA+IC0J dTMyIHZhbDsKPiA+ICsJdTMyIGxpdmVfc3RhdHVzX21hc2s7Cj4gPiAgCj4gPiAgCWlmIChkaWdf cG9ydC0+dGNfbW9kZSAhPSBUQ19QT1JUX0xFR0FDWSAmJgo+ID4gIAkgICAgZGlnX3BvcnQtPnRj X21vZGUgIT0gVENfUE9SVF9EUF9BTFQpCj4gPiAgCQlyZXR1cm4gdHJ1ZTsKPiA+ICAKPiA+IC0J dmFsID0gSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFBNUyk7Cj4gPiAtCWlmICghKHZhbCAmIERQ X1BIWV9NT0RFX1NUQVRVU19DT01QTEVURUQodGNfcG9ydCkpKSB7Cj4gPiArCWlmICghaWNsX3Rj X3BoeV9zdGF0dXNfY29tcGxldGUoZGlnX3BvcnQpKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJQ b3J0ICVzOiBQSFkgbm90IHJlYWR5XG4iLAo+ID4gIAkJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZf cHJpdiwgdGNfcG9ydCkpOwo+ID4gIAkJV0FSTl9PTihkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQp Owo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCS8qCj4gPiAtCSAqIFRo aXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBtYW55IHRpbWVzIGluIGEgcm93IHdpdGhvdXQgYW4g SFBEIGV2ZW50Cj4gPiAtCSAqIGluIGJldHdlZW4sIHNvIHRyeSB0byBhdm9pZCB0aGUgd3JpdGUg d2hlbiB3ZSBjYW4uCj4gPiAtCSAqLwo+ID4gLQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxF WERQQ1NTUyk7Cj4gPiAtCWlmICghKHZhbCAmIERQX1BIWV9NT0RFX1NUQVRVU19OT1RfU0FGRSh0 Y19wb3J0KSkpIHsKPiA+IC0JCXZhbCB8PSBEUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNf cG9ydCk7Cj4gPiAtCQlJOTE1X1dSSVRFKFBPUlRfVFhfREZMRVhEUENTU1MsIHZhbCk7Cj4gPiAt CX0KPiA+ICsJaWNsX3RjX3BoeV9zZXRfc2FmZV9tb2RlKGRpZ19wb3J0LCBmYWxzZSk7Cj4gPiAr Cj4gPiArCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0xFR0FDWSkKPiA+ICsJCXJl dHVybiB0cnVlOwo+ID4gKwo+ID4gKwlsaXZlX3N0YXR1c19tYXNrID0gdGNfcG9ydF9saXZlX3N0 YXR1c19tYXNrKGRpZ19wb3J0KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogTm93IHdlIGhhdmUg dG8gcmUtY2hlY2sgdGhlIGxpdmUgc3RhdGUsIGluIGNhc2UgdGhlIHBvcnQgcmVjZW50bHkKPiA+ ICAJICogYmVjYW1lIGRpc2Nvbm5lY3RlZC4gTm90IG5lY2Vzc2FyeSBmb3IgbGVnYWN5IG1vZGUu Cj4gPiAgCSAqLwo+ID4gLQlpZiAoZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9SVF9EUF9BTFQg JiYKPiA+IC0JICAgICEoSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmIFRDX0xJVkVfU1RB VEVfVEModGNfcG9ydCkpKSB7Cj4gPiArCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiBCSVQoVENf UE9SVF9EUF9BTFQpKSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiUG9ydCAlczogUEhZIHN1ZGRl biBkaXNjb25uZWN0XG4iLAo+ID4gIAkJCSAgICAgIHRjX3BvcnRfbmFtZShkZXZfcHJpdiwgdGNf cG9ydCkpOwo+ID4gIAkJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRpZ19wb3J0KTsKPiA+IEBAIC0x NDgsNDQgKzIxMywzNiBAQCB2b2lkIGljbF90Y19waHlfZGlzY29ubmVjdChzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiAgCWVudW0gdGNf cG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtPmJhc2Uu cG9ydCk7Cj4gPiAgCj4gPiAtCS8qCj4gPiAtCSAqIFRCVCBkaXNjb25uZWN0aW9uIGZsb3cgaXMg cmVhZCB0aGUgbGl2ZSBzdGF0dXMsIHdoYXQgd2FzIGRvbmUgaW4KPiA+IC0JICogY2FsbGVyLgo+ ID4gLQkgKi8KPiA+IC0JaWYgKGRpZ19wb3J0LT50Y19tb2RlID09IFRDX1BPUlRfRFBfQUxUIHx8 Cj4gPiAtCSAgICBkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0xFR0FDWSkgewo+ID4gLQkJ dTMyIHZhbDsKPiA+IC0KPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBDU1NT KTsKPiA+IC0JCXZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOwo+ ID4gLQkJSTkxNV9XUklURShQT1JUX1RYX0RGTEVYRFBDU1NTLCB2YWwpOwo+ID4gKwlzd2l0Y2gg KGRpZ19wb3J0LT50Y19tb2RlKSB7Cj4gPiArCWNhc2UgVENfUE9SVF9MRUdBQ1k6Cj4gPiArCWNh c2UgVENfUE9SVF9EUF9BTFQ6Cj4gPiArCQlpY2xfdGNfcGh5X3NldF9zYWZlX21vZGUoZGlnX3Bv cnQsIHRydWUpOwo+ID4gKwkJZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JUX1RCVF9BTFQ7Cj4g PiArCQlicmVhazsKPiA+ICsJY2FzZSBUQ19QT1JUX1RCVF9BTFQ6Cj4gPiArCQkvKiBOb3RoaW5n IHRvIGRvLCB3ZSBzdGF5IGluIFRCVC1hbHQgbW9kZSAqLwo+ID4gKwkJYnJlYWs7Cj4gPiArCWRl ZmF1bHQ6Cj4gPiArCQlNSVNTSU5HX0NBU0UoZGlnX3BvcnQtPnRjX21vZGUpOwo+ID4gIAl9Cj4g PiAgCj4gPiAgCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IG1vZGUgJXMgZGlzY29ubmVjdGVkXG4i LAo+ID4gIAkJICAgICAgdGNfcG9ydF9uYW1lKGRldl9wcml2LCB0Y19wb3J0KSwKPiA+ICAJCSAg ICAgIHRjX3BvcnRfbW9kZV9uYW1lKGRpZ19wb3J0LT50Y19tb2RlKSk7Cj4gPiAtCj4gPiAtCWRp Z19wb3J0LT50Y19tb2RlID0gVENfUE9SVF9UQlRfQUxUOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0 aWMgdm9pZCBpY2xfdXBkYXRlX3RjX3BvcnRfdHlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiAgCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwKPiA+IC0JCQkJICAgIGJvb2wgaXNfbGVnYWN5LCBib29sIGlzX3R5cGVjLCBib29s IGlzX3RidCkKPiA+ICsJCQkJICAgIHUzMiBsaXZlX3N0YXR1c19tYXNrKQo+ID4gIHsKPiA+ICAJ ZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gIAllbnVtIHRj X3BvcnRfbW9kZSBvbGRfbW9kZSA9IGludGVsX2RpZ19wb3J0LT50Y19tb2RlOwo+ID4gIAo+ID4g LQlXQVJOX09OKGlzX2xlZ2FjeSArIGlzX3R5cGVjICsgaXNfdGJ0ICE9IDEpOwo+ID4gLQo+ID4g LQlpZiAoaXNfbGVnYWN5KQo+ID4gLQkJaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPSBUQ19QT1JU X0xFR0FDWTsKPiA+IC0JZWxzZSBpZiAoaXNfdHlwZWMpCj4gPiAtCQlpbnRlbF9kaWdfcG9ydC0+ dGNfbW9kZSA9IFRDX1BPUlRfRFBfQUxUOwo+ID4gLQllbHNlIGlmIChpc190YnQpCj4gPiAtCQlp bnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsKPiA+IC0JZWxzZQo+ID4g KwlpZiAoIWxpdmVfc3RhdHVzX21hc2spCj4gPiAgCQlyZXR1cm47Cj4gPiAgCj4gPiArCWludGVs X2RpZ19wb3J0LT50Y19tb2RlID0gZmxzKGxpdmVfc3RhdHVzX21hc2spIC0gMTsKPiA+ICsKPiA+ ICAJaWYgKG9sZF9tb2RlICE9IGludGVsX2RpZ19wb3J0LT50Y19tb2RlKQo+ID4gIAkJRFJNX0RF QlVHX0tNUygiUG9ydCAlczogcG9ydCBoYXMgbW9kZSAlc1xuIiwKPiA+ICAJCQkgICAgICB0Y19w b3J0X25hbWUoZGV2X3ByaXYsCj4gPiBAQCAtMjA3LDQwICsyNjQsMTkgQEAgc3RhdGljIHZvaWQg aWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gIGJvb2wgaW50ZWxfdGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqZGlnX3BvcnQpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+IC0JZW51bSBwb3J0 IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gLQllbnVtIHRjX3BvcnQgdGNfcG9ydCA9 IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIHBvcnQpOwo+ID4gLQlib29sIGlzX2xlZ2FjeSwg aXNfdHlwZWMsIGlzX3RidDsKPiA+IC0JdTMyIGRwc3A7Cj4gPiAtCj4gPiAtCS8qCj4gPiAtCSAq IENvbXBsYWluIGlmIHdlIGdvdCBhIGxlZ2FjeSBwb3J0IEhQRCwgYnV0IFZCVCBkaWRuJ3QgbWFy ayB0aGUgcG9ydCBhcwo+ID4gLQkgKiBsZWdhY3kuIFRyZWF0IHRoZSBwb3J0IGFzIGxlZ2FjeSBm cm9tIG5vdyBvbi4KPiA+IC0JICovCj4gPiAtCWlmICghZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0 ICYmCj4gPiAtCSAgICBJOTE1X1JFQUQoU0RFSVNSKSAmIFNERV9UQ19IT1RQTFVHX0lDUCh0Y19w b3J0KSkgewo+ID4gLQkJRFJNX0VSUk9SKCJQb3J0ICVzOiBWQlQgaW5jb3JyZWN0bHkgY2xhaW1z IHBvcnQgaXMgbm90IFR5cGVDIGxlZ2FjeVxuIiwKPiA+IC0JCQkgIHRjX3BvcnRfbmFtZShkZXZf cHJpdiwgdGNfcG9ydCkpOwo+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 L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF90Yy5oCj4gPiBpbmRleCA5NGM2MmFjNGExNjIuLmU5MzdmNTMyNjk1OSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3RjLmgKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3RjLmgKPiA+IEBAIC04LDYgKzgsNyBAQCBzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0Owo+ID4gIHZvaWQgaWNsX3RjX3BoeV9kaXNjb25uZWN0KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKPiA+ICAKPiA+ICBib29sIGludGVsX3RjX3BvcnRf Y29ubmVjdGVkKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0KTsKPiA+ICt1MzIg aW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9pbmZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0KTsKPiA+ICBpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVfY291bnQoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpOwo+ID4gIAo+ID4gICNlbmRpZiAvKiBfX0lO VEVMX1RDX0hfXyAqLwo+IAo+IC0tIAo+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBH cmFwaGljcyBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4