From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/4] drm: zte: add VGA driver support Date: Mon, 3 Apr 2017 11:23:51 +0200 Message-ID: <20170403092351.owrqjpckok32tt6j@phenom.ffwll.local> References: <1490098556-23853-1-git-send-email-shawnguo@kernel.org> <1490098556-23853-5-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2563A6E2DE for ; Mon, 3 Apr 2017 09:23:58 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id u18so31717747wrc.0 for ; Mon, 03 Apr 2017 02:23:58 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1490098556-23853-5-git-send-email-shawnguo@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Shawn Guo Cc: Xin Zhou , Daniel Vetter , Baoyou Xie , dri-devel@lists.freedesktop.org, Jun Nie List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXIgMjEsIDIwMTcgYXQgMDg6MTU6NTZQTSArMDgwMCwgU2hhd24gR3VvIHdyb3Rl Ogo+IEZyb206IFNoYXduIEd1byA8c2hhd24uZ3VvQGxpbmFyby5vcmc+Cj4gCj4gSXQgYWRkcyBW R0EgZHJpdmVyIHN1cHBvcnQsIHdoaWNoIG5lZWRzIHRvIGNvbmZpZ3VyZSBjb3JyZXNwb25kaW5n IFZPVQo+IGludGVyZmFjZSBpbiBSR0JfODg4IGZvcm1hdCwgYW5kIHRodXMgdGhlIGZvbGxvd2lu ZyBjaGFuZ2VzIGFyZSBuZWVkZWQKPiBvbiB6eF92b3UuCj4gCj4gLSBSZW5hbWUgdGhlIENTQyBi bG9jayBvZiBHcmFwaGljIExheWVyIGEgYml0IHRvIG1ha2UgaXQgbW9yZSBzcGVjaWZpYywKPiAg IGFuZCBhZGQgQ1NDIG9mIENoYW5uZWwgdG8gc3VwcG9ydCBSR0Igb3V0cHV0Lgo+IC0gQnlwYXNz IERpdGhlciBibG9jayBmb3IgUkdCIG91dHB1dC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaGF3biBH dW8gPHNoYXduLmd1b0BsaW5hcm8ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0venRlL01h a2VmaWxlICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuYyAg fCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaCAgfCAgIDEgKwo+ICBk cml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYS5jICAgICAgfCA1MDAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2FfcmVncy5o IHwgIDM2ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jICAgICAgfCAgMzMgKyst Cj4gIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaCB8ICAxMiArLQo+ICA3IGZpbGVz IGNoYW5nZWQsIDU4MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2EuYwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2FfcmVncy5oCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS96dGUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0venRlL01ha2VmaWxl Cj4gaW5kZXggMDEzNTJiNTZjNDE4Li45ZGY3NzY2YTdmOWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3p0ZS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvTWFrZWZp bGUKPiBAQCAtMyw2ICszLDcgQEAgenhkcm0teSA6PSBcCj4gIAl6eF9oZG1pLm8gXAo+ICAJenhf cGxhbmUubyBcCj4gIAl6eF90dmVuYy5vIFwKPiArCXp4X3ZnYS5vIFwKPiAgCXp4X3ZvdS5vCj4g IAo+ICBvYmotJChDT05GSUdfRFJNX1pURSkgKz0genhkcm0ubwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJt X2Rydi5jCj4gaW5kZXggNWM2OTQ0YTFlNzJjLi44YTY4OTJlZWI0NGYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X2RybV9kcnYuYwo+IEBAIC0yNDgsNiArMjQ4LDcgQEAgc3RhdGljIGludCB6eF9kcm1f cmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkmenhfY3J0Y19kcml2ZXIs Cj4gIAkmenhfaGRtaV9kcml2ZXIsCj4gIAkmenhfdHZlbmNfZHJpdmVyLAo+ICsJJnp4X3ZnYV9k cml2ZXIsCj4gIAkmenhfZHJtX3BsYXRmb3JtX2RyaXZlciwKPiAgfTsKPiAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3p0 ZS96eF9kcm1fZHJ2LmgKPiBpbmRleCA1Y2EwMzViMDc5YzcuLjJhOGNkYzVmOGJlNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X2RybV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS96dGUvenhfZHJtX2Rydi5oCj4gQEAgLTE0LDYgKzE0LDcgQEAKPiAgZXh0ZXJuIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgenhfY3J0Y19kcml2ZXI7Cj4gIGV4dGVybiBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIHp4X2hkbWlfZHJpdmVyOwo+ICBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2Ry aXZlciB6eF90dmVuY19kcml2ZXI7Cj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHp4 X3ZnYV9kcml2ZXI7Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHUzMiB6eF9yZWFkbCh2b2lkIF9faW9t ZW0gKnJlZykKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYS5j IGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2EuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwLi4zNWVhZjk4NDU4YWYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2EuYwo+IEBAIC0wLDAgKzEsNTAwIEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCAoQykgMjAxNyBTYW5lY2hpcHMgVGVjaG5vbG9neSBDby4sIEx0ZC4KPiAr ICogQ29weXJpZ2h0IDIwMTcgTGluYXJvIEx0ZC4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvY29tcG9uZW50Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9yZWdtYXAuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1QLmg+Cj4gKwo+ICsjaW5jbHVkZSAienhfZHJtX2Rydi5oIgo+ICsjaW5jbHVkZSAienhf dmdhX3JlZ3MuaCIKPiArI2luY2x1ZGUgInp4X3ZvdS5oIgo+ICsKPiArc3RydWN0IHp4X3ZnYV9w d3JjdHJsIHsKPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiArCXUzMiByZWc7Cj4gKwl1MzIg bWFzazsKPiArfTsKPiArCj4gK3N0cnVjdCB6eF92Z2FfaTJjIHsKPiArCXN0cnVjdCBpMmNfYWRh cHRlciBhZGFwOwo+ICsJc3RydWN0IG11dGV4IGxvY2s7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qgenhf dmdhIHsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1f ZW5jb2RlciBlbmNvZGVyOwo+ICsJc3RydWN0IHp4X3ZnYV9pMmMgKmRkYzsKPiArCXN0cnVjdCBk ZXZpY2UgKmRldjsKPiArCXZvaWQgX19pb21lbSAqbW1pbzsKPiArCXN0cnVjdCBjbGsgKmkyY193 Y2xrOwo+ICsJc3RydWN0IHp4X3ZnYV9wd3JjdHJsIHB3cmN0cmw7Cj4gKwlzdHJ1Y3QgY29tcGxl dGlvbiBjb21wbGV0ZTsKPiArCWJvb2wgY29ubmVjdGVkOwo+ICt9Owo+ICsKPiArI2RlZmluZSB0 b196eF92Z2EoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB6eF92Z2EsIHgpCj4gKwo+ICtzdGF0 aWMgdm9pZCB6eF92Z2FfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQo+ICt7Cj4gKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSB0b196eF92Z2EoZW5jb2Rlcik7Cj4gKwlz dHJ1Y3QgenhfdmdhX3B3cmN0cmwgKnB3cmN0cmwgPSAmdmdhLT5wd3JjdHJsOwo+ICsKPiArCS8q IFNldCBiaXQgdG8gcG93ZXIgdXAgVkdBIERBQ3MgKi8KPiArCXJlZ21hcF91cGRhdGVfYml0cyhw d3JjdHJsLT5yZWdtYXAsIHB3cmN0cmwtPnJlZywgcHdyY3RybC0+bWFzaywKPiArCQkJICAgcHdy Y3RybC0+bWFzayk7Cj4gKwo+ICsJdm91X2luZl9lbmFibGUoVk9VX1ZHQSwgZW5jb2Rlci0+Y3J0 Yyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHp4X3ZnYV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSB0b196 eF92Z2EoZW5jb2Rlcik7Cj4gKwlzdHJ1Y3QgenhfdmdhX3B3cmN0cmwgKnB3cmN0cmwgPSAmdmdh LT5wd3JjdHJsOwo+ICsKPiArCXZvdV9pbmZfZGlzYWJsZShWT1VfVkdBLCBlbmNvZGVyLT5jcnRj KTsKPiArCj4gKwkvKiBDbGVhciBiaXQgdG8gcG93ZXIgZG93biBWR0EgREFDcyAqLwo+ICsJcmVn bWFwX3VwZGF0ZV9iaXRzKHB3cmN0cmwtPnJlZ21hcCwgcHdyY3RybC0+cmVnLCBwd3JjdHJsLT5t YXNrLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxw ZXJfZnVuY3MgenhfdmdhX2VuY29kZXJfaGVscGVyX2Z1bmNzID0gewo+ICsJLmVuYWJsZQk9IHp4 X3ZnYV9lbmNvZGVyX2VuYWJsZSwKPiArCS5kaXNhYmxlID0genhfdmdhX2VuY29kZXJfZGlzYWJs ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3Mgenhf dmdhX2VuY29kZXJfZnVuY3MgPSB7Cj4gKwkuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAs Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHp4X3ZnYV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCB6eF92Z2EgKnZnYSA9 IHRvX3p4X3ZnYShjb25uZWN0b3IpOwo+ICsJc3RydWN0IGVkaWQgKmVkaWQ7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCS8qCj4gKwkgKiBDbGVhciBib3RoIGRldGVjdGlvbiBiaXRzIHRvIHN3aXRjaCBJ MkMgYnVzIGZyb20gZGV2aWNlCj4gKwkgKiBkZXRlY3RpbmcgdG8gRURJRCByZWFkaW5nLgo+ICsJ ICovCj4gKwl6eF93cml0ZWwodmdhLT5tbWlvICsgVkdBX0FVVE9fREVURUNUX1NFTCwgMCk7Cj4g Kwo+ICsJZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsICZ2Z2EtPmRkYy0+YWRhcCk7Cj4g KwlpZiAoIWVkaWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJLyoKPiArCSAqIEFzIGVkaWQgcmVh ZGluZyBzdWNjZWVkcywgZGV2aWNlIG11c3QgYmUgY29ubmVjdGVkLCBzbyB3ZSBzZXQKPiArCSAq IHVwIGRldGVjdGlvbiBiaXQgZm9yIHVucGx1ZyBpbnRlcnJ1cHQgaGVyZS4KPiArCSAqLwo+ICsJ enhfd3JpdGVsKHZnYS0+bW1pbyArIFZHQV9BVVRPX0RFVEVDVF9TRUwsIFZHQV9ERVRFQ1RfU0VM X0hBU19ERVZJQ0UpOwo+ICsKPiArCWRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9w ZXJ0eShjb25uZWN0b3IsIGVkaWQpOwo+ICsJcmV0ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5l Y3RvciwgZWRpZCk7Cj4gKwlrZnJlZShlZGlkKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKPiArenhfdmdhX2Nvbm5lY3Rvcl9tb2Rl X3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCSAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPiArewo+ICsJcmV0dXJuIE1PREVfT0s7Cj4gK30KPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgenhfdmdhX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4gKwkuZ2V0X21vZGVzID0genhfdmdhX2Nvbm5lY3Rvcl9n ZXRfbW9kZXMsCj4gKwkubW9kZV92YWxpZCA9IHp4X3ZnYV9jb25uZWN0b3JfbW9kZV92YWxpZCwK PiArfTsKPiArCj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCj4gK3p4X3ZnYV9j b25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9y Y2UpCj4gK3sKPiArCXN0cnVjdCB6eF92Z2EgKnZnYSA9IHRvX3p4X3ZnYShjb25uZWN0b3IpOwo+ ICsKPiArCXJldHVybiB2Z2EtPmNvbm5lY3RlZCA/IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVk IDoKPiArCQkJCWNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgenhfdmdhX2Nvbm5lY3Rvcl9mdW5j cyA9IHsKPiArCS5kcG1zID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCj4gKwku ZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiAr CS5kZXRlY3QgPSB6eF92Z2FfY29ubmVjdG9yX2RldGVjdCwKPiArCS5kZXN0cm95ID0gZHJtX2Nv bm5lY3Rvcl9jbGVhbnVwLAo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9y X3Jlc2V0LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9j b25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAo+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtzdGF0 aWMgaW50IHp4X3ZnYV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3Qgenhf dmdhICp2Z2EpCj4gK3sKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZ2Z2EtPmVu Y29kZXI7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJnZnYS0+Y29ubmVj dG9yOwo+ICsKPiArCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gVk9VX0NSVENfTUFTSzsKPiAr Cj4gKwlkcm1fZW5jb2Rlcl9pbml0KGRybSwgZW5jb2RlciwgJnp4X3ZnYV9lbmNvZGVyX2Z1bmNz LAo+ICsJCQkgRFJNX01PREVfRU5DT0RFUl9EQUMsIE5VTEwpOwo+ICsJZHJtX2VuY29kZXJfaGVs cGVyX2FkZChlbmNvZGVyLCAmenhfdmdhX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKPiArCj4gKwl2 Z2EtPmNvbm5lY3Rvci5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfSFBEOwo+ICsKPiArCWRy bV9jb25uZWN0b3JfaW5pdChkcm0sIGNvbm5lY3RvciwgJnp4X3ZnYV9jb25uZWN0b3JfZnVuY3Ms Cj4gKwkJCSAgIERSTV9NT0RFX0NPTk5FQ1RPUl9WR0EpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfYWRkKGNvbm5lY3RvciwgJnp4X3ZnYV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPiArCj4g Kwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB6eF92Z2FfcHdyY3RybF9p bml0KHN0cnVjdCB6eF92Z2EgKnZnYSkKPiArewo+ICsJc3RydWN0IHp4X3ZnYV9wd3JjdHJsICpw d3JjdHJsID0gJnZnYS0+cHdyY3RybDsKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHZnYS0+ZGV2 Owo+ICsJc3RydWN0IG9mX3BoYW5kbGVfYXJncyBvdXRfYXJnczsKPiArCXN0cnVjdCByZWdtYXAg KnJlZ21hcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gb2ZfcGFyc2VfcGhhbmRsZV93aXRo X2ZpeGVkX2FyZ3MoZGV2LT5vZl9ub2RlLAo+ICsJCQkJInp0ZSx2Z2EtcG93ZXItY29udHJvbCIs IDIsIDAsICZvdXRfYXJncyk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJ cmVnbWFwID0gc3lzY29uX25vZGVfdG9fcmVnbWFwKG91dF9hcmdzLm5wKTsKPiArCWlmIChJU19F UlIocmVnbWFwKSkgewo+ICsJCXJldCA9IFBUUl9FUlIocmVnbWFwKTsKPiArCQlnb3RvIG91dDsK PiArCX0KPiArCj4gKwlwd3JjdHJsLT5yZWdtYXAgPSByZWdtYXA7Cj4gKwlwd3JjdHJsLT5yZWcg PSBvdXRfYXJncy5hcmdzWzBdOwo+ICsJcHdyY3RybC0+bWFzayA9IG91dF9hcmdzLmFyZ3NbMV07 Cj4gKwo+ICtvdXQ6Cj4gKwlvZl9ub2RlX3B1dChvdXRfYXJncy5ucCk7Cj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHp4X3ZnYV9pMmNfcmVhZChzdHJ1Y3QgenhfdmdhICp2 Z2EsIHN0cnVjdCBpMmNfbXNnICptc2cpCj4gK3sKPiArCWludCBsZW4gPSBtc2ctPmxlbjsKPiAr CXU4ICpidWYgPSBtc2ctPmJ1ZjsKPiArCXUzMiBvZmZzZXQgPSAwOwo+ICsJaW50IGk7Cj4gKwo+ ICsJcmVpbml0X2NvbXBsZXRpb24oJnZnYS0+Y29tcGxldGUpOwo+ICsKPiArCS8qIFNlbGVjdCBj b21ibyB3cml0ZSAqLwo+ICsJenhfd3JpdGVsX21hc2sodmdhLT5tbWlvICsgVkdBX0NNRF9DRkcs IFZHQV9DTURfQ09NQk8sIFZHQV9DTURfQ09NQk8pOwo+ICsJenhfd3JpdGVsX21hc2sodmdhLT5t bWlvICsgVkdBX0NNRF9DRkcsIFZHQV9DTURfUlcsIDApOwo+ICsKPiArCXdoaWxlIChsZW4gPiAw KSB7Cj4gKwkJdTMyIGNudDsKPiArCj4gKwkJLyogQ2xlYXIgUlggRklGTyAqLwo+ICsJCXp4X3dy aXRlbF9tYXNrKHZnYS0+bW1pbyArIFZHQV9SWEZfQ1RSTCwgVkdBX1JYX0ZJRk9fQ0xFQVIsCj4g KwkJCSAgICAgICBWR0FfUlhfRklGT19DTEVBUik7Cj4gKwo+ICsJCS8qIERhdGEgb2Zmc2V0IHRv IHJlYWQgZnJvbSAqLwo+ICsJCXp4X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfU1VCX0FERFIsIG9m ZnNldCk7Cj4gKwo+ICsJCS8qIEtpY2sgb2ZmIHRoZSB0cmFuc2ZlciAqLwo+ICsJCXp4X3dyaXRl bF9tYXNrKHZnYS0+bW1pbyArIFZHQV9DTURfQ0ZHLCBWR0FfQ01EX1RSQU5TLAo+ICsJCQkgICAg ICAgVkdBX0NNRF9UUkFOUyk7Cj4gKwo+ICsJCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1l b3V0KCZ2Z2EtPmNvbXBsZXRlLAo+ICsJCQkJCQkgbXNlY3NfdG9famlmZmllcygxMDAwKSkpIHsK PiArCQkJRFJNX0RFVl9FUlJPUih2Z2EtPmRldiwgInRyYW5zZmVyIHRpbWVvdXRcbiIpOwo+ICsJ CQlyZXR1cm4gLUVUSU1FRE9VVDsKPiArCQl9Cj4gKwo+ICsJCWNudCA9IHp4X3JlYWRsKHZnYS0+ bW1pbyArIFZHQV9SWEZfU1RBVFVTKTsKPiArCQljbnQgPSAoY250ICYgVkdBX1JYRl9DT1VOVF9N QVNLKSA+PiBWR0FfUlhGX0NPVU5UX1NISUZUOwo+ICsJCS8qIEZJRk8gc3RhdHVzIG1heSByZXBv cnQgbW9yZSBkYXRhIHRoYW4gd2UgbmVlZCB0byByZWFkICovCj4gKwkJY250ID0gbWluX3QodTMy LCBsZW4sIGNudCk7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKPiArCQkJKmJ1 ZisrID0genhfcmVhZGwodmdhLT5tbWlvICsgVkdBX0RBVEEpOwo+ICsKPiArCQlsZW4gLT0gY250 Owo+ICsJCW9mZnNldCArPSBjbnQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgenhfdmdhX2kyY193cml0ZShzdHJ1Y3QgenhfdmdhICp2Z2EsIHN0cnVjdCBp MmNfbXNnICptc2cpCj4gK3sKPiArCS8qCj4gKwkgKiBUaGUgRERDIEkyQyBhZGFwdGVyIGlzIG9u bHkgZm9yIHJlYWRpbmcgRURJRCBkYXRhLCBzbyB3ZSBhc3N1bWUKPiArCSAqIHRoYXQgdGhlIHdy aXRlIHRvIHRoaXMgYWRhcHRlciBtdXN0IGJlIHRoZSBFRElEIGRhdGEgb2Zmc2V0Lgo+ICsJICov Cj4gKwlpZiAoKG1zZy0+bGVuICE9IDEpIHx8ICgobXNnLT5hZGRyICE9IEREQ19BRERSKSkpCj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogSGFyZHdhcmUgd2lsbCB0YWtlIGNhcmUgb2Yg dGhlIHNsYXZlIGFkZHJlc3Mgc2hpZnRpbmcgKi8KPiArCXp4X3dyaXRlbCh2Z2EtPm1taW8gKyBW R0FfREVWSUNFX0FERFIsIG1zZy0+YWRkcik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgenhfdmdhX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwgc3Ry dWN0IGkyY19tc2cgKm1zZ3MsCj4gKwkJCSAgIGludCBudW0pCj4gK3sKPiArCXN0cnVjdCB6eF92 Z2EgKnZnYSA9IGkyY19nZXRfYWRhcGRhdGEoYWRhcCk7Cj4gKwlzdHJ1Y3QgenhfdmdhX2kyYyAq ZGRjID0gdmdhLT5kZGM7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCWludCBpOwo+ICsKPiArCW11dGV4 X2xvY2soJmRkYy0+bG9jayk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7Cj4g KwkJaWYgKG1zZ3NbaV0uZmxhZ3MgJiBJMkNfTV9SRCkKPiArCQkJcmV0ID0genhfdmdhX2kyY19y ZWFkKHZnYSwgJm1zZ3NbaV0pOwo+ICsJCWVsc2UKPiArCQkJcmV0ID0genhfdmdhX2kyY193cml0 ZSh2Z2EsICZtc2dzW2ldKTsKPiArCj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCWJyZWFrOwo+ICsJ fQo+ICsKPiArCWlmICghcmV0KQo+ICsJCXJldCA9IG51bTsKPiArCj4gKwltdXRleF91bmxvY2so JmRkYy0+bG9jayk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHUzMiB6 eF92Z2FfaTJjX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+ICt7Cj4gKwlyZXR1 cm4gSTJDX0ZVTkNfSTJDIHwgSTJDX0ZVTkNfU01CVVNfRU1VTDsKPiArfQo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpMmNfYWxnb3JpdGhtIHp4X3ZnYV9hbGdvcml0aG0gPSB7Cj4gKwkubWFz dGVyX3hmZXIJPSB6eF92Z2FfaTJjX3hmZXIsCj4gKwkuZnVuY3Rpb25hbGl0eQk9IHp4X3ZnYV9p MmNfZnVuYywKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgenhfdmdhX2RkY19yZWdpc3RlcihzdHJ1 Y3QgenhfdmdhICp2Z2EpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHZnYS0+ZGV2Owo+ ICsJc3RydWN0IGkyY19hZGFwdGVyICphZGFwOwo+ICsJc3RydWN0IHp4X3ZnYV9pMmMgKmRkYzsK PiArCWludCByZXQ7Cj4gKwo+ICsJZGRjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkZGMp LCBHRlBfS0VSTkVMKTsKPiArCWlmICghZGRjKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiAr CXZnYS0+ZGRjID0gZGRjOwo+ICsJbXV0ZXhfaW5pdCgmZGRjLT5sb2NrKTsKPiArCj4gKwlhZGFw ID0gJmRkYy0+YWRhcDsKPiArCWFkYXAtPm93bmVyID0gVEhJU19NT0RVTEU7Cj4gKwlhZGFwLT5j bGFzcyA9IEkyQ19DTEFTU19EREM7Cj4gKwlhZGFwLT5kZXYucGFyZW50ID0gZGV2Owo+ICsJYWRh cC0+YWxnbyA9ICZ6eF92Z2FfYWxnb3JpdGhtOwo+ICsJc25wcmludGYoYWRhcC0+bmFtZSwgc2l6 ZW9mKGFkYXAtPm5hbWUpLCAienggdmdhIGkyYyIpOwo+ICsKPiArCXJldCA9IGkyY19hZGRfYWRh cHRlcihhZGFwKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxl ZCB0byBhZGQgSTJDIGFkYXB0ZXI6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9 Cj4gKwo+ICsJaTJjX3NldF9hZGFwZGF0YShhZGFwLCB2Z2EpOwoKU2luY2UgdGhpcyByZWFsbHkg aXNuJ3QgYSBmdWxsLWZlYXR1cmVkIGkyYyBhZGFwdGVyIGJ1dCBhIHNwZWNpYWxpemVkCiJnaXZl IG1lIHRoZSBlZGlkIiB0aGluZyBJIHRoaW5rIHlvdSBzaG91bGQgbG9vayBpbnRvIGRybV9kb19n ZXRfZWRpZCBhbmQKX25vdF8gZXhwb3NlIHRoZSBpMmMgdGhpbmcuIFRoYXQgc2hvdWxkIHNpbXBs aWZ5IHlvdXIgY29kZSBhIGxvdCwgYW5kCmF2b2lkIGFueSBraW5kIG9mIHN5bmNocm9uaXphdGlv biBpc3N1ZXMgYmV0d2VlbiB1c2Vyc3BhY2UgaTJjIGFjY2VzcyBhbmQKeW91ciBkcml2ZXIncyBh Y2Nlc3MgKHdoaWNoIHlvdSBhdG0gZG9uJ3QgaGFuZGxlIGF0IGFsbCkuCgpXaXRoIHRoYXQgZml4 ZWQsIG9uIHRoZSBlbnRpcmUgc2VyaWVzLgoKQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmll bC52ZXR0ZXJAZmZ3bGwuY2g+Cgo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aXJxcmV0dXJuX3QgenhfdmdhX2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ICt7 Cj4gKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSBkZXZfaWQ7Cj4gKwo+ICsJZHJtX2hlbHBlcl9ocGRf aXJxX2V2ZW50KHZnYS0+Y29ubmVjdG9yLmRldik7Cj4gKwo+ICsJcmV0dXJuIElSUV9IQU5ETEVE Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgenhfdmdhX2lycV9oYW5kbGVyKGludCBp cnEsIHZvaWQgKmRldl9pZCkKPiArewo+ICsJc3RydWN0IHp4X3ZnYSAqdmdhID0gZGV2X2lkOwo+ ICsJdTMyIHN0YXR1czsKPiArCj4gKwlzdGF0dXMgPSB6eF9yZWFkbCh2Z2EtPm1taW8gKyBWR0Ff STJDX1NUQVRVUyk7Cj4gKwo+ICsJLyogQ2xlYXIgaW50ZXJydXB0IHN0YXR1cyAqLwo+ICsJenhf d3JpdGVsX21hc2sodmdhLT5tbWlvICsgVkdBX0kyQ19TVEFUVVMsIFZHQV9DTEVBUl9JUlEsCj4g KwkJICAgICAgIFZHQV9DTEVBUl9JUlEpOwo+ICsKPiArCWlmIChzdGF0dXMgJiBWR0FfREVWSUNF X0NPTk5FQ1RFRCkgewo+ICsJCS8qCj4gKwkJICogV2Ugc2hvdWxkIGlkZWFsbHkgc2V0IHVwIFZH QV9ERVRFQ1RfU0VMX0hBU19ERVZJQ0UgYml0IGhlcmUKPiArCQkgKiBmb3IgdW5wbHVnIGRldGVj dGlvbiwgYnV0IGRvaW5nIHNvIHdpbGwgc3RvcCBEREMgYnVzIGZyb20KPiArCQkgKiByZWFkaW5n IEVESUQgbGF0ZXIgb24uIEl0IGxvb2tzIGxpa2UgYSBIVyBsaW1pdGF0aW9uLCBhbmQgd2UKPiAr CQkgKiB3b3JrIGFyb3VuZCBpdCBieSBkZWZlcmluZyB0aGUgYml0IHNldHVwIHRvIC5nZXRfbW9k ZXMgaG9vawo+ICsJCSAqIGFmdGVyIEVESUQgcmVhZCBzdWNjZWVkcy4KPiArCQkgKi8KPiArCQl2 Z2EtPmNvbm5lY3RlZCA9IHRydWU7Cj4gKwkJcmV0dXJuIElSUV9XQUtFX1RIUkVBRDsKPiArCX0K PiArCj4gKwlpZiAoc3RhdHVzICYgVkdBX0RFVklDRV9ESVNDT05ORUNURUQpIHsKPiArCQl6eF93 cml0ZWwodmdhLT5tbWlvICsgVkdBX0FVVE9fREVURUNUX1NFTCwKPiArCQkJICBWR0FfREVURUNU X1NFTF9OT19ERVZJQ0UpOwo+ICsJCXZnYS0+Y29ubmVjdGVkID0gZmFsc2U7Cj4gKwkJcmV0dXJu IElSUV9XQUtFX1RIUkVBRDsKPiArCX0KPiArCj4gKwlpZiAoc3RhdHVzICYgVkdBX1RSQU5TX0RP TkUpIHsKPiArCQljb21wbGV0ZSgmdmdhLT5jb21wbGV0ZSk7Cj4gKwkJcmV0dXJuIElSUV9IQU5E TEVEOwo+ICsJfQo+ICsKPiArCXJldHVybiBJUlFfTk9ORTsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgenhfdmdhX2h3X2luaXQoc3RydWN0IHp4X3ZnYSAqdmdhKQo+ICt7Cj4gKwl1bnNpZ25lZCBs b25nIHJlZiA9IGNsa19nZXRfcmF0ZSh2Z2EtPmkyY193Y2xrKTsKPiArCWludCBkaXY7Cj4gKwo+ ICsJLyoKPiArCSAqIFNldCB1cCBJMkMgZmFzdCBzcGVlZCBkaXZpZGVyIHBlciBmb3JtdWxhIGJl bG93IHRvIGdldCA0MDBrSHouCj4gKwkgKiAgIHNjbCA9IHJlZiAvICgoZGl2ICsgMSkgKiA0KQo+ ICsJICovCj4gKwlkaXYgPSBESVZfUk9VTkRfVVAocmVmIC8gMTAwMCwgNDAwICogNCkgLSAxOwo+ ICsJenhfd3JpdGVsKHZnYS0+bW1pbyArIFZHQV9DTEtfRElWX0ZTLCBkaXYpOwo+ICsKPiArCS8q IFNldCB1cCBkZXZpY2UgZGV0ZWN0aW9uICovCj4gKwl6eF93cml0ZWwodmdhLT5tbWlvICsgVkdB X0FVVE9fREVURUNUX1BBUkEsIDB4ODApOwo+ICsJenhfd3JpdGVsKHZnYS0+bW1pbyArIFZHQV9B VVRPX0RFVEVDVF9TRUwsIFZHQV9ERVRFQ1RfU0VMX05PX0RFVklDRSk7Cj4gKwo+ICsJLyoKPiAr CSAqIFdlIG5lZWQgdG8gcG9rZSBtb25pdG9yIHZpYSBEREMgYnVzIHRvIGdldCBjb25uZWN0aW9u IGlycQo+ICsJICogc3RhcnQgd29ya2luZy4KPiArCSAqLwo+ICsJenhfd3JpdGVsKHZnYS0+bW1p byArIFZHQV9ERVZJQ0VfQUREUiwgRERDX0FERFIpOwo+ICsJenhfd3JpdGVsX21hc2sodmdhLT5t bWlvICsgVkdBX0NNRF9DRkcsIFZHQV9DTURfVFJBTlMsIFZHQV9DTURfVFJBTlMpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHp4X3ZnYV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtID0gZGF0YTsKPiArCXN0cnVjdCByZXNvdXJjZSAqcmVzOwo+ICsJc3RydWN0IHp4X3ZnYSAq dmdhOwo+ICsJaW50IGlycTsKPiArCWludCByZXQ7Cj4gKwo+ICsJdmdhID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCp2Z2EpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghdmdhKQo+ICsJCXJldHVy biAtRU5PTUVNOwo+ICsKPiArCXZnYS0+ZGV2ID0gZGV2Owo+ICsJZGV2X3NldF9kcnZkYXRhKGRl diwgdmdhKTsKPiArCj4gKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNP VVJDRV9NRU0sIDApOwo+ICsJdmdhLT5tbWlvID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg cmVzKTsKPiArCWlmIChJU19FUlIodmdhLT5tbWlvKSkKPiArCQlyZXR1cm4gUFRSX0VSUih2Z2Et Pm1taW8pOwo+ICsKPiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4gKwlpZiAo aXJxIDwgMCkKPiArCQlyZXR1cm4gaXJxOwo+ICsKPiArCXZnYS0+aTJjX3djbGsgPSBkZXZtX2Ns a19nZXQoZGV2LCAiaTJjX3djbGsiKTsKPiArCWlmIChJU19FUlIodmdhLT5pMmNfd2NsaykpIHsK PiArCQlyZXQgPSBQVFJfRVJSKHZnYS0+aTJjX3djbGspOwo+ICsJCURSTV9ERVZfRVJST1IoZGV2 LCAiZmFpbGVkIHRvIGdldCBpMmNfd2NsazogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsK PiArCX0KPiArCj4gKwlyZXQgPSB6eF92Z2FfcHdyY3RybF9pbml0KHZnYSk7Cj4gKwlpZiAocmV0 KSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gaW5pdCBwb3dlciBjb250cm9s OiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IHp4X3Zn YV9kZGNfcmVnaXN0ZXIodmdhKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVWX0VSUk9SKGRl diwgImZhaWxlZCB0byByZWdpc3RlciBkZGM6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7 Cj4gKwl9Cj4gKwo+ICsJcmV0ID0genhfdmdhX3JlZ2lzdGVyKGRybSwgdmdhKTsKPiArCWlmIChy ZXQpIHsKPiArCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byByZWdpc3RlciB2Z2E6ICVk XG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJaW5pdF9jb21wbGV0aW9u KCZ2Z2EtPmNvbXBsZXRlKTsKPiArCj4gKwlyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJx KGRldiwgaXJxLCB6eF92Z2FfaXJxX2hhbmRsZXIsCj4gKwkJCQkJenhfdmdhX2lycV90aHJlYWQs IElSUUZfU0hBUkVELAo+ICsJCQkJCWRldl9uYW1lKGRldiksIHZnYSk7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gcmVxdWVzdCB0aHJlYWRlZCBpcnE6 ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3By ZXBhcmVfZW5hYmxlKHZnYS0+aTJjX3djbGspOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+ICsKPiArCXp4X3ZnYV9od19pbml0KHZnYSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHp4X3ZnYV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlICptYXN0ZXIsCj4gKwkJCSAgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IHp4X3Zn YSAqdmdhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHZnYS0+aTJjX3djbGspOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBv bmVudF9vcHMgenhfdmdhX2NvbXBvbmVudF9vcHMgPSB7Cj4gKwkuYmluZCA9IHp4X3ZnYV9iaW5k LAo+ICsJLnVuYmluZCA9IHp4X3ZnYV91bmJpbmQsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHp4 X3ZnYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlyZXR1cm4g Y29tcG9uZW50X2FkZCgmcGRldi0+ZGV2LCAmenhfdmdhX2NvbXBvbmVudF9vcHMpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHp4X3ZnYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiArewo+ICsJY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCAmenhfdmdhX2NvbXBvbmVudF9v cHMpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIHp4X3ZnYV9vZl9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJ6dGUsengy OTY3MTgtdmdhIiwgfSwKPiArCXsgLyogZW5kICovIH0sCj4gK307Cj4gK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIHp4X3ZnYV9vZl9tYXRjaCk7Cj4gKwo+ICtzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IHp4X3ZnYV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUgPSB6eF92Z2FfcHJvYmUsCj4gKwkucmVtb3Zl ID0genhfdmdhX3JlbW92ZSwKPiArCS5kcml2ZXIJPSB7Cj4gKwkJLm5hbWUgPSAiengtdmdhIiwK PiArCQkub2ZfbWF0Y2hfdGFibGUJPSB6eF92Z2Ffb2ZfbWF0Y2gsCj4gKwl9LAo+ICt9Owo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYV9yZWdzLmggYi9kcml2ZXJzL2dw dS9kcm0venRlL3p4X3ZnYV9yZWdzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMC4uZmVhYTM0NWZlNmE2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS96dGUvenhfdmdhX3JlZ3MuaAo+IEBAIC0wLDAgKzEsMzYgQEAKPiArLyoKPiArICog Q29weXJpZ2h0IChDKSAyMDE3IFNhbmVjaGlwcyBUZWNobm9sb2d5IENvLiwgTHRkLgo+ICsgKiBD b3B5cmlnaHQgMjAxNyBMaW5hcm8gTHRkLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhcwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K PiArICovCj4gKwo+ICsjaWZuZGVmIF9fWlhfVkdBX1JFR1NfSF9fCj4gKyNkZWZpbmUgX19aWF9W R0FfUkVHU19IX18KPiArCj4gKyNkZWZpbmUgVkdBX0NNRF9DRkcJCQkweDA0Cj4gKyNkZWZpbmUg VkdBX0NNRF9UUkFOUwkJCUJJVCg2KQo+ICsjZGVmaW5lIFZHQV9DTURfQ09NQk8JCQlCSVQoNSkK PiArI2RlZmluZSBWR0FfQ01EX1JXCQkJQklUKDQpCj4gKyNkZWZpbmUgVkdBX1NVQl9BRERSCQkJ MHgwYwo+ICsjZGVmaW5lIFZHQV9ERVZJQ0VfQUREUgkJCTB4MTAKPiArI2RlZmluZSBWR0FfQ0xL X0RJVl9GUwkJCTB4MTQKPiArI2RlZmluZSBWR0FfUlhGX0NUUkwJCQkweDIwCj4gKyNkZWZpbmUg VkdBX1JYX0ZJRk9fQ0xFQVIJCUJJVCg3KQo+ICsjZGVmaW5lIFZHQV9EQVRBCQkJMHgyNAo+ICsj ZGVmaW5lIFZHQV9JMkNfU1RBVFVTCQkJMHgyOAo+ICsjZGVmaW5lIFZHQV9ERVZJQ0VfRElTQ09O TkVDVEVECQlCSVQoNykKPiArI2RlZmluZSBWR0FfREVWSUNFX0NPTk5FQ1RFRAkJQklUKDYpCj4g KyNkZWZpbmUgVkdBX0NMRUFSX0lSUQkJCUJJVCg0KQo+ICsjZGVmaW5lIFZHQV9UUkFOU19ET05F CQkJQklUKDApCj4gKyNkZWZpbmUgVkdBX1JYRl9TVEFUVVMJCQkweDMwCj4gKyNkZWZpbmUgVkdB X1JYRl9DT1VOVF9TSElGVAkJMgo+ICsjZGVmaW5lIFZHQV9SWEZfQ09VTlRfTUFTSwkJR0VOTUFT Syg3LCAyKQo+ICsjZGVmaW5lIFZHQV9BVVRPX0RFVEVDVF9QQVJBCQkweDM0Cj4gKyNkZWZpbmUg VkdBX0FVVE9fREVURUNUX1NFTAkJMHgzOAo+ICsjZGVmaW5lIFZHQV9ERVRFQ1RfU0VMX0hBU19E RVZJQ0UJQklUKDEpCj4gKyNkZWZpbmUgVkdBX0RFVEVDVF9TRUxfTk9fREVWSUNFCUJJVCgwKQo+ ICsKPiArI2VuZGlmIC8qIF9fWlhfVkdBX1JFR1NfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS96dGUvenhfdm91LmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZvdS5jCj4g aW5kZXggMmEyZDkwYmQ5NDI1Li5jYzViZGZjNTNlOGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3p0ZS96eF92b3UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMK PiBAQCAtMjMsNiArMjMsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4K PiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gIAo+ICsjaW5jbHVkZSAienhfY29tbW9uX3JlZ3Mu aCIKPiAgI2luY2x1ZGUgInp4X2RybV9kcnYuaCIKPiAgI2luY2x1ZGUgInp4X3BsYW5lLmgiCj4g ICNpbmNsdWRlICJ6eF92b3UuaCIKPiBAQCAtMTIyLDYgKzEyMyw4IEBAIHN0cnVjdCB6eF9jcnRj IHsKPiAgCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnk7Cj4gIAlzdHJ1Y3Qgenhfdm91X2h3ICp2 b3U7Cj4gIAl2b2lkIF9faW9tZW0gKmNobnJlZzsKPiArCXZvaWQgX19pb21lbSAqY2huY3NjOwo+ ICsJdm9pZCBfX2lvbWVtICpkaXRoZXI7Cj4gIAljb25zdCBzdHJ1Y3QgenhfY3J0Y19yZWdzICpy ZWdzOwo+ICAJY29uc3Qgc3RydWN0IHp4X2NydGNfYml0cyAqYml0czsKPiAgCWVudW0gdm91X2No bl90eXBlIGNobl90eXBlOwo+IEBAIC0yMDQsNiArMjA3LDExIEBAIHN0cnVjdCB2b3VfaW5mIHsK PiAgCQkuY2xvY2tzX2VuX2JpdHMgPSBCSVQoMTUpLAo+ICAJCS5jbG9ja3Nfc2VsX2JpdHMgPSBC SVQoMTEpIHwgQklUKDApLAo+ICAJfSwKPiArCVtWT1VfVkdBXSA9IHsKPiArCQkuZGF0YV9zZWwg PSBWT1VfUkdCXzg4OCwKPiArCQkuY2xvY2tzX2VuX2JpdHMgPSBCSVQoMSksCj4gKwkJLmNsb2Nr c19zZWxfYml0cyA9IEJJVCgxMCksCj4gKwl9LAo+ICB9Owo+ICAKPiAgc3RhdGljIGlubGluZSBz dHJ1Y3Qgenhfdm91X2h3ICpjcnRjX3RvX3ZvdShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gQEAg LTIyNyw5ICsyMzUsMjYgQEAgdm9pZCB2b3VfaW5mX2VuYWJsZShlbnVtIHZvdV9pbmZfaWQgaWQs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCB6eF9jcnRjICp6Y3J0YyA9IHRvX3p4 X2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3Qgenhfdm91X2h3ICp2b3UgPSB6Y3J0Yy0+dm91Owo+ICAJ c3RydWN0IHZvdV9pbmYgKmluZiA9ICZ2b3VfaW5mc1tpZF07Cj4gKwl2b2lkIF9faW9tZW0gKmRp dGhlciA9IHpjcnRjLT5kaXRoZXI7Cj4gKwl2b2lkIF9faW9tZW0gKmNzYyA9IHpjcnRjLT5jaG5j c2M7Cj4gIAlib29sIGlzX21haW4gPSB6Y3J0Yy0+Y2huX3R5cGUgPT0gVk9VX0NITl9NQUlOOwo+ ICAJdTMyIGRhdGFfc2VsX3NoaWZ0ID0gaWQgPDwgMTsKPiAgCj4gKwlpZiAoaW5mLT5kYXRhX3Nl bCAhPSBWT1VfWVVWNDQ0KSB7Cj4gKwkJLyogRW5hYmxlIGNoYW5uZWwgQ1NDIGZvciBSR0Igb3V0 cHV0ICovCj4gKwkJenhfd3JpdGVsX21hc2soY3NjICsgQ1NDX0NUUkwwLCBDU0NfQ09WX01PREVf TUFTSywKPiArCQkJICAgICAgIENTQ19CVDcwOV9JTUFHRV9ZQ0JDUjJSR0IgPDwgQ1NDX0NPVl9N T0RFX1NISUZUKTsKPiArCQl6eF93cml0ZWxfbWFzayhjc2MgKyBDU0NfQ1RSTDAsIENTQ19XT1JL X0VOQUJMRSwKPiArCQkJICAgICAgIENTQ19XT1JLX0VOQUJMRSk7Cj4gKwo+ICsJCS8qIEJ5cGFz cyBEaXRoZXIgYmxvY2sgZm9yIFJHQiBvdXRwdXQgKi8KPiArCQl6eF93cml0ZWxfbWFzayhkaXRo ZXIgKyBPU0RfRElUSEVSX0NUUkwwLCBESVRIRVJfQllTUEFTUywKPiArCQkJICAgICAgIERJVEhF Ul9CWVNQQVNTKTsKPiArCX0gZWxzZSB7Cj4gKwkJenhfd3JpdGVsX21hc2soY3NjICsgQ1NDX0NU UkwwLCBDU0NfV09SS19FTkFCTEUsIDApOwo+ICsJCXp4X3dyaXRlbF9tYXNrKGRpdGhlciArIE9T RF9ESVRIRVJfQ1RSTDAsIERJVEhFUl9CWVNQQVNTLCAwKTsKPiArCX0KPiArCj4gIAkvKiBTZWxl Y3QgZGF0YSBmb3JtYXQgKi8KPiAgCXp4X3dyaXRlbF9tYXNrKHZvdS0+dm91Y3RsICsgVk9VX0lO Rl9EQVRBX1NFTCwgMHgzIDw8IGRhdGFfc2VsX3NoaWZ0LAo+ICAJCSAgICAgICBpbmYtPmRhdGFf c2VsIDw8IGRhdGFfc2VsX3NoaWZ0KTsKPiBAQCAtNTAyLDIwICs1MjcsMjQgQEAgc3RhdGljIGlu dCB6eF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IHp4X3ZvdV9odyAq dm91LAo+ICAKPiAgCWlmIChjaG5fdHlwZSA9PSBWT1VfQ0hOX01BSU4pIHsKPiAgCQl6cGxhbmUt PmxheWVyID0gdm91LT5vc2QgKyBNQUlOX0dMX09GRlNFVDsKPiAtCQl6cGxhbmUtPmNzYyA9IHZv dS0+b3NkICsgTUFJTl9DU0NfT0ZGU0VUOwo+ICsJCXpwbGFuZS0+Y3NjID0gdm91LT5vc2QgKyBN QUlOX0dMX0NTQ19PRkZTRVQ7Cj4gIAkJenBsYW5lLT5oYnNjID0gdm91LT5vc2QgKyBNQUlOX0hC U0NfT0ZGU0VUOwo+ICAJCXpwbGFuZS0+cnN6ID0gdm91LT5vdGZwcHUgKyBNQUlOX1JTWl9PRkZT RVQ7Cj4gIAkJenBsYW5lLT5iaXRzID0gJnp4X2dsX2JpdHNbMF07Cj4gIAkJemNydGMtPmNobnJl ZyA9IHZvdS0+b3NkICsgT1NEX01BSU5fQ0hOOwo+ICsJCXpjcnRjLT5jaG5jc2MgPSB2b3UtPm9z ZCArIE1BSU5fQ0hOX0NTQ19PRkZTRVQ7Cj4gKwkJemNydGMtPmRpdGhlciA9IHZvdS0+b3NkICsg TUFJTl9ESVRIRVJfT0ZGU0VUOwo+ICAJCXpjcnRjLT5yZWdzID0gJm1haW5fY3J0Y19yZWdzOwo+ ICAJCXpjcnRjLT5iaXRzID0gJm1haW5fY3J0Y19iaXRzOwo+ICAJfSBlbHNlIHsKPiAgCQl6cGxh bmUtPmxheWVyID0gdm91LT5vc2QgKyBBVVhfR0xfT0ZGU0VUOwo+IC0JCXpwbGFuZS0+Y3NjID0g dm91LT5vc2QgKyBBVVhfQ1NDX09GRlNFVDsKPiArCQl6cGxhbmUtPmNzYyA9IHZvdS0+b3NkICsg QVVYX0dMX0NTQ19PRkZTRVQ7Cj4gIAkJenBsYW5lLT5oYnNjID0gdm91LT5vc2QgKyBBVVhfSEJT Q19PRkZTRVQ7Cj4gIAkJenBsYW5lLT5yc3ogPSB2b3UtPm90ZnBwdSArIEFVWF9SU1pfT0ZGU0VU Owo+ICAJCXpwbGFuZS0+Yml0cyA9ICZ6eF9nbF9iaXRzWzFdOwo+ICAJCXpjcnRjLT5jaG5yZWcg PSB2b3UtPm9zZCArIE9TRF9BVVhfQ0hOOwo+ICsJCXpjcnRjLT5jaG5jc2MgPSB2b3UtPm9zZCAr IEFVWF9DSE5fQ1NDX09GRlNFVDsKPiArCQl6Y3J0Yy0+ZGl0aGVyID0gdm91LT5vc2QgKyBBVVhf RElUSEVSX09GRlNFVDsKPiAgCQl6Y3J0Yy0+cmVncyA9ICZhdXhfY3J0Y19yZWdzOwo+ICAJCXpj cnRjLT5iaXRzID0gJmF1eF9jcnRjX2JpdHM7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS96dGUvenhfdm91X3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3Jl Z3MuaAo+IGluZGV4IGMwNjZlZjEyMzQzNC4uNWEyMTgzNTFiNDk3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS96 dGUvenhfdm91X3JlZ3MuaAo+IEBAIC0xMywxMyArMTMsMTcgQEAKPiAgCj4gIC8qIFN1Yi1tb2R1 bGUgb2Zmc2V0ICovCj4gICNkZWZpbmUgTUFJTl9HTF9PRkZTRVQJCQkweDEzMAo+IC0jZGVmaW5l IE1BSU5fQ1NDX09GRlNFVAkJCTB4NTgwCj4gKyNkZWZpbmUgTUFJTl9HTF9DU0NfT0ZGU0VUCQkw eDU4MAo+ICsjZGVmaW5lIE1BSU5fQ0hOX0NTQ19PRkZTRVQJCTB4NmMwCj4gICNkZWZpbmUgTUFJ Tl9IQlNDX09GRlNFVAkJMHg4MjAKPiArI2RlZmluZSBNQUlOX0RJVEhFUl9PRkZTRVQJCTB4OTYw Cj4gICNkZWZpbmUgTUFJTl9SU1pfT0ZGU0VUCQkJMHg2MDAgLyogT1RGUFBVIHN1Yi1tb2R1bGUg Ki8KPiAgCj4gICNkZWZpbmUgQVVYX0dMX09GRlNFVAkJCTB4MjAwCj4gLSNkZWZpbmUgQVVYX0NT Q19PRkZTRVQJCQkweDVkMAo+ICsjZGVmaW5lIEFVWF9HTF9DU0NfT0ZGU0VUCQkweDVkMAo+ICsj ZGVmaW5lIEFVWF9DSE5fQ1NDX09GRlNFVAkJMHg3MTAKPiAgI2RlZmluZSBBVVhfSEJTQ19PRkZT RVQJCQkweDg2MAo+ICsjZGVmaW5lIEFVWF9ESVRIRVJfT0ZGU0VUCQkweDk3MAo+ICAjZGVmaW5l IEFVWF9SU1pfT0ZGU0VUCQkJMHg4MDAKPiAgCj4gICNkZWZpbmUgT1NEX1ZMMF9PRkZTRVQJCQkw eDA0MAo+IEBAIC03OCw2ICs4MiwxMCBAQAo+ICAjZGVmaW5lIENITl9JTlRFUkxBQ0VfQlVGX0NU UkwJCTB4MjQKPiAgI2RlZmluZSBDSE5fSU5URVJMQUNFX0VOCQlCSVQoMikKPiAgCj4gKy8qIERp dGhlciByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBPU0RfRElUSEVSX0NUUkwwCQkweDAwCj4gKyNk ZWZpbmUgRElUSEVSX0JZU1BBU1MJCQlCSVQoMzEpCj4gKwo+ICAvKiBUSU1JTkdfQ1RSTCByZWdp c3RlcnMgKi8KPiAgI2RlZmluZSBUSU1JTkdfVENfRU5BQkxFCQkweDA0Cj4gICNkZWZpbmUgQVVY X1RDX0VOCQkJQklUKDEpCj4gLS0gCj4gMS45LjEKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK