From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyun Kwon Subject: Re: [PATCH v5 1/5] drm: xlnx: Xilinx DRM KMS module Date: Thu, 22 Feb 2018 18:23:18 -0800 Message-ID: <20180223022317.GA9544@smtp.xilinx.com> References: <1517967400-16993-1-git-send-email-hyun.kwon@xilinx.com> <1602665.SZ6qsW1oli@avalon> <20180222025042.GA26081@smtp.xilinx.com> <3578393.yJRbdMijlt@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <3578393.yJRbdMijlt@avalon> 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: "devicetree@vger.kernel.org" , Michal Simek , "dri-devel@lists.freedesktop.org" , Rob Herring , Daniel Vetter List-Id: devicetree@vger.kernel.org SGkgTGF1cmVudCwKCk9uIFRodSwgMjAxOC0wMi0yMiBhdCAwNTo0MDo1MCAtMDgwMCwgTGF1cmVu dCBQaW5jaGFydCB3cm90ZToKPiBIaSBIeXVuLAo+IAo+IE9uIFRodXJzZGF5LCAyMiBGZWJydWFy eSAyMDE4IDA0OjUwOjQyIEVFVCBIeXVuIEt3b24gd3JvdGU6Cj4gPiBPbiBXZWQsIDIwMTgtMDIt MjEgYXQgMTU6MTc6MjUgLTA4MDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiA+IE9uIFdl ZG5lc2RheSwgNyBGZWJydWFyeSAyMDE4IDAzOjM2OjM2IEVFVCBIeXVuIEt3b24gd3JvdGU6Cj4g PiA+PiBYaWxpbnggaGFzIHZhcmlvdXMgcGxhdGZvcm1zIGZvciBkaXNwbGF5LCB3aGVyZSB1c2Vy cyBjYW4gY3JlYXRlCj4gPiA+PiB1c2luZyBtdWx0aXBsZSBJUHMgaW4gdGhlIHByb2dyYW1tYWJs ZSBGUEdBIGZhYnJpYywgb3Igd2hlcmUKPiA+ID4+IHNvbWUgaGFyZGVuZWQgcGllcGxpbmUgaXMg YXZhaWxhYmxlIG9uIHRoZSBjaGlwLiBGdXJ0aGVybW9yZSwKPiA+ID4gCj4gPiA+IHMvcGllcGxp bmUvcGlwZWxpbmUvCj4gPiA+IAo+ID4gPj4gaGFyZGVuZWQgcGlwZWxpbmUgY2FuIGFsc28gaW50 ZXJhY3Qgd2l0aCBzb2Z0IGxvZ2ljcyBpbiBGUEdBLgo+ID4gPj4gCj4gPiA+PiBUaGUgWGlsaW54 IERSTSBLTVMgbW9kdWxlIGlzIHRvIGludGVncmF0ZSBtdWx0aXBsZSBzdWJkZXZpY2VzIGFuZAo+ ID4gPj4gdG8gcmVwcmVzZW50IHRoZSBlbnRpcmUgcGlwZWxpbmUgYXMgYSBzaW5nbGUgRFJNIGRl dmljZS4gVGhlIG1vZHVsZQo+ID4gPj4gaW5jbHVkZXMgaGVscGVyIChleCwgZnJhbWVidWZmZXIg YW5kIGdlbSBoZWxwZXJzKSBhbmQKPiA+ID4+IGdsdWUgbG9naWMgKGV4LCBjcnRjIGludGVyZmFj ZSkgZnVuY3Rpb25zLgo+ID4gPj4gCj4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBIeXVuIEt3b24gPGh5 dW4ua3dvbkB4aWxpbnguY29tPgo+ID4gPj4gQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmll bC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiA+PiAtLS0KPiA+ID4+IHY1Cj4gPiA+PiAtIFJlZGVmaW5l IHhsbnhfcGlwZWxpbmVfaW5pdCgpCj4gPiA+PiB2NAo+ID4gPj4gLSBGaXggYSBidWcgaW4gb2Yg Z3JhcGggYmluZGluZyBoYW5kbGluZwo+ID4gPj4gLSBSZW1vdmUgdmJsYW5rIGNhbGxiYWNrcyBm cm9tIHhsbnhfY3J0Ywo+ID4gPj4gLSBSZW1vdmUgdGhlIGR0IGJpbmRpbmcuIFRoaXMgbW9kdWxl IGJlY29tZXMgbW9yZSBsaWtlIGEgbGlicmFyeS4KPiA+ID4+IC0gUmVwaHJhc2UgdGhlIGNvbW1p dCBtZXNzYWdlCj4gPiA+PiB2Mwo+ID4gPj4gLSBBZGQgTGF1cmVudCBhcyBhIG1haW50YWluZXIK PiA+ID4+IC0gRml4IG11bHRpcGxlLXJlZmVyZW5jZSBvbiBnZW0gb2JqZWN0cwo+ID4gPj4gdjIK PiA+ID4+IC0gQ2hhbmdlIHRoZSBTUERYIGlkZW50aWZpZXIgZm9ybWF0Cj4gPiA+PiAtIE1lcmdl IHBhdGNoZXMoY3J0YywgZ2VtLCBmYikgaW50byBzaW5nbGUgb25lCj4gPiA+PiB2MiBvZiB4bG54 X2Rydgo+ID4gPj4gLSBSZW5hbWUga21zIHRvIGRpc3BsYXkgaW4geGxueF9kcnYKPiA+ID4+IC0g UmVwbGFjZSBzb21lIHhsbnggc3BlY2lmaWMgZmIgaGVscGVyIHdpdGggY29tbW9uIGhlbHBlcnMg aW4geGxueF9kcnYKPiA+ID4+IC0gRG9uJ3Qgc2V0IHRoZSBjb21taXQgdGFpbCBjYWxsYmFjayBp biB4bG54X2Rydgo+ID4gPj4gLSBTdXBwb3J0ICdwb3J0cycgZ3JhcGggYmluZGluZyBpbiB4bG54 X2Rydgo+ID4gPj4gdjIgb2YgeGxueF9mYgo+ID4gPj4gLSBSZW1vdmUgd3JhcHBlcnMgaW4geGxu eF9mYgo+ID4gPj4gLSBSZXBsYWNlIHNvbWUgZnVuY3Rpb25zIHdpdGggZHJtIGNvcmUgaGVscGVy cyBpbiB4bG54X2ZiCj4gPiA+PiAtLS0KPiA+ID4+IC0tLQo+ID4gPj4gCj4gPiA+PiAgTUFJTlRB SU5FUlMgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2Ry bS9LY29uZmlnICAgICAgICAgIHwgICAyICsKPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUgICAgICAgICB8ICAgMSArCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL3hsbngvS2NvbmZpZyAg ICAgfCAgMTIgKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS94bG54L01ha2VmaWxlICAgIHwgICAy ICsKPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2NydGMuYyB8IDE3NyArKysrKysr KysrKysrKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfY3J0Yy5oIHwgIDcwICsr KysrKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZHJ2LmMgIHwgNTAxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS94bG54 L3hsbnhfZHJ2LmggIHwgIDMzICsrKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhf ZmIuYyAgIHwgMjk4ICsrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+PiAgZHJpdmVycy9ncHUv ZHJtL3hsbngveGxueF9mYi5oICAgfCAgMzMgKysrCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL3hs bngveGxueF9nZW0uYyAgfCAgNDcgKysrKwo+ID4gPj4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3hs bnhfZ2VtLmggIHwgIDI2ICsrCj4gPiA+PiAgMTMgZmlsZXMgY2hhbmdlZCwgMTIxMSBpbnNlcnRp b25zKCspCj4gPiA+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L0tj b25maWcKPiA+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngvTWFr ZWZpbGUKPiA+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngveGxu eF9jcnRjLmMKPiA+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngv eGxueF9jcnRjLmgKPiA+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hs bngveGxueF9kcnYuYwo+ID4gPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v eGxueC94bG54X2Rydi5oCj4gPiA+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS94bG54L3hsbnhfZmIuYwo+ID4gPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0veGxueC94bG54X2ZiLmgKPiA+ID4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL3hsbngveGxueF9nZW0uYwo+ID4gPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0veGxueC94bG54X2dlbS5oCj4gCj4gW3NuaXBdCj4gCj4gPiA+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9jcnRjLmMKPiA+ID4+IGIvZHJpdmVycy9ncHUvZHJt L3hsbngveGxueF9jcnRjLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4+IGluZGV4IDAwMDAw MDAuLmRlODM5MDUKPiA+ID4+IC0tLSAvZGV2L251bGwKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS94bG54L3hsbnhfY3J0Yy5jCj4gCj4gW3NuaXBdCj4gCj4gPiA+PiArdWludDMyX3QgeGxu eF9jcnRjX2hlbHBlcl9nZXRfZm9ybWF0KHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIp Cj4gPiA+IAo+ID4gPiBZb3UgY2FuIHVzZSB0aGUgdTMyIHR5cGUgd2l0aGluIHRoZSBrZXJuZWwu Cj4gPiA+IAo+ID4gPj4gK3sKPiA+ID4+ICsJc3RydWN0IHhsbnhfY3J0YyAqY3J0YzsKPiA+ID4+ ICsJdTMyIGZvcm1hdCA9IDAsIHRtcDsKPiA+ID4+ICsKPiA+ID4+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjcnRjLCAmaGVscGVyLT54bG54X2NydGNzLCBsaXN0KSB7Cj4gPiA+PiArCQlpZiAoY3J0 Yy0+Z2V0X2Zvcm1hdCkgewo+ID4gPj4gKwkJCXRtcCA9IGNydGMtPmdldF9mb3JtYXQoY3J0Yyk7 Cj4gPiA+PiArCQkJaWYgKGZvcm1hdCAmJiBmb3JtYXQgIT0gdG1wKQo+ID4gPj4gKwkJCQlyZXR1 cm4gMDsKPiA+ID4+ICsJCQlmb3JtYXQgPSB0bXA7Cj4gPiA+IAo+ID4gPiBTYW1lIGNvbW1lbnRz IHJlZ2FyZGluZyB0aGUgdG1wIHZhcmlhYmxlIGFuZCB0aGUgbGlzdCBsb2NraW5nIGlzc3VlLgo+ ID4gPiAKPiA+ID4+ICsJCX0KPiA+ID4+ICsJfQo+ID4gPj4gKwo+ID4gPj4gKwlyZXR1cm4gZm9y bWF0Owo+ID4gPiAKPiA+ID4gRG9lcyB0aGlzIG1lYW4gdGhhdCB5b3VyIENSVENzIHN1cHBvcnQg YSBzaW5nbGUgZm9ybWF0IGVhY2ggb25seSA/Cj4gCj4gRG9lcyBpdCA/IDotKQo+ICAKPiA+ID4+ ICt9Cj4gCj4gW3NuaXBdCj4gCj4gPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hs bngveGxueF9kcnYuYwo+ID4gPj4gYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Rydi5jIG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+PiBpbmRleCAwMDAwMDAwLi44ZjBlMzU3Cj4gPiA+PiAt LS0gL2Rldi9udWxsCj4gPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Rydi5j Cj4gCj4gW3NuaXBdCj4gCj4gPiA+PiArc3RhdGljIGludCB4bG54X29mX2NvbXBvbmVudF9wcm9i ZShzdHJ1Y3QgZGV2aWNlICptYXN0ZXJfZGV2LAo+ID4gPj4gKwkJCQkgICBpbnQgKCpjb21wYXJl X29mKShzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKiksCj4gPiA+PiArCQkJCSAgIGNvbnN0IHN0cnVj dCBjb21wb25lbnRfbWFzdGVyX29wcyAqbV9vcHMpCj4gPiA+IAo+ID4gPiBBcyB0aGVyZSdzIGEg c2luZ2xlIHVzZXIgb2YgdGhpcyBmdW5jdGlvbiwgZG8geW91IG5lZWQgdG8gcGFzcyBjb21wYXJl X29mCj4gPiA+IGFzIGEgcGFyYW1ldGVyID8gQ291bGRuJ3QgeW91IG1vdmUgeGxueF9jb21wYXJl X29mKCkgYWJvdmUgYW5kIHVzZSBpdAo+ID4gPiBkaXJlY3RseSA/Cj4gPiA+IAo+ID4gPj4gK3sK PiA+ID4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gbWFzdGVyX2Rldi0+cGFyZW50Owo+ID4gPj4g KwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVwLCAqcG9ydCwgKnJlbW90ZSwgKnBhcmVudDsKPiA+ID4+ ICsJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2ggPSBOVUxMOwo+ID4gPj4gKwlpbnQgaTsK PiA+ID4gCj4gPiA+IGkgaXMgbmV2ZXIgbmVnYXRpdmUsIHlvdSBjYW4gbWFrZSBpdCB1bnNpZ25l ZC4KPiA+ID4gCj4gPiA+PiArCWlmICghZGV2LT5vZl9ub2RlKQo+ID4gPj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gPiA+PiArCj4gPiA+PiArCWNvbXBvbmVudF9tYXRjaF9hZGQobWFzdGVyX2Rldiwg Jm1hdGNoLCBjb21wYXJlX29mLCBkZXYtPm9mX25vZGUpOwo+ID4gPj4gKwo+ID4gPj4gKwlmb3Ig KGkgPSAwOyA7IGkrKykgewo+ID4gPj4gKwkJcG9ydCA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5v Zl9ub2RlLCAicG9ydHMiLCBpKTsKPiA+ID4gCj4gPiA+IEkgZG9uJ3Qgc2VlIHRoZSBwb3J0cyBw cm9wZXJ0eSBkb2N1bWVudGVkIGluIHRoZSBEVCBiaW5kaW5ncyBpbiBwYXRjaCAyLzUuCj4gPiA+ IEkgYXNzdW1lIHRoYXQncyBiZWNhdXNlIGl0IGhhcyBiZWVuIHJlbW92ZWQgaW4gdjQgYXMgc3Rh dGVkIGluIHRoZQo+ID4gPiBjaGFuZ2Vsb2cgOi0pIFlvdSBzaG91bGRuJ3QgbWFrZSB1c2Ugb2Yg aXQgdGhlbi4gSSd2ZSBza2lwcGVkIHJldmlld2luZwo+ID4gPiB0aGUgbG9naWMgZm9yIHRoZSBy ZXN0IG9mIHRoaXMgZnVuY3Rpb24gYXMgSSBuZWVkIHRvIHNlZSB0aGUKPiA+ID4gY29ycmVzcG9u ZGluZyBEVCBiaW5kaW5ncy4KPiA+IAo+ID4gR29vZCBjYXRjaCEgSSBuZWVkZWQgc29tZSBkaXNj dXNzaW9uIG9uIHRoaXMuIDotKSBUaGlzIGxvZ2ljIGlzIGFjdHVhbGx5Cj4gPiBpbnRlbmRlZCBm b3IgZnV0dXJlIGV4dGVudGlvbiBhbmQgdXNlZCBmb3IgcGlwZWxpbmVzIHdpdGggbXVsdGlwbGUK PiA+IGNvbXBvbmVudHMgKGV4LCB0aGlzIGRyaXZlciB3aXRoIHNvZnQgSVBzLCBvciBtdWx0aXBs ZSBzb2Z0IElQcyksIHdoZXJlIHRoZQo+ID4gZHQgZGVzY3JpYmVzIGl0cyBvd24gdG9wb2xvZ3kg b2YgdGhlIHBpcGVsaW5lLiBTb21lIHBhcnQgb2YgdGhpcyBsb2dpYyBpcwo+ID4gYWN0aXZlbHkg dXNlZCB3aXRoIGRvd25zdHJlYW0gZHJpdmVycywgYnV0IEkgY2FuIHNpbXBsaWZ5IHRoaXMgbG9n aWMKPiA+IChyZW1vdmUgbG9naWMgbm90IG5lZWRlZCBieSB0aGlzIHNldCkgYW5kIHJldmVydCBi YWNrIHdoZW4gaXQncyBhY3R1YWxseQo+ID4gbmVlZGVkLgo+ID4gCj4gPiBUaGVuIGFzIHlvdSBj b21tZW50ZWQsIHRoZSBkdCBiaW5kaW5nIGZvciB0aGlzIG1vZHVsZSBpcyBnb25lLCBzbyB0aGUK PiA+IGJlaGF2aW9yIG9mIHRoaXMgbG9naWMgaXMgZG9jdW1lbnRlZCBpbiB0aGUgZnVuY3Rpb24g ZGVzY3JpcHRpb24sIHRyZWF0aW5nCj4gPiB0aGUgZnVuY3Rpb24gYXMgYSBoZWxwZXIuIFNvIG15 IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcKPiA+IGRyaXZlciB0aGF0IGNh bGxzIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGRvY3VtZW50IHRoZSBkdCBiaW5kaW5nIGluIGl0cyBv d24uCj4gPiBBbmQgdGhlIERQIGRyaXZlciBpbiB0aGlzIHNldCBkb2Vzbid0IHN1cHBvcnQgc3Vj aCBiaW5kaW5nIHdpdGhvdXQgYW55IHNvZnQKPiA+IElQIGRyaXZlcnMsIHRodXMgaXQgZG9lc24n dCBkb2N1bWVudCBpdCBhcyBvZiBub3cuCj4gCj4gSSBzdXNwZWN0ZWQgc28gOi0pIEkgdGhpbmsg dGhlIHRvcG9sb2d5IHNob3VsZCBpbmRlZWQgYmUgZGVzY3JpYmVkIGluIERUIGluIAo+IHRoYXQg Y2FzZS4gSG93ZXZlciwgbG9va2luZyBhdCB0aGUgY29kZSAoYXMgdGhhdCdzIG15IG9ubHkgc291 cmNlIG9mIAo+IGluZm9ybWF0aW9uIGdpdmVuIHRoZSBsYWNrIG9mIERUIGJpbmRpbmdzIGRvY3Vt ZW50YXRpb24pLCBpdCBzZWVtcyB0aGF0IHlvdSAKPiBwbGFuIHRvIHVzZSBhIHBvcnRzIHByb3Bl cnR5IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIHBoYW5kbGVzIHRvIGNvbXBvbmVudHMuIEkgCj4g YmVsaWV2ZSB3ZSBzaG91bGQgaW5zdGVhZCB1c2UgdGhlIE9GIGdyYXBoIGJpbmRpbmdzIHRvIG1v ZGVsIHRoZSBwaXBlbGluZSBpbiAKPiBEVCwgd2hpY2ggd291bGQgcmVxdWlyZSByZXdyaXRpbmcg dGhpcyBmdW5jdGlvbi4gSWYgeW91IHdhbnQgdG8gbWVyZ2UgdGhpcyAKPiBzZXJpZXMgd2l0aCBE VCBiaW5kaW5ncyBmb3IgbW9yZSBjb21wbGV4IHBpcGVsaW5lcyBJIHdvdWxkIHRodXMgZHJvcCB0 aGlzIAo+IGNvZGUuCgpTdXJlLiBJJ20gZmluZSBkcm9wcGluZyB0aGlzIGZvciBub3cuIFRvIG5v dGUsIHRoaXMgaXMgYmFzZWQgb24KZHJtX29mX2NvbXBvbmVudF9wcm9iZSgpLCBhbmQgaXRzIGJp bmRpbmdzIGFyZSBzdHJ1Y3R1cmVkIGluIGEgd2F5IHdoZXJlCnRoZSBtYXN0ZXIgaGFzIHBoYW5k bGVzIHRvIGNydGMgbm9kZXMsIGFuZCBiZXR3ZWVuIGNydGMgbm9kZXMgYW5kIGVuY29kZXIKbm9k ZXMsIHRoZSBncmFwaCBiaW5kaW5ncyBhcmUgdXNlZC4gSSBiZWxpZXZlIGJpbmRpbmdzIG1ha2Ug c2Vuc2UsIHRodXMKdGhpcyBmb2xsb3dzLgoKPiAKPiBJIGhhdmUgcmVsYXRlZCBjb21tZW50cyBv biB0aGUgWnlucU1QIERQIHN1YnN5c3RlbSBiaW5kaW5ncywgSSdsbCByZXBseSB0byAKPiBwYXRj aCAyLzUuCj4gCj4gPiA+PiArCQlpZiAoIXBvcnQpCj4gPiA+PiArCQkJYnJlYWs7Cj4gPiA+PiAr Cj4gPiA+PiArCQlwYXJlbnQgPSBwb3J0LT5wYXJlbnQ7Cj4gPiA+PiArCQlpZiAoIW9mX25vZGVf Y21wKHBhcmVudC0+bmFtZSwgInBvcnRzIikpCj4gPiA+PiArCQkJcGFyZW50ID0gcGFyZW50LT5w YXJlbnQ7Cj4gPiA+PiArCQlwYXJlbnQgPSBvZl9ub2RlX2dldChwYXJlbnQpOwo+ID4gPiAKPiA+ ID4gSSd2ZSByZWNlbnRseSBmb3VuZCBvdXQgdGhhdCBkZXJlZmVyZW5jaW5nIGEgZGV2aWNlX25v ZGUgcGFyZW50IGRpcmVjdGx5Cj4gPiA+IGlzIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucy4gWW91 IHNob3VsZCB1c2Ugb2ZfZ2V0X3BhcmVudCgpIGluc3RlYWQgKG9yCj4gPiA+IG9mX2dldF9uZXh0 X3BhcmVudCgpIGFzIGFwcHJvcHJpYXRlIHRvIG1ha2UgZGV2aWNlX25vZGUgcmVmZXJlbmNlIGhh bmRsaW5nCj4gPiA+IGVhc2llcikuCj4gPiA+IAo+ID4gPj4gKwo+ID4gPj4gKwkJaWYgKCFvZl9k ZXZpY2VfaXNfYXZhaWxhYmxlKHBhcmVudCkpIHsKPiA+ID4+ICsJCQlvZl9ub2RlX3B1dChwYXJl bnQpOwo+ID4gPj4gKwkJCW9mX25vZGVfcHV0KHBvcnQpOwo+ID4gPj4gKwkJCWNvbnRpbnVlOwo+ ID4gPj4gKwkJfQo+ID4gPj4gKwo+ID4gPj4gKwkJY29tcG9uZW50X21hdGNoX2FkZChtYXN0ZXJf ZGV2LCAmbWF0Y2gsIGNvbXBhcmVfb2YsIHBhcmVudCk7Cj4gPiA+PiArCQlvZl9ub2RlX3B1dChw YXJlbnQpOwo+ID4gPj4gKwkJb2Zfbm9kZV9wdXQocG9ydCk7Cj4gPiA+PiArCX0KPiA+ID4+ICsK PiA+ID4+ICsJcGFyZW50ID0gZGV2LT5vZl9ub2RlOwo+ID4gPj4gKwlmb3IgKGkgPSAwOyA7IGkr Kykgewo+ID4gPj4gKwkJcGFyZW50ID0gb2Zfbm9kZV9nZXQocGFyZW50KTsKPiA+ID4+ICsJCWlm ICghb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShwYXJlbnQpKSB7Cj4gPiA+PiArCQkJb2Zfbm9kZV9w dXQocGFyZW50KTsKPiA+ID4+ICsJCQljb250aW51ZTsKPiA+ID4+ICsJCX0KPiA+ID4+ICsKPiA+ ID4+ICsJCWZvcl9lYWNoX2VuZHBvaW50X29mX25vZGUocGFyZW50LCBlcCkgewo+ID4gPj4gKwkJ CXJlbW90ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApOwo+ID4gPj4gKwkJ CWlmICghcmVtb3RlIHx8ICFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKHJlbW90ZSkgfHwKPiA+ID4+ ICsJCQkgICAgcmVtb3RlID09IGRldi0+b2Zfbm9kZSkgewo+ID4gPj4gKwkJCQlvZl9ub2RlX3B1 dChyZW1vdGUpOwo+ID4gPj4gKwkJCQljb250aW51ZTsKPiA+ID4+ICsJCQl9IGVsc2UgaWYgKCFv Zl9kZXZpY2VfaXNfYXZhaWxhYmxlKHJlbW90ZS0+cGFyZW50KSkgewo+ID4gPj4gKwkJCQlkZXZf d2FybihkZXYsICJwYXJlbnQgZGV2IG9mICVzIHVuYXZhaWxhYmxlXG4iLAo+ID4gPj4gKwkJCQkJ IHJlbW90ZS0+ZnVsbF9uYW1lKTsKPiA+ID4+ICsJCQkJb2Zfbm9kZV9wdXQocmVtb3RlKTsKPiA+ ID4+ICsJCQkJY29udGludWU7Cj4gPiA+PiArCQkJfQo+ID4gPj4gKwkJCWNvbXBvbmVudF9tYXRj aF9hZGQobWFzdGVyX2RldiwgJm1hdGNoLCBjb21wYXJlX29mLAo+ID4gPj4gKwkJCQkJICAgIHJl bW90ZSk7Cj4gPiA+PiArCQkJb2Zfbm9kZV9wdXQocmVtb3RlKTsKPiA+ID4+ICsJCX0KPiA+ID4+ ICsJCW9mX25vZGVfcHV0KHBhcmVudCk7Cj4gPiA+PiArCj4gPiA+PiArCQlwb3J0ID0gb2ZfcGFy c2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJwb3J0cyIsIGkpOwo+ID4gPj4gKwkJaWYgKCFwb3J0 KQo+ID4gPj4gKwkJCWJyZWFrOwo+ID4gPj4gKwo+ID4gPj4gKwkJcGFyZW50ID0gcG9ydC0+cGFy ZW50Owo+ID4gPj4gKwkJaWYgKCFvZl9ub2RlX2NtcChwYXJlbnQtPm5hbWUsICJwb3J0cyIpKQo+ ID4gPj4gKwkJCXBhcmVudCA9IHBhcmVudC0+cGFyZW50Owo+ID4gPj4gKwkJb2Zfbm9kZV9wdXQo cG9ydCk7Cj4gPiA+PiArCX0KPiA+ID4+ICsKPiA+ID4+ICsJcmV0dXJuIGNvbXBvbmVudF9tYXN0 ZXJfYWRkX3dpdGhfbWF0Y2gobWFzdGVyX2RldiwgbV9vcHMsIG1hdGNoKTsKPiA+ID4+ICt9Cj4g Cj4gW3NuaXBdCj4gCj4gPiA+PiArLyogYml0bWFwIGZvciBtYXN0ZXIgaWQgKi8KPiA+ID4+ICtz dGF0aWMgdTMyIHhsbnhfbWFzdGVyX2lkcyA9IEdFTk1BU0soMzEsIDApOwo+ID4gPj4gKwo+ID4g Pj4gKy8qKgo+ID4gPj4gKyAqIHhpbGlueF9kcm1fcGlwZWxpbmVfaW5pdCAtIEluaXRpYWxpemUg dGhlIGRybSBwaXBlbGluZSBmb3IgdGhlCj4gPiA+PiBkZXZpY2UKPiA+ID4+ICsgKiBAcGRldjog VGhlIHBsYXRmb3JtIGRldmljZSB0byBpbml0aWFsaXplIHRoZSBkcm0gcGlwZWxpbmUgZGV2aWNl Cj4gPiA+PiArICoKPiA+ID4+ICsgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBkcm0g cGlwZWxpbmUgZGV2aWNlLCBzdHJ1Y3QKPiA+ID4+IGRybV9kZXZpY2UsCj4gPiA+PiArICogb24g QHBkZXYgYnkgY3JlYXRpbmcgYSBsb2dpY2FsIG1hc3RlciBwbGF0Zm9ybSBkZXZpY2UuIFRoZSBs b2dpY2FsCj4gPiA+PiBwbGF0Zm9ybQo+ID4gPj4gKyAqIGRldmljZSBhY3RzIGFzIGEgbWFzdGVy IGRldmljZSB0byBiaW5kIHNsYXZlIGRldmljZXMgYW5kIHJlcHJlc2VudHMKPiA+ID4+ICsgKiB0 aGUgZW50aXJlIHBpcGVsaW5lLgo+ID4gPiAKPiA+ID4gSSdtIHNvcnJ5IHRvIGFzayB0aGlzIHF1 ZXN0aW9uIHNvIGxhdGUsIGJ1dCBjb3VsZG4ndCB5b3UgZG8gd2l0aG91dCB0aGF0Cj4gPiA+IHBs YXRmb3JtIGRldmljZSA/IEkgZG9uJ3QgcmVhbGx5IHNlZSB3aGF0IGl0IGJyaW5ncyB5b3UuCj4g PiAKPiA+IEl0IGlzIGZpbmUgd2l0aG91dCB0aGlzIGluIGN1cnJlbnQgc2V0IHdoZXJlIHRoZXJl IGlzIG9ubHkgb25lIGNvbXBvbmVudCwKPiA+IGJ1dCBpdCBkb2Vzbid0IHNjYWxlIHdpdGggY29t cGxleCBwaXBlbGluZXMgd2hlcmUgc29mdCBhbmQgaGFyZGVuZWQgSVAKPiA+IGRyaXZlcnMgY2Fu IGJlIG1peGVkLiBUaGVyZSBjYW4gYmUgY2FzZXMgd2hlcmUgbXVsdGlwbGUgbWFzdGVyIGRldmlj ZXMKPiA+IGV4aXN0IGluIGEgc2luZ2xlIHBpcGVsaW5lLCBhbmQgdGhpcyBpcyBpbnRlbmRlZCB0 byB1bmlmaXkgYW5kIHNpbXBsaWZ5IHRoZQo+ID4gbW9kZWwgYnkgY3JlYXRpbmcgYSBsb2dpY2Fs IG1hc3RlciBhbmQgYWxsb3dpbmcgYWxsIGRyaXZlcnMgdG8gYmUgYm91bmQgYXMKPiA+IHJlZ3Vs YXIgY29tcG9uZW50cy4KPiAKPiBJbiBvcmRlciB0byB1bmRlcnN0YW5kIGhvdyB5b3UgaW50ZW5k IHRoaXMgdG8gd29yayB3aXRoIG1vcmUgY29tcGxleCAKPiBwaXBlbGluZXMsIGNvdWxkIHlvdSBn aXZlIG1lIGEgcmVhbCBsaWZlIGV4YW1wbGUgdGhhdCBjYW4gc2VydmUgYXMgYSBiYXNpcyBmb3Ig Cj4gZGlzY3Vzc2lvbnMgPwoKVGhlIERQIGRyaXZlciBpbiB0aGlzIHNldCBpcyBzaW5nbGUgY29t cG9uZW50IHBpcGVsaW5lLiBUaGUgZGV2aWNlIG5vZGUgZG9lc24ndApyZWZlcmVuY2UgYW55IGV4 dGVybmFsIG5vZGVzOgoKCXNpbmdsZSBaeW5xTVAgRFAgY29tcG9uZW50CgpIZXJlIHRoZSBEUCBk cml2ZXIgd291bGQgY3JlYXRlIGEgbG9naWNhbCBtYXN0ZXIsIGFuZCB0aGUgbWFzdGVyIGJpbmRz IHdpdGgKRFAuCgpUaGVyZSBjYW4gYmUgc29mdCBJUCBwaXBlbGluZXMgd2l0aCBtdWx0aXBsZSBj b21wb25lbnRzIChlYWNoIG9uZSBiZWxvdyBpcwphbiBpbmRlcGVuZGVudCBwaXBlbGluZSk6CgoJ U29mdCBJUCBNaXhlciBjb21wb25lbnQgKGNydGMpIDwtPiBTREkgdHggY29tcG9uZW50IChlbmNv ZGVyKQoKCVNvZnQgSVAgTWl4ZXIgY29tcG9uZW50IChjcnRjKSA8LT4gRFNJIHR4IGNvbXBvbmVu dCAoZW5jb2RlcikKCglTT2Z0IElQIHNpbXBsZSBETUEgKGNydGMpIDwtPiBEU0kgdHggbm9kZSAo ZW5jb2RlcikKCgkuLi4KCkhlcmUsIGFueSBDUlRDIGRyaXZlciB3b3VsZCBjcmVhdGUgYSBsb2dp Y2FsIG1hc3RlciwgYW5kIHRoZSBtYXN0ZXIgYmluZHMgd2l0aApib3RoIGNydGMgYW5kIGVuY29k ZXIgY29tcG9uZW50cyBhY2NvcmRpbmdseS4KClRob3NlIHR3byBjYW4gYmUgbWl4ZWQsIHdoZXJl IG91dHB1dCBvZiB0aGUgbWl4ZXIgaXMgY29ubmVjdGVkIHRvIERQIGlucHV0OgoKCQkJCQlaeW5x TVAgRFAgY29tcG9uZW50CgkJCQkJICAgICB8CglTb2Z0IElQIE1peGVyIGNvbXBvbmVudCAoY3J0 YykgLS0tLS0tLQoKSW4gdGhpcyBjYXNlLCBvbmx5IG9uZSBtYXN0ZXIgbmVlZHMgdG8gYmUgY3Jl YXRlZCBhbmQgYmluZCB3aXRoIG1peGVyIGNvbXBvbmVudAphcyB3ZWxsIGFzIERQIGNvbXBvbmVu dC4KClNvLCBteSBpbnRlbnRpb24gaXMgdG8gaGF2ZSBhIHNpbmdsZSBsb2dpY2FsIG1hc3RlciBm b3Igb25lIGVudGlyZSBwaXBlbGluZQphbmQgbWFrZSBhbGwgb3RoZXIgZGV2aWNlcyBpbiB0aGUg cGlwZWxpbmUgYXMgcmVndWxhciBjb21wb25lbnRzIHRvIGJlIGJvdW5kCndpdGggdGhlIG1hc3Rl ci4KClRoYW5rcywKLWh5dW4KCj4gCj4gPiA+PiArICogVGhlIGxvZ2ljYWwgbWFzdGVyIHVzZXMg dGhlIHBvcnQgYmluZGluZ3Mgb2YgdGhlIGNhbGxpbmcgZGV2aWNlIHRvCj4gPiA+PiArICogZmln dXJlIG91dCB0aGUgcGlwZWxpbmUgdG9wb2xvZ3kuCj4gPiA+PiArICoKPiA+ID4+ICsgKiBSZXR1 cm46IHRoZSBsb2dpY2FsIG1hc3RlciBwbGF0Zm9ybSBkZXZpY2UgaWYgdGhlIGRybSBkZXZpY2Ug aXMKPiA+ID4+IGluaXRpYWxpemVkCj4gPiA+PiArICogb24gQHBkZXYuIEVycm9yIGNvZGUgb3Ro ZXJ3aXNlLgo+ID4gPj4gKyAqLwo+ID4gPj4gK3N0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnhsbnhf ZHJtX3BpcGVsaW5lX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZQo+ID4gPj4gKnBkZXYpCj4g PiA+PiArewo+ID4gPj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICptYXN0ZXI7Cj4gPiA+PiAr CWludCBpZCwgcmV0Owo+ID4gPj4gKwo+ID4gPiAKPiA+ID4gSXMgdGhlcmUgYW55IHJpc2sgb2Yg YSByYWNlIGJldHdlZW4gY29uY3VycmVudCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBvcgo+ID4g PiB0byB0aGlzIGZ1bmN0aW9uIGFuZCB4bG54X2RybV9waXBlbGluZV9leGl0KCkgPwo+ID4gPiAK PiA+ID4+ICsJaWQgPSBmZnMoeGxueF9tYXN0ZXJfaWRzKTsKPiA+ID4+ICsJaWYgKCFpZCkKPiA+ ID4+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9TUEMpOwo+ID4gPj4gKwo+ID4gPj4gKwltYXN0ZXIg PSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2MoInhsbngtZHJtIiwgaWQgLSAxKTsKPiA+ID4+ICsJaWYg KCFtYXN0ZXIpCj4gPiA+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ID4+ICsKPiA+ ID4+ICsJbWFzdGVyLT5kZXYucGFyZW50ID0gJnBkZXYtPmRldjsKPiA+ID4+ICsJcmV0ID0gcGxh dGZvcm1fZGV2aWNlX2FkZChtYXN0ZXIpOwo+ID4gPj4gKwlpZiAocmV0KQo+ID4gPj4gKwkJZ290 byBlcnJfb3V0Owo+ID4gPiAKPiA+ID4gQXMgdGhpcyBpcyB0aGUgb25seSBsb2NhdGlvbiB3aGVy ZSB5b3UganVtcCB0byB0aGUgZXJyb3IgcGF0aCBJIHdvdWxkCj4gPiA+IGlubGluZSBpdC4KPiA+ ID4gCj4gPiA+PiArCj4gPiA+PiArCVdBUk5fT04obWFzdGVyLT5pZCAhPSBpZCAtIDEpOwo+ID4g Pj4gKwl4bG54X21hc3Rlcl9pZHMgJj0gfkJJVChtYXN0ZXItPmlkKTsKPiA+ID4+ICsJcmV0dXJu IG1hc3RlcjsKPiA+ID4+ICsKPiA+ID4+ICtlcnJfb3V0Ogo+ID4gPj4gKwlwbGF0Zm9ybV9kZXZp Y2VfdW5yZWdpc3RlcihtYXN0ZXIpOwo+ID4gPj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4g Pj4gK30KPiA+ID4+ICtFWFBPUlRfU1lNQk9MX0dQTCh4bG54X2RybV9waXBlbGluZV9pbml0KTsK PiA+ID4+ICsKPiA+ID4+ICsvKioKPiA+ID4+ICsgKiB4aWxpbnhfZHJtX3BpcGVsaW5lX2V4aXQg LSBSZWxlYXNlIHRoZSBkcm0gcGlwZWxpbmUgZm9yIHRoZSBkZXZpY2UKPiA+ID4+ICsgKiBAbWFz dGVyOiBUaGUgbWFzdGVyIHBpcGVsaW5lIGRldmljZSB0byByZWxlYXNlCj4gPiA+PiArICoKPiA+ ID4+ICsgKiBSZWxlYXNlIHRoZSBsb2dpY2FsIHBpcGVsaW5lIGRldmljZSByZXR1cm5lZCBieQo+ ID4gPj4geGxueF9kcm1fcGlwZWxpbmVfaW5pdCgpLgo+ID4gPj4gKyAqLwo+ID4gPj4gK3ZvaWQg eGxueF9kcm1fcGlwZWxpbmVfZXhpdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICptYXN0ZXIpCj4g PiA+PiArewo+ID4gPj4gKwl4bG54X21hc3Rlcl9pZHMgfD0gQklUKG1hc3Rlci0+aWQpOwo+ID4g Pj4gKwlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihtYXN0ZXIpOwo+ID4gPj4gK30KPiA+ID4+ ICtFWFBPUlRfU1lNQk9MX0dQTCh4bG54X2RybV9waXBlbGluZV9leGl0KTsKPiAKPiBbc25pcF0K PiAKPiAtLSAKPiBSZWdhcmRzLAo+IAo+IExhdXJlbnQgUGluY2hhcnQKPiAKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==