From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Siqueira Subject: Re: [PATCH v2 2/3] drm/vkms: Add basic CRTC initialization Date: Sun, 20 May 2018 11:28:37 -0300 Message-ID: <20180520142837.tyfqair2m7wmyrfh@smtp.gmail.com> References: <20180520062231.GA24701@Haneen> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 517026E237 for ; Sun, 20 May 2018 14:28:43 +0000 (UTC) Received: by mail-qk0-x243.google.com with SMTP id b39-v6so9993242qkb.5 for ; Sun, 20 May 2018 07:28:43 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180520062231.GA24701@Haneen> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Haneen Mohammed Cc: dri-devel@lists.freedesktop.org, Sean Paul , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org SGkgSGFuZWVuLAoKVGhhbmtzIGZvciB0aGUgZmVlZGJhY2sgOikKCk9uIDA1LzIwLCBIYW5lZW4g TW9oYW1tZWQgd3JvdGU6Cj4gT24gV2VkLCBNYXkgMTYsIDIwMTggYXQgMDg6NTY6MjFQTSAtMDMw MCwgUm9kcmlnbyBTaXF1ZWlyYSB3cm90ZToKPiA+IFRoaXMgY29tbWl0IGFkZHMgdGhlIGVzc2Vu dGlhbCBpbmZyYXN0cnVjdHVyZSBmb3IgYXJvdW5kIENSVENzIHdoaWNoCj4gPiBpcyBjb21wb3Nl ZCBvZjogYSBuZXcgZGF0YSBzdHJ1Y3QgZm9yIG91dHB1dCBkYXRhIGluZm9ybWF0aW9uLCBhCj4g PiBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgcGxhbmVzLCBhbmQgYSBzaW1wbGUgZW5jb2RlciBhdHRh Y2hlZCB0byB0aGUKPiA+IGNvbm5lY3Rvci4gRmluYWxseSwgZHVlIHRvIHRoZSBpbnRyb2R1Y3Rp b24gb2YgYSBuZXcgaW5pdGlhbGl6YXRpb24KPiA+IGZ1bmN0aW9uLCBjb25uZWN0b3JzIHdlcmUg bW92ZWQgZnJvbSB2a21zX2Rydi5jIHRvIHZrbXNfZGlzcGxheS5jLgo+ID4gCj4gPiBTaWduZWQt b2ZmLWJ5OiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVpcmFtZWxvQGdtYWlsLmNvbT4K PiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlICAgICAgfCAgMiArLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jICAgfCAzNSArKysrKysrKysrKysK PiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jICAgIHwgNjAgKysrKysrLS0tLS0t LS0tLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oICAgIHwgMjQgKysr KysrKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX291dHB1dC5jIHwgOTEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19w bGFuZS5jICB8IDQ2ICsrKysrKysrKysrKysrKwo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMjExIGlu c2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX291dHB1dC5jCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfcGxhbmUuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmls ZQo+ID4gaW5kZXggMmFlZjk0OGQzYTM0Li4zZjc3NGE2YTljNTggMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zr bXMvTWFrZWZpbGUKPiA+IEBAIC0xLDMgKzEsMyBAQAo+ID4gLXZrbXMteSA6PSB2a21zX2Rydi5v Cj4gPiArdmttcy15IDo9IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmtt c19jcnRjLm8KPiA+ICAKPiA+ICBvYmotJChDT05GSUdfRFJNX1ZLTVMpICs9IHZrbXMubwo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jIGIvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmJmNzZjZDM5ZWNlNwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+IEBAIC0wLDAgKzEsMzUgQEAKPiA+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gKy8qCj4gPiArICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ID4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gPiArICogKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5j bHVkZSAidmttc19kcnYuaCIKPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+ Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ICsKPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIHZrbXNfY3J0Y19mdW5jcyA9IHsKPiA+ICsJLnNl dF9jb25maWcgICAgICAgICAgICAgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLAo+ID4g KwkuZGVzdHJveSAgICAgICAgICAgICAgICA9IGRybV9jcnRjX2NsZWFudXAsCj4gPiArCS5wYWdl X2ZsaXAgICAgICAgICAgICAgID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAo+ID4gKwku cmVzZXQgICAgICAgICAgICAgICAgICA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsCj4g PiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBs aWNhdGVfc3RhdGUsCj4gPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSAgID0gZHJtX2F0b21pY19o ZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlLAo+ID4gK307Cj4gPiArCj4gPiAraW50IHZrbXNfY3J0 Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ ICsJCSAgIHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksIHN0cnVjdCBkcm1fcGxhbmUgKmN1cnNv cikKPiA+ICt7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gCj4gSnVzdCBhcyBhIGZvbGxvdyB1cCwg SSBoYXZlIG5vdGljZWQgdGhhdCB2a21zIGJyZWFrcyB3aGVuIGluc3BlY3RpbmcKPiBpdHMgc3Rh dGUgaW4gdGhlIGRlYnVnZnMsIGFsc28gd2hlbiBydW5uaW5nIGlndCB0ZXN0cyB3aXRoIGttcyBh bmQgY29yZQo+IGZpbHRlcnMsIGFuZCBhZGRpbmcgdGhlIGZvbGxvd2luZyBmaXhlZCB0aGF0IGlz c3VlOgoKQ291bGQgeW91IGV4cGxhaW4gbWUgaG93IHlvdSB0ZXN0ZWQgdGhlIHN0YXRlIHdpdGgg ZGVidWdmcz8KCkkgd2lsbCBhZGQgdGhlIGZpeGVzIHN1Z2dlc3RlZCBpbiB5b3VyIGNvbW1lbnRz LgoKVGhhbmtzCiAKPiAxKSBhIGRybV9jcnRjX2hlbHBlcl9mdW5jcyB3aXRoIGR1bW15IGF0b21p Y19jaGVjay4KPiAKPiA+ICsJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcyhkZXYsIGNy dGMsIHByaW1hcnksIGN1cnNvciwKPiA+ICsJCQkJCSZ2a21zX2NydGNfZnVuY3MsIE5VTEwpOwo+ ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0IENSVENcbiIp Owo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4g K30KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYwo+ID4gaW5kZXggYWVjM2YxODBmOTZkLi4wNzA2 MTNlMzI5MzQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4gPiBAQCAtNiw3ICs2 LDYgQEAKPiA+ICAgKi8KPiA+ICAKPiA+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiAt I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gPiAg I2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWNfaGVscGVyLmg+Cj4gPiBAQCAtNTksMjUgKzU4LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X2RyaXZlciB2a21zX2RyaXZlciA9IHsKPiA+ICAJLm1pbm9yCQkJPSBEUklWRVJfTUlOT1IsCj4g PiAgfTsKPiA+ICAKPiA+IC1zdGF0aWMgY29uc3QgdTMyIHZrbXNfZm9ybWF0c1tdID0gewo+ID4g LQlEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVf Y29uZmlnX2Z1bmNzIHZrbXNfbW9kZV9mdW5jcyA9IHsKPiA+ICsJLmF0b21pY19jaGVjayA9IGRy bV9hdG9taWNfaGVscGVyX2NoZWNrLAo+ID4gKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdCwKPiA+ICB9Owo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIHZrbXNfY29ubmVj dG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICtzdGF0aWMg aW50IHZrbXNfbW9kZXNldF9pbml0KHN0cnVjdCB2a21zX2RldmljZSAqdmttc2RldikKPiA+ICB7 Cj4gPiAtCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+ID4gLQlkcm1fY29u bmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiA+IC19Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmdmttc2Rldi0+ZHJtOwo+ID4gIAo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9mdW5jcyB2a21zX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKPiA+IC0JLmZpbGxfbW9k ZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCj4gPiAtCS5kZXN0 cm95ID0gdmttc19jb25uZWN0b3JfZGVzdHJveSwKPiA+IC19Owo+ID4gKwlkcm1fbW9kZV9jb25m aWdfaW5pdChkZXYpOwo+ID4gKwlkZXYtPm1vZGVfY29uZmlnLmZ1bmNzID0gJnZrbXNfbW9kZV9m dW5jczsKPiA+ICsJZGV2LT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSBYUkVTX01JTjsKPiA+ICsJ ZGV2LT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gWVJFU19NSU47Cj4gPiArCWRldi0+bW9kZV9j b25maWcubWF4X3dpZHRoID0gWFJFU19NQVg7Cj4gPiArCWRldi0+bW9kZV9jb25maWcubWF4X2hl aWdodCA9IFlSRVNfTUFYOwo+ID4gIAo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVf Y29uZmlnX2Z1bmNzIHZrbXNfbW9kZV9mdW5jcyA9IHsKPiA+IC0JLmF0b21pY19jaGVjayA9IGRy bV9hdG9taWNfaGVscGVyX2NoZWNrLAo+ID4gLQkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdCwKPiA+IC19Owo+ID4gKwlyZXR1cm4gdmttc19vdXRwdXRfaW5pdCh2a21z ZGV2KTsKPiA+ICt9Cj4gPiAgCj4gPiAgc3RhdGljIGludCBfX2luaXQgdmttc19pbml0KHZvaWQp Cj4gPiAgewo+ID4gQEAgLTk4LDQ4ICs5NiwyNCBAQCBzdGF0aWMgaW50IF9faW5pdCB2a21zX2lu aXQodm9pZCkKPiA+ICAJCWdvdG8gb3V0X2Zpbmk7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JZHJtX21v ZGVfY29uZmlnX2luaXQoJnZrbXNfZGV2aWNlLT5kcm0pOwo+ID4gLQl2a21zX2RldmljZS0+ZHJt Lm1vZGVfY29uZmlnLmZ1bmNzID0gJnZrbXNfbW9kZV9mdW5jczsKPiA+IC0Jdmttc19kZXZpY2Ut PmRybS5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSBYUkVTX01JTjsKPiA+IC0Jdmttc19kZXZpY2Ut PmRybS5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gWVJFU19NSU47Cj4gPiAtCXZrbXNfZGV2aWNl LT5kcm0ubW9kZV9jb25maWcubWF4X3dpZHRoID0gWFJFU19NQVg7Cj4gPiAtCXZrbXNfZGV2aWNl LT5kcm0ubW9kZV9jb25maWcubWF4X2hlaWdodCA9IFlSRVNfTUFYOwo+ID4gLQo+ID4gLQlyZXQg PSBkcm1fY29ubmVjdG9yX2luaXQoJnZrbXNfZGV2aWNlLT5kcm0sICZ2a21zX2RldmljZS0+Y29u bmVjdG9yLAo+ID4gLQkJCQkgJnZrbXNfY29ubmVjdG9yX2Z1bmNzLAo+ID4gLQkJCQkgRFJNX01P REVfQ09OTkVDVE9SX1ZJUlRVQUwpOwo+ID4gLQlpZiAocmV0IDwgMCkgewo+ID4gLQkJRFJNX0VS Uk9SKCJGYWlsZWQgdG8gaW5pdCBjb25uZWN0b3JcbiIpOwo+ID4gLQkJZ290byBvdXRfdW5yZWdp c3RlcjsKPiA+IC0JfQo+ID4gLQo+ID4gLQlyZXQgPSBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9p bml0KCZ2a21zX2RldmljZS0+ZHJtLAo+ID4gLQkJCQkJICAgJnZrbXNfZGV2aWNlLT5waXBlLAo+ ID4gLQkJCQkJICAgTlVMTCwKPiA+IC0JCQkJCSAgIHZrbXNfZm9ybWF0cywKPiA+IC0JCQkJCSAg IEFSUkFZX1NJWkUodmttc19mb3JtYXRzKSwKPiA+IC0JCQkJCSAgIE5VTEwsCj4gPiAtCQkJCQkg ICAmdmttc19kZXZpY2UtPmNvbm5lY3Rvcik7Cj4gPiAtCWlmIChyZXQgPCAwKSB7Cj4gPiAtCQlE Uk1fRVJST1IoIkNhbm5vdCBzZXR1cCBzaW1wbGUgZGlzcGxheSBwaXBlXG4iKTsKPiA+ICsJcmV0 ID0gdmttc19tb2Rlc2V0X2luaXQodmttc19kZXZpY2UpOwo+ID4gKwlpZiAocmV0KQo+ID4gIAkJ Z290byBvdXRfdW5yZWdpc3RlcjsKPiA+IC0JfQo+ID4gIAo+ID4gIAlyZXQgPSBkcm1fZGV2X3Jl Z2lzdGVyKCZ2a21zX2RldmljZS0+ZHJtLCAwKTsKPiA+ICAJaWYgKHJldCkKPiA+ICAJCWdvdG8g b3V0X3VucmVnaXN0ZXI7Cj4gPiAgCj4gPiAtCWRybV9jb25uZWN0b3JfcmVnaXN0ZXIoJnZrbXNf ZGV2aWNlLT5jb25uZWN0b3IpOwo+ID4gLQo+ID4gIAlyZXR1cm4gMDsKPiA+ICAKPiA+ICBvdXRf dW5yZWdpc3RlcjoKPiA+ICAJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIodmttc19kZXZpY2Ut PnBsYXRmb3JtKTsKPiA+ICsKPiA+ICBvdXRfZmluaToKPiA+ICAJZHJtX2Rldl9maW5pKCZ2a21z X2RldmljZS0+ZHJtKTsKPiA+ICsKPiA+ICBvdXRfZnJlZToKPiA+ICAJa2ZyZWUodmttc19kZXZp Y2UpOwo+ID4gLQo+ID4gIAlyZXR1cm4gcmV0Owo+ID4gIH0KPiA+ICAKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19kcnYuaAo+ID4gaW5kZXggYzc3YzViZjUwMzJhLi5iMGY5ZDJlNjFhNDIgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiBAQCAtMSwxMyArMSwzMSBAQAo+ID4gICNpZm5k ZWYgX1ZLTVNfRFJWX0hfCj4gPiAgI2RlZmluZSBfVktNU19EUlZfSF8KPiA+ICAKPiA+IC0jaW5j bHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZW5j b2Rlci5oPgo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCB1MzIgdmttc19mb3JtYXRzW10gPSB7Cj4g PiArCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gPiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3Qgdmttc19v dXRwdXQgewo+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKPiA+ICsJc3RydWN0IGRybV9lbmNv ZGVyIGVuY29kZXI7Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiA+ICt9 Owo+ID4gIAo+ID4gIHN0cnVjdCB2a21zX2RldmljZSB7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNl IGRybTsKPiA+ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdGZvcm07Cj4gPiAtCXN0cnVj dCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSBwaXBlOwo+ID4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciBjb25uZWN0b3I7Cj4gPiArCXN0cnVjdCB2a21zX291dHB1dCBvdXRwdXQ7Cj4gPiAgfTsKPiA+ ICAKPiA+ICtpbnQgdmttc19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ID4gKwkJICAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwgc3Ry dWN0IGRybV9wbGFuZSAqY3Vyc29yKTsKPiA+ICsKPiA+ICtpbnQgdmttc19vdXRwdXRfaW5pdChz dHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpOwo+ID4gKwo+ID4gK3N0cnVjdCBkcm1fcGxhbmUg KnZrbXNfcGxhbmVfaW5pdChzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpOwo+ID4gKwo+ID4g ICNlbmRpZiAvKiBfVktNU19EUlZfSF8gKi8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX291dHB1dC5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQu Ywo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDgxNDNl YWMzYzEyCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX291dHB1dC5jCj4gPiBAQCAtMCwwICsxLDkxIEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKPiA+ICsvKgo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gPiArICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKPiA+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ID4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgInZrbXNfZHJ2LmgiCj4g PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ICsKPiA+ICtzdGF0aWMgdm9p ZCB2a21zX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cj4gPiArewo+ID4gKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiA+ICsJ ZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB2a21zX2Nvbm5lY3Rvcl9mdW5jcyA9 IHsKPiA+ICsJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3Jf bW9kZXMsCj4gPiArCS5kZXN0cm95ID0gdmttc19jb25uZWN0b3JfZGVzdHJveSwKPiAKPiAyKSBh ZGRpbmcgdGhlIGZvbGxvd2luZyBob29rcyB3aXRoIHRoZWlyIGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl8qCj4gY291bnRlcnBhcnQgdG8gdGhlIHZrbXNfY29ubmVjdG9yX2Z1bmNzOgo+IGF0 b21pY19kdXBsaWNhdGVfc3RhdGUsIGF0b21pY19kZXN0cm95X3N0YXRlLCBhbmQgcmVzZXQuCj4g Cj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNz IHZrbXNfZW5jb2Rlcl9mdW5jcyA9IHsKPiA+ICsJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVh bnVwLAo+ID4gK307Cj4gPiArCj4gPiAraW50IHZrbXNfb3V0cHV0X2luaXQoc3RydWN0IHZrbXNf ZGV2aWNlICp2a21zZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQg PSAmdmttc2Rldi0+b3V0cHV0Owo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJnZrbXNk ZXYtPmRybTsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZvdXRwdXQt PmNvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJm91dHB1dC0+ ZW5jb2RlcjsKPiA+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJm91dHB1dC0+Y3J0YzsKPiA+ ICsJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeTsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJ cHJpbWFyeSA9IHZrbXNfcGxhbmVfaW5pdCh2a21zZGV2KTsKPiA+ICsJaWYgKElTX0VSUihwcmlt YXJ5KSkKPiA+ICsJCXJldHVybiBQVFJfRVJSKHByaW1hcnkpOwo+ID4gKwo+ID4gKwlyZXQgPSB2 a21zX2NydGNfaW5pdChkZXYsIGNydGMsIHByaW1hcnksIE5VTEwpOwo+ID4gKwlpZiAocmV0KQo+ ID4gKwkJZ290byBlcnJfY3J0YzsKPiA+ICsKPiAKPiAzKSBhZGQgZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3Mgd2l0aCBkdW1teSB7Z2V0X21vZGVzLCBtb2RlX3ZhbGlkfS4KPiAKPiA+ICsJcmV0 ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCAmdmttc19jb25uZWN0b3JfZnVu Y3MsCj4gPiArCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCk7Cj4gPiArCWlmIChyZXQp IHsKPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXQgY29ubmVjdG9yXG4iKTsKPiA+ICsJ CWdvdG8gZXJyX2Nvbm5lY3RvcjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fY29ubmVj dG9yX3JlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCURSTV9FUlJP UigiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvbm5lY3RvclxuIik7Cj4gPiArCQlnb3RvIGVycl9jb25u ZWN0b3JfcmVnaXN0ZXI7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gZHJtX2VuY29kZXJfaW5p dChkZXYsIGVuY29kZXIsICZ2a21zX2VuY29kZXJfZnVuY3MsCj4gPiArCQkJICAgICAgIERSTV9N T0RFX0VOQ09ERVJfVklSVFVBTCwgTlVMTCk7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCURSTV9F UlJPUigiRmFpbGVkIHRvIGluaXQgZW5jb2RlclxuIik7Cj4gPiArCQlnb3RvIGVycl9lbmNvZGVy Owo+ID4gKwl9Cj4gPiArCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMTsKPiA+ICsKPiA+ICsJ cmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rl cik7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGF0dGFjaCBj b25uZWN0b3IgdG8gZW5jb2RlclxuIik7Cj4gPiArCQlnb3RvIGVycl9hdHRhY2g7Cj4gPiArCX0K PiA+ICsKPiA+ICsJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRldik7Cj4gPiArCj4gPiArCXJldHVy biAwOwo+ID4gKwo+ID4gK2Vycl9hdHRhY2g6Cj4gPiArCWRybV9lbmNvZGVyX2NsZWFudXAoZW5j b2Rlcik7Cj4gPiArCj4gPiArZXJyX2VuY29kZXI6Cj4gPiArCWRybV9jb25uZWN0b3JfdW5yZWdp c3Rlcihjb25uZWN0b3IpOwo+ID4gKwo+ID4gK2Vycl9jb25uZWN0b3JfcmVnaXN0ZXI6Cj4gPiAr CWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOwo+ID4gKwo+ID4gK2Vycl9jb25uZWN0 b3I6Cj4gPiArCWRybV9jcnRjX2NsZWFudXAoY3J0Yyk7Cj4gPiArCj4gPiArZXJyX2NydGM6Cj4g PiArCWRybV9wbGFuZV9jbGVhbnVwKHByaW1hcnkpOwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgYi9kcml2 ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g PiBpbmRleCAwMDAwMDAwMDAwMDAuLjJjMjViMWQ2YWI1Ygo+ID4gLS0tIC9kZXYvbnVsbAo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19wbGFuZS5jCj4gPiBAQCAtMCwwICsxLDQ2 IEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ICsvKgo+ID4g KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Cj4gPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiA+ICsgKiB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ID4g KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiArICovCj4gPiArCj4g PiArI2luY2x1ZGUgInZrbXNfZHJ2LmgiCj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVs cGVyLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gKwo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHZrbXNfcGxhbmVfZnVuY3MgPSB7 Cj4gPiArCS51cGRhdGVfcGxhbmUJCT0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAo+ ID4gKwkuZGlzYWJsZV9wbGFuZQkJPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAo+ ID4gKwkuZGVzdHJveQkJPSBkcm1fcGxhbmVfY2xlYW51cCwKPiA+ICsJLnJlc2V0CQkJPSBkcm1f YXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCwKPiA+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUg PSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gPiArCS5hdG9taWNf ZGVzdHJveV9zdGF0ZQk9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4g PiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3QgZHJtX3BsYW5lICp2a21zX3BsYW5lX2luaXQoc3RydWN0 IHZrbXNfZGV2aWNlICp2a21zZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9ICZ2a21zZGV2LT5kcm07Cj4gPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gKwlj b25zdCB1MzIgKmZvcm1hdHM7Cj4gPiArCWludCByZXQsIG5mb3JtYXRzOwo+ID4gKwo+ID4gKwlw bGFuZSA9IGt6YWxsb2Moc2l6ZW9mKCpwbGFuZSksIEdGUF9LRVJORUwpOwo+ID4gKwlpZiAoIXBs YW5lKQo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPiArCj4gPiArCWZvcm1hdHMg PSB2a21zX2Zvcm1hdHM7Cj4gPiArCW5mb3JtYXRzID0gQVJSQVlfU0laRSh2a21zX2Zvcm1hdHMp Owo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCBwbGFuZSwg MCwKPiA+ICsJCQkJICAgICAgICZ2a21zX3BsYW5lX2Z1bmNzLAo+ID4gKwkJCQkgICAgICAgZm9y bWF0cywgbmZvcm1hdHMsCj4gPiArCQkJCSAgICAgICBOVUxMLCBEUk1fUExBTkVfVFlQRV9QUklN QVJZLCBOVUxMKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJa2ZyZWUocGxhbmUpOwo+ID4gKwkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ICsJfQo+ID4gKwo+IAo+IDQpIGFkZCBkcm1fcGxhbmVf aGVscGVyX2Z1bmNzIHdpdGggZHVtbXkge2F0b21pY19jaGVjaywgcHJlcGFyZV9mYiwgY2xlYW51 cF9mYn0uCj4gCj4gPiArCXJldHVybiBwbGFuZTsKPiA+ICt9Cj4gPiAtLSAKPiA+IDIuMTcuMAo+ ID4gCj4gCj4gLSBIYW5lZW4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==