From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [RFC 09/11] drm/mediatek: add fbdev support Date: Tue, 3 Oct 2017 13:38:45 +0800 Message-ID: <1507009125.7454.2.camel@mtksdaap41> References: <1506690553-27357-1-git-send-email-ulrich.hecht+renesas@gmail.com> <1506690553-27357-10-git-send-email-ulrich.hecht+renesas@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1506690553-27357-10-git-send-email-ulrich.hecht+renesas@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ulrich Hecht Cc: jacopo@jmondi.org, magnus.damm@gmail.com, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, laurent.pinchart@ideasonboard.com, linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGksIFVscmljaDoKCk9uIEZyaSwgMjAxNy0wOS0yOSBhdCAxNTowOSArMDIwMCwgVWxyaWNoIEhl Y2h0IHdyb3RlOgo+IEZvcndhcmQtcG9ydGVkIGZyb20gY2hyb21lb3MtMy4xOCB2ZW5kb3Iga2Vy bmVsLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFVscmljaCBIZWNodCA8dWxyaWNoLmhlY2h0K3JlbmVz YXNAZ21haWwuY29tPgoKSSB0aGluayB0aGlzIHBhdGNoIG9yaWdpbmF0ZSBmcm9tIFsxXS4gQW5k IHlvdSBzaG91bGQga2VlcCB0aGUKc2lnbmVkLW9mZi1ieSBpbmZvIHNvIHRoYXQgd2UgY291bGQg a25vdyB3aG8gY29udHJpYnV0ZSB0byB0aGlzIHBhdGNoLgoKWzFdCmh0dHBzOi8vY2hyb21pdW0t cmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9jaHJvbWl1bW9zL3RoaXJkX3BhcnR5L2tlcm5lbC8r LzMzMDUzMgoKUmVnYXJkcywKQ0sKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9N YWtlZmlsZSAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuYyAgIHwgICA5ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5oICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZmIuYyAg ICB8ICAxMyArKysKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZmIuaCAgICB8 ICAgMyArCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiZGV2LmMgfCAxODQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9mYmRldi5oIHwgIDMyICsrKysrKwo+ICA3IGZpbGVzIGNoYW5nZWQsIDI0NiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYmRldi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYmRldi5oCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9NYWtlZmlsZQo+IGluZGV4IGUzN2I1NWEuLjgzMDZmYjUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL01ha2VmaWxlCj4gQEAgLTEyLDYgKzEyLDggQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRr X2Rpc3BfY29sb3IubyBcCj4gIAkJICBtdGtfbWlwaV90eC5vIFwKPiAgCQkgIG10a19kcGkubwo+ ICAKPiArbWVkaWF0ZWstZHJtLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IG10a19k cm1fZmJkZXYubwo+ICsKPiAgb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFSykgKz0gbWVkaWF0ZWst ZHJtLm8KPiAgCj4gIG1lZGlhdGVrLWRybS1oZG1pLW9ianMgOj0gbXRrX2NlYy5vIFwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+IGluZGV4IDhjOTI2MzAuLmE2OWFhMmYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwo+IEBAIC0zMCw2ICsz MCw3IEBACj4gICNpbmNsdWRlICJtdGtfZHJtX2RkcF9jb21wLmgiCj4gICNpbmNsdWRlICJtdGtf ZHJtX2Rydi5oIgo+ICAjaW5jbHVkZSAibXRrX2RybV9mYi5oIgo+ICsjaW5jbHVkZSAibXRrX2Ry bV9mYmRldi5oIgo+ICAjaW5jbHVkZSAibXRrX2RybV9nZW0uaCIKPiAgCj4gICNkZWZpbmUgRFJJ VkVSX05BTUUgIm1lZGlhdGVrIgo+IEBAIC0yNTcsOCArMjU4LDE1IEBAIHN0YXRpYyBpbnQgbXRr X2RybV9rbXNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+ICAJZHJtX2ttc19oZWxwZXJf cG9sbF9pbml0KGRybSk7Cj4gIAlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsKPiAgCj4gKwly ZXQgPSBtdGtfZmJkZXZfaW5pdChkcm0pOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9rbXNf aGVscGVyX3BvbGxfZmluaTsKPiArCj4gIAlyZXR1cm4gMDsKPiAgCj4gK2Vycl9rbXNfaGVscGVy X3BvbGxfZmluaToKPiArCWRybV9rbXNfaGVscGVyX3BvbGxfZmluaShkcm0pOwo+ICsvLwlkcm1f dmJsYW5rX2NsZWFudXAoZHJtKTsKPiAgZXJyX2NvbXBvbmVudF91bmJpbmQ6Cj4gIAljb21wb25l bnRfdW5iaW5kX2FsbChkcm0tPmRldiwgZHJtKTsKPiAgZXJyX2NvbmZpZ19jbGVhbnVwOgo+IEBA IC0yNjksNiArMjc3LDcgQEAgc3RhdGljIGludCBtdGtfZHJtX2ttc19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0pCj4gIAo+ICBzdGF0aWMgdm9pZCBtdGtfZHJtX2ttc19kZWluaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRybSkKPiAgewo+ICsJbXRrX2ZiZGV2X2ZpbmkoZHJtKTsKPiAgCWRybV9r bXNfaGVscGVyX3BvbGxfZmluaShkcm0pOwo+ICAKPiAgCWNvbXBvbmVudF91bmJpbmRfYWxsKGRy bS0+ZGV2LCBkcm0pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCj4gaW5k ZXggYzMzNzhjNC4uNGVkYzAwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2Rydi5oCj4gQEAgLTE0LDYgKzE0LDcgQEAKPiAgI2lmbmRlZiBNVEtfRFJNX0RSVl9ICj4gICNk ZWZpbmUgTVRLX0RSTV9EUlZfSAo+ICAKPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICAjaW5jbHVkZSAibXRrX2RybV9kZHBfY29tcC5o Igo+ICAKPiBAQCAtMjQsNyArMjUsNiBAQCBzdHJ1Y3QgZGV2aWNlOwo+ICBzdHJ1Y3QgZGV2aWNl X25vZGU7Cj4gIHN0cnVjdCBkcm1fY3J0YzsKPiAgc3RydWN0IGRybV9kZXZpY2U7Cj4gLXN0cnVj dCBkcm1fZmJfaGVscGVyOwo+ICBzdHJ1Y3QgZHJtX3Byb3BlcnR5Owo+ICBzdHJ1Y3QgcmVnbWFw Owo+ICAKPiBAQCAtNTYsNiArNTYsOCBAQCBzdHJ1Y3QgbXRrX2RybV9wcml2YXRlIHsKPiAgCX0g Y29tbWl0Owo+ICAKPiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdXNwZW5kX3N0YXRlOwo+ ICsJc3RydWN0IGRybV9mYl9oZWxwZXIgZmJfaGVscGVyOwo+ICsJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpmYmRldl9ibzsKPiAgfTsKPiAgCj4gIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IG10a19kZHBfZHJpdmVyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZmIuYwo+IGlu ZGV4IDBkOGQ1MDYuLmFjODU2MWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fZmIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2ZiLmMKPiBAQCAtOTYsNiArOTYsMTkgQEAgc3RhdGljIHN0cnVjdCBtdGtfZHJtX2ZiICptdGtf ZHJtX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXJldHVybiBt dGtfZmI7Cj4gIH0KPiAgCj4gK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm10a19kcm1fZnJhbWVi dWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJY29uc3Qgc3RydWN0IGRy bV9tb2RlX2ZiX2NtZDIgKm1vZGUsCj4gKwkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4g K3sKPiArCXN0cnVjdCBtdGtfZHJtX2ZiICptdGtfZmI7Cj4gKwo+ICsJbXRrX2ZiID0gbXRrX2Ry bV9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgbW9kZSwgb2JqKTsKPiArCWlmIChJU19FUlIobXRrX2Zi KSkKPiArCQlyZXR1cm4gRVJSX0NBU1QobXRrX2ZiKTsKPiArCj4gKwlyZXR1cm4gJm10a19mYi0+ YmFzZTsKPiArfQo+ICsKPiAgLyoKPiAgICogV2FpdCBmb3IgYW55IGV4Y2x1c2l2ZSBmZW5jZSBp biBmYidzIGdlbSBvYmplY3QncyByZXNlcnZhdGlvbiBvYmplY3QuCj4gICAqCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiLmggYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9mYi5oCj4gaW5kZXggOWIyYWUzNC4uOWVlMWFjMiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZmIuaAo+IEBAIC0xOSw1ICsxOSw4IEBAIGlu dCBtdGtfZmJfd2FpdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7Cj4gIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKm10a19kcm1fbW9kZV9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCQkJCQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAJCQkJCSAgICAgICBj b25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKTsKPiArc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqbXRrX2RybV9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiArCQljb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZSwKPiArCQlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7Cj4gIAo+ICAjZW5kaWYgLyogTVRLX0RSTV9GQl9IICovCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiZGV2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYmRldi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwLi4xZTQ2MjE2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiZGV2LmMKPiBAQCAtMCwwICsxLDE4NCBAQAo+ ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWVkaWFUZWsgSW5jLgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAr ICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX2dlbS5oPgo+ICsKPiArI2luY2x1ZGUgIm10a19kcm1fZHJ2LmgiCj4gKyNpbmNs dWRlICJtdGtfZHJtX2ZiLmgiCj4gKyNpbmNsdWRlICJtdGtfZHJtX2dlbS5oIgo+ICsKPiArI2Rl ZmluZSB0b19kcm1fcHJpdmF0ZSh4KSBcCj4gKwkJY29udGFpbmVyX29mKHgsIHN0cnVjdCBtdGtf ZHJtX3ByaXZhdGUsIGZiX2hlbHBlcikKPiArCj4gKyNpZiAxCj4gK3N0YXRpYyBpbnQgbXRrX2Ry bV9mYmRldl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKPiArewo+ICsJc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciA9IGluZm8tPnBhcjsK PiArCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXZhdGUgPSBoZWxwZXItPmRldi0+ZGV2X3By aXZhdGU7Ly90b19kcm1fcHJpdmF0ZShoZWxwZXIpOwo+ICsKPiArCXJldHVybiBtdGtfZHJtX2dl bV9tbWFwX2J1Zihwcml2YXRlLT5mYmRldl9ibywgdm1hKTsKPiArfQo+ICsjZW5kaWYKPiArCj4g K3N0YXRpYyBzdHJ1Y3QgZmJfb3BzIG10a19mYmRldl9vcHMgPSB7Cj4gKwkub3duZXIgPSBUSElT X01PRFVMRSwKPiArCS5mYl9maWxscmVjdCA9IGRybV9mYl9oZWxwZXJfY2ZiX2ZpbGxyZWN0LAo+ ICsJLmZiX2NvcHlhcmVhID0gZHJtX2ZiX2hlbHBlcl9jZmJfY29weWFyZWEsCj4gKwkuZmJfaW1h Z2VibGl0ID0gZHJtX2ZiX2hlbHBlcl9jZmJfaW1hZ2VibGl0LAo+ICsJLmZiX2NoZWNrX3ZhciA9 IGRybV9mYl9oZWxwZXJfY2hlY2tfdmFyLAo+ICsJLmZiX3NldF9wYXIgPSBkcm1fZmJfaGVscGVy X3NldF9wYXIsCj4gKwkuZmJfYmxhbmsgPSBkcm1fZmJfaGVscGVyX2JsYW5rLAo+ICsJLmZiX3Bh bl9kaXNwbGF5ID0gZHJtX2ZiX2hlbHBlcl9wYW5fZGlzcGxheSwKPiArCS5mYl9zZXRjbWFwID0g ZHJtX2ZiX2hlbHBlcl9zZXRjbWFwLAo+ICsJLmZiX21tYXAgPSBtdGtfZHJtX2ZiZGV2X21tYXAs Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IG10a19mYmRldl9wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqaGVscGVyLAo+ICsJCQkgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUg KnNpemVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaGVscGVyLT5kZXY7Cj4g KwlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2YXRlID0gaGVscGVyLT5kZXYtPmRldl9wcml2 YXRlOy8vdG9fZHJtX3ByaXZhdGUoaGVscGVyKTsKPiArCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQy IG1vZGUgPSB7IDAgfTsKPiArCXN0cnVjdCBtdGtfZHJtX2dlbV9vYmogKm10a19nZW07Cj4gKwlz dHJ1Y3QgZmJfaW5mbyAqaW5mbzsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ICsJ dW5zaWduZWQgaW50IGJ5dGVzX3Blcl9waXhlbDsKPiArCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Owo+ ICsJc2l6ZV90IHNpemU7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWJ5dGVzX3Blcl9waXhlbCA9IERJ Vl9ST1VORF9VUChzaXplcy0+c3VyZmFjZV9icHAsIDgpOwo+ICsKPiArCW1vZGUud2lkdGggPSBz aXplcy0+c3VyZmFjZV93aWR0aDsKPiArCW1vZGUuaGVpZ2h0ID0gc2l6ZXMtPnN1cmZhY2VfaGVp Z2h0Owo+ICsJbW9kZS5waXRjaGVzWzBdID0gc2l6ZXMtPnN1cmZhY2Vfd2lkdGggKiBieXRlc19w ZXJfcGl4ZWw7Cj4gKwltb2RlLnBpeGVsX2Zvcm1hdCA9IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3Jt YXQoc2l6ZXMtPnN1cmZhY2VfYnBwLAo+ICsJCQkJCQkgICAgICBzaXplcy0+c3VyZmFjZV9kZXB0 aCk7Cj4gKwo+ICsJc2l6ZSA9IG1vZGUucGl0Y2hlc1swXSAqIG1vZGUuaGVpZ2h0Owo+ICsKPiAr CW10a19nZW0gPSBtdGtfZHJtX2dlbV9jcmVhdGUoZGV2LCBzaXplLCB0cnVlKTsKPiArCWlmIChJ U19FUlIobXRrX2dlbSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIobXRrX2dlbSk7Cj4gKwo+ICsJcHJp dmF0ZS0+ZmJkZXZfYm8gPSAmbXRrX2dlbS0+YmFzZTsKPiArCj4gKwlpbmZvID0gZHJtX2ZiX2hl bHBlcl9hbGxvY19mYmkoaGVscGVyKTsKPiArCWlmIChJU19FUlIoaW5mbykpIHsKPiArCQllcnIg PSBQVFJfRVJSKGluZm8pOwo+ICsJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gYWxsb2Nh dGUgZnJhbWVidWZmZXIgaW5mbywgJWRcbiIsCj4gKwkJCWVycik7Cj4gKwkJZ290byBlcnJfZ2Vt X2ZyZWVfb2JqZWN0Owo+ICsJfQo+ICsKPiArCWZiID0gbXRrX2RybV9mcmFtZWJ1ZmZlcl9jcmVh dGUoZGV2LCAmbW9kZSwgcHJpdmF0ZS0+ZmJkZXZfYm8pOwo+ICsJaWYgKElTX0VSUihmYikpIHsK PiArCQllcnIgPSBQVFJfRVJSKGZiKTsKPiArCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRv IGFsbG9jYXRlIERSTSBmcmFtZWJ1ZmZlciwgJWRcbiIsCj4gKwkJCWVycik7Cj4gKwkJZ290byBl cnJfcmVsZWFzZV9mYmk7Cj4gKwl9Cj4gKwloZWxwZXItPmZiID0gZmI7Cj4gKwo+ICsJaW5mby0+ cGFyID0gaGVscGVyOwo+ICsJaW5mby0+ZmxhZ3MgPSBGQklORk9fRkxBR19ERUZBVUxUOwo+ICsJ aW5mby0+ZmJvcHMgPSAmbXRrX2ZiZGV2X29wczsKPiArCj4gKwlkcm1fZmJfaGVscGVyX2ZpbGxf Zml4KGluZm8sIGZiLT5waXRjaGVzWzBdLCBmYi0+Zm9ybWF0LT5kZXB0aCk7Cj4gKwlkcm1fZmJf aGVscGVyX2ZpbGxfdmFyKGluZm8sIGhlbHBlciwgc2l6ZXMtPmZiX3dpZHRoLCBzaXplcy0+ZmJf aGVpZ2h0KTsKPiArCj4gKwlvZmZzZXQgPSBpbmZvLT52YXIueG9mZnNldCAqIGJ5dGVzX3Blcl9w aXhlbDsKPiArCW9mZnNldCArPSBpbmZvLT52YXIueW9mZnNldCAqIGZiLT5waXRjaGVzWzBdOwo+ ICsKPiArCWRldi0+bW9kZV9jb25maWcuZmJfYmFzZSA9IDA7Cj4gKwlpbmZvLT5zY3JlZW5fYmFz ZSA9IG10a19nZW0tPmt2YWRkciArIG9mZnNldDsKPiArCWluZm8tPnNjcmVlbl9zaXplID0gc2l6 ZTsKPiArCWluZm8tPmZpeC5zbWVtX2xlbiA9IHNpemU7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygi RkIgWyV1eCV1XS0ldSBvZmZzZXQ9JWx1IHNpemU9JXpkXG4iLAo+ICsJCSAgICAgIGZiLT53aWR0 aCwgZmItPmhlaWdodCwgZmItPmZvcm1hdC0+ZGVwdGgsIG9mZnNldCwgc2l6ZSk7Cj4gKwo+ICsJ aW5mby0+c2tpcF92dF9zd2l0Y2ggPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJy X3JlbGVhc2VfZmJpOgo+ICtlcnJfZ2VtX2ZyZWVfb2JqZWN0Ogo+ICsJbXRrX2RybV9nZW1fZnJl ZV9vYmplY3QoJm10a19nZW0tPmJhc2UpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIG10a19kcm1fZmJfaGVscGVyX2Z1 bmNzID0gewo+ICsJLmZiX3Byb2JlID0gbXRrX2ZiZGV2X3Byb2JlLAo+ICt9Owo+ICsKPiAraW50 IG10a19mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBt dGtfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9m Yl9oZWxwZXIgKmhlbHBlciA9ICZwcml2LT5mYl9oZWxwZXI7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CWlmICghZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YyB8fCAhZGV2LT5tb2RlX2NvbmZpZy5udW1f Y29ubmVjdG9yKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWRybV9mYl9oZWxwZXJfcHJl cGFyZShkZXYsIGhlbHBlciwgJm10a19kcm1fZmJfaGVscGVyX2Z1bmNzKTsKPiArCj4gKwlyZXQg PSBkcm1fZmJfaGVscGVyX2luaXQoZGV2LCBoZWxwZXIsIC8qZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YywqLwo+ICsJCQkJIGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvcik7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJZGV2X2VycihkZXYtPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIERSTSBG QiBoZWxwZXIsICVkXG4iLAo+ICsJCQlyZXQpOwo+ICsJCWdvdG8gZmluaTsKPiArCX0KPiArCj4g KwlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMoaGVscGVyKTsK PiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBjb25u ZWN0b3JzLCAlZFxuIiwgcmV0KTsKPiArCQlnb3RvIGZpbmk7Cj4gKwl9Cj4gKwo+ICsJLyogZGlz YWJsZSBhbGwgdGhlIHBvc3NpYmxlIG91dHB1dHMvY3J0Y3MgYmVmb3JlIGVudGVyaW5nIEtNUyBt b2RlICovCj4gKy8vCWRybV9oZWxwZXJfZGlzYWJsZV91bnVzZWRfZnVuY3Rpb25zKGRldik7Cj4g Kwo+ICsJcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyhoZWxwZXIsIDMyKTsKPiAr CWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIHNldCBpbml0aWFs IGNvbmZpZ3VyYXRpb24sICVkXG4iLAo+ICsJCQlyZXQpOwo+ICsJCWdvdG8gZmluaTsKPiArCX0K PiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Zpbmk6Cj4gKwlkcm1fZmJfaGVscGVyX2ZpbmkoaGVs cGVyKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIG10a19mYmRldl9maW5p KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUg KnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBl ciA9ICZwcml2LT5mYl9oZWxwZXI7Cj4gKwo+ICsJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2Zi aShoZWxwZXIpOwo+ICsKPiArCWlmIChoZWxwZXItPmZiKSB7Cj4gKwkJZHJtX2ZyYW1lYnVmZmVy X3VucmVnaXN0ZXJfcHJpdmF0ZShoZWxwZXItPmZiKTsKPiArCQlkcm1fZnJhbWVidWZmZXJfcmVt b3ZlKGhlbHBlci0+ZmIpOwo+ICsJfQo+ICsKPiArCWRybV9mYl9oZWxwZXJfZmluaShoZWxwZXIp Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Zi ZGV2LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYmRldi5oCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5mM2UwOTQ5Cj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2ZiZGV2LmgKPiBAQCAtMCww ICsxLDMyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJbmMuCj4g KyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgTVRLX0RSTV9GQkRFVl9ICj4gKyNkZWZpbmUg TVRLX0RSTV9GQkRFVl9ICj4gKwo+ICsjaWZkZWYgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04K PiAraW50IG10a19mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIG10 a19mYmRldl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICsjZWxzZQo+ICtpbnQgbXRr X2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3ZvaWQgbXRrX2ZiZGV2X2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAr ewo+ICsKPiArfQo+ICsjZW5kaWYgLyogQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04gKi8KPiAr Cj4gKyNlbmRpZiAvKiBNVEtfRFJNX0ZCREVWX0ggKi8KCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK