From mboxrd@z Thu Jan 1 00:00:00 1970 From: Danilo Cesar Lemes de Paula Subject: Re: [PATCH 01/15] vga_switcheroo: Document _ALL_ the things! Date: Thu, 17 Sep 2015 13:34:54 -0300 Message-ID: <55FAEBAE.9050302@collabora.co.uk> References: <05cc4f74df634d84d4f461ee9f0e9d9b2908cf10.1442497843.git.lukas@wunner.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [93.93.135.160]) by gabe.freedesktop.org (Postfix) with ESMTPS id 97BCC6E1D1 for ; Thu, 17 Sep 2015 09:35:05 -0700 (PDT) In-Reply-To: <05cc4f74df634d84d4f461ee9f0e9d9b2908cf10.1442497843.git.lukas@wunner.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lukas Wunner , dri-devel@lists.freedesktop.org Cc: Jonathan Corbet List-Id: dri-devel@lists.freedesktop.org T24gMDgvMjMvMjAxNSAxMDoxOCBBTSwgTHVrYXMgV3VubmVyIHdyb3RlOgo+IFRoaXMgYWRkcyBh biAiT3ZlcnZpZXciIERPQyBzZWN0aW9uIHBsdXMgdHdvIERPQyBzZWN0aW9ucyBmb3IgdGhlIG1v ZGVzCj4gb2YgdXNlICgiTWFudWFsIHN3aXRjaGluZyBhbmQgbWFudWFsIHBvd2VyIGNvbnRyb2wi IGFuZCAiRHJpdmVyIHBvd2VyCj4gY29udHJvbCIpLgo+IAo+IEFsc28gaW5jbHVkZWQgaXMga2Vy bmVsLWRvYyBmb3IgYWxsIHB1YmxpYyBmdW5jdGlvbnMsIHN0cnVjdHMgYW5kIGVudW1zLgoKUmVn YXJkaW5nIHRoZSBtYXJrZG93biBzdXBwb3J0LCBpdCBkb2VzIG1ha2VzIHNlbnNlLgpKdXN0IGEg c21hbGwgY29tbWVudCBpbiB0aGUgbWlkZGxlIHRvIGJlIHN1cmUgdGhhdCByZXF1aXJlZCBlZmZl Y3QgaXMKYWNoaWV2ZWQuCgoKRGFuaWxvIENlc2FyCgoKPgo+IFNpZ25lZC1vZmYtYnk6IEx1a2Fz IFd1bm5lciA8bHVrYXNAd3VubmVyLmRlPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS92Z2EvdmdhX3N3 aXRjaGVyb28uYyB8IDI4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K PiAgaW5jbHVkZS9saW51eC92Z2Ffc3dpdGNoZXJvby5oICAgfCAgODUgKysrKysrKysrKystCj4g IDIgZmlsZXMgY2hhbmdlZCwgMzUzIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYyBiL2RyaXZlcnMv Z3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jCj4gaW5kZXggMjEwNjA2Ni4uYjE5YTcyZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jCj4gQEAgLTEsMjAgKzEsMzEgQEAKPiAgLyoKPiArICog dmdhX3N3aXRjaGVyb28uYyAtIFN1cHBvcnQgZm9yIGxhcHRvcCB3aXRoIGR1YWwgR1BVIHVzaW5n IG9uZSBzZXQgb2Ygb3V0cHV0cwo+ICsgKgo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgUmVkIEhh dCBJbmMuCj4gICAqIEF1dGhvciA6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Cj4g ICAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBMdWthcyBXdW5uZXIgPGx1a2FzQHd1bm5lci5k ZT4KPiAgICoKPiAtICogTGljZW5zZWQgdW5kZXIgR1BMdjIKPiArICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gICAqCj4g LSAqIHZnYV9zd2l0Y2hlcm9vLmMgLSBTdXBwb3J0IGZvciBsYXB0b3Agd2l0aCBkdWFsIEdQVSB1 c2luZyBvbmUgc2V0IG9mIG91dHB1dHMKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICAgKgo+IC0gKiBTd2l0Y2hlciBpbnRlcmZh Y2UgLSBtZXRob2RzIHJlcXVpcmUgZm9yIEFUUFggYW5kIERDTQo+IC0gKiAtIHN3aXRjaHRvIC0g dGhpcyB0aHJvd3MgdGhlIG91dHB1dCBNVVggc3dpdGNoCj4gLSAqIC0gZGlzY3JldGVfc2V0X3Bv d2VyIC0gc2V0cyB0aGUgcG93ZXIgc3RhdGUgZm9yIHRoZSBkaXNjcmV0ZSBjYXJkCj4gKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUgo+ICsgKiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gICAqCj4gLSAq IEdQVSBkcml2ZXIgaW50ZXJmYWNlCj4gLSAqIC0gc2V0X2dwdV9zdGF0ZSAtIHRoaXMgc2hvdWxk IGRvIHRoZSBlcXVpdiBvZiBzL3IgZm9yIHRoZSBjYXJkCj4gLSAqICAgICAgICAgICAgICAgICAt IHRoaXMgc2hvdWxkICpub3QqIHNldCB0aGUgZGlzY3JldGUgcG93ZXIgc3RhdGUKCkRpZCB5b3Ug Y2hlY2sgaWYgdGhpcyBjcmVhdGVzIHRoZSBkZXNpcmVkIGZvcm1hdD8gKGllOiBEb2Vzbid0IGNy ZWF0ZSBhCjxjb2RlPiBibG9jaykuCgo+IC0gKiAtIHN3aXRjaF9jaGVjayAgLSBjaGVjayBpZiB0 aGUgZGV2aWNlIGlzIGluIGEgcG9zaXRpb24gdG8gc3dpdGNoIG5vdwo+ICAgKi8KPiAgCj4gICNk ZWZpbmUgcHJfZm10KGZtdCkgInZnYV9zd2l0Y2hlcm9vOiAiIGZtdAo+IEBAIC0zMyw2ICs0NCw2 MSBAQAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L3ZnYWFyYi5oPgo+ICAKPiArLyoqCj4gKyAqIERP QzogT3ZlcnZpZXcKPiArICoKPiArICogdmdhX3N3aXRjaGVyb28gaXMgdGhlIExpbnV4IHN1YnN5 c3RlbSBmb3IgbGFwdG9wIGh5YnJpZCBncmFwaGljcy4KPiArICogVGhlc2UgY29tZSBpbiB0d28g Zmxhdm9yczoKPiArICoKPiArICogKiBtdXhlZDogRHVhbCBHUFVzIHdpdGggYSBtdWx0aXBsZXhl ciBjaGlwIHRvIHN3aXRjaCBvdXRwdXRzIGJldHdlZW4gR1BVcy4KPiArICogKiBtdXhsZXNzOiBE dWFsIEdQVXMgYnV0IG9ubHkgb25lIG9mIHRoZW0gaXMgY29ubmVjdGVkIHRvIG91dHB1dHMuCj4g KyAqIAlUaGUgb3RoZXIgb25lIGlzIG1lcmVseSB1c2VkIHRvIG9mZmxvYWQgcmVuZGVyaW5nLCBp dHMgcmVzdWx0cwo+ICsgKiAJYXJlIGNvcGllZCBvdmVyIFBDSWUgaW50byB0aGUgZnJhbWVidWZm ZXIuIE9uIExpbnV4IHRoaXMgaXMKPiArICogCXN1cHBvcnRlZCB3aXRoIERSSSBQUklNRS4KPiAr ICoKPiArICogSHlicmlkIGdyYXBoaWNzIHN0YXJ0ZWQgdG8gYXBwZWFyIGluIHRoZSBsYXRlIE5h dWdodGllcyBhbmQgd2VyZSBpbml0aWFsbHkKPiArICogYWxsIG11eGVkLiBOZXdlciBsYXB0b3Bz IG1vdmVkIHRvIGEgbXV4bGVzcyBhcmNoaXRlY3R1cmUgZm9yIGNvc3QgcmVhc29ucy4KPiArICog QSBub3RhYmxlIGV4Y2VwdGlvbiBpcyB0aGUgTWFjQm9vayBQcm8gd2hpY2ggY29udGludWVzIHRv IHVzZSBhIG11eC4KPiArICogTXV4ZXMgY29tZSB3aXRoIHZhcnlpbmcgY2FwYWJpbGl0aWVzOiBT b21lIHN3aXRjaCBvbmx5IHRoZSBwYW5lbCwgb3RoZXJzCj4gKyAqIGNhbiBhbHNvIHN3aXRjaCBl eHRlcm5hbCBkaXNwbGF5cy4gU29tZSBzd2l0Y2ggYWxsIGRpc3BsYXkgcGlucyBhdCBvbmNlCj4g KyAqIHdoaWxlIG90aGVycyBjYW4gc3dpdGNoIGp1c3QgdGhlIEREQyBsaW5lcy4gKFRvIGFsbG93 IEVESUQgcHJvYmluZwo+ICsgKiBmb3IgdGhlIGluYWN0aXZlIEdQVS4pIEFsc28sIG11eGVzIGFy ZSBvZnRlbiB1c2VkIHRvIGN1dCBwb3dlciB0byB0aGUKPiArICogZGlzY3JldGUgR1BVIHdoaWxl IGl0IGlzIG5vdCB1c2VkLgo+ICsgKgo+ICsgKiBEUk0gZHJpdmVycyByZWdpc3RlciBHUFVzIHdp dGggdmdhX3N3aXRjaGVyb28sIHRoZXNlIGFyZSBoZXJldG9mb3J0aCBjYWxsZWQKPiArICogY2xp ZW50cy4gVGhlIG11eCBpcyBjYWxsZWQgdGhlIGhhbmRsZXIuIE11eGxlc3MgbWFjaGluZXMgYWxz byByZWdpc3RlciBhCj4gKyAqIGhhbmRsZXIgdG8gY29udHJvbCB0aGUgcG93ZXIgc3RhdGUgb2Yg dGhlIGRpc2NyZXRlIEdQVSwgaXRzIC0+c3dpdGNodG8KPiArICogY2FsbGJhY2sgaXMgYSBuby1v cCBmb3Igb2J2aW91cyByZWFzb25zLiBUaGUgZGlzY3JldGUgR1BVIGlzIG9mdGVuIGVxdWlwcGVk Cj4gKyAqIHdpdGggYW4gSERBIGNvbnRyb2xsZXIgZm9yIHRoZSBIRE1JL0RQIGF1ZGlvIHNpZ25h bCwgdGhpcyB3aWxsIGFsc28KPiArICogcmVnaXN0ZXIgYXMgYSBjbGllbnQgc28gdGhhdCB2Z2Ff c3dpdGNoZXJvbyBjYW4gdGFrZSBjYXJlIG9mIHRoZSBjb3JyZWN0Cj4gKyAqIHN1c3BlbmQvcmVz dW1lIG9yZGVyIHdoZW4gY2hhbmdpbmcgdGhlIGRpc2NyZXRlIEdQVSdzIHBvd2VyIHN0YXRlLiBJ biB0b3RhbAo+ICsgKiB0aGVyZSBjYW4gdGh1cyBiZSB1cCB0byB0aHJlZSBjbGllbnRzOiBUd28g dmdhIGNsaWVudHMgKEdQVXMpIGFuZCBvbmUgYXVkaW8KPiArICogY2xpZW50IChvbiB0aGUgZGlz Y3JldGUgR1BVKS4gVGhlIGNvZGUgaXMgbW9zdGx5IHByZXBhcmVkIHRvIHN1cHBvcnQKPiArICog bWFjaGluZXMgd2l0aCBtb3JlIHRoYW4gdHdvIEdQVXMgc2hvdWxkIHRoZXkgYmVjb21lIGF2YWls YWJsZS4KPiArICogVGhlIEdQVSB0byB3aGljaCB0aGUgb3V0cHV0cyBhcmUgY3VycmVudGx5IHN3 aXRjaGVkIGlzIGNhbGxlZCB0aGUKPiArICogYWN0aXZlIGNsaWVudCBpbiB2Z2Ffc3dpdGNoZXJv byBwYXJsYW5jZS4gVGhlIEdQVSBub3QgaW4gdXNlIGlzIHRoZQo+ICsgKiBpbmFjdGl2ZSBjbGll bnQuCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnQg LSByZWdpc3RlcmVkIGNsaWVudAo+ICsgKiBAcGRldjogY2xpZW50IHBjaSBkZXZpY2UKPiArICog QGZiX2luZm86IGZyYW1lYnVmZmVyIHRvIHdoaWNoIGNvbnNvbGUgaXMgcmVtYXBwZWQgb24gc3dp dGNoaW5nCj4gKyAqIEBwd3Jfc3RhdGU6IGN1cnJlbnQgcG93ZXIgc3RhdGUKPiArICogQG9wczog Y2xpZW50IGNhbGxiYWNrcwo+ICsgKiBAaWQ6IGNsaWVudCBpZGVudGlmaWVyLCBzZWUgZW51bSB2 Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQuCj4gKyAqIAlEZXRlcm1pbmluZyB0aGUgaWQgcmVxdWly ZXMgdGhlIGhhbmRsZXIsIHNvIEdQVXMgYXJlIGluaXRpYWxseQo+ICsgKiAJYXNzaWduZWQgLTEg YW5kIGxhdGVyIGdpdmVuIHRoZWlyIHRydWUgaWQgaW4gdmdhX3N3aXRjaGVyb29fZW5hYmxlKCkK PiArICogQGFjdGl2ZTogd2hldGhlciB0aGUgb3V0cHV0cyBhcmUgY3VycmVudGx5IHN3aXRjaGVk IHRvIHRoaXMgY2xpZW50Cj4gKyAqIEBkcml2ZXJfcG93ZXJfY29udHJvbDogd2hldGhlciBwb3dl ciBzdGF0ZSBpcyBjb250cm9sbGVkIGJ5IHRoZSBkcml2ZXIncwo+ICsgKiAJcnVudGltZSBwbS4g SWYgdHJ1ZSwgd3JpdGluZyBPTiBhbmQgT0ZGIHRvIHRoZSB2Z2Ffc3dpdGNoZXJvbyBkZWJ1Z2Zz Cj4gKyAqIAlpbnRlcmZhY2UgaXMgYSBuby1vcCBzbyBhcyBub3QgdG8gaW50ZXJmZXJlIHdpdGgg cnVudGltZSBwbQo+ICsgKiBAbGlzdDogY2xpZW50IGxpc3QKPiArICoKPiArICogUmVnaXN0ZXJl ZCBjbGllbnQuIEEgY2xpZW50IGNhbiBiZSBlaXRoZXIgYSBHUFUgb3IgYW4gYXVkaW8gZGV2aWNl IG9uIGEgR1BVLgo+ICsgKiBGb3IgYXVkaW8gY2xpZW50cywgdGhlIEBmYl9pbmZvLCBAYWN0aXZl IGFuZCBAZHJpdmVyX3Bvd2VyX2NvbnRyb2wgbWVtYmVycwo+ICsgKiBhcmUgYm9ndXMuCj4gKyAq Lwo+ICBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50IHsKPiAgCXN0cnVjdCBwY2lfZGV2ICpw ZGV2Owo+ICAJc3RydWN0IGZiX2luZm8gKmZiX2luZm87Cj4gQEAgLTQ0LDEwICsxMTAsMjggQEAg c3RydWN0IHZnYV9zd2l0Y2hlcm9vX2NsaWVudCB7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 Cj4gIH07Cj4gIAo+ICsvKgo+ICsgKiBwcm90ZWN0cyBhY2Nlc3MgdG8gc3RydWN0IHZnYXNyX3By aXYKPiArICovCj4gIHN0YXRpYyBERUZJTkVfTVVURVgodmdhc3JfbXV0ZXgpOwo+ICAKPiArLyoq Cj4gKyAqIHN0cnVjdCB2Z2Fzcl9wcml2IC0gdmdhX3N3aXRjaGVyb28gcHJpdmF0ZSBkYXRhCj4g KyAqIEBhY3RpdmU6IHdoZXRoZXIgdmdhX3N3aXRjaGVyb28gaXMgZW5hYmxlZC4KPiArICogCVBy ZXJlcXVpc2l0ZSBpcyB0aGUgcmVnaXN0cmF0aW9uIG9mIHR3byBHUFVzIGFuZCBhIGhhbmRsZXIK PiArICogQGRlbGF5ZWRfc3dpdGNoX2FjdGl2ZTogd2hldGhlciBhIGRlbGF5ZWQgc3dpdGNoIGlz IHBlbmRpbmcKPiArICogQGRlbGF5ZWRfY2xpZW50X2lkOiBjbGllbnQgdG8gd2hpY2ggYSBkZWxh eWVkIHN3aXRjaCBpcyBwZW5kaW5nCj4gKyAqIEBkZWJ1Z2ZzX3Jvb3Q6IGRpcmVjdG9yeSBmb3Ig dmdhX3N3aXRjaGVyb28gZGVidWdmcyBpbnRlcmZhY2UKPiArICogQHN3aXRjaF9maWxlOiBmaWxl IGZvciB2Z2Ffc3dpdGNoZXJvbyBkZWJ1Z2ZzIGludGVyZmFjZQo+ICsgKiBAcmVnaXN0ZXJlZF9j bGllbnRzOiBudW1iZXIgb2YgcmVnaXN0ZXJlZCBHUFVzCj4gKyAqIAkoY291bnRpbmcgb25seSB2 Z2EgY2xpZW50cywgbm90IGF1ZGlvIGNsaWVudHMpCj4gKyAqIEBjbGllbnRzOiBsaXN0IG9mIHJl Z2lzdGVyZWQgY2xpZW50cwo+ICsgKiBAaGFuZGxlcjogcmVnaXN0ZXJlZCBoYW5kbGVyCj4gKyAq Cj4gKyAqIHZnYV9zd2l0Y2hlcm9vIHByaXZhdGUgZGF0YS4gQ3VycmVudGx5IG9ubHkgb25lIHZn YV9zd2l0Y2hlcm9vIGluc3RhbmNlCj4gKyAqIHBlciBzeXN0ZW0gaXMgc3VwcG9ydGVkLgo+ICsg Ki8KPiAgc3RydWN0IHZnYXNyX3ByaXYgewo+IC0KPiAgCWJvb2wgYWN0aXZlOwo+ICAJYm9vbCBk ZWxheWVkX3N3aXRjaF9hY3RpdmU7Cj4gIAllbnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9pZCBk ZWxheWVkX2NsaWVudF9pZDsKPiBAQCAtMTAzLDYgKzE4NywxNSBAQCBzdGF0aWMgdm9pZCB2Z2Ff c3dpdGNoZXJvb19lbmFibGUodm9pZCkKPiAgCXZnYXNyX3ByaXYuYWN0aXZlID0gdHJ1ZTsKPiAg fQo+ICAKPiArLyoqCj4gKyAqIHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2hhbmRsZXIoKSAtIHJl Z2lzdGVyIGhhbmRsZXIKPiArICogQGhhbmRsZXI6IGhhbmRsZXIgY2FsbGJhY2tzCj4gKyAqCj4g KyAqIFJlZ2lzdGVyIGhhbmRsZXIuIEVuYWJsZSB2Z2Ffc3dpdGNoZXJvbyBpZiB0d28gdmdhIGNs aWVudHMgaGF2ZSBhbHJlYWR5Cj4gKyAqIHJlZ2lzdGVyZWQuCj4gKyAqCj4gKyAqIFJldHVybjog MCBvbiBzdWNjZXNzLCAtRUlOVkFMIGlmIGEgaGFuZGxlciB3YXMgYWxyZWFkeSByZWdpc3RlcmVk Lgo+ICsgKi8KPiAgaW50IHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2hhbmRsZXIoc3RydWN0IHZn YV9zd2l0Y2hlcm9vX2hhbmRsZXIgKmhhbmRsZXIpCj4gIHsKPiAgCW11dGV4X2xvY2soJnZnYXNy X211dGV4KTsKPiBAQCAtMTIxLDYgKzIxNCwxMSBAQCBpbnQgdmdhX3N3aXRjaGVyb29fcmVnaXN0 ZXJfaGFuZGxlcihzdHJ1Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciAqaGFuZGxlcikKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2hhbmRsZXIpOwo+ICAKPiAr LyoqCj4gKyAqIHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfaGFuZGxlcigpIC0gdW5yZWdpc3Rl ciBoYW5kbGVyCj4gKyAqCj4gKyAqIFVucmVnaXN0ZXIgaGFuZGxlci4gRGlzYWJsZSB2Z2Ffc3dp dGNoZXJvby4KPiArICovCj4gIHZvaWQgdmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9oYW5kbGVy KHZvaWQpCj4gIHsKPiAgCW11dGV4X2xvY2soJnZnYXNyX211dGV4KTsKPiBAQCAtMTY0LDYgKzI2 MiwxOSBAQCBzdGF0aWMgaW50IHJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqcGRldiwK PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICsvKioKPiArICogdmdhX3N3aXRjaGVyb29fcmVnaXN0 ZXJfY2xpZW50IC0gcmVnaXN0ZXIgdmdhIGNsaWVudAo+ICsgKiBAcGRldjogY2xpZW50IHBjaSBk ZXZpY2UKPiArICogQG9wczogY2xpZW50IGNhbGxiYWNrcwo+ICsgKiBAZHJpdmVyX3Bvd2VyX2Nv bnRyb2w6IHdoZXRoZXIgcG93ZXIgc3RhdGUgaXMgY29udHJvbGxlZCBieSB0aGUgZHJpdmVyJ3MK PiArICogCXJ1bnRpbWUgcG0KPiArICoKPiArICogUmVnaXN0ZXIgdmdhIGNsaWVudCAoR1BVKS4g RW5hYmxlIHZnYV9zd2l0Y2hlcm9vIGlmIGFub3RoZXIgR1BVIGFuZCBhCj4gKyAqIGhhbmRsZXIg aGF2ZSBhbHJlYWR5IHJlZ2lzdGVyZWQuIFRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgY2xpZW50IGlz IGFzc3VtZWQKPiArICogdG8gYmUgT04uCj4gKyAqCj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LCAtRU5PTUVNIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgo+ICsgKi8KPiAgaW50IHZnYV9z d2l0Y2hlcm9vX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPiAgCQkJCSAg IGNvbnN0IHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfb3BzICpvcHMsCj4gIAkJCQkgICBi b29sIGRyaXZlcl9wb3dlcl9jb250cm9sKQo+IEBAIC0xNzQsNiArMjg1LDE4IEBAIGludCB2Z2Ff c3dpdGNoZXJvb19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gIH0KPiAg RVhQT1JUX1NZTUJPTCh2Z2Ffc3dpdGNoZXJvb19yZWdpc3Rlcl9jbGllbnQpOwo+ICAKPiArLyoq Cj4gKyAqIHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2F1ZGlvX2NsaWVudCAtIHJlZ2lzdGVyIGF1 ZGlvIGNsaWVudAo+ICsgKiBAcGRldjogY2xpZW50IHBjaSBkZXZpY2UKPiArICogQG9wczogY2xp ZW50IGNhbGxiYWNrcwo+ICsgKiBAaWQ6IGNsaWVudCBpZGVudGlmaWVyLCBzZWUgZW51bSB2Z2Ff c3dpdGNoZXJvb19jbGllbnRfaWQKPiArICogQGFjdGl2ZTogd2hldGhlciB0aGUgYXVkaW8gZGV2 aWNlIGlzIGZ1bGx5IGluaXRpYWxpemVkCj4gKyAqCj4gKyAqIFJlZ2lzdGVyIGF1ZGlvIGNsaWVu dCAoYXVkaW8gZGV2aWNlIG9uIGEgR1BVKS4gVGhlIHBvd2VyIHN0YXRlIG9mIHRoZQo+ICsgKiBj bGllbnQgaXMgYXNzdW1lZCB0byBiZSBPTi4KPiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nl c3MsIC1FTk9NRU0gb24gbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCj4gKyAqLwo+ICBpbnQgdmdh X3N3aXRjaGVyb29fcmVnaXN0ZXJfYXVkaW9fY2xpZW50KHN0cnVjdCBwY2lfZGV2ICpwZGV2LAo+ ICAJCQkJCSBjb25zdCBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyAqb3BzLAo+ICAJ CQkJCSBpbnQgaWQsIGJvb2wgYWN0aXZlKQo+IEBAIC0yMTUsNiArMzM4LDE1IEBAIGZpbmRfYWN0 aXZlX2NsaWVudChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0K PiAgCj4gKy8qKgo+ICsgKiB2Z2Ffc3dpdGNoZXJvb19nZXRfY2xpZW50X3N0YXRlKCkgLSBvYnRh aW4gcG93ZXIgc3RhdGUgb2YgYSBnaXZlbiBjbGllbnQKPiArICogQHBkZXY6IGNsaWVudCBwY2kg ZGV2aWNlCj4gKyAqCj4gKyAqIE9idGFpbiBwb3dlciBzdGF0ZSBvZiBhIGdpdmVuIGNsaWVudCBh cyBzZWVuIGZyb20gdmdhX3N3aXRjaGVyb28uCj4gKyAqIFRoZSBmdW5jdGlvbiBpcyBvbmx5IGNh bGxlZCBmcm9tIGhkYV9pbnRlbC5jLgo+ICsgKgo+ICsgKiBSZXR1cm46IFBvd2VyIHN0YXRlLgo+ ICsgKi8KPiAgaW50IHZnYV9zd2l0Y2hlcm9vX2dldF9jbGllbnRfc3RhdGUoc3RydWN0IHBjaV9k ZXYgKnBkZXYpCj4gIHsKPiAgCXN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnQgKmNsaWVudDsK PiBAQCAtMjI4LDYgKzM2MCwxMiBAQCBpbnQgdmdhX3N3aXRjaGVyb29fZ2V0X2NsaWVudF9zdGF0 ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKHZnYV9zd2l0Y2hl cm9vX2dldF9jbGllbnRfc3RhdGUpOwo+ICAKPiArLyoqCj4gKyAqIHZnYV9zd2l0Y2hlcm9vX3Vu cmVnaXN0ZXJfY2xpZW50KCkgLSB1bnJlZ2lzdGVyIGNsaWVudAo+ICsgKiBAcGRldjogY2xpZW50 IHBjaSBkZXZpY2UKPiArICoKPiArICogVW5yZWdpc3RlciBjbGllbnQuIERpc2FibGUgdmdhX3N3 aXRjaGVyb28gaWYgdGhpcyBpcyBhIHZnYSBjbGllbnQgKEdQVSkuCj4gKyAqLwo+ICB2b2lkIHZn YV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICB7 Cj4gIAlzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50ICpjbGllbnQ7Cj4gQEAgLTI0OSw2ICsz ODcsMTQgQEAgdm9pZCB2Z2Ffc3dpdGNoZXJvb191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgcGNp X2RldiAqcGRldikKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0 ZXJfY2xpZW50KTsKPiAgCj4gKy8qKgo+ICsgKiB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0 KCkgLSBzZXQgZnJhbWVidWZmZXIgb2YgYSBnaXZlbiBjbGllbnQKPiArICogQHBkZXY6IGNsaWVu dCBwY2kgZGV2aWNlCj4gKyAqIEBpbmZvOiBmcmFtZWJ1ZmZlcgo+ICsgKgo+ICsgKiBTZXQgZnJh bWVidWZmZXIgb2YgYSBnaXZlbiBjbGllbnQuIFRoZSBjb25zb2xlIHdpbGwgYmUgcmVtYXBwZWQg dG8gdGhpcwo+ICsgKiBvbiBzd2l0Y2hpbmcuCj4gKyAqLwo+ICB2b2lkIHZnYV9zd2l0Y2hlcm9v X2NsaWVudF9mYl9zZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gIAkJCQkgc3RydWN0IGZiX2lu Zm8gKmluZm8pCj4gIHsKPiBAQCAtMjYyLDYgKzQwOCw0MiBAQCB2b2lkIHZnYV9zd2l0Y2hlcm9v X2NsaWVudF9mYl9zZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gIH0KPiAgRVhQT1JUX1NZTUJP TCh2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KTsKPiAgCj4gKy8qKgo+ICsgKiBET0M6IE1h bnVhbCBzd2l0Y2hpbmcgYW5kIG1hbnVhbCBwb3dlciBjb250cm9sCj4gKyAqCj4gKyAqIEluIHRo aXMgbW9kZSBvZiB1c2UsIHRoZSBmaWxlIC9zeXMva2VybmVsL2RlYnVnL3ZnYXN3aXRjaGVyb28v c3dpdGNoCj4gKyAqIGNhbiBiZSByZWFkIHRvIHJldHJpZXZlIHRoZSBjdXJyZW50IHZnYV9zd2l0 Y2hlcm9vIHN0YXRlIGFuZCBjb21tYW5kcwo+ICsgKiBjYW4gYmUgd3JpdHRlbiB0byBpdCB0byBj aGFuZ2UgdGhlIHN0YXRlLiBUaGUgZmlsZSBhcHBlYXJzIGFzIHNvb24gYXMKPiArICogdHdvIEdQ VSBkcml2ZXJzIGFuZCBvbmUgaGFuZGxlciBoYXZlIHJlZ2lzdGVyZWQgd2l0aCB2Z2Ffc3dpdGNo ZXJvby4KPiArICogVGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgdW5kZXJzdG9vZDoKPiArICoK PiArICogKiBPRkY6IFBvd2VyIG9mZiB0aGUgZGV2aWNlIG5vdCBpbiB1c2UuCj4gKyAqICogT046 IFBvd2VyIG9uIHRoZSBkZXZpY2Ugbm90IGluIHVzZS4KPiArICogKiBJR0Q6IFN3aXRjaCB0byB0 aGUgaW50ZWdyYXRlZCBncmFwaGljcyBkZXZpY2UuCj4gKyAqIAlQb3dlciBvbiB0aGUgaW50ZWdy YXRlZCBHUFUgaWYgbmVjZXNzYXJ5LCBwb3dlciBvZmYgdGhlIGRpc2NyZXRlIEdQVS4KPiArICog CVByZXJlcXVpc2l0ZSBpcyB0aGF0IG5vIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIChlLmcuIFhvcmcs IGFsc2FjdGwpCj4gKyAqIAloYXZlIG9wZW5lZCBkZXZpY2UgZmlsZXMgb2YgdGhlIEdQVXMgb3Ig dGhlIGF1ZGlvIGNsaWVudC4gSWYgdGhlCj4gKyAqIAlzd2l0Y2ggZmFpbHMsIHRoZSB1c2VyIG1h eSBpbnZva2UgbHNvZig4KSBvciBmdXNlcigxKSBvbiAvZGV2L2RyaS8KPiArICogCWFuZCAvZGV2 L3NuZC9jb250cm9sQzEgdG8gaWRlbnRpZnkgcHJvY2Vzc2VzIGJsb2NraW5nIHRoZSBzd2l0Y2gu Cj4gKyAqICogRElTOiBTd2l0Y2ggdG8gdGhlIGRpc2NyZXRlIGdyYXBoaWNzIGRldmljZS4KPiAr ICogKiBESUdEOiBEZWxheWVkIHN3aXRjaCB0byB0aGUgaW50ZWdyYXRlZCBncmFwaGljcyBkZXZp Y2UuCj4gKyAqIAlUaGlzIHdpbGwgcGVyZm9ybSB0aGUgc3dpdGNoIG9uY2UgdGhlIGxhc3QgdXNl ciBzcGFjZSBwcm9jZXNzIGhhcwo+ICsgKiAJY2xvc2VkIHRoZSBkZXZpY2UgZmlsZXMgb2YgdGhl IEdQVXMgYW5kIHRoZSBhdWRpbyBjbGllbnQuCj4gKyAqICogRERJUzogRGVsYXllZCBzd2l0Y2gg dG8gdGhlIGRpc2NyZXRlIGdyYXBoaWNzIGRldmljZS4KPiArICogKiBNSUdEOiBNdXgtb25seSBz d2l0Y2ggdG8gdGhlIGludGVncmF0ZWQgZ3JhcGhpY3MgZGV2aWNlLgo+ICsgKiAJRG9lcyBub3Qg cmVtYXAgY29uc29sZSBvciBjaGFuZ2UgdGhlIHBvd2VyIHN0YXRlIG9mIGVpdGhlciBncHUuCj4g KyAqIAlJZiB0aGUgaW50ZWdyYXRlZCBHUFUgaXMgY3VycmVudGx5IG9mZiwgdGhlIHNjcmVlbiB3 aWxsIHR1cm4gYmxhY2suCj4gKyAqIAlJZiBpdCBpcyBvbiwgdGhlIHNjcmVlbiB3aWxsIHNob3cg d2hhdGV2ZXIgaGFwcGVucyB0byBiZSBpbiBWUkFNLgo+ICsgKiAJRWl0aGVyIHdheSwgdGhlIHVz ZXIgaGFzIHRvIGJsaW5kbHkgZW50ZXIgdGhlIGNvbW1hbmQgdG8gc3dpdGNoIGJhY2suCj4gKyAq ICogTURJUzogTXV4LW9ubHkgc3dpdGNoIHRvIHRoZSBkaXNjcmV0ZSBncmFwaGljcyBkZXZpY2Uu Cj4gKyAqCj4gKyAqIEZvciBHUFVzIHdob3NlIHBvd2VyIHN0YXRlIGlzIGNvbnRyb2xsZWQgYnkg dGhlIGRyaXZlcidzIHJ1bnRpbWUgcG0sCj4gKyAqIHRoZSBPTiBhbmQgT0ZGIGNvbW1hbmRzIGFy ZSBhIG5vLW9wIChzZWUgbmV4dCBzZWN0aW9uKS4KPiArICoKPiArICogRm9yIG11eGxlc3MgbWFj aGluZXMsIHRoZSBJR0QvRElTLCBESUdEL0RESVMgYW5kIE1JR0QvTURJUyBjb21tYW5kcwo+ICsg KiBzaG91bGQgbm90IGJlIHVzZWQuCj4gKyAqLwo+ICsKPiAgc3RhdGljIGludCB2Z2Ffc3dpdGNo ZXJvb19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdikKPiAgewo+ICAJc3RydWN0IHZn YV9zd2l0Y2hlcm9vX2NsaWVudCAqY2xpZW50Owo+IEBAIC01NTksNiArNzQxLDE2IEBAIGZhaWw6 Cj4gIAlyZXR1cm4gLTE7Cj4gIH0KPiAgCj4gKy8qKgo+ICsgKiB2Z2Ffc3dpdGNoZXJvb19wcm9j ZXNzX2RlbGF5ZWRfc3dpdGNoKCkgLSBoZWxwZXIgZm9yIGRlbGF5ZWQgc3dpdGNoaW5nCj4gKyAq Cj4gKyAqIFByb2Nlc3MgYSBkZWxheWVkIHN3aXRjaCBpZiBvbmUgaXMgcGVuZGluZy4gRFJNIGRy aXZlcnMgc2hvdWxkIGNhbGwgdGhpcwo+ICsgKiBmcm9tIHRoZWlyIC0+bGFzdGNsb3NlIGNhbGxi YWNrLgo+ICsgKgo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gLUVJTlZBTCBpZiBubyBkZWxh eWVkIHN3aXRjaCBpcyBwZW5kaW5nLCBpZiB0aGUgY2xpZW50Cj4gKyAqIGhhcyB1bnJlZ2lzdGVy ZWQgaW4gdGhlIG1lYW50aW1lIG9yIGlmIHRoZXJlIGFyZSBvdGhlciBjbGllbnRzIGJsb2NraW5n IHRoZQo+ICsgKiBzd2l0Y2guIElmIHRoZSBhY3R1YWwgc3dpdGNoIGZhaWxzLCBhbiBlcnJvciBp cyByZXBvcnRlZCBhbmQgMCBpcyByZXR1cm5lZC4KPiArICovCj4gIGludCB2Z2Ffc3dpdGNoZXJv b19wcm9jZXNzX2RlbGF5ZWRfc3dpdGNoKHZvaWQpCj4gIHsKPiAgCXN0cnVjdCB2Z2Ffc3dpdGNo ZXJvb19jbGllbnQgKmNsaWVudDsKPiBAQCAtNTg5LDYgKzc4MSwzOSBAQCBlcnI6Cj4gIH0KPiAg RVhQT1JUX1NZTUJPTCh2Z2Ffc3dpdGNoZXJvb19wcm9jZXNzX2RlbGF5ZWRfc3dpdGNoKTsKPiAg Cj4gKy8qKgo+ICsgKiBET0M6IERyaXZlciBwb3dlciBjb250cm9sCj4gKyAqCj4gKyAqIEluIHRo aXMgbW9kZSBvZiB1c2UsIHRoZSBkaXNjcmV0ZSBHUFUgYXV0b21hdGljYWxseSBwb3dlcnMgdXAg YW5kIGRvd24gYXQKPiArICogdGhlIGRpc2NyZXRpb24gb2YgdGhlIGRyaXZlcidzIHJ1bnRpbWUg cG0uIE9uIG11eGVkIG1hY2hpbmVzLCB0aGUgdXNlciBtYXkKPiArICogc3RpbGwgaW5mbHVlbmNl IHRoZSBtdXhlciBzdGF0ZSBieSB3YXkgb2YgdGhlIGRlYnVnZnMgaW50ZXJmYWNlLCBob3dldmVy Cj4gKyAqIHRoZSBPTiBhbmQgT0ZGIGNvbW1hbmRzIGJlY29tZSBhIG5vLW9wIGZvciB0aGUgZGlz Y3JldGUgR1BVLgo+ICsgKgo+ICsgKiBUaGlzIG1vZGUgaXMgdGhlIGRlZmF1bHQgb24gTnZpZGlh IEh5YnJpZFBvd2VyL09wdGltdXMgYW5kIEFUSSBQb3dlclhwcmVzcy4KPiArICogU3BlY2lmeWlu ZyBub3V2ZWF1LnJ1bnBtPTAsIHJhZGVvbi5ydW5wbT0wIG9yIGFtZGdwdS5ydW5wbT0wIG9uIHRo ZSBrZXJuZWwKPiArICogY29tbWFuZCBsaW5lIGRpc2FibGVzIGl0Lgo+ICsgKgo+ICsgKiBXaGVu IHRoZSBkcml2ZXIgZGVjaWRlcyB0byBwb3dlciB1cCBvciBkb3duLCBpdCBub3RpZmllcyB2Z2Ff c3dpdGNoZXJvbwo+ICsgKiB0aGVyZW9mIHNvIHRoYXQgaXQgY2FuIChhKSBwb3dlciB0aGUgYXVk aW8gZGV2aWNlIG9uIHRoZSBHUFUgdXAgb3IgZG93biwKPiArICogYW5kIChiKSB1cGRhdGUgaXRz IGludGVybmFsIHBvd2VyIHN0YXRlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZGV2aWNlLgo+ICsg KiBUaGlzIGlzIGFjaGlldmVkIGJ5IHZnYV9zd2l0Y2hlcm9vX3NldF9keW5hbWljX3N3aXRjaCgp Lgo+ICsgKgo+ICsgKiBBZnRlciB0aGUgR1BVIGhhcyBiZWVuIHN1c3BlbmRlZCwgdGhlIGhhbmRs ZXIgbmVlZHMgdG8gYmUgY2FsbGVkIHRvIGN1dAo+ICsgKiBwb3dlciB0byB0aGUgR1BVLiBMaWtl d2lzZSBpdCBuZWVkcyB0byByZWluc3RhdGUgcG93ZXIgYmVmb3JlIHRoZSBHUFUKPiArICogY2Fu IHJlc3VtZS4gVGhpcyBpcyBhY2hpZXZlZCBieSB2Z2Ffc3dpdGNoZXJvb19pbml0X2RvbWFpbl9w bV9vcHMoKSwKPiArICogd2hpY2ggYXVnbWVudHMgdGhlIEdQVSdzIHN1c3BlbmQvcmVzdW1lIGZ1 bmN0aW9ucyBieSB0aGUgcmVxdWlzaXRlCj4gKyAqIGNhbGxzIHRvIHRoZSBoYW5kbGVyLgo+ICsg Kgo+ICsgKiBXaGVuIHRoZSBhdWRpbyBkZXZpY2UgcmVzdW1lcywgdGhlIEdQVSBuZWVkcyB0byBi ZSB3b2tlbi4gVGhpcyBpcyBhY2hpZXZlZAo+ICsgKiBieSB2Z2Ffc3dpdGNoZXJvb19pbml0X2Rv bWFpbl9wbV9vcHRpbXVzX2hkbWlfYXVkaW8oKSwgd2hpY2ggYXVnbWVudHMgdGhlCj4gKyAqIGF1 ZGlvIGRldmljZSdzIHJlc3VtZSBmdW5jdGlvbi4KPiArICoKPiArICogT24gbXV4ZWQgbWFjaGlu ZXMsIGlmIHRoZSBtdXggaXMgaW5pdGlhbGx5IHN3aXRjaGVkIHRvIHRoZSBkaXNjcmV0ZSBHUFUs Cj4gKyAqIHRoZSB1c2VyIGVuZHMgdXAgd2l0aCBhIGJsYWNrIHNjcmVlbiB3aGVuIHRoZSBHUFUg cG93ZXJzIGRvd24gYWZ0ZXIgYm9vdC4KPiArICogQXMgYSB3b3JrYXJvdW5kLCB0aGUgbXV4IGlz IGZvcmNlZCB0byB0aGUgaW50ZWdyYXRlZCBHUFUgb24gcnVudGltZSBzdXNwZW5kLAo+ICsgKiBj Zi4gaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTcKPiAr ICovCj4gKwo+ICBzdGF0aWMgdm9pZCB2Z2Ffc3dpdGNoZXJvb19wb3dlcl9zd2l0Y2goc3RydWN0 IHBjaV9kZXYgKnBkZXYsCj4gIAkJCQkJZW51bSB2Z2Ffc3dpdGNoZXJvb19zdGF0ZSBzdGF0ZSkK PiAgewo+IEBAIC02MDcsOCArODMyLDE3IEBAIHN0YXRpYyB2b2lkIHZnYV9zd2l0Y2hlcm9vX3Bv d2VyX3N3aXRjaChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPiAgCXZnYXNyX3ByaXYuaGFuZGxlci0+ cG93ZXJfc3RhdGUoY2xpZW50LT5pZCwgc3RhdGUpOwo+ICB9Cj4gIAo+IC0vKiBmb3JjZSBhIFBD SSBkZXZpY2UgdG8gYSBjZXJ0YWluIHN0YXRlIC0gbWFpbmx5IHRvIHR1cm4gb2ZmIGF1ZGlvIGNs aWVudHMgKi8KPiAtCj4gKy8qKgo+ICsgKiB2Z2Ffc3dpdGNoZXJvb19zZXRfZHluYW1pY19zd2l0 Y2goKSAtIGhlbHBlciBmb3IgZHJpdmVyIHBvd2VyIGNvbnRyb2wKPiArICogQHBkZXY6IGNsaWVu dCBwY2kgZGV2aWNlCj4gKyAqIEBkeW5hbWljOiBuZXcgcG93ZXIgc3RhdGUKPiArICoKPiArICog SGVscGVyIGZvciBHUFVzIHdob3NlIHBvd2VyIHN0YXRlIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGRy aXZlcidzIHJ1bnRpbWUgcG0uCj4gKyAqIFdoZW4gdGhlIGRyaXZlciBkZWNpZGVzIHRvIHBvd2Vy IHVwIG9yIGRvd24sIGl0IG5vdGlmaWVzIHZnYV9zd2l0Y2hlcm9vCj4gKyAqIHRoZXJlb2YgdXNp bmcgdGhpcyBoZWxwZXIgc28gdGhhdCBpdCBjYW4gKGEpIHBvd2VyIHRoZSBhdWRpbyBkZXZpY2Ug b24KPiArICogdGhlIEdQVSB1cCBvciBkb3duLCBhbmQgKGIpIHVwZGF0ZSBpdHMgaW50ZXJuYWwg cG93ZXIgc3RhdGUgcmVwcmVzZW50YXRpb24KPiArICogZm9yIHRoZSBkZXZpY2UuCj4gKyAqLwo+ ICB2b2lkIHZnYV9zd2l0Y2hlcm9vX3NldF9keW5hbWljX3N3aXRjaChzdHJ1Y3QgcGNpX2RldiAq cGRldiwKPiAgCQkJCSAgICAgICBlbnVtIHZnYV9zd2l0Y2hlcm9vX3N0YXRlIGR5bmFtaWMpCj4g IHsKPiBAQCAtNjU0LDggKzg4OCwxOCBAQCBzdGF0aWMgaW50IHZnYV9zd2l0Y2hlcm9vX3J1bnRp bWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC0v KiB0aGlzIHZlcnNpb24gaXMgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBwb3dlciBzd2l0Y2ggaXMg c2VwYXJhdGUKPiAtICAgdG8gdGhlIGRldmljZSBiZWluZyBwb3dlcmVkIGRvd24uICovCj4gKy8q Kgo+ICsgKiB2Z2Ffc3dpdGNoZXJvb19pbml0X2RvbWFpbl9wbV9vcHMoKSAtIGhlbHBlciBmb3Ig ZHJpdmVyIHBvd2VyIGNvbnRyb2wKPiArICogQGRldjogdmdhIGNsaWVudCBkZXZpY2UKPiArICog QGRvbWFpbjogcG93ZXIgZG9tYWluCj4gKyAqCj4gKyAqIEhlbHBlciBmb3IgR1BVcyB3aG9zZSBw b3dlciBzdGF0ZSBpcyBjb250cm9sbGVkIGJ5IHRoZSBkcml2ZXIncyBydW50aW1lIHBtLgo+ICsg KiBBZnRlciB0aGUgR1BVIGhhcyBiZWVuIHN1c3BlbmRlZCwgdGhlIGhhbmRsZXIgbmVlZHMgdG8g YmUgY2FsbGVkIHRvIGN1dAo+ICsgKiBwb3dlciB0byB0aGUgR1BVLiBMaWtld2lzZSBpdCBuZWVk cyB0byByZWluc3RhdGUgcG93ZXIgYmVmb3JlIHRoZSBHUFUKPiArICogY2FuIHJlc3VtZS4gVG8g dGhpcyBlbmQsIHRoaXMgaGVscGVyIGF1Z21lbnRzIHRoZSBzdXNwZW5kL3Jlc3VtZSBmdW5jdGlv bnMKPiArICogYnkgdGhlIHJlcXVpc2l0ZSBjYWxscyB0byB0aGUgaGFuZGxlci4gSXQgbmVlZHMg b25seSBiZSBjYWxsZWQgb24gcGxhdGZvcm1zCj4gKyAqIHdoZXJlIHRoZSBwb3dlciBzd2l0Y2gg aXMgc2VwYXJhdGUgdG8gdGhlIGRldmljZSBiZWluZyBwb3dlcmVkIGRvd24uCj4gKyAqLwo+ICBp bnQgdmdhX3N3aXRjaGVyb29faW5pdF9kb21haW5fcG1fb3BzKHN0cnVjdCBkZXZpY2UgKmRldiwK PiAgCQkJCSAgICAgIHN0cnVjdCBkZXZfcG1fZG9tYWluICpkb21haW4pCj4gIHsKPiBAQCAtNzA5 LDYgKzk1MywxOSBAQCBzdGF0aWMgaW50IHZnYV9zd2l0Y2hlcm9vX3J1bnRpbWVfcmVzdW1lX2hk bWlfYXVkaW8oc3RydWN0IGRldmljZSAqZGV2KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAr LyoqCj4gKyAqIHZnYV9zd2l0Y2hlcm9vX2luaXRfZG9tYWluX3BtX29wdGltdXNfaGRtaV9hdWRp bygpIC0gaGVscGVyIGZvciBkcml2ZXIKPiArICogCXBvd2VyIGNvbnRyb2wKPiArICogQGRldjog YXVkaW8gY2xpZW50IGRldmljZQo+ICsgKiBAZG9tYWluOiBwb3dlciBkb21haW4KPiArICoKPiAr ICogSGVscGVyIGZvciBHUFVzIHdob3NlIHBvd2VyIHN0YXRlIGlzIGNvbnRyb2xsZWQgYnkgdGhl IGRyaXZlcidzIHJ1bnRpbWUgcG0uCj4gKyAqIFdoZW4gdGhlIGF1ZGlvIGRldmljZSByZXN1bWVz LCB0aGUgR1BVIG5lZWRzIHRvIGJlIHdva2VuLiBUaGlzIGhlbHBlcgo+ICsgKiBhdWdtZW50cyB0 aGUgYXVkaW8gZGV2aWNlJ3MgcmVzdW1lIGZ1bmN0aW9uIHRvIGRvIHRoYXQuCj4gKyAqCj4gKyAq IFJldHVybjogMCBvbiBzdWNjZXNzLCAtRUlOVkFMIGlmIG5vIHBvd2VyIG1hbmFnZW1lbnQgb3Bl cmF0aW9ucyBhcmUKPiArICogZGVmaW5lZCBmb3IgdGhpcyBkZXZpY2UuCj4gKyAqLwo+ICBpbnQK PiAgdmdhX3N3aXRjaGVyb29faW5pdF9kb21haW5fcG1fb3B0aW11c19oZG1pX2F1ZGlvKHN0cnVj dCBkZXZpY2UgKmRldiwKPiAgCQkJCQkJIHN0cnVjdCBkZXZfcG1fZG9tYWluICpkb21haW4pCj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaCBiL2luY2x1ZGUvbGlu dXgvdmdhX3N3aXRjaGVyb28uaAo+IGluZGV4IGI0ODNhYmQuLmZlOTBiZmMgMTAwNjQ0Cj4gLS0t IGEvaW5jbHVkZS9saW51eC92Z2Ffc3dpdGNoZXJvby5oCj4gKysrIGIvaW5jbHVkZS9saW51eC92 Z2Ffc3dpdGNoZXJvby5oCj4gQEAgLTEsMTAgKzEsMzEgQEAKPiAgLyoKPiArICogdmdhX3N3aXRj aGVyb28uaCAtIFN1cHBvcnQgZm9yIGxhcHRvcCB3aXRoIGR1YWwgR1BVIHVzaW5nIG9uZSBzZXQg b2Ygb3V0cHV0cwo+ICsgKgo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgUmVkIEhhdCBJbmMuCj4g ICAqIEF1dGhvciA6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Cj4gICAqCj4gLSAq IExpY2Vuc2VkIHVuZGVyIEdQTHYyCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBMdWthcyBXdW5u ZXIgPGx1a2FzQHd1bm5lci5kZT4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoK PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiAg ICoKPiAtICogdmdhX3N3aXRjaGVyb28uaCAtIFN1cHBvcnQgZm9yIGxhcHRvcCB3aXRoIGR1YWwg R1BVIHVzaW5nIG9uZSBzZXQgb2Ygb3V0cHV0cwo+ICAgKi8KPiAgCj4gICNpZm5kZWYgX0xJTlVY X1ZHQV9TV0lUQ0hFUk9PX0hfCj4gQEAgLTE0LDYgKzM1LDIwIEBACj4gIAo+ICBzdHJ1Y3QgcGNp X2RldjsKPiAgCj4gKy8qKgo+ICsgKiBlbnVtIHZnYV9zd2l0Y2hlcm9vX3N0YXRlIC0gY2xpZW50 IHBvd2VyIHN0YXRlCj4gKyAqIEBWR0FfU1dJVENIRVJPT19PRkY6IG9mZgo+ICsgKiBAVkdBX1NX SVRDSEVST09fT046IG9uCj4gKyAqIEBWR0FfU1dJVENIRVJPT19JTklUOiBjbGllbnQgaGFzIHJl Z2lzdGVyZWQgd2l0aCB2Z2Ffc3dpdGNoZXJvbyBidXQKPiArICogCXZnYV9zd2l0Y2hlcm9vIGlz IG5vdCBlbmFibGVkLCBpLmUuIG5vIHNlY29uZCBjbGllbnQgb3Igbm8gaGFuZGxlcgo+ICsgKiAJ aGFzIHJlZ2lzdGVyZWQuIE9ubHkgdXNlZCBpbiB2Z2Ffc3dpdGNoZXJvb19nZXRfY2xpZW50X3N0 YXRlKCkgd2hpY2gKPiArICogCWluIHR1cm4gaXMgb25seSBjYWxsZWQgZnJvbSBoZGFfaW50ZWwu Ywo+ICsgKiBAVkdBX1NXSVRDSEVST09fTk9UX0ZPVU5EOiBjbGllbnQgaGFzIG5vdCByZWdpc3Rl cmVkIHdpdGggdmdhX3N3aXRjaGVyb28uCj4gKyAqIAlPbmx5IHVzZWQgaW4gdmdhX3N3aXRjaGVy b29fZ2V0X2NsaWVudF9zdGF0ZSgpIHdoaWNoIGluIHR1cm4gaXMgb25seQo+ICsgKiAJY2FsbGVk IGZyb20gaGRhX2ludGVsLmMKPiArICoKPiArICogQ2xpZW50IHBvd2VyIHN0YXRlLgo+ICsgKi8K PiAgZW51bSB2Z2Ffc3dpdGNoZXJvb19zdGF0ZSB7Cj4gIAlWR0FfU1dJVENIRVJPT19PRkYsCj4g IAlWR0FfU1dJVENIRVJPT19PTiwKPiBAQCAtMjIsMjAgKzU3LDY0IEBAIGVudW0gdmdhX3N3aXRj aGVyb29fc3RhdGUgewo+ICAJVkdBX1NXSVRDSEVST09fTk9UX0ZPVU5ELAo+ICB9Owo+ICAKPiAr LyoqCj4gKyAqIGVudW0gdmdhX3N3aXRjaGVyb29fY2xpZW50X2lkIC0gY2xpZW50IGlkZW50aWZp ZXIKPiArICogQFZHQV9TV0lUQ0hFUk9PX0lHRDogaW50ZWdyYXRlZCBncmFwaGljcyBkZXZpY2UK PiArICogQFZHQV9TV0lUQ0hFUk9PX0RJUzogZGlzY3JldGUgZ3JhcGhpY3MgZGV2aWNlCj4gKyAq IEBWR0FfU1dJVENIRVJPT19NQVhfQ0xJRU5UUzogY3VycmVudGx5IG5vIG1vcmUgdGhhbiB0d28g R1BVcyBhcmUgc3VwcG9ydGVkCj4gKyAqCj4gKyAqIENsaWVudCBpZGVudGlmaWVyLiBBdWRpbyBj bGllbnRzIHVzZSB0aGUgc2FtZSBpZGVudGlmaWVyICYgMHgxMDAuCj4gKyAqLwo+ICBlbnVtIHZn YV9zd2l0Y2hlcm9vX2NsaWVudF9pZCB7Cj4gIAlWR0FfU1dJVENIRVJPT19JR0QsCj4gIAlWR0Ff U1dJVENIRVJPT19ESVMsCj4gIAlWR0FfU1dJVENIRVJPT19NQVhfQ0xJRU5UUywKPiAgfTsKPiAg Cj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciAtIGhhbmRsZXIgY2Fs bGJhY2tzCj4gKyAqIEBpbml0OiBpbml0aWFsaXplIGhhbmRsZXIuCj4gKyAqIAlPcHRpb25hbC4g VGhpcyBnZXRzIGNhbGxlZCB3aGVuIHZnYV9zd2l0Y2hlcm9vIGlzIGVuYWJsZWQsIGkuZS4gd2hl bgo+ICsgKiAJdHdvIHZnYSBjbGllbnRzIGhhdmUgcmVnaXN0ZXJlZC4gSXQgYWxsb3dzIHRoZSBo YW5kbGVyIHRvIHBlcmZvcm0KPiArICogCXNvbWUgZGVsYXllZCBpbml0aWFsaXphdGlvbiB0aGF0 IGRlcGVuZHMgb24gdGhlIGV4aXN0ZW5jZSBvZiB0aGUKPiArICogCXZnYSBjbGllbnRzLiBDdXJy ZW50bHkgb25seSB0aGUgcmFkZW9uIGFuZCBhbWRncHUgZHJpdmVycyB1c2UgdGhpcy4KPiArICog CVRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZAo+ICsgKiBAc3dpdGNodG86IHN3aXRjaCBvdXRw dXRzIHRvIGdpdmVuIGNsaWVudC4KPiArICogCU1hbmRhdG9yeS4gRm9yIG11eGxlc3MgbWFjaGlu ZXMgdGhpcyBzaG91bGQgYmUgYSBuby1vcC4gUmV0dXJuaW5nIDAKPiArICogCWRlbm90ZXMgc3Vj Y2VzcywgYW55dGhpbmcgZWxzZSBmYWlsdXJlIChpbiB3aGljaCBjYXNlIHRoZSBzd2l0Y2ggaXMK PiArICogCWFib3J0ZWQpCj4gKyAqIEBwb3dlcl9zdGF0ZTogY3V0IG9yIHJlaW5zdGF0ZSBwb3dl ciBvZiBnaXZlbiBjbGllbnQuCj4gKyAqIAlPcHRpb25hbC4gVGhlIHJldHVybiB2YWx1ZSBpcyBp Z25vcmVkCj4gKyAqIEBnZXRfY2xpZW50X2lkOiBkZXRlcm1pbmUgaWYgZ2l2ZW4gcGNpIGRldmlj ZSBpcyBpbnRlZ3JhdGVkIG9yIGRpc2NyZXRlIEdQVS4KPiArICogCU1hbmRhdG9yeQo+ICsgKgo+ ICsgKiBIYW5kbGVyIGNhbGxiYWNrcy4gVGhlIG11bHRpcGxleGVyIGl0c2VsZi4gVGhlIEBzd2l0 Y2h0byBhbmQgQGdldF9jbGllbnRfaWQKPiArICogbWV0aG9kcyBhcmUgbWFuZGF0b3J5LCBhbGwg b3RoZXJzIG1heSBiZSBzZXQgdG8gTlVMTC4KPiArICovCj4gIHN0cnVjdCB2Z2Ffc3dpdGNoZXJv b19oYW5kbGVyIHsKPiArCWludCAoKmluaXQpKHZvaWQpOwo+ICAJaW50ICgqc3dpdGNodG8pKGVu dW0gdmdhX3N3aXRjaGVyb29fY2xpZW50X2lkIGlkKTsKPiAgCWludCAoKnBvd2VyX3N0YXRlKShl bnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9pZCBpZCwKPiAgCQkJICAgZW51bSB2Z2Ffc3dpdGNo ZXJvb19zdGF0ZSBzdGF0ZSk7Cj4gLQlpbnQgKCppbml0KSh2b2lkKTsKPiAgCWludCAoKmdldF9j bGllbnRfaWQpKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKPiAgfTsKPiAgCj4gKy8qKgo+ICsgKiBz dHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyAtIGNsaWVudCBjYWxsYmFja3MKPiArICog QHNldF9ncHVfc3RhdGU6IGRvIHRoZSBlcXVpdmFsZW50IG9mIHN1c3BlbmQvcmVzdW1lIGZvciB0 aGUgY2FyZC4KPiArICogCU1hbmRhdG9yeS4gVGhpcyBzaG91bGQgbm90IGN1dCBwb3dlciB0byB0 aGUgZGlzY3JldGUgR1BVLAo+ICsgKiAJd2hpY2ggaXMgdGhlIGpvYiBvZiB0aGUgaGFuZGxlcgo+ ICsgKiBAcmVwcm9iZTogcG9sbCBvdXRwdXRzLgo+ICsgKiAJT3B0aW9uYWwuIFRoaXMgZ2V0cyBj YWxsZWQgYWZ0ZXIgd2FraW5nIHRoZSBHUFUgYW5kIHN3aXRjaGluZwo+ICsgKiAJdGhlIG91dHB1 dHMgdG8gaXQKPiArICogQGNhbl9zd2l0Y2g6IGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgaW4gYSBw b3NpdGlvbiB0byBzd2l0Y2ggbm93Lgo+ICsgKiAJTWFuZGF0b3J5LiBUaGUgY2xpZW50IHNob3Vs ZCByZXR1cm4gZmFsc2UgaWYgYSB1c2VyIHNwYWNlIHByb2Nlc3MKPiArICogCWhhcyBvbmUgb2Yg aXRzIGRldmljZSBmaWxlcyBvcGVuCj4gKyAqCj4gKyAqIENsaWVudCBjYWxsYmFja3MuIEEgY2xp ZW50IGNhbiBiZSBlaXRoZXIgYSBHUFUgb3IgYW4gYXVkaW8gZGV2aWNlIG9uIGEgR1BVLgo+ICsg KiBUaGUgQHNldF9ncHVfc3RhdGUgYW5kIEBjYW5fc3dpdGNoIG1ldGhvZHMgYXJlIG1hbmRhdG9y eSwgQHJlcHJvYmUgbWF5IGJlCj4gKyAqIHNldCB0byBOVUxMLiBGb3IgYXVkaW8gY2xpZW50cywg dGhlIEByZXByb2JlIG1lbWJlciBpcyBib2d1cy4KPiArICovCj4gIHN0cnVjdCB2Z2Ffc3dpdGNo ZXJvb19jbGllbnRfb3BzIHsKPiAgCXZvaWQgKCpzZXRfZ3B1X3N0YXRlKShzdHJ1Y3QgcGNpX2Rl diAqZGV2LCBlbnVtIHZnYV9zd2l0Y2hlcm9vX3N0YXRlKTsKPiAgCXZvaWQgKCpyZXByb2JlKShz dHJ1Y3QgcGNpX2RldiAqZGV2KTsKPiAKCi0tCkRhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=