From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fabrizio Castro Subject: RE: [RFC] drm/bridge/sii902x: Fix EDID readback Date: Wed, 31 Oct 2018 16:55:53 +0000 Message-ID: References: <1540990667-14109-1-git-send-email-fabrizio.castro@bp.renesas.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Linus Walleij , Mark Brown Cc: Geert Uytterhoeven , Wolfram Sang , Dave Airlie , Boris BREZILLON , Chris Paterson , "open list:DRM PANEL DRIVERS" , Biju Das , Linux-Renesas , Simon Horman , Laurent Pinchart , Peter Rosin , "linux-i2c@vger.kernel.org" List-Id: linux-i2c@vger.kernel.org SGVsbG8gTGludXMsDQoNCj4gU3ViamVjdDogUmU6IFtSRkNdIGRybS9icmlkZ2Uvc2lpOTAyeDog Rml4IEVESUQgcmVhZGJhY2sNCj4NCj4gSGkgRmFicml6aW8sDQo+DQo+IHRoYW5rcyBmb3IgeW91 ciBwYXRjaCENCg0KVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrIQ0KDQo+DQo+IE9uIFdlZCwg T2N0IDMxLCAyMDE4IGF0IDE6NTggUE0gRmFicml6aW8gQ2FzdHJvDQo+IDxmYWJyaXppby5jYXN0 cm9AYnAucmVuZXNhcy5jb20+IHdyb3RlOg0KPg0KPiA+IFdoaWxlIGFkZGluZyBTaUk5MDIyQSBz dXBwb3J0IHRvIHRoZSBpd2cyM3MgYm9hcmQgaXQgY2FtZSB1cA0KPiA+IHRoYXQgd2hlbiB0aGUg SERNSSB0cmFuc21pdHRlciBpcyBpbiBwYXNzIHRocm91Z2ggbW9kZSB0aGUNCj4gPiBkZXZpY2Ug aXMgbm90IGNvbXBsaWFudCB3aXRoIHRoZSBJMkMgc3BlY2lmaWNhdGlvbiBhbnltb3JlLA0KPiA+ IGFzIGl0IHJlcXVpcmVzIGEgZmFyIGJpZ2dlciB0YnVmIGR1ZSB0byBhIGRlbGF5IHRoZSBIRE1J DQo+ID4gdHJhbnNtaXR0ZXIgaXMgYWRkaW5nIHdoZW4gcmVsYXlpbmcgdGhlIFNUT1AgY29uZGl0 aW9uIG9uIHRoZQ0KPiA+IG1vbml0b3IgaTJjIHNpZGUgb2YgdGhpbmdzLiBXaGVuIG5vdCBwcm92 aWRpbmcgYW4gYXBwcm9wcmlhdGUNCj4gPiBkZWxheSBhZnRlciB0aGUgU1RPUCBjb25kaXRpb24g dGhlIGkyYyBidXMgd291bGQgZ2V0IHN0dWNrLg0KPiA+IEFsc28sIGFueSBvdGhlciB0cmFmZmlj IG9uIHRoZSBidXMgd2hpbGUgdGFsa2luZyB0byB0aGUgbW9uaXRvcg0KPiA+IG1heSBjYXVzZSB0 aGUgdHJhbnNhY3Rpb24gdG8gZmFpbCBvciBldmVuIGNhdXNlIGlzc3VlcyB3aXRoIHRoZQ0KPiA+ IGkyYyBidXMgYXMgd2VsbC4NCj4gPg0KPiA+IEkyYy1nYXRlcyBzZWVtZWQgdG8gcmVhY2ggY29u c2VudCBhcyBhIHBvc3NpYmxlIHdheSB0byBhZGRyZXNzDQo+ID4gdGhlc2UgaXNzdWVzLCBhbmQg YXMgc3VjaCB0aGlzIHBhdGNoIGlzIGltcGxlbWVudGluZyBhIHNvbHV0aW9uDQo+ID4gYmFzZWQg b24gdGhhdC4gU2luY2Ugb3RoZXJzIGFyZSBjbGVhcmx5IHJlbHlpbmcgb24gdGhlIGN1cnJlbnQN Cj4gPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZHJpdmVyLCB0aGlzIHBhdGNoIHdvbid0IHJlcXVp cmUgYW55IERUDQo+ID4gY2hhbmdlcy4NCj4gPg0KPiA+IFNpbmNlIHdlIGRvbid0IHdhbnQgYW55 IGludGVyZmVyZW5jZSBkdXJpbmcgdGhlIEREQyBCdXMNCj4gPiBSZXF1ZXN0L0dyYW50IHByb2Nl ZHVyZSBhbmQgd2hpbGUgdGFsa2luZyB0byB0aGUgbW9uaXRvciwgd2UgaGF2ZQ0KPiA+IHRvIHVz ZSB0aGUgYWRhcHRlciBsb2NraW5nIHByaW1pdGl2ZXMgcmF0aGVyIHRoYW4gdGhlIGkyYy1tdXgN Cj4gPiBsb2NraW5nIHByaW1pdGl2ZXMsIGJ1dCBpbiBvcmRlciB0byBhY2hpZXZlIHRoYXQgSSBo YWQgdG8gZ2V0DQo+ID4gcmlkIG9mIHJlZ21hcC4NCj4NCj4gV2h5IGRpZCB5b3UgaGF2ZSB0byBy ZW1vdmUgcmVnbWFwPyBJdCBpcyBwZXJmZWN0bHkgcG9zc2libGUNCj4gdG8gb3ZlcnJpZGUgYW55 IHJlYWRpbmcvd3JpdGluZyBvcGVyYXRpb25zIGxvY2FsbHkgaWYgeW91IGRvbid0DQo+IHdhbnQg dG8gdXNlIHRoZSByZWdtYXAgaTJjIHZhcmlhbnRzLg0KPg0KPiBUaGUgY29kZSBpbiB5b3VyIHBh dGNoIGRvZXMgbm90IG1ha2UgaXQgZXZpZGVudCB0byBtZSBleGFjdGx5DQo+IHdoZXJlIHRoZSBw cm9ibGVtIGlzIHdpdGggcmVnbWFwLCBhbHNvIEkgYmV0IHRoZSByZWdtYXANCj4gbWFpbnRhaW5l ciB3b3VsZCBsb3ZlIHRvIGhlYXIgYWJvdXQgaXQgc28gd2UgY2FuIGF0dGVtcHQgdG8NCj4gZml4 IGl0IHRoZXJlIGluc3RlYWQgb2YgbG9jYWxseSBpbiB0aGlzIGRyaXZlci4NCj4NCj4gQUZBSUNU IHRoZXJlIGlzIHNvbWUgbG9ja2VkIHZzIHVubG9ja2VkIGJ1c2luZXNzIGFuZCBJDQo+IHN0cm9u Z2x5IGhvcGUgdGhlcmUgaXMgc29tZSB3YXkgdG8gc2ltcGx5IHBhc3MgdGhhdCBkb3duDQo+IGlu dG8gd2hhdGV2ZXIgZnVuY3Rpb25zIHJlZ21hcCBlbmQgdXAgY2FsbGluZyBzbyB3ZSBkb24ndA0K PiBoYXZlIHRvIGNoYW5nZSBhbGwgY2FsbCBzaXRlcy4NCg0KWWVhaCwgdGhlcmUgaXMgc29tZSBp c3N1ZSB3aXRoIGxvY2tpbmcgaGVyZSwgYW5kIHRoYXQncyBjb21pbmcgZG93bg0KZnJvbSB0aGUg ZmFjdCB0aGF0IHdoZW4gd2UgY2FsbCBpbnRvIGRybV9nZXRfZWRpZCwgd2UgaW1wbGljaXRseSBj YWxsDQppMmNfdHJhbnNmZXIgd2hpY2ggdWx0aW1hdGVseSBsb2NrcyB0aGUgaTJjIGFkYXB0ZXIs IGFuZCB0aGVuIGNhbGxzDQppbnRvIG91ciBzaWk5MDJ4X2kyY19ieXBhc3Nfc2VsZWN0LCB3aGlj aCBpbiB0dXJuIGNhbGxzIGludG8gdGhlIHJlZ21hcA0KZnVuY3Rpb25zIGFuZCB0aGVyZWZvcmUg d2UgdHJ5IGFuZCBsb2NrIHRoZSBzYW1lIGkyYyBhZGFwdGVyIGFnYWluLA0KZHJpdmluZyB0aGUg c3lzdGVtIGludG8gYSBkZWFkbG9jay4NCkhhdmluZyB0aGUgb3B0aW9uIG9mIHVzaW5nICJ1bmxv Y2tlZCIgZmxhdm91cnMgb2YgcmVhZHMgYW5kIHdyaXRlcw0KaXMgd2hhdCB3ZSBuZWVkIGhlcmUs IGJ1dCBsb29raW5nIGF0IGRyaXZlcnMvYmFzZS9yZWdtYXAvcmVnbWFwLWkyYy5jDQpJIGNvdWxk bid0IGZpbmQgYW55dGhpbmcgc3VpdGFibGUgZm9yIG15IGNhc2UsIG1heWJlIE1hcmsgY291bGQg YWR2aXNlDQpvbiB0aGlzIG9uZT8gSSBhbSBzdXJlIEkgb3Zlcmxvb2tlZCBzb21ldGhpbmcgaGVy ZSwgaXMgdGhlcmUgYSBiZXR0ZXINCndheSB0byBhZGRyZXNzIHRoaXM/DQoNCj4NCj4gKFNvIHBs ZWFzZSBpbmNsdWRlIE1hcmsgQnJvd24gb24gQ0MgaW4gZnV0dXJlIGl0ZXJhdGlvbnMuKQ0KPg0K PiA+IFNpZ25lZC1vZmYtYnk6IEZhYnJpemlvIENhc3RybyA8ZmFicml6aW8uY2FzdHJvQGJwLnJl bmVzYXMuY29tPg0KPiA+IC0tLQ0KPiA+IERlYXIgQWxsLA0KPiA+DQo+ID4gdGhpcyBpcyBhIGZv bGxvdyB1cCB0bzoNCj4gPiBodHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2xpbnV4LXJlbmVz YXMtc29jQHZnZXIua2VybmVsLm9yZy9tc2czMjA3Mi5odG1sDQo+ID4NCj4gPiBDb21tZW50cyB2 ZXJ5IHdlbGNvbWUhDQo+DQo+IEF0IHRoZSB2ZXJ5IGxlYXN0IEkgdGhpbmsgdGhlIHBhdGNoIG5l ZWRzIHRvIGJlIHNwbGl0IGluIHR3bywNCj4gb25lIGRlYWxpbmcgd2l0aCB0aGUgbG9ja2luZyBi dXNpbmVzcyBhbmQgb25lIGRlYWxpbmcgd2l0aA0KPiB0aGUgYnVmZmVyIHNpemUuIEFzIGl0IGxv b2tzIG5vdyBpdCBpcyB2ZXJ5IGhhcmQgdG8gcmV2aWV3Lg0KDQpUaGUgY2hhbmdlIHdpdGggdGhl IGJ1ZmZlciBzaXplIGNvbWVzIGRvd24gZnJvbSBzaWk5MDJ4X2J1bGtfd3JpdGUgaW1wbGVtZW50 YXRpb24sDQp3aGljaCBidHcgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJlc2Vt YmxlcyBpdHMgcmVnbWFwIGVxdWl2YWxlbnQsIGluIHRlcm1zDQpvZiBwYXJhbWV0ZXJzLg0KDQo+ DQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gRmFiDQo+ID4NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9zaWk5MDJ4LmMgfCA0MDQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMTMwIGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAy eC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMNCj4gPiBpbmRleCBlNTlhMTM1 Li4xMzdhMDVhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAy eC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMNCj4gPiBAQCAt MjEsOSArMjEsOSBAQA0KPiA+ICAgKi8NCj4gPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaTJjLW11eC5oPg0KPiA+ICAjaW5jbHVk ZSA8bGludXgvaTJjLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiAtI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiA+DQo+ID4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPg0K PiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+ID4gQEAgLTgyLDEyICs4 MiwxMzAgQEANCj4gPg0KPiA+ICBzdHJ1Y3Qgc2lpOTAyeCB7DQo+ID4gICAgICAgICBzdHJ1Y3Qg aTJjX2NsaWVudCAqaTJjOw0KPiA+IC0gICAgICAgc3RydWN0IHJlZ21hcCAqcmVnbWFwOw0KPiA+ ICAgICAgICAgc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOw0KPiA+ICAgICAgICAgc3RydWN0IGRy bV9jb25uZWN0b3IgY29ubmVjdG9yOw0KPiA+ICAgICAgICAgc3RydWN0IGdwaW9fZGVzYyAqcmVz ZXRfZ3BpbzsNCj4gPiArICAgICAgIHN0cnVjdCBpMmNfbXV4X2NvcmUgKmkyY211eDsNCj4gPiAg fTsNCj4gPg0KPiA+ICtzdGF0aWMgaW50IHNpaTkwMnhfdHJhbnNmZXJfcmVhZChzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjLCB1OCByZWcsIHU4ICp2YWwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdTE2IGxlbiwgYm9vbCBsb2NrZWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0 cnVjdCBpMmNfbXNnIHhmZXJbXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIC5hZGRyID0gaTJjLT5hZGRyLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIC5mbGFncyA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLmxlbiA9 IDEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLmJ1ZiA9ICZyZWcsDQo+ID4gKyAgICAg ICAgICAgICAgIH0sIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAuYWRkciA9IGkyYy0+ YWRkciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAuZmxhZ3MgPSBJMkNfTV9SRCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAubGVuID0gbGVuLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIC5idWYgPSB2YWwsDQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAg IH07DQo+ID4gKyAgICAgICB1bnNpZ25lZCBjaGFyIHhmZXJzID0gQVJSQVlfU0laRSh4ZmVyKTsN Cj4gPiArICAgICAgIGludCByZXQsIHJldHJpZXMgPSA1Ow0KPiA+ICsNCj4gPiArICAgICAgIGRv IHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGxvY2tlZCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXQgPSBpMmNfdHJhbnNmZXIoaTJjLT5hZGFwdGVyLCB4ZmVyLCB4ZmVycyk7DQo+ ID4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXQg PSBfX2kyY190cmFuc2ZlcihpMmMtPmFkYXB0ZXIsIHhmZXIsIHhmZXJzKTsNCj4gPiArICAgICAg ICAgICAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiArICAgICAgIH0gd2hpbGUgKHJldCAhPSB4ZmVycyAmJiAtLXJldHJpZXMpOw0K PiA+ICsgICAgICAgcmV0dXJuIHJldCA9PSB4ZmVycyA/IDAgOiAtMTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBzaWk5MDJ4X2J1bGtfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqaTJj LCB1OCByZWcsIHU4ICp2YWwsIHUxNiBsZW4pDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVybiBz aWk5MDJ4X3RyYW5zZmVyX3JlYWQoaTJjLCByZWcsIHZhbCwgbGVuLCB0cnVlKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBfX3NpaTkwMnhfYnVsa19yZWFkKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMsIHU4IHJlZywgdTggKnZhbCwgdTE2IGxlbikNCj4gPiArew0KPiA+ICsgICAgICAg cmV0dXJuIHNpaTkwMnhfdHJhbnNmZXJfcmVhZChpMmMsIHJlZywgdmFsLCBsZW4sIGZhbHNlKTsN Cj4gPiArfQ0KPg0KPiBJJ20gbm90IGEgZmFuIG9mIF9fZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMg c3ludGFjdGljYWxseQ0KPiBhbWJpZ291cyB3aGF0IHRoYXQgbWVhbnMuDQo+DQo+IEV4YW1wbGUg c2V0X2JpdCgpIHZzIF9fc2V0X2JpdCgpIC0gaXMgaXQgb2J2aW91cyBmcm9tIGNvbnRleHQNCj4g dGhhdCB0aGUgbGF0dGVyIGlzIG5vbi1hdG9taWM/IE5vLg0KPg0KPiBHaXZlIHRoZXNlIGZ1bmN0 aW9ucyBuYW1lcyB0aGF0IGluZGljYXRlIGV4YWN0bHkgd2hhdCB0aGV5DQo+IGRvIGFuZCB3aHks IHBsZWFzZS4NCj4NCj4gKl9sb2NrZWQgYW5kICpfdW5sb2NrZWQgdmFyaWFudHM/DQoNCkkgYWdy ZWUsIHdpbGwgZG8gdGhhdA0KDQo+DQo+ID4gK3N0YXRpYyBpbnQgc2lpOTAyeF9yZWFkKHN0cnVj dCBpMmNfY2xpZW50ICppMmMsIHU4IHJlZywgdTggKnZhbCkNCj4gPiArew0KPiA+ICsgICAgICAg cmV0dXJuIHNpaTkwMnhfYnVsa19yZWFkKGkyYywgcmVnLCB2YWwsIDEpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IF9fc2lpOTAyeF9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICppMmMs IHU4IHJlZywgdTggKnZhbCkNCj4gPiArew0KPiA+ICsgICAgICAgcmV0dXJuIF9fc2lpOTAyeF9i dWxrX3JlYWQoaTJjLCByZWcsIHZhbCwgMSk7DQo+ID4gK30NCj4NCj4gRGl0bw0KPg0KPiA+ICtz dGF0aWMgaW50IHNpaTkwMnhfdHJhbnNmZXJfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmkyYywg dTggKnZhbCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgbGVuLCBi b29sIGxvY2tlZCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGkyY19tc2cgeGZlciA9IHsN Cj4gPiArICAgICAgICAgICAgICAgLmFkZHIgPSBpMmMtPmFkZHIsDQo+ID4gKyAgICAgICAgICAg ICAgIC5mbGFncyA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgIC5sZW4gPSBsZW4sDQo+ID4gKyAg ICAgICAgICAgICAgIC5idWYgPSB2YWwsDQo+ID4gKyAgICAgICB9Ow0KPiA+ICsgICAgICAgaW50 IHJldCwgcmV0cmllcyA9IDU7DQo+ID4gKw0KPiA+ICsgICAgICAgZG8gew0KPiA+ICsgICAgICAg ICAgICAgICBpZiAobG9ja2VkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGky Y190cmFuc2ZlcihpMmMtPmFkYXB0ZXIsICZ4ZmVyLCAxKTsNCj4gPiArICAgICAgICAgICAgICAg ZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IF9faTJjX3RyYW5zZmVyKGky Yy0+YWRhcHRlciwgJnhmZXIsIDEpOw0KPg0KPiBUaGlzIGxvY2tlZCB2YXJpYWJsZSBzZWVtcyB0 byBiZSB0aGUgbWFnaWMgZHVzdCBzbw0KPiBwbGVhc2UgZG9jdW1lbnQgaXQgdGhvcnVnaGx5Lg0K DQpXaWxsIGRvDQoNCj4NCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIH0gd2hpbGUgKCFy ZXQgJiYgLS1yZXRyaWVzKTsNCj4gPiArICAgICAgIHJldHVybiAhcmV0ID8gLTEgOiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHNpaTkwMnhfYnVsa193cml0ZShzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjLCB1OCAqdmFsLCB1MTYgbGVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICByZXR1 cm4gc2lpOTAyeF90cmFuc2Zlcl93cml0ZShpMmMsIHZhbCwgbGVuLCB0cnVlKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBzaWk5MDJ4X3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpp MmMsIHU4IHJlZywgdTggdmFsKQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1OCBkYXRhWzJdID0ge3Jl ZywgdmFsfTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gc2lpOTAyeF90cmFuc2Zlcl93cml0 ZShpMmMsIGRhdGEsIDIsIHRydWUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IF9f c2lpOTAyeF93cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCB1OCByZWcsIHU4IHZhbCkNCj4g PiArew0KPiA+ICsgICAgICAgdTggZGF0YVsyXSA9IHtyZWcsIHZhbH07DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIHNpaTkwMnhfdHJhbnNmZXJfd3JpdGUoaTJjLCBkYXRhLCAyLCBmYWxzZSk7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc2lpOTAyeF91cGRhdGVfYml0cyhzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjLCB1OCByZWcsIHU4IG1hc2ssIHU4IHZhbCkNCj4gPiArew0KPiA+ ICsgICAgICAgaW50IHJldDsNCj4gPiArICAgICAgIHU4IHN0YXR1czsNCj4gPiArDQo+ID4gKyAg ICAgICByZXQgPSBzaWk5MDJ4X3JlYWQoaTJjLCByZWcsICZzdGF0dXMpOw0KPiA+ICsgICAgICAg aWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIHN0 YXR1cyAmPSB+bWFzazsNCj4gPiArICAgICAgIHN0YXR1cyB8PSB2YWwgJiBtYXNrOw0KPiA+ICsg ICAgICAgcmV0dXJuIHNpaTkwMnhfd3JpdGUoaTJjLCByZWcsIHN0YXR1cyk7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgX19zaWk5MDJ4X3VwZGF0ZV9iaXRzKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMsIHU4IHJlZywgdTggbWFzaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1OCB2YWwpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAg ICB1OCBzdGF0dXM7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0gX19zaWk5MDJ4X3JlYWQoaTJj LCByZWcsICZzdGF0dXMpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIHN0YXR1cyAmPSB+bWFzazsNCj4gPiArICAgICAg IHN0YXR1cyB8PSB2YWwgJiBtYXNrOw0KPiA+ICsgICAgICAgcmV0dXJuIF9fc2lpOTAyeF93cml0 ZShpMmMsIHJlZywgc3RhdHVzKTsNCj4gPiArfQ0KPg0KPiBEaXRvLg0KPg0KPiBTbyBub3cgYWxs IHJlYWQsIHdyaXRlIGFuZCBybXcgZnVuY3Rpb25zIGFyZSBkdXBsaWNhdGVkLg0KPg0KPiA+ICBz dGF0aWMgaW5saW5lIHN0cnVjdCBzaWk5MDJ4ICpicmlkZ2VfdG9fc2lpOTAyeChzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICB7DQo+ID4gICAgICAgICByZXR1cm4gY29udGFpbmVyX29m KGJyaWRnZSwgc3RydWN0IHNpaTkwMngsIGJyaWRnZSk7DQo+ID4gQEAgLTExNSw5ICsyMzMsOSBA QCBzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cw0KPiA+ICBzaWk5MDJ4X2Nvbm5lY3Rv cl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4g PiAgew0KPiA+ICAgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBjb25uZWN0b3JfdG9f c2lpOTAyeChjb25uZWN0b3IpOw0KPiA+IC0gICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsNCj4g PiArICAgICAgIHU4IHN0YXR1czsNCj4gPg0KPiA+IC0gICAgICAgcmVnbWFwX3JlYWQoc2lpOTAy eC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOw0KPiA+ICsgICAgICAgc2lp OTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9JTlRfU1RBVFVTLCAmc3RhdHVzKTsNCj4g Pg0KPiA+ICAgICAgICAgcmV0dXJuIChzdGF0dXMgJiBTSUk5MDJYX1BMVUdHRURfU1RBVFVTKSA/ DQo+ID4gICAgICAgICAgICAgICAgY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgOiBjb25uZWN0 b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsNCj4gPiBAQCAtMTM1LDQxICsyNTMsMTEgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIHNpaTkwMnhfY29ubmVjdG9yX2Z1bmNz ID0gew0KPiA+ICBzdGF0aWMgaW50IHNpaTkwMnhfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0cnVjdCBzaWk5MDJ4ICpzaWk5 MDJ4ID0gY29ubmVjdG9yX3RvX3NpaTkwMngoY29ubmVjdG9yKTsNCj4gPiAtICAgICAgIHN0cnVj dCByZWdtYXAgKnJlZ21hcCA9IHNpaTkwMngtPnJlZ21hcDsNCj4gPiAgICAgICAgIHUzMiBidXNf Zm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDsNCj4gPiAtICAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9ICZzaWk5MDJ4LT5pMmMtPmRldjsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGxv bmcgdGltZW91dDsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGludCByZXRyaWVzOw0KPiA+IC0gICAg ICAgdW5zaWduZWQgaW50IHN0YXR1czsNCj4gPiAgICAgICAgIHN0cnVjdCBlZGlkICplZGlkOw0K PiA+IC0gICAgICAgaW50IG51bSA9IDA7DQo+ID4gLSAgICAgICBpbnQgcmV0Ow0KPiA+IC0NCj4g PiAtICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhyZWdtYXAsIFNJSTkwMlhfU1lTX0NU UkxfREFUQSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX1NZ U19DVFJMX0REQ19CVVNfUkVRLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEpOw0KPiA+IC0gICAgICAgaWYgKHJldCkNCj4g PiAtICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIGludCBudW0gPSAwLCBy ZXQ7DQo+ID4NCj4gPiAtICAgICAgIHRpbWVvdXQgPSBqaWZmaWVzICsNCj4gPiAtICAgICAgICAg ICAgICAgICBtc2Vjc190b19qaWZmaWVzKFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJVElPTl9USU1F T1VUX01TKTsNCj4gPiAtICAgICAgIGRvIHsNCj4gPiAtICAgICAgICAgICAgICAgcmV0ID0gcmVn bWFwX3JlYWQocmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsICZzdGF0dXMpOw0KPiA+IC0g ICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+ID4gLSAgICAgICB9IHdoaWxlICghKHN0YXR1cyAmIFNJSTkwMlhfU1lTX0NUUkxf RERDX0JVU19HUlREKSAmJg0KPiA+IC0gICAgICAgICAgICAgICAgdGltZV9iZWZvcmUoamlmZmll cywgdGltZW91dCkpOw0KPiA+IC0NCj4gPiAtICAgICAgIGlmICghKHN0YXR1cyAmIFNJSTkwMlhf U1lTX0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+IC0gICAgICAgICAgICAgICBkZXZfZXJyKGRl diwgImZhaWxlZCB0byBhY3F1aXJlIHRoZSBpMmMgYnVzXG4iKTsNCj4gPiAtICAgICAgICAgICAg ICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gLSAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAg cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLCBzdGF0dXMp Ow0KPiA+IC0gICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gPiAtDQo+ID4gLSAgICAgICBlZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3Rvciwgc2lpOTAy eC0+aTJjLT5hZGFwdGVyKTsNCj4gPiArICAgICAgIGVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVj dG9yLCBzaWk5MDJ4LT5pMmNtdXgtPmFkYXB0ZXJbMF0pOw0KPiA+ICAgICAgICAgZHJtX2Nvbm5l Y3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOw0KPiA+ICAgICAgICAg aWYgKGVkaWQpIHsNCj4gPiAgICAgICAgICAgICAgICAgbnVtID0gZHJtX2FkZF9lZGlkX21vZGVz KGNvbm5lY3RvciwgZWRpZCk7DQo+ID4gQEAgLTE4MSw0MiArMjY5LDYgQEAgc3RhdGljIGludCBz aWk5MDJ4X2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICAg ICAgICAgaWYgKHJldCkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPg0KPiA+ IC0gICAgICAgLyoNCj4gPiAtICAgICAgICAqIFNvbWV0aW1lcyB0aGUgSTJDIGJ1cyBjYW4gc3Rh bGwgYWZ0ZXIgZmFpbHVyZSB0byB1c2UgdGhlDQo+ID4gLSAgICAgICAgKiBFRElEIGNoYW5uZWwu IFJldHJ5IGEgZmV3IHRpbWVzIHRvIHNlZSBpZiB0aGluZ3MgY2xlYXINCj4gPiAtICAgICAgICAq IHVwLCBlbHNlIGNvbnRpbnVlIGFueXdheS4NCj4gPiAtICAgICAgICAqLw0KPiA+IC0gICAgICAg cmV0cmllcyA9IDU7DQo+ID4gLSAgICAgICBkbyB7DQo+ID4gLSAgICAgICAgICAgICAgIHJldCA9 IHJlZ21hcF9yZWFkKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHVzKTsNCj4gPiAtICAgICAgICAgICAgICAg cmV0cmllcy0tOw0KPiA+IC0gICAgICAgfSB3aGlsZSAocmV0ICYmIHJldHJpZXMpOw0KPiA+IC0g ICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQg dG8gcmVhZCBzdGF0dXMgKCVkKVxuIiwgcmV0KTsNCj4gPiAtDQo+ID4gLSAgICAgICByZXQgPSBy ZWdtYXBfdXBkYXRlX2JpdHMocmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JF USB8DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RS TF9ERENfQlVTX0dSVEQsIDApOw0KPiA+IC0gICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsNCj4gPiAtDQo+ID4gLSAgICAgICB0aW1lb3V0ID0gamlmZmllcyAr DQo+ID4gLSAgICAgICAgICAgICAgICAgbXNlY3NfdG9famlmZmllcyhTSUk5MDJYX0kyQ19CVVNf QUNRVUlTSVRJT05fVElNRU9VVF9NUyk7DQo+ID4gLSAgICAgICBkbyB7DQo+ID4gLSAgICAgICAg ICAgICAgIHJldCA9IHJlZ21hcF9yZWFkKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLCAm c3RhdHVzKTsNCj4gPiAtICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+IC0gICAgICAgfSB3aGlsZSAoc3RhdHVzICYgKFNJ STkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEgfA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSAmJg0KPiA+IC0gICAgICAgICAgICAg ICAgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkpOw0KPiA+IC0NCj4gPiAtICAgICAgIGlm IChzdGF0dXMgJiAoU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JFUSB8DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+IC0gICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWxlYXNlIHRoZSBpMmMgYnVzXG4i KTsNCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gLSAgICAgICB9 DQo+ID4gLQ0KPiA+ICAgICAgICAgcmV0dXJuIG51bTsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTIz NywyMCArMjg5LDIwIEBAIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdlX2Rpc2FibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0IHNpaTkwMngg KnNpaTkwMnggPSBicmlkZ2VfdG9fc2lpOTAyeChicmlkZ2UpOw0KPiA+DQo+ID4gLSAgICAgICBy ZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9QV1JfRFdO LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RX Tik7DQo+ID4gKyAgICAgICBzaWk5MDJ4X3VwZGF0ZV9iaXRzKHNpaTkwMngtPmkyYywgU0lJOTAy WF9TWVNfQ1RSTF9EQVRBLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJY X1NZU19DVFJMX1BXUl9EV04sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkw MlhfU1lTX0NUUkxfUFdSX0RXTik7DQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBzaWk5 MDJ4X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgew0KPiA+ ICAgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBicmlkZ2VfdG9fc2lpOTAyeChicmlk Z2UpOw0KPiA+DQo+ID4gLSAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFw LCBTSUk5MDJYX1BXUl9TVEFURV9DVFJMLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg IFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX01TSywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9EKDApKTsNCj4gPiAtICAgICAgIHJlZ21hcF91 cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfU1lTX0NUUkxfREFUQSwNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04sIDApOw0K PiA+ICsgICAgICAgc2lpOTAyeF91cGRhdGVfYml0cyhzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfUFdS X1NUQVRFX0NUUkwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhfQVZJ X1BPV0VSX1NUQVRFX01TSywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAy WF9BVklfUE9XRVJfU1RBVEVfRCgwKSk7DQo+ID4gKyAgICAgICBzaWk5MDJ4X3VwZGF0ZV9iaXRz KHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04sIDApOw0KPiA+ICB9DQo+ID4N Cj4gPiAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSwNCj4gPiBAQCAtMjU4LDI1ICszMTAsMjUgQEAgc3RhdGljIHZvaWQgc2lpOTAy eF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq KQ0KPiA+ICB7DQo+ID4gICAgICAgICBzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGJyaWRnZV90 b19zaWk5MDJ4KGJyaWRnZSk7DQo+ID4gLSAgICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBz aWk5MDJ4LT5yZWdtYXA7DQo+ID4gLSAgICAgICB1OCBidWZbSERNSV9JTkZPRlJBTUVfU0laRShB VkkpXTsNCj4gPiArICAgICAgIHU4IGJ1ZltIRE1JX0lORk9GUkFNRV9TSVpFKEFWSSkgKyAxXTsN Cj4NCj4gTWF5YmUgdGhpcyBzdHVmZiBzaG91bGQgYmUgYSBzZXBhcmF0ZSBjaGFuZ2U/DQoNClRo aXMgY2hhbmdlIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHNpaTkwMnhfYnVsa193cml0ZSB0YWtl cyBhbiBhcnJheSBvZiB1OCwgd2l0aCB0aGUgZmlyc3QgZWxlbWVudA0KYmVpbmcgdGhlIHJlZ2lz dGVyIGFkZHJlc3MsIHRoaXMgbWFrZXMgc2lpOTAyeF9idWxrX3dyaXRlIG5vdCBleGFjdGx5IHRo ZSBzYW1lIGFzIHJlZ21hcF9idWxrX3dyaXRlLg0KTWFyayBtYXkgcG9pbnQgb3V0IHNvbWV0aGlu ZyBiZXR0ZXIgcmVnbWFwIHJlbGF0ZWQsIHNvIG1heWJlIHRoZXJlIGlzIG5vIGV2ZW4gbmVlZCBm b3IgdGhpcy4NCg0KQWdhaW4sIHRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgY29tbWVudHMs IEkgYW0gbm90IGdvaW5nIHRvIHNlbmQgYSB2MiBvdXQgc3RyYWlnaHQgYXdheSwgSSB3b3VsZA0K bGlrZSB0byBoZWFyIGF0IGxlYXN0IGZyb20gV29sZnJhbSBhbmQgUGV0ZXIgYWJvdXQgdGhlIHdh eSBJIGhhdmUgaW1wbGVtZW50IHRoZSBpMmMtZ2F0ZSBhcyBpdCBpcyBhIGJpdA0KdW5jb252ZW50 aW9uYWwsIGFuZCB0aGVuIGl0IHdvdWxkIGJlIGdyZWF0IHRvIGhhdmUgTWFyaydzIG9waW5pb24g b24gdGhlIGxvY2tpbmcgYml0Lg0KDQpGYWINCg0KPg0KPiA+ICAgICAgICAgc3RydWN0IGhkbWlf YXZpX2luZm9mcmFtZSBmcmFtZTsNCj4gPiAgICAgICAgIGludCByZXQ7DQo+ID4NCj4gPiAtICAg ICAgIGJ1ZlswXSA9IGFkai0+Y2xvY2s7DQo+ID4gLSAgICAgICBidWZbMV0gPSBhZGotPmNsb2Nr ID4+IDg7DQo+ID4gLSAgICAgICBidWZbMl0gPSBhZGotPnZyZWZyZXNoOw0KPiA+IC0gICAgICAg YnVmWzNdID0gMHgwMDsNCj4gPiAtICAgICAgIGJ1Zls0XSA9IGFkai0+aGRpc3BsYXk7DQo+ID4g LSAgICAgICBidWZbNV0gPSBhZGotPmhkaXNwbGF5ID4+IDg7DQo+ID4gLSAgICAgICBidWZbNl0g PSBhZGotPnZkaXNwbGF5Ow0KPiA+IC0gICAgICAgYnVmWzddID0gYWRqLT52ZGlzcGxheSA+PiA4 Ow0KPiA+IC0gICAgICAgYnVmWzhdID0gU0lJOTAyWF9UUElfQ0xLX1JBVElPXzFYIHwgU0lJOTAy WF9UUElfQVZJX1BJWEVMX1JFUF9OT05FIHwNCj4gPiArICAgICAgIGJ1ZlswXSA9IFNJSTkwMlhf VFBJX1ZJREVPX0RBVEE7DQo+ID4gKyAgICAgICBidWZbMV0gPSBhZGotPmNsb2NrOw0KPiA+ICsg ICAgICAgYnVmWzJdID0gYWRqLT5jbG9jayA+PiA4Ow0KPiA+ICsgICAgICAgYnVmWzNdID0gYWRq LT52cmVmcmVzaDsNCj4gPiArICAgICAgIGJ1Zls0XSA9IDB4MDA7DQo+ID4gKyAgICAgICBidWZb NV0gPSBhZGotPmhkaXNwbGF5Ow0KPiA+ICsgICAgICAgYnVmWzZdID0gYWRqLT5oZGlzcGxheSA+ PiA4Ow0KPiA+ICsgICAgICAgYnVmWzddID0gYWRqLT52ZGlzcGxheTsNCj4gPiArICAgICAgIGJ1 Zls4XSA9IGFkai0+dmRpc3BsYXkgPj4gODsNCj4gPiArICAgICAgIGJ1Zls5XSA9IFNJSTkwMlhf VFBJX0NMS19SQVRJT18xWCB8IFNJSTkwMlhfVFBJX0FWSV9QSVhFTF9SRVBfTk9ORSB8DQo+ID4g ICAgICAgICAgICAgICAgICBTSUk5MDJYX1RQSV9BVklfUElYRUxfUkVQX0JVU18yNEJJVDsNCj4g PiAtICAgICAgIGJ1Zls5XSA9IFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9SQU5HRV9BVVRPIHwNCj4g PiAtICAgICAgICAgICAgICAgIFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9DT0xPUlNQQUNFX1JHQjsN Cj4gPiArICAgICAgIGJ1ZlsxMF0gPSBTSUk5MDJYX1RQSV9BVklfSU5QVVRfUkFOR0VfQVVUTyB8 DQo+ID4gKyAgICAgICAgICAgICAgICAgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0NPTE9SU1BBQ0Vf UkdCOw0KPiA+DQo+ID4gLSAgICAgICByZXQgPSByZWdtYXBfYnVsa193cml0ZShyZWdtYXAsIFNJ STkwMlhfVFBJX1ZJREVPX0RBVEEsIGJ1ZiwgMTApOw0KPiA+ICsgICAgICAgcmV0ID0gc2lpOTAy eF9idWxrX3dyaXRlKHNpaTkwMngtPmkyYywgYnVmLCAxMSk7DQo+ID4gICAgICAgICBpZiAocmV0 KQ0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm47DQo+ID4NCj4gPiBAQCAtMjg2LDE2ICszMzgs MTcgQEAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSwNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICAgICAgICAgfQ0K PiA+DQo+ID4gLSAgICAgICByZXQgPSBoZG1pX2F2aV9pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1 Ziwgc2l6ZW9mKGJ1ZikpOw0KPiA+ICsgICAgICAgcmV0ID0gaGRtaV9hdmlfaW5mb2ZyYW1lX3Bh Y2soJmZyYW1lLCBidWYgKyAxLCBzaXplb2YoYnVmKSAtIDEpOw0KPiA+ICAgICAgICAgaWYgKHJl dCA8IDApIHsNCj4gPiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGFjayBB VkkgaW5mb2ZyYW1lOiAlZFxuIiwgcmV0KTsNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOw0K PiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gKyAgICAgICBidWZbMF0gPSBTSUk5MDJYX1RQSV9BVklf SU5GT0ZSQU1FOw0KPiA+ICAgICAgICAgLyogRG8gbm90IHNlbmQgdGhlIGluZm9mcmFtZSBoZWFk ZXIsIGJ1dCBrZWVwIHRoZSBDUkMgZmllbGQuICovDQo+ID4gLSAgICAgICByZWdtYXBfYnVsa193 cml0ZShyZWdtYXAsIFNJSTkwMlhfVFBJX0FWSV9JTkZPRlJBTUUsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICBidWYgKyBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSAtIDEsDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FWSV9JTkZPRlJBTUVfU0laRSArIDEpOw0K PiA+ICsgICAgICAgc2lpOTAyeF9idWxrX3dyaXRlKHNpaTkwMngtPmkyYywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBidWYgKyBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FWSV9JTkZPRlJBTUVfU0laRSArIDEp Ow0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGludCBzaWk5MDJ4X2JyaWRnZV9hdHRhY2goc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiBAQCAtMzM2LDI5ICszODksMTMgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHNpaTkwMnhfYnJpZGdlX2Z1bmNzID0gew0K PiA+ICAgICAgICAgLmVuYWJsZSA9IHNpaTkwMnhfYnJpZGdlX2VuYWJsZSwNCj4gPiAgfTsNCj4g Pg0KPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZSBzaWk5MDJ4X3ZvbGF0aWxl X3Jhbmdlc1tdID0gew0KPiA+IC0gICAgICAgeyAucmFuZ2VfbWluID0gMCwgLnJhbmdlX21heCA9 IDB4ZmYgfSwNCj4gPiAtfTsNCj4gPiAtDQo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFw X2FjY2Vzc190YWJsZSBzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxlID0gew0KPiA+IC0gICAgICAgLnll c19yYW5nZXMgPSBzaWk5MDJ4X3ZvbGF0aWxlX3JhbmdlcywNCj4gPiAtICAgICAgIC5uX3llc19y YW5nZXMgPSBBUlJBWV9TSVpFKHNpaTkwMnhfdm9sYXRpbGVfcmFuZ2VzKSwNCj4gPiAtfTsNCj4g PiAtDQo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzaWk5MDJ4X3JlZ21h cF9jb25maWcgPSB7DQo+ID4gLSAgICAgICAucmVnX2JpdHMgPSA4LA0KPiA+IC0gICAgICAgLnZh bF9iaXRzID0gOCwNCj4gPiAtICAgICAgIC52b2xhdGlsZV90YWJsZSA9ICZzaWk5MDJ4X3ZvbGF0 aWxlX3RhYmxlLA0KPiA+IC0gICAgICAgLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLA0KPiA+ IC19Ow0KPiA+IC0NCj4gPiAgc3RhdGljIGlycXJldHVybl90IHNpaTkwMnhfaW50ZXJydXB0KGlu dCBpcnEsIHZvaWQgKmRhdGEpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0cnVjdCBzaWk5MDJ4ICpz aWk5MDJ4ID0gZGF0YTsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXMgPSAwOw0KPiA+ ICsgICAgICAgdTggc3RhdHVzID0gMDsNCj4gPg0KPiA+IC0gICAgICAgcmVnbWFwX3JlYWQoc2lp OTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOw0KPiA+IC0gICAgICAg cmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTlRfU1RBVFVTLCBzdGF0dXMp Ow0KPiA+ICsgICAgICAgc2lpOTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9JTlRfU1RB VFVTLCAmc3RhdHVzKTsNCj4gPiArICAgICAgIHNpaTkwMnhfd3JpdGUoc2lpOTAyeC0+aTJjLCBT SUk5MDJYX0lOVF9TVEFUVVMsIHN0YXR1cyk7DQo+ID4NCj4gPiAgICAgICAgIGlmICgoc3RhdHVz ICYgU0lJOTAyWF9IT1RQTFVHX0VWRU5UKSAmJiBzaWk5MDJ4LT5icmlkZ2UuZGV2KQ0KPiA+ICAg ICAgICAgICAgICAgICBkcm1faGVscGVyX2hwZF9pcnFfZXZlbnQoc2lpOTAyeC0+YnJpZGdlLmRl dik7DQo+ID4gQEAgLTM2NiwyMyArNDAzLDExMSBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc2lpOTAy eF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGF0YSkNCj4gPiAgICAgICAgIHJldHVybiBJUlFf SEFORExFRDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgc2lpOTAyeF9pMmNfYnlwYXNz X3NlbGVjdChzdHJ1Y3QgaTJjX211eF9jb3JlICptdXgsIHUzMiBjaGFuX2lkKQ0KPiA+ICt7DQo+ ID4gKyAgICAgICBzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGkyY19tdXhfcHJpdihtdXgpOw0K PiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnNpaTkwMngtPmkyYy0+ZGV2Ow0KPiA+ ICsgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0Ow0KPiA+ICsgICAgICAgdTggc3RhdHVzOw0K PiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBfX3NpaTkwMnhf dXBkYXRlX2JpdHMoc2lpOTAyeC0+aTJjLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVT X1JFUSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX1NZ U19DVFJMX0REQ19CVVNfUkVRKTsNCj4gPiArDQo+ID4gKyAgICAgICB0aW1lb3V0ID0gamlmZmll cyArDQo+ID4gKyAgICAgICAgICAgICAgICAgbXNlY3NfdG9famlmZmllcyhTSUk5MDJYX0kyQ19C VVNfQUNRVUlTSVRJT05fVElNRU9VVF9NUyk7DQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAg ICAgICAgICAgIHJldCA9IF9fc2lpOTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNf Q1RSTF9EQVRBLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Rh dHVzKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgfSB3aGlsZSAoIShzdGF0dXMgJiBTSUk5 MDJYX1NZU19DVFJMX0REQ19CVVNfR1JURCkgJiYNCj4gPiArICAgICAgICAgICAgICAgIHRpbWVf YmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIShzdGF0 dXMgJiBTSUk5MDJYX1NZU19DVFJMX0REQ19CVVNfR1JURCkpIHsNCj4gPiArICAgICAgICAgICAg ICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWNxdWlyZSB0aGUgaTJjIGJ1c1xuIik7DQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAtRVRJTUVET1VUOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgIHJldCA9IF9fc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhf U1lTX0NUUkxfREFUQSwgc3RhdHVzKTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBzaWk5MDJ4X2kyY19ieXBhc3NfZGVzZWxlY3Qoc3RydWN0IGky Y19tdXhfY29yZSAqbXV4LCB1MzIgY2hhbl9pZCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0 IHNpaTkwMnggKnNpaTkwMnggPSBpMmNfbXV4X3ByaXYobXV4KTsNCj4gPiArICAgICAgIHN0cnVj dCBkZXZpY2UgKmRldiA9ICZzaWk5MDJ4LT5pMmMtPmRldjsNCj4gPiArICAgICAgIHVuc2lnbmVk IGxvbmcgdGltZW91dDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCByZXRyaWVzOw0KPiA+ICsg ICAgICAgdTggc3RhdHVzOw0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAg ICB1ZGVsYXkoMzApOw0KPiA+ICsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAgICAgKiBTb21l dGltZXMgdGhlIEkyQyBidXMgY2FuIHN0YWxsIGFmdGVyIGZhaWx1cmUgdG8gdXNlIHRoZQ0KPiA+ ICsgICAgICAgICogRURJRCBjaGFubmVsLiBSZXRyeSBhIGZldyB0aW1lcyB0byBzZWUgaWYgdGhp bmdzIGNsZWFyDQo+ID4gKyAgICAgICAgKiB1cCwgZWxzZSBjb250aW51ZSBhbnl3YXkuDQo+ID4g KyAgICAgICAgKi8NCj4gPiArICAgICAgIHJldHJpZXMgPSA1Ow0KPiA+ICsgICAgICAgZG8gew0K PiA+ICsgICAgICAgICAgICAgICByZXQgPSBfX3NpaTkwMnhfcmVhZChzaWk5MDJ4LT5pMmMsIFNJ STkwMlhfU1lTX0NUUkxfREFUQSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnN0YXR1cyk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHJpZXMtLTsNCj4gPiArICAg ICAgIH0gd2hpbGUgKHJldCAmJiByZXRyaWVzKTsNCj4gPiArICAgICAgIGlmIChyZXQpIHsNCj4g PiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVhZCBzdGF0dXMgKCVk KVxuIiwgcmV0KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBfX3NpaTkwMnhfdXBkYXRlX2JpdHMoc2lpOTAy eC0+aTJjLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JFUSB8DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX0dS VEQsIDApOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICB0aW1lb3V0ID0gamlmZmllcyArDQo+ID4gKyAgICAg ICAgICAgICAgICAgbXNlY3NfdG9famlmZmllcyhTSUk5MDJYX0kyQ19CVVNfQUNRVUlTSVRJT05f VElNRU9VVF9NUyk7DQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9 IF9fc2lpOTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHVzKTsNCj4gPiArICAg ICAgICAgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPiA+ICsgICAgICAgfSB3aGlsZSAoc3RhdHVzICYgKFNJSTkwMlhfU1lTX0NUUkxfRERD X0JVU19SRVEgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhfU1lTX0NU UkxfRERDX0JVU19HUlREKSAmJg0KPiA+ICsgICAgICAgICAgICAgICAgdGltZV9iZWZvcmUoamlm ZmllcywgdGltZW91dCkpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChzdGF0dXMgJiAoU0lJOTAy WF9TWVNfQ1RSTF9ERENfQlVTX1JFUSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFNJSTkw MlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJy KGRldiwgImZhaWxlZCB0byByZWxlYXNlIHRoZSBpMmMgYnVzXG4iKTsNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0 cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGlu dCBzdGF0dXMgPSAwOw0KPiA+ICAgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMng7DQo+ID4g LSAgICAgICB1OCBjaGlwaWRbNF07DQo+ID4gKyAgICAgICB1OCBjaGlwaWRbNF0sIHN0YXR1cyA9 IDA7DQo+ID4gICAgICAgICBpbnQgcmV0Ow0KPiA+DQo+ID4gKyAgICAgICByZXQgPSBpMmNfY2hl Y2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsIEkyQ19GVU5DX0kyQyk7DQo+ID4gKyAg ICAgICBpZiAoIXJldCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkkyQyBh ZGFwdGVyIG5vdCBzdWl0YWJsZVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlP Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAgIHNpaTkwMnggPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKnNpaTkwMngpLCBHRlBfS0VSTkVMKTsNCj4gPiAgICAgICAgIGlmICgh c2lpOTAyeCkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4NCj4gPiAg ICAgICAgIHNpaTkwMngtPmkyYyA9IGNsaWVudDsNCj4gPiAtICAgICAgIHNpaTkwMngtPnJlZ21h cCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJnNpaTkwMnhfcmVnbWFwX2NvbmZpZyk7 DQo+ID4gLSAgICAgICBpZiAoSVNfRVJSKHNpaTkwMngtPnJlZ21hcCkpDQo+ID4gLSAgICAgICAg ICAgICAgIHJldHVybiBQVFJfRVJSKHNpaTkwMngtPnJlZ21hcCk7DQo+ID4NCj4gPiAgICAgICAg IHNpaTkwMngtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJyZXNl dCIsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1BJT0RfT1VUX0xPVyk7DQo+ID4gQEAgLTM5NCwxNCArNTE5LDE0IEBAIHN0YXRpYyBp bnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+DQo+ID4gICAg ICAgICBzaWk5MDJ4X3Jlc2V0KHNpaTkwMngpOw0KPiA+DQo+ID4gLSAgICAgICByZXQgPSByZWdt YXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1JFR19UUElfUlFCLCAweDApOw0KPiA+ ICsgICAgICAgcmV0ID0gc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfUkVHX1RQ SV9SUUIsIDB4MCk7DQo+ID4gICAgICAgICBpZiAocmV0KQ0KPiA+ICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+DQo+ID4gLSAgICAgICByZXQgPSByZWdtYXBfYnVsa19yZWFkKHNpaTkw MngtPnJlZ21hcCwgU0lJOTAyWF9SRUdfQ0hJUElEKDApLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY2hpcGlkLCA0KTsNCj4gPiArICAgICAgIHJldCA9IHNpaTkwMnhfYnVs a19yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9SRUdfQ0hJUElEKDApLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hpcGlkLCA0KTsNCj4gPiAgICAgICAgIGlmIChyZXQp IHsNCj4gPiAtICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJyZWdtYXBfcmVhZCBmYWlsZWQg JWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQ2FuJ3QgcmVh ZCBjaGlwaWQgKGVycm9yID0gJWQpXG4iLCByZXQpOw0KPiA+ICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTQxMiwxMiArNTM3LDEyIEBAIHN0 YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+ICAg ICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAvKiBDbGVhciBhbGwgcGVuZGluZyBpbnRlcnJ1cHRz ICovDQo+ID4gLSAgICAgICByZWdtYXBfcmVhZChzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5U X1NUQVRVUywgJnN0YXR1cyk7DQo+ID4gLSAgICAgICByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVn bWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsIHN0YXR1cyk7DQo+ID4gKyAgICAgICBzaWk5MDJ4X3Jl YWQoc2lpOTAyeC0+aTJjLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOw0KPiA+ICsgICAg ICAgc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfSU5UX1NUQVRVUywgc3RhdHVz KTsNCj4gPg0KPiA+ICAgICAgICAgaWYgKGNsaWVudC0+aXJxID4gMCkgew0KPiA+IC0gICAgICAg ICAgICAgICByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9FTkFCTEUs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX0hPVFBMVUdfRVZFTlQp Ow0KPiA+ICsgICAgICAgICAgICAgICBzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmkyYywgU0lJOTAy WF9JTlRfRU5BQkxFLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhf SE9UUExVR19FVkVOVCk7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gZGV2bV9yZXF1 ZXN0X3RocmVhZGVkX2lycShkZXYsIGNsaWVudC0+aXJxLCBOVUxMLA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpaTkwMnhfaW50ZXJydXB0LA0K PiA+IEBAIC00MzMsNiArNTU4LDIyIEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50LA0KPiA+DQo+ID4gICAgICAgICBpMmNfc2V0X2NsaWVudGRhdGEo Y2xpZW50LCBzaWk5MDJ4KTsNCj4gPg0KPiA+ICsgICAgICAgc2lpOTAyeC0+aTJjbXV4ID0gaTJj X211eF9hbGxvYyhjbGllbnQtPmFkYXB0ZXIsIGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMSwgMCwgSTJDX01VWF9HQVRFLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWk5MDJ4X2kyY19ieXBhc3Nfc2VsZWN0LA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWk5MDJ4X2kyY19i eXBhc3NfZGVzZWxlY3QpOw0KPiA+ICsgICAgICAgaWYgKCFzaWk5MDJ4LT5pMmNtdXgpIHsNCj4g PiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgSTJDIG11 eFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgIHNpaTkwMngtPmkyY211eC0+cHJpdiA9IHNpaTkwMng7DQo+ ID4gKyAgICAgICByZXQgPSBpMmNfbXV4X2FkZF9hZGFwdGVyKHNpaTkwMngtPmkyY211eCwgMCwg MCwgMCk7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiQ291bGRuJ3QgYWRkIGkyYyBtdXggYWRhcHRlclxuIik7DQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICAgICAgICAgcmV0 dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+IEBAIC00NDEsNiArNTgyLDkgQEAgc3RhdGljIGludCBz aWk5MDJ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPiA+ICB7DQo+ID4gICAg ICAgICBzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Ow0KPiA+DQo+ID4gKyAgICAgICBpZiAoc2lpOTAyeC0+aTJjbXV4KQ0KPiA+ICsgICAgICAgICAg ICAgICBpMmNfbXV4X2RlbF9hZGFwdGVycyhzaWk5MDJ4LT5pMmNtdXgpOw0KPiA+ICsNCj4gPiAg ICAgICAgIGRybV9icmlkZ2VfcmVtb3ZlKCZzaWk5MDJ4LT5icmlkZ2UpOw0KPiA+DQo+ID4gICAg ICAgICByZXR1cm4gMDsNCj4NCj4gWW91cnMsDQo+IExpbnVzIFdhbGxlaWoNCg0KDQoNClJlbmVz YXMgRWxlY3Ryb25pY3MgRXVyb3BlIEx0ZCwgRHVrZXMgTWVhZG93LCBNaWxsYm9hcmQgUm9hZCwg Qm91cm5lIEVuZCwgQnVja2luZ2hhbXNoaXJlLCBTTDggNUZILCBVSy4gUmVnaXN0ZXJlZCBpbiBF bmdsYW5kICYgV2FsZXMgdW5kZXIgUmVnaXN0ZXJlZCBOby4gMDQ1ODY3MDkuDQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ty1jpn01on0105.outbound.protection.outlook.com ([104.47.93.105]:23836 "EHLO JPN01-TY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727991AbeKAByz (ORCPT ); Wed, 31 Oct 2018 21:54:55 -0400 From: Fabrizio Castro To: Linus Walleij , Mark Brown CC: Archit Taneja , Andrzej Hajda , Dave Airlie , Peter Rosin , Wolfram Sang , Laurent Pinchart , "open list:DRM PANEL DRIVERS" , Simon Horman , Geert Uytterhoeven , Chris Paterson , Biju Das , Linux-Renesas , "linux-i2c@vger.kernel.org" , Inki Dae , Boris BREZILLON Subject: RE: [RFC] drm/bridge/sii902x: Fix EDID readback Date: Wed, 31 Oct 2018 16:55:53 +0000 Message-ID: References: <1540990667-14109-1-git-send-email-fabrizio.castro@bp.renesas.com> In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: SGVsbG8gTGludXMsDQoNCj4gU3ViamVjdDogUmU6IFtSRkNdIGRybS9icmlkZ2Uvc2lpOTAyeDog Rml4IEVESUQgcmVhZGJhY2sNCj4NCj4gSGkgRmFicml6aW8sDQo+DQo+IHRoYW5rcyBmb3IgeW91 ciBwYXRjaCENCg0KVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrIQ0KDQo+DQo+IE9uIFdlZCwg T2N0IDMxLCAyMDE4IGF0IDE6NTggUE0gRmFicml6aW8gQ2FzdHJvDQo+IDxmYWJyaXppby5jYXN0 cm9AYnAucmVuZXNhcy5jb20+IHdyb3RlOg0KPg0KPiA+IFdoaWxlIGFkZGluZyBTaUk5MDIyQSBz dXBwb3J0IHRvIHRoZSBpd2cyM3MgYm9hcmQgaXQgY2FtZSB1cA0KPiA+IHRoYXQgd2hlbiB0aGUg SERNSSB0cmFuc21pdHRlciBpcyBpbiBwYXNzIHRocm91Z2ggbW9kZSB0aGUNCj4gPiBkZXZpY2Ug aXMgbm90IGNvbXBsaWFudCB3aXRoIHRoZSBJMkMgc3BlY2lmaWNhdGlvbiBhbnltb3JlLA0KPiA+ IGFzIGl0IHJlcXVpcmVzIGEgZmFyIGJpZ2dlciB0YnVmIGR1ZSB0byBhIGRlbGF5IHRoZSBIRE1J DQo+ID4gdHJhbnNtaXR0ZXIgaXMgYWRkaW5nIHdoZW4gcmVsYXlpbmcgdGhlIFNUT1AgY29uZGl0 aW9uIG9uIHRoZQ0KPiA+IG1vbml0b3IgaTJjIHNpZGUgb2YgdGhpbmdzLiBXaGVuIG5vdCBwcm92 aWRpbmcgYW4gYXBwcm9wcmlhdGUNCj4gPiBkZWxheSBhZnRlciB0aGUgU1RPUCBjb25kaXRpb24g dGhlIGkyYyBidXMgd291bGQgZ2V0IHN0dWNrLg0KPiA+IEFsc28sIGFueSBvdGhlciB0cmFmZmlj IG9uIHRoZSBidXMgd2hpbGUgdGFsa2luZyB0byB0aGUgbW9uaXRvcg0KPiA+IG1heSBjYXVzZSB0 aGUgdHJhbnNhY3Rpb24gdG8gZmFpbCBvciBldmVuIGNhdXNlIGlzc3VlcyB3aXRoIHRoZQ0KPiA+ IGkyYyBidXMgYXMgd2VsbC4NCj4gPg0KPiA+IEkyYy1nYXRlcyBzZWVtZWQgdG8gcmVhY2ggY29u c2VudCBhcyBhIHBvc3NpYmxlIHdheSB0byBhZGRyZXNzDQo+ID4gdGhlc2UgaXNzdWVzLCBhbmQg YXMgc3VjaCB0aGlzIHBhdGNoIGlzIGltcGxlbWVudGluZyBhIHNvbHV0aW9uDQo+ID4gYmFzZWQg b24gdGhhdC4gU2luY2Ugb3RoZXJzIGFyZSBjbGVhcmx5IHJlbHlpbmcgb24gdGhlIGN1cnJlbnQN Cj4gPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZHJpdmVyLCB0aGlzIHBhdGNoIHdvbid0IHJlcXVp cmUgYW55IERUDQo+ID4gY2hhbmdlcy4NCj4gPg0KPiA+IFNpbmNlIHdlIGRvbid0IHdhbnQgYW55 IGludGVyZmVyZW5jZSBkdXJpbmcgdGhlIEREQyBCdXMNCj4gPiBSZXF1ZXN0L0dyYW50IHByb2Nl ZHVyZSBhbmQgd2hpbGUgdGFsa2luZyB0byB0aGUgbW9uaXRvciwgd2UgaGF2ZQ0KPiA+IHRvIHVz ZSB0aGUgYWRhcHRlciBsb2NraW5nIHByaW1pdGl2ZXMgcmF0aGVyIHRoYW4gdGhlIGkyYy1tdXgN Cj4gPiBsb2NraW5nIHByaW1pdGl2ZXMsIGJ1dCBpbiBvcmRlciB0byBhY2hpZXZlIHRoYXQgSSBo YWQgdG8gZ2V0DQo+ID4gcmlkIG9mIHJlZ21hcC4NCj4NCj4gV2h5IGRpZCB5b3UgaGF2ZSB0byBy ZW1vdmUgcmVnbWFwPyBJdCBpcyBwZXJmZWN0bHkgcG9zc2libGUNCj4gdG8gb3ZlcnJpZGUgYW55 IHJlYWRpbmcvd3JpdGluZyBvcGVyYXRpb25zIGxvY2FsbHkgaWYgeW91IGRvbid0DQo+IHdhbnQg dG8gdXNlIHRoZSByZWdtYXAgaTJjIHZhcmlhbnRzLg0KPg0KPiBUaGUgY29kZSBpbiB5b3VyIHBh dGNoIGRvZXMgbm90IG1ha2UgaXQgZXZpZGVudCB0byBtZSBleGFjdGx5DQo+IHdoZXJlIHRoZSBw cm9ibGVtIGlzIHdpdGggcmVnbWFwLCBhbHNvIEkgYmV0IHRoZSByZWdtYXANCj4gbWFpbnRhaW5l ciB3b3VsZCBsb3ZlIHRvIGhlYXIgYWJvdXQgaXQgc28gd2UgY2FuIGF0dGVtcHQgdG8NCj4gZml4 IGl0IHRoZXJlIGluc3RlYWQgb2YgbG9jYWxseSBpbiB0aGlzIGRyaXZlci4NCj4NCj4gQUZBSUNU IHRoZXJlIGlzIHNvbWUgbG9ja2VkIHZzIHVubG9ja2VkIGJ1c2luZXNzIGFuZCBJDQo+IHN0cm9u Z2x5IGhvcGUgdGhlcmUgaXMgc29tZSB3YXkgdG8gc2ltcGx5IHBhc3MgdGhhdCBkb3duDQo+IGlu dG8gd2hhdGV2ZXIgZnVuY3Rpb25zIHJlZ21hcCBlbmQgdXAgY2FsbGluZyBzbyB3ZSBkb24ndA0K PiBoYXZlIHRvIGNoYW5nZSBhbGwgY2FsbCBzaXRlcy4NCg0KWWVhaCwgdGhlcmUgaXMgc29tZSBp c3N1ZSB3aXRoIGxvY2tpbmcgaGVyZSwgYW5kIHRoYXQncyBjb21pbmcgZG93bg0KZnJvbSB0aGUg ZmFjdCB0aGF0IHdoZW4gd2UgY2FsbCBpbnRvIGRybV9nZXRfZWRpZCwgd2UgaW1wbGljaXRseSBj YWxsDQppMmNfdHJhbnNmZXIgd2hpY2ggdWx0aW1hdGVseSBsb2NrcyB0aGUgaTJjIGFkYXB0ZXIs IGFuZCB0aGVuIGNhbGxzDQppbnRvIG91ciBzaWk5MDJ4X2kyY19ieXBhc3Nfc2VsZWN0LCB3aGlj aCBpbiB0dXJuIGNhbGxzIGludG8gdGhlIHJlZ21hcA0KZnVuY3Rpb25zIGFuZCB0aGVyZWZvcmUg d2UgdHJ5IGFuZCBsb2NrIHRoZSBzYW1lIGkyYyBhZGFwdGVyIGFnYWluLA0KZHJpdmluZyB0aGUg c3lzdGVtIGludG8gYSBkZWFkbG9jay4NCkhhdmluZyB0aGUgb3B0aW9uIG9mIHVzaW5nICJ1bmxv Y2tlZCIgZmxhdm91cnMgb2YgcmVhZHMgYW5kIHdyaXRlcw0KaXMgd2hhdCB3ZSBuZWVkIGhlcmUs IGJ1dCBsb29raW5nIGF0IGRyaXZlcnMvYmFzZS9yZWdtYXAvcmVnbWFwLWkyYy5jDQpJIGNvdWxk bid0IGZpbmQgYW55dGhpbmcgc3VpdGFibGUgZm9yIG15IGNhc2UsIG1heWJlIE1hcmsgY291bGQg YWR2aXNlDQpvbiB0aGlzIG9uZT8gSSBhbSBzdXJlIEkgb3Zlcmxvb2tlZCBzb21ldGhpbmcgaGVy ZSwgaXMgdGhlcmUgYSBiZXR0ZXINCndheSB0byBhZGRyZXNzIHRoaXM/DQoNCj4NCj4gKFNvIHBs ZWFzZSBpbmNsdWRlIE1hcmsgQnJvd24gb24gQ0MgaW4gZnV0dXJlIGl0ZXJhdGlvbnMuKQ0KPg0K PiA+IFNpZ25lZC1vZmYtYnk6IEZhYnJpemlvIENhc3RybyA8ZmFicml6aW8uY2FzdHJvQGJwLnJl bmVzYXMuY29tPg0KPiA+IC0tLQ0KPiA+IERlYXIgQWxsLA0KPiA+DQo+ID4gdGhpcyBpcyBhIGZv bGxvdyB1cCB0bzoNCj4gPiBodHRwczovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2xpbnV4LXJlbmVz YXMtc29jQHZnZXIua2VybmVsLm9yZy9tc2czMjA3Mi5odG1sDQo+ID4NCj4gPiBDb21tZW50cyB2 ZXJ5IHdlbGNvbWUhDQo+DQo+IEF0IHRoZSB2ZXJ5IGxlYXN0IEkgdGhpbmsgdGhlIHBhdGNoIG5l ZWRzIHRvIGJlIHNwbGl0IGluIHR3bywNCj4gb25lIGRlYWxpbmcgd2l0aCB0aGUgbG9ja2luZyBi dXNpbmVzcyBhbmQgb25lIGRlYWxpbmcgd2l0aA0KPiB0aGUgYnVmZmVyIHNpemUuIEFzIGl0IGxv b2tzIG5vdyBpdCBpcyB2ZXJ5IGhhcmQgdG8gcmV2aWV3Lg0KDQpUaGUgY2hhbmdlIHdpdGggdGhl IGJ1ZmZlciBzaXplIGNvbWVzIGRvd24gZnJvbSBzaWk5MDJ4X2J1bGtfd3JpdGUgaW1wbGVtZW50 YXRpb24sDQp3aGljaCBidHcgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IHJlc2Vt YmxlcyBpdHMgcmVnbWFwIGVxdWl2YWxlbnQsIGluIHRlcm1zDQpvZiBwYXJhbWV0ZXJzLg0KDQo+ DQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gRmFiDQo+ID4NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9zaWk5MDJ4LmMgfCA0MDQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMTMwIGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAy eC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMNCj4gPiBpbmRleCBlNTlhMTM1 Li4xMzdhMDVhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAy eC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMNCj4gPiBAQCAt MjEsOSArMjEsOSBAQA0KPiA+ICAgKi8NCj4gPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvZ3Bpby9j b25zdW1lci5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaTJjLW11eC5oPg0KPiA+ICAjaW5jbHVk ZSA8bGludXgvaTJjLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiAtI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiA+DQo+ID4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPg0K PiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+ID4gQEAgLTgyLDEyICs4 MiwxMzAgQEANCj4gPg0KPiA+ICBzdHJ1Y3Qgc2lpOTAyeCB7DQo+ID4gICAgICAgICBzdHJ1Y3Qg aTJjX2NsaWVudCAqaTJjOw0KPiA+IC0gICAgICAgc3RydWN0IHJlZ21hcCAqcmVnbWFwOw0KPiA+ ICAgICAgICAgc3RydWN0IGRybV9icmlkZ2UgYnJpZGdlOw0KPiA+ICAgICAgICAgc3RydWN0IGRy bV9jb25uZWN0b3IgY29ubmVjdG9yOw0KPiA+ICAgICAgICAgc3RydWN0IGdwaW9fZGVzYyAqcmVz ZXRfZ3BpbzsNCj4gPiArICAgICAgIHN0cnVjdCBpMmNfbXV4X2NvcmUgKmkyY211eDsNCj4gPiAg fTsNCj4gPg0KPiA+ICtzdGF0aWMgaW50IHNpaTkwMnhfdHJhbnNmZXJfcmVhZChzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjLCB1OCByZWcsIHU4ICp2YWwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdTE2IGxlbiwgYm9vbCBsb2NrZWQpDQo+ID4gK3sNCj4gPiArICAgICAgIHN0 cnVjdCBpMmNfbXNnIHhmZXJbXSA9IHsNCj4gPiArICAgICAgICAgICAgICAgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIC5hZGRyID0gaTJjLT5hZGRyLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIC5mbGFncyA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLmxlbiA9 IDEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgLmJ1ZiA9ICZyZWcsDQo+ID4gKyAgICAg ICAgICAgICAgIH0sIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAuYWRkciA9IGkyYy0+ YWRkciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAuZmxhZ3MgPSBJMkNfTV9SRCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAubGVuID0gbGVuLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIC5idWYgPSB2YWwsDQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAg IH07DQo+ID4gKyAgICAgICB1bnNpZ25lZCBjaGFyIHhmZXJzID0gQVJSQVlfU0laRSh4ZmVyKTsN Cj4gPiArICAgICAgIGludCByZXQsIHJldHJpZXMgPSA1Ow0KPiA+ICsNCj4gPiArICAgICAgIGRv IHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGxvY2tlZCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXQgPSBpMmNfdHJhbnNmZXIoaTJjLT5hZGFwdGVyLCB4ZmVyLCB4ZmVycyk7DQo+ ID4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXQg PSBfX2kyY190cmFuc2ZlcihpMmMtPmFkYXB0ZXIsIHhmZXIsIHhmZXJzKTsNCj4gPiArICAgICAg ICAgICAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiArICAgICAgIH0gd2hpbGUgKHJldCAhPSB4ZmVycyAmJiAtLXJldHJpZXMpOw0K PiA+ICsgICAgICAgcmV0dXJuIHJldCA9PSB4ZmVycyA/IDAgOiAtMTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBzaWk5MDJ4X2J1bGtfcmVhZChzdHJ1Y3QgaTJjX2NsaWVudCAqaTJj LCB1OCByZWcsIHU4ICp2YWwsIHUxNiBsZW4pDQo+ID4gK3sNCj4gPiArICAgICAgIHJldHVybiBz aWk5MDJ4X3RyYW5zZmVyX3JlYWQoaTJjLCByZWcsIHZhbCwgbGVuLCB0cnVlKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBfX3NpaTkwMnhfYnVsa19yZWFkKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMsIHU4IHJlZywgdTggKnZhbCwgdTE2IGxlbikNCj4gPiArew0KPiA+ICsgICAgICAg cmV0dXJuIHNpaTkwMnhfdHJhbnNmZXJfcmVhZChpMmMsIHJlZywgdmFsLCBsZW4sIGZhbHNlKTsN Cj4gPiArfQ0KPg0KPiBJJ20gbm90IGEgZmFuIG9mIF9fZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMg c3ludGFjdGljYWxseQ0KPiBhbWJpZ291cyB3aGF0IHRoYXQgbWVhbnMuDQo+DQo+IEV4YW1wbGUg c2V0X2JpdCgpIHZzIF9fc2V0X2JpdCgpIC0gaXMgaXQgb2J2aW91cyBmcm9tIGNvbnRleHQNCj4g dGhhdCB0aGUgbGF0dGVyIGlzIG5vbi1hdG9taWM/IE5vLg0KPg0KPiBHaXZlIHRoZXNlIGZ1bmN0 aW9ucyBuYW1lcyB0aGF0IGluZGljYXRlIGV4YWN0bHkgd2hhdCB0aGV5DQo+IGRvIGFuZCB3aHks IHBsZWFzZS4NCj4NCj4gKl9sb2NrZWQgYW5kICpfdW5sb2NrZWQgdmFyaWFudHM/DQoNCkkgYWdy ZWUsIHdpbGwgZG8gdGhhdA0KDQo+DQo+ID4gK3N0YXRpYyBpbnQgc2lpOTAyeF9yZWFkKHN0cnVj dCBpMmNfY2xpZW50ICppMmMsIHU4IHJlZywgdTggKnZhbCkNCj4gPiArew0KPiA+ICsgICAgICAg cmV0dXJuIHNpaTkwMnhfYnVsa19yZWFkKGkyYywgcmVnLCB2YWwsIDEpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IF9fc2lpOTAyeF9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICppMmMs IHU4IHJlZywgdTggKnZhbCkNCj4gPiArew0KPiA+ICsgICAgICAgcmV0dXJuIF9fc2lpOTAyeF9i dWxrX3JlYWQoaTJjLCByZWcsIHZhbCwgMSk7DQo+ID4gK30NCj4NCj4gRGl0bw0KPg0KPiA+ICtz dGF0aWMgaW50IHNpaTkwMnhfdHJhbnNmZXJfd3JpdGUoc3RydWN0IGkyY19jbGllbnQgKmkyYywg dTggKnZhbCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgbGVuLCBi b29sIGxvY2tlZCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0IGkyY19tc2cgeGZlciA9IHsN Cj4gPiArICAgICAgICAgICAgICAgLmFkZHIgPSBpMmMtPmFkZHIsDQo+ID4gKyAgICAgICAgICAg ICAgIC5mbGFncyA9IDAsDQo+ID4gKyAgICAgICAgICAgICAgIC5sZW4gPSBsZW4sDQo+ID4gKyAg ICAgICAgICAgICAgIC5idWYgPSB2YWwsDQo+ID4gKyAgICAgICB9Ow0KPiA+ICsgICAgICAgaW50 IHJldCwgcmV0cmllcyA9IDU7DQo+ID4gKw0KPiA+ICsgICAgICAgZG8gew0KPiA+ICsgICAgICAg ICAgICAgICBpZiAobG9ja2VkKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGky Y190cmFuc2ZlcihpMmMtPmFkYXB0ZXIsICZ4ZmVyLCAxKTsNCj4gPiArICAgICAgICAgICAgICAg ZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IF9faTJjX3RyYW5zZmVyKGky Yy0+YWRhcHRlciwgJnhmZXIsIDEpOw0KPg0KPiBUaGlzIGxvY2tlZCB2YXJpYWJsZSBzZWVtcyB0 byBiZSB0aGUgbWFnaWMgZHVzdCBzbw0KPiBwbGVhc2UgZG9jdW1lbnQgaXQgdGhvcnVnaGx5Lg0K DQpXaWxsIGRvDQoNCj4NCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIH0gd2hpbGUgKCFy ZXQgJiYgLS1yZXRyaWVzKTsNCj4gPiArICAgICAgIHJldHVybiAhcmV0ID8gLTEgOiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHNpaTkwMnhfYnVsa193cml0ZShzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjLCB1OCAqdmFsLCB1MTYgbGVuKQ0KPiA+ICt7DQo+ID4gKyAgICAgICByZXR1 cm4gc2lpOTAyeF90cmFuc2Zlcl93cml0ZShpMmMsIHZhbCwgbGVuLCB0cnVlKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIGludCBzaWk5MDJ4X3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpp MmMsIHU4IHJlZywgdTggdmFsKQ0KPiA+ICt7DQo+ID4gKyAgICAgICB1OCBkYXRhWzJdID0ge3Jl ZywgdmFsfTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gc2lpOTAyeF90cmFuc2Zlcl93cml0 ZShpMmMsIGRhdGEsIDIsIHRydWUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IF9f c2lpOTAyeF93cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLCB1OCByZWcsIHU4IHZhbCkNCj4g PiArew0KPiA+ICsgICAgICAgdTggZGF0YVsyXSA9IHtyZWcsIHZhbH07DQo+ID4gKw0KPiA+ICsg ICAgICAgcmV0dXJuIHNpaTkwMnhfdHJhbnNmZXJfd3JpdGUoaTJjLCBkYXRhLCAyLCBmYWxzZSk7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc2lpOTAyeF91cGRhdGVfYml0cyhzdHJ1 Y3QgaTJjX2NsaWVudCAqaTJjLCB1OCByZWcsIHU4IG1hc2ssIHU4IHZhbCkNCj4gPiArew0KPiA+ ICsgICAgICAgaW50IHJldDsNCj4gPiArICAgICAgIHU4IHN0YXR1czsNCj4gPiArDQo+ID4gKyAg ICAgICByZXQgPSBzaWk5MDJ4X3JlYWQoaTJjLCByZWcsICZzdGF0dXMpOw0KPiA+ICsgICAgICAg aWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIHN0 YXR1cyAmPSB+bWFzazsNCj4gPiArICAgICAgIHN0YXR1cyB8PSB2YWwgJiBtYXNrOw0KPiA+ICsg ICAgICAgcmV0dXJuIHNpaTkwMnhfd3JpdGUoaTJjLCByZWcsIHN0YXR1cyk7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgX19zaWk5MDJ4X3VwZGF0ZV9iaXRzKHN0cnVjdCBpMmNfY2xp ZW50ICppMmMsIHU4IHJlZywgdTggbWFzaywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1OCB2YWwpDQo+ID4gK3sNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKyAgICAg ICB1OCBzdGF0dXM7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0gX19zaWk5MDJ4X3JlYWQoaTJj LCByZWcsICZzdGF0dXMpOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIHN0YXR1cyAmPSB+bWFzazsNCj4gPiArICAgICAg IHN0YXR1cyB8PSB2YWwgJiBtYXNrOw0KPiA+ICsgICAgICAgcmV0dXJuIF9fc2lpOTAyeF93cml0 ZShpMmMsIHJlZywgc3RhdHVzKTsNCj4gPiArfQ0KPg0KPiBEaXRvLg0KPg0KPiBTbyBub3cgYWxs IHJlYWQsIHdyaXRlIGFuZCBybXcgZnVuY3Rpb25zIGFyZSBkdXBsaWNhdGVkLg0KPg0KPiA+ICBz dGF0aWMgaW5saW5lIHN0cnVjdCBzaWk5MDJ4ICpicmlkZ2VfdG9fc2lpOTAyeChzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKQ0KPiA+ICB7DQo+ID4gICAgICAgICByZXR1cm4gY29udGFpbmVyX29m KGJyaWRnZSwgc3RydWN0IHNpaTkwMngsIGJyaWRnZSk7DQo+ID4gQEAgLTExNSw5ICsyMzMsOSBA QCBzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cw0KPiA+ICBzaWk5MDJ4X2Nvbm5lY3Rv cl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4g PiAgew0KPiA+ICAgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBjb25uZWN0b3JfdG9f c2lpOTAyeChjb25uZWN0b3IpOw0KPiA+IC0gICAgICAgdW5zaWduZWQgaW50IHN0YXR1czsNCj4g PiArICAgICAgIHU4IHN0YXR1czsNCj4gPg0KPiA+IC0gICAgICAgcmVnbWFwX3JlYWQoc2lpOTAy eC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOw0KPiA+ICsgICAgICAgc2lp OTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9JTlRfU1RBVFVTLCAmc3RhdHVzKTsNCj4g Pg0KPiA+ICAgICAgICAgcmV0dXJuIChzdGF0dXMgJiBTSUk5MDJYX1BMVUdHRURfU1RBVFVTKSA/ DQo+ID4gICAgICAgICAgICAgICAgY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgOiBjb25uZWN0 b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsNCj4gPiBAQCAtMTM1LDQxICsyNTMsMTEgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIHNpaTkwMnhfY29ubmVjdG9yX2Z1bmNz ID0gew0KPiA+ICBzdGF0aWMgaW50IHNpaTkwMnhfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0cnVjdCBzaWk5MDJ4ICpzaWk5 MDJ4ID0gY29ubmVjdG9yX3RvX3NpaTkwMngoY29ubmVjdG9yKTsNCj4gPiAtICAgICAgIHN0cnVj dCByZWdtYXAgKnJlZ21hcCA9IHNpaTkwMngtPnJlZ21hcDsNCj4gPiAgICAgICAgIHUzMiBidXNf Zm9ybWF0ID0gTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDsNCj4gPiAtICAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9ICZzaWk5MDJ4LT5pMmMtPmRldjsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGxv bmcgdGltZW91dDsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGludCByZXRyaWVzOw0KPiA+IC0gICAg ICAgdW5zaWduZWQgaW50IHN0YXR1czsNCj4gPiAgICAgICAgIHN0cnVjdCBlZGlkICplZGlkOw0K PiA+IC0gICAgICAgaW50IG51bSA9IDA7DQo+ID4gLSAgICAgICBpbnQgcmV0Ow0KPiA+IC0NCj4g PiAtICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhyZWdtYXAsIFNJSTkwMlhfU1lTX0NU UkxfREFUQSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX1NZ U19DVFJMX0REQ19CVVNfUkVRLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEpOw0KPiA+IC0gICAgICAgaWYgKHJldCkNCj4g PiAtICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgIGludCBudW0gPSAwLCBy ZXQ7DQo+ID4NCj4gPiAtICAgICAgIHRpbWVvdXQgPSBqaWZmaWVzICsNCj4gPiAtICAgICAgICAg ICAgICAgICBtc2Vjc190b19qaWZmaWVzKFNJSTkwMlhfSTJDX0JVU19BQ1FVSVNJVElPTl9USU1F T1VUX01TKTsNCj4gPiAtICAgICAgIGRvIHsNCj4gPiAtICAgICAgICAgICAgICAgcmV0ID0gcmVn bWFwX3JlYWQocmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsICZzdGF0dXMpOw0KPiA+IC0g ICAgICAgICAgICAgICBpZiAocmV0KQ0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+ID4gLSAgICAgICB9IHdoaWxlICghKHN0YXR1cyAmIFNJSTkwMlhfU1lTX0NUUkxf RERDX0JVU19HUlREKSAmJg0KPiA+IC0gICAgICAgICAgICAgICAgdGltZV9iZWZvcmUoamlmZmll cywgdGltZW91dCkpOw0KPiA+IC0NCj4gPiAtICAgICAgIGlmICghKHN0YXR1cyAmIFNJSTkwMlhf U1lTX0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+IC0gICAgICAgICAgICAgICBkZXZfZXJyKGRl diwgImZhaWxlZCB0byBhY3F1aXJlIHRoZSBpMmMgYnVzXG4iKTsNCj4gPiAtICAgICAgICAgICAg ICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gLSAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAg cmV0ID0gcmVnbWFwX3dyaXRlKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLCBzdGF0dXMp Ow0KPiA+IC0gICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gPiAtDQo+ID4gLSAgICAgICBlZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3Rvciwgc2lpOTAy eC0+aTJjLT5hZGFwdGVyKTsNCj4gPiArICAgICAgIGVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVj dG9yLCBzaWk5MDJ4LT5pMmNtdXgtPmFkYXB0ZXJbMF0pOw0KPiA+ICAgICAgICAgZHJtX2Nvbm5l Y3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOw0KPiA+ICAgICAgICAg aWYgKGVkaWQpIHsNCj4gPiAgICAgICAgICAgICAgICAgbnVtID0gZHJtX2FkZF9lZGlkX21vZGVz KGNvbm5lY3RvciwgZWRpZCk7DQo+ID4gQEAgLTE4MSw0MiArMjY5LDYgQEAgc3RhdGljIGludCBz aWk5MDJ4X2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPiA+ICAg ICAgICAgaWYgKHJldCkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPg0KPiA+ IC0gICAgICAgLyoNCj4gPiAtICAgICAgICAqIFNvbWV0aW1lcyB0aGUgSTJDIGJ1cyBjYW4gc3Rh bGwgYWZ0ZXIgZmFpbHVyZSB0byB1c2UgdGhlDQo+ID4gLSAgICAgICAgKiBFRElEIGNoYW5uZWwu IFJldHJ5IGEgZmV3IHRpbWVzIHRvIHNlZSBpZiB0aGluZ3MgY2xlYXINCj4gPiAtICAgICAgICAq IHVwLCBlbHNlIGNvbnRpbnVlIGFueXdheS4NCj4gPiAtICAgICAgICAqLw0KPiA+IC0gICAgICAg cmV0cmllcyA9IDU7DQo+ID4gLSAgICAgICBkbyB7DQo+ID4gLSAgICAgICAgICAgICAgIHJldCA9 IHJlZ21hcF9yZWFkKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHVzKTsNCj4gPiAtICAgICAgICAgICAgICAg cmV0cmllcy0tOw0KPiA+IC0gICAgICAgfSB3aGlsZSAocmV0ICYmIHJldHJpZXMpOw0KPiA+IC0g ICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQg dG8gcmVhZCBzdGF0dXMgKCVkKVxuIiwgcmV0KTsNCj4gPiAtDQo+ID4gLSAgICAgICByZXQgPSBy ZWdtYXBfdXBkYXRlX2JpdHMocmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JF USB8DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RS TF9ERENfQlVTX0dSVEQsIDApOw0KPiA+IC0gICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsNCj4gPiAtDQo+ID4gLSAgICAgICB0aW1lb3V0ID0gamlmZmllcyAr DQo+ID4gLSAgICAgICAgICAgICAgICAgbXNlY3NfdG9famlmZmllcyhTSUk5MDJYX0kyQ19CVVNf QUNRVUlTSVRJT05fVElNRU9VVF9NUyk7DQo+ID4gLSAgICAgICBkbyB7DQo+ID4gLSAgICAgICAg ICAgICAgIHJldCA9IHJlZ21hcF9yZWFkKHJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLCAm c3RhdHVzKTsNCj4gPiAtICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+IC0gICAgICAgfSB3aGlsZSAoc3RhdHVzICYgKFNJ STkwMlhfU1lTX0NUUkxfRERDX0JVU19SRVEgfA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSAmJg0KPiA+IC0gICAgICAgICAgICAg ICAgdGltZV9iZWZvcmUoamlmZmllcywgdGltZW91dCkpOw0KPiA+IC0NCj4gPiAtICAgICAgIGlm IChzdGF0dXMgJiAoU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JFUSB8DQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgIFNJSTkwMlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+IC0gICAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWxlYXNlIHRoZSBpMmMgYnVzXG4i KTsNCj4gPiAtICAgICAgICAgICAgICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gLSAgICAgICB9 DQo+ID4gLQ0KPiA+ICAgICAgICAgcmV0dXJuIG51bTsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTIz NywyMCArMjg5LDIwIEBAIHN0YXRpYyB2b2lkIHNpaTkwMnhfYnJpZGdlX2Rpc2FibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgew0KPiA+ICAgICAgICAgc3RydWN0IHNpaTkwMngg KnNpaTkwMnggPSBicmlkZ2VfdG9fc2lpOTAyeChicmlkZ2UpOw0KPiA+DQo+ID4gLSAgICAgICBy ZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9QV1JfRFdO LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RX Tik7DQo+ID4gKyAgICAgICBzaWk5MDJ4X3VwZGF0ZV9iaXRzKHNpaTkwMngtPmkyYywgU0lJOTAy WF9TWVNfQ1RSTF9EQVRBLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJY X1NZU19DVFJMX1BXUl9EV04sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkw MlhfU1lTX0NUUkxfUFdSX0RXTik7DQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBzaWk5 MDJ4X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiAgew0KPiA+ ICAgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMnggPSBicmlkZ2VfdG9fc2lpOTAyeChicmlk Z2UpOw0KPiA+DQo+ID4gLSAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoc2lpOTAyeC0+cmVnbWFw LCBTSUk5MDJYX1BXUl9TVEFURV9DVFJMLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg IFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX01TSywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICBTSUk5MDJYX0FWSV9QT1dFUl9TVEFURV9EKDApKTsNCj4gPiAtICAgICAgIHJlZ21hcF91 cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfU1lTX0NUUkxfREFUQSwNCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04sIDApOw0K PiA+ICsgICAgICAgc2lpOTAyeF91cGRhdGVfYml0cyhzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfUFdS X1NUQVRFX0NUUkwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhfQVZJ X1BPV0VSX1NUQVRFX01TSywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAy WF9BVklfUE9XRVJfU1RBVEVfRCgwKSk7DQo+ID4gKyAgICAgICBzaWk5MDJ4X3VwZGF0ZV9iaXRz KHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04sIDApOw0KPiA+ICB9DQo+ID4N Cj4gPiAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSwNCj4gPiBAQCAtMjU4LDI1ICszMTAsMjUgQEAgc3RhdGljIHZvaWQgc2lpOTAy eF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq KQ0KPiA+ICB7DQo+ID4gICAgICAgICBzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGJyaWRnZV90 b19zaWk5MDJ4KGJyaWRnZSk7DQo+ID4gLSAgICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBz aWk5MDJ4LT5yZWdtYXA7DQo+ID4gLSAgICAgICB1OCBidWZbSERNSV9JTkZPRlJBTUVfU0laRShB VkkpXTsNCj4gPiArICAgICAgIHU4IGJ1ZltIRE1JX0lORk9GUkFNRV9TSVpFKEFWSSkgKyAxXTsN Cj4NCj4gTWF5YmUgdGhpcyBzdHVmZiBzaG91bGQgYmUgYSBzZXBhcmF0ZSBjaGFuZ2U/DQoNClRo aXMgY2hhbmdlIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHNpaTkwMnhfYnVsa193cml0ZSB0YWtl cyBhbiBhcnJheSBvZiB1OCwgd2l0aCB0aGUgZmlyc3QgZWxlbWVudA0KYmVpbmcgdGhlIHJlZ2lz dGVyIGFkZHJlc3MsIHRoaXMgbWFrZXMgc2lpOTAyeF9idWxrX3dyaXRlIG5vdCBleGFjdGx5IHRo ZSBzYW1lIGFzIHJlZ21hcF9idWxrX3dyaXRlLg0KTWFyayBtYXkgcG9pbnQgb3V0IHNvbWV0aGlu ZyBiZXR0ZXIgcmVnbWFwIHJlbGF0ZWQsIHNvIG1heWJlIHRoZXJlIGlzIG5vIGV2ZW4gbmVlZCBm b3IgdGhpcy4NCg0KQWdhaW4sIHRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgY29tbWVudHMs IEkgYW0gbm90IGdvaW5nIHRvIHNlbmQgYSB2MiBvdXQgc3RyYWlnaHQgYXdheSwgSSB3b3VsZA0K bGlrZSB0byBoZWFyIGF0IGxlYXN0IGZyb20gV29sZnJhbSBhbmQgUGV0ZXIgYWJvdXQgdGhlIHdh eSBJIGhhdmUgaW1wbGVtZW50IHRoZSBpMmMtZ2F0ZSBhcyBpdCBpcyBhIGJpdA0KdW5jb252ZW50 aW9uYWwsIGFuZCB0aGVuIGl0IHdvdWxkIGJlIGdyZWF0IHRvIGhhdmUgTWFyaydzIG9waW5pb24g b24gdGhlIGxvY2tpbmcgYml0Lg0KDQpGYWINCg0KPg0KPiA+ICAgICAgICAgc3RydWN0IGhkbWlf YXZpX2luZm9mcmFtZSBmcmFtZTsNCj4gPiAgICAgICAgIGludCByZXQ7DQo+ID4NCj4gPiAtICAg ICAgIGJ1ZlswXSA9IGFkai0+Y2xvY2s7DQo+ID4gLSAgICAgICBidWZbMV0gPSBhZGotPmNsb2Nr ID4+IDg7DQo+ID4gLSAgICAgICBidWZbMl0gPSBhZGotPnZyZWZyZXNoOw0KPiA+IC0gICAgICAg YnVmWzNdID0gMHgwMDsNCj4gPiAtICAgICAgIGJ1Zls0XSA9IGFkai0+aGRpc3BsYXk7DQo+ID4g LSAgICAgICBidWZbNV0gPSBhZGotPmhkaXNwbGF5ID4+IDg7DQo+ID4gLSAgICAgICBidWZbNl0g PSBhZGotPnZkaXNwbGF5Ow0KPiA+IC0gICAgICAgYnVmWzddID0gYWRqLT52ZGlzcGxheSA+PiA4 Ow0KPiA+IC0gICAgICAgYnVmWzhdID0gU0lJOTAyWF9UUElfQ0xLX1JBVElPXzFYIHwgU0lJOTAy WF9UUElfQVZJX1BJWEVMX1JFUF9OT05FIHwNCj4gPiArICAgICAgIGJ1ZlswXSA9IFNJSTkwMlhf VFBJX1ZJREVPX0RBVEE7DQo+ID4gKyAgICAgICBidWZbMV0gPSBhZGotPmNsb2NrOw0KPiA+ICsg ICAgICAgYnVmWzJdID0gYWRqLT5jbG9jayA+PiA4Ow0KPiA+ICsgICAgICAgYnVmWzNdID0gYWRq LT52cmVmcmVzaDsNCj4gPiArICAgICAgIGJ1Zls0XSA9IDB4MDA7DQo+ID4gKyAgICAgICBidWZb NV0gPSBhZGotPmhkaXNwbGF5Ow0KPiA+ICsgICAgICAgYnVmWzZdID0gYWRqLT5oZGlzcGxheSA+ PiA4Ow0KPiA+ICsgICAgICAgYnVmWzddID0gYWRqLT52ZGlzcGxheTsNCj4gPiArICAgICAgIGJ1 Zls4XSA9IGFkai0+dmRpc3BsYXkgPj4gODsNCj4gPiArICAgICAgIGJ1Zls5XSA9IFNJSTkwMlhf VFBJX0NMS19SQVRJT18xWCB8IFNJSTkwMlhfVFBJX0FWSV9QSVhFTF9SRVBfTk9ORSB8DQo+ID4g ICAgICAgICAgICAgICAgICBTSUk5MDJYX1RQSV9BVklfUElYRUxfUkVQX0JVU18yNEJJVDsNCj4g PiAtICAgICAgIGJ1Zls5XSA9IFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9SQU5HRV9BVVRPIHwNCj4g PiAtICAgICAgICAgICAgICAgIFNJSTkwMlhfVFBJX0FWSV9JTlBVVF9DT0xPUlNQQUNFX1JHQjsN Cj4gPiArICAgICAgIGJ1ZlsxMF0gPSBTSUk5MDJYX1RQSV9BVklfSU5QVVRfUkFOR0VfQVVUTyB8 DQo+ID4gKyAgICAgICAgICAgICAgICAgU0lJOTAyWF9UUElfQVZJX0lOUFVUX0NPTE9SU1BBQ0Vf UkdCOw0KPiA+DQo+ID4gLSAgICAgICByZXQgPSByZWdtYXBfYnVsa193cml0ZShyZWdtYXAsIFNJ STkwMlhfVFBJX1ZJREVPX0RBVEEsIGJ1ZiwgMTApOw0KPiA+ICsgICAgICAgcmV0ID0gc2lpOTAy eF9idWxrX3dyaXRlKHNpaTkwMngtPmkyYywgYnVmLCAxMSk7DQo+ID4gICAgICAgICBpZiAocmV0 KQ0KPiA+ICAgICAgICAgICAgICAgICByZXR1cm47DQo+ID4NCj4gPiBAQCAtMjg2LDE2ICszMzgs MTcgQEAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSwNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICAgICAgICAgfQ0K PiA+DQo+ID4gLSAgICAgICByZXQgPSBoZG1pX2F2aV9pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1 Ziwgc2l6ZW9mKGJ1ZikpOw0KPiA+ICsgICAgICAgcmV0ID0gaGRtaV9hdmlfaW5mb2ZyYW1lX3Bh Y2soJmZyYW1lLCBidWYgKyAxLCBzaXplb2YoYnVmKSAtIDEpOw0KPiA+ICAgICAgICAgaWYgKHJl dCA8IDApIHsNCj4gPiAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGFjayBB VkkgaW5mb2ZyYW1lOiAlZFxuIiwgcmV0KTsNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuOw0K PiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gKyAgICAgICBidWZbMF0gPSBTSUk5MDJYX1RQSV9BVklf SU5GT0ZSQU1FOw0KPiA+ICAgICAgICAgLyogRG8gbm90IHNlbmQgdGhlIGluZm9mcmFtZSBoZWFk ZXIsIGJ1dCBrZWVwIHRoZSBDUkMgZmllbGQuICovDQo+ID4gLSAgICAgICByZWdtYXBfYnVsa193 cml0ZShyZWdtYXAsIFNJSTkwMlhfVFBJX0FWSV9JTkZPRlJBTUUsDQo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICBidWYgKyBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSAtIDEsDQo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FWSV9JTkZPRlJBTUVfU0laRSArIDEpOw0K PiA+ICsgICAgICAgc2lpOTAyeF9idWxrX3dyaXRlKHNpaTkwMngtPmkyYywNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICBidWYgKyBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICBIRE1JX0FWSV9JTkZPRlJBTUVfU0laRSArIDEp Ow0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIGludCBzaWk5MDJ4X2JyaWRnZV9hdHRhY2goc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSkNCj4gPiBAQCAtMzM2LDI5ICszODksMTMgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHNpaTkwMnhfYnJpZGdlX2Z1bmNzID0gew0K PiA+ICAgICAgICAgLmVuYWJsZSA9IHNpaTkwMnhfYnJpZGdlX2VuYWJsZSwNCj4gPiAgfTsNCj4g Pg0KPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZSBzaWk5MDJ4X3ZvbGF0aWxl X3Jhbmdlc1tdID0gew0KPiA+IC0gICAgICAgeyAucmFuZ2VfbWluID0gMCwgLnJhbmdlX21heCA9 IDB4ZmYgfSwNCj4gPiAtfTsNCj4gPiAtDQo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFw X2FjY2Vzc190YWJsZSBzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxlID0gew0KPiA+IC0gICAgICAgLnll c19yYW5nZXMgPSBzaWk5MDJ4X3ZvbGF0aWxlX3JhbmdlcywNCj4gPiAtICAgICAgIC5uX3llc19y YW5nZXMgPSBBUlJBWV9TSVpFKHNpaTkwMnhfdm9sYXRpbGVfcmFuZ2VzKSwNCj4gPiAtfTsNCj4g PiAtDQo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzaWk5MDJ4X3JlZ21h cF9jb25maWcgPSB7DQo+ID4gLSAgICAgICAucmVnX2JpdHMgPSA4LA0KPiA+IC0gICAgICAgLnZh bF9iaXRzID0gOCwNCj4gPiAtICAgICAgIC52b2xhdGlsZV90YWJsZSA9ICZzaWk5MDJ4X3ZvbGF0 aWxlX3RhYmxlLA0KPiA+IC0gICAgICAgLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9OT05FLA0KPiA+ IC19Ow0KPiA+IC0NCj4gPiAgc3RhdGljIGlycXJldHVybl90IHNpaTkwMnhfaW50ZXJydXB0KGlu dCBpcnEsIHZvaWQgKmRhdGEpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0cnVjdCBzaWk5MDJ4ICpz aWk5MDJ4ID0gZGF0YTsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXMgPSAwOw0KPiA+ ICsgICAgICAgdTggc3RhdHVzID0gMDsNCj4gPg0KPiA+IC0gICAgICAgcmVnbWFwX3JlYWQoc2lp OTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOw0KPiA+IC0gICAgICAg cmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTlRfU1RBVFVTLCBzdGF0dXMp Ow0KPiA+ICsgICAgICAgc2lpOTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9JTlRfU1RB VFVTLCAmc3RhdHVzKTsNCj4gPiArICAgICAgIHNpaTkwMnhfd3JpdGUoc2lpOTAyeC0+aTJjLCBT SUk5MDJYX0lOVF9TVEFUVVMsIHN0YXR1cyk7DQo+ID4NCj4gPiAgICAgICAgIGlmICgoc3RhdHVz ICYgU0lJOTAyWF9IT1RQTFVHX0VWRU5UKSAmJiBzaWk5MDJ4LT5icmlkZ2UuZGV2KQ0KPiA+ICAg ICAgICAgICAgICAgICBkcm1faGVscGVyX2hwZF9pcnFfZXZlbnQoc2lpOTAyeC0+YnJpZGdlLmRl dik7DQo+ID4gQEAgLTM2NiwyMyArNDAzLDExMSBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgc2lpOTAy eF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGF0YSkNCj4gPiAgICAgICAgIHJldHVybiBJUlFf SEFORExFRDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyBpbnQgc2lpOTAyeF9pMmNfYnlwYXNz X3NlbGVjdChzdHJ1Y3QgaTJjX211eF9jb3JlICptdXgsIHUzMiBjaGFuX2lkKQ0KPiA+ICt7DQo+ ID4gKyAgICAgICBzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGkyY19tdXhfcHJpdihtdXgpOw0K PiA+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnNpaTkwMngtPmkyYy0+ZGV2Ow0KPiA+ ICsgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0Ow0KPiA+ICsgICAgICAgdTggc3RhdHVzOw0K PiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBfX3NpaTkwMnhf dXBkYXRlX2JpdHMoc2lpOTAyeC0+aTJjLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVT X1JFUSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX1NZ U19DVFJMX0REQ19CVVNfUkVRKTsNCj4gPiArDQo+ID4gKyAgICAgICB0aW1lb3V0ID0gamlmZmll cyArDQo+ID4gKyAgICAgICAgICAgICAgICAgbXNlY3NfdG9famlmZmllcyhTSUk5MDJYX0kyQ19C VVNfQUNRVUlTSVRJT05fVElNRU9VVF9NUyk7DQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAg ICAgICAgICAgIHJldCA9IF9fc2lpOTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNf Q1RSTF9EQVRBLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Rh dHVzKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgfSB3aGlsZSAoIShzdGF0dXMgJiBTSUk5 MDJYX1NZU19DVFJMX0REQ19CVVNfR1JURCkgJiYNCj4gPiArICAgICAgICAgICAgICAgIHRpbWVf YmVmb3JlKGppZmZpZXMsIHRpbWVvdXQpKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoIShzdGF0 dXMgJiBTSUk5MDJYX1NZU19DVFJMX0REQ19CVVNfR1JURCkpIHsNCj4gPiArICAgICAgICAgICAg ICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWNxdWlyZSB0aGUgaTJjIGJ1c1xuIik7DQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAtRVRJTUVET1VUOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgIHJldCA9IF9fc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhf U1lTX0NUUkxfREFUQSwgc3RhdHVzKTsNCj4gPiArICAgICAgIGlmIChyZXQpDQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBzaWk5MDJ4X2kyY19ieXBhc3NfZGVzZWxlY3Qoc3RydWN0IGky Y19tdXhfY29yZSAqbXV4LCB1MzIgY2hhbl9pZCkNCj4gPiArew0KPiA+ICsgICAgICAgc3RydWN0 IHNpaTkwMnggKnNpaTkwMnggPSBpMmNfbXV4X3ByaXYobXV4KTsNCj4gPiArICAgICAgIHN0cnVj dCBkZXZpY2UgKmRldiA9ICZzaWk5MDJ4LT5pMmMtPmRldjsNCj4gPiArICAgICAgIHVuc2lnbmVk IGxvbmcgdGltZW91dDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGludCByZXRyaWVzOw0KPiA+ICsg ICAgICAgdTggc3RhdHVzOw0KPiA+ICsgICAgICAgaW50IHJldDsNCj4gPiArDQo+ID4gKyAgICAg ICB1ZGVsYXkoMzApOw0KPiA+ICsNCj4gPiArICAgICAgIC8qDQo+ID4gKyAgICAgICAgKiBTb21l dGltZXMgdGhlIEkyQyBidXMgY2FuIHN0YWxsIGFmdGVyIGZhaWx1cmUgdG8gdXNlIHRoZQ0KPiA+ ICsgICAgICAgICogRURJRCBjaGFubmVsLiBSZXRyeSBhIGZldyB0aW1lcyB0byBzZWUgaWYgdGhp bmdzIGNsZWFyDQo+ID4gKyAgICAgICAgKiB1cCwgZWxzZSBjb250aW51ZSBhbnl3YXkuDQo+ID4g KyAgICAgICAgKi8NCj4gPiArICAgICAgIHJldHJpZXMgPSA1Ow0KPiA+ICsgICAgICAgZG8gew0K PiA+ICsgICAgICAgICAgICAgICByZXQgPSBfX3NpaTkwMnhfcmVhZChzaWk5MDJ4LT5pMmMsIFNJ STkwMlhfU1lTX0NUUkxfREFUQSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnN0YXR1cyk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHJpZXMtLTsNCj4gPiArICAg ICAgIH0gd2hpbGUgKHJldCAmJiByZXRyaWVzKTsNCj4gPiArICAgICAgIGlmIChyZXQpIHsNCj4g PiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVhZCBzdGF0dXMgKCVk KVxuIiwgcmV0KTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBfX3NpaTkwMnhfdXBkYXRlX2JpdHMoc2lpOTAy eC0+aTJjLCBTSUk5MDJYX1NZU19DVFJMX0RBVEEsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX1JFUSB8DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0lJOTAyWF9TWVNfQ1RSTF9ERENfQlVTX0dS VEQsIDApOw0KPiA+ICsgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiArDQo+ID4gKyAgICAgICB0aW1lb3V0ID0gamlmZmllcyArDQo+ID4gKyAgICAg ICAgICAgICAgICAgbXNlY3NfdG9famlmZmllcyhTSUk5MDJYX0kyQ19CVVNfQUNRVUlTSVRJT05f VElNRU9VVF9NUyk7DQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9 IF9fc2lpOTAyeF9yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9TWVNfQ1RSTF9EQVRBLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHVzKTsNCj4gPiArICAg ICAgICAgICAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPiA+ICsgICAgICAgfSB3aGlsZSAoc3RhdHVzICYgKFNJSTkwMlhfU1lTX0NUUkxfRERD X0JVU19SRVEgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhfU1lTX0NU UkxfRERDX0JVU19HUlREKSAmJg0KPiA+ICsgICAgICAgICAgICAgICAgdGltZV9iZWZvcmUoamlm ZmllcywgdGltZW91dCkpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChzdGF0dXMgJiAoU0lJOTAy WF9TWVNfQ1RSTF9ERENfQlVTX1JFUSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFNJSTkw MlhfU1lTX0NUUkxfRERDX0JVU19HUlREKSkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJy KGRldiwgImZhaWxlZCB0byByZWxlYXNlIHRoZSBpMmMgYnVzXG4iKTsNCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpDQo+ID4gIHsNCj4gPiAgICAgICAgIHN0 cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsNCj4gPiAtICAgICAgIHVuc2lnbmVkIGlu dCBzdGF0dXMgPSAwOw0KPiA+ICAgICAgICAgc3RydWN0IHNpaTkwMnggKnNpaTkwMng7DQo+ID4g LSAgICAgICB1OCBjaGlwaWRbNF07DQo+ID4gKyAgICAgICB1OCBjaGlwaWRbNF0sIHN0YXR1cyA9 IDA7DQo+ID4gICAgICAgICBpbnQgcmV0Ow0KPiA+DQo+ID4gKyAgICAgICByZXQgPSBpMmNfY2hl Y2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsIEkyQ19GVU5DX0kyQyk7DQo+ID4gKyAg ICAgICBpZiAoIXJldCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkkyQyBh ZGFwdGVyIG5vdCBzdWl0YWJsZVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlP Ow0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAgIHNpaTkwMnggPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKnNpaTkwMngpLCBHRlBfS0VSTkVMKTsNCj4gPiAgICAgICAgIGlmICgh c2lpOTAyeCkNCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4NCj4gPiAg ICAgICAgIHNpaTkwMngtPmkyYyA9IGNsaWVudDsNCj4gPiAtICAgICAgIHNpaTkwMngtPnJlZ21h cCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJnNpaTkwMnhfcmVnbWFwX2NvbmZpZyk7 DQo+ID4gLSAgICAgICBpZiAoSVNfRVJSKHNpaTkwMngtPnJlZ21hcCkpDQo+ID4gLSAgICAgICAg ICAgICAgIHJldHVybiBQVFJfRVJSKHNpaTkwMngtPnJlZ21hcCk7DQo+ID4NCj4gPiAgICAgICAg IHNpaTkwMngtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJyZXNl dCIsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1BJT0RfT1VUX0xPVyk7DQo+ID4gQEAgLTM5NCwxNCArNTE5LDE0IEBAIHN0YXRpYyBp bnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+DQo+ID4gICAg ICAgICBzaWk5MDJ4X3Jlc2V0KHNpaTkwMngpOw0KPiA+DQo+ID4gLSAgICAgICByZXQgPSByZWdt YXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1JFR19UUElfUlFCLCAweDApOw0KPiA+ ICsgICAgICAgcmV0ID0gc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfUkVHX1RQ SV9SUUIsIDB4MCk7DQo+ID4gICAgICAgICBpZiAocmV0KQ0KPiA+ICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KPiA+DQo+ID4gLSAgICAgICByZXQgPSByZWdtYXBfYnVsa19yZWFkKHNpaTkw MngtPnJlZ21hcCwgU0lJOTAyWF9SRUdfQ0hJUElEKDApLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY2hpcGlkLCA0KTsNCj4gPiArICAgICAgIHJldCA9IHNpaTkwMnhfYnVs a19yZWFkKHNpaTkwMngtPmkyYywgU0lJOTAyWF9SRUdfQ0hJUElEKDApLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hpcGlkLCA0KTsNCj4gPiAgICAgICAgIGlmIChyZXQp IHsNCj4gPiAtICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJyZWdtYXBfcmVhZCBmYWlsZWQg JWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQ2FuJ3QgcmVh ZCBjaGlwaWQgKGVycm9yID0gJWQpXG4iLCByZXQpOw0KPiA+ICAgICAgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gQEAgLTQxMiwxMiArNTM3LDEyIEBAIHN0 YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+ICAg ICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAvKiBDbGVhciBhbGwgcGVuZGluZyBpbnRlcnJ1cHRz ICovDQo+ID4gLSAgICAgICByZWdtYXBfcmVhZChzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5U X1NUQVRVUywgJnN0YXR1cyk7DQo+ID4gLSAgICAgICByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVn bWFwLCBTSUk5MDJYX0lOVF9TVEFUVVMsIHN0YXR1cyk7DQo+ID4gKyAgICAgICBzaWk5MDJ4X3Jl YWQoc2lpOTAyeC0+aTJjLCBTSUk5MDJYX0lOVF9TVEFUVVMsICZzdGF0dXMpOw0KPiA+ICsgICAg ICAgc2lpOTAyeF93cml0ZShzaWk5MDJ4LT5pMmMsIFNJSTkwMlhfSU5UX1NUQVRVUywgc3RhdHVz KTsNCj4gPg0KPiA+ICAgICAgICAgaWYgKGNsaWVudC0+aXJxID4gMCkgew0KPiA+IC0gICAgICAg ICAgICAgICByZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX0lOVF9FTkFCTEUs DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSUk5MDJYX0hPVFBMVUdfRVZFTlQp Ow0KPiA+ICsgICAgICAgICAgICAgICBzaWk5MDJ4X3dyaXRlKHNpaTkwMngtPmkyYywgU0lJOTAy WF9JTlRfRU5BQkxFLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJSTkwMlhf SE9UUExVR19FVkVOVCk7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgcmV0ID0gZGV2bV9yZXF1 ZXN0X3RocmVhZGVkX2lycShkZXYsIGNsaWVudC0+aXJxLCBOVUxMLA0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpaTkwMnhfaW50ZXJydXB0LA0K PiA+IEBAIC00MzMsNiArNTU4LDIyIEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50LA0KPiA+DQo+ID4gICAgICAgICBpMmNfc2V0X2NsaWVudGRhdGEo Y2xpZW50LCBzaWk5MDJ4KTsNCj4gPg0KPiA+ICsgICAgICAgc2lpOTAyeC0+aTJjbXV4ID0gaTJj X211eF9hbGxvYyhjbGllbnQtPmFkYXB0ZXIsIGRldiwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMSwgMCwgSTJDX01VWF9HQVRFLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWk5MDJ4X2kyY19ieXBhc3Nfc2VsZWN0LA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWk5MDJ4X2kyY19i eXBhc3NfZGVzZWxlY3QpOw0KPiA+ICsgICAgICAgaWYgKCFzaWk5MDJ4LT5pMmNtdXgpIHsNCj4g PiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgSTJDIG11 eFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgIHNpaTkwMngtPmkyY211eC0+cHJpdiA9IHNpaTkwMng7DQo+ ID4gKyAgICAgICByZXQgPSBpMmNfbXV4X2FkZF9hZGFwdGVyKHNpaTkwMngtPmkyY211eCwgMCwg MCwgMCk7DQo+ID4gKyAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiQ291bGRuJ3QgYWRkIGkyYyBtdXggYWRhcHRlclxuIik7DQo+ID4gKyAgICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICAgICAgICAgcmV0 dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+IEBAIC00NDEsNiArNTgyLDkgQEAgc3RhdGljIGludCBz aWk5MDJ4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPiA+ICB7DQo+ID4gICAg ICAgICBzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQp Ow0KPiA+DQo+ID4gKyAgICAgICBpZiAoc2lpOTAyeC0+aTJjbXV4KQ0KPiA+ICsgICAgICAgICAg ICAgICBpMmNfbXV4X2RlbF9hZGFwdGVycyhzaWk5MDJ4LT5pMmNtdXgpOw0KPiA+ICsNCj4gPiAg ICAgICAgIGRybV9icmlkZ2VfcmVtb3ZlKCZzaWk5MDJ4LT5icmlkZ2UpOw0KPiA+DQo+ID4gICAg ICAgICByZXR1cm4gMDsNCj4NCj4gWW91cnMsDQo+IExpbnVzIFdhbGxlaWoNCg0KDQoNClJlbmVz YXMgRWxlY3Ryb25pY3MgRXVyb3BlIEx0ZCwgRHVrZXMgTWVhZG93LCBNaWxsYm9hcmQgUm9hZCwg Qm91cm5lIEVuZCwgQnVja2luZ2hhbXNoaXJlLCBTTDggNUZILCBVSy4gUmVnaXN0ZXJlZCBpbiBF bmdsYW5kICYgV2FsZXMgdW5kZXIgUmVnaXN0ZXJlZCBOby4gMDQ1ODY3MDkuDQo=