From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35C44C2BB55 for ; Thu, 16 Apr 2020 18:40:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 11F1020786 for ; Thu, 16 Apr 2020 18:40:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 11F1020786 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 517FD6EA8F; Thu, 16 Apr 2020 18:40:04 +0000 (UTC) Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E7596EA8F for ; Thu, 16 Apr 2020 18:40:02 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: aratiu) with ESMTPSA id 7687F2A223A From: Adrian Ratiu To: Enric Balletbo Serra Subject: Re: [PATCH v6 1/8] drm: bridge: dw_mipi_dsi: add initial regmap infrastructure In-Reply-To: References: <20200414151955.311949-1-adrian.ratiu@collabora.com> <20200414151955.311949-2-adrian.ratiu@collabora.com> Date: Thu, 16 Apr 2020 21:41:10 +0300 Message-ID: <87lfmvjmt5.fsf@collabora.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , Jernej Skrabec , Adrian Pop , Jonas Karlman , linux-kernel , dri-devel , Andrzej Hajda , "open list:ARM/Rockchip SoC..." , Laurent Pinchart , Arnaud Ferraris , Collabora Kernel ML , Ezequiel Garcia , linux-stm32@st-md-mailman.stormreply.com, Linux ARM , linux-imx@nxp.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gV2VkLCAxNSBBcHIgMjAyMCwgRW5yaWMgQmFsbGV0Ym8gU2VycmEgPGViYWxsZXRib0BnbWFp bC5jb20+IAp3cm90ZToKPiBIaSBBZHJpYW4sIAo+IAo+IFNvbWUgZmV3IGNvbW1lbnRzL25pdHMg YmVsb3csIAo+IAo+IE1pc3NhdGdlIGRlIEFkcmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QGNvbGxh Ym9yYS5jb20+IGRlbCBkaWEgCj4gZHQuLCAxNCBk4oCZYWJyLiAyMDIwIGEgbGVzIDE3OjE5OiAK Pj4gCj4+IEluIG9yZGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIFN5bm9w c2lzIE1JUEkgRFNJIAo+PiBob3N0IGNvbnRyb2xsZXIsIHdoaWNoIGhhdmUgZGlmZmVyZW50IHJl Z2lzdGVyIGxheW91dHMgYnV0IAo+PiBhbG1vc3QgaWRlbnRpY2FsIEhXIHByb3RvY29scywgd2Ug YWRkIGEgcmVnbWFwIGluZnJhc3RydWN0dXJlIAo+PiB3aGljaCBjYW4gYWJzdHJhY3QgYXdheSBy ZWdpc3RlciBhY2Nlc3NlcyBmb3IgcGxhdGZvcm0gZHJpdmVycyAKPj4gdXNpbmcgdGhlIGJyaWRn ZS4gCj4+IAo+PiBUaGUgY29udHJvbGxlciBIVyByZXZpc2lvbiBpcyBkZXRlY3RlZCBkdXJpbmcg YnJpZGdlIHByb2JlIAo+PiB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZnV0dXJlIGNvbW1pdHMgdG8g bG9hZCB0aGUgcmVsZXZhbnQgCj4+IHJlZ2lzdGVyIGxheW91dCB3aGljaCB0aGUgYnJpZGdlIHdp bGwgdXNlIHRyYW5zcGFyZW50bHkgdG8gdGhlIAo+PiBwbGF0Zm9ybSBkcml2ZXJzLiAKPj4gCj4+ IFN1Z2dlc3RlZC1ieTogRXplcXVpZWwgR2FyY2lhIDxlemVxdWllbEBjb2xsYWJvcmEuY29tPiAK Pj4gVGVzdGVkLWJ5OiBBZHJpYW4gUG9wIDxwb3AuYWRyaWFuNjFAZ21haWwuY29tPiBUZXN0ZWQt Ynk6IAo+PiBBcm5hdWQgRmVycmFyaXMgPGFybmF1ZC5mZXJyYXJpc0Bjb2xsYWJvcmEuY29tPiBT aWduZWQtb2ZmLWJ5OiAKPj4gQWRyaWFuIFJhdGl1IDxhZHJpYW4ucmF0aXVAY29sbGFib3JhLmNv bT4gLS0tIE5ldyBpbiB2NS4gIC0tLSAKPj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3Bz eXMvZHctbWlwaS1kc2kuYyB8IDIwOCAKPj4gICsrKysrKysrKystLS0tLS0tLSAxIGZpbGUgY2hh bmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDkxIAo+PiAgZGVsZXRpb25zKC0pIAo+PiAKPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctbWlwaS1kc2kuYyAK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMgaW5kZXgg Cj4+IDVlZjBmMTU0YWE3Yi4uNmQ5ZTJmMjFjOWNjIDEwMDY0NCAtLS0gCj4+IGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9zeW5vcHN5cy9kdy1taXBpLWRzaS5jICsrKyAKPj4gYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LW1pcGktZHNpLmMgQEAgLTE1LDYgKzE1LDcgCj4+IEBA IAo+PiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPiAjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNl Lmg+IAo+PiAgI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4gCj4+ICsjaW5jbHVkZSA8bGlu dXgvcmVnbWFwLmg+IAo+IAo+IFNob3VsZCBLY29uZmlnIHNlbGVjdCBSRUdNQVAgZm9yIHRoaXMg ZHJpdmVyPyAKPiAKPj4gICNpbmNsdWRlIDxsaW51eC9yZXNldC5oPiAKPj4gCj4+ICAjaW5jbHVk ZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+IAo+PiBAQCAtMjI3LDYgKzIyOCw3IEBAIHN0cnVjdCBk d19taXBpX2RzaSB7IAo+PiAgICAgICAgIHN0cnVjdCBkcm1fYnJpZGdlICpwYW5lbF9icmlkZ2U7 IHN0cnVjdCBkZXZpY2UgKmRldjsgCj4+ICAgICAgICAgdm9pZCBfX2lvbWVtICpiYXNlOyAKPj4g KyAgICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdzOyAKPj4gCj4+ICAgICAgICAgc3RydWN0IGNsayAq cGNsazsgCj4+IAo+PiBAQCAtMjM1LDYgKzIzNyw3IEBAIHN0cnVjdCBkd19taXBpX2RzaSB7IAo+ PiAgICAgICAgIHUzMiBsYW5lczsgdTMyIGZvcm1hdDsgdW5zaWduZWQgbG9uZyBtb2RlX2ZsYWdz OyAKPj4gKyAgICAgICB1MzIgaHdfdmVyc2lvbjsgCj4+IAo+PiAgI2lmZGVmIENPTkZJR19ERUJV R19GUyAKPj4gICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzOyAKPj4gQEAgLTI0OSw2ICsy NTIsMTMgQEAgc3RydWN0IGR3X21pcGlfZHNpIHsgCj4+ICAgICAgICAgY29uc3Qgc3RydWN0IGR3 X21pcGlfZHNpX3BsYXRfZGF0YSAqcGxhdF9kYXRhOyAKPj4gIH07IAo+PiAKPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBkd19taXBpX2RzaV9yZWdtYXBfY2ZnID0geyArIAo+ PiAucmVnX2JpdHMgPSAzMiwgKyAgICAgICAudmFsX2JpdHMgPSAzMiwgKyAgICAgICAucmVnX3N0 cmlkZSA9IAo+PiA0LCArICAgICAgIC5uYW1lID0gImR3LW1pcGktZHNpIiwgK307ICsgCj4+ICAv KiAKPj4gICAqIENoZWNrIGlmIGVpdGhlciBhIGxpbmsgdG8gYSBtYXN0ZXIgb3Igc2xhdmUgaXMg cHJlc2VudCAqLyAKPj4gQEAgLTI4MCwxNiArMjkwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qg ZHdfbWlwaV9kc2kgCj4+ICpicmlkZ2VfdG9fZHNpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up IAo+PiAgICAgICAgIHJldHVybiBjb250YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgZHdfbWlwaV9k c2ksIAo+PiAgICAgICAgIGJyaWRnZSk7IAo+PiAgfSAKPj4gCj4+IC1zdGF0aWMgaW5saW5lIHZv aWQgZHNpX3dyaXRlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCB1MzIgcmVnLCAKPj4gdTMyIHZh bCkgLXsgLSAgICAgICB3cml0ZWwodmFsLCBkc2ktPmJhc2UgKyByZWcpOyAtfSAtIC1zdGF0aWMg Cj4+IGlubGluZSB1MzIgZHNpX3JlYWQoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksIHUzMiByZWcp IC17IC0gCj4+IHJldHVybiByZWFkbChkc2ktPmJhc2UgKyByZWcpOyAtfSAtIAo+PiAgc3RhdGlj IGludCBkd19taXBpX2RzaV9ob3N0X2F0dGFjaChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwg Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGV2aWNlKSAKPj4g IHsgCj4+IEBAIC0zNjYsMjkgKzM2NiwyOSBAQCBzdGF0aWMgdm9pZCBkd19taXBpX21lc3NhZ2Vf Y29uZmlnKHN0cnVjdCAKPj4gZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAgICAgICAgaWYgKGxwbSkg Cj4+ICAgICAgICAgICAgICAgICB2YWwgfD0gQ01EX01PREVfQUxMX0xQOyAKPj4gCj4+IC0gICAg ICAgZHNpX3dyaXRlKGRzaSwgRFNJX0xQQ0xLX0NUUkwsIGxwbSA/IDAgOiAKPj4gUEhZX1RYUkVR VUVTVENMS0hTKTsgLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfQ01EX01PREVfQ0ZHLCAKPj4g dmFsKTsgKyAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfTFBDTEtfQ1RSTCwgbHBt ID8gMCA6IAo+PiBQSFlfVFhSRVFVRVNUQ0xLSFMpOyArICAgICAgIHJlZ21hcF93cml0ZShkc2kt PnJlZ3MsIAo+PiBEU0lfQ01EX01PREVfQ0ZHLCB2YWwpOyAKPj4gIH0gCj4+IAo+PiAgc3RhdGlj IGludCBkd19taXBpX2RzaV9nZW5fcGt0X2hkcl93cml0ZShzdHJ1Y3QgZHdfbWlwaV9kc2kgCj4+ ICAqZHNpLCB1MzIgaGRyX3ZhbCkgeyAKPj4gICAgICAgICBpbnQgcmV0OyAKPj4gLSAgICAgICB1 MzIgdmFsLCBtYXNrOyArICAgICAgIHUzMiB2YWwgPSAwLCBtYXNrOyAKPj4gCj4gCj4gSSB0aGlu ayB0aGF0IHRoaXMgY2hhbmdlIGlzIG5vdCBuZWVkZWQsIGB2YWxgIGlzIGFuIGlucHV0IAo+IHZh cmlhYmxlIHRoYXQgd2lsbCBiZSBvdmVyd3JpdHRlbiBpbnNpZGUgdGhlIAo+IHJlZ21hcF9yZWFk X3BvbGxfdGltZW91dC4gIEluaXRpYWxpemUgaGVyZSBpcyBub3QgbmVlZGVkLiAKPiAKPj4gLSAg ICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoZHNpLT5iYXNlICsgCj4+IERTSV9DTURfUEtU X1NUQVRVUywgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLCAhKHZhbCAKPj4g JiBHRU5fQ01EX0ZVTEwpLCAxMDAwLCAtIAo+PiBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsg KyAgICAgICByZXQgPSAKPj4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJ X0NNRF9QS1RfU1RBVFVTLCArIAo+PiB2YWwsICEodmFsICYgR0VOX0NNRF9GVUxMKSwgMTAwMCwg KyAKPj4gQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7IAo+PiAgICAgICAgIGlmIChyZXQpIHsg Cj4+ICAgICAgICAgICAgICAgICBkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRvIGdldCBhdmFp bGFibGUgCj4+ICAgICAgICAgICAgICAgICBjb21tYW5kIEZJRk9cbiIpOyByZXR1cm4gcmV0OyAK Pj4gICAgICAgICB9IAo+PiAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfR0VOX0hEUiwg aGRyX3ZhbCk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9HRU5fSERSLCBoZHJf dmFsKTsgCj4+IAo+PiAgICAgICAgIG1hc2sgPSBHRU5fQ01EX0VNUFRZIHwgR0VOX1BMRF9XX0VN UFRZOyAKPj4gLSAgICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoZHNpLT5iYXNlICsgCj4+ IERTSV9DTURfUEtUX1NUQVRVUywgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs LCAodmFsIAo+PiAmIG1hc2spID09IG1hc2ssIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEwMDAsIAo+PiBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsgKyAgICAgICByZXQgPSAK Pj4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJX0NNRF9QS1RfU1RBVFVT LCArIAo+PiB2YWwsICh2YWwgJiBtYXNrKSA9PSBtYXNrLCArIAo+PiAxMDAwLCBDTURfUEtUX1NU QVRVU19USU1FT1VUX1VTKTsgCj4+ICAgICAgICAgaWYgKHJldCkgeyAKPj4gICAgICAgICAgICAg ICAgIGRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQgdG8gd3JpdGUgY29tbWFuZCAKPj4gICAgICAg ICAgICAgICAgIEZJRk9cbiIpOyByZXR1cm4gcmV0OyAKPj4gQEAgLTQwMywyNCArNDAzLDI2IEBA IHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfd3JpdGUoc3RydWN0IAo+PiBkd19taXBpX2RzaSAqZHNp LCAKPj4gICAgICAgICBjb25zdCB1OCAqdHhfYnVmID0gcGFja2V0LT5wYXlsb2FkOyBpbnQgbGVu ID0gCj4+ICAgICAgICAgcGFja2V0LT5wYXlsb2FkX2xlbmd0aCwgcGxkX2RhdGFfYnl0ZXMgPSBz aXplb2YodTMyKSwgCj4+ICAgICAgICAgcmV0OyBfX2xlMzIgd29yZDsgCj4+IC0gICAgICAgdTMy IHZhbDsgKyAgICAgICB1MzIgdmFsID0gMDsgCj4+IAo+IAo+IFRoZSBzYW1lIGhlcmUsICd2YWwn IGlzIHVzZWQgZm9yIHRoZSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQgCj4gYW5kIHdpbGwgYmUg b3ZlcndyaXR0ZW4sIG5vIG5lZWQgdG8gaW5pdGlhbGl6ZS4gCj4gCj4+ICAgICAgICAgd2hpbGUg KGxlbikgeyAKPj4gICAgICAgICAgICAgICAgIGlmIChsZW4gPCBwbGRfZGF0YV9ieXRlcykgeyAK Pj4gICAgICAgICAgICAgICAgICAgICAgICAgd29yZCA9IDA7IG1lbWNweSgmd29yZCwgdHhfYnVm LCBsZW4pOyAKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX0dF Tl9QTERfREFUQSwgCj4+IGxlMzJfdG9fY3B1KHdvcmQpKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRz aS0+cmVncywgRFNJX0dFTl9QTERfREFUQSwgKyAKPj4gbGUzMl90b19jcHUod29yZCkpOyAKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gMDsgCj4+ICAgICAgICAgICAgICAgICB9IGVs c2UgeyAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZ3b3JkLCB0eF9idWYsIHBs ZF9kYXRhX2J5dGVzKTsgCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIGRzaV93cml0ZShkc2ks IERTSV9HRU5fUExEX0RBVEEsIAo+PiBsZTMyX3RvX2NwdSh3b3JkKSk7ICsgCj4+IHJlZ21hcF93 cml0ZShkc2ktPnJlZ3MsIERTSV9HRU5fUExEX0RBVEEsICsgCj4+IGxlMzJfdG9fY3B1KHdvcmQp KTsgCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHR4X2J1ZiArPSBwbGRfZGF0YV9ieXRlczsg bGVuIC09IAo+PiAgICAgICAgICAgICAgICAgICAgICAgICBwbGRfZGF0YV9ieXRlczsgCj4+ICAg ICAgICAgICAgICAgICB9IAo+PiAKPj4gLSAgICAgICAgICAgICAgIHJldCA9IHJlYWRsX3BvbGxf dGltZW91dChkc2ktPmJhc2UgKyAKPj4gRFNJX0NNRF9QS1RfU1RBVFVTLCAtIAo+PiB2YWwsICEo dmFsICYgR0VOX1BMRF9XX0ZVTEwpLCAxMDAwLCAtIAo+PiBDTURfUEtUX1NUQVRVU19USU1FT1VU X1VTKTsgKyAgICAgICAgICAgICAgIHJldCA9IAo+PiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQo ZHNpLT5yZWdzLCBEU0lfQ01EX1BLVF9TVEFUVVMsICsgCj4+IHZhbCwgISh2YWwgJiBHRU5fUExE X1dfRlVMTCksICsgCj4+IDEwMDAsIENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyAKPj4gICAg ICAgICAgICAgICAgIGlmIChyZXQpIHsgCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9l cnIoZHNpLT5kZXYsIAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQg dG8gZ2V0IGF2YWlsYWJsZSB3cml0ZSAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXlsb2FkIEZJRk9cbiIpOyAKPj4gQEAgLTQzOCwxMiArNDQwLDEyIEBAIHN0YXRpYyBpbnQg ZHdfbWlwaV9kc2lfcmVhZChzdHJ1Y3QgCj4+IGR3X21pcGlfZHNpICpkc2ksIAo+PiAgeyAKPj4g ICAgICAgICBpbnQgaSwgaiwgcmV0LCBsZW4gPSBtc2ctPnJ4X2xlbjsgdTggKmJ1ZiA9IAo+PiAg ICAgICAgIG1zZy0+cnhfYnVmOyAKPj4gLSAgICAgICB1MzIgdmFsOyArICAgICAgIHUzMiB2YWwg PSAwOyAKPj4gCj4gCj4gZGl0dG8gCj4gCj4+ICAgICAgICAgLyogV2FpdCBlbmQgb2YgdGhlIHJl YWQgb3BlcmF0aW9uICovIAo+PiAtICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2kt PmJhc2UgKyAKPj4gRFNJX0NNRF9QS1RfU1RBVFVTLCAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWwsICEodmFsIAo+PiAmIEdFTl9SRF9DTURfQlVTWSksIC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEwMDAsIAo+PiBDTURfUEtUX1NUQVRVU19USU1FT1VUX1VTKTsg KyAgICAgICByZXQgPSAKPj4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJ X0NNRF9QS1RfU1RBVFVTLCArIAo+PiB2YWwsICEodmFsICYgR0VOX1JEX0NNRF9CVVNZKSwgKyAK Pj4gMTAwMCwgQ01EX1BLVF9TVEFUVVNfVElNRU9VVF9VUyk7IAo+PiAgICAgICAgIGlmIChyZXQp IHsgCj4+ICAgICAgICAgICAgICAgICBkZXZfZXJyKGRzaS0+ZGV2LCAiVGltZW91dCBkdXJpbmcg cmVhZCAKPj4gICAgICAgICAgICAgICAgIG9wZXJhdGlvblxuIik7IHJldHVybiByZXQ7IAo+PiBA QCAtNDUxLDE1ICs0NTMsMTUgQEAgc3RhdGljIGludCBkd19taXBpX2RzaV9yZWFkKHN0cnVjdCAK Pj4gZHdfbWlwaV9kc2kgKmRzaSwgCj4+IAo+PiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47 IGkgKz0gNCkgeyAKPj4gICAgICAgICAgICAgICAgIC8qIFJlYWQgZmlmbyBtdXN0IG5vdCBiZSBl bXB0eSBiZWZvcmUgYWxsIGJ5dGVzIAo+PiAgICAgICAgICAgICAgICAgYXJlIHJlYWQgKi8gCj4+ IC0gICAgICAgICAgICAgICByZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoZHNpLT5iYXNlICsgCj4+ IERTSV9DTURfUEtUX1NUQVRVUywgLSAKPj4gdmFsLCAhKHZhbCAmIEdFTl9QTERfUl9FTVBUWSks IC0gCj4+IDEwMDAsIENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyArICAgICAgICAgICAgICAg cmV0ID0gCj4+IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChkc2ktPnJlZ3MsIERTSV9DTURfUEtU X1NUQVRVUywgKyAKPj4gdmFsLCAhKHZhbCAmIEdFTl9QTERfUl9FTVBUWSksICsgCj4+IDEwMDAs IENNRF9QS1RfU1RBVFVTX1RJTUVPVVRfVVMpOyAKPj4gICAgICAgICAgICAgICAgIGlmIChyZXQp IHsgCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZHNpLT5kZXYsICJSZWFkIHBh eWxvYWQgRklGTyBpcyAKPj4gICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlcbiIpOyByZXR1 cm4gcmV0OyAKPj4gICAgICAgICAgICAgICAgIH0gCj4+IAo+PiAtICAgICAgICAgICAgICAgdmFs ID0gZHNpX3JlYWQoZHNpLCBEU0lfR0VOX1BMRF9EQVRBKTsgKyAKPj4gcmVnbWFwX3JlYWQoZHNp LT5yZWdzLCBEU0lfR0VOX1BMRF9EQVRBLCAmdmFsKTsgCj4+ICAgICAgICAgICAgICAgICBmb3Ig KGogPSAwOyBqIDwgNCAmJiBqICsgaSA8IGxlbjsgaisrKSAKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgYnVmW2kgKyBqXSA9IHZhbCA+PiAoOCAqIGopOyAKPj4gICAgICAgICB9IAo+PiBAQCAt NTM2LDI5ICs1MzgsMjkgQEAgc3RhdGljIHZvaWQgCj4+IGR3X21pcGlfZHNpX3ZpZGVvX21vZGVf Y29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKSAKPj4gICAgICAgICB9IAo+PiAgI2VuZGlm IC8qIENPTkZJR19ERUJVR19GUyAqLyAKPj4gCj4+IC0gICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJ X1ZJRF9NT0RFX0NGRywgdmFsKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1ZJ RF9NT0RFX0NGRywgdmFsKTsgCj4+ICB9IAo+PiAKPj4gIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNp X3NldF9tb2RlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCAKPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtb2RlX2ZsYWdzKSAKPj4gIHsgCj4+IC0gICAg ICAgZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUkVTRVQpOyArIAo+PiByZWdtYXBfd3JpdGUo ZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBSRVNFVCk7IAo+PiAKPj4gICAgICAgICBpZiAobW9kZV9m bGFncyAmIE1JUElfRFNJX01PREVfVklERU8pIHsgCj4+IC0gICAgICAgICAgICAgICBkc2lfd3Jp dGUoZHNpLCBEU0lfTU9ERV9DRkcsIAo+PiBFTkFCTEVfVklERU9fTU9ERSk7ICsgICAgICAgICAg ICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCAKPj4gRFNJX01PREVfQ0ZHLCBFTkFCTEVfVklE RU9fTU9ERSk7IAo+PiAgICAgICAgICAgICAgICAgZHdfbWlwaV9kc2lfdmlkZW9fbW9kZV9jb25m aWcoZHNpKTsgCj4+IC0gICAgICAgICAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfTFBDTEtfQ1RS TCwgCj4+IFBIWV9UWFJFUVVFU1RDTEtIUyk7ICsgICAgICAgICAgICAgICByZWdtYXBfd3JpdGUo ZHNpLT5yZWdzLCAKPj4gRFNJX0xQQ0xLX0NUUkwsIFBIWV9UWFJFUVVFU1RDTEtIUyk7IAo+PiAg ICAgICAgIH0gZWxzZSB7IAo+PiAtICAgICAgICAgICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX01P REVfQ0ZHLCBFTkFCTEVfQ01EX01PREUpOyAKPj4gKyAgICAgICAgICAgICAgIHJlZ21hcF93cml0 ZShkc2ktPnJlZ3MsIERTSV9NT0RFX0NGRywgCj4+IEVOQUJMRV9DTURfTU9ERSk7IAo+PiAgICAg ICAgIH0gCj4+IAo+PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9QV1JfVVAsIFBPV0VSVVAp OyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUFdSX1VQLCBQT1dFUlVQKTsgCj4+ ICB9IAo+PiAKPj4gIHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2Rpc2FibGUoc3RydWN0IGR3X21p cGlfZHNpICpkc2kpIHsgCj4+IC0gICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUkVT RVQpOyAtIAo+PiBkc2lfd3JpdGUoZHNpLCBEU0lfUEhZX1JTVFosIFBIWV9SU1RaKTsgKyAKPj4g cmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BXUl9VUCwgUkVTRVQpOyArIAo+PiByZWdtYXBf d3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1JTVFosIFBIWV9SU1RaKTsgCj4+ICB9IAo+PiAKPj4g IHN0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2luaXQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+ PiBAQCAtNTczLDE0ICs1NzUsMTQgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfaW5pdChzdHJ1 Y3QgCj4+IGR3X21pcGlfZHNpICpkc2kpIAo+PiAgICAgICAgICAqLyAKPj4gICAgICAgICB1MzIg ZXNjX2Nsa19kaXZpc2lvbiA9IChkc2ktPmxhbmVfbWJwcyA+PiAzKSAvIDIwICsgMTsgCj4+IAo+ PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9QV1JfVVAsIFJFU0VUKTsgKyAKPj4gcmVnbWFw X3dyaXRlKGRzaS0+cmVncywgRFNJX1BXUl9VUCwgUkVTRVQpOyAKPj4gCj4+ICAgICAgICAgLyog Cj4+ICAgICAgICAgICogVE9ETyBkdyBkcnYgaW1wcm92ZW1lbnRzICogdGltZW91dCBjbG9jayBk aXZpc2lvbiAKPj4gICAgICAgICAgc2hvdWxkIGJlIGNvbXB1dGVkIHdpdGggdGhlICogaGlnaCBz cGVlZCB0cmFuc21pc3Npb24gCj4+ICAgICAgICAgIGNvdW50ZXIgdGltZW91dCBhbmQgYnl0ZSBs YW5lLi4uICAqLyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfQ0xLTUdSX0NGRywgVE9f Q0xLX0RJVklTSU9OKDEwKSB8ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9DTEtN R1JfQ0ZHLCBUT19DTEtfRElWSVNJT04oMTApIHwgCj4+ICAgICAgICAgICAgICAgICAgIFRYX0VT Q19DTEtfRElWSVNJT04oZXNjX2Nsa19kaXZpc2lvbikpOyAKPj4gIH0gCj4+IAo+PiBAQCAtNjA5 LDIyICs2MTEsMjIgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBpX2NvbmZpZyhzdHJ1Y3Qg Cj4+IGR3X21pcGlfZHNpICpkc2ksIAo+PiAgICAgICAgIGlmIChtb2RlLT5mbGFncyAmIERSTV9N T0RFX0ZMQUdfTkhTWU5DKSAKPj4gICAgICAgICAgICAgICAgIHZhbCB8PSBIU1lOQ19BQ1RJVkVf TE9XOyAKPj4gCj4+IC0gICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX0RQSV9WQ0lELCBEUElfVkNJ RChkc2ktPmNoYW5uZWwpKTsgLSAKPj4gZHNpX3dyaXRlKGRzaSwgRFNJX0RQSV9DT0xPUl9DT0RJ TkcsIGNvbG9yKTsgLSAKPj4gZHNpX3dyaXRlKGRzaSwgRFNJX0RQSV9DRkdfUE9MLCB2YWwpOyAr IAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfRFBJX1ZDSUQsIERQSV9WQ0lEKGRzaS0+ Y2hhbm5lbCkpOyAKPj4gKyAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfRFBJX0NP TE9SX0NPRElORywgY29sb3IpOyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfRFBJ X0NGR19QT0wsIHZhbCk7IAo+PiAgICAgICAgIC8qIAo+PiAgICAgICAgICAqIFRPRE8gZHcgZHJ2 IGltcHJvdmVtZW50cyAqIGxhcmdlc3QgcGFja2V0IHNpemVzIAo+PiAgICAgICAgICBkdXJpbmcg aGZwIG9yIGR1cmluZyB2c2EvdnBiL3ZmcCAqIHNob3VsZCBiZSBjb21wdXRlZCAKPj4gICAgICAg ICAgYWNjb3JkaW5nIHRvIGJ5dGUgbGFuZSwgbGFuZSBudW1iZXIgYW5kIG9ubHkgKiBpZiAKPj4g ICAgICAgICAgc2VuZGluZyBscCBjbWRzIGluIGhpZ2ggc3BlZWQgaXMgZW5hYmxlIAo+PiAgICAg ICAgICAoUEhZX1RYUkVRVUVTVENMS0hTKSAqLyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBE U0lfRFBJX0xQX0NNRF9USU0sIAo+PiBPVVRWQUNUX0xQQ01EX1RJTUUoNCkgKyAgICAgICByZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCAKPj4gRFNJX0RQSV9MUF9DTURfVElNLCBPVVRWQUNUX0xQQ01E X1RJTUUoNCkgCj4+ICAgICAgICAgICAgICAgICAgIHwgSU5WQUNUX0xQQ01EX1RJTUUoNCkpOyAK Pj4gIH0gCj4+IAo+PiAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfcGFja2V0X2hhbmRsZXJfY29u ZmlnKHN0cnVjdCAKPj4gIGR3X21pcGlfZHNpICpkc2kpIHsgCj4+IC0gICAgICAgZHNpX3dyaXRl KGRzaSwgRFNJX1BDS0hETF9DRkcsIENSQ19SWF9FTiB8IEVDQ19SWF9FTiB8IAo+PiBCVEFfRU4p OyArICAgICAgIHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9QQ0tIRExfQ0ZHLCAKPj4gQ1JD X1JYX0VOIHwgRUNDX1JYX0VOIHwgQlRBX0VOKTsgCj4+ICB9IAo+PiAKPj4gIHN0YXRpYyB2b2lk IGR3X21pcGlfZHNpX3ZpZGVvX3BhY2tldF9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpIAo+PiAg KmRzaSwgCj4+IEBAIC02MzgsNyArNjQwLDcgQEAgc3RhdGljIHZvaWQgCj4+IGR3X21pcGlfZHNp X3ZpZGVvX3BhY2tldF9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksIAo+PiAgICAgICAg ICAqIG5vbi1idXJzdCB2aWRlbyBtb2Rlcywgc2VlIAo+PiAgICAgICAgICBkd19taXBpX2RzaV92 aWRlb19tb2RlX2NvbmZpZygpLi4uICAqLyAKPj4gCj4+IC0gICAgICAgZHNpX3dyaXRlKGRzaSwg RFNJX1ZJRF9QS1RfU0laRSwgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1ZJRF9Q S1RfU0laRSwgCj4+ICAgICAgICAgICAgICAgICAgICAgICAgZHdfbWlwaV9pc19kdWFsX21vZGUo ZHNpKSA/IAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZJRF9QS1RfU0laRSht b2RlLT5oZGlzcGxheSAvIAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIpIDog Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklEX1BLVF9TSVpFKG1vZGUtPmhk aXNwbGF5KSk7IAo+PiBAQCAtNjUxLDE0ICs2NTMsMTUgQEAgc3RhdGljIHZvaWQgCj4+IGR3X21p cGlfZHNpX2NvbW1hbmRfbW9kZV9jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+PiAg ICAgICAgICAqIGNvbXB1dGUgaGlnaCBzcGVlZCB0cmFuc21pc3Npb24gY291bnRlciB0aW1lb3V0 IAo+PiAgICAgICAgICBhY2NvcmRpbmcgKiB0byB0aGUgdGltZW91dCBjbG9jayBkaXZpc2lvbiAK Pj4gICAgICAgICAgKFRPX0NMS19ESVZJU0lPTikgYW5kIGJ5dGUgbGFuZS4uLiAgKi8gCj4+IC0g ICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1RPX0NOVF9DRkcsIEhTVFhfVE9fQ05UKDEwMDApIHwg Cj4+IExQUlhfVE9fQ05UKDEwMDApKTsgKyAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCAK Pj4gRFNJX1RPX0NOVF9DRkcsICsgICAgICAgICAgICAgICAgICAgIEhTVFhfVE9fQ05UKDEwMDAp IHwgCj4+IExQUlhfVE9fQ05UKDEwMDApKTsgCj4+ICAgICAgICAgLyogCj4+ICAgICAgICAgICog VE9ETyBkdyBkcnYgaW1wcm92ZW1lbnRzICogdGhlIEJ1cy1UdXJuLUFyb3VuZCAKPj4gICAgICAg ICAgVGltZW91dCBDb3VudGVyIHNob3VsZCBiZSBjb21wdXRlZCAqIGFjY29yZGluZyB0byBieXRl IAo+PiAgICAgICAgICBsYW5lLi4uICAqLyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lf QlRBX1RPX0NOVCwgMHhkMDApOyAtIAo+PiBkc2lfd3JpdGUoZHNpLCBEU0lfTU9ERV9DRkcsIEVO QUJMRV9DTURfTU9ERSk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9CVEFfVE9f Q05ULCAweGQwMCk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9NT0RFX0NGRywg RU5BQkxFX0NNRF9NT0RFKTsgCj4+ICB9IAo+PiAKPj4gIC8qIEdldCBsYW5lIGJ5dGUgY2xvY2sg Y3ljbGVzLiAqLyAKPj4gQEAgLTY5MiwxMyArNjk1LDEzIEBAIHN0YXRpYyB2b2lkIAo+PiBkd19t aXBpX2RzaV9saW5lX3RpbWVyX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwgCj4+ICAg ICAgICAgICogY29tcHV0YXRpb25zIGJlbG93IG1heSBiZSBpbXByb3ZlZC4uLiAgKi8gCj4+ICAg ICAgICAgbGJjYyA9IGR3X21pcGlfZHNpX2dldF9oY29tcG9uZW50X2xiY2MoZHNpLCBtb2RlLCAK Pj4gICAgICAgICBodG90YWwpOyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNpLCBEU0lfVklEX0hM SU5FX1RJTUUsIGxiY2MpOyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfVklEX0hM SU5FX1RJTUUsIGxiY2MpOyAKPj4gCj4+ICAgICAgICAgbGJjYyA9IGR3X21pcGlfZHNpX2dldF9o Y29tcG9uZW50X2xiY2MoZHNpLCBtb2RlLCBoc2EpOyAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNp LCBEU0lfVklEX0hTQV9USU1FLCBsYmNjKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywg RFNJX1ZJRF9IU0FfVElNRSwgbGJjYyk7IAo+PiAKPj4gICAgICAgICBsYmNjID0gZHdfbWlwaV9k c2lfZ2V0X2hjb21wb25lbnRfbGJjYyhkc2ksIG1vZGUsIGhicCk7IAo+PiAtICAgICAgIGRzaV93 cml0ZShkc2ksIERTSV9WSURfSEJQX1RJTUUsIGxiY2MpOyArIAo+PiByZWdtYXBfd3JpdGUoZHNp LT5yZWdzLCBEU0lfVklEX0hCUF9USU1FLCBsYmNjKTsgCj4+ICB9IAo+PiAKPj4gIHN0YXRpYyB2 b2lkIGR3X21pcGlfZHNpX3ZlcnRpY2FsX3RpbWluZ19jb25maWcoc3RydWN0IAo+PiAgZHdfbWlw aV9kc2kgKmRzaSwgCj4+IEBAIC03MTEsMTAgKzcxNCwxMCBAQCBzdGF0aWMgdm9pZCAKPj4gZHdf bWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwg Cj4+ICAgICAgICAgdmZwID0gbW9kZS0+dnN5bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheTsgdmJw ID0gCj4+ICAgICAgICAgbW9kZS0+dnRvdGFsIC0gbW9kZS0+dnN5bmNfZW5kOyAKPj4gCj4+IC0g ICAgICAgZHNpX3dyaXRlKGRzaSwgRFNJX1ZJRF9WQUNUSVZFX0xJTkVTLCB2YWN0aXZlKTsgLSAK Pj4gZHNpX3dyaXRlKGRzaSwgRFNJX1ZJRF9WU0FfTElORVMsIHZzYSk7IC0gICAgICAgZHNpX3dy aXRlKGRzaSwgCj4+IERTSV9WSURfVkZQX0xJTkVTLCB2ZnApOyAtICAgICAgIGRzaV93cml0ZShk c2ksIAo+PiBEU0lfVklEX1ZCUF9MSU5FUywgdmJwKTsgKyAgICAgICByZWdtYXBfd3JpdGUoZHNp LT5yZWdzLCAKPj4gRFNJX1ZJRF9WQUNUSVZFX0xJTkVTLCB2YWN0aXZlKTsgKyAKPj4gcmVnbWFw X3dyaXRlKGRzaS0+cmVncywgRFNJX1ZJRF9WU0FfTElORVMsIHZzYSk7ICsgCj4+IHJlZ21hcF93 cml0ZShkc2ktPnJlZ3MsIERTSV9WSURfVkZQX0xJTkVTLCB2ZnApOyArIAo+PiByZWdtYXBfd3Jp dGUoZHNpLT5yZWdzLCBEU0lfVklEX1ZCUF9MSU5FUywgdmJwKTsgCj4+ICB9IAo+PiAKPj4gIHN0 YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaHlfdGltaW5nX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9k c2kgCj4+ICAqZHNpKSAKPj4gQEAgLTczNywyMyArNzQwLDI1IEBAIHN0YXRpYyB2b2lkIAo+PiBk d19taXBpX2RzaV9kcGh5X3RpbWluZ19jb25maWcoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIAo+ PiAgICAgICAgICAqIERTSV9DTURfTU9ERV9DRkcuTUFYX1JEX1BLVF9TSVpFX0xQIChzZWUgCj4+ ICAgICAgICAgIENNRF9NT0RFX0FMTF9MUCkgKi8gCj4+IAo+PiAtICAgICAgIGh3X3ZlcnNpb24g PSBkc2lfcmVhZChkc2ksIERTSV9WRVJTSU9OKSAmIFZFUlNJT047ICsgCj4+IHJlZ21hcF9yZWFk KGRzaS0+cmVncywgRFNJX1ZFUlNJT04sICZod192ZXJzaW9uKTsgKyAKPj4gaHdfdmVyc2lvbiAm PSBWRVJTSU9OOyAKPiAKPiBJZiBJIGFtIG5vdCB3cm9uZywgeW91IGFscmVhZHkgaW50cm9kdWNl ZCBhIGZ1bmN0aW9uIHRvIGdldCB0aGUgCj4gaGFyZHdhcmUgdmVyc2lvbiBhbmQgaXMgc3RvcmVk IGluIGRzaS0+aHdfdmVyc2lvbi4gTWF5YmUgeW91IAo+IGNvdWxkIHlvdSB1c2UgdGhhdCB2YXJp YWJsZSBhbmQgcmVtb3ZlIHRoYXQgY29kZS4gCj4gCj4+IAo+PiAgICAgICAgIGlmIChod192ZXJz aW9uID49IEhXVkVSXzEzMSkgeyAKPj4gLSAgICAgICAgICAgICAgIGRzaV93cml0ZShkc2ksIERT SV9QSFlfVE1SX0NGRywgLSAKPj4gUEhZX0hTMkxQX1RJTUVfVjEzMSh0aW1pbmcuZGF0YV9oczJs cCkgfCAtIAo+PiBQSFlfTFAySFNfVElNRV9WMTMxKHRpbWluZy5kYXRhX2xwMmhzKSk7IC0gCj4+ IGRzaV93cml0ZShkc2ksIERTSV9QSFlfVE1SX1JEX0NGRywgTUFYX1JEX1RJTUVfVjEzMSgxMDAw MCkpOyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1RNUl9DRkcsICsgCj4+ IFBIWV9IUzJMUF9USU1FX1YxMzEodGltaW5nLmRhdGFfaHMybHApIHwgKyAKPj4gUEhZX0xQMkhT X1RJTUVfVjEzMSh0aW1pbmcuZGF0YV9scDJocykpOyArIAo+PiByZWdtYXBfd3JpdGUoZHNpLT5y ZWdzLCBEU0lfUEhZX1RNUl9SRF9DRkcsICsgCj4+IE1BWF9SRF9USU1FX1YxMzEoMTAwMDApKTsg Cj4+ICAgICAgICAgfSBlbHNlIHsgCj4+IC0gICAgICAgICAgICAgICBkc2lfd3JpdGUoZHNpLCBE U0lfUEhZX1RNUl9DRkcsIC0gCj4+IFBIWV9IUzJMUF9USU1FKHRpbWluZy5kYXRhX2hzMmxwKSB8 IC0gCj4+IFBIWV9MUDJIU19USU1FKHRpbWluZy5kYXRhX2xwMmhzKSB8IC0gCj4+IE1BWF9SRF9U SU1FKDEwMDAwKSk7ICsgICAgICAgICAgICAgICByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCAKPj4g RFNJX1BIWV9UTVJfQ0ZHLCArIAo+PiBQSFlfSFMyTFBfVElNRSh0aW1pbmcuZGF0YV9oczJscCkg fCArIAo+PiBQSFlfTFAySFNfVElNRSh0aW1pbmcuZGF0YV9scDJocykgfCArIAo+PiBNQVhfUkRf VElNRSgxMDAwMCkpOyAKPj4gICAgICAgICB9IAo+PiAKPj4gLSAgICAgICBkc2lfd3JpdGUoZHNp LCBEU0lfUEhZX1RNUl9MUENMS19DRkcsIC0gCj4+IFBIWV9DTEtIUzJMUF9USU1FKHRpbWluZy5j bGtfaHMybHApIHwgLSAKPj4gUEhZX0NMS0xQMkhTX1RJTUUodGltaW5nLmNsa19scDJocykpOyAr IAo+PiByZWdtYXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX1RNUl9MUENMS19DRkcsICsgCj4+ IFBIWV9DTEtIUzJMUF9USU1FKHRpbWluZy5jbGtfaHMybHApIHwgKyAKPj4gUEhZX0NMS0xQMkhT X1RJTUUodGltaW5nLmNsa19scDJocykpOyAKPj4gIH0gCj4+IAo+PiAgc3RhdGljIHZvaWQgZHdf bWlwaV9kc2lfZHBoeV9pbnRlcmZhY2VfY29uZmlnKHN0cnVjdCAKPj4gIGR3X21pcGlfZHNpICpk c2kpIAo+PiBAQCAtNzYzLDQ2ICs3NjgsNDkgQEAgc3RhdGljIHZvaWQgCj4+IGR3X21pcGlfZHNp X2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkgCj4+ICAgICAg ICAgICogc3RvcCB3YWl0IHRpbWUgc2hvdWxkIGJlIHRoZSBtYXhpbXVtIGJldHdlZW4gaG9zdCAK Pj4gICAgICAgICAgZHNpICogYW5kIHBhbmVsIHN0b3Agd2FpdCB0aW1lcyAqLyAKPj4gLSAgICAg ICBkc2lfd3JpdGUoZHNpLCBEU0lfUEhZX0lGX0NGRywgUEhZX1NUT1BfV0FJVF9USU1FKDB4MjAp IAo+PiB8IC0gICAgICAgICAgICAgICAgIE5fTEFORVMoZHNpLT5sYW5lcykpOyArIAo+PiByZWdt YXBfd3JpdGUoZHNpLT5yZWdzLCBEU0lfUEhZX0lGX0NGRywgKyAKPj4gUEhZX1NUT1BfV0FJVF9U SU1FKDB4MjApIHwgTl9MQU5FUyhkc2ktPmxhbmVzKSk7IAo+PiAgfSAKPj4gCj4+ICBzdGF0aWMg dm9pZCBkd19taXBpX2RzaV9kcGh5X2luaXQoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIHsgCj4+ ICAgICAgICAgLyogQ2xlYXIgUEhZIHN0YXRlICovIAo+PiAtICAgICAgIGRzaV93cml0ZShkc2ks IERTSV9QSFlfUlNUWiwgUEhZX0RJU0ZPUkNFUExMIHwgCj4+IFBIWV9ESVNBQkxFQ0xLIC0gICAg ICAgICAgICAgICAgIHwgUEhZX1JTVFogfCBQSFlfU0hVVERPV05aKTsgLSAKPj4gZHNpX3dyaXRl KGRzaSwgRFNJX1BIWV9UU1RfQ1RSTDAsIFBIWV9VTlRFU1RDTFIpOyAtIAo+PiBkc2lfd3JpdGUo ZHNpLCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1RFU1RDTFIpOyAtIAo+PiBkc2lfd3JpdGUoZHNp LCBEU0lfUEhZX1RTVF9DVFJMMCwgUEhZX1VOVEVTVENMUik7ICsgCj4+IHJlZ21hcF93cml0ZShk c2ktPnJlZ3MsIERTSV9QSFlfUlNUWiwgUEhZX0RJU0ZPUkNFUExMIHwgCj4+IFBIWV9ESVNBQkxF Q0xLICsgICAgICAgICAgICAgICAgICAgIHwgUEhZX1JTVFogfCAKPj4gUEhZX1NIVVRET1dOWik7 ICsgICAgICAgcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgCj4+IERTSV9QSFlfVFNUX0NUUkwwLCBQ SFlfVU5URVNUQ0xSKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BIWV9UU1Rf Q1RSTDAsIFBIWV9URVNUQ0xSKTsgKyAKPj4gcmVnbWFwX3dyaXRlKGRzaS0+cmVncywgRFNJX1BI WV9UU1RfQ1RSTDAsIFBIWV9VTlRFU1RDTFIpOyAKPj4gIH0gCj4+IAo+PiAgc3RhdGljIHZvaWQg ZHdfbWlwaV9kc2lfZHBoeV9lbmFibGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIHsgCj4+IC0g ICAgICAgdTMyIHZhbDsgKyAgICAgICB1MzIgdmFsID0gMDsgCj4gCj4gZGl0dG8gCj4gCj4+ICAg ICAgICAgaW50IHJldDsgCj4+IAo+PiAtICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9QSFlfUlNU WiwgUEhZX0VORk9SQ0VQTEwgfCAKPj4gUEhZX0VOQUJMRUNMSyB8IC0gICAgICAgICAgICAgICAg IFBIWV9VTlJTVFogfCAKPj4gUEhZX1VOU0hVVERPV05aKTsgKyAgICAgICByZWdtYXBfd3JpdGUo ZHNpLT5yZWdzLCBEU0lfUEhZX1JTVFosIAo+PiBQSFlfRU5GT1JDRVBMTCB8IFBIWV9FTkFCTEVD TEsgfCArIAo+PiBQSFlfVU5SU1RaIHwgUEhZX1VOU0hVVERPV05aKTsgCj4+IAo+PiAtICAgICAg IHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2ktPmJhc2UgKyBEU0lfUEhZX1NUQVRVUywgCj4+ IHZhbCwgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsICYgUEhZX0xPQ0ssIDEw MDAsIAo+PiBQSFlfU1RBVFVTX1RJTUVPVVRfVVMpOyArICAgICAgIHJldCA9IAo+PiByZWdtYXBf cmVhZF9wb2xsX3RpbWVvdXQoZHNpLT5yZWdzLCBEU0lfUEhZX1NUQVRVUywgKyAKPj4gdmFsLCB2 YWwgJiBQSFlfTE9DSywgKyAKPj4gMTAwMCwgUEhZX1NUQVRVU19USU1FT1VUX1VTKTsgCj4+ICAg ICAgICAgaWYgKHJldCkgCj4+ICAgICAgICAgICAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJmYWls ZWQgdG8gd2FpdCBwaHkgbG9jayAKPj4gICAgICAgICAgICAgICAgIHN0YXRlXG4iKTsgCj4+IAo+ PiAtICAgICAgIHJldCA9IHJlYWRsX3BvbGxfdGltZW91dChkc2ktPmJhc2UgKyBEU0lfUEhZX1NU QVRVUywgLSAKPj4gdmFsLCB2YWwgJiBQSFlfU1RPUF9TVEFURV9DTEtfTEFORSwgMTAwMCwgLSAK Pj4gUEhZX1NUQVRVU19USU1FT1VUX1VTKTsgKyAgICAgICByZXQgPSAKPj4gcmVnbWFwX3JlYWRf cG9sbF90aW1lb3V0KGRzaS0+cmVncywgRFNJX1BIWV9TVEFUVVMsICsgCj4+IHZhbCwgdmFsICYg UEhZX1NUT1BfU1RBVEVfQ0xLX0xBTkUsIDEwMDAsICsgCj4+IFBIWV9TVEFUVVNfVElNRU9VVF9V Uyk7IAo+PiAgICAgICAgIGlmIChyZXQpIAo+PiAgICAgICAgICAgICAgICAgRFJNX0RFQlVHX0RS SVZFUigiZmFpbGVkIHRvIHdhaXQgcGh5IGNsayBsYW5lIAo+PiAgICAgICAgICAgICAgICAgc3Rv cCBzdGF0ZVxuIik7IAo+PiAgfSAKPj4gCj4+ICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9jbGVh cl9lcnIoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpIHsgCj4+IC0gICAgICAgZHNpX3JlYWQoZHNp LCBEU0lfSU5UX1NUMCk7IC0gICAgICAgZHNpX3JlYWQoZHNpLCAKPj4gRFNJX0lOVF9TVDEpOyAt ICAgICAgIGRzaV93cml0ZShkc2ksIERTSV9JTlRfTVNLMCwgMCk7IC0gCj4+IGRzaV93cml0ZShk c2ksIERTSV9JTlRfTVNLMSwgMCk7ICsgICAgICAgdTMyIHZhbDsgKyArIAo+PiByZWdtYXBfcmVh ZChkc2ktPnJlZ3MsIERTSV9JTlRfU1QwLCAmdmFsKTsgKyAKPj4gcmVnbWFwX3JlYWQoZHNpLT5y ZWdzLCBEU0lfSU5UX1NUMSwgJnZhbCk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERT SV9JTlRfTVNLMCwgMCk7ICsgCj4+IHJlZ21hcF93cml0ZShkc2ktPnJlZ3MsIERTSV9JTlRfTVNL MSwgMCk7IAo+PiAgfSAKPj4gCj4+ICBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9icmlkZ2VfcG9z dF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlIAo+PiAgKmJyaWRnZSkgCj4+IEBAIC05ODksNiAr OTk3LDE0IEBAIHN0YXRpYyB2b2lkIAo+PiBkd19taXBpX2RzaV9kZWJ1Z2ZzX3JlbW92ZShzdHJ1 Y3QgZHdfbWlwaV9kc2kgKmRzaSkgeyB9IAo+PiAKPj4gICNlbmRpZiAvKiBDT05GSUdfREVCVUdf RlMgKi8gCj4+IAo+PiArc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZ2V0X2h3X3ZlcnNpb24oc3Ry dWN0IGR3X21pcGlfZHNpIAo+PiAqZHNpKSAreyArICAgICAgIHJlZ21hcF9yZWFkKGRzaS0+cmVn cywgRFNJX1ZFUlNJT04sIAo+PiAmZHNpLT5od192ZXJzaW9uKTsgKyAgICAgICBkc2ktPmh3X3Zl cnNpb24gJj0gVkVSU0lPTjsgKyAKPj4gaWYgKCFkc2ktPmh3X3ZlcnNpb24pICsgICAgICAgICAg ICAgICBkZXZfZXJyKGRzaS0+ZGV2LCAiRmFpbGVkIAo+PiB0byByZWFkIERTSSBodyB2ZXJzaW9u IHJlZ2lzdGVyXG4iKTsgCj4gCj4gSXMgdGhpcyBhbiBlcnJvciB0aGF0IHNob3VsZCBiZSBpZ25v cmVkPyBJZiB5b3UgY2FuJ3QgZ2V0IHRoZSBIVyAKPiB2ZXJzaW9uLCBwcm9iYWJseSwgdGhlcmUg aXMgc29tZXRoaW5nIHdyb25nIHdpdGggeW91ciBoYXJkd2FyZSAKPiBzbywgZG9uJ3QgeW91IG5l ZWQgdG8gcmV0dXJuIGFuIGVycm9yPyAKPiAKCkFmdGVyIHRoaW5raW5nIGEgYml0IG1vcmUgYWJv dXQgaXQsIHRoYXQgZXJyb3Igc2hvdWxkIGJlIGEgCndhcm5pbmcuCgpJIGFkZGVkIGl0IGJlY2F1 c2UgaW4gc29tZSBjYXNlcyAoZm9yIGVnLiBpZiB0aGUgcGVyaXBoZXJhbCBjbG9jayAKaXMgZGlz YWJsZWQpIHRoZSByZWFkcyBjYW4gcmV0dXJuIDAgd2hpY2ggaXMgb2J2aW91c2x5IGFuIGludmFs aWQgCnZlcnNpb24gYW5kIHRoZSBicmlkZ2Ugd2lsbCBlcnJvciBpbiB0aGUgbmV4dCBzdGVwIHdo ZW4gbm90IApmaW5kaW5nIGEgbGF5b3V0LgoKU28gSSdsbCBtYWtlIHRoaXMgYSB3YXJuaW5nIGlu IHY3IGFuZCBleHBsaWNpdGVseSBtZW50aW9uIHRoYXQgCnJlYWRzIHZlcnNpb24gPT0gMCBjYW4g YmUgY2F1c2VkIGJ5IGEgZGlzYWJsZWQgcGNsay4KCj4+ICt9Cj4+ICsKPj4gIHN0YXRpYyBzdHJ1 Y3QgZHdfbWlwaV9kc2kgKgo+PiAgX19kd19taXBpX2RzaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LAo+PiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkd19taXBp X2RzaV9wbGF0X2RhdGEgKnBsYXRfZGF0YSkKPj4gQEAgLTEwMjAsNiArMTAzNiwxNCBAQCBfX2R3 X21pcGlfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICAgICAgICAg ICAgICAgICBkc2ktPmJhc2UgPSBwbGF0X2RhdGEtPmJhc2U7Cj4+ICAgICAgICAgfQo+Pgo+PiAr ICAgICAgIGRzaS0+cmVncyA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhkZXYsIGRzaS0+YmFzZSwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3X21pcGlfZHNp X3JlZ21hcF9jZmcpOwo+PiArICAgICAgIGlmIChJU19FUlIoZHNpLT5yZWdzKSkgewo+PiArICAg ICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihkc2ktPnJlZ3MpOwo+PiArICAgICAgICAgICAgICAg RFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIERXIE1JUEkgRFNJIHJlZ21hcDogJWRcbiIsIHJl dCk7Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUihyZXQpOwo+PiArICAgICAgIH0K Pj4gKwo+PiAgICAgICAgIGRzaS0+cGNsayA9IGRldm1fY2xrX2dldChkZXYsICJwY2xrIik7Cj4+ ICAgICAgICAgaWYgKElTX0VSUihkc2ktPnBjbGspKSB7Cj4+ICAgICAgICAgICAgICAgICByZXQg PSBQVFJfRVJSKGRzaS0+cGNsayk7Cj4+IEBAIC0xMDU1LDYgKzEwNzksOCBAQCBfX2R3X21pcGlf ZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+ICAgICAgICAgICAgICAg ICBjbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5wY2xrKTsKPj4gICAgICAgICB9Cj4+Cj4+ICsg ICAgICAgZHdfbWlwaV9kc2lfZ2V0X2h3X3ZlcnNpb24oZHNpKTsKPj4gKwo+PiAgICAgICAgIGR3 X21pcGlfZHNpX2RlYnVnZnNfaW5pdChkc2kpOwo+PiAgICAgICAgIHBtX3J1bnRpbWVfZW5hYmxl KGRldik7Cj4+Cj4+IC0tCj4+IDIuMjYuMAo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==