From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyun Kwon Subject: Re: [PATCH v9 2/4] drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem Date: Fri, 8 Nov 2019 15:52:42 -0800 Message-ID: <20191108235242.GA6903@smtp.xilinx.com> References: <20190925235544.11524-1-laurent.pinchart@ideasonboard.com> <20190925235544.11524-3-laurent.pinchart@ideasonboard.com> <20190928000456.GA25231@smtp.xilinx.com> <20191108171325.GF15731@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-eopbgr790080.outbound.protection.outlook.com [40.107.79.80]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD8B96E105 for ; Fri, 8 Nov 2019 23:53:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191108171325.GF15731@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Michal Simek , "dri-devel@lists.freedesktop.org" , Satish Kumar Nagireddy List-Id: dri-devel@lists.freedesktop.org SGkgTGF1cmVudCwKCk9uIEZyaSwgMjAxOS0xMS0wOCBhdCAwOToxMzoyNSAtMDgwMCwgTGF1cmVu dCBQaW5jaGFydCB3cm90ZToKPiBIaSBIeXVuLAo+IAo+IChDQydpbmcgRGFuaWVsLCB3aXRoIGEg cXVlc3Rpb24gZm9yIGhpbSBiZWxvdykKPiAKPiBPbiBGcmksIFNlcCAyNywgMjAxOSBhdCAwNTow NDo1N1BNIC0wNzAwLCBIeXVuIEt3b24gd3JvdGU6Cj4gPiBPbiBXZWQsIDIwMTktMDktMjUgYXQg MTY6NTU6NDIgLTA3MDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiA+IEZyb206IEh5dW4g S3dvbiA8aHl1bi5rd29uQHhpbGlueC5jb20+Cj4gPiA+IAo+ID4gPiBUaGUgWGlsaW54IFp5bnFN UCBTb0MgaGFzIGEgaGFyZGVuZWQgZGlzcGxheSBwaXBlbGluZSBuYW1lZCBEaXNwbGF5UG9ydAo+ ID4gPiBTdWJzeXN0ZW0uIEl0IGluY2x1ZGVzIGEgYnVmZmVyIG1hbmFnZXIsIGEgdmlkZW8gcGlw ZWxpbmUgcmVuZGVyZXIKPiA+ID4gKGJsZW5kZXIpLCBhbiBhdWRpbyBtaXhlciBhbmQgYSBEaXNw bGF5UG9ydCBzb3VyY2UgY29udHJvbGxlcgo+ID4gPiAodHJhbnNtaXR0ZXIpLiBUaGUgRE1BIGVu Z2luZSB0aGUgcHJvdmlkZSBkYXRhIHRvIHRoZSBidWZmZXIgbWFuYWdlciwgYXMKPiA+ID4gd2Vs bCBhcyB0aGUgRGlzcGxheVBvcnQgUEhZcyB0aGF0IGRyaXZlIHRoZSBsYW5lcywgYXJlIGV4dGVy bmFsIHRvIHRoZQo+ID4gPiBzdWJzeXN0ZW0gYW5kIGludGVyZmFjZWQgdXNpbmcgdGhlIERNQSBl bmdpbmUgYW5kIFBIWSBBUElzIHJlc3BlY3RpdmVseS4KPiA+ID4gCj4gPiA+IFRoaXMgZHJpdmVy IHN1cHBvcnRzIHRoZSBEaXNwbGF5UG9ydCBTdWJzeXN0ZW0gYW5kIGltcGxlbWVudHMKPiA+ID4g Cj4gPiA+IC0gVHdvIHBsYW5lcywgZm9yIGdyYXBoaWNzIGFuZCB2aWRlbwo+ID4gPiAtIE9uZSBD UlRDIHRoYXQgc3VwcG9ydHMgYWxwaGEgYmxlbmRpbmcKPiA+ID4gLSBPbmUgZW5jb2RlciBmb3Ig dGhlIERpc3BsYXlQb3J0IHRyYW5zbWl0dGVyCj4gPiA+IC0gT25lIGNvbm5lY3RvciBmb3IgYW4g ZXh0ZXJuYWwgbW9uaXRvcgo+ID4gPiAKPiA+ID4gSXQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9y dAo+ID4gPiAKPiA+ID4gLSBDb2xvciBrZXlpbmcKPiA+ID4gLSBUZXN0IHBhdHRlcm4gZ2VuZXJh dGlvbgo+ID4gPiAtIEF1ZGlvCj4gPiA+IC0gTGl2ZSBpbnB1dCBmcm9tIHRoZSBQcm9ncmFtbWFi bGUgTG9naWMgKEZQR0EpCj4gPiA+IC0gT3V0cHV0IHRvIHRoZSBQcm9ncmFtbWFibGUgTG9naWMg KEZQR0EpCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBIeXVuIEt3b24gPGh5dW4ua3dvbkB4 aWxpbnguY29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50 LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gPiA+IC0tLQo+ID4gPiBOb3RhYmxlIGNoYW5n ZXMgc2luY2Ugdjg6Cj4gPiA+IAo+ID4gPiAtIFJlYmFzZSBvbiB0b3Agb2YgdjUuMyBhbmQgdXBk YXRlIHRvIEFQSSBjaGFuZ2VzCj4gPiA+IC0gQ2xlYW51cCAjaW5jbHVkZSBzdGF0ZW1lbnRzCj4g PiA+IC0gVXNlIHRoZSBtb2RlIGNvbmZpZyBzdXNwZW5kL3Jlc3VtZSBoZWxwZXJzCj4gPiA+IC0g UmVtb3ZlIHVudXNlZCBjb2RlIChtYWNyb3MsIGZpZWxkcywgZnVuY3Rpb25zLCAuLi4pCj4gPiA+ IC0gU29ydCBoZWFkZXJzIGFuZCBmb3J3YXJkIGRlY2xhcmF0aW9ucyBhbHBoYWJldGljYWxseQo+ ID4gPiAtIFVzZSBtb3JlIHN0YW5kYXJkIERSTS9LTVMgaGVscGVycyAoc3VzcGVuZC9yZXN1bWUs IGZiZGV2LAo+ID4gPiAgIERFRklORV9EUk1fR0VNX0NNQV9GT1BTKQo+ID4gPiAtIERyb3Agc3Vw cG9ydCBmb3IgaGFsZi1pbXBsZW1lbnRlZCBvciB1bnN1cHBvcnRlZCBmZWF0dXJlcyAoc291bmQg RFQKPiA+ID4gICBiaW5kaW5ncyBwYXJzaW5nLCBpbnRlcmZhY2Ugd2l0aCBQTCkKPiA+ID4gLSBS ZW1vdmUgdGhlIHhsbnggZHJtIGhlbHBlcnMKPiA+IAo+ID4gVGhpcyB3aWxsIGhhdmUgaW1wYWN0 IG9uIG90aGVyIGRvd25zdHJlYW0gZHJpdmVycywgYXMgdGhpcyBpcyBzaGFyZWQgbGF5ZXIKPiA+ IGluIHhsbnggdHJlZS4KPiAKPiBSaWdodC4gV2UgbWF5IG5vdCB3YW50IHRvIGRyb3AgdGhlbSBj b21wbGV0ZWx5LCBidXQgSSBkb24ndCB0aGluawo+IGludHJvZHVjaW5nIHRoZW0gZm9yIHRoaXMg ZHJpdmVyIGlzIHRoZSByaWdodCB0aGluZyB0byBkby4gSXQncyB1c3VhbGx5Cj4gYmV0dGVyIHRv IHN0YXJ0IHdpdGggdHdvIGRyaXZlcnMgYW5kIGNyZWF0ZSBoZWxwZXJzIG91dCBvZiB0aGVtIGlu c3RlYWQKPiBvZiBjcmVhdGluZyBoZWxwZXJzIHVwLWZyb250IGFuZCBtYWtpbmcgdGhlIGRyaXZl cnMgZml0IHRoZW0uCj4gCj4gSSBjYW4gY2VydGFpbmx5IGhlbHAgd2l0aCB0aGUgaGVscGVycyBh bmQgdGhlIG90aGVyIGRyaXZlcnMgdGhhdCB1c2UKPiB0aGVtLCBidXQgYmFzZWQgb24gd2hhdCBJ J3ZlIHNlZW4sIHRoZXJlJ3Mgbm8gY29kZSB0aGF0IGV4cG9zZXMgbXVsdGlwbGUKPiBDUlRDcyBh dCB0aGUgbW9tZW50LCBzbyBoZWxwZXJzIGZvciB0aGlzIGFyZSBsaWtlbHkgbm90IG5lZWRlZC4g T3IgZGlkIEkKPiBtaXNzIHNvbWV0aGluZyA/CgpZb3UgYXJlIGNvcnJlY3QuIEluaXRpYWxseSB0 aGVyZSB3YXMgcmVxdWlyZW1lbnQgdG8gc3VwcG9ydCB0aGF0LCBidXQgaSBkb24ndApzZWUgYW55 dGhpbmcgY29taW5nIHVwIHRoYXQgbmVlZHMgbXVsdGlwbGUgQ1JUQ3MuIFNvIHdlIGNhbiBwdXQg aXQgYXNpZGUgZm9yCm5vdy4gTWVhbndoaWxlIHdlIGNhbiBjb25maXJtIGlmIGl0IGhhcyB0byBi ZSByZWFsbHkgc3VwcG9ydGVkIGV2ZW4gaW4KdGhlIGZ1dHVyZS4KCj4gCj4gPiA+IC0gUmVtb3Zl IHNvbWUgbW9kdWxlIHBhcmFtZXRlcnMKPiA+IAo+ID4gVGhlIGRlZmF1bHQgZm9ybWF0IG1vZHVs ZSBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgdG8gY2hhbmdlIHRoZSBmYmRldgo+ID4gZm9ybWF0LiBU aGUgZmJkZXYgc2VlbXMgd2lkZWx5IHVzZWQgaW4gbWFueSBhcHBsaWNhdGlvbnMsIGVzcGVjaWFs bHkKPiA+IGFsb25nIHdpdGggZ3JhcGhpY3Mgc3RhY2suCj4gCj4gRG9lc24ndCBmYmRldiBhbHdh eXMgcGVyZm9ybSBhIG1vZGUgc2V0LCBhbmQgdGh1cyBvdmVycmlkZSB0aGlzID8KPiAKCkFzIGZh ciBhcyBJIHJlbWVtYmVyLCB0aGUgZW11bGF0ZWQgZmJkZXYgZm9ybWF0IGlzIHBpY2tlZCBhdCBp bml0aWxpYXphdGlvbgp0aW1lIGJhc2VkIG9uIGJwcCAvIGRlcHRoLCBhbmQgbmV2ZXIgY2hhbmdl cyBhZnRlciBhbGwuIE1heWJlIGl0J3MganVzdCBtZQpub3Qga25vd2luZyBob3cgdG8gZG8uIFRo ZSBjb21tYW5kIGxpbmUgbW9kZSBtYXkgd29yay4KCj4gPiA+IC0gUmVvcmdhbml6ZSBjb2RlIGlu IHNlY3Rpb25zLCB3aXRoIGJldHRlciBzZXBhcmF0aW9uIG9mIG9wZXJhdGlvbnMKPiA+ID4gLSBC ZXR0ZXIgc2VwYXJhdGlvbiBvZiB0aGUgZW5jb2RlciBmcm9tIHRoZSBDUlRDCj4gPiA+IC0gRHJv cCB0aGUgY29tcG9uZW50IGZyYW1ld29yawo+ID4gPiAtIFZhcmlvdXMga2VybmVsZG9jIHJld29y a3MsIHdpdGggcmVuYW1lcyBvZiBzdHJ1Y3R1cmVzLCBmaWVsZHMgYW5kCj4gPiA+ICAgZnVuY3Rp b25zCj4gPiA+IC0gRml4IHZibGFuayBhbmQgcGFnZSBmbGlwIGV2ZW50IGhhbmRsaW5nCj4gPiA+ IC0gUmVtb3ZlIGhhY2sgdG8gZGlzYWJsZSBjbG9ja3MgYXQgc3RhcnR1cAo+ID4gCj4gPiBIb2Vw ZnVsbHksIGl0J3MgZml4ZWQgaW4gZmlybXdhcmUuIFByZXZpb3VzbHkgaXQgd2Fzbid0IGd1YXJh bnRlZWQKPiA+IHRoYXQgdGhlIGNsb2NrIGlzIGRpc2FibGVkIGF0IGJvb3R1cCwgYmVjYXVzZSBp dCB3YXMgb25lIG9mIGRlc2lnbgo+ID4gcGFyYW1ldGVycy4gVGhlbiBpZiB0aGUgY2xvY2sgcmF0 ZSBjaGFuZ2VkIHdoZW4gZW5hYmxlZCwgaXQgcmVzdWx0ZWQKPiA+IGluIGluY29ycmVjdCByYXRl Lgo+IAo+IEV2ZW4gaWYgdGhlIGZpcm13YXJlIGhhbmRsZXMgdGhpcyBpbmNvcnJlY3RseSwgSSB0 aGluayB0aGUgd29ya2Fyb3VuZAo+IHNob3VsZCBiZSBpbiB0aGUgY2xvY2sgZHJpdmVyLCBub3Qg aW4gdGhlIGRwc3ViIGRyaXZlci4gSSBjYW4gdHJ5IHRvCj4gaGFuZGxlIHRoaXMgb24gdG9wIG9m IHRoZSBkcHN1YiBzZXJpZXMuIEl0IHdpbGwgcmVxdWlyZSBtb3ZpbmcgdG8KPiBwcm9ncmFtbWFi bGUgY2xvY2tzIGZpcnN0IHRob3VnaCwgdGhlIHVwc3RyZWFtIFp5bnFNUCBEVCBzb3VyY2VzIHVz ZQo+IGZpeGVkIGNsb2Nrcy4KPiAKCkFoIG1ha2VzIHNlbnNlLiBJIGRvbid0IGtub3cgd2h5IEkg ZGlkbid0IHRoaW5rIGl0IHRoYXQgd2F5LiBUaGVyZSBtYXkgYmUKc29tZSBjb21wbGljYXRpb25z IHRvIGZpeCBpbiBjbG9jayBkcml2ZXIsIHN1Y2ggYXMgc29tZSBjbG9ja3Mgc2hvdWxkbid0CmJl IGRpc2FibGVkLCBhbmQgaXQncyBub3QgZWFzeSB0byB3aGljaCBvbmVzPyBXZSdsbCBmaWd1cmUg aXQgb3V0IQoKPiA+ID4gLSBVcGRhdGUgY29weXJpZ2h0IGhlYWRlcnMKPiA+ID4gLSBNb3ZlIGNo ZWNrcyBmcm9tIGF0b21pYyBjb21taXQgdGltZSB0byBhdG9taWMgY2hlY2sgdGltZQo+ID4gPiAt IFJlbW92ZSBwYXJ0aWFsIHN1cHBvcnQgZm9yIHRoZSBUUEcKPiA+ID4gLSBSZW1vdmUgcGFydGlh bCBzdXBwb3J0IGZvciBsaXZlIGlucHV0cwo+ID4gPiAtIFJlbW92ZSBhc3luYyB1cGRhdGUgc3Vw cG9ydAo+ID4gCj4gPiBBbGwgYWJvdmUgMyBhcmUgYWN0dWFsbHkgcmVxdWVzdGVkIGZlYXR1cmVz IC8gZml4ZXMuCj4gCj4gSSB0aGluayB3ZSBzaG91bGQgaGF2ZSBUUEcgYW5kIGxpdmUgaW5wdXRz IHN1cHBvcnQsIGJ1dCBpdCB3YXMgb25seSBoYWxmCj4gaW1wbGVtZW50ZWQuIEl0J3MgYmVzdCwg SSBiZWxpZXZlLCBnaXZlbiBob3cgbGFyZ2UgdGhlIGRyaXZlciBhbHJlYWR5Cj4gaXMsIHRvIGRy b3AgdGhlIGhhbGYgaW1wbGVtZW50YXRpb24gbm93IGFuZCB0aGVuIGFkZCBhIGZ1bGwKPiBpbXBs ZW1lbnRhdGlvbiBvbiB0b3AuIElmIGFueW9uZSBjYW4gcHJvdmlkZSBtZSB3aXRoIGd1aWRhbmNl IHJlZ2FyZGluZwo+IHByaW9yaXRpZXMgYmV0d2VlbiB0aG9zZSBpdGVtcywgSSBjYW4gc3RhcnQg d29ya2luZyBvbiB0aGVtLiBGb3IgbGl2ZQo+IGlucHV0cyBhbmQgYXN5bmMgdXBkYXRlcyBJIHdv dWxkIGFsc28gbmVlZCB0byBrbm93IGFib3V0IHRoZSB1c2UgY2FzZXMuCgpJbiBteSB2aWV3LCBh c3luYyB1cGRhdGUgaXMgaGlnaCBwcmlvcml0eS4gVGhlcmUgYXJlIG1hbnkgYXBwbGljYXRpb25z IGFuZAp1c2UgY2FzZXMgcmVseWluZyBvbiBpdC4KCj4gCj4gPiA+IC0gQ2xlYW4gdXAgRFAgVFgg aW5pdGlhbGlzYXRpb24gYW5kIGNsZWFudXAKPiA+ID4gLS0tCj4gPiA+ICBNQUlOVEFJTkVSUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgIDIgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAgMSArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v eGxueC9LY29uZmlnICAgICAgICAgICAgfCAgIDEzICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS94 bG54L01ha2VmaWxlICAgICAgICAgICB8ICAgIDIgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3hs bngvenlucW1wX2Rpc3AuYyAgICAgIHwgMTY3OCArKysrKysrKysrKysrKysrKysrKysrKwo+ID4g PiAgZHJpdmVycy9ncHUvZHJtL3hsbngvenlucW1wX2Rpc3AuaCAgICAgIHwgICA0MyArCj4gPiA+ ICBkcml2ZXJzL2dwdS9kcm0veGxueC96eW5xbXBfZGlzcF9yZWdzLmggfCAgMjAxICsrKwo+ID4g PiAgZHJpdmVycy9ncHUvZHJtL3hsbngvenlucW1wX2RwLmMgICAgICAgIHwgMTY3NyArKysrKysr KysrKysrKysrKysrKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0veGxueC96eW5xbXBfZHAuaCAg ICAgICAgfCAgIDI5ICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFtcF9kcHN1Yi5j ICAgICB8ICAzMzEgKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFtcF9kcHN1 Yi5oICAgICB8ICAgNDggKwo+ID4gPiAgMTIgZmlsZXMgY2hhbmdlZCwgNDAzNCBpbnNlcnRpb25z KCspCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngvS2NvbmZp Zwo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L01ha2VmaWxl Cj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngvenlucW1wX2Rp c3AuYwo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFt cF9kaXNwLmgKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGxueC96 eW5xbXBfZGlzcF9yZWdzLmgKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0veGxueC96eW5xbXBfZHAuYwo+ID4gCj4gPiBbc25pcF0KPiA+IAo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4g PiA+IGluZGV4IDlmMGQyZWUzNTc5NC4uZWI5MWNmZGFjMTNhIDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCj4gPiA+IEBAIC0xMjAsMyArMTIwLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9MSU1BKSAgKz0g bGltYS8KPiA+ID4gIG9iai0kKENPTkZJR19EUk1fUEFORlJPU1QpICs9IHBhbmZyb3N0Lwo+ID4g PiAgb2JqLSQoQ09ORklHX0RSTV9BU1BFRURfR0ZYKSArPSBhc3BlZWQvCj4gPiA+ICBvYmotJChD T05GSUdfRFJNX01DREUpICs9IG1jZGUvCj4gPiA+ICtvYmoteQkJCSs9IHhsbngvCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGxueC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJt L3hsbngvS2NvbmZpZwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLmFhNmNkODg5YmQxMQo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS94bG54L0tjb25maWcKPiA+ID4gQEAgLTAsMCArMSwxMyBAQAo+ID4gPiAr Y29uZmlnIERSTV9aWU5RTVBfRFBTVUIKPiA+ID4gKwl0cmlzdGF0ZSAiWnlucU1QIERpc3BsYXlQ b3J0IENvbnRyb2xsZXIgRHJpdmVyIgo+ID4gPiArCWRlcGVuZHMgb24gQVJDSF9aWU5RTVAgfHwg Q09NUElMRV9URVNUCj4gPiA+ICsJZGVwZW5kcyBvbiBDT01NT05fQ0xLICYmIERSTSAmJiBPRgo+ ID4gPiArCXNlbGVjdCBETUFfRU5HSU5FCj4gPiA+ICsJc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBF Ugo+ID4gPiArCXNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKPiA+ID4gKwlzZWxlY3QgRFJNX0tN U19IRUxQRVIKPiA+ID4gKwlzZWxlY3QgR0VORVJJQ19QSFkKPiA+IAo+ID4gQ2FuIHdlIGVuZm9y Y2UgdGhlIERSTV9GQkRFVl9PVkVSQUxMT0M9MjAwIGZvciB0aGlzIGRyaXZlciBzb21laG93PyBP ciBzaG91bGQKPiA+IGl0IGJlIGRvbmUgaW4gdGhlIGRlZmNvbmZpZz8gVGhpcyBpcyByZXF1aXJl ZCwgZXNwZWNpYWxseSB3aGVuIHVzZWQgYnkgdGhlIEdQVQo+ID4gZHJpdmVyIHRvIHN3YXAgYnVm ZmVycy4KPiAKPiBJIHRoaW5rIGl0IHdpbGwgaGF2ZSB0byBnbyBpbiBhIGRlZmNvbmZpZywgYXMg ZmFyIGFzIEkga25vdyB0aGVyZSdzIG5vCj4gd2F5IHRvIGRvIGEgc2VsZWN0IERSTV9GQkRFVl9P VkVSQUxMT0M9MjAwCj4gCj4gPiA+ICsJaGVscAo+ID4gPiArCSAgVGhpcyBpcyBhIERSTS9LTVMg ZHJpdmVyIGZvciBaeW5xTVAgRGlzcGxheVBvcnQgY29udHJvbGxlci4gQ2hvb3NlCj4gPiA+ICsJ ICB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIFhpbGlueCBaeW5xTVAgU29DIHdpdGggRGlzcGxh eVBvcnQKPiA+ID4gKwkgIHN1YnN5c3RlbS4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94bG54L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3hsbngvTWFrZWZpbGUKPiA+IAo+ ID4gW3NuaXBdCj4gPiAKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiB6eW5xbXBfZGlzcF9h dmJ1Zl9lbmFibGVfY2hhbm5lbHMgLSBFbmFibGUgYnVmZmVyIGNoYW5uZWxzCj4gPiA+ICsgKiBA YXZidWY6IEF1ZGlvL3ZpZGVvIGJ1ZmZlciBtYW5hZ2VyCj4gPiA+ICsgKgo+ID4gPiArICogRW5h YmxlIGFsbCAodmlkZW8gYW5kIGF1ZGlvKSBidWZmZXIgY2hhbm5lbHMuCj4gPiA+ICsgKi8KPiA+ ID4gK3N0YXRpYyB2b2lkIHp5bnFtcF9kaXNwX2F2YnVmX2VuYWJsZV9jaGFubmVscyhzdHJ1Y3Qg enlucW1wX2Rpc3BfYXZidWYgKmF2YnVmKQo+ID4gPiArewo+ID4gPiArCXVuc2lnbmVkIGludCBp Owo+ID4gPiArCXUzMiB2YWw7Cj4gPiA+ICsKPiA+ID4gKwl2YWwgPSBaWU5RTVBfRElTUF9BVl9C VUZfQ0hCVUZfRU4KPiA+ID4gKwkgICAgfCAoWllOUU1QX0RJU1BfQVZfQlVGX0NIQlVGX0JVUlNU X0xFTl9NQVggPDwKPiA+IAo+ID4gTml0LiBUaGUgbGluZSBiZXR0ZXIgZW5kIHdpdGggYW4gb3Bl cmF0b3IgJ3wnLgo+IAo+IEkgbGlrZSBpdCBiZXR0ZXIgd2l0aCB8IGF0IHRoZSBiZWdpbm5pbmcg b2YgdGhlIGxpbmUgOi0pIEFzIHRoaXMgaXMgYQo+IG1hdHRlciBvZiBzdHlsZSwgYW5kIHlvdSBh dXRob3JlZCB0aGUgZHJpdmVyLCBJIHdpbGwgY2hhbmdlIGl0LgoKVGhhbmtzISBJIGhhdmUgYmVl biB0aGlua2luZyBpdCdzIHJlY29tbWVuZGVkIHN0eWxlLCBidXQgSSBndWVzcyBJIHdhcyB3cm9u Zy4KVGhlbiwgSSdtIGZpbmUgZWl0aGVyIHdheSB0b28uCgo+IAo+ID4gPiArCSAgICAgICBaWU5R TVBfRElTUF9BVl9CVUZfQ0hCVUZfQlVSU1RfTEVOX1NISUZUKTsKPiA+ID4gKwo+ID4gPiArCWZv ciAoaSA9IDA7IGkgPCBaWU5RTVBfRElTUF9BVl9CVUZfTlVNX1ZJRF9HRlhfQlVGRkVSUzsgaSsr KQo+ID4gPiArCQl6eW5xbXBfZGlzcF9hdmJ1Zl93cml0ZShhdmJ1ZiwgWllOUU1QX0RJU1BfQVZf QlVGX0NIQlVGKGkpLAo+ID4gPiArCQkJCQl2YWwpOwo+ID4gPiArCj4gPiA+ICsJdmFsID0gWllO UU1QX0RJU1BfQVZfQlVGX0NIQlVGX0VOCj4gPiA+ICsJICAgIHwgKFpZTlFNUF9ESVNQX0FWX0JV Rl9DSEJVRl9CVVJTVF9MRU5fQVVEX01BWCA8PAo+ID4gCj4gPiBIZXJlIHRvby4KPiA+IAo+ID4g PiArCSAgICAgICBaWU5RTVBfRElTUF9BVl9CVUZfQ0hCVUZfQlVSU1RfTEVOX1NISUZUKTsKPiA+ ID4gKwo+ID4gPiArCWZvciAoOyBpIDwgWllOUU1QX0RJU1BfQVZfQlVGX05VTV9CVUZGRVJTOyBp KyspCj4gPiA+ICsJCXp5bnFtcF9kaXNwX2F2YnVmX3dyaXRlKGF2YnVmLCBaWU5RTVBfRElTUF9B Vl9CVUZfQ0hCVUYoaSksCj4gPiA+ICsJCQkJCXZhbCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+IAo+ ID4gW3NuaXBdCj4gPiAKPiA+ID4gKwo+ID4gPiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ ID4gKyAqIEJsZW5kZXIgKFZpZGVvIFBpcGVsaW5lKQo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4g K3N0YXRpYyB2b2lkIHp5bnFtcF9kaXNwX2JsZW5kX3dyaXRlKHN0cnVjdCB6eW5xbXBfZGlzcF9i bGVuZCAqYmxlbmQsCj4gPiA+ICsJCQkJICAgIGludCByZWcsIHUzMiB2YWwpCj4gPiA+ICt7Cj4g PiA+ICsJd3JpdGVsKHZhbCwgYmxlbmQtPmJhc2UgKyByZWcpOwo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICsvKgo+ID4gPiArICogQ29sb3JzcGFjZSBjb252ZXJzaW9uIG1hdHJpY2VzLgo+ID4gPiAr ICoKPiA+ID4gKyAqIEhhcmRjb2RlIFJHQiA8LT4gWVVWIGNvbnZlcnNpb24gdG8gZnVsbC1yYW5n ZSBTRFRWIGZvciBub3cuCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBjb25zdCB1MTYgY3NjX3pl cm9fbWF0cml4W10gPSB7Cj4gPiA+ICsJMHgwLCAgICAweDAsICAgIDB4MCwKPiA+ID4gKwkweDAs ICAgIDB4MCwgICAgMHgwLAo+ID4gPiArCTB4MCwgICAgMHgwLCAgICAweDAKPiA+ID4gK307Cj4g PiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCB1MTYgY3NjX2lkZW50aXR5X21hdHJpeFtdID0gewo+ ID4gPiArCTB4MTAwMCwgMHgwLCAgICAweDAsCj4gPiA+ICsJMHgwLCAgICAweDEwMDAsIDB4MCwK PiA+ID4gKwkweDAsICAgIDB4MCwgICAgMHgxMDAwCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtz dGF0aWMgY29uc3QgdTMyIGNzY196ZXJvX29mZnNldHNbXSA9IHsKPiA+ID4gKwkwLCAwLCAwCj4g PiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3QgdTE2IGNzY19yZ2JfdG9fc2R0dl9t YXRyaXhbXSA9IHsKPiA+ID4gKwkweDRjOSwgIDB4ODY0LCAgMHgxZDMsCj4gPiA+ICsJMHg3ZDRk LCAweDdhYjMsIDB4ODAwLAo+ID4gPiArCTB4ODAwLCAgMHg3OTRkLCAweDdlYjMKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCB1MzIgY3NjX3JnYl90b19zZHR2X29mZnNldHNb XSA9IHsKPiA+ID4gKwkweDAsIDB4ODAwMDAwMCwgMHg4MDAwMDAwCj4gPiA+ICt9Owo+ID4gPiAr Cj4gPiA+ICtzdGF0aWMgY29uc3QgdTE2IGNzY19zZHR2X3RvX3JnYl9tYXRyaXhbXSA9IHsKPiA+ ID4gKwkweDEwMDAsIDB4MTY2ZiwgMHgwLAo+ID4gPiArCTB4MTAwMCwgMHg3NDgzLCAweDdhN2Ys Cj4gPiA+ICsJMHgxMDAwLCAweDAsICAgIDB4MWM1YQo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiAr c3RhdGljIGNvbnN0IHUzMiBjc2Nfc2R0dl90b19yZ2Jfb2Zmc2V0c1tdID0gewo+ID4gPiArCTB4 MCwgMHgxODAwLCAweDE4MDAKPiA+ID4gK307Cj4gPiAKPiA+IEp1c3QgYSBxdWVzdGlvbi4gVGhl c2UgYXJlIGFsbCBwcm9ncmFtYWJsZSBwYXJhbWV0ZXJzLiBJZiB3ZSB3YW50IHRvIGFsbG93IHVz ZXJzIHRvCj4gPiBjaGFuZ2UgdGhlc2UsIHdoYXQnZCBiZSB0aGUgYmVzdCB3YXk/IFRoZSBkcm0g cHJvcGVydGllcyBzZWVtcyBnZXR0aW5nIG1vcmUgc3RyaWN0Cj4gPiBjb250cm9sbGVkLCBhbmQg dGhlcmUgYXJlIGEgZmV3IG1vcmUsIGV4IFRQRyAvIGFscGhhIC8sLCwgdGhhdCBhcmUgbm90IGlu Y2x1ZGVkIGluCj4gPiB0aGlzIHNldC4KPiAKPiBUaGVyZSBhcmUgY29sb3Igc3BhY2UgY29udmVy c2lvbiBwcm9wZXJ0aWVzLCBJIHRoaW5rIHRoZXkgd291bGQgYmUgYQo+IGdvb2QgbWF0Y2ggZm9y IHRoaXMuIElmIHByb3BlcnRpZXMgYXJlIG1pc3Npbmcgd2UgbmVlZCB0byBhZGQgdGhlbSwgYnV0 Cj4gaW4gdGhhdCBjYXNlIHdlIHdpbGwgYWxzbyBuZWVkIHRvIHNob3cgYSB1c2Vyc3BhY2UgaW1w bGVtZW50YXRpb24gdGhhdAo+IG1ha2VzIHVzZSBvZiB0aGVtLiBUUEcgbWF5IGJlIGEgYml0IG9m IGEgZ3JleSBhcmVhLCBhcyBJJ20gbm90IHN1cmUgaW4KPiB3aGF0IHVzZXJzcGFjZSBpdCBjb3Vs ZCBmaXQuIFBvc3NpYmx5IGlndCA/IERhbmllbCwgd2hhdCdzIHlvdXIgb3Bpbmlvbgo+IGFib3V0 IHRlc3QgcGF0dGVybiBnZW5lcmF0b3IgcHJvcGVydGllcyA/IFNob3VsZCB3ZSBwZXJoYXBzIGV4 cG9zZSB0aGVtCj4gdGhyb3VnaCBzeXNmcyBpbnN0ZWFkLCBzaW1pbGFybHkgdG8gaG93IENSQyB3 b3JrcyA/Cj4gCj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogenlucW1wX2Rpc3BfYmxlbmRf c2V0X291dHB1dF9mb3JtYXQgLSBTZXQgdGhlIG91dHB1dCBmb3JtYXQgb2YgdGhlIGJsZW5kZXIK PiA+ID4gKyAqIEBibGVuZDogQmxlbmRlciBvYmplY3QKPiA+ID4gKyAqIEBmb3JtYXQ6IE91dHB1 dCBmb3JtYXQKPiA+ID4gKyAqCj4gPiA+ICsgKiBTZXQgdGhlIG91dHB1dCBmb3JtYXQgb2YgdGhl IGJsZW5kZXIgdG8gQGZvcm1hdC4KPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIHZvaWQgenlucW1w X2Rpc3BfYmxlbmRfc2V0X291dHB1dF9mb3JtYXQoc3RydWN0IHp5bnFtcF9kaXNwX2JsZW5kICpi bGVuZCwKPiA+ID4gKwkJCQkJCWVudW0genlucW1wX2Rwc3ViX2Zvcm1hdCBmb3JtYXQpCj4gPiA+ ICt7Cj4gPiA+ICsJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBibGVuZF9vdXRwdXRfZm10c1td ID0gewo+ID4gPiArCQlbWllOUU1QX0RQU1VCX0ZPUk1BVF9SR0JdID0gWllOUU1QX0RJU1BfVl9C TEVORF9PVVRQVVRfVklEX0ZNVF9SR0IsCj4gPiA+ICsJCVtaWU5RTVBfRFBTVUJfRk9STUFUX1lD UkNCNDQ0XSA9IFpZTlFNUF9ESVNQX1ZfQkxFTkRfT1VUUFVUX1ZJRF9GTVRfWUNCQ1I0NDQsCj4g PiA+ICsJCVtaWU5RTVBfRFBTVUJfRk9STUFUX1lDUkNCNDIyXSA9IFpZTlFNUF9ESVNQX1ZfQkxF TkRfT1VUUFVUX1ZJRF9GTVRfWUNCQ1I0MjIKPiA+ID4gKwkJCQkJICAgICAgIHwgWllOUU1QX0RJ U1BfVl9CTEVORF9PVVRQVVRfVklEX0ZNVF9FTl9ET1dOU0FNUExFLAo+ID4gPiArCQlbWllOUU1Q X0RQU1VCX0ZPUk1BVF9ZT05MWV0gPSBaWU5RTVBfRElTUF9WX0JMRU5EX09VVFBVVF9WSURfRk1U X1lPTkxZLAo+ID4gPiArCX07Cj4gPiA+ICsKPiA+ID4gKwl1MzIgZm10ID0gYmxlbmRfb3V0cHV0 X2ZtdHNbZm9ybWF0XTsKPiA+IAo+ID4gW3NuaXBdCj4gPiAKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArLyoqCj4gPiA+ICsgKiB6eW5xbXBfZGlzcF9ibGVuZF9sYXllcl9lbmFibGUgLSBFbmFibGUg YSBsYXllcgo+ID4gPiArICogQGJsZW5kOiBCbGVuZGVyIG9iamVjdAo+ID4gPiArICogQGxheWVy OiBUaGUgbGF5ZXIKPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIHZvaWQgenlucW1wX2Rpc3BfYmxl bmRfbGF5ZXJfZW5hYmxlKHN0cnVjdCB6eW5xbXBfZGlzcF9ibGVuZCAqYmxlbmQsCj4gPiA+ICsJ CQkJCSAgIHN0cnVjdCB6eW5xbXBfZGlzcF9sYXllciAqbGF5ZXIpCj4gPiA+ICt7Cj4gPiA+ICsJ Y29uc3QgdTE2ICpjb2VmZnM7Cj4gPiA+ICsJY29uc3QgdTMyICpvZmZzZXRzOwo+ID4gPiArCXUz MiB2YWw7Cj4gPiA+ICsKPiA+ID4gKwl2YWwgPSAobGF5ZXItPmRybV9mbXQtPmlzX3l1diA/Cj4g PiA+ICsJICAgICAgIDAgOiBaWU5RTVBfRElTUF9WX0JMRU5EX0xBWUVSX0NPTlRST0xfUkdCKQo+ ID4gPiArCSAgICB8IChsYXllci0+ZHJtX2ZtdC0+aHN1YiA+IDEgPwo+ID4gCj4gPiBEaXR0byBm b3IgJ3wnLgo+ID4gCj4gPiA+ICsJICAgICAgIFpZTlFNUF9ESVNQX1ZfQkxFTkRfTEFZRVJfQ09O VFJPTF9FTl9VUyA6IDApOwo+ID4gPiArCj4gPiA+ICsJenlucW1wX2Rpc3BfYmxlbmRfd3JpdGUo YmxlbmQsCj4gPiA+ICsJCQkJWllOUU1QX0RJU1BfVl9CTEVORF9MQVlFUl9DT05UUk9MKGxheWVy LT5pZCksCj4gPiAKPiA+IFtzbmlwXQo+ID4gCj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRp YyBpbnQgenlucW1wX2Rwc3ViX2RybV9pbml0KHN0cnVjdCB6eW5xbXBfZHBzdWIgKmRwc3ViKQo+ ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07Cj4gPiA+ICsJaW50IHJldDsK PiA+ID4gKwo+ID4gPiArCWRybSA9IGRybV9kZXZfYWxsb2MoJnp5bnFtcF9kcHN1Yl9kcm1fZHJp dmVyLCBkcHN1Yi0+ZGV2KTsKPiA+ID4gKwlpZiAoSVNfRVJSKGRybSkpCj4gPiA+ICsJCXJldHVy biBQVFJfRVJSKGRybSk7Cj4gPiA+ICsKPiA+ID4gKwlkcHN1Yi0+ZHJtID0gZHJtOwo+ID4gPiAr CWRybS0+ZGV2X3ByaXZhdGUgPSBkcHN1YjsKPiA+ID4gKwo+ID4gPiArCS8qIEluaXRpYWxpemUg bW9kZSBjb25maWcsIHZibGFuayBhbmQgdGhlIEtNUyBwb2xsIGhlbHBlci4gKi8KPiA+ID4gKwlk cm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwo+ID4gPiArCj4gPiA+ICsJZHJtLT5tb2RlX2NvbmZp Zy5mdW5jcyA9ICZ6eW5xbXBfZHBzdWJfbW9kZV9jb25maWdfZnVuY3M7Cj4gPiAKPiA+IFtzbmlw XQo+ID4gCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHp5 bnFtcF9kcHN1Yl9kcml2ZXIpOwo+ID4gPiArCj4gPiA+ICtNT0RVTEVfQVVUSE9SKCJYaWxpbngs IEluYy4iKTsKPiA+ID4gK01PRFVMRV9ERVNDUklQVElPTigiWnlucU1QIERQIFN1YnN5c3RlbSBE cml2ZXIiKTsKPiA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFtcF9kcHN1Yi5oIGIvZHJpdmVycy9ncHUvZHJt L3hsbngvenlucW1wX2Rwc3ViLmgKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi5kNGUwNjEzZDJmODIKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC96eW5xbXBfZHBzdWIuaAo+ID4gPiBAQCAtMCwwICsx LDQ4IEBACj4gPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ID4g PiArLyoKPiA+ID4gKyAqIFp5bnFNUCBEUFNVQiBTdWJzeXN0ZW0gRHJpdmVyCj4gPiA+ICsgKgo+ ID4gPiArICogQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOSBYaWxpbngsIEluYy4KPiA+ID4gKyAq Cj4gPiA+ICsgKiBBdXRob3JzOgo+ID4gPiArICogLSBIeXVuIFdvbyBLd29uIDxoeXVuLmt3b25A eGlsaW54LmNvbT4KPiA+ID4gKyAqIC0gTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFy dEBpZGVhc29uYm9hcmQuY29tPgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpZm5kZWYgX1pZ TlFNUF9EUFNVQl9IXwo+ID4gPiArI2RlZmluZSBfWllOUU1QX0RQU1VCX0hfCj4gPiA+ICsKPiA+ ID4gK3N0cnVjdCBjbGs7Cj4gPiA+ICtzdHJ1Y3QgZGV2aWNlOwo+ID4gPiArc3RydWN0IGRybV9k ZXZpY2U7Cj4gPiA+ICtzdHJ1Y3QgenlucW1wX2Rpc3A7Cj4gPiA+ICtzdHJ1Y3QgenlucW1wX2Rw Owo+ID4gPiArCj4gPiA+ICtlbnVtIHp5bnFtcF9kcHN1Yl9mb3JtYXQgewo+ID4gPiArCVpZTlFN UF9EUFNVQl9GT1JNQVRfUkdCLAo+ID4gPiArCVpZTlFNUF9EUFNVQl9GT1JNQVRfWUNSQ0I0NDQs Cj4gPiA+ICsJWllOUU1QX0RQU1VCX0ZPUk1BVF9ZQ1JDQjQyMiwKPiA+ID4gKwlaWU5RTVBfRFBT VUJfRk9STUFUX1lPTkxZLAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBz dHJ1Y3QgenlucW1wX2Rwc3ViIC0gWnlucU1QIERpc3BsYXlQb3J0IFN1YnN5c3RlbQo+ID4gPiAr ICogQGRybTogVGhlIERSTS9LTVMgZGV2aWNlCj4gPiA+ICsgKiBAZGV2OiBUaGUgcGh5c2ljYWwg ZGV2aWNlCj4gPiA+ICsgKiBAZGlzcDogVGhlIGRpc3BsYXkgY29udHJvbGxlcgo+ID4gPiArICog QGRwOiBUaGUgRGlzcGxheVBvcnQgY29udHJvbGxlcgo+ID4gPiArICogQGFsaWduOiBCdWZmZXIg cGl0Y2ggYWxpZ25tZW50IGNvbnN0cmFpbnQgKG11c3QgYmUgYSBwb3dlciBvZiAyKQo+ID4gCj4g PiBUaGlzIGlzIGEgbGl0dGxlIG1pc2xlYWRpbmcuIFRoZSBhbGluZ21lbnQgbGltaXRhdGlvbiBp cyBmcm9tIERNQS4KPiA+IFRoZSBkZWRpY2F0ZWQgRE1BIHJlcXVpcmVzIDI1NiBieXRlIGFsaWdu bWVudCwgZm9yIGV4YW1wbGUuCj4gCj4gWW91J3JlIHJpZ2h0LCBJJ2xsIHJlcGhyYXNlIHRoYXQg YXMgIkRNQSBhbGlnbm1lbnQgY29uc3RyYWludCAobXVzdCBiZSBhCj4gcG93ZXIgb2YgMikiIGFu ZCB3aWxsIHJlbmFtZSB0aGUgZmllbGQgdG8gZG1hX2FsaWduLgo+IAo+ID4gPiArICovCj4gPiA+ ICtzdHJ1Y3QgenlucW1wX2Rwc3ViIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ID4gKwo+ID4gPiArCXN0cnVjdCBjbGsgKmFw Yl9jbGs7Cj4gPiAKPiA+IFRoZSBkZXNjcmlwdGlvbiBpcyBtaXNzaW5nIGZvciB0aGlzIG9uZS4K PiAKPiBPb3BzLCBJJ2xsIGZpeCB0aGF0Lgo+IAo+ID4gPiArCj4gPiA+ICsJc3RydWN0IHp5bnFt cF9kaXNwICpkaXNwOwo+ID4gPiArCXN0cnVjdCB6eW5xbXBfZHAgKmRwOwo+ID4gPiArCj4gPiA+ ICsJdW5zaWduZWQgaW50IGFsaWduOwo+ID4gCj4gPiBJIGRvbid0IHRoaW5rIHRoaXMgdmFyaWFi bGUgaXMgbmVlZGVkLCBidXQgbWF5YmUgaXQncyBzaW1wbGVyIHdpdGggdGhpcy4KPiAKPiBUaGUg YWxpZ25tZW50IGNvbnN0cmFpbnQgbmVlZHMgdG8gYmUgZW5mb3JjZWQgaW4KPiB6eW5xbXBfZHBz dWJfZHVtYl9jcmVhdGUoKSBhbmQgenlucW1wX2Rwc3ViX2ZiX2NyZWF0ZSgpLCBpbXBsZW1lbnRl ZCBpbgo+IHp5bnFtcF9kcHN1Yi5jLCB3aGljaCBtb2RlbHMgdGhlIHRvcC1sZXZlbCBEUk0vS01T IGRldmljZS4gVGhlIHZhbHVlIGlzCj4gcmV0cmlldmVkIGZyb20gdGhlIERQRE1BIGVuZ2luZSwg b25seSB2aXNpYmxlIHRvIHp5bnFtcF9kaXNwLmMsIHdoaWNoCj4gbW9kZWxzIHRoZSBkaXNwbGF5 IGNvbnRyb2xsZXIgcGFydCBvZiB0aGUgc3Vic3lzdGVtIChhbmQgdGh1cyB0aGUKPiBwbGFuZXMs IENSVEMsIGVuY29kZXIgYW5kIGNvbm5lY3RvcikuIFRoaXMgaXMgd2h5IEkndmUgYWRkZWQgdGhp cyBmaWVsZAo+IGhlcmUsIHRvIGNvbW11bmljYXRlIGJldHdlZW4gdGhlIHR3byBwYXJ0cy4KPiAK PiBUaGlzIGJlaW5nIHNhaWQsIG1heWJlIHdlIHNob3VsZCBtZXJnZSB6eW5xbXBfZHBzdWIuYyBh bmQgenlucW1wX2Rpc3AuYywKPiBhbmQgbWVyZ2Ugc3RydWN0IHp5bnFtcF9kaXNwIHdpdGggc3Ry dWN0IHp5bnFtcF9kcHN1Yi4gRG9pbmcgc28gd291bGQsIEkKPiB0aGluaywgc2ltcGxpZnkgdGhl IGNvZGUgYSBsaXR0bGUgYml0IGJ5IHJlbW92aW5nIGEgbG9naWNhbCBzcGxpdCB0aGF0Cj4gZG9l c24ndCByZWFsbHkgbWF0Y2ggdGhlIGRldmljZS4gSWYgeW91IGFncmVlIHdpdGggdGhpcywgdGhl biB0aGUgYWxpZ24KPiBtZW1iZXIgY291bGQgYmUgcmVtb3ZlZC4gSSB3b3VsZCBob3dldmVyIHBy ZWZlciBkb2luZyBzbyBvbiB0b3Agb2YgdGhpcwo+IHNlcmllcy4KPiAKCkdvdCBpdC4KCj4gPiA+ ICt9Owo+ID4gCj4gPiBJIHNraW1tZWQgdGhyb3VnaCwgYW5kIEkgb25seSBoYXZlIG1pbm9yIGNv bW1lbnRzIGFzIGFib3ZlLiBUaGFua3MgZm9yCj4gPiBjbGVhbi11cCEKPiAKPiBZb3UncmUgd2Vs Y29tZSA6LSkKPiAKPiA+IEFzIGFsc28gbm90ZWQgYWJvdmUgYW5kIGJyaWVmbHkgZGlzY3Vzc2Vk IG9mZmxpbmUsIHNpbmNlIGEgbG90IG9mIGNvZGVzIHdlcmUKPiA+IHRyaW1tZWQgb3V0IGluIHRo aXMgc2V0LCBpdCdkIGJlIGhlbHBmdWwgdG8ga25vdyBob3cgdG8gYnJpbmcgdGhvc2UgYmFjawo+ ID4gcHJvcGVybHksIHNvIHRoZSB1cHN0cmVhbSBvbmUgY2FuIHN0YWJpbGl6ZSBpbiByZWFzb25h YmxlIHRpbWVmcmFtZS4gQWxzbywKPiA+IHRoaXMgaXMgcmVsYXRlZCB0byBob3cgaXQgc2hvdWxk IGJlIG1haW50YWluZWQgYmV0d2VlbiB1cHN0cmVhbSBhbmQgeGlsaW54Cj4gPiB0cmVlcy4gV2Ug Y2FuIGRpc2N1c3MgZGV0YWlscyBvZmZsaW5lIGFzIHdlbGwuCj4gCj4gSWRlYWxseSB0aGVyZSBz aG91bGQgYmUgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHVwc3RyZWFtIGFuZCB0aGUgWGlsaW54Cj4g dHJlZXMgOi0pIEFuIHVwc3RyZWFtLWZpcnN0IGFwcHJvYWNoIG1ha2VzIHRob3NlIGlzc3VlcyBn byBhd2F5LiBPZgo+IGNvdXJzZSB0aGF0IG1heSBjb25mbGljdCB3aXRoIFhpbGlueCdzIHNjaGVk dWxlLCBzbyBzb21lIG1pZGRsZSBncm91bmQKPiB1c3VhbGx5IG5lZWRzIHRvIGJlIGZvdW5kLgo+ IAo+IEFzIG5vdGVkIGFib3ZlLCBJJ2QgbGlrZSB0byBkaXNjdXNzIHByaW9yaXRpZXMgYW5kIHVz ZSBjYXNlcyBmb3IgdGhlCj4gbWlzc2luZyBmZWF0dXJlcywgYW5kIEkgd2lsbCB0aGVuIHdvcmsg b24gdGhlbS4KCkFncmVlZC4gSXQganVzdCBzb21ldGltZXMgZ2V0cyBkaWZmaWN1bHQgdG8gc3Bl bmQgY29udGludW91cyBlZmZvcnQsIGFuZCB3ZQphcmUgd29ya2luZyB0byBpbXByb3ZlLiBPbmUg bWlzc2luZyBpdGVtIGlzIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gWGlsaW54CnNwZWNpZmljIGZv cm1hdHMuIFRob3NlIGNhbiBiZSBkaXNjdXNzZWQgb2ZmbGluZSBhcyBzb21lIG90aGVyIGZvbGtz IG1heSBoYXZlCmJldHRlciBhbnN3ZXJzIG9uIHNvbWUuCgpUaGFua3MsCi1oeXVuCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=