From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: Re: [PATCH 4/9] drm/i915: Add debugfs functions for Displayport compliance testing Date: Wed, 11 Mar 2015 10:19:28 -0700 Message-ID: <55007920.1010907@gmail.com> References: <1424314837-32434-1-git-send-email-tprevite@gmail.com> <1424314837-32434-5-git-send-email-tprevite@gmail.com> <871tkyoxzg.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f49.google.com (mail-pa0-f49.google.com [209.85.220.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 65F846E8AB for ; Wed, 11 Mar 2015 10:19:31 -0700 (PDT) Received: by pabrd3 with SMTP id rd3so12969229pab.6 for ; Wed, 11 Mar 2015 10:19:31 -0700 (PDT) In-Reply-To: <871tkyoxzg.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAzLzkvMjAxNSAxMDo1NyBBTSwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gT24gVGh1LCAxOSBG ZWIgMjAxNSwgVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+IHdyb3RlOgo+PiBUaGlz IHBhdGNoIGlzIHRoZSBhbWFsZ2FtYXRpb24gb2YgNyBwYXRjaGVzIGZyb20gdGhlIFYyIHNlcmll cy4gVGhlc2UKPj4gcGF0Y2hlcyBhbGwgaW52b2x2ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhl IGRlYnVnZnMgbWVjaGFuaXNtIGZvcgo+PiBoYW5kbGluZyBEaXNwbGF5cG9ydCBjb21wbGlhbmNl IHRlc3RpbmcuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBjb21taXQKPj4gbWVzc2FnZXMgZnJvbSB0 aG9zZSA3IHBhdGNoZXMgKGluY2x1ZGVkIGhlcmUgdG8gdHJ5IGFuZCBwcmVzZXJ2ZSB0aGUKPj4g cGF0Y2ggc2V0IGhpc3RvcnkpOgo+IEkgdGhpbmsgdGhlcmUgc2hvdWxkIGJlIHBlciBjb25uZWN0 b3IgZGVidWdmcyBmaWxlcyBmb3IgdGhpcywgaW5zdGVhZCBvZgo+IGRvaW5nIGl0IGZvciBhbGwg RFAgY29ubmVjdG9ycy4KPgo+IFNlZSBteSBkcGNkIGRlYnVnZnMgcGF0Y2ggWzFdIGZvciBhbiBl eGFtcGxlLiBJIHdpc2ggdGhhdCBnb3QgcmV2aWV3ZWQKPiBhbmQgbWVyZ2VkLi4uCj4KPiBCUiwK PiBKYW5pLgoKV2hlbiBpdCBjb21lcyB0byBjb21wbGlhbmNlIHRlc3RpbmcsIHlvdSBnZW5lcmFs bHkgZG9uJ3Qgd2FudCBhbnl0aGluZyAKZWxzZSBwbHVnZ2VkIGluIGFueXdheXMuIFRoZSB1c2Vy IGFwcCBpcyBnb2luZyB0byBraWxsIGFsbCB0aGUgb3RoZXIgCmRpc3BsYXlzLCBzaW5jZSBpdCBu ZWVkcyB0byBiZSBEUk0gbWFzdGVyLCBzbyBpdCdzIHJlYWxseSBraW5kIG9mIApwb2ludGxlc3Mu IEl0IGFsc28gbWFrZXMgdGhlIGltcGxlbWVudGF0aW9uIGxlc3MgY29tcGxleC4gRHVyaW5nIApk ZXZlbG9wbWVudCBhbmQgdGVzdGluZywgSSd2ZSBydW4gdGhlIHVzZXIgYXBwIGxvY2FsbHkgKGxv Z2dlZCBpbiBhcyAKcm9vdCBkaXJlY3RseSBvbiB0aGUgRFVUKSBhbmQgb3ZlciB0aGUgbmV0d29y ayAoc3NoIGFzIHJvb3QgaW50byB0aGUgCm1hY2hpbmUgYW5kIGxhdW5jaGVkIHRoZSB1c2VyIGFw cCBmcm9tIHRoZSBjb25zb2xlKSBhbmQgdGhlIG5ldHdvcmsgCm1ldGhvZCBzZWVtcyBlYXNpZXIg YW5kIG1vcmUgZWZmaWNpZW50IHRvIG1lLiBUaGlzIGlzIGVzcGVjaWFsbHkgCmltcG9ydGFudCBh cyBJIGNhbiBzZWUgdGhlIGRlYnVnIG91dHB1dCBmcm9tIHRoZSB1c2VyIGFwcCByaWdodCBvbiB0 aGUgCmNvbnNvbGUgaW5zdGVhZCBvZiBzdGFyaW5nIGF0IGEgYmxhbmsgc2NyZWVuIHdhaXRpbmcg Zm9yIHRoZSB0ZXN0IHRvIApjb21wbGV0ZS4KClRoYXQgc2FpZCwgSSB0aGluayB0aGlzIGlzIGEg cmVhc29uYWJsZSByZXF1ZXN0IHRoYXQgY2FuIGJlIGFkZHJlc3NlZCBhdCAKYSBmdXR1cmUgdGlt ZSwgb25jZSB0aGUgYmFzZSBjb2RlIGlzIGluIHBsYWNlLiAgVGhlIGFyY2hpdGVjdHVyYWwgYW5k IApkZXNpZ24gY2hhbmdlcyBuZWNlc3NhcnkgZm9yIHRoaXMgd291bGQgZHJhZyBvdXQgdGhlIGlu dGVncmF0aW9uIG9mIApiYXNpYyBjb21wbGlhbmNlIHRlc3RpbmcgZXZlbiBsb25nZXIgYW5kIHRo YXQncyBub3Qgc29tZXRoaW5nIEkgYmVsaWV2ZSAKd2UgY2FuIGFmZm9yZCB0byBkbyByaWdodCBu b3cuCgpJJ2xsIGdvIGxvb2sgZm9yIHlvdXIgRFBDRCBwYXRjaCBhbmQgZ2V0IGEgcmV2aWV3IG9u IHRoZXJlLgoKLVQKCj4KPiBbMV0gaHR0cDovL21pZC5nbWFuZS5vcmcvMTQyNDg2NzY0NS0yMTYw OC0xLWdpdC1zZW5kLWVtYWlsLWphbmkubmlrdWxhQGludGVsLmNvbQo+Cj4KPgo+Cj4KPj4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+PiBbUEFUQ0ggMDQvMTddIGRybS9pOTE1OiBBZGQgZGVidWdm cyBpbmZvcm1hdGlvbiBmb3IgRGlzcGxheXBvcnQgY29tcGxpYW5jZQo+PiAgICAgICAgICAgICAg ICB0ZXN0aW5nCj4+Cj4+IE9yaWdpbmFsbHksIHRoaXMgcGF0Y2ggd2FzIHBhcnQgb2YgIltQQVRD SCAwNS8xMF0gZHJtL2k5MTU6IEFkZCBkZWJ1Z2ZzCj4+IGludGVyZmFjZSBmb3IgRGlzcGxheXBv cnQgZGVidWcgYW5kIGNvbXBsaWFuY2UgdGVzdGluZyIuICBJdCBjb250YWluZWQKPj4gZGVmaW5p dGlvbnMvZGVjbGFyYXRpb25zIGZvciBzb21lIG9mIHRoZSBjb25zdGFudHMgYW5kIGRhdGEgc3Ry dWN0dXJlcwo+PiBhZGRlZCB0byBzdXBwb3J0IGRlYnVnZnMgb3V0cHV0IGZvciBEaXNwbGF5cG9y dCBjb21wbGlhbmNlCj4+IHRlc3RpbmcuCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gW1BB VENIIDA1LzE3XSBkcm0vaTkxNTogQWRkIGZpbGUgb3BzIGZvciBEaXNwbGF5cG9ydCBjb25maWd1 cmF0aW9uIGluIGRlYnVnZnMKPj4KPj4gVGhpcyBwYXRjaCB3YXMgYWxzbyBwYXJ0IG9mICJbUEFU Q0ggMDUvMTBdIGRybS9pOTE1OiBBZGQgZGVidWdmcyBpbnRlcmZhY2UKPj4gZm9yIERpc3BsYXlw b3J0IGRlYnVnIGFuZCBjb21wbGlhbmNlIHRlc3RpbmciLiBUaGlzIG9uZSBhZGRlZCBmaWxlIG9w ZXJhdGlvbnMKPj4gc3RydWN0dXJlcyBmb3IgRGlzcGxheXBvcnQgY29uZmlndXJhdGlvbiBhbmQg dGhlIGRlY2xhcmF0aW9ucyBmb3Igb3BlbigpIGFuZAo+PiB3cml0ZSgpIGluIHRoZSBmaWxlIG9w cyBzdHJ1Y3R1cmUuCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gW1BBVENIIDA2LzE3XSBk cm0vaTkxNTogQWRkIHN1cHBvcnQgZnVuY3Rpb25zIGluIGRlYnVnZnMgZm9yIGhhbmRsaW5nCj4+ ICAgICAgICAgICAgICAgIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UgY29uZmlndXJhdGlvbgo+Pgo+ PiBUaGlzIHBhdGNoIHdhcyBwcmV2aW91c2x5IHBhcnQgb2YgIltQQVRDSCAwNS8xMF0gZHJtL2k5 MTU6IEFkZCBkZWJ1Z2ZzIGludGVyZmFjZQo+PiBmb3IgRGlzcGxheXBvcnQgZGVidWcgIGFuZCBj b21wbGlhbmNlIHRlc3RpbmciLiBJdCBhZGRlZCB0d28gc3VwcG9ydCBmdW5jdGlvbnMKPj4gZm9y IGhhbmRsaW5nIERpc3BsYXlwb3J0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0aGF0IGFyZSB1 c2VkIGZvciBjb21wbGlhbmNlCj4+IHRlc3RpbmcuCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4gW1BBVENIIDA3LzE3XSBkcm0vaTkxNTogQWRkIGFuZCBpbXBsZW1lbnQgdGhlIGRlYnVnZnMg J3Nob3cnIGZ1bmN0aW9ucyBmb3IKPj4gICAgICAgICAgICAgICAgRGlzcGxheXBvcnQgY29tcGxp YW5jZQo+Pgo+PiBUaGlzIHBhdGNoIHdhcyBwcmV2aW91c2x5IHBhcnQgb2YgIltQQVRDSCAwNS8x MF0gZHJtL2k5MTU6IEFkZCBkZWJ1Z2ZzCj4+IGludGVyZmFjZSBmb3IgRGlzcGxheXBvcnQgZGVi dWcgYW5kIGNvbXBsaWFuY2UgdGVzdGluZyIuIFRoaXMgcGF0Y2ggaW1wbGVtZW50ZWQKPj4gdGhl IHNob3coKSBmdW5jdGlvbi4KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiBbUEFUQ0ggMDgv MTddIGRybS9pOTE1OiBBZGQgRGlzcGxheXBvcnQgbGluayBjb25maWd1cmF0aW9uIHN0cnVjdHVy ZQo+Pgo+PiBUaGlzIHBhdGNoIHdhcyBwcmV2aW91c2x5IHBhcnQgb2YgIltQQVRDSCAwNy8xMF0g ZHJtL2k5MTU6IEFkZCBzdHJ1Y3R1cmVzIGZvcgo+PiBEaXNwbGF5cG9ydCBjb21wbGlhbmNlIHRl c3RpbmcgcGFyYW1ldGVycyIuIEl0IGFkZGVkIGEgc3RydWN0IHRvIG1haW50YWluIGxpbmsKPj4g Y29uZmlndXJhdGlvbiBkYXRhLiBUaGVzZSB3ZXJlIG1lYW50IHB1cmVseSBmb3IgRGlzcGxheXBv cnQgY29tcGxpYW5jZSB1c2UuCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gW1BBVENIIDA5 LzE3XSBkcm0vaTkxNTogQWRkIGNvbmZpZyBwYXJzaW5nIHV0aWxpdGllcyBpbiBkZWJ1Z2ZzIGZv ciBEaXNwbGF5cG9ydAo+PiAgICAgICAgICAgICAgICBjb21wbGlhbmNlCj4+Cj4+IFRoaXMgcGF0 Y2ggd2FzIHByZXZpb3VzbHkgcGFydCBvZiAiW1BBVENIIDA1LzEwXSBkcm0vaTkxNTogQWRkIGRl YnVnZnMKPj4gaW50ZXJmYWNlIGZvciBEaXNwbGF5cG9ydCBkZWJ1ZyBhbmQgY29tcGxpYW5jZSB0 ZXN0aW5nIi4gVGhpcyBwYXRjaCBhZGRzIHR3bwo+PiBmdW5jdGlvbnMgdG8gaGFuZGxlIHBhcnNp bmcgb2YgRGlzcGxheXBvcnQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhcyBpdAo+PiBmb3Jt YXR0ZWQgaW4gdGhlIGRlYnVnZnMgZmlsZS4gSXQgaXMgdXNlZCB0byBwcm9jZXNzIGluY29taW5n IGNvbmZpZ3VyYXRpb24KPj4gY2hhbmdlcyBmcm9tIHRoZSB1c2Vyc3BhY2UgY29tcGxpYW5jZSBh cHBsaWNhdGlvbiBkdXJpbmcgdGVzdGluZy4KPj4KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiBbUEFUQ0ggMTAvMTddIGRybS9pOTE1OiBJbXBsZW1lbnQgdGhlICdvcGVuJyBhbmQgJ3dyaXRl JyBkZWJ1Z2ZzIGZ1bmN0aW9ucyBmb3IKPj4gICAgICAgICAgICAgICAgRGlzcGxheXBvcnQgY29t cGxpYW5jZQo+Pgo+PiBUaGlzIHBhdGNoIGlzIGEgY29tYmluYXRpb24gb2Ygc2VjdGlvbnMgb3V0 IG9mIHRoZSBmb2xsb3dpbmcgdHdvIHByZXZpb3VzCj4+IHBhdGNoZXM6Cj4+IFtQQVRDSCAwNS8x MF0gZHJtL2k5MTU6IEFkZCBkZWJ1Z2ZzIGludGVyZmFjZSBmb3IgRGlzcGxheXBvcnQgZGVidWcg YW5kCj4+IGNvbXBsaWFuY2UgdGVzdGluZwo+PiBbUEFUQ0ggMDcvMTBdIGRybS9pOTE1OiBBZGQg c3RydWN0dXJlcyBmb3IgRGlzcGxheXBvcnQgY29tcGxpYW5jZSB0ZXN0aW5nCj4+IHBhcmFtZXRl cnMKPj4KPj4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBkZWJ1Z2ZzIGZ1bmN0aW9ucyBmb3Ig J29wZW4nIGFuZCAnd3JpdGUnIGFzIHRoZXkKPj4gYXJlIHNwZWNpZmllZCBpbiB0aGUgZmlsZSBv cHMgc3RydWN0dXJlLiBUaGUgJ29wZW4nIGZ1bmN0aW9uIG91dHB1dHMKPj4gRGlzcGxheXBvcnQg ZGF0YSB0byB0aGUgYXBwcm9wcmlhdGUgZGVidWdmcyBmaWxlIHdoaWxlIHRoZSAnd3JpdGUnIGZ1 bmN0aW9uCj4+IGhhbmRsZXMgcGFyc2luZyBvZiB1c2VyIGRhdGEgd3JpdHRlbiB0byB0aGF0IHNh bWUgZmlsZS4KPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pgo+PiBUaGUgbmF0dXJlIGFuZCBz Y29wZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBwYXRjaCBtYWtlIGJyZWFraW5nIGl0IGludG8K Pj4gc21hbGxlciBjaHVua3MgZGlmZmljdWx0LiBXaXRoIGV2ZXJ0aGluZyBjb250YWluZWQgaW4g YSBzaW5nbGUgcGF0Y2gsIHRoZQo+PiBjb2RlIGlzIGVhc2llciB0byByZXZpZXcgYW5kIHVuZGVy c3RhbmQuCj4+Cj4+IFRoYXQgc2FpZCwgdGhpcyBtb25zdGVyIG9mIGEgcGF0Y2ggZG9lcyBxdWl0 ZSBhIGZldyB0aGluZ3MuIEZpcnN0LCBpdCBhZGRzCj4+IHNvbWUgbmVjZXNzYXJ5IGRhdGEgc3Ry dWN0dXJlcyBmb3IgcGVyZm9ybWluZyBjb21wbGlhbmNlIHRlc3Rpbmcgb3BlcmF0aW9ucwo+PiBv biB0aGUga2VybmVsIHNpZGUuIFNwZWNpZmljYWxseSwgaXQgYWRkcyBsaW5rIGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVycyBhbmQKPj4gc3RyaW5nIHRva2VucyBmb3IgdGhlIGRlYnVnZnMgZmlsZXMu IFRoZXJlIGFyZSBtdWx0aXBsZSB1dGlsaXR5IGZ1bmN0aW9ucwo+PiBhZGRlZCBoZXJlIGFzIHdl bGwgaW4gc3VwcG9ydCBvZiB0aGUgZGVidWdmcyBzeXN0ZW0gZm9yIGhhbmRsaW5nIGNvbXBsaWFu Y2UKPj4gdGVzdGluZy4gRnVuY3Rpb25zIGZvciBwcmludGluZyBzdHJpbmdzIHRvIHRoZSBmaWxl cyB3aXRoIHRoZSBjb3JyZWN0IGZvcm1hdCwKPj4gcGFyc2luZyB0b2tlbnMsIHRva2VuaXppbmcg c3RyaW5ncyBhbmQgZG9pbmcgdGhlIGdydW50IHdvcmsgZm9yIHdyaXRpbmcgdGhlCj4+IGRhdGEg dG8gdGhlIGRlYnVnZnMgZmlsZXMuCj4+Cj4+IFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSBiYXNp YyBkZWJ1Z2ZzIHN0cnVjdHVyZXMgdG8gYnVpbGQgdGhlIGZpbGUgZm9yIHRoZQo+PiBsaW5rIGNv bmZpZ3VyYXRpb24gb3V0cHV0IGFzIHdlbGwgYXMgdGhlIGZpbGUgb3BlcmF0aW9ucyBzdHJ1Y3R1 cmVzIHRvIGhhbmRsZQo+PiB0aGUgb3BlbiBhbmQgc2hvdyBmdW5jdGlvbnMuCj4+Cj4+IFYyOgo+ PiAtIE4vQQo+PiBWMzoKPj4gLSBNZXJnZWQgcGF0Y2hlcyA0LTEwIGludG8gYSBzaW5nbGUgcGF0 Y2ggcGVyIHJldmlldyBmZWVkYmFjawo+PiAtIEFkZGVkIHByZXZpb3VzIGNvbW1pdCBtZXNzYWdl cyBmcm9tIHRoZSBvdGhlciBjb21taXRzIGludGVncmF0ZWQKPj4gICAgaGVyZSB0byBwcmVzZXJ2 ZSB0aGUgaW50ZWdyaXR5IG9mIHRoZSBwYXRjaCBzZXF1ZW5jZQo+PiAtIEFkanVzdGVkIHRoZSBj b25maWdfY3RsX3dyaXRlIGZ1bmN0aW9uIHRvIG9ubHkgY2hlY2sgdGhlIGRybV9jb25uZWN0b3IK Pj4gICAgc3RydWN0IGZvciBhKSB0eXBlID09IERpc3BsYXlwb3J0IGFuZCBiKSBzdGF0dXMgPT0g YWN0aXZlLiBUaGlzIGlzCj4+ICAgIHRvIGVsaW1pbmF0ZSBwYXRjaGVzIDE0IGFuZCAxNSBmcm9t IFYyLCB3aGljaCBiZWNvbWUgdW5uZWNlc3NhcnkKPj4gICAgaW4gbGlnaHQgb2YgdGhpcyBjaGFu Z2UuCj4+IC0gRml4ZWQgY2hlY2twYXRjaC5wbCBlcnJvcnMKPj4KPj4gU2lnbmVkLW9mZi1ieTog VG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIHwgNDcxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwgIDEz ICsKPj4gICAyIGZpbGVzIGNoYW5nZWQsIDQ4NCBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+IGluZGV4IGIzMTVmMDEuLmI3NzU3NGUgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+IEBAIC0zMyw2ICszMyw3IEBACj4+ICAg I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4gICAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+Cj4+ ICAgI2luY2x1ZGUgPGxpbnV4L2xpc3Rfc29ydC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3N0cmlu Zy5oPgo+PiAgICNpbmNsdWRlIDxhc20vbXNyLWluZGV4Lmg+Cj4+ICAgI2luY2x1ZGUgPGRybS9k cm1QLmg+Cj4+ICAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+PiBAQCAtNTEsNiArNTIsMTIxIEBA IHN0YXRpYyBjb25zdCBjaGFyICp5ZXNubyhpbnQgdikKPj4gICAJcmV0dXJuIHYgPyAieWVzIiA6 ICJubyI7Cj4+ICAgfQo+PiAgIAo+PiArI2RlZmluZSBNQVhfRFBfQ09ORklHX0xJTkVfQ09VTlQJ NjQKPj4gKwo+PiArZW51bSBkcF9jb25maWdfcGFyYW0gewo+PiArCURQX0NPTkZJR19QQVJBTV9D T05ORUNUT1IgPSAwLAo+PiArCURQX0NPTkZJR19QQVJBTV9DT05ORUNUT1JfSUQsCj4+ICsJRFBf Q09ORklHX1BBUkFNX0xJTktfUkFURSwKPj4gKwlEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VOVCwK Pj4gKwlEUF9DT05GSUdfUEFSQU1fVk9MVEFHRV9TV0lORywKPj4gKwlEUF9DT05GSUdfUEFSQU1f UFJFRU1QSEFTSVMsCj4+ICsJRFBfQ09ORklHX1BBUkFNX0hSRVMsCj4+ICsJRFBfQ09ORklHX1BB UkFNX1ZSRVMsCj4+ICsJRFBfQ09ORklHX1BBUkFNX0JQUCwKPj4gKwlEUF9QQVJBTUVURVJfQ09V TlQsCj4+ICsJRFBfQ09ORklHX1BBUkFNX0lOVkFMSUQgPSAtMQo+PiArfTsKPj4gKwo+PiArc3Ry dWN0IGRwX2NvbmZpZyB7Cj4+ICsJZW51bSBkcF9jb25maWdfcGFyYW0gdHlwZTsKPj4gKwl1bnNp Z25lZCBsb25nIHZhbHVlOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNoYXIgKmRwX2dldF9jb25m aWdfc3RyKGludCBmb3JfdG9rZW4pCj4+ICt7Cj4+ICsJY2hhciAqczsKPj4gKwo+PiArCXN3aXRj aCAoZm9yX3Rva2VuKSB7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fQ09OTkVDVE9SOgo+PiAr CQlzID0gIkNvbm5lY3RvciI7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgRFBfQ09ORklHX1BBUkFN X0NPTk5FQ1RPUl9JRDoKPj4gKwkJcyA9ICJDb25uZWN0b3IgSUQiOwo+PiArCQlicmVhazsKPj4g KwljYXNlIERQX0NPTkZJR19QQVJBTV9MSU5LX1JBVEU6Cj4+ICsJCXMgPSAiTGluayBSYXRlIjsK Pj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VOVDoKPj4gKwkJ cyA9ICJMYW5lIENvdW50IjsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1f Vk9MVEFHRV9TV0lORzoKPj4gKwkJcyA9ICJWb2x0YWdlIFN3aW5nIExldmVsIjsKPj4gKwkJYnJl YWs7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fUFJFRU1QSEFTSVM6Cj4+ICsJCXMgPSAiUHJl ZW1waGFzaXMgTGV2ZWwiOwo+PiArCQlicmVhazsKPj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9I UkVTOgo+PiArCQlzID0gIkhvcml6b250YWwgUmVzb2x1dGlvbiI7Cj4+ICsJCWJyZWFrOwo+PiAr CWNhc2UgRFBfQ09ORklHX1BBUkFNX1ZSRVM6Cj4+ICsJCXMgPSAiVmVydGljYWwgUmVzb2x1dGlv biI7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX0JQUDoKPj4gKwkJcyA9 ICJCaXRzIFBlciBQaXhlbCI7Cj4+ICsJCWJyZWFrOwo+PiArCWRlZmF1bHQ6Cj4+ICsJCXMgPSAi IjsKPj4gKwkJYnJlYWs7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHM7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyB2b2lkIGRwX3ByaW50X3N0cmluZyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4+ICsJCQkg ICAgZW51bSBkcF9jb25maWdfcGFyYW0gZm9yX3BhcmFtLAo+PiArCQkJICAgIHZvaWQgKmRhdGEp Cj4+ICt7Cj4+ICsJY2hhciAqZm9ybWF0X3N0cmluZzsKPj4gKwl1bnNpZ25lZCBsb25nIG91dHB1 dF92YWx1ZTsKPj4gKwo+PiArCXN3aXRjaCAoZm9yX3BhcmFtKSB7Cj4+ICsJY2FzZSBEUF9DT05G SUdfUEFSQU1fQ09OTkVDVE9SOgo+PiArCQkvKiBTcGVjaWFsIGNhc2UgZm9yIHRoZSBzdHJpbmcg cGFyYW1ldGVyICovCj4+ICsJCWZvcm1hdF9zdHJpbmcgPSAiQ29ubmVjdG9yOiAgICAgICAgICAg ICAlc1xuIjsKPj4gKwkJc2VxX3ByaW50ZihtLCBmb3JtYXRfc3RyaW5nLCAoY2hhciAqKSBkYXRh KTsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fQ09OTkVDVE9SX0lEOgo+ PiArCQlmb3JtYXRfc3RyaW5nID0gIkNvbm5lY3RvciBJRDogICAgICAgICAgJXVcbiI7Cj4+ICsJ CW91dHB1dF92YWx1ZSA9ICoodW5zaWduZWQgaW50ICopIGRhdGE7Cj4+ICsJCWJyZWFrOwo+PiAr CWNhc2UgRFBfQ09ORklHX1BBUkFNX0xJTktfUkFURToKPj4gKwkJZm9ybWF0X3N0cmluZyA9ICJM aW5rIFJhdGU6ICAgICAgICAgICAgICUwMnhcbiI7Cj4+ICsJCW91dHB1dF92YWx1ZSA9ICoodW5z aWduZWQgY2hhciAqKSBkYXRhOwo+PiArCQlicmVhazsKPj4gKwljYXNlIERQX0NPTkZJR19QQVJB TV9MQU5FX0NPVU5UOgo+PiArCQlmb3JtYXRfc3RyaW5nID0gIkxhbmUgQ291bnQ6ICAgICAgICAg ICAgJXVcbiI7Cj4+ICsJCW91dHB1dF92YWx1ZSA9ICoodW5zaWduZWQgaW50ICopIGRhdGE7Cj4+ ICsJCWJyZWFrOwo+PiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX1ZPTFRBR0VfU1dJTkc6Cj4+ICsJ CWZvcm1hdF9zdHJpbmcgPSAiVm9sdGFnZSBTd2luZyBMZXZlbDogICAldVxuIjsKPj4gKwkJb3V0 cHV0X3ZhbHVlID0gKih1bnNpZ25lZCBjaGFyICopIGRhdGE7Cj4+ICsJCWJyZWFrOwo+PiArCWNh c2UgRFBfQ09ORklHX1BBUkFNX1BSRUVNUEhBU0lTOgo+PiArCQlmb3JtYXRfc3RyaW5nID0gIlBy ZWVtcGhhc2lzIExldmVsOiAgICAgJXVcbiI7Cj4+ICsJCW91dHB1dF92YWx1ZSA9ICoodW5zaWdu ZWQgY2hhciAqKSBkYXRhOwo+PiArCQlicmVhazsKPj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9I UkVTOgo+PiArCQlmb3JtYXRfc3RyaW5nID0gIkhvcml6b250YWwgUmVzb2x1dGlvbjogJWRcbiI7 Cj4+ICsJCW91dHB1dF92YWx1ZSA9ICooaW50ICopIGRhdGE7Cj4+ICsJCWJyZWFrOwo+PiArCWNh c2UgRFBfQ09ORklHX1BBUkFNX1ZSRVM6Cj4+ICsJCWZvcm1hdF9zdHJpbmcgPSAiVmVydGljYWwg UmVzb2x1dGlvbjogICAlZFxuIjsKPj4gKwkJb3V0cHV0X3ZhbHVlID0gKihpbnQgKikgZGF0YTsK Pj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fQlBQOgo+PiArCQlmb3JtYXRf c3RyaW5nID0gIkJpdHMgUGVyIFBpeGVsOiAgICAgICAgJXVcbiI7Cj4+ICsJCW91dHB1dF92YWx1 ZSA9ICoodW5zaWduZWQgY2hhciAqKSBkYXRhOwo+PiArCQlicmVhazsKPj4gKwlkZWZhdWx0Ogo+ PiArCQlmb3JtYXRfc3RyaW5nID0gTlVMTDsKPj4gKwkJYnJlYWs7Cj4+ICsJfQo+PiArCj4+ICsJ aWYgKGZvcm1hdF9zdHJpbmcgIT0gTlVMTCAmJiBmb3JfcGFyYW0gIT0gRFBfQ09ORklHX1BBUkFN X0NPTk5FQ1RPUikKPj4gKwkJc2VxX3ByaW50ZihtLCBmb3JtYXRfc3RyaW5nLCBvdXRwdXRfdmFs dWUpOwo+PiArfQo+PiArCj4+ICAgLyogQXMgdGhlIGRybV9kZWJ1Z2ZzX2luaXQoKSByb3V0aW5l cyBhcmUgY2FsbGVkIGJlZm9yZSBkZXYtPmRldl9wcml2YXRlIGlzCj4+ICAgICogYWxsb2NhdGVk IHdlIG5lZWQgdG8gaG9vayBpbnRvIHRoZSBtaW5vciBmb3IgcmVsZWFzZS4gKi8KPj4gICBzdGF0 aWMgaW50Cj4+IEBAIC0zNzAxLDYgKzM4MTcsMzYwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIGk5MTVfZGlzcGxheV9jcmNfY3RsX2ZvcHMgPSB7Cj4+ICAgCS53cml0ZSA9 IGRpc3BsYXlfY3JjX2N0bF93cml0ZQo+PiAgIH07Cj4+ICAgCj4+ICtzdGF0aWMgdm9pZCBkcF9z aG93X2NvbmZpZyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4+ICsJCQkgICBzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAq aW50ZWxfY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4+ICsJc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSBpbnRlbF9jb25uZWN0b3ItPmVuY29k ZXI7Cj4+ICsJaW50IHBpcGVfYnBwLCBocmVzLCB2cmVzOwo+PiArCXVpbnQ4X3QgdnNbNF0sIHBl WzRdOwo+PiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+PiArCWludCBpID0gMDsK Pj4gKwo+PiArCWlmICghaW50ZWxfZW5jb2RlcikKPj4gKwkJcmV0dXJuOwo+PiArCj4+ICsJaWYg KGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUKQo+PiArCQly ZXR1cm47Cj4+ICsKPj4gKwlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmaW50ZWxfZW5jb2Rl ci0+YmFzZSk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfZHAtPmxhbmVfY291bnQ7 IGkrKykgewo+PiArCQl2c1tpXSA9IGludGVsX2RwLT50cmFpbl9zZXRbaV0KPj4gKwkJCSYgRFBf VFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLOwo+PiArCQlwZVtpXSA9IChpbnRlbF9kcC0+dHJhaW5f c2V0W2ldCj4+ICsJCSAgICAgICYgRFBfVFJBSU5fUFJFX0VNUEhBU0lTX01BU0spID4+Cj4+ICsJ CQlEUF9UUkFJTl9QUkVfRU1QSEFTSVNfU0hJRlQ7Cj4+ICsJfQo+PiArCj4+ICsJLyogT3V0cHV0 IG1vZGUgaW5mbyBvbmx5IGlmIGEgdmFsaWQgQ1JUQyBleGlzdHMgKi8KPj4gKwlpZiAoaW50ZWxf ZW5jb2Rlci0+YmFzZS5jcnRjKSB7Cj4+ICsJCWNydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2Vu Y29kZXItPmJhc2UuY3J0Yyk7Cj4+ICsJCXBpcGVfYnBwID0gY3J0Yy0+Y29uZmlnLT5waXBlX2Jw cDsKPj4gKwkJbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPj4gKwkJ aHJlcyA9IG1vZGUtPmhkaXNwbGF5Owo+PiArCQl2cmVzID0gbW9kZS0+dmRpc3BsYXk7Cj4+ICsJ fSBlbHNlIHsKPj4gKwkJcGlwZV9icHAgPSAwOwo+PiArCQlocmVzID0gdnJlcyA9IDA7Cj4+ICsJ fQo+PiArCj4+ICsJZHBfcHJpbnRfc3RyaW5nKG0sCj4+ICsJCQlEUF9DT05GSUdfUEFSQU1fQ09O TkVDVE9SLAo+PiArCQkJY29ubmVjdG9yLT5uYW1lKTsKPj4gKwlkcF9wcmludF9zdHJpbmcobSwK Pj4gKwkJCURQX0NPTkZJR19QQVJBTV9DT05ORUNUT1JfSUQsCj4+ICsJCQkmY29ubmVjdG9yLT5i YXNlLmlkKTsKPj4gKwlkcF9wcmludF9zdHJpbmcobSwKPj4gKwkJCURQX0NPTkZJR19QQVJBTV9M SU5LX1JBVEUsCj4+ICsJCQkmaW50ZWxfZHAtPmxpbmtfYncpOwo+PiArCWRwX3ByaW50X3N0cmlu ZyhtLAo+PiArCQkJRFBfQ09ORklHX1BBUkFNX0xBTkVfQ09VTlQsCj4+ICsJCQkmaW50ZWxfZHAt PmxhbmVfY291bnQpOwo+PiArCWRwX3ByaW50X3N0cmluZyhtLAo+PiArCQkJRFBfQ09ORklHX1BB UkFNX1ZPTFRBR0VfU1dJTkcsCj4+ICsJCQkmdnNbMF0pOwo+PiArCWRwX3ByaW50X3N0cmluZyht LAo+PiArCQkJRFBfQ09ORklHX1BBUkFNX1BSRUVNUEhBU0lTLAo+PiArCQkJJnBlWzBdKTsKPj4g KwlkcF9wcmludF9zdHJpbmcobSwKPj4gKwkJCURQX0NPTkZJR19QQVJBTV9IUkVTLAo+PiArCQkJ JmhyZXMpOwo+PiArCWRwX3ByaW50X3N0cmluZyhtLAo+PiArCQkJRFBfQ09ORklHX1BBUkFNX1ZS RVMsCj4+ICsJCQkmdnJlcyk7Cj4+ICsJZHBfcHJpbnRfc3RyaW5nKG0sCj4+ICsJCQlEUF9DT05G SUdfUEFSQU1fQlBQLAo+PiArCQkJJnBpcGVfYnBwKTsKPj4gK30KPj4gKwo+PiArZW51bSBkcF9j b25maWdfcGFyYW0gZHBfZ2V0X3BhcmFtX3R5cGUoY2hhciAqaW5wdXRfc3RyaW5nKQo+PiArewo+ PiArCWVudW0gZHBfY29uZmlnX3BhcmFtIHBhcmFtX3R5cGUgPSBEUF9DT05GSUdfUEFSQU1fSU5W QUxJRDsKPj4gKwljaGFyICpzOwo+PiArCWludCBpID0gMDsKPj4gKwo+PiArCWZvciAoaSA9IDA7 IGkgPCBEUF9QQVJBTUVURVJfQ09VTlQ7IGkrKykgewo+PiArCQlzID0gZHBfZ2V0X2NvbmZpZ19z dHIoaSk7Cj4+ICsJCWlmIChzdHJuY21wKGlucHV0X3N0cmluZywgcywKPj4gKwkJCSAgICBzdHJs ZW4ocykpID09IDApIHsKPj4gKwkJCXBhcmFtX3R5cGUgPSAoZW51bSBkcF9jb25maWdfcGFyYW0p IGk7Cj4+ICsJCQlicmVhazsKPj4gKwkJfQo+PiArCX0KPj4gKwlyZXR1cm4gcGFyYW1fdHlwZTsK Pj4gK30KPj4gKwo+PiAraW50IGRwX2dldF9wYXJhbV92YWx1ZShlbnVtIGRwX2NvbmZpZ19wYXJh bSBwYXJhbSwKPj4gKwkJCSAgIGNoYXIgKmlucHV0X3N0cmluZywKPj4gKwkJCSAgIHZvaWQgKm91 dHB1dF92YWx1ZSkKPj4gK3sKPj4gKwlpbnQgc3RhdHVzID0gMDsKPj4gKwl1bnNpZ25lZCBpbnQg Km91dF9wdHIgPSAodW5zaWduZWQgaW50ICopb3V0cHV0X3ZhbHVlOwo+PiArCWNoYXIgKmluZGV4 ID0gaW5wdXRfc3RyaW5nOwo+PiArCj4+ICsJc3dpdGNoIChwYXJhbSkgewo+PiArCWNhc2UgRFBf Q09ORklHX1BBUkFNX0NPTk5FQ1RPUjoKPj4gKwkJb3V0cHV0X3ZhbHVlID0gKGNoYXIgKilpbmRl eDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fTElOS19SQVRFOgo+PiAr CWNhc2UgRFBfQ09ORklHX1BBUkFNX0xBTkVfQ09VTlQ6Cj4+ICsJY2FzZSBEUF9DT05GSUdfUEFS QU1fVk9MVEFHRV9TV0lORzoKPj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9QUkVFTVBIQVNJUzoK Pj4gKwkJc3RhdHVzID0ga3N0cnRvbChpbmRleCwgMTYsIChsb25nICopb3V0X3B0cik7Cj4+ICsJ CWJyZWFrOwo+PiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX0hSRVM6Cj4+ICsJY2FzZSBEUF9DT05G SUdfUEFSQU1fVlJFUzoKPj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9CUFA6Cj4+ICsJCXN0YXR1 cyA9IGtzdHJ0b2woaW5kZXgsIDEwLCAobG9uZyAqKW91dF9wdHIpOwo+PiArCQlicmVhazsKPj4g KwlkZWZhdWx0Ogo+PiArCQkvKiBVbmhhbmRsZWQgY2FzZSAqLwo+PiArCQlzdGF0dXMgPSAtRUlO VkFMOwo+PiArCQkqb3V0X3B0ciA9IDA7Cj4+ICsJCWJyZWFrOwo+PiArCX0KPj4gKwo+PiArCXJl dHVybiBzdGF0dXM7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcF90b2tlbml6ZV9jb25maWcoY2hhciAq aW5wdXRfYnVmZmVyLCBjaGFyICpvdXRwdXRbXSkKPj4gK3sKPj4gKwljaGFyICpiYXNlID0gaW5w dXRfYnVmZmVyLCAqaW5kZXgsICplbmQ7Cj4+ICsJaW50IGxpbmVfY291bnQgPSAwOwo+PiArCWlu dCBpID0gMCwgbGVuID0gMDsKPj4gKwlpbnQgZG9uZSA9IDA7Cj4+ICsKPj4gKwlpZiAoIWlucHV0 X2J1ZmZlcikKPj4gKwkJcmV0dXJuIDA7Cj4+ICsKPj4gKwl3aGlsZSAoIWRvbmUpIHsKPj4gKwkJ aW5kZXggPSBzdHJwYnJrKGJhc2UsICI6Iik7Cj4+ICsJCWlmIChpbmRleCkgewo+PiArCQkJbGVu ID0gaW5kZXggLSBiYXNlOwo+PiArCQkJKmluZGV4ID0gJ1wwJzsKPj4gKwkJCWluZGV4Kys7Cj4+ ICsJCQkvKiBTYXZlIHRoZSB0eXBlIHN0cmluZyAqLwo+PiArCQkJb3V0cHV0W2ldID0gYmFzZTsK Pj4gKwkJCWkrKzsKPj4gKwkJCWxpbmVfY291bnQrKzsKPj4gKwkJCWVuZCA9IHN0cnBicmsoaW5k ZXgsICJcblwwIik7Cj4+ICsJCQlpZiAoZW5kKSB7Cj4+ICsJCQkJKmVuZCA9ICdcMCc7Cj4+ICsJ CQkJLyogRWF0IHVwIHdoaXRlc3BhY2UgKi8KPj4gKwkJCQl3aGlsZSAoKmluZGV4IDw9IDB4MjAp Cj4+ICsJCQkJCWluZGV4Kys7Cj4+ICsJCQkJb3V0cHV0W2ldID0gaW5kZXg7Cj4+ICsJCQkJaSsr Owo+PiArCQkJCWxpbmVfY291bnQrKzsKPj4gKwkJCX0gZWxzZQo+PiArCQkJCWRvbmUgPSAxOwo+ PiArCQkJLyogTW92ZSB0byB0aGUgbmV4dCBzZWN0aW9uIG9mIHRoZSBzdHJpbmcgKi8KPj4gKwkJ CWJhc2UgPSBlbmQgKyAxOwo+PiArCQl9IGVsc2UKPj4gKwkJCWRvbmUgPSAxOwo+PiArCX0KPj4g KwlyZXR1cm4gbGluZV9jb3VudDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBkcF9wYXJzZV9j b25maWcoY2hhciAqaW5wdXRfYnVmZmVyLAo+PiArCQkJICAgc3NpemVfdCBidWZmZXJfc2l6ZSwK Pj4gKwkJCSAgIHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ICt7Cj4+ICsJaW50IHN0YXR1 cyA9IDA7Cj4+ICsJY2hhciAqbGluZXNbTUFYX0RQX0NPTkZJR19MSU5FX0NPVU5UXTsKPj4gKwlp bnQgaSA9IDA7Cj4+ICsJc3RydWN0IGRwX2NvbmZpZyBwYXJtc1tEUF9QQVJBTUVURVJfQ09VTlRd Owo+PiArCWludCBsaW5lX2NvdW50ID0gMDsKPj4gKwljaGFyICpidWZmZXIgPSBpbnB1dF9idWZm ZXI7Cj4+ICsJZW51bSBkcF9jb25maWdfcGFyYW0gcGFybV90eXBlOwo+PiArCXVuc2lnbmVkIGxv bmcgcGFybV92YWx1ZTsKPj4gKwo+PiArCWxpbmVfY291bnQgPSBkcF90b2tlbml6ZV9jb25maWco YnVmZmVyLCBsaW5lcyk7Cj4+ICsKPj4gKwlpZiAobGluZV9jb3VudCA9PSAwKSB7Cj4+ICsJCURS TV9ERUJVR19EUklWRVIoIk5vIGxpbmVzIHRvIHByb2Nlc3NcbiIpOwo+PiArCQlyZXR1cm4gMDsK Pj4gKwl9Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgbGluZV9jb3VudDsgaSArPSAyKSB7Cj4+ ICsJCXBhcm1fdHlwZSA9IGRwX2dldF9wYXJhbV90eXBlKGxpbmVzW2ldKTsKPj4gKwkJaWYgKHBh cm1fdHlwZSAhPSBEUF9DT05GSUdfUEFSQU1fSU5WQUxJRCkgewo+PiArCQkJc3RhdHVzID0gZHBf Z2V0X3BhcmFtX3ZhbHVlKHBhcm1fdHlwZSwKPj4gKwkJCQkJCQlsaW5lc1tpKzFdLAo+PiArCQkJ CQkJCSZwYXJtX3ZhbHVlKTsKPj4gKwkJCWlmIChzdGF0dXMgPT0gMCkgewo+PiArCQkJCXBhcm1z W3Bhcm1fdHlwZV0udHlwZSA9IHBhcm1fdHlwZTsKPj4gKwkJCQlwYXJtc1twYXJtX3R5cGVdLnZh bHVlID0gcGFybV92YWx1ZTsKPj4gKwkJCX0KPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCWlmIChw YXJtc1tEUF9DT05GSUdfUEFSQU1fTElOS19SQVRFXS52YWx1ZSA9PSAweDA2IHx8Cj4+ICsJICAg IHBhcm1zW0RQX0NPTkZJR19QQVJBTV9MSU5LX1JBVEVdLnZhbHVlID09IDB4MGEgfHwKPj4gKwkg ICAgcGFybXNbRFBfQ09ORklHX1BBUkFNX0xJTktfUkFURV0udmFsdWUgPT0gMHgxNCkgewo+PiAr CQlpbnRlbF9kcC0+Y29tcGxpYW5jZV9jb25maWcubGlua19yYXRlID0KPj4gKwkJCXBhcm1zW0RQ X0NPTkZJR19QQVJBTV9MSU5LX1JBVEVdLnZhbHVlOwo+PiArCX0gZWxzZQo+PiArCQlyZXR1cm4g LUVJTlZBTDsKPj4gKwo+PiArCWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VOVF0u dmFsdWUgPT0gMHgwMSB8fAo+PiArCSAgICBwYXJtc1tEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VO VF0udmFsdWUgPT0gMHgwMiB8fAo+PiArCSAgICBwYXJtc1tEUF9DT05GSUdfUEFSQU1fTEFORV9D T1VOVF0udmFsdWUgPT0gMHgwNCkgewo+PiArCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV9jb25maWcu bGFuZV9jb3VudCA9Cj4+ICsJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VOVF0udmFs dWU7Cj4+ICsJfSBlbHNlCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsJaWYgKHBhcm1z W0RQX0NPTkZJR19QQVJBTV9WT0xUQUdFX1NXSU5HXS52YWx1ZSA8PSAweDAzICYmCj4+ICsJICAg IHBhcm1zW0RQX0NPTkZJR19QQVJBTV9WT0xUQUdFX1NXSU5HXS52YWx1ZSA+PSAweDAwKSB7Cj4+ ICsJCWludGVsX2RwLT5jb21wbGlhbmNlX2NvbmZpZy52c3dpbmdfbGV2ZWwgPQo+PiArCQkJcGFy bXNbRFBfQ09ORklHX1BBUkFNX1ZPTFRBR0VfU1dJTkddLnZhbHVlOwo+PiArCX0gZWxzZQo+PiAr CQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1fUFJF RU1QSEFTSVNdLnZhbHVlIDw9IDB4MDMgJiYKPj4gKwkgICAgcGFybXNbRFBfQ09ORklHX1BBUkFN X1BSRUVNUEhBU0lTXS52YWx1ZSA+PSAweDAwKSB7Cj4+ICsJCWludGVsX2RwLT5jb21wbGlhbmNl X2NvbmZpZy5wcmVlbXBfbGV2ZWwgPQo+PiArCQkJcGFybXNbRFBfQ09ORklHX1BBUkFNX1BSRUVN UEhBU0lTXS52YWx1ZTsKPj4gKwl9IGVsc2UKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4g KwlpZiAocGFybXNbRFBfQ09ORklHX1BBUkFNX0JQUF0udmFsdWUgPT0gMTggfHwKPj4gKwkgICAg cGFybXNbRFBfQ09ORklHX1BBUkFNX0JQUF0udmFsdWUgPT0gMjQgfHwKPj4gKwkgICAgcGFybXNb RFBfQ09ORklHX1BBUkFNX0JQUF0udmFsdWUgPT0gMzAgfHwKPj4gKwkgICAgcGFybXNbRFBfQ09O RklHX1BBUkFNX0JQUF0udmFsdWUgPT0gMzYpIHsKPj4gKwkJaW50ZWxfZHAtPmNvbXBsaWFuY2Vf Y29uZmlnLmJpdHNfcGVyX3BpeGVsID0KPj4gKwkJCXBhcm1zW0RQX0NPTkZJR19QQVJBTV9QUkVF TVBIQVNJU10udmFsdWU7Cj4+ICsJfSBlbHNlCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ ICsJaWYgKHBhcm1zW0RQX0NPTkZJR19QQVJBTV9IUkVTXS52YWx1ZSA+IDAgJiYKPj4gKwkgICAg cGFybXNbRFBfQ09ORklHX1BBUkFNX0hSRVNdLnZhbHVlIDw9IDgxOTIpIHsKPj4gKwkJaW50ZWxf ZHAtPmNvbXBsaWFuY2VfY29uZmlnLmhyZXMgPQo+PiArCQkJcGFybXNbRFBfQ09ORklHX1BBUkFN X0hSRVNdLnZhbHVlOwo+PiArCX0gZWxzZQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiAr CWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1fVlJFU10udmFsdWUgPiAwICYmCj4+ICsJICAgIHBh cm1zW0RQX0NPTkZJR19QQVJBTV9WUkVTXS52YWx1ZSA8PSA4MTkyKSB7Cj4+ICsJCWludGVsX2Rw LT5jb21wbGlhbmNlX2NvbmZpZy52cmVzID0KPj4gKwkJCXBhcm1zW0RQX0NPTkZJR19QQVJBTV9W UkVTXS52YWx1ZTsKPj4gKwl9IGVsc2UKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKwly ZXR1cm4gc3RhdHVzOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGk5MTVfZGlzcGxheXBvcnRf Y29uZmlnX2N0bF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gK3sKPj4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbS0+cHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yOwo+PiArCXN0cnVjdCBsaXN0X2hlYWQgKmNvbm5lY3Rvcl9saXN0 ID0gJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3Q7Cj4+ICsKPj4gKwlpZiAoIWRldikK Pj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4+ICsKPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5l Y3RvciwgY29ubmVjdG9yX2xpc3QsIGhlYWQpIHsKPj4gKwo+PiArCQlpZiAoY29ubmVjdG9yLT5j b25uZWN0b3JfdHlwZSAhPQo+PiArCQkgICAgRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0 KQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJaWYgKGNvbm5lY3Rvci0+c3RhdHVzID09IGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSB7Cj4+ICsJCQlkcF9zaG93X2NvbmZpZyhtLCBjb25u ZWN0b3IpOwo+PiArCQl9IGVsc2Ugewo+PiArCQkJZHBfcHJpbnRfc3RyaW5nKG0sCj4+ICsJCQkJ CURQX0NPTkZJR19QQVJBTV9DT05ORUNUT1IsCj4+ICsJCQkJCWNvbm5lY3Rvci0+bmFtZSk7Cj4+ ICsJCQlkcF9wcmludF9zdHJpbmcobSwKPj4gKwkJCQkJRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RP Ul9JRCwKPj4gKwkJCQkJJmNvbm5lY3Rvci0+YmFzZS5pZCk7Cj4+ICsJCQlzZXFfcHV0cyhtLCAi ZGlzY29ubmVjdGVkXG4iKTsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgaW50IGk5MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0bF9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsCj4+ICsJCQkJICAgICAgIHN0cnVjdCBmaWxlICpmaWxlKQo+PiAr ewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbm9kZS0+aV9wcml2YXRlOwo+PiArCj4+ ICsJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0bF9z aG93LCBkZXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3NpemVfdCBpOTE1X2Rpc3BsYXlwb3J0 X2NvbmZpZ19jdGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4+ICsJCQkJCSAgICBjb25zdCBj aGFyIF9fdXNlciAqdWJ1ZiwKPj4gKwkJCQkJICAgIHNpemVfdCBsZW4sIGxvZmZfdCAqb2ZmcCkK Pj4gK3sKPj4gKwljaGFyICppbnB1dF9idWZmZXI7Cj4+ICsJaW50IHN0YXR1cyA9IDA7Cj4+ICsJ c3RydWN0IHNlcV9maWxlICptOwo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpjb25u ZWN0b3JfbGlzdDsKPj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOwo+PiArCj4+ICsJbSA9 IGZpbGUtPnByaXZhdGVfZGF0YTsKPj4gKwlpZiAoIW0pIHsKPj4gKwkJc3RhdHVzID0gLUVOT0RF VjsKPj4gKwkJcmV0dXJuIHN0YXR1czsKPj4gKwl9Cj4+ICsJZGV2ID0gbS0+cHJpdmF0ZTsKPj4g Kwo+PiArCWlmICghZGV2KSB7Cj4+ICsJCXN0YXR1cyA9IC1FTk9ERVY7Cj4+ICsJCXJldHVybiBz dGF0dXM7Cj4+ICsJfQo+PiArCWNvbm5lY3Rvcl9saXN0ID0gJmRldi0+bW9kZV9jb25maWcuY29u bmVjdG9yX2xpc3Q7Cj4+ICsKPj4gKwlpZiAobGVuID09IDApCj4+ICsJCXJldHVybiAwOwo+PiAr Cj4+ICsJaW5wdXRfYnVmZmVyID0ga21hbGxvYyhsZW4gKyAxLCBHRlBfS0VSTkVMKTsKPj4gKwlp ZiAoIWlucHV0X2J1ZmZlcikKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlpZiAoY29w eV9mcm9tX3VzZXIoaW5wdXRfYnVmZmVyLCB1YnVmLCBsZW4pKSB7Cj4+ICsJCXN0YXR1cyA9IC1F RkFVTFQ7Cj4+ICsJCWdvdG8gb3V0Owo+PiArCX0KPj4gKwo+PiArCWlucHV0X2J1ZmZlcltsZW5d ID0gJ1wwJzsKPj4gKwlEUk1fREVCVUdfRFJJVkVSKCJDb3BpZWQgJWQgYnl0ZXMgZnJvbSB1c2Vy XG4iLCAodW5zaWduZWQgaW50KWxlbik7Cj4+ICsKPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNv bm5lY3RvciwgY29ubmVjdG9yX2xpc3QsIGhlYWQpIHsKPj4gKwkJaWYgKGNvbm5lY3Rvci0+Y29u bmVjdG9yX3R5cGUgPT0KPj4gKwkJICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCAm Jgo+PiArCQkgICAgY29ubmVjdG9yLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQpIHsKPj4gKwkJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGNvbm5lY3Rvci0+ZW5jb2Rl cik7Cj4+ICsJCQlzdGF0dXMgPSBkcF9wYXJzZV9jb25maWcoaW5wdXRfYnVmZmVyLCBsZW4sIGlu dGVsX2RwKTsKPj4gKwkJCWlmIChzdGF0dXMgPCAwKQo+PiArCQkJCWdvdG8gb3V0Owo+PiArCQl9 Cj4+ICsJfQo+PiArb3V0Ogo+PiArCWtmcmVlKGlucHV0X2J1ZmZlcik7Cj4+ICsJaWYgKHN0YXR1 cyA8IDApCj4+ICsJCXJldHVybiBzdGF0dXM7Cj4+ICsKPj4gKwkqb2ZmcCArPSBsZW47Cj4+ICsJ cmV0dXJuIGxlbjsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgaTkxNV9kaXNwbGF5cG9ydF9jb25maWdfY3RsX2ZvcHMgPSB7Cj4+ICsJLm93bmVyID0g VEhJU19NT0RVTEUsCj4+ICsJLm9wZW4gPSBpOTE1X2Rpc3BsYXlwb3J0X2NvbmZpZ19jdGxfb3Bl biwKPj4gKwkucmVhZCA9IHNlcV9yZWFkLAo+PiArCS5sbHNlZWsgPSBzZXFfbHNlZWssCj4+ICsJ LnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwKPj4gKwkud3JpdGUgPSBpOTE1X2Rpc3BsYXlwb3J0 X2NvbmZpZ19jdGxfd3JpdGUKPj4gK307Cj4+ICsKPj4gICBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5 X3Nob3coc3RydWN0IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKPj4gICB7Cj4+ ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtLT5wcml2YXRlOwo+PiBAQCAtNDQ1MCw2ICs0 OTIwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X2RlYnVnZnNfZmlsZXMgewo+PiAgIAl7 Imk5MTVfc3ByX3dtX2xhdGVuY3kiLCAmaTkxNV9zcHJfd21fbGF0ZW5jeV9mb3BzfSwKPj4gICAJ eyJpOTE1X2N1cl93bV9sYXRlbmN5IiwgJmk5MTVfY3VyX3dtX2xhdGVuY3lfZm9wc30sCj4+ICAg CXsiaTkxNV9mYmNfZmFsc2VfY29sb3IiLCAmaTkxNV9mYmNfZmNfZm9wc30sCj4+ICsJeyJpOTE1 X2Rpc3BsYXlwb3J0X2NvbmZpZ19jdGwiLCAmaTkxNV9kaXNwbGF5cG9ydF9jb25maWdfY3RsX2Zv cHN9Cj4+ICAgfTsKPj4gICAKPj4gICB2b2lkIGludGVsX2Rpc3BsYXlfY3JjX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXggNzRi MzBjMS4uYzgxM2QzYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gQEAgLTU5 Miw2ICs1OTIsMTggQEAgc3RydWN0IGludGVsX2hkbWkgewo+PiAgIHN0cnVjdCBpbnRlbF9kcF9t c3RfZW5jb2RlcjsKPj4gICAjZGVmaW5lIERQX01BWF9ET1dOU1RSRUFNX1BPUlRTCQkweDEwCj4+ ICAgCj4+ICtzdHJ1Y3QgaW50ZWxfZHBfbGlua19jb25maWcgewo+PiArCXVpbnQ4X3QgbGFuZV9j b3VudDsKPj4gKwl1aW50OF90IGxpbmtfcmF0ZTsKPj4gKwl1aW50OF90IHZzd2luZ19sZXZlbDsK Pj4gKwl1aW50OF90IHByZWVtcF9sZXZlbDsKPj4gKwl1aW50MzJfdCBocmVzOwo+PiArCXVpbnQz Ml90IHZyZXM7Cj4+ICsJdWludDhfdCBiaXRzX3Blcl9waXhlbDsKPj4gKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqY29tcGxpYW5jZV9tb2RlOwo+PiArCWNoYXIgY29ubmVjdG9yX25hbWVbMTJd Owo+PiArfTsKPj4gKwo+PiAgIHN0cnVjdCBpbnRlbF9kcCB7Cj4+ICAgCXVpbnQzMl90IG91dHB1 dF9yZWc7Cj4+ICAgCXVpbnQzMl90IGF1eF9jaF9jdGxfcmVnOwo+PiBAQCAtNjUxLDYgKzY2Myw3 IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4+ICAgCS8qIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UgdGVz dGluZyAqLwo+PiAgIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF9kYXRhOwo+PiAgIAli b29sIGNvbXBsaWFuY2VfdGVzdGluZ19hY3RpdmU7Cj4+ICsJc3RydWN0IGludGVsX2RwX2xpbmtf Y29uZmlnIGNvbXBsaWFuY2VfY29uZmlnOwo+PiAgIH07Cj4+ICAgCj4+ICAgc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCB7Cj4+IC0tIAo+PiAxLjkuMQo+Pgo+PiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK