From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 4/9] drm/i915: Add debugfs functions for Displayport compliance testing Date: Mon, 09 Mar 2015 19:57:07 +0200 Message-ID: <871tkyoxzg.fsf@intel.com> References: <1424314837-32434-1-git-send-email-tprevite@gmail.com> <1424314837-32434-5-git-send-email-tprevite@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 14E886E55F for ; Mon, 9 Mar 2015 10:58:14 -0700 (PDT) In-Reply-To: <1424314837-32434-5-git-send-email-tprevite@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Todd Previte , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxOSBGZWIgMjAxNSwgVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+IHdy b3RlOgo+IFRoaXMgcGF0Y2ggaXMgdGhlIGFtYWxnYW1hdGlvbiBvZiA3IHBhdGNoZXMgZnJvbSB0 aGUgVjIgc2VyaWVzLiBUaGVzZQo+IHBhdGNoZXMgYWxsIGludm9sdmUgdGhlIGltcGxlbWVudGF0 aW9uIG9mIHRoZSBkZWJ1Z2ZzIG1lY2hhbmlzbSBmb3IKPiBoYW5kbGluZyBEaXNwbGF5cG9ydCBj b21wbGlhbmNlIHRlc3RpbmcuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBjb21taXQKPiBtZXNzYWdl cyBmcm9tIHRob3NlIDcgcGF0Y2hlcyAoaW5jbHVkZWQgaGVyZSB0byB0cnkgYW5kIHByZXNlcnZl IHRoZQo+IHBhdGNoIHNldCBoaXN0b3J5KToKCkkgdGhpbmsgdGhlcmUgc2hvdWxkIGJlIHBlciBj b25uZWN0b3IgZGVidWdmcyBmaWxlcyBmb3IgdGhpcywgaW5zdGVhZCBvZgpkb2luZyBpdCBmb3Ig YWxsIERQIGNvbm5lY3RvcnMuCgpTZWUgbXkgZHBjZCBkZWJ1Z2ZzIHBhdGNoIFsxXSBmb3IgYW4g ZXhhbXBsZS4gSSB3aXNoIHRoYXQgZ290IHJldmlld2VkCmFuZCBtZXJnZWQuLi4KCkJSLApKYW5p LgoKClsxXSBodHRwOi8vbWlkLmdtYW5lLm9yZy8xNDI0ODY3NjQ1LTIxNjA4LTEtZ2l0LXNlbmQt ZW1haWwtamFuaS5uaWt1bGFAaW50ZWwuY29tCgoKCgoKPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPiBbUEFUQ0ggMDQvMTddIGRybS9pOTE1OiBBZGQgZGVidWdmcyBpbmZvcm1hdGlvbiBmb3Ig RGlzcGxheXBvcnQgY29tcGxpYW5jZQo+ICAgICAgICAgICAgICAgdGVzdGluZwo+Cj4gT3JpZ2lu YWxseSwgdGhpcyBwYXRjaCB3YXMgcGFydCBvZiAiW1BBVENIIDA1LzEwXSBkcm0vaTkxNTogQWRk IGRlYnVnZnMKPiBpbnRlcmZhY2UgZm9yIERpc3BsYXlwb3J0IGRlYnVnIGFuZCBjb21wbGlhbmNl IHRlc3RpbmciLiAgSXQgY29udGFpbmVkCj4gZGVmaW5pdGlvbnMvZGVjbGFyYXRpb25zIGZvciBz b21lIG9mIHRoZSBjb25zdGFudHMgYW5kIGRhdGEgc3RydWN0dXJlcwo+IGFkZGVkIHRvIHN1cHBv cnQgZGVidWdmcyBvdXRwdXQgZm9yIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UKPiB0ZXN0aW5nLgo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBbUEFUQ0ggMDUvMTddIGRybS9pOTE1OiBBZGQgZmls ZSBvcHMgZm9yIERpc3BsYXlwb3J0IGNvbmZpZ3VyYXRpb24gaW4gZGVidWdmcwo+Cj4gVGhpcyBw YXRjaCB3YXMgYWxzbyBwYXJ0IG9mICJbUEFUQ0ggMDUvMTBdIGRybS9pOTE1OiBBZGQgZGVidWdm cyBpbnRlcmZhY2UKPiBmb3IgRGlzcGxheXBvcnQgZGVidWcgYW5kIGNvbXBsaWFuY2UgdGVzdGlu ZyIuIFRoaXMgb25lIGFkZGVkIGZpbGUgb3BlcmF0aW9ucwo+IHN0cnVjdHVyZXMgZm9yIERpc3Bs YXlwb3J0IGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBkZWNsYXJhdGlvbnMgZm9yIG9wZW4oKSBhbmQK PiB3cml0ZSgpIGluIHRoZSBmaWxlIG9wcyBzdHJ1Y3R1cmUuCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+IFtQQVRDSCAwNi8xN10gZHJtL2k5MTU6IEFkZCBzdXBwb3J0IGZ1bmN0aW9ucyBpbiBk ZWJ1Z2ZzIGZvciBoYW5kbGluZwo+ICAgICAgICAgICAgICAgRGlzcGxheXBvcnQgY29tcGxpYW5j ZSBjb25maWd1cmF0aW9uCj4KPiBUaGlzIHBhdGNoIHdhcyBwcmV2aW91c2x5IHBhcnQgb2YgIltQ QVRDSCAwNS8xMF0gZHJtL2k5MTU6IEFkZCBkZWJ1Z2ZzIGludGVyZmFjZQo+IGZvciBEaXNwbGF5 cG9ydCBkZWJ1ZyAgYW5kIGNvbXBsaWFuY2UgdGVzdGluZyIuIEl0IGFkZGVkIHR3byBzdXBwb3J0 IGZ1bmN0aW9ucwo+IGZvciBoYW5kbGluZyBEaXNwbGF5cG9ydCBjb25maWd1cmF0aW9uIHBhcmFt ZXRlcnMgdGhhdCBhcmUgdXNlZCBmb3IgY29tcGxpYW5jZQo+IHRlc3RpbmcuCj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+IFtQQVRDSCAwNy8xN10gZHJtL2k5MTU6IEFkZCBhbmQgaW1wbGVtZW50 IHRoZSBkZWJ1Z2ZzICdzaG93JyBmdW5jdGlvbnMgZm9yCj4gICAgICAgICAgICAgICBEaXNwbGF5 cG9ydCBjb21wbGlhbmNlCj4KPiBUaGlzIHBhdGNoIHdhcyBwcmV2aW91c2x5IHBhcnQgb2YgIltQ QVRDSCAwNS8xMF0gZHJtL2k5MTU6IEFkZCBkZWJ1Z2ZzCj4gaW50ZXJmYWNlIGZvciBEaXNwbGF5 cG9ydCBkZWJ1ZyBhbmQgY29tcGxpYW5jZSB0ZXN0aW5nIi4gVGhpcyBwYXRjaCBpbXBsZW1lbnRl ZAo+IHRoZSBzaG93KCkgZnVuY3Rpb24uCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IFtQQVRD SCAwOC8xN10gZHJtL2k5MTU6IEFkZCBEaXNwbGF5cG9ydCBsaW5rIGNvbmZpZ3VyYXRpb24gc3Ry dWN0dXJlCj4KPiBUaGlzIHBhdGNoIHdhcyBwcmV2aW91c2x5IHBhcnQgb2YgIltQQVRDSCAwNy8x MF0gZHJtL2k5MTU6IEFkZCBzdHJ1Y3R1cmVzIGZvcgo+IERpc3BsYXlwb3J0IGNvbXBsaWFuY2Ug dGVzdGluZyBwYXJhbWV0ZXJzIi4gSXQgYWRkZWQgYSBzdHJ1Y3QgdG8gbWFpbnRhaW4gbGluawo+ IGNvbmZpZ3VyYXRpb24gZGF0YS4gVGhlc2Ugd2VyZSBtZWFudCBwdXJlbHkgZm9yIERpc3BsYXlw b3J0IGNvbXBsaWFuY2UgdXNlLgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBbUEFUQ0ggMDkv MTddIGRybS9pOTE1OiBBZGQgY29uZmlnIHBhcnNpbmcgdXRpbGl0aWVzIGluIGRlYnVnZnMgZm9y IERpc3BsYXlwb3J0Cj4gICAgICAgICAgICAgICBjb21wbGlhbmNlCj4KPiBUaGlzIHBhdGNoIHdh cyBwcmV2aW91c2x5IHBhcnQgb2YgIltQQVRDSCAwNS8xMF0gZHJtL2k5MTU6IEFkZCBkZWJ1Z2Zz Cj4gaW50ZXJmYWNlIGZvciBEaXNwbGF5cG9ydCBkZWJ1ZyBhbmQgY29tcGxpYW5jZSB0ZXN0aW5n Ii4gVGhpcyBwYXRjaCBhZGRzIHR3bwo+IGZ1bmN0aW9ucyB0byBoYW5kbGUgcGFyc2luZyBvZiBE aXNwbGF5cG9ydCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFzIGl0Cj4gZm9ybWF0dGVkIGlu IHRoZSBkZWJ1Z2ZzIGZpbGUuIEl0IGlzIHVzZWQgdG8gcHJvY2VzcyBpbmNvbWluZyBjb25maWd1 cmF0aW9uCj4gY2hhbmdlcyBmcm9tIHRoZSB1c2Vyc3BhY2UgY29tcGxpYW5jZSBhcHBsaWNhdGlv biBkdXJpbmcgdGVzdGluZy4KPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBbUEFUQ0ggMTAv MTddIGRybS9pOTE1OiBJbXBsZW1lbnQgdGhlICdvcGVuJyBhbmQgJ3dyaXRlJyBkZWJ1Z2ZzIGZ1 bmN0aW9ucyBmb3IKPiAgICAgICAgICAgICAgIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UKPgo+IFRo aXMgcGF0Y2ggaXMgYSBjb21iaW5hdGlvbiBvZiBzZWN0aW9ucyBvdXQgb2YgdGhlIGZvbGxvd2lu ZyB0d28gcHJldmlvdXMKPiBwYXRjaGVzOgo+IFtQQVRDSCAwNS8xMF0gZHJtL2k5MTU6IEFkZCBk ZWJ1Z2ZzIGludGVyZmFjZSBmb3IgRGlzcGxheXBvcnQgZGVidWcgYW5kCj4gY29tcGxpYW5jZSB0 ZXN0aW5nCj4gW1BBVENIIDA3LzEwXSBkcm0vaTkxNTogQWRkIHN0cnVjdHVyZXMgZm9yIERpc3Bs YXlwb3J0IGNvbXBsaWFuY2UgdGVzdGluZwo+IHBhcmFtZXRlcnMKPgo+IFRoaXMgcGF0Y2ggaW1w bGVtZW50cyB0aGUgZGVidWdmcyBmdW5jdGlvbnMgZm9yICdvcGVuJyBhbmQgJ3dyaXRlJyBhcyB0 aGV5Cj4gYXJlIHNwZWNpZmllZCBpbiB0aGUgZmlsZSBvcHMgc3RydWN0dXJlLiBUaGUgJ29wZW4n IGZ1bmN0aW9uIG91dHB1dHMKPiBEaXNwbGF5cG9ydCBkYXRhIHRvIHRoZSBhcHByb3ByaWF0ZSBk ZWJ1Z2ZzIGZpbGUgd2hpbGUgdGhlICd3cml0ZScgZnVuY3Rpb24KPiBoYW5kbGVzIHBhcnNpbmcg b2YgdXNlciBkYXRhIHdyaXR0ZW4gdG8gdGhhdCBzYW1lIGZpbGUuCj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+Cj4gVGhlIG5hdHVyZSBhbmQgc2NvcGUgb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMg cGF0Y2ggbWFrZSBicmVha2luZyBpdCBpbnRvCj4gc21hbGxlciBjaHVua3MgZGlmZmljdWx0LiBX aXRoIGV2ZXJ0aGluZyBjb250YWluZWQgaW4gYSBzaW5nbGUgcGF0Y2gsIHRoZQo+IGNvZGUgaXMg ZWFzaWVyIHRvIHJldmlldyBhbmQgdW5kZXJzdGFuZC4KPgo+IFRoYXQgc2FpZCwgdGhpcyBtb25z dGVyIG9mIGEgcGF0Y2ggZG9lcyBxdWl0ZSBhIGZldyB0aGluZ3MuIEZpcnN0LCBpdCBhZGRzCj4g c29tZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciBwZXJmb3JtaW5nIGNvbXBsaWFuY2Ug dGVzdGluZyBvcGVyYXRpb25zCj4gb24gdGhlIGtlcm5lbCBzaWRlLiBTcGVjaWZpY2FsbHksIGl0 IGFkZHMgbGluayBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kCj4gc3RyaW5nIHRva2VucyBm b3IgdGhlIGRlYnVnZnMgZmlsZXMuIFRoZXJlIGFyZSBtdWx0aXBsZSB1dGlsaXR5IGZ1bmN0aW9u cwo+IGFkZGVkIGhlcmUgYXMgd2VsbCBpbiBzdXBwb3J0IG9mIHRoZSBkZWJ1Z2ZzIHN5c3RlbSBm b3IgaGFuZGxpbmcgY29tcGxpYW5jZQo+IHRlc3RpbmcuIEZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcg c3RyaW5ncyB0byB0aGUgZmlsZXMgd2l0aCB0aGUgY29ycmVjdCBmb3JtYXQsCj4gcGFyc2luZyB0 b2tlbnMsIHRva2VuaXppbmcgc3RyaW5ncyBhbmQgZG9pbmcgdGhlIGdydW50IHdvcmsgZm9yIHdy aXRpbmcgdGhlCj4gZGF0YSB0byB0aGUgZGVidWdmcyBmaWxlcy4KPgo+IFRoaXMgcGF0Y2ggYWxz byBhZGRzIHRoZSBiYXNpYyBkZWJ1Z2ZzIHN0cnVjdHVyZXMgdG8gYnVpbGQgdGhlIGZpbGUgZm9y IHRoZQo+IGxpbmsgY29uZmlndXJhdGlvbiBvdXRwdXQgYXMgd2VsbCBhcyB0aGUgZmlsZSBvcGVy YXRpb25zIHN0cnVjdHVyZXMgdG8gaGFuZGxlCj4gdGhlIG9wZW4gYW5kIHNob3cgZnVuY3Rpb25z Lgo+Cj4gVjI6Cj4gLSBOL0EKPiBWMzoKPiAtIE1lcmdlZCBwYXRjaGVzIDQtMTAgaW50byBhIHNp bmdsZSBwYXRjaCBwZXIgcmV2aWV3IGZlZWRiYWNrCj4gLSBBZGRlZCBwcmV2aW91cyBjb21taXQg bWVzc2FnZXMgZnJvbSB0aGUgb3RoZXIgY29tbWl0cyBpbnRlZ3JhdGVkCj4gICBoZXJlIHRvIHBy ZXNlcnZlIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHBhdGNoIHNlcXVlbmNlCj4gLSBBZGp1c3RlZCB0 aGUgY29uZmlnX2N0bF93cml0ZSBmdW5jdGlvbiB0byBvbmx5IGNoZWNrIHRoZSBkcm1fY29ubmVj dG9yCj4gICBzdHJ1Y3QgZm9yIGEpIHR5cGUgPT0gRGlzcGxheXBvcnQgYW5kIGIpIHN0YXR1cyA9 PSBhY3RpdmUuIFRoaXMgaXMKPiAgIHRvIGVsaW1pbmF0ZSBwYXRjaGVzIDE0IGFuZCAxNSBmcm9t IFYyLCB3aGljaCBiZWNvbWUgdW5uZWNlc3NhcnkKPiAgIGluIGxpZ2h0IG9mIHRoaXMgY2hhbmdl Lgo+IC0gRml4ZWQgY2hlY2twYXRjaC5wbCBlcnJvcnMKPgo+IFNpZ25lZC1vZmYtYnk6IFRvZGQg UHJldml0ZSA8dHByZXZpdGVAZ21haWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyB8IDQ3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAgMTMgKwo+ICAyIGZp bGVzIGNoYW5nZWQsIDQ4NCBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+IGluZGV4IGIzMTVmMDEuLmI3NzU3NGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+IEBAIC0zMyw2ICszMyw3IEBACj4gICNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2xpc3Rf c29ydC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Cj4gICNpbmNsdWRlIDxhc20vbXNy LWluZGV4Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2 LmgiCj4gQEAgLTUxLDYgKzUyLDEyMSBAQCBzdGF0aWMgY29uc3QgY2hhciAqeWVzbm8oaW50IHYp Cj4gIAlyZXR1cm4gdiA/ICJ5ZXMiIDogIm5vIjsKPiAgfQo+ICAKPiArI2RlZmluZSBNQVhfRFBf Q09ORklHX0xJTkVfQ09VTlQJNjQKPiArCj4gK2VudW0gZHBfY29uZmlnX3BhcmFtIHsKPiArCURQ X0NPTkZJR19QQVJBTV9DT05ORUNUT1IgPSAwLAo+ICsJRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RP Ul9JRCwKPiArCURQX0NPTkZJR19QQVJBTV9MSU5LX1JBVEUsCj4gKwlEUF9DT05GSUdfUEFSQU1f TEFORV9DT1VOVCwKPiArCURQX0NPTkZJR19QQVJBTV9WT0xUQUdFX1NXSU5HLAo+ICsJRFBfQ09O RklHX1BBUkFNX1BSRUVNUEhBU0lTLAo+ICsJRFBfQ09ORklHX1BBUkFNX0hSRVMsCj4gKwlEUF9D T05GSUdfUEFSQU1fVlJFUywKPiArCURQX0NPTkZJR19QQVJBTV9CUFAsCj4gKwlEUF9QQVJBTUVU RVJfQ09VTlQsCj4gKwlEUF9DT05GSUdfUEFSQU1fSU5WQUxJRCA9IC0xCj4gK307Cj4gKwo+ICtz dHJ1Y3QgZHBfY29uZmlnIHsKPiArCWVudW0gZHBfY29uZmlnX3BhcmFtIHR5cGU7Cj4gKwl1bnNp Z25lZCBsb25nIHZhbHVlOwo+ICt9Owo+ICsKPiArc3RhdGljIGNoYXIgKmRwX2dldF9jb25maWdf c3RyKGludCBmb3JfdG9rZW4pCj4gK3sKPiArCWNoYXIgKnM7Cj4gKwo+ICsJc3dpdGNoIChmb3Jf dG9rZW4pIHsKPiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUjoKPiArCQlzID0gIkNv bm5lY3RvciI7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9DT05ORUNUT1Jf SUQ6Cj4gKwkJcyA9ICJDb25uZWN0b3IgSUQiOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUF9DT05G SUdfUEFSQU1fTElOS19SQVRFOgo+ICsJCXMgPSAiTGluayBSYXRlIjsKPiArCQlicmVhazsKPiAr CWNhc2UgRFBfQ09ORklHX1BBUkFNX0xBTkVfQ09VTlQ6Cj4gKwkJcyA9ICJMYW5lIENvdW50IjsK PiArCQlicmVhazsKPiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX1ZPTFRBR0VfU1dJTkc6Cj4gKwkJ cyA9ICJWb2x0YWdlIFN3aW5nIExldmVsIjsKPiArCQlicmVhazsKPiArCWNhc2UgRFBfQ09ORklH X1BBUkFNX1BSRUVNUEhBU0lTOgo+ICsJCXMgPSAiUHJlZW1waGFzaXMgTGV2ZWwiOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fSFJFUzoKPiArCQlzID0gIkhvcml6b250YWwg UmVzb2x1dGlvbiI7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9WUkVTOgo+ ICsJCXMgPSAiVmVydGljYWwgUmVzb2x1dGlvbiI7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX0NP TkZJR19QQVJBTV9CUFA6Cj4gKwkJcyA9ICJCaXRzIFBlciBQaXhlbCI7Cj4gKwkJYnJlYWs7Cj4g KwlkZWZhdWx0Ogo+ICsJCXMgPSAiIjsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlyZXR1cm4g czsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHBfcHJpbnRfc3RyaW5nKHN0cnVjdCBzZXFfZmls ZSAqbSwKPiArCQkJICAgIGVudW0gZHBfY29uZmlnX3BhcmFtIGZvcl9wYXJhbSwKPiArCQkJICAg IHZvaWQgKmRhdGEpCj4gK3sKPiArCWNoYXIgKmZvcm1hdF9zdHJpbmc7Cj4gKwl1bnNpZ25lZCBs b25nIG91dHB1dF92YWx1ZTsKPiArCj4gKwlzd2l0Y2ggKGZvcl9wYXJhbSkgewo+ICsJY2FzZSBE UF9DT05GSUdfUEFSQU1fQ09OTkVDVE9SOgo+ICsJCS8qIFNwZWNpYWwgY2FzZSBmb3IgdGhlIHN0 cmluZyBwYXJhbWV0ZXIgKi8KPiArCQlmb3JtYXRfc3RyaW5nID0gIkNvbm5lY3RvcjogICAgICAg ICAgICAgJXNcbiI7Cj4gKwkJc2VxX3ByaW50ZihtLCBmb3JtYXRfc3RyaW5nLCAoY2hhciAqKSBk YXRhKTsKPiArCQlicmVhazsKPiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUl9JRDoK PiArCQlmb3JtYXRfc3RyaW5nID0gIkNvbm5lY3RvciBJRDogICAgICAgICAgJXVcbiI7Cj4gKwkJ b3V0cHV0X3ZhbHVlID0gKih1bnNpZ25lZCBpbnQgKikgZGF0YTsKPiArCQlicmVhazsKPiArCWNh c2UgRFBfQ09ORklHX1BBUkFNX0xJTktfUkFURToKPiArCQlmb3JtYXRfc3RyaW5nID0gIkxpbmsg UmF0ZTogICAgICAgICAgICAgJTAyeFxuIjsKPiArCQlvdXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVk IGNoYXIgKikgZGF0YTsKPiArCQlicmVhazsKPiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX0xBTkVf Q09VTlQ6Cj4gKwkJZm9ybWF0X3N0cmluZyA9ICJMYW5lIENvdW50OiAgICAgICAgICAgICV1XG4i Owo+ICsJCW91dHB1dF92YWx1ZSA9ICoodW5zaWduZWQgaW50ICopIGRhdGE7Cj4gKwkJYnJlYWs7 Cj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9WT0xUQUdFX1NXSU5HOgo+ICsJCWZvcm1hdF9zdHJp bmcgPSAiVm9sdGFnZSBTd2luZyBMZXZlbDogICAldVxuIjsKPiArCQlvdXRwdXRfdmFsdWUgPSAq KHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKPiArCQlicmVhazsKPiArCWNhc2UgRFBfQ09ORklHX1BB UkFNX1BSRUVNUEhBU0lTOgo+ICsJCWZvcm1hdF9zdHJpbmcgPSAiUHJlZW1waGFzaXMgTGV2ZWw6 ICAgICAldVxuIjsKPiArCQlvdXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsK PiArCQlicmVhazsKPiArCWNhc2UgRFBfQ09ORklHX1BBUkFNX0hSRVM6Cj4gKwkJZm9ybWF0X3N0 cmluZyA9ICJIb3Jpem9udGFsIFJlc29sdXRpb246ICVkXG4iOwo+ICsJCW91dHB1dF92YWx1ZSA9 ICooaW50ICopIGRhdGE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9WUkVT Ogo+ICsJCWZvcm1hdF9zdHJpbmcgPSAiVmVydGljYWwgUmVzb2x1dGlvbjogICAlZFxuIjsKPiAr CQlvdXRwdXRfdmFsdWUgPSAqKGludCAqKSBkYXRhOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUF9D T05GSUdfUEFSQU1fQlBQOgo+ICsJCWZvcm1hdF9zdHJpbmcgPSAiQml0cyBQZXIgUGl4ZWw6ICAg ICAgICAldVxuIjsKPiArCQlvdXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsK PiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJZm9ybWF0X3N0cmluZyA9IE5VTEw7Cj4gKwkJ YnJlYWs7Cj4gKwl9Cj4gKwo+ICsJaWYgKGZvcm1hdF9zdHJpbmcgIT0gTlVMTCAmJiBmb3JfcGFy YW0gIT0gRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUikKPiArCQlzZXFfcHJpbnRmKG0sIGZvcm1h dF9zdHJpbmcsIG91dHB1dF92YWx1ZSk7Cj4gK30KPiArCj4gIC8qIEFzIHRoZSBkcm1fZGVidWdm c19pbml0KCkgcm91dGluZXMgYXJlIGNhbGxlZCBiZWZvcmUgZGV2LT5kZXZfcHJpdmF0ZSBpcwo+ ICAgKiBhbGxvY2F0ZWQgd2UgbmVlZCB0byBob29rIGludG8gdGhlIG1pbm9yIGZvciByZWxlYXNl LiAqLwo+ICBzdGF0aWMgaW50Cj4gQEAgLTM3MDEsNiArMzgxNywzNjAgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9kaXNwbGF5X2NyY19jdGxfZm9wcyA9IHsKPiAg CS53cml0ZSA9IGRpc3BsYXlfY3JjX2N0bF93cml0ZQo+ICB9Owo+ICAKPiArc3RhdGljIHZvaWQg ZHBfc2hvd19jb25maWcoc3RydWN0IHNlcV9maWxlICptLAo+ICsJCQkgICBzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpp bnRlbF9jb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiArCXN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50ZWxfY29ubmVjdG9yLT5lbmNvZGVy Owo+ICsJaW50IHBpcGVfYnBwLCBocmVzLCB2cmVzOwo+ICsJdWludDhfdCB2c1s0XSwgcGVbNF07 Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCWludCBpID0gMDsKPiArCj4g KwlpZiAoIWludGVsX2VuY29kZXIpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChpbnRlbF9lbmNv ZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9kcC0+bGFuZV9jb3VudDsgaSsrKSB7Cj4gKwkJdnNb aV0gPSBpbnRlbF9kcC0+dHJhaW5fc2V0W2ldCj4gKwkJCSYgRFBfVFJBSU5fVk9MVEFHRV9TV0lO R19NQVNLOwo+ICsJCXBlW2ldID0gKGludGVsX2RwLT50cmFpbl9zZXRbaV0KPiArCQkgICAgICAm IERQX1RSQUlOX1BSRV9FTVBIQVNJU19NQVNLKSA+Pgo+ICsJCQlEUF9UUkFJTl9QUkVfRU1QSEFT SVNfU0hJRlQ7Cj4gKwl9Cj4gKwo+ICsJLyogT3V0cHV0IG1vZGUgaW5mbyBvbmx5IGlmIGEgdmFs aWQgQ1JUQyBleGlzdHMgKi8KPiArCWlmIChpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpIHsKPiAr CQljcnRjID0gdG9faW50ZWxfY3J0YyhpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpOwo+ICsJCXBp cGVfYnBwID0gY3J0Yy0+Y29uZmlnLT5waXBlX2JwcDsKPiArCQltb2RlID0gJmNydGMtPmNvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCWhyZXMgPSBtb2RlLT5oZGlzcGxheTsKPiArCQl2 cmVzID0gbW9kZS0+dmRpc3BsYXk7Cj4gKwl9IGVsc2Ugewo+ICsJCXBpcGVfYnBwID0gMDsKPiAr CQlocmVzID0gdnJlcyA9IDA7Cj4gKwl9Cj4gKwo+ICsJZHBfcHJpbnRfc3RyaW5nKG0sCj4gKwkJ CURQX0NPTkZJR19QQVJBTV9DT05ORUNUT1IsCj4gKwkJCWNvbm5lY3Rvci0+bmFtZSk7Cj4gKwlk cF9wcmludF9zdHJpbmcobSwKPiArCQkJRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUl9JRCwKPiAr CQkJJmNvbm5lY3Rvci0+YmFzZS5pZCk7Cj4gKwlkcF9wcmludF9zdHJpbmcobSwKPiArCQkJRFBf Q09ORklHX1BBUkFNX0xJTktfUkFURSwKPiArCQkJJmludGVsX2RwLT5saW5rX2J3KTsKPiArCWRw X3ByaW50X3N0cmluZyhtLAo+ICsJCQlEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VOVCwKPiArCQkJ JmludGVsX2RwLT5sYW5lX2NvdW50KTsKPiArCWRwX3ByaW50X3N0cmluZyhtLAo+ICsJCQlEUF9D T05GSUdfUEFSQU1fVk9MVEFHRV9TV0lORywKPiArCQkJJnZzWzBdKTsKPiArCWRwX3ByaW50X3N0 cmluZyhtLAo+ICsJCQlEUF9DT05GSUdfUEFSQU1fUFJFRU1QSEFTSVMsCj4gKwkJCSZwZVswXSk7 Cj4gKwlkcF9wcmludF9zdHJpbmcobSwKPiArCQkJRFBfQ09ORklHX1BBUkFNX0hSRVMsCj4gKwkJ CSZocmVzKTsKPiArCWRwX3ByaW50X3N0cmluZyhtLAo+ICsJCQlEUF9DT05GSUdfUEFSQU1fVlJF UywKPiArCQkJJnZyZXMpOwo+ICsJZHBfcHJpbnRfc3RyaW5nKG0sCj4gKwkJCURQX0NPTkZJR19Q QVJBTV9CUFAsCj4gKwkJCSZwaXBlX2JwcCk7Cj4gK30KPiArCj4gK2VudW0gZHBfY29uZmlnX3Bh cmFtIGRwX2dldF9wYXJhbV90eXBlKGNoYXIgKmlucHV0X3N0cmluZykKPiArewo+ICsJZW51bSBk cF9jb25maWdfcGFyYW0gcGFyYW1fdHlwZSA9IERQX0NPTkZJR19QQVJBTV9JTlZBTElEOwo+ICsJ Y2hhciAqczsKPiArCWludCBpID0gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgRFBfUEFSQU1F VEVSX0NPVU5UOyBpKyspIHsKPiArCQlzID0gZHBfZ2V0X2NvbmZpZ19zdHIoaSk7Cj4gKwkJaWYg KHN0cm5jbXAoaW5wdXRfc3RyaW5nLCBzLAo+ICsJCQkgICAgc3RybGVuKHMpKSA9PSAwKSB7Cj4g KwkJCXBhcmFtX3R5cGUgPSAoZW51bSBkcF9jb25maWdfcGFyYW0pIGk7Cj4gKwkJCWJyZWFrOwo+ ICsJCX0KPiArCX0KPiArCXJldHVybiBwYXJhbV90eXBlOwo+ICt9Cj4gKwo+ICtpbnQgZHBfZ2V0 X3BhcmFtX3ZhbHVlKGVudW0gZHBfY29uZmlnX3BhcmFtIHBhcmFtLAo+ICsJCQkgICBjaGFyICpp bnB1dF9zdHJpbmcsCj4gKwkJCSAgIHZvaWQgKm91dHB1dF92YWx1ZSkKPiArewo+ICsJaW50IHN0 YXR1cyA9IDA7Cj4gKwl1bnNpZ25lZCBpbnQgKm91dF9wdHIgPSAodW5zaWduZWQgaW50ICopb3V0 cHV0X3ZhbHVlOwo+ICsJY2hhciAqaW5kZXggPSBpbnB1dF9zdHJpbmc7Cj4gKwo+ICsJc3dpdGNo IChwYXJhbSkgewo+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fQ09OTkVDVE9SOgo+ICsJCW91dHB1 dF92YWx1ZSA9IChjaGFyICopaW5kZXg7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERQX0NPTkZJR19Q QVJBTV9MSU5LX1JBVEU6Cj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9MQU5FX0NPVU5UOgo+ICsJ Y2FzZSBEUF9DT05GSUdfUEFSQU1fVk9MVEFHRV9TV0lORzoKPiArCWNhc2UgRFBfQ09ORklHX1BB UkFNX1BSRUVNUEhBU0lTOgo+ICsJCXN0YXR1cyA9IGtzdHJ0b2woaW5kZXgsIDE2LCAobG9uZyAq KW91dF9wdHIpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUF9DT05GSUdfUEFSQU1fSFJFUzoKPiAr CWNhc2UgRFBfQ09ORklHX1BBUkFNX1ZSRVM6Cj4gKwljYXNlIERQX0NPTkZJR19QQVJBTV9CUFA6 Cj4gKwkJc3RhdHVzID0ga3N0cnRvbChpbmRleCwgMTAsIChsb25nICopb3V0X3B0cik7Cj4gKwkJ YnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCS8qIFVuaGFuZGxlZCBjYXNlICovCj4gKwkJc3RhdHVz ID0gLUVJTlZBTDsKPiArCQkqb3V0X3B0ciA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIHN0YXR1czsKPiArfQo+ICsKPiAraW50IGRwX3Rva2VuaXplX2NvbmZpZyhjaGFyICpp bnB1dF9idWZmZXIsIGNoYXIgKm91dHB1dFtdKQo+ICt7Cj4gKwljaGFyICpiYXNlID0gaW5wdXRf YnVmZmVyLCAqaW5kZXgsICplbmQ7Cj4gKwlpbnQgbGluZV9jb3VudCA9IDA7Cj4gKwlpbnQgaSA9 IDAsIGxlbiA9IDA7Cj4gKwlpbnQgZG9uZSA9IDA7Cj4gKwo+ICsJaWYgKCFpbnB1dF9idWZmZXIp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJd2hpbGUgKCFkb25lKSB7Cj4gKwkJaW5kZXggPSBzdHJw YnJrKGJhc2UsICI6Iik7Cj4gKwkJaWYgKGluZGV4KSB7Cj4gKwkJCWxlbiA9IGluZGV4IC0gYmFz ZTsKPiArCQkJKmluZGV4ID0gJ1wwJzsKPiArCQkJaW5kZXgrKzsKPiArCQkJLyogU2F2ZSB0aGUg dHlwZSBzdHJpbmcgKi8KPiArCQkJb3V0cHV0W2ldID0gYmFzZTsKPiArCQkJaSsrOwo+ICsJCQls aW5lX2NvdW50Kys7Cj4gKwkJCWVuZCA9IHN0cnBicmsoaW5kZXgsICJcblwwIik7Cj4gKwkJCWlm IChlbmQpIHsKPiArCQkJCSplbmQgPSAnXDAnOwo+ICsJCQkJLyogRWF0IHVwIHdoaXRlc3BhY2Ug Ki8KPiArCQkJCXdoaWxlICgqaW5kZXggPD0gMHgyMCkKPiArCQkJCQlpbmRleCsrOwo+ICsJCQkJ b3V0cHV0W2ldID0gaW5kZXg7Cj4gKwkJCQlpKys7Cj4gKwkJCQlsaW5lX2NvdW50Kys7Cj4gKwkJ CX0gZWxzZQo+ICsJCQkJZG9uZSA9IDE7Cj4gKwkJCS8qIE1vdmUgdG8gdGhlIG5leHQgc2VjdGlv biBvZiB0aGUgc3RyaW5nICovCj4gKwkJCWJhc2UgPSBlbmQgKyAxOwo+ICsJCX0gZWxzZQo+ICsJ CQlkb25lID0gMTsKPiArCX0KPiArCXJldHVybiBsaW5lX2NvdW50Owo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGRwX3BhcnNlX2NvbmZpZyhjaGFyICppbnB1dF9idWZmZXIsCj4gKwkJCSAgIHNzaXpl X3QgYnVmZmVyX3NpemUsCj4gKwkJCSAgIHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gK3sK PiArCWludCBzdGF0dXMgPSAwOwo+ICsJY2hhciAqbGluZXNbTUFYX0RQX0NPTkZJR19MSU5FX0NP VU5UXTsKPiArCWludCBpID0gMDsKPiArCXN0cnVjdCBkcF9jb25maWcgcGFybXNbRFBfUEFSQU1F VEVSX0NPVU5UXTsKPiArCWludCBsaW5lX2NvdW50ID0gMDsKPiArCWNoYXIgKmJ1ZmZlciA9IGlu cHV0X2J1ZmZlcjsKPiArCWVudW0gZHBfY29uZmlnX3BhcmFtIHBhcm1fdHlwZTsKPiArCXVuc2ln bmVkIGxvbmcgcGFybV92YWx1ZTsKPiArCj4gKwlsaW5lX2NvdW50ID0gZHBfdG9rZW5pemVfY29u ZmlnKGJ1ZmZlciwgbGluZXMpOwo+ICsKPiArCWlmIChsaW5lX2NvdW50ID09IDApIHsKPiArCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBsaW5lcyB0byBwcm9jZXNzXG4iKTsKPiArCQlyZXR1cm4gMDsK PiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbGluZV9jb3VudDsgaSArPSAyKSB7Cj4gKwkJ cGFybV90eXBlID0gZHBfZ2V0X3BhcmFtX3R5cGUobGluZXNbaV0pOwo+ICsJCWlmIChwYXJtX3R5 cGUgIT0gRFBfQ09ORklHX1BBUkFNX0lOVkFMSUQpIHsKPiArCQkJc3RhdHVzID0gZHBfZ2V0X3Bh cmFtX3ZhbHVlKHBhcm1fdHlwZSwKPiArCQkJCQkJCWxpbmVzW2krMV0sCj4gKwkJCQkJCQkmcGFy bV92YWx1ZSk7Cj4gKwkJCWlmIChzdGF0dXMgPT0gMCkgewo+ICsJCQkJcGFybXNbcGFybV90eXBl XS50eXBlID0gcGFybV90eXBlOwo+ICsJCQkJcGFybXNbcGFybV90eXBlXS52YWx1ZSA9IHBhcm1f dmFsdWU7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKHBhcm1zW0RQX0NPTkZJR19Q QVJBTV9MSU5LX1JBVEVdLnZhbHVlID09IDB4MDYgfHwKPiArCSAgICBwYXJtc1tEUF9DT05GSUdf UEFSQU1fTElOS19SQVRFXS52YWx1ZSA9PSAweDBhIHx8Cj4gKwkgICAgcGFybXNbRFBfQ09ORklH X1BBUkFNX0xJTktfUkFURV0udmFsdWUgPT0gMHgxNCkgewo+ICsJCWludGVsX2RwLT5jb21wbGlh bmNlX2NvbmZpZy5saW5rX3JhdGUgPQo+ICsJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1fTElOS19S QVRFXS52YWx1ZTsKPiArCX0gZWxzZQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChw YXJtc1tEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VOVF0udmFsdWUgPT0gMHgwMSB8fAo+ICsJICAg IHBhcm1zW0RQX0NPTkZJR19QQVJBTV9MQU5FX0NPVU5UXS52YWx1ZSA9PSAweDAyIHx8Cj4gKwkg ICAgcGFybXNbRFBfQ09ORklHX1BBUkFNX0xBTkVfQ09VTlRdLnZhbHVlID09IDB4MDQpIHsKPiAr CQlpbnRlbF9kcC0+Y29tcGxpYW5jZV9jb25maWcubGFuZV9jb3VudCA9Cj4gKwkJCXBhcm1zW0RQ X0NPTkZJR19QQVJBTV9MQU5FX0NPVU5UXS52YWx1ZTsKPiArCX0gZWxzZQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1fVk9MVEFHRV9TV0lOR10u dmFsdWUgPD0gMHgwMyAmJgo+ICsJICAgIHBhcm1zW0RQX0NPTkZJR19QQVJBTV9WT0xUQUdFX1NX SU5HXS52YWx1ZSA+PSAweDAwKSB7Cj4gKwkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfY29uZmlnLnZz d2luZ19sZXZlbCA9Cj4gKwkJCXBhcm1zW0RQX0NPTkZJR19QQVJBTV9WT0xUQUdFX1NXSU5HXS52 YWx1ZTsKPiArCX0gZWxzZQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChwYXJtc1tE UF9DT05GSUdfUEFSQU1fUFJFRU1QSEFTSVNdLnZhbHVlIDw9IDB4MDMgJiYKPiArCSAgICBwYXJt c1tEUF9DT05GSUdfUEFSQU1fUFJFRU1QSEFTSVNdLnZhbHVlID49IDB4MDApIHsKPiArCQlpbnRl bF9kcC0+Y29tcGxpYW5jZV9jb25maWcucHJlZW1wX2xldmVsID0KPiArCQkJcGFybXNbRFBfQ09O RklHX1BBUkFNX1BSRUVNUEhBU0lTXS52YWx1ZTsKPiArCX0gZWxzZQo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsKPiArCWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1fQlBQXS52YWx1ZSA9PSAxOCB8 fAo+ICsJICAgIHBhcm1zW0RQX0NPTkZJR19QQVJBTV9CUFBdLnZhbHVlID09IDI0IHx8Cj4gKwkg ICAgcGFybXNbRFBfQ09ORklHX1BBUkFNX0JQUF0udmFsdWUgPT0gMzAgfHwKPiArCSAgICBwYXJt c1tEUF9DT05GSUdfUEFSQU1fQlBQXS52YWx1ZSA9PSAzNikgewo+ICsJCWludGVsX2RwLT5jb21w bGlhbmNlX2NvbmZpZy5iaXRzX3Blcl9waXhlbCA9Cj4gKwkJCXBhcm1zW0RQX0NPTkZJR19QQVJB TV9QUkVFTVBIQVNJU10udmFsdWU7Cj4gKwl9IGVsc2UKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr Cj4gKwlpZiAocGFybXNbRFBfQ09ORklHX1BBUkFNX0hSRVNdLnZhbHVlID4gMCAmJgo+ICsJICAg IHBhcm1zW0RQX0NPTkZJR19QQVJBTV9IUkVTXS52YWx1ZSA8PSA4MTkyKSB7Cj4gKwkJaW50ZWxf ZHAtPmNvbXBsaWFuY2VfY29uZmlnLmhyZXMgPQo+ICsJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1f SFJFU10udmFsdWU7Cj4gKwl9IGVsc2UKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAo cGFybXNbRFBfQ09ORklHX1BBUkFNX1ZSRVNdLnZhbHVlID4gMCAmJgo+ICsJICAgIHBhcm1zW0RQ X0NPTkZJR19QQVJBTV9WUkVTXS52YWx1ZSA8PSA4MTkyKSB7Cj4gKwkJaW50ZWxfZHAtPmNvbXBs aWFuY2VfY29uZmlnLnZyZXMgPQo+ICsJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1fVlJFU10udmFs dWU7Cj4gKwl9IGVsc2UKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlyZXR1cm4gc3RhdHVz Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGk5MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0bF9zaG93 KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IG0tPnByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y Owo+ICsJc3RydWN0IGxpc3RfaGVhZCAqY29ubmVjdG9yX2xpc3QgPSAmZGV2LT5tb2RlX2NvbmZp Zy5jb25uZWN0b3JfbGlzdDsKPiArCj4gKwlpZiAoIWRldikKPiArCQlyZXR1cm4gLUVOT0RFVjsK PiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgY29ubmVjdG9yX2xpc3QsIGhl YWQpIHsKPiArCj4gKwkJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0KPiArCQkgICAg RFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJ aWYgKGNvbm5lY3Rvci0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSB7Cj4g KwkJCWRwX3Nob3dfY29uZmlnKG0sIGNvbm5lY3Rvcik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZHBf cHJpbnRfc3RyaW5nKG0sCj4gKwkJCQkJRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUiwKPiArCQkJ CQljb25uZWN0b3ItPm5hbWUpOwo+ICsJCQlkcF9wcmludF9zdHJpbmcobSwKPiArCQkJCQlEUF9D T05GSUdfUEFSQU1fQ09OTkVDVE9SX0lELAo+ICsJCQkJCSZjb25uZWN0b3ItPmJhc2UuaWQpOwo+ ICsJCQlzZXFfcHV0cyhtLCAiZGlzY29ubmVjdGVkXG4iKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkxNV9kaXNwbGF5cG9ydF9jb25maWdf Y3RsX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZmlsZSAq ZmlsZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlub2RlLT5pX3ByaXZhdGU7 Cj4gKwo+ICsJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVfZGlzcGxheXBvcnRfY29uZmln X2N0bF9zaG93LCBkZXYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBpOTE1X2Rpc3BsYXlw b3J0X2NvbmZpZ19jdGxfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4gKwkJCQkJICAgIGNvbnN0 IGNoYXIgX191c2VyICp1YnVmLAo+ICsJCQkJCSAgICBzaXplX3QgbGVuLCBsb2ZmX3QgKm9mZnAp Cj4gK3sKPiArCWNoYXIgKmlucHV0X2J1ZmZlcjsKPiArCWludCBzdGF0dXMgPSAwOwo+ICsJc3Ry dWN0IHNlcV9maWxlICptOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpjb25uZWN0b3Jf bGlzdDsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4gKwo+ICsJbSA9IGZpbGUtPnBy aXZhdGVfZGF0YTsKPiArCWlmICghbSkgewo+ICsJCXN0YXR1cyA9IC1FTk9ERVY7Cj4gKwkJcmV0 dXJuIHN0YXR1czsKPiArCX0KPiArCWRldiA9IG0tPnByaXZhdGU7Cj4gKwo+ICsJaWYgKCFkZXYp IHsKPiArCQlzdGF0dXMgPSAtRU5PREVWOwo+ICsJCXJldHVybiBzdGF0dXM7Cj4gKwl9Cj4gKwlj b25uZWN0b3JfbGlzdCA9ICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0Owo+ICsKPiAr CWlmIChsZW4gPT0gMCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlpbnB1dF9idWZmZXIgPSBrbWFs bG9jKGxlbiArIDEsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFpbnB1dF9idWZmZXIpCj4gKwkJcmV0 dXJuIC1FTk9NRU07Cj4gKwo+ICsJaWYgKGNvcHlfZnJvbV91c2VyKGlucHV0X2J1ZmZlciwgdWJ1 ZiwgbGVuKSkgewo+ICsJCXN0YXR1cyA9IC1FRkFVTFQ7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4g Kwo+ICsJaW5wdXRfYnVmZmVyW2xlbl0gPSAnXDAnOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiQ29w aWVkICVkIGJ5dGVzIGZyb20gdXNlclxuIiwgKHVuc2lnbmVkIGludClsZW4pOwo+ICsKPiArCWxp c3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCBjb25uZWN0b3JfbGlzdCwgaGVhZCkgewo+ICsJ CWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09Cj4gKwkJICAgIERSTV9NT0RFX0NPTk5F Q1RPUl9EaXNwbGF5UG9ydCAmJgo+ICsJCSAgICBjb25uZWN0b3ItPnN0YXR1cyA9PSBjb25uZWN0 b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgewo+ICsJCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChj b25uZWN0b3ItPmVuY29kZXIpOwo+ICsJCQlzdGF0dXMgPSBkcF9wYXJzZV9jb25maWcoaW5wdXRf YnVmZmVyLCBsZW4sIGludGVsX2RwKTsKPiArCQkJaWYgKHN0YXR1cyA8IDApCj4gKwkJCQlnb3Rv IG91dDsKPiArCQl9Cj4gKwl9Cj4gK291dDoKPiArCWtmcmVlKGlucHV0X2J1ZmZlcik7Cj4gKwlp ZiAoc3RhdHVzIDwgMCkKPiArCQlyZXR1cm4gc3RhdHVzOwo+ICsKPiArCSpvZmZwICs9IGxlbjsK PiArCXJldHVybiBsZW47Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIGk5MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0bF9mb3BzID0gewo+ICsJLm93bmVyID0g VEhJU19NT0RVTEUsCj4gKwkub3BlbiA9IGk5MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0bF9vcGVu LAo+ICsJLnJlYWQgPSBzZXFfcmVhZCwKPiArCS5sbHNlZWsgPSBzZXFfbHNlZWssCj4gKwkucmVs ZWFzZSA9IHNpbmdsZV9yZWxlYXNlLAo+ICsJLndyaXRlID0gaTkxNV9kaXNwbGF5cG9ydF9jb25m aWdfY3RsX3dyaXRlCj4gK307Cj4gKwo+ICBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3Ry dWN0IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKPiAgewo+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IG0tPnByaXZhdGU7Cj4gQEAgLTQ0NTAsNiArNDkyMCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKPiAgCXsiaTkxNV9zcHJfd21fbGF0 ZW5jeSIsICZpOTE1X3Nwcl93bV9sYXRlbmN5X2ZvcHN9LAo+ICAJeyJpOTE1X2N1cl93bV9sYXRl bmN5IiwgJmk5MTVfY3VyX3dtX2xhdGVuY3lfZm9wc30sCj4gIAl7Imk5MTVfZmJjX2ZhbHNlX2Nv bG9yIiwgJmk5MTVfZmJjX2ZjX2ZvcHN9LAo+ICsJeyJpOTE1X2Rpc3BsYXlwb3J0X2NvbmZpZ19j dGwiLCAmaTkxNV9kaXNwbGF5cG9ydF9jb25maWdfY3RsX2ZvcHN9Cj4gIH07Cj4gIAo+ICB2b2lk IGludGVsX2Rpc3BsYXlfY3JjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDc0YjMwYzEuLmM4MTNkM2MgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IEBAIC01OTIsNiArNTkyLDE4IEBAIHN0cnVjdCBpbnRlbF9oZG1p IHsKPiAgc3RydWN0IGludGVsX2RwX21zdF9lbmNvZGVyOwo+ICAjZGVmaW5lIERQX01BWF9ET1dO U1RSRUFNX1BPUlRTCQkweDEwCj4gIAo+ICtzdHJ1Y3QgaW50ZWxfZHBfbGlua19jb25maWcgewo+ ICsJdWludDhfdCBsYW5lX2NvdW50Owo+ICsJdWludDhfdCBsaW5rX3JhdGU7Cj4gKwl1aW50OF90 IHZzd2luZ19sZXZlbDsKPiArCXVpbnQ4X3QgcHJlZW1wX2xldmVsOwo+ICsJdWludDMyX3QgaHJl czsKPiArCXVpbnQzMl90IHZyZXM7Cj4gKwl1aW50OF90IGJpdHNfcGVyX3BpeGVsOwo+ICsJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmNvbXBsaWFuY2VfbW9kZTsKPiArCWNoYXIgY29ubmVjdG9y X25hbWVbMTJdOwo+ICt9Owo+ICsKPiAgc3RydWN0IGludGVsX2RwIHsKPiAgCXVpbnQzMl90IG91 dHB1dF9yZWc7Cj4gIAl1aW50MzJfdCBhdXhfY2hfY3RsX3JlZzsKPiBAQCAtNjUxLDYgKzY2Myw3 IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAkvKiBEaXNwbGF5cG9ydCBjb21wbGlhbmNlIHRlc3Rp bmcgKi8KPiAgCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X2RhdGE7Cj4gIAlib29sIGNv bXBsaWFuY2VfdGVzdGluZ19hY3RpdmU7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHBfbGlua19jb25maWcg Y29tcGxpYW5jZV9jb25maWc7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 IHsKPiAtLSAKPiAxLjkuMQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK