From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sandeep Panda Subject: [PATCH v8 1/4] drm/bridge: add support for sn65dsi86 bridge driver Date: Tue, 5 Jun 2018 11:10:15 +0530 Message-ID: <1528177218-1051-3-git-send-email-spanda@codeaurora.org> References: <1528177218-1051-1-git-send-email-spanda@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1528177218-1051-1-git-send-email-spanda-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sandeep Panda , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: devicetree@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIFRJJ3Mgc242NWRzaTg2IGRzaTJlZHAgYnJpZGdlIGNoaXAuClRoZSBj aGlwIGNvbnZlcnRzIERTSSB0cmFuc21pdHRlZCBzaWduYWwgdG8gZURQIHNpZ25hbCwKd2hpY2gg aXMgZmVkIHRvIHRoZSBjb25uZWN0ZWQgZURQIHBhbmVsLgoKVGhpcyBjaGlwIGNhbiBiZSBjb250 cm9sbGVkIHZpYSBlaXRoZXIgaTJjIGludGVyZmFjZSBvcgpkc2kgaW50ZXJmYWNlLiBDdXJyZW50 bHkgaW4gZHJpdmVyIGFsbCB0aGUgY29udHJvbCByZWdpc3RlcnMKYXJlIGJlaW5nIGFjY2Vzc2Vk IHRocm91Z2ggaTJjIGludGVyZmFjZSBvbmx5LgpBbHNvIGFzIG9mIG5vdyBIUEQgc3VwcG9ydCBo YXMgbm90IGJlZW4gYWRkZWQgdG8gYnJpZGdlCmNoaXAgZHJpdmVyLgoKQ2hhbmdlcyBpbiB2MToK IC0gU3BsaXQgdGhlIGR0LWJpbmRpbmdzIGFuZCB0aGUgZHJpdmVyIHN1cHBvcnQgaW50byBzZXBh cmF0ZSBwYXRjaGVzCiAgIChBbmRyemVqIEhhamRhKS4KIC0gVXNlIG9mIGdwaW9kIEFQSXMgdG8g cGFyc2UgYW5kIGNvbmZpZ3VyZSBncGlvcyBpbnN0ZWFkIG9mIG9ic29sZXRlIG9uZXMKICAgKEFu ZHJ6ZWogSGFqZGEpLgogLSBVc2UgbWFjcm9zIHRvIGRlZmluZSB0aGUgcmVnaXN0ZXIgb2Zmc2V0 cyAoQW5kcnplaiBIYWpkYSkuCgpDaGFuZ2VzIGluIHYyOgogLSBTZXBhcmF0ZSBvdXQgZWRwIHBh bmVsIHNwZWNpZmljIEhXIHJlc291cmNlIGhhbmRsaW5nIGZyb20gYnJpZGdlCiAgIGRyaXZlciBh bmQgY3JlYXRlIGEgc2VwYXJhdGUgZWRwIHBhbmVsIGRyaXZlcnMgdG8gaGFuZGxlIHBhbmVsCiAg IHNwZWNpZmljIG1vZGUgaW5mb3JtYXRpb24gYW5kIEhXIHJlc291cmNlcyAoU2VhbiBQYXVsKS4K IC0gUmVwbGFjZSBwcl8qIEFQSXMgdG8gRFJNXyogQVBJcyB0byBsb2cgZXJyb3Igb3IgZGVidWcg aW5mb3JtYXRpb24KICAgKFNlYW4gUGF1bCkuCiAtIFJlbW92ZSBzb21lIG9mIHRoZSB1bm5lY2Vz c2FyeSBzdHJ1Y3R1cmUvdmFyaWFibGUgZnJvbSBkcml2ZXIgKFNlYW4KICAgUGF1bCkuCiAtIFJl bmFtZSB0aGUgZnVuY3Rpb24gYW5kIHN0cnVjdHVyZSBwcmVmaXggInNuNjVkc2k4NiIgdG8gInRp X3NuX2JyaWRnZSIKICAgKFNlYW4gUGF1bCAvIFJvYiBIZXJyaW5nKS4KIC0gUmVtb3ZlIG1vc3Qg b2YgdGhlIGhhcmQtY29kaW5nIGFuZCBtb2RpZmllZCB0aGUgYnJpZGdlIGluaXQgc2VxdWVuY2UK ICAgYmFzZWQgb24gY3VycmVudCBtb2RlIChTZWFuIFBhdWwpLgogLSBSZW1vdmUgdGhlIGV4aXN0 aW5nIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBFRElEIGRhdGEgYW5kCiAgIGltcGxlbWVudGVk IHRoaXMgYXMgYW4gaTJjX2FkYXB0ZXIgYW5kIHVzZSBkcm1fZ2V0X2VkaWQoKSAoU2VhbiBQYXVs KS4KIC0gUmVtb3ZlIHRoZSBkdW1teSBpcnEgaGFuZGxlciBpbXBsZW1lbnRhdGlvbiwgd2lsbCBh ZGQgYmFjayB0aGUKICAgcHJvcGVyIGlycSBoYW5kbGluZyBsYXRlciAoU2VhbiBQYXVsKS4KIC0g Q2FwdHVyZSB0aGUgcmVxdWlyZWQgZW5hYmxlIGdwaW9zIGluIGEgc2luZ2xlIGFycmF5IGJhc2Vk IG9uIGR0IGVudHJ5CiAgIGluc3RlYWQgb2YgaGF2aW5nIGluZGl2aWR1YWwgZGVzY3JpcHRvciBm b3IgZWFjaCBncGlvIChTZWFuIFBhdWwpLgoKQ2hhbmdlcyBpbiB2MzoKIC0gUmVtb3ZlIHVzYWdl IG9mIGlycV9ncGlvIGFuZCByZXBsYWNlIGl0IGFzICJpbnRlcnJ1cHRzIiBwcm9wZXJ0eSAoUm9i CiAgIEhlcnJpbmcpLgogLSBSZW1vdmUgdGhlIHVubmVjZXNzYXJ5IGhlYWRlciBmaWxlIGluY2x1 c2lvbnMgKFNlYW4gUGF1bCkuCiAtIFJlYXJyYW5nZSB0aGUgaGVhZGVyIGZpbGVzIGluIGFscGhh YmV0aWNhbCBvcmRlciAoU2VhbiBQYXVsKS4KIC0gVXNlIHJlZ21hcCBpbnRlcmZhY2UgdG8gcGVy Zm9ybSBpMmMgdHJhbnNhY3Rpb25zLgogLSBVcGRhdGUgQ29weXJpZ2h0L0xpY2Vuc2UgZmllbGQg YW5kIGFkZHJlc3Mgb3RoZXIgcmV2aWV3IGNvbW1lbnRzCiAgIChKb3JkYW4gQ3JvdXNlKS4KCkNo YW5nZXMgaW4gdjQ6CiAtIFVwZGF0ZSBMaWNlbnNlL0NvcHlyaWdodCAoU2VhbiBQYXVsKS4KIC0g QWRkIEtjb25maWcgYW5kIE1ha2VmaWxlIGNoYW5nZXMgKFNlYW4gUGF1bCkuCiAtIERyb3AgaTJj IGdwaW8gaGFuZGxpbmcgZnJvbSB0aGlzIGJyaWRnZSBkcml2ZXIsIHNpbmNlIGkyYyBzZGEvc2Ns IGdwaW9zCiAgIHdpbGwgYmUgaGFuZGxlZCBieSBpMmMgbWFzdGVyLgogLSBVcGRhdGUgcmVxdWly ZWQgc3VwcGxpZXMgbmFtZXMuCiAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBnb3RvIHN0YXRlbWVudHMg KFNlYW4gUGF1bCkuCiAtIEFkZCBtdXRleCBsb2NrIHRvIHBvd2VyX2N0cmwgQVBJIHRvIGF2b2lk IHJhY2UgY29uZGl0aW9ucyAoU2VhbgogICBQYXVsKS4KIC0gQWRkIHN1cHBvcnQgdG8gcGFyc2Ug cmVmZXJlbmNlIGNsayBmcmVxdWVuY3kgZnJvbSBkdChvcHRpb25hbCkuCiAtIFVwZGF0ZSB0aGUg YnJpZGdlIGNoaXAgZW5hYmxlL2Rpc2FibGUgc2VxdWVuY2UuCgpDaGFuZ2VzIGluIHY1OgogLSBG aXhlZCBLYnVpbGQgdGVzdCBzZXJ2aWNlIHJlcG9ydGVkIHdhcm5pbmdzLgoKQ2hhbmdlcyBpbiB2 NjoKIC0gVXNlIFBNIHJ1bnRpbWUgYmFzZWQgcmVmLWNvdW50aW5nIGluc3RlYWQgb2YgbG9jYWwg cmVmX2NvdW50IG1lY2hhbmlzbQogICAoU3RlcGhlbiBCb3lkKS4KIC0gQ2xlYW4gdXAgc29tZSBk ZWJ1ZyBsb2dzIGFuZCBpbmRlbnRhdGlvbnMgKFNlYW4gUGF1bCkuCiAtIFNpbXBsaWZ5IGRwIHJh dGUgY2FsY3VsYXRpb24gKFNlYW4gUGF1bCkuCiAtIEFkZCBzdXBwb3J0IHRvIGNvbmZpZ3VyZSBy ZWZjbGsgYmFzZWQgb24gaW5wdXQgUkVGQ0xLIHBpbiBvciBEQUNQL04KICAgcGluIChTdGVwaGVu IEJveWQpLgoKQ2hhbmdlcyBpbiB2NzoKIC0gVXNlIHN0YXRpYyBzdXBwbHkgZW50cmllcyBpbnN0 ZWFkIG9mIGR5bmFtaWMgYWxsb2NhdGlvbiAoQW5kcnplagogICBIYWpkYSkuCiAtIERlZmVyIGJy aWRnZSBkcml2ZXIgcHJvYmUgaWYgcGFuZWwgaXMgbm90IHByb2JlZCAoQW5kcnplaiBIYWpkYSku CiAtIFVwZGF0ZSBvZl9ncmFwaCBBUElzIGZvciBjb3JyZWN0IG5vZGUgcmVmZXJlbmNlIG1hbmFn ZW1lbnQuIChBbmRyemVqCiAgIEhhamRhKS4KIC0gUmVtb3ZlIGxvY2FsIGRpc3BsYXlfbW9kZSBv YmplY3QgKEFuZHJ6ZWogSGFqZGEpLgogLSBSZW1vdmUgdmVyc2lvbiBpZCBjaGVjayBmdW5jdGlv biBmcm9tIGRyaXZlci4KCkNoYW5nZXMgaW4gdjg6CiAtIE1vdmUgZHNpIHJlZ2lzdGVyL2F0dGFj aCBmdW5jdGlvbiB0byBicmlkZ2UgZHJpdmVyIHByb2JlIChBbmRyemVqCiAgIEhhamRhKS4KIC0g SW50cm9kdWNlIGEgbmV3IGhlbHBlciBmdW5jdGlvbiB0byB3cml0ZSAxNmJpdCB3b3JkcyBpbnRv IGNvbnNlY3V0aXZlCiAgIHJlZ2lzdGVycyAoQW5kcnplaiBIYWpkYSkuCiAtIFJlbW92ZSB1bm5l Y2Vzc2FyeSBtYWNyb3MgKEFuZHJ6ZWogSGFqZGEpLgoKU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQ YW5kYSA8c3BhbmRhQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv S2NvbmZpZyAgICAgICAgfCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSAg ICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVkc2k4Ni5jIHwgNjY2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNjc2 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L3RpLXNuNjVkc2k4Ni5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29u ZmlnIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCmluZGV4IDNiOTlkNWEuLjgxNTMx NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKQEAgLTEwOCw2ICsxMDgsMTUgQEAgY29uZmlnIERS TV9USV9URlA0MTAKIAktLS1oZWxwLS0tCiAJICBUZXhhcyBJbnN0cnVtZW50cyBURlA0MTAgRFZJ L0hETUkgVHJhbnNtaXR0ZXIgZHJpdmVyCiAKK2NvbmZpZyBEUk1fVElfU042NURTSTg2CisJdHJp c3RhdGUgIlRJIFNONjVEU0k4NiBEU0kgdG8gZURQIGJyaWRnZSIKKwlkZXBlbmRzIG9uIE9GCisJ c2VsZWN0IERSTV9LTVNfSEVMUEVSCisJc2VsZWN0IFJFR01BUF9JMkMKKwlzZWxlY3QgRFJNX1BB TkVMCisJLS0taGVscC0tLQorCSAgVGV4YXMgSW5zdHJ1bWVudHMgU042NURTSTg2IERTSSB0byBl RFAgQnJpZGdlIGRyaXZlcgorCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9n aXgvS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvS2Nv bmZpZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCmluZGV4IDM3M2ViMjguLjM3MTFiZTggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9NYWtlZmlsZQpAQCAtMTIsNCArMTIsNSBAQCBvYmotJChDT05GSUdfRFJNX1RP U0hJQkFfVEMzNTg3NjcpICs9IHRjMzU4NzY3Lm8KIG9iai0kKENPTkZJR19EUk1fQU5BTE9HSVhf RFApICs9IGFuYWxvZ2l4Lwogb2JqLSQoQ09ORklHX0RSTV9JMkNfQURWNzUxMSkgKz0gYWR2NzUx MS8KIG9iai0kKENPTkZJR19EUk1fVElfVEZQNDEwKSArPSB0aS10ZnA0MTAubworb2JqLSQoQ09O RklHX0RSTV9USV9TTjY1RFNJODYpICs9IHRpLXNuNjVkc2k4Ni5vCiBvYmoteSArPSBzeW5vcHN5 cy8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGktc242NWRzaTg2LmMgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVkc2k4Ni5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmFkZDZlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL3RpLXNuNjVkc2k4Ni5jCkBAIC0wLDAgKzEsNjY2IEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOCwgVGhlIExp bnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2luY2x1ZGUgPGRy bS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX3BhbmVsLmg+CisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8 bGludXgvZ3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorI2luY2x1ZGUg PGxpbnV4L29mX2dyYXBoLmg+CisjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgorI2luY2x1 ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5o PgorCisvKiBMaW5rIFRyYWluaW5nIHNwZWNpZmljIHJlZ2lzdGVycyAqLworI2RlZmluZSBTTl9E RVZJQ0VfUkVWX1JFRwkJCTB4MDgKKyNkZWZpbmUgU05fSFBEX0RJU0FCTEVfUkVHCQkJMHg1Qwor I2RlZmluZSBTTl9SRUZDTEtfRlJFUV9SRUcJCQkweDBBCisjZGVmaW5lIFNOX0RTSV9MQU5FU19S RUcJCQkweDEwCisjZGVmaW5lIFNOX0RTSUFfQ0xLX0ZSRVFfUkVHCQkJMHgxMgorI2RlZmluZSBT Tl9FTkhfRlJBTUVfUkVHCQkJMHg1QQorI2RlZmluZSBTTl9TU0NfQ09ORklHX1JFRwkJCTB4OTMK KyNkZWZpbmUgU05fREFUQVJBVEVfQ09ORklHX1JFRwkJCTB4OTQKKyNkZWZpbmUgU05fUExMX0VO QUJMRV9SRUcJCQkweDBECisjZGVmaW5lIFNOX1NDUkFNQkxFX0NPTkZJR19SRUcJCQkweDk1Cisj ZGVmaW5lIFNOX0FVWF9XREFUQTBfUkVHCQkJMHg2NAorI2RlZmluZSBTTl9BVVhfQUREUl8xOV8x Nl9SRUcJCQkweDc0CisjZGVmaW5lIFNOX0FVWF9BRERSXzE1XzhfUkVHCQkJMHg3NQorI2RlZmlu ZSBTTl9BVVhfQUREUl83XzBfUkVHCQkJMHg3NgorI2RlZmluZSBTTl9BVVhfTEVOR1RIX1JFRwkJ CTB4NzcKKyNkZWZpbmUgU05fQVVYX0NNRF9SRUcJCQkJMHg3OAorI2RlZmluZSBTTl9NTF9UWF9N T0RFX1JFRwkJCTB4OTYKKy8qIHZpZGVvIGNvbmZpZyBzcGVjaWZpYyByZWdpc3RlcnMgKi8KKyNk ZWZpbmUgU05fQ0hBX0FDVElWRV9MSU5FX0xFTkdUSF9MT1dfUkVHCTB4MjAKKyNkZWZpbmUgU05f Q0hBX1ZFUlRJQ0FMX0RJU1BMQVlfU0laRV9MT1dfUkVHCTB4MjQKKyNkZWZpbmUgU05fQ0hBX0hT WU5DX1BVTFNFX1dJRFRIX0xPV19SRUcJMHgyQworI2RlZmluZSBTTl9DSEFfVlNZTkNfUFVMU0Vf V0lEVEhfTE9XX1JFRwkweDMwCisjZGVmaW5lIFNOX0NIQV9IT1JJWk9OVEFMX0JBQ0tfUE9SQ0hf UkVHCTB4MzQKKyNkZWZpbmUgU05fQ0hBX1ZFUlRJQ0FMX0JBQ0tfUE9SQ0hfUkVHCQkweDM2Cisj ZGVmaW5lIFNOX0NIQV9IT1JJWk9OVEFMX0ZST05UX1BPUkNIX1JFRwkweDM4CisjZGVmaW5lIFNO X0NIQV9WRVJUSUNBTF9GUk9OVF9QT1JDSF9SRUcJCTB4M0EKKyNkZWZpbmUgU05fREFUQV9GT1JN QVRfUkVHCQkJMHg1QgorCisjZGVmaW5lIE1JTl9EU0lfQ0xLX0ZSRVFfTUhaCTQwCisKKy8qIGZ1 ZGdlIGZhY3RvciByZXF1aXJlZCB0byBhY2NvdW50IGZvciA4Yi8xMGIgZW5jb2RpbmcgKi8KKyNk ZWZpbmUgRFBfQ0xLX0ZVREdFX05VTQkxMAorI2RlZmluZSBEUF9DTEtfRlVER0VfREVOCTgKKwor I2RlZmluZSBEUFBMTF9DTEtfU1JDX1JFRkNMSwkwCisjZGVmaW5lIERQUExMX0NMS19TUkNfRFNJ Q0xLCTEKKworI2RlZmluZSBTTl9EU0lBX1JFRkNMS19PRkZTRVQJMQorI2RlZmluZSBTTl9EU0lB X0xBTkVfT0ZGU0VUCTMKKyNkZWZpbmUgU05fRFBfTEFORV9PRkZTRVQJNAorI2RlZmluZSBTTl9E UF9EQVRBX1JBVEVfT0ZGU0VUCTUKKworI2RlZmluZSBTTl9FTkFCTEVfVklEX1NUUkVBTV9CSVQJ QklUKDMpCisjZGVmaW5lIFNOX0RTSUFfTlVNX0xBTkVTX0JJVFMJCShCSVQoNCkgfCBCSVQoMykp CisjZGVmaW5lIFNOX0RQX05VTV9MQU5FU19CSVRTCQkoQklUKDUpIHwgQklUKDQpKQorI2RlZmlu ZSBTTl9EUF9EQVRBX1JBVEVfQklUUwkJKEJJVCg3KSB8IEJJVCg2KSB8IEJJVCg1KSkKKyNkZWZp bmUgU05fSFBEX0RJU0FCTEVfQklUCQlCSVQoMCkKKworI2RlZmluZSBTTl9SRUdVTEFUT1JfU1VQ UExZX05VTQkJNAorCitzdHJ1Y3QgdGlfc25fYnJpZGdlIHsKKwlzdHJ1Y3QgZGV2aWNlCQkJKmRl djsKKwlzdHJ1Y3QgcmVnbWFwCQkJKnJlZ21hcDsKKwlzdHJ1Y3QgZHJtX2JyaWRnZQkJYnJpZGdl OworCXN0cnVjdCBkcm1fY29ubmVjdG9yCQljb25uZWN0b3I7CisJc3RydWN0IGRldmljZV9ub2Rl CQkqaG9zdF9ub2RlOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UJCSpkc2k7CisJc3RydWN0IGNs awkJCSpyZWZjbGs7CisJc3RydWN0IGRybV9wYW5lbAkJKnBhbmVsOworCXN0cnVjdCBncGlvX2Rl c2MJCSplbmFibGVfZ3BpbzsKKwlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YQlzdXBwbGllc1tT Tl9SRUdVTEFUT1JfU1VQUExZX05VTV07CisJc3RydWN0IGkyY19hZGFwdGVyCQkqZGRjOworfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfcmFuZ2UgdGlfc25fYnJpZGdlX3ZvbGF0aWxl X3Jhbmdlc1tdID0geworCXsgLnJhbmdlX21pbiA9IDAsIC5yYW5nZV9tYXggPSAweEZGIH0sCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUgdGlfc25fYnJpZGdl X3ZvbGF0aWxlX3RhYmxlID0geworCS55ZXNfcmFuZ2VzID0gdGlfc25fYnJpZGdlX3ZvbGF0aWxl X3JhbmdlcywKKwkubl95ZXNfcmFuZ2VzID0gQVJSQVlfU0laRSh0aV9zbl9icmlkZ2Vfdm9sYXRp bGVfcmFuZ2VzKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyB0aV9z bl9icmlkZ2VfcmVnbWFwX2NvbmZpZyA9IHsKKwkucmVnX2JpdHMgPSA4LAorCS52YWxfYml0cyA9 IDgsCisJLnZvbGF0aWxlX3RhYmxlID0gJnRpX3NuX2JyaWRnZV92b2xhdGlsZV90YWJsZSwKKwku Y2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsCit9OworCitzdGF0aWMgdm9pZCB0aV9zbl9icmlk Z2Vfd3JpdGVfdTE2KHN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhLAorCQkJCSAgIHVuc2lnbmVk IGludCByZWcsIHUxNiB2YWwpCit7CisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIHJlZywg dmFsICYgMHhGRik7CisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIHJlZyArIDEsIHZhbCA+ PiA4KTsKK30KKworc3RhdGljIGludCBfX21heWJlX3VudXNlZCB0aV9zbl9icmlkZ2VfcmVzdW1l KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOworCWludCByZXQgPSAwOworCisJcmV0ID0gcmVndWxhdG9yX2J1 bGtfZW5hYmxlKFNOX1JFR1VMQVRPUl9TVVBQTFlfTlVNLCBwZGF0YS0+c3VwcGxpZXMpOworCWlm IChyZXQpIHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIHN1cHBsaWVzICVkXG4iLCBy ZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWdwaW9kX3NldF92YWx1ZShwZGF0YS0+ZW5hYmxl X2dwaW8sIDEpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX21heWJlX3VudXNl ZCB0aV9zbl9icmlkZ2Vfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHRp X3NuX2JyaWRnZSAqcGRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0ID0gMDsK KworCWdwaW9kX3NldF92YWx1ZShwZGF0YS0+ZW5hYmxlX2dwaW8sIDApOworCisJcmV0ID0gcmVn dWxhdG9yX2J1bGtfZGlzYWJsZShTTl9SRUdVTEFUT1JfU1VQUExZX05VTSwgcGRhdGEtPnN1cHBs aWVzKTsKKwlpZiAocmV0KQorCQlEUk1fRVJST1IoImZhaWxlZCB0byBkaXNhYmxlIHN1cHBsaWVz ICVkXG4iLCByZXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBk ZXZfcG1fb3BzIHRpX3NuX2JyaWRnZV9wbV9vcHMgPSB7CisJU0VUX1JVTlRJTUVfUE1fT1BTKHRp X3NuX2JyaWRnZV9zdXNwZW5kLCB0aV9zbl9icmlkZ2VfcmVzdW1lLCBOVUxMKQorfTsKKworLyog Q29ubmVjdG9yIGZ1bmNzICovCitzdGF0aWMgc3RydWN0IHRpX3NuX2JyaWRnZSAqCitjb25uZWN0 b3JfdG9fdGlfc25fYnJpZGdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJ cmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCB0aV9zbl9icmlkZ2UsIGNvbm5l Y3Rvcik7Cit9CisKK3N0YXRpYyBpbnQgdGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9nZXRfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgdGlfc25fYnJpZGdl ICpwZGF0YSA9IGNvbm5lY3Rvcl90b190aV9zbl9icmlkZ2UoY29ubmVjdG9yKTsKKwlzdHJ1Y3Qg ZWRpZCAqZWRpZDsKKwl1MzIgbnVtX21vZGVzOworCisJaWYgKHBkYXRhLT5wYW5lbCkgeworCQlE Uk1fREVCVUdfS01TKCJnZXQgbW9kZSBmcm9tIGNvbm5lY3RlZCBkcm1fcGFuZWxcbiIpOworCQly ZXR1cm4gZHJtX3BhbmVsX2dldF9tb2RlcyhwZGF0YS0+cGFuZWwpOworCX0KKworCWlmICghcGRh dGEtPmRkYykKKwkJcmV0dXJuIDA7CisKKwlwbV9ydW50aW1lX2dldF9zeW5jKHBkYXRhLT5kZXYp OworCWVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBwZGF0YS0+ZGRjKTsKKwlwbV9ydW50 aW1lX3B1dF9zeW5jKHBkYXRhLT5kZXYpOworCWlmICghZWRpZCkKKwkJcmV0dXJuIDA7CisKKwlk cm1fbW9kZV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsK KwludW1fbW9kZXMgPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKKwlrZnJl ZShlZGlkKTsKKworCXJldHVybiBudW1fbW9kZXM7Cit9CisKK3N0YXRpYyBlbnVtIGRybV9tb2Rl X3N0YXR1cwordGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl KQoreworCS8qIG1heGltdW0gc3VwcG9ydGVkIHJlc29sdXRpb24gaXMgNEsgYXQgNjAgZnBzICov CisJaWYgKG1vZGUtPmNsb2NrID4gNTk0MDAwKQorCQlyZXR1cm4gTU9ERV9DTE9DS19ISUdIOwor CisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3MgdGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9t b2RlcyA9IHRpX3NuX2JyaWRnZV9jb25uZWN0b3JfZ2V0X21vZGVzLAorCS5tb2RlX3ZhbGlkID0g dGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorfTsKKworc3RhdGljIGVudW0gZHJt X2Nvbm5lY3Rvcl9zdGF0dXMKK3RpX3NuX2JyaWRnZV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCit7CisJc3RydWN0IHRpX3NuX2Jy aWRnZSAqcGRhdGEgPSBjb25uZWN0b3JfdG9fdGlfc25fYnJpZGdlKGNvbm5lY3Rvcik7CisKKwkv KioKKwkgKiBUT0RPOiBDdXJyZW50bHkgaWYgZHJtX3BhbmVsIGlzIHByZXNlbnQsIHRoZW4gYWx3 YXlzCisJICogcmV0dXJuIHRoZSBzdGF0dXMgYXMgY29ubmVjdGVkLiBOZWVkIHRvIGFkZCBzdXBw b3J0IHRvIGRldGVjdAorCSAqIGRldmljZSBzdGF0ZSBmb3Igbm8gcGFuZWwoaG90IHBsdWdnYWJs ZSkgc2NlbmFyaW9zLgorCSAqLworCWlmIChwZGF0YS0+cGFuZWwpCisJCXJldHVybiBjb25uZWN0 b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKKwllbHNlCisJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vu a25vd247Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0aV9z bl9icmlkZ2VfY29ubmVjdG9yX2Z1bmNzID0geworCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9w cm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXRlY3QgPSB0aV9zbl9icmlkZ2VfY29u bmVjdG9yX2RldGVjdCwKKwkuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwKKwkucmVz ZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCisJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAor CS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0 cm95X3N0YXRlLAorfTsKKworc3RhdGljIHN0cnVjdCB0aV9zbl9icmlkZ2UgKmJyaWRnZV90b190 aV9zbl9icmlkZ2Uoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlyZXR1cm4gY29udGFp bmVyX29mKGJyaWRnZSwgc3RydWN0IHRpX3NuX2JyaWRnZSwgYnJpZGdlKTsKK30KKworc3RhdGlj IGludCB0aV9zbl9icmlkZ2VfcGFyc2VfcmVndWxhdG9ycyhzdHJ1Y3QgdGlfc25fYnJpZGdlICpw ZGF0YSkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwljb25zdCBjaGFyICogY29uc3QgdGlfc25fYnJp ZGdlX3N1cHBseV9uYW1lc1tdID0geworCQkidmNjYSIsICJ2Y2MiLCAidmNjaW8iLCAidnBsbCIs CisJfTsKKworCWZvciAoaSA9IDA7IGkgPCBTTl9SRUdVTEFUT1JfU1VQUExZX05VTTsgaSsrKQor CQlwZGF0YS0+c3VwcGxpZXNbaV0uc3VwcGx5ID0gdGlfc25fYnJpZGdlX3N1cHBseV9uYW1lc1tp XTsKKworCXJldHVybiBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChwZGF0YS0+ZGV2LCBTTl9SRUdV TEFUT1JfU1VQUExZX05VTSwKKwkJCQkgICAgICAgcGRhdGEtPnN1cHBsaWVzKTsKK30KKworc3Rh dGljIGludCB0aV9zbl9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7 CisJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBicmlkZ2VfdG9fdGlfc25fYnJpZGdlKGJy aWRnZSk7CisJaW50IHJldDsKKworCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChicmlkZ2UtPmRl diwgJnBkYXRhLT5jb25uZWN0b3IsCisJCQkJICZ0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2Z1bmNz LAorCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJP UigiRmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdG9yIHdpdGggZHJtXG4iKTsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJnBkYXRhLT5jb25uZWN0b3Is CisJCQkJICZ0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJZHJtX21vZGVf Y29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZwZGF0YS0+Y29ubmVjdG9yLCBicmlkZ2UtPmVuY29k ZXIpOworCisJLyogYXR0YWNoIHBhbmVsIHRvIGJyaWRnZSAqLworCWlmIChwZGF0YS0+cGFuZWwp CisJCWRybV9wYW5lbF9hdHRhY2gocGRhdGEtPnBhbmVsLCAmcGRhdGEtPmNvbm5lY3Rvcik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX2Rpc2FibGUoc3RydWN0 IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGJy aWRnZV90b190aV9zbl9icmlkZ2UoYnJpZGdlKTsKKworCWlmIChwZGF0YS0+cGFuZWwpIHsKKwkJ ZHJtX3BhbmVsX2Rpc2FibGUocGRhdGEtPnBhbmVsKTsKKwkJZHJtX3BhbmVsX3VucHJlcGFyZShw ZGF0YS0+cGFuZWwpOworCX0KKworCS8qIGRpc2FibGUgdmlkZW8gc3RyZWFtICovCisJcmVnbWFw X3VwZGF0ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNOX0VOSF9GUkFNRV9SRUcsCisJCQkgICBTTl9F TkFCTEVfVklEX1NUUkVBTV9CSVQsIDApOworCS8qIHNlbWkgYXV0byBsaW5rIHRyYWluaW5nIG1v ZGUgT0ZGICovCisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX01MX1RYX01PREVfUkVH LCAwKTsKKwkvKiBkaXNhYmxlIERQIFBMTCAqLworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFw LCBTTl9QTExfRU5BQkxFX1JFRywgMCk7Cit9CisKK3N0YXRpYyB1MzIgdGlfc25fYnJpZGdlX2dl dF9kc2lfZnJlcShzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKK3sKKwl1MzIgYml0X3JhdGVf a2h6LCBjbGtfZnJlcV9raHo7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPQorCQkm cGRhdGEtPmJyaWRnZS5lbmNvZGVyLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKKworCWJp dF9yYXRlX2toeiA9IG1vZGUtPmNsb2NrICoKKwkJCW1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19i cHAocGRhdGEtPmRzaS0+Zm9ybWF0KTsKKwljbGtfZnJlcV9raHogPSBiaXRfcmF0ZV9raHogLyAo cGRhdGEtPmRzaS0+bGFuZXMgKiAyKTsKKworCXJldHVybiBjbGtfZnJlcV9raHo7Cit9CisKKyNk ZWZpbmUgUkVGQ0xLX0xVVF9TSVpFCTUKKworLyogY2xrIGZyZXF1ZW5jaWVzIHN1cHBvcnRlZCBi eSBicmlkZ2UgaW4gSHogaW4gY2FzZSBkZXJpdmVkIGZyb20gUkVGQ0xLIHBpbiAqLworc3RhdGlj IGNvbnN0IHUzMiB0aV9zbl9icmlkZ2VfcmVmY2xrX2x1dFtdID0geworCTEyMDAwMDAwLAorCTE5 MjAwMDAwLAorCTI2MDAwMDAwLAorCTI3MDAwMDAwLAorCTM4NDAwMDAwLAorfTsKKworLyogY2xr IGZyZXF1ZW5jaWVzIHN1cHBvcnRlZCBieSBicmlkZ2UgaW4gSHogaW4gY2FzZSBkZXJpdmVkIGZy b20gREFDUC9OIHBpbiAqLworc3RhdGljIGNvbnN0IHUzMiB0aV9zbl9icmlkZ2VfZHNpY2xrX2x1 dFtdID0geworCTQ2ODAwMDAwMCwKKwkzODQwMDAwMDAsCisJNDE2MDAwMDAwLAorCTQ4NjAwMDAw MCwKKwk0NjA4MDAwMDAsCit9OworCitzdGF0aWMgdm9pZCB0aV9zbl9icmlkZ2Vfc2V0X3JlZmNs ayhzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKK3sKKwlpbnQgaSA9IDA7CisJdTggcmVmY2xr X3NyYzsKKwl1MzIgcmVmY2xrX3JhdGU7CisJY29uc3QgdTMyICpyZWZjbGtfbHV0OworCisJaWYg KHBkYXRhLT5yZWZjbGspIHsKKwkJcmVmY2xrX3NyYyA9IERQUExMX0NMS19TUkNfUkVGQ0xLOwor CQlyZWZjbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShwZGF0YS0+cmVmY2xrKTsKKwkJcmVmY2xrX2x1 dCA9IHRpX3NuX2JyaWRnZV9yZWZjbGtfbHV0OworCQljbGtfcHJlcGFyZV9lbmFibGUocGRhdGEt PnJlZmNsayk7CisJfSBlbHNlIHsKKwkJcmVmY2xrX3NyYyA9IERQUExMX0NMS19TUkNfRFNJQ0xL OworCQlyZWZjbGtfcmF0ZSA9IHRpX3NuX2JyaWRnZV9nZXRfZHNpX2ZyZXEocGRhdGEpICogMTAw MDsKKwkJcmVmY2xrX2x1dCA9IHRpX3NuX2JyaWRnZV9kc2ljbGtfbHV0OworCX0KKworCS8qIGZv ciBpIGVxdWFscyB0byBSRUZDTEtfTFVUX1NJWkUgbWVhbnMgZGVmYXVsdCBmcmVxdWVuY3kgKi8K Kwlmb3IgKGkgPSAwOyBpIDwgUkVGQ0xLX0xVVF9TSVpFOyBpKyspCisJCWlmIChyZWZjbGtfbHV0 W2ldID09IHJlZmNsa19yYXRlKQorCQkJYnJlYWs7CisKKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJl Z21hcCwgU05fUkVGQ0xLX0ZSRVFfUkVHLAorCQkgICAgIChyZWZjbGtfc3JjIHwgKGkgPDwgU05f RFNJQV9SRUZDTEtfT0ZGU0VUKSkpOworfQorCisvKioKKyAqIExVVCBpbmRleCBjb3JyZXNwb25k cyB0byByZWdpc3RlciB2YWx1ZSBhbmQKKyAqIExVVCB2YWx1ZXMgY29ycmVzcG9uZHMgdG8gZHAg ZGF0YSByYXRlIHN1cHBvcnRlZAorICogYnkgdGhlIGJyaWRnZSBpbiBNYnBzIHVuaXQuCisgKi8K K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdGlfc25fYnJpZGdlX2RwX3JhdGVfbHV0W10gPSB7 CisJMCwgMTYyMCwgMjE2MCwgMjQzMCwgMjcwMCwgMzI0MCwgNDMyMCwgNTQwMAorfTsKKworc3Rh dGljIHZvaWQgdGlfc25fYnJpZGdlX3NldF9kc2lfZHBfcmF0ZShzdHJ1Y3QgdGlfc25fYnJpZGdl ICpwZGF0YSkKK3sKKwl1bnNpZ25lZCBpbnQgYml0X3JhdGVfbWh6LCBjbGtfZnJlcV9taHosIGRw X3JhdGVfbWh6OworCXVuc2lnbmVkIGludCB2YWwgPSAwLCBpID0gMDsKKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZSA9CisJCSZwZGF0YS0+YnJpZGdlLmVuY29kZXItPmNydGMtPnN0YXRl LT5hZGp1c3RlZF9tb2RlOworCisJLyogc2V0IERTSUEgY2xrIGZyZXF1ZW5jeSAqLworCWJpdF9y YXRlX21oeiA9IChtb2RlLT5jbG9jayAvIDEwMDApICoKKwkJCW1pcGlfZHNpX3BpeGVsX2Zvcm1h dF90b19icHAocGRhdGEtPmRzaS0+Zm9ybWF0KTsKKwljbGtfZnJlcV9taHogPSBiaXRfcmF0ZV9t aHogLyAocGRhdGEtPmRzaS0+bGFuZXMgKiAyKTsKKworCS8qIGZvciBlYWNoIGluY3JlbWVudCBp biB2YWwsIGZyZXF1ZW5jeSBpbmNyZWFzZXMgYnkgNU1IeiAqLworCXZhbCA9IChNSU5fRFNJX0NM S19GUkVRX01IWiAvIDUpICsKKwkJKCgoY2xrX2ZyZXFfbWh6IC0gTUlOX0RTSV9DTEtfRlJFUV9N SFopIC8gNSkgJiAweEZGKTsKKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fRFNJQV9D TEtfRlJFUV9SRUcsIHZhbCk7CisKKwkvKiBzZXQgRFAgZGF0YSByYXRlICovCisJZHBfcmF0ZV9t aHogPSAoKGJpdF9yYXRlX21oeiAvIHBkYXRhLT5kc2ktPmxhbmVzKSAqIERQX0NMS19GVURHRV9O VU0pIC8KKwkJCQkJCQlEUF9DTEtfRlVER0VfREVOOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKHRpX3NuX2JyaWRnZV9kcF9yYXRlX2x1dCkgLSAxOyBpKyspCisJCWlmICh0aV9zbl9icmlk Z2VfZHBfcmF0ZV9sdXRbaV0gPiBkcF9yYXRlX21oeikKKwkJCWJyZWFrOworCisJcmVnbWFwX3Vw ZGF0ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNOX0RBVEFSQVRFX0NPTkZJR19SRUcsCisJCQkgICBT Tl9EUF9EQVRBX1JBVEVfQklUUywgaSA8PCBTTl9EUF9EQVRBX1JBVEVfT0ZGU0VUKTsKK30KKwor c3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX3NldF92aWRlb190aW1pbmdzKHN0cnVjdCB0aV9zbl9i cmlkZ2UgKnBkYXRhKQoreworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0KKwkJJnBk YXRhLT5icmlkZ2UuZW5jb2Rlci0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7CisKKwl0aV9z bl9icmlkZ2Vfd3JpdGVfdTE2KHBkYXRhLCBTTl9DSEFfQUNUSVZFX0xJTkVfTEVOR1RIX0xPV19S RUcsCisJCQkgICAgICAgbW9kZS0+aGRpc3BsYXkpOworCXRpX3NuX2JyaWRnZV93cml0ZV91MTYo cGRhdGEsIFNOX0NIQV9WRVJUSUNBTF9ESVNQTEFZX1NJWkVfTE9XX1JFRywKKwkJCSAgICAgICBt b2RlLT52ZGlzcGxheSk7CisJdGlfc25fYnJpZGdlX3dyaXRlX3UxNihwZGF0YSwgU05fQ0hBX0hT WU5DX1BVTFNFX1dJRFRIX0xPV19SRUcsCisJCQkgICAgICAgbW9kZS0+aHN5bmNfZW5kIC0gbW9k ZS0+aHN5bmNfc3RhcnQpOworCXRpX3NuX2JyaWRnZV93cml0ZV91MTYocGRhdGEsIFNOX0NIQV9W U1lOQ19QVUxTRV9XSURUSF9MT1dfUkVHLAorCQkJICAgICAgIG1vZGUtPnZzeW5jX2VuZCAtIG1v ZGUtPnZzeW5jX3N0YXJ0KTsKKworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9DSEFf SE9SSVpPTlRBTF9CQUNLX1BPUkNIX1JFRywKKwkJICAgICAobW9kZS0+aHRvdGFsIC0gbW9kZS0+ aHN5bmNfZW5kKSAmIDB4RkYpOworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9DSEFf VkVSVElDQUxfQkFDS19QT1JDSF9SRUcsCisJCSAgICAgKG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZz eW5jX2VuZCkgJiAweEZGKTsKKworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9DSEFf SE9SSVpPTlRBTF9GUk9OVF9QT1JDSF9SRUcsCisJCSAgICAgKG1vZGUtPmhzeW5jX3N0YXJ0IC0g bW9kZS0+aGRpc3BsYXkpICYgMHhGRik7CisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNO X0NIQV9WRVJUSUNBTF9GUk9OVF9QT1JDSF9SRUcsCisJCSAgICAgKG1vZGUtPnZzeW5jX3N0YXJ0 IC0gbW9kZS0+dmRpc3BsYXkpICYgMHhGRik7CisKKwl1c2xlZXBfcmFuZ2UoMTAwMDAsIDEwNTAw KTsgLyogMTBtcyBkZWxheSByZWNvbW1lbmRlZCBieSBzcGVjICovCit9CisKK3N0YXRpYyB2b2lk IHRpX3NuX2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1 Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGJyaWRnZV90b190aV9zbl9icmlkZ2UoYnJpZGdlKTsK Kwl1bnNpZ25lZCBpbnQgdmFsID0gMDsKKworCWlmIChwZGF0YS0+cGFuZWwpIHsKKwkJZHJtX3Bh bmVsX3ByZXBhcmUocGRhdGEtPnBhbmVsKTsKKwkJLyogaW4gY2FzZSBkcm1fcGFuZWwgaXMgY29u bmVjdGVkIHRoZW4gSFBEIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKwkJcmVnbWFwX3VwZGF0ZV9iaXRz KHBkYXRhLT5yZWdtYXAsIFNOX0hQRF9ESVNBQkxFX1JFRywKKwkJCQkgICBTTl9IUERfRElTQUJM RV9CSVQsICEwKTsKKwl9CisKKwkvKiBEU0lfQSBsYW5lIGNvbmZpZyAqLworCXZhbCA9ICg0IC0g cGRhdGEtPmRzaS0+bGFuZXMpIDw8IFNOX0RTSUFfTEFORV9PRkZTRVQ7CisJcmVnbWFwX3VwZGF0 ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNOX0RTSV9MQU5FU19SRUcsCisJCQkgICBTTl9EU0lBX05V TV9MQU5FU19CSVRTLCB2YWwpOworCisJLyogRFAgbGFuZSBjb25maWcgKi8KKwl2YWwgPSAocGRh dGEtPmRzaS0+bGFuZXMgLSAxKSA8PCBTTl9EUF9MQU5FX09GRlNFVDsKKwlyZWdtYXBfdXBkYXRl X2JpdHMocGRhdGEtPnJlZ21hcCwgU05fU1NDX0NPTkZJR19SRUcsCisJCQkgICBTTl9EUF9OVU1f TEFORVNfQklUUywgdmFsKTsKKworCS8qIHNldCBkc2kvZHAgY2xrIGZyZXF1ZW5jeSB2YWx1ZSAq LworCXRpX3NuX2JyaWRnZV9zZXRfZHNpX2RwX3JhdGUocGRhdGEpOworCisJLyogZW5hYmxlIERQ IFBMTCAqLworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9QTExfRU5BQkxFX1JFRywg MSk7CisJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMDUwMCk7IC8qIDEwbXMgZGVsYXkgcmVjb21tZW5k ZWQgYnkgc3BlYyAqLworCisJLyoqCisJICogVGhlIFNONjVEU0k4NiBvbmx5IHN1cHBvcnRzIEFT U1IgRGlzcGxheSBBdXRoZW50aWNhdGlvbiBtZXRob2QgYW5kCisJICogdGhpcyBtZXRob2QgaXMg ZW5hYmxlZCBieSBkZWZhdWx0LiBBbiBlRFAgcGFuZWwgbXVzdCBzdXBwb3J0IHRoaXMKKwkgKiBh dXRoZW50aWNhdGlvbiBtZXRob2QuIFdlIG5lZWQgdG8gZW5hYmxlIHRoaXMgbWV0aG9kIGluIHRo ZSBlRFAgcGFuZWwKKwkgKiBhdCBEaXNwbGF5UG9ydCBhZGRyZXNzIDB4MDAxMEEgcHJpb3IgdG8g bGluayB0cmFpbmluZy4KKwkgKi8KKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQVVY X1dEQVRBMF9SRUcsIDB4MDEpOworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9BVVhf QUREUl8xOV8xNl9SRUcsIDB4MDApOworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9B VVhfQUREUl8xNV84X1JFRywgMHgwMSk7CisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNO X0FVWF9BRERSXzdfMF9SRUcsIDB4MEEpOworCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBT Tl9BVVhfTEVOR1RIX1JFRywgMHgwMSk7CisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNO X0FVWF9DTURfUkVHLCAweDgxKTsKKwl1c2xlZXBfcmFuZ2UoMTAwMDAsIDEwNTAwKTsgLyogMTBt cyBkZWxheSByZWNvbW1lbmRlZCBieSBzcGVjICovCisKKwkvKiBTZW1pIGF1dG8gbGluayB0cmFp bmluZyBtb2RlICovCisJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX01MX1RYX01PREVf UkVHLCAweDBBKTsKKwltc2xlZXAoMjApOyAvKiAyMG1zIGRlbGF5IHJlY29tbWVuZGVkIGJ5IHNw ZWMgKi8KKworCS8qIGNvbmZpZyB2aWRlbyBwYXJhbWV0ZXJzICovCisJdGlfc25fYnJpZGdlX3Nl dF92aWRlb190aW1pbmdzKHBkYXRhKTsKKworCS8qIGVuYWJsZSB2aWRlbyBzdHJlYW0gKi8KKwly ZWdtYXBfdXBkYXRlX2JpdHMocGRhdGEtPnJlZ21hcCwgU05fRU5IX0ZSQU1FX1JFRywKKwkJCSAg IFNOX0VOQUJMRV9WSURfU1RSRUFNX0JJVCwgU05fRU5BQkxFX1ZJRF9TVFJFQU1fQklUKTsKKwor CWlmIChwZGF0YS0+cGFuZWwpCisJCWRybV9wYW5lbF9lbmFibGUocGRhdGEtPnBhbmVsKTsKK30K Kworc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKK3sKKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGJyaWRnZV90b190aV9z bl9icmlkZ2UoYnJpZGdlKTsKKworCXBtX3J1bnRpbWVfZ2V0X3N5bmMocGRhdGEtPmRldik7CisK KwkvKiBjb25maWd1cmUgYnJpZGdlIENMS19TUkMgYW5kIHJlZl9jbGsgKi8KKwl0aV9zbl9icmlk Z2Vfc2V0X3JlZmNsayhwZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIHRpX3NuX2JyaWRnZV9wb3N0 X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgdGlfc25fYnJp ZGdlICpwZGF0YSA9IGJyaWRnZV90b190aV9zbl9icmlkZ2UoYnJpZGdlKTsKKworCWlmIChwZGF0 YS0+cmVmY2xrKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUocGRhdGEtPnJlZmNsayk7CisKKwlw bV9ydW50aW1lX3B1dF9zeW5jKHBkYXRhLT5kZXYpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9icmlkZ2VfZnVuY3MgdGlfc25fYnJpZGdlX2Z1bmNzID0geworCS5hdHRhY2ggPSB0aV9z bl9icmlkZ2VfYXR0YWNoLAorCS5wcmVfZW5hYmxlID0gdGlfc25fYnJpZGdlX3ByZV9lbmFibGUs CisJLmVuYWJsZSA9IHRpX3NuX2JyaWRnZV9lbmFibGUsCisJLmRpc2FibGUgPSB0aV9zbl9icmlk Z2VfZGlzYWJsZSwKKwkucG9zdF9kaXNhYmxlID0gdGlfc25fYnJpZGdlX3Bvc3RfZGlzYWJsZSwK K307CisKK3N0YXRpYyBpbnQgdGlfc25fYnJpZGdlX3BhcnNlX2RzaV9ob3N0KHN0cnVjdCB0aV9z bl9icmlkZ2UgKnBkYXRhKQoreworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGF0YS0+ZGV2 LT5vZl9ub2RlOworCisJcGRhdGEtPmhvc3Rfbm9kZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfbm9k ZShucCwgMCwgMCk7CisKKwlpZiAoIXBkYXRhLT5ob3N0X25vZGUpIHsKKwkJRFJNX0VSUk9SKCJy ZW1vdGUgZHNpIGhvc3Qgbm9kZSBub3QgZm91bmRcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB0aV9zbl9icmlkZ2VfcHJvYmUoc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudCwKKwkgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQor eworCXN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZGRj X25vZGU7CisJc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3Q7CisJc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAqZHNpOworCWludCByZXQgPSAwOworCWNvbnN0IHN0cnVjdCBtaXBpX2RzaV9kZXZpY2Vf aW5mbyBpbmZvID0geyAudHlwZSA9ICJ0aV9zbl9icmlkZ2UiLAorCQkJCQkJICAgLmNoYW5uZWwg PSAwLAorCQkJCQkJICAgLm5vZGUgPSBOVUxMLAorCQkJCQkJIH07CisKKwlpZiAoIWkyY19jaGVj a19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwgSTJDX0ZVTkNfSTJDKSkgeworCQlEUk1f RVJST1IoImRldmljZSBkb2Vzbid0IHN1cHBvcnQgSTJDXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7 CisJfQorCisJcGRhdGEgPSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LCBzaXplb2Yoc3RydWN0 IHRpX3NuX2JyaWRnZSksCisJCQkgICAgIEdGUF9LRVJORUwpOworCWlmICghcGRhdGEpCisJCXJl dHVybiAtRU5PTUVNOworCisJcGRhdGEtPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNs aWVudCwKKwkJCQkJICAgICAmdGlfc25fYnJpZGdlX3JlZ21hcF9jb25maWcpOworCWlmIChJU19F UlIocGRhdGEtPnJlZ21hcCkpIHsKKwkJRFJNX0VSUk9SKCJyZWdtYXAgaTJjIGluaXQgZmFpbGVk XG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIocGRhdGEtPnJlZ21hcCk7CisJfQorCisJcGRhdGEtPmRl diA9ICZjbGllbnQtPmRldjsKKwlkZXZfc2V0X2RydmRhdGEoJmNsaWVudC0+ZGV2LCBwZGF0YSk7 CisKKwlwZGF0YS0+ZW5hYmxlX2dwaW8gPSBkZXZtX2dwaW9kX2dldChwZGF0YS0+ZGV2LCAiZW5h YmxlIiwKKwkJCQkJICAgIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIocGRhdGEtPmVuYWJs ZV9ncGlvKSkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBnZXQgZW5hYmxlIGdwaW8gZnJvbSBE VFxuIik7CisJCXJldCA9IFBUUl9FUlIocGRhdGEtPmVuYWJsZV9ncGlvKTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlyZXQgPSB0aV9zbl9icmlkZ2VfcGFyc2VfcmVndWxhdG9ycyhwZGF0YSk7CisJ aWYgKHJldCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBwYXJzZSByZWd1bGF0b3JzXG4iKTsK KwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkcm1fb2ZfZmluZF9wYW5lbF9vcl9icmlkZ2Uo cGRhdGEtPmRldi0+b2Zfbm9kZSwgMSwgMCwKKwkJCQkJICAmcGRhdGEtPnBhbmVsLCBOVUxMKTsK KwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiY291bGQgbm90IGZpbmQgYW55IGRybSBwYW5lbCBu b2RlXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSB0aV9zbl9icmlkZ2VfcGFyc2Vf ZHNpX2hvc3QocGRhdGEpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlob3N0ID0gb2Zf ZmluZF9taXBpX2RzaV9ob3N0X2J5X25vZGUocGRhdGEtPmhvc3Rfbm9kZSk7CisJaWYgKCFob3N0 KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGZpbmQgZHNpIGhvc3RcbiIpOworCQlyZXQgPSAt RVBST0JFX0RFRkVSOworCQlnb3RvIGVycl9kc2lfaG9zdDsKKwl9CisKKwlkc2kgPSBtaXBpX2Rz aV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChob3N0LCAmaW5mbyk7CisJaWYgKElTX0VSUihkc2kpKSB7 CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBkc2kgZGV2aWNlXG4iKTsKKwkJcmV0ID0g UFRSX0VSUihkc2kpOworCQlnb3RvIGVycl9kc2lfaG9zdDsKKwl9CisKKwkvKiBUT0RPOiBzZXR0 aW5nIHRvIDQgbGFuZXMgYWx3YXlzIGZvciBub3cgKi8KKwlkc2ktPmxhbmVzID0gNDsKKwlkc2kt PmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7CisJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9E U0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRSB8CisJCQkgIE1J UElfRFNJX01PREVfRU9UX1BBQ0tFVCB8IE1JUElfRFNJX01PREVfVklERU9fSFNFOworCisJcmV0 ID0gbWlwaV9kc2lfYXR0YWNoKGRzaSk7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gYXR0YWNoIGRzaSB0byBob3N0XG4iKTsKKwkJZ290byBlcnJfZHNpX2F0dGFjaDsK Kwl9CisJcGRhdGEtPmRzaSA9IGRzaTsKKworCXBkYXRhLT5yZWZjbGsgPSBkZXZtX2Nsa19nZXQo cGRhdGEtPmRldiwgInJlZmNsayIpOworCisJZGRjX25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKHBk YXRhLT5kZXYtPm9mX25vZGUsICJkZGMtaTJjLWJ1cyIsIDApOworCWlmIChkZGNfbm9kZSkgewor CQlwZGF0YS0+ZGRjID0gb2ZfZmluZF9pMmNfYWRhcHRlcl9ieV9ub2RlKGRkY19ub2RlKTsKKwkJ b2Zfbm9kZV9wdXQoZGRjX25vZGUpOworCQlpZiAoIXBkYXRhLT5kZGMpIHsKKwkJCURSTV9ERUJV R19LTVMoImZhaWxlZCB0byByZWFkIGRkYyBub2RlXG4iKTsKKwkJCXJldCA9IC1FUFJPQkVfREVG RVI7CisJCQlnb3RvIGVycl9kc2lfYXR0YWNoOworCQl9CisJfSBlbHNlIHsKKwkJRFJNX0RFQlVH X0tNUygibm8gZGRjIHByb3BlcnR5IGZvdW5kXG4iKTsKKwl9CisKKwlwbV9ydW50aW1lX2VuYWJs ZShwZGF0YS0+ZGV2KTsKKworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBkYXRhKTsKKwor CXBkYXRhLT5icmlkZ2UuZnVuY3MgPSAmdGlfc25fYnJpZGdlX2Z1bmNzOworCXBkYXRhLT5icmlk Z2Uub2Zfbm9kZSA9IGNsaWVudC0+ZGV2Lm9mX25vZGU7CisKKwlkcm1fYnJpZGdlX2FkZCgmcGRh dGEtPmJyaWRnZSk7CisKKwlyZXR1cm4gMDsKKworZXJyX2RzaV9hdHRhY2g6CisJbWlwaV9kc2lf ZGV2aWNlX3VucmVnaXN0ZXIoZHNpKTsKK2Vycl9kc2lfaG9zdDoKKwlvZl9ub2RlX3B1dChwZGF0 YS0+aG9zdF9ub2RlKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHRpX3NuX2JyaWRn ZV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgdGlfc25fYnJp ZGdlICpwZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCisJaWYgKCFwZGF0YSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocGRhdGEtPmhvc3Rfbm9kZSkKKwkJb2Zfbm9kZV9w dXQocGRhdGEtPmhvc3Rfbm9kZSk7CisKKwltaXBpX2RzaV9kZXRhY2gocGRhdGEtPmRzaSk7CisJ bWlwaV9kc2lfZGV2aWNlX3VucmVnaXN0ZXIocGRhdGEtPmRzaSk7CisKKwlkcm1fYnJpZGdlX3Jl bW92ZSgmcGRhdGEtPmJyaWRnZSk7CisJcG1fcnVudGltZV9kaXNhYmxlKHBkYXRhLT5kZXYpOwor CWkyY19wdXRfYWRhcHRlcihwZGF0YS0+ZGRjKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg c3RydWN0IGkyY19kZXZpY2VfaWQgdGlfc25fYnJpZGdlX2lkW10gPSB7CisJeyAidGksc242NWRz aTg2IiwgMH0sCisJe30sCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHRpX3NuX2JyaWRn ZV9pZCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRpX3NuX2JyaWRnZV9t YXRjaF90YWJsZVtdID0geworCXsuY29tcGF0aWJsZSA9ICJ0aSxzbjY1ZHNpODYifSwKKwl7fSwK K307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0aV9zbl9icmlkZ2VfbWF0Y2hfdGFibGUpOwor CitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgdGlfc25fYnJpZGdlX2RyaXZlciA9IHsKKwkuZHJp dmVyID0geworCQkubmFtZSA9ICJ0aV9zbjY1ZHNpODYiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSB0 aV9zbl9icmlkZ2VfbWF0Y2hfdGFibGUsCisJCS5wbSA9ICZ0aV9zbl9icmlkZ2VfcG1fb3BzLAor CX0sCisJLnByb2JlID0gdGlfc25fYnJpZGdlX3Byb2JlLAorCS5yZW1vdmUgPSB0aV9zbl9icmlk Z2VfcmVtb3ZlLAorCS5pZF90YWJsZSA9IHRpX3NuX2JyaWRnZV9pZCwKK307CisKK21vZHVsZV9p MmNfZHJpdmVyKHRpX3NuX2JyaWRnZV9kcml2ZXIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJzbjY1 ZHNpODYgRFNJIHRvIGVEUCBicmlkZ2UgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYy Iik7Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIg b2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2 ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K