From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Masney Subject: [PATCH v3 5/6] soc: qcom: add OCMEM driver Date: Tue, 25 Jun 2019 22:21:47 -0400 Message-ID: <20190626022148.23712-6-masneyb@onstation.org> References: <20190626022148.23712-1-masneyb@onstation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190626022148.23712-1-masneyb-1iNe0GrtECGEi8DpZVb4nw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: agross-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, bjorn.andersson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org Cc: mark.rutland-5wv7dgnIgG8@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jonathan-eSc4qw6YbEQ@public.gmane.org, airlied-cv59FeDIM0c@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, daniel-/w4YWyX8dFk@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: devicetree@vger.kernel.org VGhlIE9DTUVNIGRyaXZlciBoYW5kbGVzIGFsbG9jYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb2Yg dGhlIE9uIENoaXAKTUVNb3J5IHRoYXQgaXMgcHJlc2VudCBvbiBzb21lIFNuYXBkcmFnb24gU29D cy4gRGV2aWNlcyB3aGljaCBoYXZlCk9DTUVNIGRvIG5vdCBoYXZlIEdNRU0gaW5zaWRlIHRoZSBH UFUgY29yZSwgc28gdGhlIEdQVSBtdXN0IGluc3RlYWQKdXNlIE9DTUVNIHRvIGJlIGZ1bmN0aW9u YWwuIFNpbmNlIHRoZSBHUFUgaXMgY3VycmVudGx5IHRoZSBvbmx5IE9DTUVNCnVzZXIgd2l0aCBh biB1cHN0cmVhbSBkcml2ZXIsIHRoaXMgaXMganVzdCBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24K c3VmZmljaWVudCBmb3Igc3RhdGljYWxseSBhbGxvY2F0aW5nIHRvIHRoZSBHUFUgaXQncyBjaHVu ayBvZiBPQ01FTS4KClRoaXMgZHJpdmVyIGN1cnJlbnRseSBkb2VzIG5vdCByZWFkIHRoZSBnbXUt c3JhbSBub2RlIHRoYXQgaXMgZGVzY3JpYmVkCmluIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5ncy4g VGhlIHN0YXJ0aW5nIG1lbW9yeSBhZGRyZXNzIG9mIHRoZSBHUFUncwpyZXNlcnZlZCBtZW1vcnkg cmVnaW9uIGlzIGhhcmRjb2RlZCB0byB6ZXJvIHRvIG1hdGNoIHdoYXQgdGhlIGhhcmR3YXJlCmV4 cGVjdHMuIFRoZSBkcml2ZXIgY2FuIGJlIHVwZGF0ZWQgdG8gcmVhZCB0aGUgcmVzZXJ2ZWQgbWVt b3J5IHJlZ2lvbnMKZnJvbSBkZXZpY2UgdHJlZSBvbmNlIG90aGVyIHVzZXJzIG9mIE9DTUVNIGFy ZSBhZGRlZCB1cHN0cmVhbS4KClNpZ25lZC1vZmYtYnk6IEJyaWFuIE1hc25leSA8bWFzbmV5YkBv bnN0YXRpb24ub3JnPgpDby1kZXZlbG9wZWQtYnk6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWls LmNvbT4KU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgotLS0K Q2hhbmdlcyBzaW5jZSB2MgotIENoYW5nZWQgc3RhdGljIGlubGluZSBzdHVicyByZXR1cm4gLUVO T0RFViB3aGVuIE9DTUVNIGlzIG5vdAogIGNvbmZpZ3VyZWQgaW50byB0aGUga2VybmVsLgoKQ2hh bmdlcyBzaW5jZSB2MToKLSBvY21lbV9hbGxvY2F0ZSgpOiBjaGVjayBmb3IgYWxpZ25tZW50IGFu ZCBtaW5pbXVtIGFsbG9jYXRpb24gc2l6ZS4KICBUaGUgNjRLIHZhbHVlcyBjYW1lIGZyb20gdGhl IGRvd25zdHJlYW0gTVNNIGtlcm5lbCBzb3VyY2VzLgotIGFkZCBsb2NraW5nIHRvIG1lbW9yeSBh bGxvY2F0aW9ucyBiYXNlZCBvbiB0aGUgY2xpZW50Ci0gdXNlIGNsa19idWxrXyooKSBmdW5jdGlv bnMKLSByZW5hbWUgcWNvbSxvY21lbS1tc204OTc0IHRvIHFjb20sbXNtODk3NC1vY21lbQotIHJl bmFtZSByZWctbmFtZXMgdG8gY3RybCBhbmQgbWVtCi0gcmVtb3ZlIG9jbWVtLnhtbC5oIGZpbGU7 IHVzZSBGSUVMRF9QUkVQKCkgaW5zdGVhZCBmb3Igc29tZSBuaWNlIGNsZWFudXBzCi0gYWRkIHN0 YXRpYyBpbmxpbmUgbm9vcCB2ZXJzaW9ucyBvZiBwdWJsaWMtZmFjaW5nIGZ1bmN0aW9ucyB3aGVu IG9jbWVtCiAgaXMgZGlzYWJsZWQgdG8gcmVtb3ZlICNpZmRlZnMgaW4gYWRyZW51X2dwdS5jCi0g dXNlIHVuc2lnbmVkIGxvbmcgZm9yIG1lbW9yeSBhZGRyZXNzZXMKLSBtb3ZlIG9jbWVtX2Rldl9y ZW1vdmUoKSBiZWxvdyBfcHJvYmUoKSBmdW5jdGlvbgotIHJlbW92ZSBlcnJvciBjaGVjayBmcm9t IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUgZm9yIGN0cmwgcmVzb3VyY2UKLSBhZGQgTU9E VUxFX0RFU0NSSVBUSU9OKCkgYW5kIE1PRFVMRV9MSUNFTlNFKCkKLSBhZGQgZGVzY3JpcHRpb24g dG8gdG9wIG9mIG9jbWVtLltjaF0KLSBjb3JyZWN0IHRoaW4gbW9kZSBiaXQgaW4gdXBkYXRlX29j bWVtKCkKLSBhZGQgJ1dBUk5fT04oY2xpZW50ICE9IE9DTUVNX0dSQVBISUNTKScgdG8gZGV2aWNl X2FkZHJlc3MoKQotIG1ha2Ugb2ZfZ2V0X29jbWVtIHJldHVybiBlcnJvciBjb2RlcyB2aWEgRVJS X1BUUiBpbnN0ZWFkIG9mIE5VTEwKLSBvY21lbV97YWxsb2NhdGUsZnJlZX0gLSBXQVJOX09OKCkg aWYgY2xpZW50ICE9IE9DTUVNX0dSQVBISUNTLgogIFNpbXBsaWZ5IGlmIHN0YXRlbWVudHMuCi0g YWxsb3cgTlVMTCB0byBiZSBwYXNzZWQgaW50byBvY21lbV9mcmVlCi0gcmVtb3ZlIHVubmVjZXNz YXJ5IGluaXRpYWxpemF0aW9uIG9mIGkgaW4gdXBkYXRlX29jbWVtKCkKLSBhZGQgZGV2X2RiZyB0 byBvY21lbV9hbGxvY2F0ZQoKQ2hhbmdlcyBzaW5jZSBSb2IncyBsYXN0IHZlcnNpb24gb2YgdGhp cyBwYXRjaCBmcm9tIDIwMTU6Cmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvNzM3 OTgwMS8KLSByZWZvcm1hdHRlZCBkcml2ZXIgdG8gYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzCi0g dXBkYXRlZCBsb2dnaW5nIG9mIGVycm9yIHBhdGhzIGR1cmluZyBkZXZpY2UgcHJvYmluZwotIHJl bW92ZSB1bnVzZWQgcHNnc2NfY3RybAotIHJlbW92ZSBfY2xrIGZyb20gY2xvY2sgbmFtZXMKLSBw cm9wYWdhdGUgZXJyb3IgY29kZSBmcm9tIGRldm1faW9yZW1hcF9yZXNvdXJjZSgpCi0gdXNlIGRl dmljZV9nZXRfbWF0Y2hfZGF0YSgpCi0gU1BEWCBsaWNlbnNlIHRhZ3MKLSByZW1vdmUgUUNPTV9T TUQgaW4gS2NvbmZpZwotIHNlbGVjdCBBUkNIX1FDT00gaW4gS2NvbmZpZwotIHNlbGVjdCBBUkNI X1FDT00gaW4gS2NvbmZpZwotIHNlbGVjdCBRQ09NX1NDTSBpbiBLY29uZmlnCi0gbG9uZ2VyIGRl c2NyaXB0aW9uIGluIEtjb25maWcKCiBkcml2ZXJzL3NvYy9xY29tL0tjb25maWcgIHwgIDEwICsK IGRyaXZlcnMvc29jL3Fjb20vTWFrZWZpbGUgfCAgIDEgKwogZHJpdmVycy9zb2MvcWNvbS9vY21l bS5jICB8IDQzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS9zb2MvcWNvbS9vY21lbS5oICB8ICA2MiArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNTA2IGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9xY29tL29jbWVtLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvYy9xY29tL29jbWVtLmgKCmRpZmYgLS1naXQg YS9kcml2ZXJzL3NvYy9xY29tL0tjb25maWcgYi9kcml2ZXJzL3NvYy9xY29tL0tjb25maWcKaW5k ZXggYTZkMWJmYjE3Mjc5Li5kMThlYjgzYjEwZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc29jL3Fj b20vS2NvbmZpZworKysgYi9kcml2ZXJzL3NvYy9xY29tL0tjb25maWcKQEAgLTc0LDYgKzc0LDE2 IEBAIGNvbmZpZyBRQ09NX01EVF9MT0FERVIKIAl0cmlzdGF0ZQogCXNlbGVjdCBRQ09NX1NDTQog Citjb25maWcgUUNPTV9PQ01FTQorCXRyaXN0YXRlICJRdWFsY29tbSBPbiBDaGlwIE1lbW9yeSAo T0NNRU0pIGRyaXZlciIKKwlkZXBlbmRzIG9uIEFSQ0hfUUNPTQorCXNlbGVjdCBRQ09NX1NDTQor CWhlbHAKKyAgICAgICAgICBUaGUgT24gQ2hpcCBNZW1vcnkgKE9DTUVNKSBhbGxvY2F0b3IgYWxs b3dzIHZhcmlvdXMgY2xpZW50cyB0bworICAgICAgICAgIGFsbG9jYXRlIG1lbW9yeSBmcm9tIE9D TUVNIGJhc2VkIG9uIHBlcmZvcm1hbmNlLCBsYXRlbmN5IGFuZCBwb3dlcgorICAgICAgICAgIHJl cXVpcmVtZW50cy4gVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBieSB0aGUgR1BVLCBjYW1lcmEvdmlk ZW8sIGFuZAorICAgICAgICAgIGF1ZGlvIGNvbXBvbmVudHMgb24gc29tZSBTbmFwZHJhZ29uIFNv Q3MuCisKIGNvbmZpZyBRQ09NX1BNCiAJYm9vbCAiUXVhbGNvbW0gUG93ZXIgTWFuYWdlbWVudCIK IAlkZXBlbmRzIG9uIEFSQ0hfUUNPTSAmJiAhQVJNNjQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29j L3Fjb20vTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9xY29tL01ha2VmaWxlCmluZGV4IGVlYjA4OGJl YjE1Zi4uZGZjMzc4MDE0YTMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NvYy9xY29tL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvc29jL3Fjb20vTWFrZWZpbGUKQEAgLTYsNiArNiw3IEBAIG9iai0kKENP TkZJR19RQ09NX0NPTU1BTkRfREIpICs9IGNtZC1kYi5vCiBvYmotJChDT05GSUdfUUNPTV9HTElO S19TU1IpICs9CWdsaW5rX3Nzci5vCiBvYmotJChDT05GSUdfUUNPTV9HU0JJKQkrPQlxY29tX2dz Ymkubwogb2JqLSQoQ09ORklHX1FDT01fTURUX0xPQURFUikJKz0gbWR0X2xvYWRlci5vCitvYmot JChDT05GSUdfUUNPTV9PQ01FTSkJKz0gb2NtZW0ubwogb2JqLSQoQ09ORklHX1FDT01fUE0pCSs9 CXNwbS5vCiBvYmotJChDT05GSUdfUUNPTV9RTUlfSEVMUEVSUykJKz0gcW1pX2hlbHBlcnMubwog cW1pX2hlbHBlcnMteQkrPSBxbWlfZW5jZGVjLm8gcW1pX2ludGVyZmFjZS5vCmRpZmYgLS1naXQg YS9kcml2ZXJzL3NvYy9xY29tL29jbWVtLmMgYi9kcml2ZXJzL3NvYy9xY29tL29jbWVtLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YzI4YWQzMTA4YTYKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL3NvYy9xY29tL29jbWVtLmMKQEAgLTAsMCArMSw0MzMgQEAK Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBUaGUgT24g Q2hpcCBNZW1vcnkgKE9DTUVNKSBhbGxvY2F0b3IgYWxsb3dzIHZhcmlvdXMgY2xpZW50cyB0byBh bGxvY2F0ZQorICogbWVtb3J5IGZyb20gT0NNRU0gYmFzZWQgb24gcGVyZm9ybWFuY2UsIGxhdGVu Y3kgYW5kIHBvd2VyIHJlcXVpcmVtZW50cy4KKyAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgYnkg dGhlIEdQVSwgY2FtZXJhL3ZpZGVvLCBhbmQgYXVkaW8gY29tcG9uZW50cyBvbgorICogc29tZSBT bmFwZHJhZ29uIFNvQ3MuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEJyaWFuIE1hc25leSA8 bWFzbmV5YkBvbnN0YXRpb24ub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE1IFJlZCBIYXQuIEF1 dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgorICovCisKKyNpbmNsdWRlIDxs aW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4 L2lvLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcWNvbV9zY20uaD4KKyNpbmNsdWRlIDxsaW51 eC9zaXplcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorI2luY2x1ZGUgPHNvYy9xY29tL29jbWVtLmg+CisKK2VudW0gcmVnaW9uX21vZGUgewor CVdJREVfTU9ERSA9IDB4MCwKKwlUSElOX01PREUsCisJTU9ERV9ERUZBVUxUID0gV0lERV9NT0RF LAorfTsKKworZW51bSBvY21lbV9tYWNyb19zdGF0ZSB7CisJUEFTU1RIUk9VR0ggPSAwLAorCVBF UklfT04gPSAxLAorCUNPUkVfT04gPSAyLAorCUNMS19PRkYgPSA0LAorfTsKKworc3RydWN0IG9j bWVtX3JlZ2lvbiB7CisJYm9vbCBpbnRlcmxlYXZlZDsKKwllbnVtIHJlZ2lvbl9tb2RlIG1vZGU7 CisJdW5zaWduZWQgaW50IG51bV9tYWNyb3M7CisJZW51bSBvY21lbV9tYWNyb19zdGF0ZSBtYWNy b19zdGF0ZVs0XTsKKwl1bnNpZ25lZCBsb25nIG1hY3JvX3NpemU7CisJdW5zaWduZWQgbG9uZyBy ZWdpb25fc2l6ZTsKK307CisKK3N0cnVjdCBvY21lbV9jb25maWcgeworCXVpbnQ4X3QgbnVtX3Jl Z2lvbnM7CisJdW5zaWduZWQgbG9uZyBtYWNyb19zaXplOworfTsKKworc3RydWN0IG9jbWVtIHsK KwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJY29uc3Qgc3RydWN0IG9jbWVtX2NvbmZpZyAqY29uZmln OworCXN0cnVjdCByZXNvdXJjZSAqbWVtb3J5OworCXZvaWQgX19pb21lbSAqbW1pbzsKKwl1bnNp Z25lZCBpbnQgbnVtX3BvcnRzOworCXVuc2lnbmVkIGludCBudW1fbWFjcm9zOworCWJvb2wgaW50 ZXJsZWF2ZWQ7CisJc3RydWN0IG9jbWVtX3JlZ2lvbiAqcmVnaW9uczsKKwl1bnNpZ25lZCBsb25n IGFjdGl2ZV9hbGxvY2F0aW9uczsKK307CisKKyNkZWZpbmUgT0NNRU1fTUlOX0FMSUdOCQkJCVNa XzY0SworI2RlZmluZSBPQ01FTV9NSU5fQUxMT0MJCQkJU1pfNjRLCisKKyNkZWZpbmUgT0NNRU1f UkVHX0hXX1ZFUlNJT04JCQkweDAwMDAwMDAwCisjZGVmaW5lIE9DTUVNX1JFR19IV19QUk9GSUxF CQkJMHgwMDAwMDAwNAorCisjZGVmaW5lIE9DTUVNX1JFR19SRUdJT05fTU9ERV9DVEwJCTB4MDAw MDEwMDAKKyNkZWZpbmUgT0NNRU1fUkVHSU9OX01PREVfQ1RMX1JFRzBfVEhJTgkJMHgwMDAwMDAw MQorI2RlZmluZSBPQ01FTV9SRUdJT05fTU9ERV9DVExfUkVHMV9USElOCQkweDAwMDAwMDAyCisj ZGVmaW5lIE9DTUVNX1JFR0lPTl9NT0RFX0NUTF9SRUcyX1RISU4JCTB4MDAwMDAwMDQKKyNkZWZp bmUgT0NNRU1fUkVHSU9OX01PREVfQ1RMX1JFRzNfVEhJTgkJMHgwMDAwMDAwOAorCisjZGVmaW5l IE9DTUVNX1JFR19HRlhfTVBVX1NUQVJUCQkJMHgwMDAwMTAwNAorI2RlZmluZSBPQ01FTV9SRUdf R0ZYX01QVV9FTkQJCQkweDAwMDAxMDA4CisKKyNkZWZpbmUgT0NNRU1fSFdfUFJPRklMRV9OVU1f UE9SVFModmFsKQkJRklFTERfUFJFUCgweDAwMDAwMDBmLCAodmFsKSkKKyNkZWZpbmUgT0NNRU1f SFdfUFJPRklMRV9OVU1fTUFDUk9TKHZhbCkJRklFTERfUFJFUCgweDAwMDAzZjAwLCAodmFsKSkK KworI2RlZmluZSBPQ01FTV9IV19QUk9GSUxFX0xBU1RfUkVHTl9IQUxGU0laRQkweDAwMDEwMDAw CisjZGVmaW5lIE9DTUVNX0hXX1BST0ZJTEVfSU5URVJMRUFWSU5HCQkweDAwMDIwMDAwCisjZGVm aW5lIE9DTUVNX1JFR19HRU5fU1RBVFVTCQkJMHgwMDAwMDAwYworCisjZGVmaW5lIE9DTUVNX1JF R19QU0dTQ19TVEFUVVMJCQkweDAwMDAwMDM4CisjZGVmaW5lIE9DTUVNX1JFR19QU0dTQ19DVEwo aTApCQkJKDB4MDAwMDAwM2MgKyAweDEqKGkwKSkKKworI2RlZmluZSBPQ01FTV9QU0dTQ19DVExf TUFDUk8wX01PREUodmFsKQlGSUVMRF9QUkVQKDB4MDAwMDAwMDcsICh2YWwpKQorI2RlZmluZSBP Q01FTV9QU0dTQ19DVExfTUFDUk8xX01PREUodmFsKQlGSUVMRF9QUkVQKDB4MDAwMDAwNzAsICh2 YWwpKQorI2RlZmluZSBPQ01FTV9QU0dTQ19DVExfTUFDUk8yX01PREUodmFsKQlGSUVMRF9QUkVQ KDB4MDAwMDA3MDAsICh2YWwpKQorI2RlZmluZSBPQ01FTV9QU0dTQ19DVExfTUFDUk8zX01PREUo dmFsKQlGSUVMRF9QUkVQKDB4MDAwMDcwMDAsICh2YWwpKQorCisjZGVmaW5lIE9DTUVNX0NMS19D T1JFX0lEWAkJCTAKK3N0YXRpYyBzdHJ1Y3QgY2xrX2J1bGtfZGF0YSBvY21lbV9jbGtzW10gPSB7 CisJeworCQkuaWQgPSAiY29yZSIsCisJfSwKKwl7CisJCS5pZCA9ICJpZmFjZSIsCisJfSwKK307 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBvY21lbV93cml0ZShzdHJ1Y3Qgb2NtZW0gKm9jbWVtLCB1 MzIgcmVnLCB1MzIgZGF0YSkKK3sKKwl3cml0ZWwoZGF0YSwgb2NtZW0tPm1taW8gKyByZWcpOwor fQorCitzdGF0aWMgaW5saW5lIHUzMiBvY21lbV9yZWFkKHN0cnVjdCBvY21lbSAqb2NtZW0sIHUz MiByZWcpCit7CisJcmV0dXJuIHJlYWRsKG9jbWVtLT5tbWlvICsgcmVnKTsKK30KKworc3RhdGlj IHZvaWQgdXBkYXRlX29jbWVtKHN0cnVjdCBvY21lbSAqb2NtZW0pCit7CisJdWludDMyX3QgcmVn aW9uX21vZGVfY3RybCA9IDB4MDsKKwlpbnQgaTsKKworCWlmICghcWNvbV9zY21fb2NtZW1fbG9j a19hdmFpbGFibGUoKSkgeworCQlmb3IgKGkgPSAwOyBpIDwgb2NtZW0tPmNvbmZpZy0+bnVtX3Jl Z2lvbnM7IGkrKykgeworCQkJc3RydWN0IG9jbWVtX3JlZ2lvbiAqcmVnaW9uID0gJm9jbWVtLT5y ZWdpb25zW2ldOworCisJCQlpZiAocmVnaW9uLT5tb2RlID09IFRISU5fTU9ERSkKKwkJCQlyZWdp b25fbW9kZV9jdHJsIHw9IEJJVChpKTsKKwkJfQorCisJCWRldl9kYmcob2NtZW0tPmRldiwgIm9j bWVtX3JlZ2lvbl9tb2RlX2NvbnRyb2wgJXhcbiIsCisJCQlyZWdpb25fbW9kZV9jdHJsKTsKKwkJ b2NtZW1fd3JpdGUob2NtZW0sIE9DTUVNX1JFR19SRUdJT05fTU9ERV9DVEwsIHJlZ2lvbl9tb2Rl X2N0cmwpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBvY21lbS0+Y29uZmlnLT5udW1fcmVnaW9u czsgaSsrKSB7CisJCXN0cnVjdCBvY21lbV9yZWdpb24gKnJlZ2lvbiA9ICZvY21lbS0+cmVnaW9u c1tpXTsKKwkJdTMyIGRhdGE7CisKKwkJZGF0YSA9IE9DTUVNX1BTR1NDX0NUTF9NQUNSTzBfTU9E RShyZWdpb24tPm1hY3JvX3N0YXRlWzBdKSB8CisJCQlPQ01FTV9QU0dTQ19DVExfTUFDUk8xX01P REUocmVnaW9uLT5tYWNyb19zdGF0ZVsxXSkgfAorCQkJT0NNRU1fUFNHU0NfQ1RMX01BQ1JPMl9N T0RFKHJlZ2lvbi0+bWFjcm9fc3RhdGVbMl0pIHwKKwkJCU9DTUVNX1BTR1NDX0NUTF9NQUNSTzNf TU9ERShyZWdpb24tPm1hY3JvX3N0YXRlWzNdKTsKKworCQlvY21lbV93cml0ZShvY21lbSwgT0NN RU1fUkVHX1BTR1NDX0NUTChpKSwgZGF0YSk7CisJfQorfQorCitzdGF0aWMgdW5zaWduZWQgbG9u ZyBwaHlzX3RvX29mZnNldChzdHJ1Y3Qgb2NtZW0gKm9jbWVtLAorCQkJCSAgICB1bnNpZ25lZCBs b25nIGFkZHIpCit7CisJaWYgKGFkZHIgPCBvY21lbS0+bWVtb3J5LT5zdGFydCB8fCBhZGRyID49 IG9jbWVtLT5tZW1vcnktPmVuZCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gYWRkciAtIG9jbWVt LT5tZW1vcnktPnN0YXJ0OworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBkZXZpY2VfYWRkcmVz cyhzdHJ1Y3Qgb2NtZW0gKm9jbWVtLAorCQkJCSAgICBlbnVtIG9jbWVtX2NsaWVudCBjbGllbnQs CisJCQkJICAgIHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKwlXQVJOX09OKGNsaWVudCAhPSBPQ01F TV9HUkFQSElDUyk7CisKKwkvKiBUT0RPOiBncHUgdXNlcyBwaHlzX3RvX29mZnNldCwgYnV0IG90 aGVycyBkbyBub3QuLiAqLworCXJldHVybiBwaHlzX3RvX29mZnNldChvY21lbSwgYWRkcik7Cit9 CisKK3N0YXRpYyB2b2lkIHVwZGF0ZV9yYW5nZShzdHJ1Y3Qgb2NtZW0gKm9jbWVtLCBzdHJ1Y3Qg b2NtZW1fYnVmICpidWYsCisJCQkgZW51bSBvY21lbV9tYWNyb19zdGF0ZSBtc3RhdGUsIGVudW0g cmVnaW9uX21vZGUgcm1vZGUpCit7CisJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOworCWludCBp LCBqOworCisJZm9yIChpID0gMDsgaSA8IG9jbWVtLT5jb25maWctPm51bV9yZWdpb25zOyBpKysp IHsKKwkJc3RydWN0IG9jbWVtX3JlZ2lvbiAqcmVnaW9uID0gJm9jbWVtLT5yZWdpb25zW2ldOwor CisJCWlmIChidWYtPm9mZnNldCA8PSBvZmZzZXQgJiYgb2Zmc2V0IDwgYnVmLT5vZmZzZXQgKyBi dWYtPmxlbikKKwkJCXJlZ2lvbi0+bW9kZSA9IHJtb2RlOworCisJCWZvciAoaiA9IDA7IGogPCBy ZWdpb24tPm51bV9tYWNyb3M7IGorKykgeworCQkJaWYgKGJ1Zi0+b2Zmc2V0IDw9IG9mZnNldCAm JgorCQkJICAgIG9mZnNldCA8IGJ1Zi0+b2Zmc2V0ICsgYnVmLT5sZW4pCisJCQkJcmVnaW9uLT5t YWNyb19zdGF0ZVtqXSA9IG1zdGF0ZTsKKworCQkJb2Zmc2V0ICs9IHJlZ2lvbi0+bWFjcm9fc2l6 ZTsKKwkJfQorCX0KKworCXVwZGF0ZV9vY21lbShvY21lbSk7Cit9CisKK3N0cnVjdCBvY21lbSAq b2ZfZ2V0X29jbWVtKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2bm9kZTsKKworCWRldm5vZGUgPSBv Zl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgIm9jbWVtIiwgMCk7CisJaWYgKCFkZXZub2Rl KSB7CisJCWRldl9lcnIoZGV2LCAiQ2Fubm90IGxvb2sgdXAgb2NtZW0gcGhhbmRsZVxuIik7CisJ CXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOworCX0KKworCXBkZXYgPSBvZl9maW5kX2RldmljZV9i eV9ub2RlKGRldm5vZGUpOworCWlmICghcGRldikgeworCQlkZXZfZXJyKGRldiwgIkNhbm5vdCBm aW5kIGRldmljZSBub2RlICVzXG4iLCBkZXZub2RlLT5uYW1lKTsKKwkJcmV0dXJuIEVSUl9QVFIo LUVQUk9CRV9ERUZFUik7CisJfQorCisJcmV0dXJuIHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYp OworfQorRVhQT1JUX1NZTUJPTChvZl9nZXRfb2NtZW0pOworCitzdHJ1Y3Qgb2NtZW1fYnVmICpv Y21lbV9hbGxvY2F0ZShzdHJ1Y3Qgb2NtZW0gKm9jbWVtLCBlbnVtIG9jbWVtX2NsaWVudCBjbGll bnQsCisJCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlzdHJ1Y3Qgb2NtZW1fYnVmICpidWY7 CisJaW50IHJldDsKKworCS8qIFRPRE86IGFkZCBzdXBwb3J0IGZvciBvdGhlciBjbGllbnRzLi4u ICovCisJaWYgKFdBUk5fT04oY2xpZW50ICE9IE9DTUVNX0dSQVBISUNTKSkKKwkJcmV0dXJuIEVS Ul9QVFIoLUVOT0RFVik7CisKKwlpZiAoc2l6ZSA8IE9DTUVNX01JTl9BTExPQyB8fCAhSVNfQUxJ R05FRChzaXplLCBPQ01FTV9NSU5fQUxJR04pKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK KworCWlmICh0ZXN0X2FuZF9zZXRfYml0X2xvY2soQklUKGNsaWVudCksICZvY21lbS0+YWN0aXZl X2FsbG9jYXRpb25zKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVCVVNZKTsKKworCWJ1ZiA9IGt6YWxs b2Moc2l6ZW9mKCpidWYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZikgeworCQlyZXQgPSAtRU5P TUVNOworCQlnb3RvIGVycl91bmxvY2s7CisJfQorCisJYnVmLT5vZmZzZXQgPSAwOworCWJ1Zi0+ YWRkciA9IGRldmljZV9hZGRyZXNzKG9jbWVtLCBjbGllbnQsIGJ1Zi0+b2Zmc2V0KTsKKwlidWYt PmxlbiA9IHNpemU7CisKKwl1cGRhdGVfcmFuZ2Uob2NtZW0sIGJ1ZiwgQ09SRV9PTiwgV0lERV9N T0RFKTsKKworCWlmIChxY29tX3NjbV9vY21lbV9sb2NrX2F2YWlsYWJsZSgpKSB7CisJCXJldCA9 IHFjb21fc2NtX29jbWVtX2xvY2soUUNPTV9TQ01fT0NNRU1fR1JBUEhJQ1NfSUQsCisJCQkJCSAg YnVmLT5vZmZzZXQsIGJ1Zi0+bGVuLCBXSURFX01PREUpOworCQlpZiAocmV0KSB7CisJCQlkZXZf ZXJyKG9jbWVtLT5kZXYsICJjb3VsZCBub3QgbG9jazogJWRcbiIsIHJldCk7CisJCQlyZXQgPSAt RUlOVkFMOworCQkJZ290byBlcnJfa2ZyZWU7CisJCX0KKwl9IGVsc2UgeworCQlvY21lbV93cml0 ZShvY21lbSwgT0NNRU1fUkVHX0dGWF9NUFVfU1RBUlQsIGJ1Zi0+b2Zmc2V0KTsKKwkJb2NtZW1f d3JpdGUob2NtZW0sIE9DTUVNX1JFR19HRlhfTVBVX0VORCwKKwkJCSAgICBidWYtPm9mZnNldCAr IGJ1Zi0+bGVuKTsKKwl9CisKKwlkZXZfZGJnKG9jbWVtLT5kZXYsICJ1c2luZyAlbGRLIG9mIE9D TUVNIGF0IDB4JTA4bHggZm9yIGNsaWVudCAlZFxuIiwKKwkJc2l6ZSAvIDEwMjQsIGJ1Zi0+YWRk ciwgY2xpZW50KTsKKworCXJldHVybiBidWY7CisKK2Vycl9rZnJlZToKKwlrZnJlZShidWYpOwor ZXJyX3VubG9jazoKKwljbGVhcl9iaXRfdW5sb2NrKEJJVChjbGllbnQpLCAmb2NtZW0tPmFjdGl2 ZV9hbGxvY2F0aW9ucyk7CisKKwlyZXR1cm4gRVJSX1BUUihyZXQpOworfQorRVhQT1JUX1NZTUJP TChvY21lbV9hbGxvY2F0ZSk7CisKK3ZvaWQgb2NtZW1fZnJlZShzdHJ1Y3Qgb2NtZW0gKm9jbWVt LCBlbnVtIG9jbWVtX2NsaWVudCBjbGllbnQsCisJCXN0cnVjdCBvY21lbV9idWYgKmJ1ZikKK3sK KwkvKiBUT0RPOiBhZGQgc3VwcG9ydCBmb3Igb3RoZXIgY2xpZW50cy4uLiAqLworCWlmIChXQVJO X09OKGNsaWVudCAhPSBPQ01FTV9HUkFQSElDUykpCisJCXJldHVybjsKKworCXVwZGF0ZV9yYW5n ZShvY21lbSwgYnVmLCBDTEtfT0ZGLCBNT0RFX0RFRkFVTFQpOworCisJaWYgKHFjb21fc2NtX29j bWVtX2xvY2tfYXZhaWxhYmxlKCkpIHsKKwkJaW50IHJldDsKKworCQlyZXQgPSBxY29tX3NjbV9v Y21lbV91bmxvY2soUUNPTV9TQ01fT0NNRU1fR1JBUEhJQ1NfSUQsCisJCQkJCSAgICBidWYtPm9m ZnNldCwgYnVmLT5sZW4pOworCQlpZiAocmV0KQorCQkJZGV2X2VycihvY21lbS0+ZGV2LCAiY291 bGQgbm90IHVubG9jazogJWRcbiIsIHJldCk7CisJfSBlbHNlIHsKKwkJb2NtZW1fd3JpdGUob2Nt ZW0sIE9DTUVNX1JFR19HRlhfTVBVX1NUQVJULCAweDApOworCQlvY21lbV93cml0ZShvY21lbSwg T0NNRU1fUkVHX0dGWF9NUFVfRU5ELCAweDApOworCX0KKworCWtmcmVlKGJ1Zik7CisKKwljbGVh cl9iaXRfdW5sb2NrKEJJVChjbGllbnQpLCAmb2NtZW0tPmFjdGl2ZV9hbGxvY2F0aW9ucyk7Cit9 CitFWFBPUlRfU1lNQk9MKG9jbWVtX2ZyZWUpOworCitzdGF0aWMgaW50IG9jbWVtX2Rldl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwZGV2LT5kZXY7CisJdW5zaWduZWQgbG9uZyByZWcsIHJlZ2lvbl9zaXplOworCWludCBpLCBq LCByZXQsIG51bV9iYW5rczsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3Qgb2NtZW0g Km9jbWVtOworCisJaWYgKCFxY29tX3NjbV9pc19hdmFpbGFibGUoKSkKKwkJcmV0dXJuIC1FUFJP QkVfREVGRVI7CisKKwlvY21lbSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqb2NtZW0pLCBH RlBfS0VSTkVMKTsKKwlpZiAoIW9jbWVtKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW9jbWVtLT5k ZXYgPSBkZXY7CisJb2NtZW0tPmNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwor CisJcmV0ID0gZGV2bV9jbGtfYnVsa19nZXQoZGV2LCBBUlJBWV9TSVpFKG9jbWVtX2Nsa3MpLCBv Y21lbV9jbGtzKTsKKwlpZiAocmV0KSB7CisJCWlmIChyZXQgIT0gLUVQUk9CRV9ERUZFUikKKwkJ CWRldl9lcnIoZGV2LCAiVW5hYmxlIHRvIGdldCBjbG9ja3NcbiIpOworCisJCXJldHVybiByZXQ7 CisJfQorCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09V UkNFX01FTSwgImN0cmwiKTsKKwlvY21lbS0+bW1pbyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgm cGRldi0+ZGV2LCByZXMpOworCWlmIChJU19FUlIob2NtZW0tPm1taW8pKSB7CisJCWRldl9lcnIo JnBkZXYtPmRldiwgIkZhaWxlZCB0byBpb3JlbWFwIG9jbWVtX2N0cmwgcmVzb3VyY2VcbiIpOwor CQlyZXR1cm4gUFRSX0VSUihvY21lbS0+bW1pbyk7CisJfQorCisJb2NtZW0tPm1lbW9yeSA9IHBs YXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9NRU0sCisJCQkJCQkg ICAgICJtZW0iKTsKKwlpZiAoIW9jbWVtLT5tZW1vcnkpIHsKKwkJZGV2X2VycihkZXYsICJDb3Vs ZCBub3QgZ2V0IG1lbSByZWdpb25cbiIpOworCQlyZXR1cm4gLUVOWElPOworCX0KKworCS8qIFRo ZSBjb3JlIGNsb2NrIGlzIHN5bmNocm9ub3VzIHdpdGggZ3JhcGhpY3MgKi8KKwlXQVJOX09OKGNs a19zZXRfcmF0ZShvY21lbV9jbGtzW09DTUVNX0NMS19DT1JFX0lEWF0uY2xrLCAxMDAwKSA8IDAp OworCisJcmV0ID0gY2xrX2J1bGtfcHJlcGFyZV9lbmFibGUoQVJSQVlfU0laRShvY21lbV9jbGtz KSwgb2NtZW1fY2xrcyk7CisJaWYgKHJldCkgeworCQlkZXZfaW5mbyhvY21lbS0+ZGV2LCAiRmFp bGVkIHRvIGVuYWJsZSBjbG9ja3NcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChxY29t X3NjbV9yZXN0b3JlX3NlY19jZmdfYXZhaWxhYmxlKCkpIHsKKwkJZGV2X2RiZyhkZXYsICJjb25m aWd1cmluZyBzY21cbiIpOworCQlyZXQgPSBxY29tX3NjbV9yZXN0b3JlX3NlY19jZmcoUUNPTV9T Q01fT0NNRU1fREVWX0lELCAwKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2VycihkZXYsICJDb3Vs ZCBub3QgZW5hYmxlIHNlY3VyZSBjb25maWd1cmF0aW9uXG4iKTsKKwkJCWdvdG8gZXJyX2Nsa19k aXNhYmxlOworCQl9CisJfQorCisJcmVnID0gb2NtZW1fcmVhZChvY21lbSwgT0NNRU1fUkVHX0hX X1BST0ZJTEUpOworCW9jbWVtLT5udW1fcG9ydHMgPSBPQ01FTV9IV19QUk9GSUxFX05VTV9QT1JU UyhyZWcpOworCW9jbWVtLT5udW1fbWFjcm9zID0gT0NNRU1fSFdfUFJPRklMRV9OVU1fTUFDUk9T KHJlZyk7CisJb2NtZW0tPmludGVybGVhdmVkID0gISEocmVnICYgT0NNRU1fSFdfUFJPRklMRV9J TlRFUkxFQVZJTkcpOworCisJbnVtX2JhbmtzID0gb2NtZW0tPm51bV9wb3J0cyAvIDI7CisJcmVn aW9uX3NpemUgPSBvY21lbS0+Y29uZmlnLT5tYWNyb19zaXplICogbnVtX2JhbmtzOworCisJZGV2 X2luZm8oZGV2LCAiJXUgcG9ydHMsICV1IHJlZ2lvbnMsICV1IG1hY3JvcywgJXNpbnRlcmxlYXZl ZFxuIiwKKwkJIG9jbWVtLT5udW1fcG9ydHMsIG9jbWVtLT5jb25maWctPm51bV9yZWdpb25zLAor CQkgb2NtZW0tPm51bV9tYWNyb3MsIG9jbWVtLT5pbnRlcmxlYXZlZCA/ICIiIDogIm5vdCAiKTsK KworCW9jbWVtLT5yZWdpb25zID0gZGV2bV9rY2FsbG9jKGRldiwgb2NtZW0tPmNvbmZpZy0+bnVt X3JlZ2lvbnMsCisJCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBvY21lbV9yZWdpb24pLCBHRlBfS0VS TkVMKTsKKwlpZiAoIW9jbWVtLT5yZWdpb25zKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8g ZXJyX2Nsa19kaXNhYmxlOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBvY21lbS0+Y29uZmlnLT5u dW1fcmVnaW9uczsgaSsrKSB7CisJCXN0cnVjdCBvY21lbV9yZWdpb24gKnJlZ2lvbiA9ICZvY21l bS0+cmVnaW9uc1tpXTsKKworCQlpZiAoV0FSTl9PTihudW1fYmFua3MgPiBBUlJBWV9TSVpFKHJl Z2lvbi0+bWFjcm9fc3RhdGUpKSkgeworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJyX2Ns a19kaXNhYmxlOworCQl9CisKKwkJcmVnaW9uLT5tb2RlID0gTU9ERV9ERUZBVUxUOworCQlyZWdp b24tPm51bV9tYWNyb3MgPSBudW1fYmFua3M7CisKKwkJaWYgKGkgPT0gKG9jbWVtLT5jb25maWct Pm51bV9yZWdpb25zIC0gMSkgJiYKKwkJICAgIHJlZyAmIE9DTUVNX0hXX1BST0ZJTEVfTEFTVF9S RUdOX0hBTEZTSVpFKSB7CisJCQlyZWdpb24tPm1hY3JvX3NpemUgPSBvY21lbS0+Y29uZmlnLT5t YWNyb19zaXplIC8gMjsKKwkJCXJlZ2lvbi0+cmVnaW9uX3NpemUgPSByZWdpb25fc2l6ZSAvIDI7 CisJCX0gZWxzZSB7CisJCQlyZWdpb24tPm1hY3JvX3NpemUgPSBvY21lbS0+Y29uZmlnLT5tYWNy b19zaXplOworCQkJcmVnaW9uLT5yZWdpb25fc2l6ZSA9IHJlZ2lvbl9zaXplOworCQl9CisKKwkJ Zm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUocmVnaW9uLT5tYWNyb19zdGF0ZSk7IGorKykKKwkJ CXJlZ2lvbi0+bWFjcm9fc3RhdGVbal0gPSBDTEtfT0ZGOworCX0KKworCXBsYXRmb3JtX3NldF9k cnZkYXRhKHBkZXYsIG9jbWVtKTsKKworCXJldHVybiAwOworCitlcnJfY2xrX2Rpc2FibGU6CisJ Y2xrX2J1bGtfZGlzYWJsZV91bnByZXBhcmUoQVJSQVlfU0laRShvY21lbV9jbGtzKSwgb2NtZW1f Y2xrcyk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvY21lbV9kZXZfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBh cmUoQVJSQVlfU0laRShvY21lbV9jbGtzKSwgb2NtZW1fY2xrcyk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBvY21lbV9jb25maWcgb2NtZW1fODk3NF9jb25maWcgPSB7 CisJLm51bV9yZWdpb25zID0gMywKKwkubWFjcm9fc2l6ZSA9IFNaXzEyOEssCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvY21lbV9vZl9tYXRjaFtdID0geworCXsgLmNv bXBhdGlibGUgPSAicWNvbSxtc204OTc0LW9jbWVtIiwgLmRhdGEgPSAmb2NtZW1fODk3NF9jb25m aWcgfSwKKwl7IH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9jbWVtX29mX21hdGNo KTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb2NtZW1fZHJpdmVyID0geworCS5w cm9iZSA9IG9jbWVtX2Rldl9wcm9iZSwKKwkucmVtb3ZlID0gb2NtZW1fZGV2X3JlbW92ZSwKKwku ZHJpdmVyID0geworCQkubmFtZSA9ICJvY21lbSIsCisJCS5vZl9tYXRjaF90YWJsZSA9IG9jbWVt X29mX21hdGNoLAorCX0sCit9OworCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG9jbWVtX2RyaXZl cik7CisKK01PRFVMRV9ERVNDUklQVElPTigiT24gQ2hpcCBNZW1vcnkgKE9DTUVNKSBhbGxvY2F0 b3IgZm9yIHNvbWUgU25hcGRyYWdvbiBTb0NzIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRp ZmYgLS1naXQgYS9pbmNsdWRlL3NvYy9xY29tL29jbWVtLmggYi9pbmNsdWRlL3NvYy9xY29tL29j bWVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMGFlMzM2YmE3 OGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3NvYy9xY29tL29jbWVtLmgKQEAgLTAsMCAr MSw2MiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLworLyoK KyAqIFRoZSBPbiBDaGlwIE1lbW9yeSAoT0NNRU0pIGFsbG9jYXRvciBhbGxvd3MgdmFyaW91cyBj bGllbnRzIHRvIGFsbG9jYXRlCisgKiBtZW1vcnkgZnJvbSBPQ01FTSBiYXNlZCBvbiBwZXJmb3Jt YW5jZSwgbGF0ZW5jeSBhbmQgcG93ZXIgcmVxdWlyZW1lbnRzLgorICogVGhpcyBpcyB0eXBpY2Fs bHkgdXNlZCBieSB0aGUgR1BVLCBjYW1lcmEvdmlkZW8sIGFuZCBhdWRpbyBjb21wb25lbnRzIG9u CisgKiBzb21lIFNuYXBkcmFnb24gU29Dcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQnJp YW4gTWFzbmV5IDxtYXNuZXliQG9uc3RhdGlvbi5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg UmVkIEhhdC4gQXV0aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CisgKi8KKwor I2lmbmRlZiBfX09DTUVNX0hfXworI2RlZmluZSBfX09DTUVNX0hfXworCitlbnVtIG9jbWVtX2Ns aWVudCB7CisJLyogR01FTSBjbGllbnRzICovCisJT0NNRU1fR1JBUEhJQ1MgPSAweDAsCisJLyoK KwkgKiBUT0RPIGFkZCBtb3JlIG9uY2Ugb2NtZW1fYWxsb2NhdGUoKSBpcyBjbGV2ZXIgZW5vdWdo IHRvCisJICogZGVhbCB3aXRoIG11bHRpcGxlIGNsaWVudHMuCisJICovCisJT0NNRU1fQ0xJRU5U X01BWCwKK307CisKK3N0cnVjdCBvY21lbTsKKworc3RydWN0IG9jbWVtX2J1ZiB7CisJdW5zaWdu ZWQgbG9uZyBvZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBhZGRyOworCXVuc2lnbmVkIGxvbmcgbGVu OworfTsKKworI2lmIElTX0VOQUJMRUQoQ09ORklHX1FDT01fT0NNRU0pCisKK3N0cnVjdCBvY21l bSAqb2ZfZ2V0X29jbWVtKHN0cnVjdCBkZXZpY2UgKmRldik7CitzdHJ1Y3Qgb2NtZW1fYnVmICpv Y21lbV9hbGxvY2F0ZShzdHJ1Y3Qgb2NtZW0gKm9jbWVtLCBlbnVtIG9jbWVtX2NsaWVudCBjbGll bnQsCisJCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Cit2b2lkIG9jbWVtX2ZyZWUoc3RydWN0IG9j bWVtICpvY21lbSwgZW51bSBvY21lbV9jbGllbnQgY2xpZW50LAorCQlzdHJ1Y3Qgb2NtZW1fYnVm ICpidWYpOworCisjZWxzZSAvKiBJU19FTkFCTEVEKENPTkZJR19RQ09NX09DTUVNKSAqLworCitz dGF0aWMgaW5saW5lIHN0cnVjdCBvY21lbSAqb2ZfZ2V0X29jbWVtKHN0cnVjdCBkZXZpY2UgKmRl dikKK3sKKwlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1 Y3Qgb2NtZW1fYnVmICpvY21lbV9hbGxvY2F0ZShzdHJ1Y3Qgb2NtZW0gKm9jbWVtLAorCQkJCQkg ICAgICAgZW51bSBvY21lbV9jbGllbnQgY2xpZW50LAorCQkJCQkgICAgICAgdW5zaWduZWQgbG9u ZyBzaXplKQoreworCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgb2NtZW1fZnJlZShzdHJ1Y3Qgb2NtZW0gKm9jbWVtLCBlbnVtIG9jbWVtX2NsaWVudCBj bGllbnQsCisJCQkgICAgICBzdHJ1Y3Qgb2NtZW1fYnVmICpidWYpCit7Cit9CisKKyNlbmRpZiAv KiBJU19FTkFCTEVEKENPTkZJR19RQ09NX09DTUVNKSAqLworCisjZW5kaWYgLyogX19PQ01FTV9I X18gKi8KLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJl ZWRyZW5v