From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier MOYSAN Subject: Re: [PATCH v4 6/6] drm/bridge: sii902x: Implement HDMI audio support Date: Thu, 14 Mar 2019 15:44:39 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx07-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3882E6E20B for ; Thu, 14 Mar 2019 16:35:10 +0000 (UTC) Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x2EFaeQA013145 for ; Thu, 14 Mar 2019 16:44:42 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2r458msp6g-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Thu, 14 Mar 2019 16:44:42 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 56EF638 for ; Thu, 14 Mar 2019 15:44:40 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag6node2.st.com [10.75.127.17]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 51F13533E for ; Thu, 14 Mar 2019 15:44:40 +0000 (GMT) In-Reply-To: Content-Language: en-US Content-ID: <863ADC247607EC4CBC60A328D4742921@st.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org SGVsbG8gSnlyaSwNCg0KU1RNMzJNUDE1N0MtREsyIGRpc2NvdmVyeSBib2FyZHMgdXNlIGEgU2lJ OTAyMkEgSERNSSB0cmFuc21pdHRlci4NCnNlZTogaHR0cHM6Ly93d3cuc3QuY29tL2VuL2V2YWx1 YXRpb24tdG9vbHMvc3RtMzJtcDE1N2MtZGsyLmh0bWwNCg0KT24gdGhpcyBib2FyZCBhdWRpbyBz YW1wbGVzIGFyZSBzZW50IHRvIEhETUkgdHJhbnNtaXR0ZXIgdGhyb3VnaCB0aGUgaTJzIA0KbGlu ay4gVGhpcyBpMnMgbGluayBkb2VzIG5vdCBwcm92aWRlIGEgbWFzdGVyIGNsb2NrLiBpbnRlcm5h bCBQTEwgaXMgDQp1c2VkIGluc3RlYWQuDQoNClRoZSBzdXBwb3J0IG9mIGF1ZGlvIG9uIHRoaXMg Ym9hcmQgaXMgYWxyZWFkeSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgDQpmb2xsb3dpbmcgcGF0Y2g6 DQpodHRwczovL2dpdGh1Yi5jb20vU1RNaWNyb2VsZWN0cm9uaWNzL2xpbnV4L2Jsb2IvdjQuMTkt c3RtMzJtcC9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYw0KDQpJIHRyaWVkIHlvdXIg cGF0Y2ggb24gdGhpcyBTVE0zMk1QMTU3Qy1ESzIgYm9hcmQuIEkgY291bGQgZ2V0IGF1ZGlvLCAN CmFmdGVyIHJld29ya2luZyB0aGUgcGF0Y2guIEhvd2V2ZXIsIEkgaGFkIHRvIG1ha2UgdGhlIGZv bGxvd2luZyBjaGFuZ2VzOg0KLSBtYWtlIG1hc3RlciBjbG9jayBjb25maWd1cmF0aW9uIG9wdGlv bmFsDQotIGFkZCBvZiBncmFwaCBzdXBwb3J0IGZvciBhdWRpbw0KDQpDb3VsZCB5b3UgcGxlYXNl IHVwZGF0ZSBjdXJyZW50IHBhdGNoIHRvIHRha2UgdGhlc2UgcmVzdHJpY3Rpb25zIGludG8gDQph Y2NvdW50ID8NCg0KQlJzDQpPbGl2aWVyDQoNCg0KT24gMy8xNC8xOSAxMjoyNyBQTSwgSnlyaSBT YXJoYSB3cm90ZToNCj4gSW1wbGVtZW50IEhETUkgYXVkaW8gc3VwcG9ydCBieSB1c2luZyBBU29D IEhETUkgY29kZWMuIFRoZSBjb21taXQNCj4gaW1wbGVtZW50cyB0aGUgbmVjZXNzYXJ5IGNhbGxi YWNrcyBhbmQgY29uZmlndXJhdGlvbiBmb3IgdGhlIEhETUkNCj4gY29kZWMgYW5kIHJlZ2lzdGVy cyBhIHZpcnR1YWwgcGxhdGZvcm0gZGV2aWNlIGZvciB0aGUgY29kZWMgdG8gYXR0YWNoLg0KPiAN Cj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4NCj4gLS0tDQo+ICAg ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMgfCA0NjAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLQ0KPiAgIDEgZmlsZSBjaGFuZ2VkLCA0NTMgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3Np aTkwMnguYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jDQo+IGluZGV4IDFkOTkx MDg0NDBjMS4uMzlhMGQyNTAwOWYyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL3NpaTkwMnguYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3NpaTkwMnguYw0K PiBAQCAtMjcsMTIgKzI3LDE1IEBADQo+ICAgI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KPiAgICNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQo+ ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICAgDQo+ICAgI2luY2x1ZGUgPGRybS9kcm1QLmg+ DQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiAgICNpbmNsdWRlIDxk cm0vZHJtX2NydGNfaGVscGVyLmg+DQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPg0KPiAg IA0KPiArI2luY2x1ZGUgPHNvdW5kL2hkbWktY29kZWMuaD4NCj4gKw0KPiAgICNkZWZpbmUgU0lJ OTAyWF9UUElfVklERU9fREFUQQkJCTB4MA0KPiAgIA0KPiAgICNkZWZpbmUgU0lJOTAyWF9UUElf UElYRUxfUkVQRVRJVElPTgkJMHg4DQo+IEBAIC03NCw2ICs3Nyw3NyBAQA0KPiAgICNkZWZpbmUg U0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfTVNLCQlHRU5NQVNLKDEsIDApDQo+ICAgI2RlZmluZSBT SUk5MDJYX0FWSV9QT1dFUl9TVEFURV9EKGwpCQkoKGwpICYgU0lJOTAyWF9BVklfUE9XRVJfU1RB VEVfTVNLKQ0KPiAgIA0KPiArLyogQXVkaW8gICovDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0ky U19FTkFCTEVfTUFQUElOR19SRUcJMHgxZg0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfQ09O RklHX0ZJRk8wCQkJKDAgPDwgMCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0NPTkZJR19G SUZPMQkJCSgxIDw8IDApDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzIJ CQkoMiA8PCAwKQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8zCQkJKDMg PDwgMCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0xFRlRfUklHSFRfU1dBUAkJCSgxIDw8 IDIpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19BVVRPX0RPV05TQU1QTEUJCQkoMSA8PCAz KQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMAkJCSgwIDw8IDQpDQo+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TRUxFQ1RfU0QxCQkJKDEgPDwgNCkNCj4gKyNkZWZpbmUg U0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDIJCQkoMiA8PCA0KQ0KPiArI2RlZmluZSBTSUk5MDJY X1RQSV9JMlNfU0VMRUNUX1NEMwkJCSgzIDw8IDQpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0ky U19GSUZPX0VOQUJMRQkJCSgxIDw8IDcpDQo+ICsNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJT X0lOUFVUX0NPTkZJR19SRUcJMHgyMA0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfRklSU1Rf QklUX1NISUZUX1lFUwkJKDAgPDwgMCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0ZJUlNU X0JJVF9TSElGVF9OTwkJKDEgPDwgMCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NEX0RJ UkVDVElPTl9NU0JfRklSU1QJCSgwIDw8IDEpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19T RF9ESVJFQ1RJT05fTFNCX0ZJUlNUCQkoMSA8PCAxKQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfU0RfSlVTVElGWV9MRUZUCQkJKDAgPDwgMikNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJT X1NEX0pVU1RJRllfUklHSFQJCSgxIDw8IDIpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19X U19QT0xBUklUWV9MT1cJCQkoMCA8PCAzKQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfV1Nf UE9MQVJJVFlfSElHSAkJKDEgPDwgMykNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01DTEtf TVVMVElQTElFUl8xMjgJCSgwIDw8IDQpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xL X01VTFRJUExJRVJfMjU2CQkoMSA8PCA0KQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNM S19NVUxUSVBMSUVSXzM4NAkJKDIgPDwgNCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01D TEtfTVVMVElQTElFUl81MTIJCSgzIDw8IDQpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19N Q0xLX01VTFRJUExJRVJfNzY4CQkoNCA8PCA0KQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNf TUNMS19NVUxUSVBMSUVSXzEwMjQJCSg1IDw8IDQpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0ky U19NQ0xLX01VTFRJUExJRVJfMTE1MgkJKDYgPDwgNCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElf STJTX01DTEtfTVVMVElQTElFUl8xOTIJCSg3IDw8IDQpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0kyU19TQ0tfRURHRV9GQUxMSU5HCQkoMCA8PCA3KQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9J MlNfU0NLX0VER0VfUklTSU5HCQkJKDEgPDwgNykNCj4gKw0KPiArI2RlZmluZSBTSUk5MDJYX1RQ SV9JMlNfU1RSTV9IRFJfQkFTRQkweDIxDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TVFJN X0hEUl9TSVpFCTUNCj4gKw0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllU RTJfUkVHCTB4MjYNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX1NUUkVBTV9I RUFERVIJCSgwIDw8IDApDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19QQ00J CQkoMSA8PCAwKQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfQUMzCQkJKDIg PDwgMCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX01QRUcxCQkJKDMgPDwg MCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX01QMwkJCSg0IDw8IDApDQo+ ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19NUEVHMgkJCSg1IDw8IDApDQo+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19BQUMJCQkoNiA8PCAwKQ0KPiArI2RlZmlu ZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfRFRTCQkJKDcgPDwgMCkNCj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfQVVESU9fQ09ESU5HX0FUUkFDCQkJKDggPDwgMCkNCj4gKyNkZWZpbmUgU0lJOTAy WF9UUElfQVVESU9fTVVURV9ESVNBQkxFCQkJKDAgPDwgNCkNCj4gKyNkZWZpbmUgU0lJOTAyWF9U UElfQVVESU9fTVVURV9FTkFCTEUJCQkoMSA8PCA0KQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9B VURJT19MQVlPVVRfMl9DSEFOTkVMUwkJKDAgPDwgNSkNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElf QVVESU9fTEFZT1VUXzhfQ0hBTk5FTFMJCSgxIDw8IDUpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0FVRElPX0lOVEVSRkFDRV9ESVNBQkxFCQkoMCA8PCA2KQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQ SV9BVURJT19JTlRFUkZBQ0VfU1BESUYJCSgxIDw8IDYpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0FVRElPX0lOVEVSRkFDRV9JMlMJCQkoMiA8PCA2KQ0KPiArDQo+ICsjZGVmaW5lIFNJSTkwMlhf VFBJX0FVRElPX0NPTkZJR19CWVRFM19SRUcJMHgyNw0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9B VURJT19GUkVRX1NUUkVBTQkJCSgwIDw8IDMpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElP X0ZSRVFfMzJLSFoJCQkoMSA8PCAzKQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVR XzQ0S0haCQkJKDIgPDwgMykNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fRlJFUV80OEtI WgkJCSgzIDw8IDMpDQo+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfODhLSFoJCQko NCA8PCAzKQ0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzk2S0haCQkJKDUgPDwg MykNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fRlJFUV8xNzZLSFoJCQkoNiA8PCAzKQ0K PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzE5MktIWgkJCSg3IDw8IDMpDQo+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFX1NUUkVBTQkJKDAgPDwgNikNCj4g KyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJWkVfMTYJCSgxIDw8IDYpDQo+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFXzIwCQkoMiA8PCA2KQ0KPiArI2Rl ZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8yNAkJKDMgPDwgNikNCj4gKw0KPiAr I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTRfUkVHCTB4MjgNCj4gKw0KPiAg ICNkZWZpbmUgU0lJOTAyWF9JTlRfRU5BQkxFCQkJMHgzYw0KPiAgICNkZWZpbmUgU0lJOTAyWF9J TlRfU1RBVFVTCQkJMHgzZA0KPiAgICNkZWZpbmUgU0lJOTAyWF9IT1RQTFVHX0VWRU5UCQkJQklU KDApDQo+IEBAIC04MSw2ICsxNTUsMTYgQEANCj4gICANCj4gICAjZGVmaW5lIFNJSTkwMlhfUkVH X1RQSV9SUUIJCQkweGM3DQo+ICAgDQo+ICsvKiBJbmRpcmVjdCBpbnRlcm5hbCByZWdpc3RlciBh Y2Nlc3MgKi8NCj4gKyNkZWZpbmUgU0lJOTAyWF9JTkRfU0VUX1BBR0UJCQkweGJjDQo+ICsjZGVm aW5lIFNJSTkwMlhfSU5EX09GRlNFVAkJCTB4YmQNCj4gKyNkZWZpbmUgU0lJOTAyWF9JTkRfVkFM VUUJCQkweGJlDQo+ICsNCj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfQkFT RQkJMHhiZg0KPiArI2RlZmluZSBTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9FTkQJCTB4ZGUN Cj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfU0laRQlcDQo+ICsJKFNJSTkw MlhfVFBJX01JU0NfSU5GT0ZSQU1FX0VORCAtIFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX0JB U0UpDQo+ICsNCj4gICAjZGVmaW5lIFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJVElPTl9USU1FT1VU X01TCTUwMA0KPiAgIA0KPiAgIHN0cnVjdCBzaWk5MDJ4IHsNCj4gQEAgLTkwLDYgKzE3NCwxNiBA QCBzdHJ1Y3Qgc2lpOTAyeCB7DQo+ICAgCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsN Cj4gICAJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsNCj4gICAJc3RydWN0IGkyY19tdXhf Y29yZSAqaTJjbXV4Ow0KPiArCS8qDQo+ICsJICogTXV0ZXggcHJvdGVjdHMgYXVkaW8gYW5kIHZp ZGVvIGZ1bmN0aW9ucyBmcm9tIGludGVyZmVyaW5nDQo+ICsJICogZWFjaCBvdGhlciwgYnkga2Vl cGluZyB0aGVpciBpMmMgY29tbWFuZCBzZXF1ZW5jZXMgYXRvbWljLg0KPiArCSAqLw0KPiArCXN0 cnVjdCBtdXRleCBtdXRleDsNCj4gKwlzdHJ1Y3Qgc2lpOTAyeF9hdWRpbyB7DQo+ICsJCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7DQo+ICsJCXN0cnVjdCBjbGsgKm1jbGs7DQo+ICsJCXUz MiBpMnNfZmlmb19zZXF1ZW5jZVs0XTsNCj4gKwl9IGF1ZGlvOw0KPiAgIH07DQo+ICAgDQo+ICAg c3RhdGljIGludCBzaWk5MDJ4X3JlYWRfdW5sb2NrZWQoc3RydWN0IGkyY19jbGllbnQgKmkyYywg dTggcmVnLCB1OCAqdmFsKQ0KPiBAQCAtMTYxLDggKzI1NSwxMiBAQCBzaWk5MDJ4X2Nvbm5lY3Rv cl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4g ICAJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBjb25uZWN0b3JfdG9fc2lpOTAyeChjb25uZWN0 b3IpOw0KPiAgIAl1bnNpZ25lZCBpbnQgc3RhdHVzOw0KPiAgIA0KPiArCW11dGV4X2xvY2soJnNp aTkwMngtPm11dGV4KTsNCj4gKw0KPiAgIAlyZWdtYXBfcmVhZChzaWk5MDJ4LT5yZWdtYXAsIFNJ STkwMlhfSU5UX1NUQVRVUywgJnN0YXR1cyk7DQo+ICAgDQo+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5 MDJ4LT5tdXRleCk7DQo+ICsNCj4gICAJcmV0dXJuIChzdGF0dXMgJiBTSUk5MDJYX1BMVUdHRURf U1RBVFVTKSA/DQo+ICAgCSAgICAgICBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCA6IGNvbm5l Y3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOw0KPiAgIH0NCj4gQEAgLTE4MCwxMCArMjc4LDEyIEBA IHN0YXRpYyBpbnQgc2lpOTAyeF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcikNCj4gICB7DQo+ICAgCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gY29ubmVjdG9yX3Rv X3NpaTkwMngoY29ubmVjdG9yKTsNCj4gICAJdTMyIGJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1U X1JHQjg4OF8xWDI0Ow0KPiAtCXN0cnVjdCBlZGlkICplZGlkOw0KPiAgIAl1OCBvdXRwdXRfbW9k ZSA9IFNJSTkwMlhfU1lTX0NUUkxfT1VUUFVUX0RWSTsNCj4gKwlzdHJ1Y3QgZWRpZCAqZWRpZDsN Cj4gICAJaW50IG51bSA9IDAsIHJldDsNCj4gICANCj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5t dXRleCk7DQo+ICsNCj4gICAJZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsIHNpaTkwMngt PmkyY211eC0+YWRhcHRlclswXSk7DQo+ICAgCWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJv cGVydHkoY29ubmVjdG9yLCBlZGlkKTsNCj4gICAJaWYgKGVkaWQpIHsNCj4gQEAgLTE5NywxNCAr Mjk3LDE5IEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikNCj4gICAJcmV0ID0gZHJtX2Rpc3BsYXlfaW5mb19zZXRfYnVzX2Zvcm1h dHMoJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLA0KPiAgIAkJCQkJICAgICAgICZidXNfZm9ybWF0 LCAxKTsNCj4gICAJaWYgKHJldCkNCj4gLQkJcmV0dXJuIHJldDsNCj4gKwkJZ290byBlcnJvcl9v dXQ7DQo+ICAgDQo+ICAgCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAs IFNJSTkwMlhfU1lTX0NUUkxfREFUQSwNCj4gICAJCQkJIFNJSTkwMlhfU1lTX0NUUkxfT1VUUFVU X01PREUsIG91dHB1dF9tb2RlKTsNCj4gICAJaWYgKHJldCkNCj4gLQkJcmV0dXJuIHJldDsNCj4g KwkJZ290byBlcnJvcl9vdXQ7DQo+ICAgDQo+IC0JcmV0dXJuIG51bTsNCj4gKwlyZXQgPSBudW07 DQo+ICsNCj4gK2Vycm9yX291dDoNCj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsN Cj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBlbnVtIGRybV9t b2RlX3N0YXR1cyBzaWk5MDJ4X21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwNCj4gQEAgLTIyNCwyMCArMzI5LDI4IEBAIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdl X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gICB7DQo+ICAgCXN0cnVjdCBz aWk5MDJ4ICpzaWk5MDJ4ID0gYnJpZGdlX3RvX3NpaTkwMngoYnJpZGdlKTsNCj4gICANCj4gKwlt dXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7DQo+ICsNCj4gICAJcmVnbWFwX3VwZGF0ZV9iaXRz KHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiAgIAkJCSAgIFNJSTkw MlhfU1lTX0NUUkxfUFdSX0RXTiwNCj4gICAJCQkgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04p Ow0KPiArDQo+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7DQo+ICAgfQ0KPiAgIA0K PiAgIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKQ0KPiAgIHsNCj4gICAJc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBicmlkZ2VfdG9f c2lpOTAyeChicmlkZ2UpOw0KPiAgIA0KPiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsN Cj4gKw0KPiAgIAlyZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1BX Ul9TVEFURV9DVFJMLA0KPiAgIAkJCSAgIFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX01TSywNCj4g ICAJCQkgICBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9EKDApKTsNCj4gICAJcmVnbWFwX3VwZGF0 ZV9iaXRzKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiAgIAkJCSAg IFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RXTiwgMCk7DQo+ICsNCj4gKwltdXRleF91bmxvY2soJnNp aTkwMngtPm11dGV4KTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlk Z2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gQEAgLTI2NCwyNiArMzc3 LDMxIEBAIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdlX21vZGVfc2V0KHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UsDQo+ICAgCWJ1Zls5XSA9IFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9SQU5HRV9B VVRPIHwNCj4gICAJCSBTSUk5MDJYX1RQSV9BVklfSU5QVVRfQ09MT1JTUEFDRV9SR0I7DQo+ICAg DQo+ICsJbXV0ZXhfbG9jaygmc2lpOTAyeC0+bXV0ZXgpOw0KPiArDQo+ICAgCXJldCA9IHJlZ21h cF9idWxrX3dyaXRlKHJlZ21hcCwgU0lJOTAyWF9UUElfVklERU9fREFUQSwgYnVmLCAxMCk7DQo+ ICAgCWlmIChyZXQpDQo+IC0JCXJldHVybjsNCj4gKwkJZ290byBvdXQ7DQo+ICAgDQo+ICAgCXJl dCA9IGRybV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUoJmZyYW1lLCBhZGos IGZhbHNlKTsNCj4gICAJaWYgKHJldCA8IDApIHsNCj4gICAJCURSTV9FUlJPUigiY291bGRuJ3Qg ZmlsbCBBVkkgaW5mb2ZyYW1lXG4iKTsNCj4gLQkJcmV0dXJuOw0KPiArCQlnb3RvIG91dDsNCj4g ICAJfQ0KPiAgIA0KPiAgIAlyZXQgPSBoZG1pX2F2aV9pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1 Ziwgc2l6ZW9mKGJ1ZikpOw0KPiAgIAlpZiAocmV0IDwgMCkgew0KPiAgIAkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gcGFjayBBVkkgaW5mb2ZyYW1lOiAlZFxuIiwgcmV0KTsNCj4gLQkJcmV0dXJuOw0K PiArCQlnb3RvIG91dDsNCj4gICAJfQ0KPiAgIA0KPiAgIAkvKiBEbyBub3Qgc2VuZCB0aGUgaW5m b2ZyYW1lIGhlYWRlciwgYnV0IGtlZXAgdGhlIENSQyBmaWVsZC4gKi8NCj4gICAJcmVnbWFwX2J1 bGtfd3JpdGUocmVnbWFwLCBTSUk5MDJYX1RQSV9BVklfSU5GT0ZSQU1FLA0KPiAgIAkJCSAgYnVm ICsgSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgLSAxLA0KPiAgIAkJCSAgSERNSV9BVklfSU5G T0ZSQU1FX1NJWkUgKyAxKTsNCj4gKw0KPiArb3V0Og0KPiArCW11dGV4X3VubG9jaygmc2lpOTAy eC0+bXV0ZXgpOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgaW50IHNpaTkwMnhfYnJpZGdlX2F0 dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQ0KPiBAQCAtMzI0LDYgKzQ0MiwzMjkgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHNpaTkwMnhfYnJpZGdlX2Z1bmNz ID0gew0KPiAgIAkuZW5hYmxlID0gc2lpOTAyeF9icmlkZ2VfZW5hYmxlLA0KPiAgIH07DQo+ICAg DQo+ICtzdGF0aWMgaW50IHNpaTkwMnhfbXV0ZShzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCwgYm9v bCBtdXRlKQ0KPiArew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZzaWk5MDJ4LT5pMmMtPmRl djsNCj4gKwl1bnNpZ25lZCBpbnQgdmFsID0gbXV0ZSA/IFNJSTkwMlhfVFBJX0FVRElPX01VVEVf RU5BQkxFIDoNCj4gKwkJU0lJOTAyWF9UUElfQVVESU9fTVVURV9ESVNBQkxFOw0KPiArDQo+ICsJ ZGV2X2RiZyhkZXYsICIlczogJXNcbiIsIF9fZnVuY19fLCBtdXRlID8gIk11dGVkIiA6ICJVbm11 dGVkIik7DQo+ICsNCj4gKwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkwMngtPnJlZ21h cCwNCj4gKwkJCQkgIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFMl9SRUcsDQo+ICsJCQkJ ICBTSUk5MDJYX1RQSV9BVURJT19NVVRFX0VOQUJMRSwgdmFsKTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGludCBzaWk5MDJ4X21jbGtfZGl2X3RhYmxlW10gPSB7DQo+ICsJ MTI4LCAyNTYsIDM4NCwgNTEyLCA3NjgsIDEwMjQsIDExNTIsIDE5MiB9Ow0KPiArDQo+ICtzdGF0 aWMgaW50IHNpaTkwMnhfc2VsZWN0X21jbGtfZGl2KHU4ICppMnNfY29uZmlnX3JlZywgdW5zaWdu ZWQgaW50IHJhdGUsDQo+ICsJCQkJICAgdW5zaWduZWQgaW50IG1jbGspDQo+ICt7DQo+ICsJdW5z aWduZWQgaW50IGRpdiA9IG1jbGsgLyByYXRlOw0KPiArCWludCBkaXN0YW5jZSA9IDEwMDAwMDsN Cj4gKwl1OCBpLCBuZWFyZXN0ID0gMDsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKHNpaTkwMnhfbWNsa19kaXZfdGFibGUpOyBpKyspIHsNCj4gKwkJdW5zaWduZWQgaW50IGQg PSBhYnMoZGl2IC0gc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtpXSk7DQo+ICsNCj4gKwkJaWYgKGQg Pj0gZGlzdGFuY2UpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQluZWFyZXN0ID0gaTsNCj4g KwkJZGlzdGFuY2UgPSBkOw0KPiArCQlpZiAoZCA9PSAwKQ0KPiArCQkJYnJlYWs7DQo+ICsJfQ0K PiArDQo+ICsJKmkyc19jb25maWdfcmVnIHw9IG5lYXJlc3QgPDwgNDsNCj4gKw0KPiArCWlmIChk aXN0YW5jZSAhPSAwKQ0KPiArCQlyZXR1cm4gc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtuZWFyZXN0 XTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHNpaTkwMnhfc2FtcGxlX2ZyZXEgew0KPiArCXUzMiBmcmVxOw0KPiArCXU4IHZhbDsNCj4gK30g c2lpOTAyeF9zYW1wbGVfZnJlcVtdID0gew0KPiArCXsgLmZyZXEgPSAzMjAwMCwJLnZhbCA9IFNJ STkwMlhfVFBJX0FVRElPX0ZSRVFfMzJLSFogfSwNCj4gKwl7IC5mcmVxID0gNDQwMDAsCS52YWwg PSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzQ0S0haIH0sDQo+ICsJeyAuZnJlcSA9IDQ4MDAwLAku dmFsID0gU0lJOTAyWF9UUElfQVVESU9fRlJFUV80OEtIWiB9LA0KPiArCXsgLmZyZXEgPSA4ODAw MCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfODhLSFogfSwNCj4gKwl7IC5mcmVxID0g OTYwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzk2S0haIH0sDQo+ICsJeyAuZnJl cSA9IDE3NjAwMCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfMTc2S0haIH0sDQo+ICsJ eyAuZnJlcSA9IDE5MjAwMCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfMTkyS0haIH0s DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IHNpaTkwMnhfYXVkaW9faHdfcGFyYW1zKHN0cnVj dCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gKwkJCQkgICBzdHJ1Y3QgaGRtaV9jb2RlY19k YWlmbXQgKmRhaWZtdCwNCj4gKwkJCQkgICBzdHJ1Y3QgaGRtaV9jb2RlY19wYXJhbXMgKnBhcmFt cykNCj4gK3sNCj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOw0KPiArCXU4IGkyc19jb25maWdfcmVnID0gU0lJOTAyWF9UUElfSTJTX1NEX0RJUkVDVElP Tl9NU0JfRklSU1Q7DQo+ICsJdTggY29uZmlnX2J5dGUyX3JlZyA9IChTSUk5MDJYX1RQSV9BVURJ T19JTlRFUkZBQ0VfSTJTIHwNCj4gKwkJCSAgICAgICBTSUk5MDJYX1RQSV9BVURJT19NVVRFX0VO QUJMRSB8DQo+ICsJCQkgICAgICAgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX1BDTSk7DQo+ICsJ dTggY29uZmlnX2J5dGUzX3JlZyA9IDA7DQo+ICsJdTggaW5mb2ZyYW1lX2J1ZltIRE1JX0lORk9G UkFNRV9TSVpFKEFVRElPKV07DQo+ICsJdW5zaWduZWQgbG9uZyBtY2xrX3JhdGU7DQo+ICsJaW50 IGksIHJldDsNCj4gKw0KPiArCWlmIChkYWlmbXQtPmJpdF9jbGtfbWFzdGVyIHx8IGRhaWZtdC0+ ZnJhbWVfY2xrX21hc3Rlcikgew0KPiArCQlkZXZfZGJnKGRldiwgIiVzOiBJMlMgbWFzdGVyIG1v ZGUgbm90IHN1cHBvcnRlZFxuIiwgX19mdW5jX18pOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4g Kwl9DQo+ICsNCj4gKwlzd2l0Y2ggKGRhaWZtdC0+Zm10KSB7DQo+ICsJY2FzZSBIRE1JX0kyUzoN Cj4gKwkJaTJzX2NvbmZpZ19yZWcgfD0gU0lJOTAyWF9UUElfSTJTX0ZJUlNUX0JJVF9TSElGVF9Z RVMgfA0KPiArCQkJU0lJOTAyWF9UUElfSTJTX1NEX0pVU1RJRllfTEVGVDsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSBIRE1JX1JJR0hUX0o6DQo+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhf VFBJX0kyU19TRF9KVVNUSUZZX1JJR0hUOw0KPiArCQlicmVhazsNCj4gKwljYXNlIEhETUlfTEVG VF9KOg0KPiArCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9M RUZUOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlkZXZfZGJnKGRldiwgIiVzOiBV bnN1cHBvcnRlZCBpMnMgZm9ybWF0ICV1XG4iLCBfX2Z1bmNfXywNCj4gKwkJCWRhaWZtdC0+Zm10 KTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGRhaWZtdC0+Yml0 X2Nsa19pbnYpDQo+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19TQ0tfRURH RV9GQUxMSU5HOw0KPiArCWVsc2UNCj4gKwkJaTJzX2NvbmZpZ19yZWcgfD0gU0lJOTAyWF9UUElf STJTX1NDS19FREdFX1JJU0lORzsNCj4gKw0KPiArCWlmIChkYWlmbXQtPmZyYW1lX2Nsa19pbnYp DQo+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19XU19QT0xBUklUWV9MT1c7 DQo+ICsJZWxzZQ0KPiArCQlpMnNfY29uZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNfV1NfUE9M QVJJVFlfSElHSDsNCj4gKw0KPiArCWlmIChwYXJhbXMtPmNoYW5uZWxzID4gMikNCj4gKwkJY29u ZmlnX2J5dGUyX3JlZyB8PSBTSUk5MDJYX1RQSV9BVURJT19MQVlPVVRfOF9DSEFOTkVMUzsNCj4g KwllbHNlDQo+ICsJCWNvbmZpZ19ieXRlMl9yZWcgfD0gU0lJOTAyWF9UUElfQVVESU9fTEFZT1VU XzJfQ0hBTk5FTFM7DQo+ICsNCj4gKwlzd2l0Y2ggKHBhcmFtcy0+c2FtcGxlX3dpZHRoKSB7DQo+ ICsJY2FzZSAxNjoNCj4gKwkJY29uZmlnX2J5dGUzX3JlZyB8PSBTSUk5MDJYX1RQSV9BVURJT19T QU1QTEVfU0laRV8xNjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAyMDoNCj4gKwkJY29uZmlnX2J5 dGUzX3JlZyB8PSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8yMDsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSAyNDoNCj4gKwljYXNlIDMyOg0KPiArCQljb25maWdfYnl0ZTNfcmVnIHw9IFNJ STkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpFXzI0Ow0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0 Og0KPiArCQlkZXZfZXJyKGRldiwgIiVzOiBVbnN1cHBvcnRlZCBzYW1wbGUgd2lkdGggJXVcbiIs IF9fZnVuY19fLA0KPiArCQkJcGFyYW1zLT5zYW1wbGVfd2lkdGgpOw0KPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaWk5MDJ4 X3NhbXBsZV9mcmVxKTsgaSsrKSB7DQo+ICsJCWlmIChwYXJhbXMtPnNhbXBsZV9yYXRlID09IHNp aTkwMnhfc2FtcGxlX2ZyZXFbaV0uZnJlcSkgew0KPiArCQkJY29uZmlnX2J5dGUzX3JlZyB8PSBz aWk5MDJ4X3NhbXBsZV9mcmVxW2ldLnZhbDsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0K PiArDQo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHNpaTkwMngtPmF1ZGlvLm1jbGspOw0K PiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycihkZXYsICJFbmFibGluZyBtY2xrIGZhaWxlZDog JWRcbiIsIHJldCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJbWNsa19yYXRl ID0gY2xrX2dldF9yYXRlKHNpaTkwMngtPmF1ZGlvLm1jbGspOw0KPiArDQo+ICsJcmV0ID0gc2lp OTAyeF9zZWxlY3RfbWNsa19kaXYoJmkyc19jb25maWdfcmVnLCBwYXJhbXMtPnNhbXBsZV9yYXRl LA0KPiArCQkJCSAgICAgIG1jbGtfcmF0ZSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZGV2X2RiZyhk ZXYsICJJbmFjY3VyYXRlIHJlZmVyZW5jZSBjbG9jayAoJWxkLyVkICE9ICV1KVxuIiwNCj4gKwkJ CW1jbGtfcmF0ZSwgcmV0LCBwYXJhbXMtPnNhbXBsZV9yYXRlKTsNCj4gKw0KPiArCW11dGV4X2xv Y2soJnNpaTkwMngtPm11dGV4KTsNCj4gKw0KPiArCXJldCA9IHJlZ21hcF93cml0ZShzaWk5MDJ4 LT5yZWdtYXAsDQo+ICsJCQkgICBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTJfUkVHLA0K PiArCQkJICAgY29uZmlnX2J5dGUyX3JlZyk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCWdvdG8g b3V0Ow0KPiArDQo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAy WF9UUElfSTJTX0lOUFVUX0NPTkZJR19SRUcsDQo+ICsJCQkgICBpMnNfY29uZmlnX3JlZyk7DQo+ ICsJaWYgKHJldCkNCj4gKwkJZ290byBvdXQ7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBzaWk5MDJ4 LT5hdWRpby5pMnNfZmlmb19zZXF1ZW5jZVtpXSAmJg0KPiArCQkgICAgIGkgPCBBUlJBWV9TSVpF KHNpaTkwMngtPmF1ZGlvLmkyc19maWZvX3NlcXVlbmNlKTsgaSsrKQ0KPiArCQlyZWdtYXBfd3Jp dGUoc2lpOTAyeC0+cmVnbWFwLA0KPiArCQkJICAgICBTSUk5MDJYX1RQSV9JMlNfRU5BQkxFX01B UFBJTkdfUkVHLA0KPiArCQkJICAgICBzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19zZXF1ZW5jZVtp XSk7DQo+ICsNCj4gKwlyZXQgPSByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJY X1RQSV9BVURJT19DT05GSUdfQllURTNfUkVHLA0KPiArCQkJICAgY29uZmlnX2J5dGUzX3JlZyk7 DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBvdXQ7DQo+ICsNCj4gKwlyZXQgPSByZWdtYXBfYnVs a193cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfVFBJX0kyU19TVFJNX0hEUl9CQVNFLA0K PiArCQkJCXBhcmFtcy0+aWVjLnN0YXR1cywNCj4gKwkJCQltaW4oKHNpemVfdCkgU0lJOTAyWF9U UElfSTJTX1NUUk1fSERSX1NJWkUsDQo+ICsJCQkJICAgIHNpemVvZihwYXJhbXMtPmllYy5zdGF0 dXMpKSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJZ290byBvdXQ7DQo+ICsNCj4gKwlyZXQgPSBoZG1p X2F1ZGlvX2luZm9mcmFtZV9wYWNrKCZwYXJhbXMtPmNlYSwgaW5mb2ZyYW1lX2J1ZiwNCj4gKwkJ CQkJc2l6ZW9mKGluZm9mcmFtZV9idWYpKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlkZXZf ZXJyKGRldiwgIiVzOiBGYWlsZWQgdG8gcGFjayBhdWRpbyBpbmZvZnJhbWU6ICVkXG4iLA0KPiAr CQkJX19mdW5jX18sIHJldCk7DQo+ICsJCWdvdG8gb3V0Ow0KPiArCX0NCj4gKw0KPiArCXJldCA9 IHJlZ21hcF9idWxrX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwNCj4gKwkJCQlTSUk5MDJYX1RQSV9N SVNDX0lORk9GUkFNRV9CQVNFLA0KPiArCQkJCWluZm9mcmFtZV9idWYsDQo+ICsJCQkJbWluKHJl dCwgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfU0laRSkpOw0KPiArCWlmIChyZXQpDQo+ICsJ CWdvdG8gb3V0Ow0KPiArDQo+ICsJLyogRGVjb2RlIExldmVsIDAgUGFja2V0cyAqLw0KPiArCXJl dCA9IHJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5EX1NFVF9QQUdFLCAw eDAyKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlnb3RvIG91dDsNCj4gKw0KPiArCXJldCA9IHJlZ21h cF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5EX09GRlNFVCwgMHgyNCk7DQo+ICsJ aWYgKHJldCkNCj4gKwkJZ290byBvdXQ7DQo+ICsNCj4gKwlyZXQgPSByZWdtYXBfd3JpdGUoc2lp OTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lORF9WQUxVRSwgMHgwMik7DQo+ICsJaWYgKHJldCkNCj4g KwkJZ290byBvdXQ7DQo+ICsNCj4gKwlkZXZfZGJnKGRldiwgIiVzOiBoZG1pIGF1ZGlvIGVuYWJs ZWRcbiIsIF9fZnVuY19fKTsNCj4gK291dDoNCj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11 dGV4KTsNCj4gKw0KPiArCWlmIChyZXQpIHsNCj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHNp aTkwMngtPmF1ZGlvLm1jbGspOw0KPiArCQlkZXZfZXJyKGRldiwgIiVzOiBoZG1pIGF1ZGlvIGVu YWJsZSBmYWlsZWQ6ICVkXG4iLCBfX2Z1bmNfXywNCj4gKwkJCXJldCk7DQo+ICsJfQ0KPiArDQo+ ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgc2lpOTAyeF9hdWRpb19z aHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpDQo+ICt7DQo+ICsJc3RydWN0 IHNpaTkwMnggKnNpaTkwMnggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCW11dGV4 X2xvY2soJnNpaTkwMngtPm11dGV4KTsNCj4gKw0KPiArCXJlZ21hcF93cml0ZShzaWk5MDJ4LT5y ZWdtYXAsIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFMl9SRUcsDQo+ICsJCSAgICAgU0lJ OTAyWF9UUElfQVVESU9fSU5URVJGQUNFX0RJU0FCTEUpOw0KPiArDQo+ICsJbXV0ZXhfdW5sb2Nr KCZzaWk5MDJ4LT5tdXRleCk7DQo+ICsNCj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoc2lpOTAy eC0+YXVkaW8ubWNsayk7DQo+ICt9DQo+ICsNCj4gK2ludCBzaWk5MDJ4X2F1ZGlvX2RpZ2l0YWxf bXV0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIGJvb2wgZW5hYmxlKQ0KPiArew0K PiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsN Cj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7DQo+ICsNCj4gKwlzaWk5MDJ4X211dGUo c2lpOTAyeCwgZW5hYmxlKTsNCj4gKw0KPiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgp Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgc2lpOTAyeF9h dWRpb19nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gKwkJCQkgdWlu dDhfdCAqYnVmLCBzaXplX3QgbGVuKQ0KPiArew0KPiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4 ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5t dXRleCk7DQo+ICsNCj4gKwltZW1jcHkoYnVmLCBzaWk5MDJ4LT5jb25uZWN0b3IuZWxkLA0KPiAr CSAgICAgICBtaW4oc2l6ZW9mKHNpaTkwMngtPmNvbm5lY3Rvci5lbGQpLCBsZW4pKTsNCj4gKw0K PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaGRtaV9jb2RlY19vcHMgc2lpOTAyeF9h dWRpb19jb2RlY19vcHMgPSB7DQo+ICsJLmh3X3BhcmFtcyA9IHNpaTkwMnhfYXVkaW9faHdfcGFy YW1zLA0KPiArCS5hdWRpb19zaHV0ZG93biA9IHNpaTkwMnhfYXVkaW9fc2h1dGRvd24sDQo+ICsJ LmRpZ2l0YWxfbXV0ZSA9IHNpaTkwMnhfYXVkaW9fZGlnaXRhbF9tdXRlLA0KPiArCS5nZXRfZWxk ID0gc2lpOTAyeF9hdWRpb19nZXRfZWxkLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBzaWk5 MDJ4X2F1ZGlvX2NvZGVjX2luaXQoc3RydWN0IHNpaTkwMnggKnNpaTkwMngsDQo+ICsJCQkJICAg IHN0cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdGF0aWMgY29uc3QgdTggYXVkaW9fZmlm b19pZFtdID0gew0KPiArCQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8wLA0KPiArCQlTSUk5 MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8xLA0KPiArCQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJ Rk8yLA0KPiArCQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8zLA0KPiArCX07DQo+ICsJc3Rh dGljIGNvbnN0IHU4IGkyc19sYW5lX2lkW10gPSB7DQo+ICsJCVNJSTkwMlhfVFBJX0kyU19TRUxF Q1RfU0QwLA0KPiArCQlTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMSwNCj4gKwkJU0lJOTAyWF9U UElfSTJTX1NFTEVDVF9TRDIsDQo+ICsJCVNJSTkwMlhfVFBJX0kyU19TRUxFQ1RfU0QzLA0KPiAr CX07DQo+ICsJc3RydWN0IGhkbWlfY29kZWNfcGRhdGEgY29kZWNfZGF0YSA9IHsNCj4gKwkJLm9w cyA9ICZzaWk5MDJ4X2F1ZGlvX2NvZGVjX29wcywNCj4gKwkJLmkycyA9IDEsIC8qIE9ubHkgaTJz IHN1cHBvcnQgZm9yIG5vdy4gKi8NCj4gKwkJLnNwZGlmID0gMCwNCj4gKwkJLm1heF9pMnNfY2hh bm5lbHMgPSAwLA0KPiArCX07DQo+ICsJdTggbGFuZXNbNF07DQo+ICsJdTMyIG51bV9sYW5lcywg aTsNCj4gKw0KPiArCW51bV9sYW5lcyA9IG9mX3Byb3BlcnR5X3JlYWRfdmFyaWFibGVfdThfYXJy YXkoZGV2LT5vZl9ub2RlLA0KPiArCQkJCQkJICAgICAgICJpMnMtZGF0YS1sYW5lcyIsDQo+ICsJ CQkJCQkgICAgICAgbGFuZXMsIDEsDQo+ICsJCQkJCQkgICAgICAgQVJSQVlfU0laRShsYW5lcykp Ow0KPiArCWlmIChudW1fbGFuZXMgPCAwKSB7DQo+ICsJCWlmIChudW1fbGFuZXMgPT0gLUVJTlZB TCkNCj4gKwkJCWRldl9kYmcoZGV2LCAiJXM6IE5vIFwiaTJzLWRhdGEtbGFuZXNcIiwgbm8gYXVk aW9cbiIsDQo+ICsJCQlfX2Z1bmNfXyk7DQo+ICsJCWVsc2UNCj4gKwkJCWRldl9lcnIoZGV2LA0K PiArCQkJCSIlczogRXJyb3IgZ2V0dGluIFwiaTJzLWRhdGEtbGFuZXNcIjogJWRcbiIsDQo+ICsJ CQkJX19mdW5jX18sIG51bV9sYW5lcyk7DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKwljb2Rl Y19kYXRhLm1heF9pMnNfY2hhbm5lbHMgPSAyICogbnVtX2xhbmVzOw0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IG51bV9sYW5lczsgaSsrKQ0KPiArCQlzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19z ZXF1ZW5jZVtpXSB8PSBhdWRpb19maWZvX2lkW2ldIHwNCj4gKwkJCWkyc19sYW5lX2lkW2xhbmVz W2ldXSB8CVNJSTkwMlhfVFBJX0kyU19GSUZPX0VOQUJMRTsNCj4gKw0KPiArCWlmIChJU19FUlIo c2lpOTAyeC0+YXVkaW8ubWNsaykpIHsNCj4gKwkJZGV2X2VycihkZXYsICIlczogTm8gY2xvY2sg KGF1ZGlvIG1jbGspIGZvdW5kOiAlbGRcbiIsDQo+ICsJCQlfX2Z1bmNfXywgUFRSX0VSUihzaWk5 MDJ4LT5hdWRpby5tY2xrKSk7DQo+ICsJCXJldHVybiAwOw0KPiArCX0NCj4gKw0KPiArCXNpaTkw MngtPmF1ZGlvLnBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgNCj4gKwkJZGV2 LCBIRE1JX0NPREVDX0RSVl9OQU1FLCBQTEFURk9STV9ERVZJRF9BVVRPLA0KPiArCQkmY29kZWNf ZGF0YSwgc2l6ZW9mKGNvZGVjX2RhdGEpKTsNCj4gKw0KPiArCXJldHVybiBQVFJfRVJSX09SX1pF Uk8oc2lpOTAyeC0+YXVkaW8ucGRldik7DQo+ICt9DQo+ICsNCj4gICBzdGF0aWMgY29uc3Qgc3Ry dWN0IHJlZ21hcF9yYW5nZSBzaWk5MDJ4X3ZvbGF0aWxlX3Jhbmdlc1tdID0gew0KPiAgIAl7IC5y YW5nZV9taW4gPSAwLCAucmFuZ2VfbWF4ID0gMHhmZiB9LA0KPiAgIH07DQo+IEBAIC0zMzYsNiAr Nzc3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlIHNpaTkwMnhf dm9sYXRpbGVfdGFibGUgPSB7DQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmln IHNpaTkwMnhfcmVnbWFwX2NvbmZpZyA9IHsNCj4gICAJLnJlZ19iaXRzID0gOCwNCj4gICAJLnZh bF9iaXRzID0gOCwNCj4gKwkubWF4X3JlZ2lzdGVyID0gU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJB TUVfRU5ELA0KPiAgIAkudm9sYXRpbGVfdGFibGUgPSAmc2lpOTAyeF92b2xhdGlsZV90YWJsZSwN Cj4gICAJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLA0KPiAgIH07DQo+IEBAIC01MDgsNiAr OTUwLDggQEAgc3RhdGljIGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQsDQo+ICAgCQlyZXR1cm4gUFRSX0VSUihzaWk5MDJ4LT5yZXNldF9ncGlvKTsNCj4gICAJfQ0K PiAgIA0KPiArCW11dGV4X2luaXQoJnNpaTkwMngtPm11dGV4KTsNCj4gKw0KPiAgIAlzaWk5MDJ4 X3Jlc2V0KHNpaTkwMngpOw0KPiAgIA0KPiAgIAlyZXQgPSByZWdtYXBfd3JpdGUoc2lpOTAyeC0+ cmVnbWFwLCBTSUk5MDJYX1JFR19UUElfUlFCLCAweDApOw0KPiBAQCAtNTQ4LDYgKzk5Miw4IEBA IHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiAg IAlzaWk5MDJ4LT5icmlkZ2UudGltaW5ncyA9ICZkZWZhdWx0X3NpaTkwMnhfdGltaW5nczsNCj4g ICAJZHJtX2JyaWRnZV9hZGQoJnNpaTkwMngtPmJyaWRnZSk7DQo+ICAgDQo+ICsJc2lpOTAyeF9h dWRpb19jb2RlY19pbml0KHNpaTkwMngsIGRldik7DQo+ICsNCj4gICAJaTJjX3NldF9jbGllbnRk YXRhKGNsaWVudCwgc2lpOTAyeCk7DQo+ICAgDQo+ICAgCXNpaTkwMngtPmkyY211eCA9IGkyY19t dXhfYWxsb2MoY2xpZW50LT5hZGFwdGVyLCBkZXYsDQo+IApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWw=