From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [CI v3 09/23] drm/i915: Factor out common parts from TypeC port handling functions Date: Wed, 26 Jun 2019 22:55:57 +0000 Message-ID: <9f425a9ac00911fcd86eae3c0df76d8fd2fa796f.camel@intel.com> References: <20190620140600.11357-10-imre.deak@intel.com> <20190626205010.18597-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 22CAC6E554 for ; Wed, 26 Jun 2019 22:55:59 +0000 (UTC) In-Reply-To: <20190626205010.18597-1-imre.deak@intel.com> Content-Language: en-US Content-ID: <7D3772D03F4BD64AA8430DD4448C9E7F@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" , "Deak, Imre" Cc: "Nikula, Jani" , "ndesaulniers@google.com" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE5LTA2LTI2IGF0IDIzOjUwICswMzAwLCBJbXJlIERlYWsgd3JvdGU6DQo+IEZh Y3RvciBvdXQgaGVscGVycyByZWFkaW5nL3BhcnNpbmcgdGhlIFR5cGVDIHNwZWNpZmljIHJlZ2lz dGVycywNCj4gbWFraW5nDQo+IGN1cnJlbnQgdXNlcnMgb2YgdGhlbSBjbGVhcmVyIGFuZCBsZXR0 aW5nIHVzIHVzZSB0aGVtIGxhdGVyLg0KPiANCj4gV2hpbGUgYXQgaXQgYWxzbzoNCj4gLSBTaW1w bGlmeSBpY2xfdGNfcGh5X2Nvbm5lY3QoKSB3aXRoIGFuIGVhcmx5IHJldHVybiBpbiBsZWdhY3kg bW9kZS4NCj4gLSBTaW1wbGlmeSB0aGUgbGl2ZSBzdGF0dXMgY2hlY2sgdXNpbmcgb25lIGJpdG1h c2sgZm9yIGFsbCBIUEQgYml0cy4NCj4gLSBSZW1vdmUgYSBtaWNyby1vcHRpbWlzYXRpb24gb2Yg dGhlIHJlcGVhdGVkIHNhZmUtbW9kZSBjbGVhcmluZy4NCj4gLSBNYWtlIHN1cmUgd2UgZml4IHRo ZSBsZWdhY3kgcG9ydCBmbGFnIGluIGFsbCBjYXNlcy4NCj4gDQo+IEV4Y2VwdCBmb3IgdGhlIGxh c3QgdHdvLCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuDQo+IA0KPiB2MjoNCj4gLSBEb24ndCBkbyBy ZWcgcmVhZHMgYXQgdmFyaWFibGUgZGVjbGFyYXRpb25zLiAoSmFuaSkNCj4gLSBQcmV2ZW50IGNv bnN0YW50IHRydW5jYXRlZCBjb21waWxlciB3YXJuaW5nIHdoZW4gYXNzaWduaW5nIHRoZQ0KPiAg IHZhbGlkX2hwZF9tYXNrLiAoTmljaykNCj4gLSBzL2ludGVsX3RjX3BvcnRfZ2V0X2xhbmVfaW5m by9pbnRlbF90Y19wb3J0X2dldF9sYW5lX21hc2svIChWaWxsZSkNCj4gdjM6DQo+IC0gTWFrZSB2 YWxpZF9ocGRfbWFzayBpbml0IGNsZWFyLiAoVmlsbGUpDQo+IA0KPiBDYzogSm9zw6kgUm9iZXJ0 byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+IENjOiBSb2RyaWdvIFZpdmkgPHJv ZHJpZ28udml2aUBpbnRlbC5jb20+DQo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25p QGludGVsLmNvbT4NCj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+DQo+ IENjOiBOaWNrIERlc2F1bG5pZXJzIDxuZGVzYXVsbmllcnNAZ29vZ2xlLmNvbT4NCj4gU2lnbmVk LW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPg0KPiBSZXZpZXdlZC1ieTog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4NCj4gLS0tDQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIHwgIDExICstDQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMgIHwgMTg4ICsrKysrKysrKysr KysrLS0tLS0tLQ0KPiAtLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90 Yy5oICB8ICAgMSArDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCA4MSBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k ZGkuYw0KPiBpbmRleCBjOTE0M2UyYTY5OTQuLjJiZTdjZGMzMTliYSAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jDQo+IEBAIC0yOTk2LDggKzI5OTYsNyBA QCBzdGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdA0KPiBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZGlnX3BvcnQtDQo+ID5iYXNlLmJhc2UuZGV2 KTsNCj4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7DQo+IC0J ZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBwb3J0KTsN Cj4gLQl1MzIgbG4wLCBsbjEsIGxhbmVfaW5mbzsNCj4gKwl1MzIgbG4wLCBsbjEsIGxhbmVfbWFz azsNCj4gIA0KPiAgCWlmIChpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX1RCVF9B TFQpDQo+ICAJCXJldHVybjsNCj4gQEAgLTMwMTAsMTEgKzMwMDksOSBAQCBzdGF0aWMgdm9pZCBp Y2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdA0KPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0KQ0KPiAgCQlsbjAgJj0gfihNR19EUF9NT0RFX0NGR19EUF9YMV9NT0RFIHwNCj4g TUdfRFBfTU9ERV9DRkdfRFBfWDJfTU9ERSk7DQo+ICAJCWxuMSAmPSB+KE1HX0RQX01PREVfQ0ZH X0RQX1gxX01PREUgfA0KPiBNR19EUF9NT0RFX0NGR19EUF9YMl9NT0RFKTsNCj4gIA0KPiAtCQls YW5lX2luZm8gPSAoSTkxNV9SRUFEKFBPUlRfVFhfREZMRVhEUFNQKSAmDQo+IC0JCQkgICAgIERQ X0xBTkVfQVNTSUdOTUVOVF9NQVNLKHRjX3BvcnQpKSA+Pg0KPiAtCQkJICAgIERQX0xBTkVfQVNT SUdOTUVOVF9TSElGVCh0Y19wb3J0KTsNCj4gKwkJbGFuZV9tYXNrID0NCj4gaW50ZWxfdGNfcG9y dF9nZXRfbGFuZV9tYXNrKGludGVsX2RpZ19wb3J0KTsNCj4gIA0KPiAtCQlzd2l0Y2ggKGxhbmVf aW5mbykgew0KPiArCQlzd2l0Y2ggKGxhbmVfbWFzaykgew0KPiAgCQljYXNlIDB4MToNCj4gIAkJ Y2FzZSAweDQ6DQo+ICAJCQlicmVhazsNCj4gQEAgLTMwMzksNyArMzAzNiw3IEBAIHN0YXRpYyB2 b2lkIGljbF9wcm9ncmFtX21nX2RwX21vZGUoc3RydWN0DQo+IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQpDQo+ICAJCQkgICAgICAgTUdfRFBfTU9ERV9DRkdfRFBfWDJfTU9ERTsN Cj4gIAkJCWJyZWFrOw0KPiAgCQlkZWZhdWx0Og0KPiAtCQkJTUlTU0lOR19DQVNFKGxhbmVfaW5m byk7DQo+ICsJCQlNSVNTSU5HX0NBU0UobGFuZV9tYXNrKTsNCj4gIAkJfQ0KPiAgCQlicmVhazsN Cj4gIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90 Yy5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5jDQo+IGluZGV4 IGNhM2IxMWUyNjQ3NC4uZjA2ODhjNzQ1MGM3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF90Yy5jDQo+IEBAIC0yMSwyNSArMjEsMzQgQEAgc3RhdGljIGNvbnN0IGNo YXIgKnRjX3BvcnRfbW9kZV9uYW1lKGVudW0NCj4gdGNfcG9ydF9tb2RlIG1vZGUpDQo+ICAJcmV0 dXJuIG5hbWVzW21vZGVdOw0KPiAgfQ0KPiAgDQo+IC1pbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4 X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydA0KPiAqZGlnX3BvcnQpDQo+ICt1 MzIgaW50ZWxfdGNfcG9ydF9nZXRfbGFuZV9tYXNrKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0KQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGlnX3BvcnQtDQo+ID5iYXNlLmJhc2UuZGV2KTsNCj4gIAllbnVtIHRjX3BvcnQg dGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LQ0KPiA+YmFzZS5w b3J0KTsNCj4gKwl1MzIgbGFuZV9tYXNrOw0KPiArDQo+ICsJbGFuZV9tYXNrID0gSTkxNV9SRUFE KFBPUlRfVFhfREZMRVhEUFNQKTsNCj4gKw0KPiArCXJldHVybiAobGFuZV9tYXNrICYgRFBfTEFO RV9BU1NJR05NRU5UX01BU0sodGNfcG9ydCkpID4+DQo+ICsJICAgICAgIERQX0xBTkVfQVNTSUdO TUVOVF9TSElGVCh0Y19wb3J0KTsNCj4gK30NCj4gKw0KPiAraW50IGludGVsX3RjX3BvcnRfZmlh X21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQNCj4gKmRpZ19wb3J0KQ0K PiArew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGln X3BvcnQtDQo+ID5iYXNlLmJhc2UuZGV2KTsNCj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsN Cj4gLQl1MzIgbGFuZV9pbmZvOw0KPiArCXUzMiBsYW5lX21hc2s7DQo+ICANCj4gIAlpZiAoZGln X3BvcnQtPnRjX21vZGUgIT0gVENfUE9SVF9EUF9BTFQpDQo+ICAJCXJldHVybiA0Ow0KPiAgDQo+ IC0JbGFuZV9pbmZvID0gMDsNCj4gKwlsYW5lX21hc2sgPSAwOw0KPiAgCXdpdGhfaW50ZWxfZGlz cGxheV9wb3dlcihkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0RJU1BMQVlfQ09SRSwNCj4gd2FrZXJl ZikNCj4gLQkJbGFuZV9pbmZvID0gKEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBTUCkgJg0KPiAt CQkJICAgICBEUF9MQU5FX0FTU0lHTk1FTlRfTUFTSyh0Y19wb3J0KSkgPj4NCj4gLQkJCQlEUF9M QU5FX0FTU0lHTk1FTlRfU0hJRlQodGNfcG9ydCk7DQo+ICsJCWxhbmVfbWFzayA9IGludGVsX3Rj X3BvcnRfZ2V0X2xhbmVfbWFzayhkaWdfcG9ydCk7DQo+ICANCj4gLQlzd2l0Y2ggKGxhbmVfaW5m bykgew0KPiArCXN3aXRjaCAobGFuZV9tYXNrKSB7DQo+ICAJZGVmYXVsdDoNCj4gLQkJTUlTU0lO R19DQVNFKGxhbmVfaW5mbyk7DQo+ICsJCU1JU1NJTkdfQ0FTRShsYW5lX21hc2spOw0KPiAgCWNh c2UgMToNCj4gIAljYXNlIDI6DQo+ICAJY2FzZSA0Og0KPiBAQCAtNTMsNiArNjIsNzYgQEAgaW50 IGludGVsX3RjX3BvcnRfZmlhX21heF9sYW5lX2NvdW50KHN0cnVjdA0KPiBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0KQ0KPiAgCX0NCj4gIH0NCj4gIA0KPiArc3RhdGljIHZvaWQgdGNfcG9y dF9maXh1cF9sZWdhY3lfZmxhZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0DQo+ICpkaWdfcG9y dCwNCj4gKwkJCQkgICAgICB1MzIgbGl2ZV9zdGF0dXNfbWFzaykNCj4gK3sNCj4gKwl1MzIgdmFs aWRfaHBkX21hc2s7DQo+ICsNCj4gKwlpZiAoZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0KQ0KPiAr CQl2YWxpZF9ocGRfbWFzayA9IEJJVChUQ19QT1JUX0xFR0FDWSk7DQo+ICsJZWxzZQ0KPiArCQl2 YWxpZF9ocGRfbWFzayA9IEJJVChUQ19QT1JUX0RQX0FMVCkgfA0KPiArCQkJCSBCSVQoVENfUE9S VF9UQlRfQUxUKTsNCj4gKw0KPiArCWlmICghKGxpdmVfc3RhdHVzX21hc2sgJiB+dmFsaWRfaHBk X21hc2spKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwkvKiBJZiBsaXZlIHN0YXR1cyBtaXNtYXRj aGVzIHRoZSBWQlQgZmxhZywgdHJ1c3QgdGhlIGxpdmUNCj4gc3RhdHVzLiAqLw0KPiArCURSTV9F UlJPUigiUG9ydCAlczogbGl2ZSBzdGF0dXMgJTA4eCBtaXNtYXRjaGVzIHRoZSBsZWdhY3kgcG9y dA0KPiBmbGFnLCBmaXggZmxhZ1xuIiwNCj4gKwkJICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lLCBs aXZlX3N0YXR1c19tYXNrKTsNCj4gKw0KPiArCWRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCA9ICFk aWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1MzIgdGNfcG9y dF9saXZlX3N0YXR1c19tYXNrKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQNCj4gKmRpZ19wb3J0 KQ0KPiArew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGlnX3BvcnQtDQo+ID5iYXNlLmJhc2UuZGV2KTsNCj4gKwllbnVtIHRjX3BvcnQgdGNfcG9ydCA9 IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LQ0KPiA+YmFzZS5wb3J0KTsNCj4g Kwl1MzIgbWFzayA9IDA7DQo+ICsJdTMyIHZhbDsNCj4gKw0KPiArCXZhbCA9IEk5MTVfUkVBRChQ T1JUX1RYX0RGTEVYRFBTUCk7DQo+ICsNCj4gKwlpZiAodmFsICYgVENfTElWRV9TVEFURV9UQlQo dGNfcG9ydCkpDQo+ICsJCW1hc2sgfD0gQklUKFRDX1BPUlRfVEJUX0FMVCk7DQo+ICsJaWYgKHZh bCAmIFRDX0xJVkVfU1RBVEVfVEModGNfcG9ydCkpDQo+ICsJCW1hc2sgfD0gQklUKFRDX1BPUlRf RFBfQUxUKTsNCj4gKw0KPiArCWlmIChJOTE1X1JFQUQoU0RFSVNSKSAmIFNERV9UQ19IT1RQTFVH X0lDUCh0Y19wb3J0KSkNCj4gKwkJbWFzayB8PSBCSVQoVENfUE9SVF9MRUdBQ1kpOw0KPiArDQo+ ICsJLyogVGhlIHNpbmsgY2FuIGJlIGNvbm5lY3RlZCBvbmx5IGluIGEgc2luZ2xlIG1vZGUuICov DQo+ICsJaWYgKCFXQVJOX09OKGh3ZWlnaHQzMihtYXNrKSA+IDEpKQ0KPiArCQl0Y19wb3J0X2Zp eHVwX2xlZ2FjeV9mbGFnKGRpZ19wb3J0LCBtYXNrKTsNCj4gKw0KPiArCXJldHVybiBtYXNrOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgYm9vbCBpY2xfdGNfcGh5X3N0YXR1c19jb21wbGV0ZShzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0DQo+ICpkaWdfcG9ydCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LQ0KPiA+YmFzZS5iYXNl LmRldik7DQo+ICsJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9w cml2LCBkaWdfcG9ydC0NCj4gPmJhc2UucG9ydCk7DQo+ICsNCj4gKwlyZXR1cm4gSTkxNV9SRUFE KFBPUlRfVFhfREZMRVhEUFBNUykgJg0KPiArCSAgICAgICBEUF9QSFlfTU9ERV9TVEFUVVNfQ09N UExFVEVEKHRjX3BvcnQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcGh5X3Nl dF9zYWZlX21vZGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydA0KPiAqZGlnX3BvcnQsDQo+ICsJ CQkJICAgICBib29sIGVuYWJsZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LQ0KPiA+YmFzZS5iYXNlLmRldik7DQo+ICsJZW51 bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2LCBkaWdfcG9ydC0N Cj4gPmJhc2UucG9ydCk7DQo+ICsJdTMyIHZhbDsNCj4gKw0KPiArCXZhbCA9IEk5MTVfUkVBRChQ T1JUX1RYX0RGTEVYRFBDU1NTKTsNCj4gKw0KPiArCXZhbCAmPSB+RFBfUEhZX01PREVfU1RBVFVT X05PVF9TQUZFKHRjX3BvcnQpOw0KPiArCWlmICghZW5hYmxlKQ0KPiArCQl2YWwgfD0gRFBfUEhZ X01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOw0KPiArDQo+ICsJSTkxNV9XUklURShQT1JU X1RYX0RGTEVYRFBDU1NTLCB2YWwpOw0KPiArfQ0KDQpXaHkgdGhvc2UgMiBoYXZlICJpY2xfIiB3 aGlsZSB0Y19wb3J0X2ZpeHVwX2xlZ2FjeV9mbGFnKCkgYW5kDQp0Y19wb3J0X2xpdmVfc3RhdHVz X21hc2soKSBkb24ndD8NCg0KT3RoZXIgdGhhbiB0aGF0Og0KDQpSZXZpZXdlZC1ieTogSm9zw6kg Um9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQoNCj4gKw0KPiAgLyoNCj4g ICAqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgQ29ubmVj dCBGbG93DQo+IGRlc2NyaWJlZCBieSBvdXINCj4gICAqIHNwZWNpZmljYXRpb24sIEdlbjExIFR5 cGVDIFByb2dyYW1taW5nIGNoYXB0ZXIuIFRoZSByZXN0IG9mIHRoZQ0KPiBmbG93IChyZWFkaW5n DQo+IEBAIC03NiwzOCArMTU1LDMxIEBAIGludCBpbnRlbF90Y19wb3J0X2ZpYV9tYXhfbGFuZV9j b3VudChzdHJ1Y3QNCj4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkNCj4gICAqLw0KPiAg c3RhdGljIGJvb2wgaWNsX3RjX3BoeV9jb25uZWN0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmRpZ19wb3J0KQ0KPiAgew0KPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGlnX3BvcnQtDQo+ID5iYXNlLmJhc2UuZGV2KTsNCj4gLQllbnVtIHRjX3BvcnQg dGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsIGRpZ19wb3J0LQ0KPiA+YmFzZS5w b3J0KTsNCj4gLQl1MzIgdmFsOw0KPiArCXUzMiBsaXZlX3N0YXR1c19tYXNrOw0KPiAgDQo+ICAJ aWYgKGRpZ19wb3J0LT50Y19tb2RlICE9IFRDX1BPUlRfTEVHQUNZICYmDQo+ICAJICAgIGRpZ19w b3J0LT50Y19tb2RlICE9IFRDX1BPUlRfRFBfQUxUKQ0KPiAgCQlyZXR1cm4gdHJ1ZTsNCj4gIA0K PiAtCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBQTVMpOw0KPiAtCWlmICghKHZhbCAm IERQX1BIWV9NT0RFX1NUQVRVU19DT01QTEVURUQodGNfcG9ydCkpKSB7DQo+ICsJaWYgKCFpY2xf dGNfcGh5X3N0YXR1c19jb21wbGV0ZShkaWdfcG9ydCkpIHsNCj4gIAkJRFJNX0RFQlVHX0tNUygi UG9ydCAlczogUEhZIG5vdCByZWFkeVxuIiwNCj4gIAkJCSAgICAgIGRpZ19wb3J0LT50Y19wb3J0 X25hbWUpOw0KPiAgCQlXQVJOX09OKGRpZ19wb3J0LT50Y19sZWdhY3lfcG9ydCk7DQo+ICAJCXJl dHVybiBmYWxzZTsNCj4gIAl9DQo+ICANCj4gLQkvKg0KPiAtCSAqIFRoaXMgZnVuY3Rpb24gbWF5 IGJlIGNhbGxlZCBtYW55IHRpbWVzIGluIGEgcm93IHdpdGhvdXQgYW4NCj4gSFBEIGV2ZW50DQo+ IC0JICogaW4gYmV0d2Vlbiwgc28gdHJ5IHRvIGF2b2lkIHRoZSB3cml0ZSB3aGVuIHdlIGNhbi4N Cj4gLQkgKi8NCj4gLQl2YWwgPSBJOTE1X1JFQUQoUE9SVF9UWF9ERkxFWERQQ1NTUyk7DQo+IC0J aWYgKCEodmFsICYgRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpKSkgew0KPiAt CQl2YWwgfD0gRFBfUEhZX01PREVfU1RBVFVTX05PVF9TQUZFKHRjX3BvcnQpOw0KPiAtCQlJOTE1 X1dSSVRFKFBPUlRfVFhfREZMRVhEUENTU1MsIHZhbCk7DQo+IC0JfQ0KPiArCWljbF90Y19waHlf c2V0X3NhZmVfbW9kZShkaWdfcG9ydCwgZmFsc2UpOw0KPiArDQo+ICsJaWYgKGRpZ19wb3J0LT50 Y19tb2RlID09IFRDX1BPUlRfTEVHQUNZKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKw0KPiArCWxp dmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQpOw0KPiAg DQo+ICAJLyoNCj4gIAkgKiBOb3cgd2UgaGF2ZSB0byByZS1jaGVjayB0aGUgbGl2ZSBzdGF0ZSwg aW4gY2FzZSB0aGUgcG9ydA0KPiByZWNlbnRseQ0KPiAgCSAqIGJlY2FtZSBkaXNjb25uZWN0ZWQu IE5vdCBuZWNlc3NhcnkgZm9yIGxlZ2FjeSBtb2RlLg0KPiAgCSAqLw0KPiAtCWlmIChkaWdfcG9y dC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCAmJg0KPiAtCSAgICAhKEk5MTVfUkVBRChQT1JU X1RYX0RGTEVYRFBTUCkgJg0KPiBUQ19MSVZFX1NUQVRFX1RDKHRjX3BvcnQpKSkgew0KPiArCWlm ICghKGxpdmVfc3RhdHVzX21hc2sgJiBCSVQoVENfUE9SVF9EUF9BTFQpKSkgew0KPiAgCQlEUk1f REVCVUdfS01TKCJQb3J0ICVzOiBQSFkgc3VkZGVuIGRpc2Nvbm5lY3RcbiIsDQo+ICAJCQkgICAg ICBkaWdfcG9ydC0+dGNfcG9ydF9uYW1lKTsNCj4gIAkJaWNsX3RjX3BoeV9kaXNjb25uZWN0KGRp Z19wb3J0KTsNCj4gQEAgLTEyMyw0NiArMTk1LDM1IEBAIHN0YXRpYyBib29sIGljbF90Y19waHlf Y29ubmVjdChzdHJ1Y3QNCj4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkNCj4gICAqLw0K PiAgdm9pZCBpY2xfdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQpDQo+ICB7DQo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkaWdfcG9ydC0NCj4gPmJhc2UuYmFzZS5kZXYpOw0KPiAtCWVudW0gdGNfcG9ydCB0 Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZGlnX3BvcnQtDQo+ID5iYXNlLnBv cnQpOw0KPiAtDQo+IC0JLyoNCj4gLQkgKiBUQlQgZGlzY29ubmVjdGlvbiBmbG93IGlzIHJlYWQg dGhlIGxpdmUgc3RhdHVzLCB3aGF0IHdhcw0KPiBkb25lIGluDQo+IC0JICogY2FsbGVyLg0KPiAt CSAqLw0KPiAtCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0RQX0FMVCB8fA0KPiAt CSAgICBkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX0xFR0FDWSkgew0KPiAtCQl1MzIgdmFs Ow0KPiAtDQo+IC0JCXZhbCA9IEk5MTVfUkVBRChQT1JUX1RYX0RGTEVYRFBDU1NTKTsNCj4gLQkJ dmFsICY9IH5EUF9QSFlfTU9ERV9TVEFUVVNfTk9UX1NBRkUodGNfcG9ydCk7DQo+IC0JCUk5MTVf V1JJVEUoUE9SVF9UWF9ERkxFWERQQ1NTUywgdmFsKTsNCj4gKwlzd2l0Y2ggKGRpZ19wb3J0LT50 Y19tb2RlKSB7DQo+ICsJY2FzZSBUQ19QT1JUX0xFR0FDWToNCj4gKwljYXNlIFRDX1BPUlRfRFBf QUxUOg0KPiArCQlpY2xfdGNfcGh5X3NldF9zYWZlX21vZGUoZGlnX3BvcnQsIHRydWUpOw0KPiAr CQlkaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsNCj4gKwkJYnJlYWs7DQo+ICsJ Y2FzZSBUQ19QT1JUX1RCVF9BTFQ6DQo+ICsJCS8qIE5vdGhpbmcgdG8gZG8sIHdlIHN0YXkgaW4g VEJULWFsdCBtb2RlICovDQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCU1JU1NJTkdf Q0FTRShkaWdfcG9ydC0+dGNfbW9kZSk7DQo+ICAJfQ0KPiAgDQo+ICAJRFJNX0RFQlVHX0tNUygi UG9ydCAlczogbW9kZSAlcyBkaXNjb25uZWN0ZWRcbiIsDQo+ICAJCSAgICAgIGRpZ19wb3J0LT50 Y19wb3J0X25hbWUsDQo+ICAJCSAgICAgIHRjX3BvcnRfbW9kZV9uYW1lKGRpZ19wb3J0LT50Y19t b2RlKSk7DQo+IC0NCj4gLQlkaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FMVDsNCj4g IH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LA0KPiAgCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0DQo+ICppbnRlbF9kaWdfcG9ydCwNCj4gLQkJCQkgICAgYm9vbCBpc19sZWdhY3ks IGJvb2wgaXNfdHlwZWMsIGJvb2wNCj4gaXNfdGJ0KQ0KPiArCQkJCSAgICB1MzIgbGl2ZV9zdGF0 dXNfbWFzaykNCj4gIHsNCj4gIAllbnVtIHRjX3BvcnRfbW9kZSBvbGRfbW9kZSA9IGludGVsX2Rp Z19wb3J0LT50Y19tb2RlOw0KPiAgDQo+IC0JV0FSTl9PTihpc19sZWdhY3kgKyBpc190eXBlYyAr IGlzX3RidCAhPSAxKTsNCj4gLQ0KPiAtCWlmIChpc19sZWdhY3kpDQo+IC0JCWludGVsX2RpZ19w b3J0LT50Y19tb2RlID0gVENfUE9SVF9MRUdBQ1k7DQo+IC0JZWxzZSBpZiAoaXNfdHlwZWMpDQo+ IC0JCWludGVsX2RpZ19wb3J0LT50Y19tb2RlID0gVENfUE9SVF9EUF9BTFQ7DQo+IC0JZWxzZSBp ZiAoaXNfdGJ0KQ0KPiAtCQlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IFRDX1BPUlRfVEJUX0FM VDsNCj4gLQllbHNlDQo+ICsJaWYgKCFsaXZlX3N0YXR1c19tYXNrKQ0KPiAgCQlyZXR1cm47DQo+ ICANCj4gKwlpbnRlbF9kaWdfcG9ydC0+dGNfbW9kZSA9IGZscyhsaXZlX3N0YXR1c19tYXNrKSAt IDE7DQo+ICsNCj4gIAlpZiAob2xkX21vZGUgIT0gaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUpDQo+ ICAJCURSTV9ERUJVR19LTVMoIlBvcnQgJXM6IHBvcnQgaGFzIG1vZGUgJXNcbiIsDQo+ICAJCQkg ICAgICBpbnRlbF9kaWdfcG9ydC0+dGNfcG9ydF9uYW1lLA0KPiBAQCAtMTgyLDQwICsyNDMsMTkg QEAgc3RhdGljIHZvaWQgaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoc3RydWN0DQo+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgYm9vbCBpbnRlbF90Y19wb3J0X2Nvbm5lY3RlZChzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkNCj4gIHsNCj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LQ0KPiA+YmFzZS5iYXNlLmRl dik7DQo+IC0JZW51bSBwb3J0IHBvcnQgPSBkaWdfcG9ydC0+YmFzZS5wb3J0Ow0KPiAtCWVudW0g dGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgcG9ydCk7DQo+IC0J Ym9vbCBpc19sZWdhY3ksIGlzX3R5cGVjLCBpc190YnQ7DQo+IC0JdTMyIGRwc3A7DQo+IC0NCj4g LQkvKg0KPiAtCSAqIENvbXBsYWluIGlmIHdlIGdvdCBhIGxlZ2FjeSBwb3J0IEhQRCwgYnV0IFZC VCBkaWRuJ3QgbWFyaw0KPiB0aGUgcG9ydCBhcw0KPiAtCSAqIGxlZ2FjeS4gVHJlYXQgdGhlIHBv cnQgYXMgbGVnYWN5IGZyb20gbm93IG9uLg0KPiAtCSAqLw0KPiAtCWlmICghZGlnX3BvcnQtPnRj X2xlZ2FjeV9wb3J0ICYmDQo+IC0JICAgIEk5MTVfUkVBRChTREVJU1IpICYgU0RFX1RDX0hPVFBM VUdfSUNQKHRjX3BvcnQpKSB7DQo+IC0JCURSTV9FUlJPUigiUG9ydCAlczogVkJUIGluY29ycmVj dGx5IGNsYWltcyBwb3J0IGlzIG5vdA0KPiBUeXBlQyBsZWdhY3lcbiIsDQo+IC0JCQkgIGRpZ19w b3J0LT50Y19wb3J0X25hbWUpOw0KPiAtCQlkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQgPSB0cnVl Ow0KPiAtCX0NCj4gLQlpc19sZWdhY3kgPSBkaWdfcG9ydC0+dGNfbGVnYWN5X3BvcnQ7DQo+ICsJ dTMyIGxpdmVfc3RhdHVzX21hc2sgPSB0Y19wb3J0X2xpdmVfc3RhdHVzX21hc2soZGlnX3BvcnQp Ow0KPiAgDQo+ICAJLyoNCj4gIAkgKiBUaGUgc3BlYyBzYXlzIHdlIHNob3VsZG4ndCBiZSB1c2lu ZyB0aGUgSVNSIGJpdHMgZm9yDQo+IGRldGVjdGluZw0KPiAgCSAqIGJldHdlZW4gVEMgYW5kIFRC VC4gV2Ugc2hvdWxkIHVzZSBERkxFWERQU1AuDQo+ICAJICovDQo+IC0JZHBzcCA9IEk5MTVfUkVB RChQT1JUX1RYX0RGTEVYRFBTUCk7DQo+IC0JaXNfdHlwZWMgPSBkcHNwICYgVENfTElWRV9TVEFU RV9UQyh0Y19wb3J0KTsNCj4gLQlpc190YnQgPSBkcHNwICYgVENfTElWRV9TVEFURV9UQlQodGNf cG9ydCk7DQo+IC0NCj4gLQlpZiAoIWlzX2xlZ2FjeSAmJiAhaXNfdHlwZWMgJiYgIWlzX3RidCkg ew0KPiArCWlmICghbGl2ZV9zdGF0dXNfbWFzayAmJiAhZGlnX3BvcnQtPnRjX2xlZ2FjeV9wb3J0 KSB7DQo+ICAJCWljbF90Y19waHlfZGlzY29ubmVjdChkaWdfcG9ydCk7DQo+ICANCj4gIAkJcmV0 dXJuIGZhbHNlOw0KPiAgCX0NCj4gIA0KPiAtCWljbF91cGRhdGVfdGNfcG9ydF90eXBlKGRldl9w cml2LCBkaWdfcG9ydCwgaXNfbGVnYWN5LA0KPiBpc190eXBlYywNCj4gLQkJCQlpc190YnQpOw0K PiAtDQo+ICsJaWNsX3VwZGF0ZV90Y19wb3J0X3R5cGUoZGV2X3ByaXYsIGRpZ19wb3J0LCBsaXZl X3N0YXR1c19tYXNrKTsNCj4gIAlpZiAoIWljbF90Y19waHlfY29ubmVjdChkaWdfcG9ydCkpDQo+ ICAJCXJldHVybiBmYWxzZTsNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF90Yy5oDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF90Yy5oDQo+IGluZGV4IGNhMTczNTMwMzI1Mi4uOGMzMzhjNDU3OTZkIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmgNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oDQo+IEBAIC0xMyw2ICsxMyw3IEBA IHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQ7DQo+ICB2b2lkIGljbF90Y19waHlfZGlzY29ubmVj dChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCk7DQo+ICANCj4gIGJvb2wgaW50 ZWxfdGNfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQp Ow0KPiArdTMyIGludGVsX3RjX3BvcnRfZ2V0X2xhbmVfbWFzayhzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0DQo+ICpkaWdfcG9ydCk7DQo+ICBpbnQgaW50ZWxfdGNfcG9ydF9maWFfbWF4X2xhbmVf Y291bnQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydA0KPiAqZGlnX3BvcnQpOw0KPiAgDQo+ICB2 b2lkIGludGVsX3RjX3BvcnRfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCwgYm9vbA0KPiBpc19sZWdhY3kpOw0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4