From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [PATCH v4 2/4] drm/i915/tgl: Add dkl phy programming sequences Date: Thu, 26 Sep 2019 21:02:11 +0000 Message-ID: <2fe551d821db7fdcf02870c4e34c8c281f4f3b41.camel@intel.com> References: <20190925234509.29505-1-jose.souza@intel.com> <20190925234509.29505-3-jose.souza@intel.com> <20190926153400.GC20817@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E1506EE02 for ; Thu, 26 Sep 2019 21:02:14 +0000 (UTC) In-Reply-To: <20190926153400.GC20817@ideak-desk.fi.intel.com> Content-Language: en-US Content-ID: <660B908C70482B459A16DC003D4F20ED@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Deak, Imre" Cc: "intel-gfx@lists.freedesktop.org" , "De Marchi, Lucas" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE5LTA5LTI2IGF0IDE4OjM0ICswMzAwLCBJbXJlIERlYWsgd3JvdGU6DQo+IE9u IFdlZCwgU2VwIDI1LCAyMDE5IGF0IDA0OjQ1OjA3UE0gLTA3MDAsIEpvc8OpIFJvYmVydG8gZGUg U291emENCj4gd3JvdGU6DQo+ID4gRnJvbTogQ2xpbnRvbiBBIFRheWxvciA8Y2xpbnRvbi5hLnRh eWxvckBpbnRlbC5jb20+DQo+ID4gDQo+ID4gQWRkZWQgREtMIFBoeSBzZXF1ZW5jZXMgYW5kIGhl bHBlcnMgZnVuY3Rpb25zIHRvIHByb2dyYW0gdm9sdGFnZQ0KPiA+IHN3aW5nLCBjbG9jayBnYXRp bmcgYW5kIGRwIG1vZGUuDQo+ID4gDQo+ID4gSXQgaXMgbm90IHdyaXR0ZW4gaW4gRFAgZW5hYmxp bmcgc2VxdWVuY2UgYnV0ICJQSFkgQ2xvY2tnYXRpbmcNCj4gPiBwcm9ncmFtbWluZyIgc3RhdGVz IHRoYXQgY2xvY2sgZ2F0aW5nIHNob3VsZCBiZSBlbmFibGVkIGFmdGVyIHRoZQ0KPiA+IGxpbmsg dHJhaW5pbmcgYnV0IGRvaW5nIHNvIGNhdXNlcyBhbGwgdGhlIGZvbGxvd2luZyB0cmFpbmluZ3Mg dG8NCj4gPiBmYWlsDQo+ID4gc28gbm90IGVuYWJsaW5nIGl0IGZvci4NCj4gPiANCj4gPiB2MjoN Cj4gPiBTZXR0aW5nIHRoZSByaWdodCBISVBfSU5ERVhfUkVHIGJpdHMgKEpvc8OpKQ0KPiA+IA0K PiA+IHYzOg0KPiA+IEFkZGluZyB0aGUgbWVhbmluZyBvZiBlYWNoIGNvbHVtbiBvZiB0Z2xfZGts X3BoeV9kZGlfdHJhbnNsYXRpb25zDQo+ID4gQWRkaW5nIGlmIGdlbiA+PSAxMiBvbiBpbnRlbF9k ZGlfaGRtaV9sZXZlbCgpIGFuZA0KPiA+IGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoKSBpbnN0 ZWFkIG9mIHJldXNlIHBhcnQgb2YgZ2VuID49IDExIGlmDQo+ID4gDQo+ID4gdjQ6DQo+ID4gTW92 ZWQgdGhlIERQX01PREUgbGFuZSBwcm9ncmFtaW5nIHRvIGFub3RoZXIgcGF0Y2ggYXMgSUNMIGFs c28NCj4gPiBuZWVkZWQgaXQNCj4gPiBTaGFyaW5nIGljbF9waHlfc2V0X2Nsb2NrX2dhdGluZygp IGFuZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKCkNCj4gPiB3aXRoDQo+ID4gVEdMIGFzIGJpdHMg YW5kIHByb2dyYW1pbmcgYXMgbm93IGl0IGFsbW9zdCBpZGVudGljYWwgdG8gSUNMDQo+ID4gDQo+ ID4gQlNwZWM6IDQ5MjkyDQo+ID4gQlNwZWM6IDQ5MTkwDQo+ID4gDQo+ID4gQ2M6IEltcmUgRGVh ayA8aW1yZS5kZWFrQGludGVsLmNvbT4NCj4gPiBDYzogTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5k ZW1hcmNoaUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0byBkZSBT b3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogQ2xpbnRvbiBB IFRheWxvciA8Y2xpbnRvbi5hLnRheWxvckBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgfCAxNzUNCj4gPiArKysrKysrKysr KysrKysrKysrKy0tLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAg ICAgIHwgICA4IC0tDQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDI4 IGRlbGV0aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RkaS5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaS5jDQo+ID4gaW5kZXggMzE2Y2VkYjE2OTM1Li40ZGE3OTQwZjFmY2YgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gPiBAQCAt NTg2LDYgKzU4NiwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90 cmFucw0KPiA+IGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc1tdID0gew0KPiA+ICAJeyAweDAs IDB4MDAsIDB4MDAgfSwJLyogMyAgICAgICAgICAgICAgMCAgICovDQo+ID4gIH07DQo+ID4gIA0K PiA+ICtzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB7DQo+ID4gKwl1MzIgZGtsX3Zz d2luZ19jb250cm9sOw0KPiA+ICsJdTMyIGRrbF9wcmVzaG9vdF9jb250cm9sOw0KPiA+ICsJdTMy IGRrbF9kZV9lbXBoYXNpc19jb250cm9sOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zDQo+ID4gdGdsX2RrbF9waHlfZGRp X3RyYW5zbGF0aW9uc1tdID0gew0KPiA+ICsJCQkJLyogVlMJcHJlLWVtcAlOb24tdHJhbnMgbVYJ UHJlDQo+ID4gLWVtcGggZEIgKi8NCj4gPiArCXsgMHg3LCAweDAsIDB4MDAgfSwJLyogMAkwCTQw MG1WCQkwIGRCICovDQo+ID4gKwl7IDB4NSwgMHgwLCAweDAzIH0sCS8qIDAJMQk0MDBtVgkJMy41 IGRCICovDQo+ID4gKwl7IDB4MiwgMHgwLCAweDBiIH0sCS8qIDAJMgk0MDBtVgkJNiBkQiAqLw0K PiA+ICsJeyAweDAsIDB4MCwgMHgxOSB9LAkvKiAwCTMJNDAwbVYJCTkuNSBkQiAqLw0KPiA+ICsJ eyAweDUsIDB4MCwgMHgwMCB9LAkvKiAxCTAJNjAwbVYJCTAgZEIgKi8NCj4gPiArCXsgMHgyLCAw eDAsIDB4MDMgfSwJLyogMQkxCTYwMG1WCQkzLjUgZEIgKi8NCj4gPiArCXsgMHgwLCAweDAsIDB4 MTQgfSwJLyogMQkyCTYwMG1WCQk2IGRCICovDQo+ID4gKwl7IDB4MiwgMHgwLCAweDAwIH0sCS8q IDIJMAk4MDBtVgkJMCBkQiAqLw0KPiA+ICsJeyAweDAsIDB4MCwgMHgwQiB9LAkvKiAyCTEJODAw bVYJCTMuNSBkQiAqLw0KPiA+ICsJeyAweDAsIDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkw IGRCIEhETUkNCj4gPiBkZWZhdWx0ICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKg0KPiA+ICBiZHdfZ2V0X2J1Zl90cmFuc19lZHAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQNCj4gPiAqbl9lbnRyaWVzKQ0KPiA+ ICB7DQo+ID4gQEAgLTg3Miw3ICs4OTIsMTQgQEAgc3RhdGljIGludCBpbnRlbF9kZGlfaGRtaV9s ZXZlbChzdHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBv cg0KPiA+ICANCj4gPiAgCWxldmVsID0gZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRd LmhkbWlfbGV2ZWxfc2hpZnQ7DQo+ID4gIA0KPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTEpIHsNCj4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7DQo+ID4gKwkJ aWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkNCj4gPiArCQkJaWNsX2dldF9j b21ib19idWZfdHJhbnMoZGV2X3ByaXYsDQo+ID4gSU5URUxfT1VUUFVUX0hETUksDQo+ID4gKwkJ CQkJCTAsICZuX2VudHJpZXMpOw0KPiA+ICsJCWVsc2UNCj4gPiArCQkJbl9lbnRyaWVzID0NCj4g PiBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2RkaV90cmFuc2xhdGlvbnMpOw0KPiA+ICsJCWRlZmF1 bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOw0KPiA+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID09IDExKSB7DQo+ID4gIAkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwg cGh5KSkNCj4gPiAgCQkJaWNsX2dldF9jb21ib19idWZfdHJhbnMoZGV2X3ByaXYsDQo+ID4gSU5U RUxfT1VUUFVUX0hETUksDQo+ID4gIAkJCQkJCTAsICZuX2VudHJpZXMpOw0KPiA+IEBAIC0yMzM0 LDcgKzIzNjEsMTMgQEAgdTggaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdA0KPiA+IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ID4gIAllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3Rv X3BoeShkZXZfcHJpdiwgcG9ydCk7DQo+ID4gIAlpbnQgbl9lbnRyaWVzOw0KPiA+ICANCj4gPiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7DQo+ID4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMikgew0KPiA+ICsJCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYs IHBoeSkpDQo+ID4gKwkJCWljbF9nZXRfY29tYm9fYnVmX3RyYW5zKGRldl9wcml2LCBlbmNvZGVy LQ0KPiA+ID50eXBlLA0KPiA+ICsJCQkJCQlpbnRlbF9kcC0+bGlua19yYXRlLA0KPiA+ICZuX2Vu dHJpZXMpOw0KPiA+ICsJCWVsc2UNCj4gPiArCQkJbl9lbnRyaWVzID0NCj4gPiBBUlJBWV9TSVpF KHRnbF9ka2xfcGh5X2RkaV90cmFuc2xhdGlvbnMpOw0KPiA+ICsJfSBlbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID09IDExKSB7DQo+ID4gIAkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZf cHJpdiwgcGh5KSkNCj4gPiAgCQkJaWNsX2dldF9jb21ib19idWZfdHJhbnMoZGV2X3ByaXYsIGVu Y29kZXItDQo+ID4gPnR5cGUsDQo+ID4gIAkJCQkJCWludGVsX2RwLT5saW5rX3JhdGUsDQo+ID4g Jm5fZW50cmllcyk7DQo+ID4gQEAgLTI3NzYsNiArMjgwOSw2MyBAQCBzdGF0aWMgdm9pZCBpY2xf ZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QNCj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0K PiA+ICAJCWljbF9tZ19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsaW5rX2Nsb2Nr LA0KPiA+IGxldmVsKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiArc3RhdGljIHZvaWQNCj4gPiArdGds X2RrbF9waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwgaW50DQo+ID4gbGlua19jbG9jaywNCj4gPiArCQkJCXUzMiBsZXZlbCkNCj4gPiArew0KPiA+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7DQo+ID4gKwllbnVtIHRjX3BvcnQgdGNfcG9ydCA9IGludGVsX3BvcnRfdG9fdGMo ZGV2X3ByaXYsIGVuY29kZXItDQo+ID4gPnBvcnQpOw0KPiA+ICsJY29uc3Qgc3RydWN0IHRnbF9k a2xfcGh5X2RkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnM7DQo+ID4gKwl1MzIgbl9lbnRy aWVzLCB2YWwsIGxuOw0KPiA+ICsNCj4gPiArCW5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2Rr bF9waHlfZGRpX3RyYW5zbGF0aW9ucyk7DQo+ID4gKwlkZGlfdHJhbnNsYXRpb25zID0gdGdsX2Rr bF9waHlfZGRpX3RyYW5zbGF0aW9uczsNCj4gPiArDQo+ID4gKwlpZiAobGV2ZWwgPj0gbl9lbnRy aWVzKQ0KPiA+ICsJCWxldmVsID0gbl9lbnRyaWVzIC0gMTsNCj4gPiArDQo+ID4gKwlmb3IgKGxu ID0gMDsgbG4gPCAyOyBsbisrKSB7DQo+IA0KPiBuaXQ6DQo+IAlkcGNudGxfdmFsID0gREtMX1RY X1ZTV0lOR19DT05UUk9MKC4uLikgfCAuLi47DQo+IAlkcGNudGxfbWFzayA9IH4oREtMX1RYX1BS RVNIT09UX0NPRUZGX01BU0sgfCAuLi4pOw0KPiANCj4gPiArCQlJOTE1X1dSSVRFKEhJUF9JTkRF WF9SRUcodGNfcG9ydCksDQo+ID4gSElQX0lOREVYX1ZBTCh0Y19wb3J0LCBsbikpOw0KPiA+ICsN Cj4gPiArCQkvKiBBbGwgdGhlIHJlZ2lzdGVycyBhcmUgUk1XICovDQo+ID4gKwkJdmFsID0gSTkx NV9SRUFEKERLTF9UWF9EUENOVEwwKHRjX3BvcnQpKTsNCj4gDQo+IAl2YWwgJj0gfmRwY250X21h c2s7DQo+IAl2YWwgfD0gZHBjbnRfdmFsOw0KPiANCg0KTmljZSBpZGVhLCBtb3ZlZCBkcGNudGxf dmFsL21hc2sgZXZlbiBvdXQgb2YgdGhlIGxvb3AuDQoNCj4gPiArCQl2YWwgJj0gfihES0xfVFhf UFJFU0hPT1RfQ09FRkZfTUFTSyB8DQo+ID4gKwkJCSBES0xfVFhfREVfRU1QQUhTSVNfQ09FRkZf TUFTSyB8DQo+ID4gKwkJCSBES0xfVFhfVlNXSU5HX0NPTlRST0xfTUFTSyk7DQo+ID4gKwkJdmFs IHw9DQo+ID4gREtMX1RYX1ZTV0lOR19DT05UUk9MKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmRr bF92c3dpbmdfY29udHJvbCk7DQo+ID4gKwkJdmFsIHw9DQo+ID4gREtMX1RYX0RFX0VNUEhBU0lT X0NPRUZGKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmRrbF9kZV9lbXBoYXNpc19jbw0KPiA+IG50 cm9sKTsNCj4gPiArCQl2YWwgfD0NCj4gPiBES0xfVFhfUFJFU0hPT1RfQ09FRkYoZGRpX3RyYW5z bGF0aW9uc1tsZXZlbF0uZGtsX3ByZXNob290X2NvbnRyb2wpDQo+ID4gOw0KPiA+ICsJCUk5MTVf V1JJVEUoREtMX1RYX0RQQ05UTDAodGNfcG9ydCksIHZhbCk7DQo+ID4gKw0KPiA+ICsJCXZhbCA9 IEk5MTVfUkVBRChES0xfVFhfRFBDTlRMMSh0Y19wb3J0KSk7DQo+IA0KPiAJdmFsICY9IH5kcGNu dF9tYXNrOw0KPiAJdmFsIHw9IGRwY250X3ZhbDsNCj4gDQo+ID4gKwkJdmFsICY9IH4oREtMX1RY X1BSRVNIT09UX0NPRUZGX01BU0sgfA0KPiA+ICsJCQkgREtMX1RYX0RFX0VNUEFIU0lTX0NPRUZG X01BU0sgfA0KPiA+ICsJCQkgREtMX1RYX1ZTV0lOR19DT05UUk9MX01BU0spOw0KPiA+ICsJCXZh bCB8PQ0KPiA+IERLTF9UWF9WU1dJTkdfQ09OVFJPTChkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5k a2xfdnN3aW5nX2NvbnRyb2wpOw0KPiA+ICsJCXZhbCB8PQ0KPiA+IERLTF9UWF9ERV9FTVBIQVNJ U19DT0VGRihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5ka2xfZGVfZW1waGFzaXNfY28NCj4gPiBu dHJvbCk7DQo+ID4gKwkJdmFsIHw9DQo+ID4gREtMX1RYX1BSRVNIT09UX0NPRUZGKGRkaV90cmFu c2xhdGlvbnNbbGV2ZWxdLmRrbF9wcmVzaG9vdF9jb250cm9sKQ0KPiA+IDsNCj4gPiArCQlJOTE1 X1dSSVRFKERLTF9UWF9EUENOVEwxKHRjX3BvcnQpLCB2YWwpOw0KPiA+ICsNCj4gPiArCQl2YWwg PSBJOTE1X1JFQUQoREtMX1RYX0RQQ05UTDIodGNfcG9ydCkpOw0KPiA+ICsJCXZhbCAmPSB+REtM X1RYX0RQMjBCSVRNT0RFOw0KPiA+ICsJCUk5MTVfV1JJVEUoREtMX1RYX0RQQ05UTDIodGNfcG9y dCksIHZhbCk7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHRnbF9k ZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiA+ICsJ CQkJICAgIGludCBsaW5rX2Nsb2NrLA0KPiA+ICsJCQkJICAgIHUzMiBsZXZlbCwNCj4gPiArCQkJ CSAgICBlbnVtIGludGVsX291dHB1dF90eXBlIHR5cGUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOw0K PiA+ICsJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIGVuY29kZXIt PnBvcnQpOw0KPiA+ICsNCj4gPiArCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBo eSkpDQo+ID4gKwkJaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxl dmVsLA0KPiA+IHR5cGUpOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCXRnbF9ka2xfcGh5X2RkaV92c3dp bmdfc2VxdWVuY2UoZW5jb2RlciwgbGlua19jbG9jaywNCj4gPiBsZXZlbCk7DQo+ID4gK30NCj4g PiArDQo+ID4gIHN0YXRpYyB1MzIgdHJhbnNsYXRlX3NpZ25hbF9sZXZlbChpbnQgc2lnbmFsX2xl dmVscykNCj4gPiAgew0KPiA+ICAJaW50IGk7DQo+ID4gQEAgLTI4MDcsNyArMjg5NywxMCBAQCB1 MzIgYnh0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+ ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZHBvcnQtPmJhc2U7DQo+ID4gIAlp bnQgbGV2ZWwgPSBpbnRlbF9kZGlfZHBfbGV2ZWwoaW50ZWxfZHApOw0KPiA+ICANCj4gPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQ0KPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIpDQo+ID4gKwkJdGdsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgaW50ZWxf ZHAtPmxpbmtfcmF0ZSwNCj4gPiArCQkJCQlsZXZlbCwgZW5jb2Rlci0+dHlwZSk7DQo+ID4gKwll bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQ0KPiA+ICAJCWljbF9kZGlfdnN3aW5n X3NlcXVlbmNlKGVuY29kZXIsIGludGVsX2RwLT5saW5rX3JhdGUsDQo+ID4gIAkJCQkJbGV2ZWws IGVuY29kZXItPnR5cGUpOw0KPiA+ICAJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikp DQo+ID4gQEAgLTMwNzEsMzggKzMxNjQsNjEgQEAgaWNsX3BoeV9zZXRfY2xvY2tfZ2F0aW5nKHN0 cnVjdA0KPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsIGJvb2wgZW5hYmxlKQ0KPiA+ ICAJICAgICAgIE1HX0RQX01PREVfQ0ZHX0dBT05QV1JfR0FUSU5HOw0KPiA+ICANCj4gPiAgCWZv ciAobG4gPSAwOyBsbiA8IDI7IGxuKyspIHsNCj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoTUdfRFBf TU9ERShsbiwgcG9ydCkpOw0KPiA+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7 DQo+ID4gKwkJCUk5MTVfV1JJVEUoSElQX0lOREVYX1JFRyh0Y19wb3J0KSwNCj4gPiBISVBfSU5E RVhfVkFMKHRjX3BvcnQsIGxuKSk7DQo+ID4gKwkJCXZhbCA9IEk5MTVfUkVBRChES0xfRFBfTU9E RSh0Y19wb3J0KSk7DQo+ID4gKwkJfSBlbHNlIHsNCj4gPiArCQkJdmFsID0gSTkxNV9SRUFEKE1H X0RQX01PREUobG4sIHBvcnQpKTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICAJCWlmIChlbmFibGUp DQo+ID4gIAkJCXZhbCB8PSBiaXRzOw0KPiA+ICAJCWVsc2UNCj4gPiAgCQkJdmFsICY9IH5iaXRz Ow0KPiA+IC0JCUk5MTVfV1JJVEUoTUdfRFBfTU9ERShsbiwgcG9ydCksIHZhbCk7DQo+ID4gKw0K PiA+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKQ0KPiA+ICsJCQlJOTE1X1dSSVRF KERLTF9EUF9NT0RFKHRjX3BvcnQpLCB2YWwpOw0KPiA+ICsJCWVsc2UNCj4gPiArCQkJSTkxNV9X UklURShNR19EUF9NT0RFKGxuLCBwb3J0KSwgdmFsKTsNCj4gPiAgCX0NCj4gPiAgDQo+ID4gLQli aXRzID0gTUdfTUlTQ19TVVMwX0NGR19UUjJQV1JfR0FUSU5HIHwNCj4gPiBNR19NSVNDX1NVUzBf Q0ZHX0NMMlBXUl9HQVRJTkcgfA0KPiA+IC0JICAgICAgIE1HX01JU0NfU1VTMF9DRkdfR0FPTlBX Ul9HQVRJTkcgfA0KPiA+IE1HX01JU0NfU1VTMF9DRkdfVFJQV1JfR0FUSU5HIHwNCj4gPiAtCSAg ICAgICBNR19NSVNDX1NVUzBfQ0ZHX0NMMVBXUl9HQVRJTkcgfA0KPiA+IE1HX01JU0NfU1VTMF9D RkdfREdQV1JfR0FUSU5HOw0KPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpIHsN Cj4gDQo+IG5pdDoNCj4gCWlmIChHRU4gPj0gMTIpDQo+IAkJcmV0dXJuOw0KPiANCj4gUmV2aWV3 ZWQtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4NCg0KVGhhbmtzDQoNCj4gDQo+ ID4gKwkJYml0cyA9IE1HX01JU0NfU1VTMF9DRkdfVFIyUFdSX0dBVElORyB8DQo+ID4gKwkJICAg ICAgIE1HX01JU0NfU1VTMF9DRkdfQ0wyUFdSX0dBVElORyB8DQo+ID4gKwkJICAgICAgIE1HX01J U0NfU1VTMF9DRkdfR0FPTlBXUl9HQVRJTkcgfA0KPiA+ICsJCSAgICAgICBNR19NSVNDX1NVUzBf Q0ZHX1RSUFdSX0dBVElORyB8DQo+ID4gKwkJICAgICAgIE1HX01JU0NfU1VTMF9DRkdfQ0wxUFdS X0dBVElORyB8DQo+ID4gKwkJICAgICAgIE1HX01JU0NfU1VTMF9DRkdfREdQV1JfR0FUSU5HOw0K PiA+ICANCj4gPiAtCXZhbCA9IEk5MTVfUkVBRChNR19NSVNDX1NVUzAodGNfcG9ydCkpOw0KPiA+ IC0JaWYgKGVuYWJsZSkNCj4gPiAtCQl2YWwgfD0gKGJpdHMgfCBNR19NSVNDX1NVUzBfU1VTQ0xL X0RZTkNMS0dBVEVfTU9ERSgzKSk7DQo+ID4gLQllbHNlDQo+ID4gLQkJdmFsICY9IH4oYml0cyB8 DQo+ID4gTUdfTUlTQ19TVVMwX1NVU0NMS19EWU5DTEtHQVRFX01PREVfTUFTSyk7DQo+ID4gLQlJ OTE1X1dSSVRFKE1HX01JU0NfU1VTMCh0Y19wb3J0KSwgdmFsKTsNCj4gPiArCQl2YWwgPSBJOTE1 X1JFQUQoTUdfTUlTQ19TVVMwKHRjX3BvcnQpKTsNCj4gPiArCQlpZiAoZW5hYmxlKQ0KPiA+ICsJ CQl2YWwgfD0gKGJpdHMgfA0KPiA+IE1HX01JU0NfU1VTMF9TVVNDTEtfRFlOQ0xLR0FURV9NT0RF KDMpKTsNCj4gPiArCQllbHNlDQo+ID4gKwkJCXZhbCAmPSB+KGJpdHMgfA0KPiA+IE1HX01JU0Nf U1VTMF9TVVNDTEtfRFlOQ0xLR0FURV9NT0RFX01BU0spOw0KPiA+ICsJCUk5MTVfV1JJVEUoTUdf TUlTQ19TVVMwKHRjX3BvcnQpLCB2YWwpOw0KPiA+ICsJfQ0KPiA+ICB9DQo+ID4gIA0KPiA+ICBz dGF0aWMgdm9pZCBpY2xfcHJvZ3JhbV9tZ19kcF9tb2RlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQNCj4gPiAqaW50ZWxfZGlnX3BvcnQpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZGlnX3BvcnQtDQo+ID4gPmJhc2UuYmFz ZS5kZXYpOw0KPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0 Ow0KPiA+ICsJZW51bSB0Y19wb3J0IHRjX3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGRldl9wcml2 LCBwb3J0KTsNCj4gPiAgCXUzMiBsbjAsIGxuMSwgcGluX2Fzc2lnbm1lbnQ7DQo+ID4gIAl1OCB3 aWR0aDsNCj4gPiAgDQo+ID4gIAlpZiAoaW50ZWxfZGlnX3BvcnQtPnRjX21vZGUgPT0gVENfUE9S VF9UQlRfQUxUKQ0KPiA+ICAJCXJldHVybjsNCj4gPiAgDQo+ID4gLQlsbjAgPSBJOTE1X1JFQUQo TUdfRFBfTU9ERSgwLCBwb3J0KSk7DQo+ID4gLQlsbjEgPSBJOTE1X1JFQUQoTUdfRFBfTU9ERSgx LCBwb3J0KSk7DQo+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgew0KPiA+ICsJ CUk5MTVfV1JJVEUoSElQX0lOREVYX1JFRyh0Y19wb3J0KSwNCj4gPiBISVBfSU5ERVhfVkFMKHRj X3BvcnQsIDB4MCkpOw0KPiA+ICsJCWxuMCA9IEk5MTVfUkVBRChES0xfRFBfTU9ERSh0Y19wb3J0 KSk7DQo+ID4gKwkJSTkxNV9XUklURShISVBfSU5ERVhfUkVHKHRjX3BvcnQpLA0KPiA+IEhJUF9J TkRFWF9WQUwodGNfcG9ydCwgMHgxKSk7DQo+ID4gKwkJbG4xID0gSTkxNV9SRUFEKERLTF9EUF9N T0RFKHRjX3BvcnQpKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJbG4wID0gSTkxNV9SRUFEKE1H X0RQX01PREUoMCwgcG9ydCkpOw0KPiA+ICsJCWxuMSA9IEk5MTVfUkVBRChNR19EUF9NT0RFKDEs IHBvcnQpKTsNCj4gPiArCX0NCj4gPiAgDQo+ID4gIAlsbjAgJj0gfihNR19EUF9NT0RFX0NGR19E UF9YMV9NT0RFIHwNCj4gPiBNR19EUF9NT0RFX0NGR19EUF9YMV9NT0RFKTsNCj4gPiAgCWxuMSAm PSB+KE1HX0RQX01PREVfQ0ZHX0RQX1gxX01PREUgfA0KPiA+IE1HX0RQX01PREVfQ0ZHX0RQX1gy X01PREUpOw0KPiA+IEBAIC0zMTU3LDggKzMyNzMsMTUgQEAgc3RhdGljIHZvaWQgaWNsX3Byb2dy YW1fbWdfZHBfbW9kZShzdHJ1Y3QNCj4gPiBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0KQ0KPiA+ICAJCU1JU1NJTkdfQ0FTRShwaW5fYXNzaWdubWVudCk7DQo+ID4gIAl9DQo+ID4g IA0KPiA+IC0JSTkxNV9XUklURShNR19EUF9NT0RFKDAsIHBvcnQpLCBsbjApOw0KPiA+IC0JSTkx NV9XUklURShNR19EUF9NT0RFKDEsIHBvcnQpLCBsbjEpOw0KPiA+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTIpIHsNCj4gPiArCQlJOTE1X1dSSVRFKEhJUF9JTkRFWF9SRUcodGNfcG9y dCksDQo+ID4gSElQX0lOREVYX1ZBTCh0Y19wb3J0LCAweDApKTsNCj4gPiArCQlJOTE1X1dSSVRF KERLTF9EUF9NT0RFKHRjX3BvcnQpLCBsbjApOw0KPiA+ICsJCUk5MTVfV1JJVEUoSElQX0lOREVY X1JFRyh0Y19wb3J0KSwNCj4gPiBISVBfSU5ERVhfVkFMKHRjX3BvcnQsIDB4MSkpOw0KPiA+ICsJ CUk5MTVfV1JJVEUoREtMX0RQX01PREUodGNfcG9ydCksIGxuMSk7DQo+ID4gKwl9IGVsc2Ugew0K PiA+ICsJCUk5MTVfV1JJVEUoTUdfRFBfTU9ERSgwLCBwb3J0KSwgbG4wKTsNCj4gPiArCQlJOTE1 X1dSSVRFKE1HX0RQX01PREUoMSwgcG9ydCksIGxuMSk7DQo+ID4gKwl9DQo+ID4gIH0NCj4gPiAg DQo+ID4gIHN0YXRpYyB2b2lkIGludGVsX2RwX3Npbmtfc2V0X2ZlY19yZWFkeShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLA0KPiA+IEBAIC0zMjYzLDcgKzMzODYsNyBAQCBzdGF0aWMgdm9pZCB0 Z2xfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0DQo+ID4gaW50ZWxfZW5jb2RlciAqZW5jb2RlciwN Cj4gPiAgCWljbF9waHlfc2V0X2Nsb2NrX2dhdGluZyhkaWdfcG9ydCwgZmFsc2UpOw0KPiA+ICAN Cj4gPiAgCS8qIDcuZSAqLw0KPiA+IC0JaWNsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2Rlciwg Y3J0Y19zdGF0ZS0+cG9ydF9jbG9jaywgbGV2ZWwsDQo+ID4gKwl0Z2xfZGRpX3Zzd2luZ19zZXF1 ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrLCBsZXZlbCwNCj4gPiAgCQkJCWVu Y29kZXItPnR5cGUpOw0KPiA+ICANCj4gPiAgCS8qIDcuZiAqLw0KPiA+IEBAIC0zMjk1LDYgKzM0 MTgsMTUgQEAgc3RhdGljIHZvaWQgdGdsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdA0KPiA+IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ID4gIAkvKiA3LmsgKi8NCj4gPiAgCWludGVsX2RwX3N0 b3BfbGlua190cmFpbihpbnRlbF9kcCk7DQo+ID4gIA0KPiA+ICsJLyoNCj4gPiArCSAqIFRPRE86 IGVuYWJsZSBjbG9jayBnYXRpbmcNCj4gPiArCSAqDQo+ID4gKwkgKiBJdCBpcyBub3Qgd3JpdHRl biBpbiBEUCBlbmFibGluZyBzZXF1ZW5jZSBidXQgIlBIWQ0KPiA+IENsb2NrZ2F0aW5nDQo+ID4g KwkgKiBwcm9ncmFtbWluZyIgc3RhdGVzIHRoYXQgY2xvY2sgZ2F0aW5nIHNob3VsZCBiZSBlbmFi bGVkDQo+ID4gYWZ0ZXIgdGhlDQo+ID4gKwkgKiBsaW5rIHRyYWluaW5nIGJ1dCBkb2luZyBzbyBj YXVzZXMgYWxsIHRoZSBmb2xsb3dpbmcNCj4gPiB0cmFpbmluZ3MgdG8gZmFpbA0KPiA+ICsJICog c28gbm90IGVuYWJsaW5nIGl0IGZvciBub3cuDQo+ID4gKwkgKi8NCj4gPiArDQo+ID4gIAkvKiA3 LmwgKi8NCj4gPiAgCWludGVsX2RkaV9lbmFibGVfZmVjKGVuY29kZXIsIGNydGNfc3RhdGUpOw0K PiA+ICAJaW50ZWxfZHNjX2VuYWJsZShlbmNvZGVyLCBjcnRjX3N0YXRlKTsNCj4gPiBAQCAtMzQw Miw3ICszNTM0LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3Ry dWN0DQo+ID4gaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gPiAgCWljbF9wcm9ncmFtX21nX2Rw X21vZGUoZGlnX3BvcnQpOw0KPiA+ICAJaWNsX3BoeV9zZXRfY2xvY2tfZ2F0aW5nKGRpZ19wb3J0 LCBmYWxzZSk7DQo+ID4gIA0KPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpDQo+ ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikNCj4gPiArCQl0Z2xfZGRpX3Zzd2lu Z19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLQ0KPiA+ID5wb3J0X2Nsb2NrLA0KPiA+ICsJ CQkJCWxldmVsLCBJTlRFTF9PVVRQVVRfSERNSSk7DQo+ID4gKwllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID09IDExKQ0KPiA+ICAJCWljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIs IGNydGNfc3RhdGUtDQo+ID4gPnBvcnRfY2xvY2ssDQo+ID4gIAkJCQkJbGV2ZWwsIElOVEVMX09V VFBVVF9IRE1JKTsNCj4gPiAgCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQ0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ID4gaW5kZXggYmNmNDQ5YzFkMTUyLi43ZjZi NTlhYTYzNDggMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4gPiBAQCAtMTAy NDUsMTQgKzEwMjQ1LDYgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7DQo+ID4gIAkJCQkJCSAgICAg X0RLTF9UWF9EVzE4KQ0KPiA+ICANCj4gPiAgI2RlZmluZSBfREtMX0RQX01PREUJCQkJCTB4QTAN Cj4gPiAtI2RlZmluZSAgREtMX0RQX01PREVfQ0ZHX0dBT05QV1JfR0FUSU5HCQkoMSA8PCAxKQ0K PiA+IC0jZGVmaW5lICBES0xfRFBfTU9ERV9DRkdfRElHUFdSX0dBVElORwkJKDEgPDwgMikNCj4g PiAtI2RlZmluZSAgREtMX0RQX01PREVfQ0ZHX0NMTlBXUl9HQVRJTkcJCSgxIDw8IDMpDQo+ID4g LSNkZWZpbmUgIERLTF9EUF9NT0RFX0NGR19UUlBXUl9HQVRJTkcJCSgxIDw8IDQpDQo+ID4gLSNk ZWZpbmUgIERLTF9EUF9NT0RFX0NGR19UUjJQV1JfR0FUSU5HCQkoMSA8PCA1KQ0KPiA+IC0jZGVm aW5lICBES0xfRFBfTU9ERV9DRkdfR0FUSU5HX0NUUkxfTUFTSwkoMHgxZiA8PCAxKQ0KPiA+IC0j ZGVmaW5lICBES0xfRFBfTU9ERV9DRkdfRFBfWDFfTU9ERQkJCSgxIDw8DQo+ID4gNikNCj4gPiAt I2RlZmluZSAgREtMX0RQX01PREVfQ0ZHX0RQX1gyX01PREUJCQkoMSA8PA0KPiA+IDcpDQo+ID4g ICNkZWZpbmUgREtMX0RQX01PREUodGNfcG9ydCkgX01NSU8oX1BPUlQodGNfcG9ydCwgXA0KPiA+ ICAJCQkJCQkgICAgIF9ES0xfUEhZMV9CQVNFLCBcDQo+ID4gIAkJCQkJCSAgICAgX0RLTF9QSFky X0JBU0UpICsNCj4gPiBcDQo+ID4gLS0gDQo+ID4gMi4yMy4wDQo+ID4gDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=