From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyun Kwon Subject: [PATCH v8 1/5] drm: xlnx: Xilinx DRM KMS module Date: Sat, 7 Jul 2018 19:05:34 -0700 Message-ID: <1531015538-32268-2-git-send-email-hyun.kwon@xilinx.com> References: <1531015538-32268-1-git-send-email-hyun.kwon@xilinx.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1531015538-32268-1-git-send-email-hyun.kwon@xilinx.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, Laurent Pinchart Cc: Daniel Vetter , Rob Herring , Michal Simek , Hyun Kwon List-Id: devicetree@vger.kernel.org WGlsaW54IGhhcyB2YXJpb3VzIHBsYXRmb3JtcyBmb3IgZGlzcGxheSwgd2hlcmUgdXNlcnMgY2Fu IGNyZWF0ZQp1c2luZyBtdWx0aXBsZSBJUHMgaW4gdGhlIHByb2dyYW1tYWJsZSBGUEdBIGZhYnJp Yywgb3Igd2hlcmUKc29tZSBoYXJkZW5lZCBwaXBlbGluZSBpcyBhdmFpbGFibGUgb24gdGhlIGNo aXAuIEZ1cnRoZXJtb3JlLApoYXJkZW5lZCBwaXBlbGluZSBjYW4gYWxzbyBpbnRlcmFjdCB3aXRo IHNvZnQgbG9naWNzIGluIEZQR0EuCgpUaGUgWGlsaW54IERSTSBLTVMgbW9kdWxlIGlzIHRvIGlu dGVncmF0ZSBtdWx0aXBsZSBzdWJkZXZpY2VzIGFuZAp0byByZXByZXNlbnQgdGhlIGVudGlyZSBw aXBlbGluZSBhcyBhIHNpbmdsZSBEUk0gZGV2aWNlLiBUaGUgbW9kdWxlCmluY2x1ZGVzIGhlbHBl ciAoZXgsIGZyYW1lYnVmZmVyIGFuZCBnZW0gaGVscGVycykgYW5kIGdsdWUgbG9naWMKKGV4LCBj cnRjIGludGVyZmFjZSkgZnVuY3Rpb25zLgoKU2lnbmVkLW9mZi1ieTogSHl1biBLd29uIDxoeXVu Lmt3b25AeGlsaW54LmNvbT4KQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+Ci0tLQp2NwotIFVuYmluZCBhcyBjb21wb25lbnQgaW4gc2h1dGRvd24KLSBSZWdp c3RlciByZWxlYXNlIGNhbGxiYWNrIGZvciBtYXN0ZXIgZGV2aWNlCnY2Ci0gRml4IHRoZSBmdW5j dGlvbiBkZXNjIGZvciBwaXBlbGluZSBjYWxscwotIFJlYmFzZSBvbiBkcm0tbWlzYy1uZXh0Ci0g Rml4IHR5cG9zIGluIGRvY3VtZW50YXRpb24KLSBNYXRjaCB0eXBlcyBmb3IgcmV0dXJuIGFuZCBp bnRlcm5hbCB2YXJpYWJsZXMKLSBSZW1vdmUgdXNlIG9mICd0bXAnIHZhcmlhYmxlcwotIFByb3Rl Y3QgYW55IGNydGMgbGlzdCBpdGVyYXRpb24gd2l0aCBtdXRleAotIFJlbW92ZSBhIGNoZWNrIGZv ciBkcm0gZGV2aWNlIGluIGNydGMgdW5yZWdpc3RyYXRpb24KLSBTcGxpdCB0aGUgY3J0YyBvcHMg YXMgYSBzZXBhcmF0ZSBzdHJ1Y3QgdG8gY29uc3RpZnkKLSBFbWJlZCB4bG54X2NydGNfaGVscGVy IGludG8geGxueF9kcm0KLSBNb3ZlIHRvX3hsbnhfY3J0YyBtYWNybyBjbG9zZSB0byB4bG54X2Ny dGMKLSBSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZQotIFJlcGxhY2UgY3VzdG9tIHZyZXMgbW9kdWxl IHBhcmFtIHdpdGggQ09ORklHX0RSTV9GQkRFVl9PVkVSQUxMT0MKLSBSZW5hbWUgY3J0YyB0byBj cnRjX2hlbHBlciB0byBtYWtlIGl0IGNsZWFyZXIKLSBVc2UgJ0RSTSBkZXZpY2UnIGluc3RlYWQg b2YgJ0RSTSBjb3JlJwotIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24sIHhsbnhfZ2V0X2Zvcm1hdCgp Ci0gVXNlIGRldmljZSBpbnN0ZWFkIG9mIHBsYXRmb3JtIGRldmljZSBmb3IgdGhlIGxvZ2ljYWwg bWFzdGVyCi0gSW5saW5lIHhsbnhfb2ZfY29tcG9uZW50X3Byb2JlKCkKLSBVc2Ugb2ZfZ2V0X3Bh cmVudCgpCi0gUmVtb3ZlIHRoZSBwb3J0IGJpbmRpbmcgaGFuZGxpbmcgaW4gdGhlIGRyaXZlcgot IERvIGNvbXBsZXRlIGZvcndhcmQtZGVjbGFyYXRpb25zIGluIGhlYWRlcnMKLSBDb25zdGlmeSBh bGwgZnVuY3Rpb24gcG9pbnRlcnMKLSBVc2UgdGhlIGRlZmF1bHQgaW9jdGwgZnJvbSBmYiBoZWxw ZXIKLSBSZXR1cm4gdGhlIG1pbmltdW0gcGl0Y2ggYWx3YXlzCi0gQ2xlYW4gdXAgdGhlIGR1cGxp Y2F0ZSBsaWNlbnNlIHBhcmFncmFwaHMKLSBHZXQgY29tbW9uIGJpdHMgZm9yIGRtYSBtYXNrIGlu c3RlYWQgb2YgbWluaW11bSB2YWx1ZQotIFJlbW92ZSBkdW1teSBmdW5jdGlvbiBkZWNsYXJhdGlv biBmcm9tIGhlYWRlcgotIEZpeCBhIHR5cG8gaW4gdGhlIGNvbW1pdCBtZXNzYWdlIHdpdGggc29t ZSByZS1vcmdhbml6YXRpb24KdjUKLSBSZWRlZmluZSB4bG54X3BpcGVsaW5lX2luaXQoKQp2NAot IEZpeCBhIGJ1ZyBpbiBvZiBncmFwaCBiaW5kaW5nIGhhbmRsaW5nCi0gUmVtb3ZlIHZibGFuayBj YWxsYmFja3MgZnJvbSB4bG54X2NydGMKLSBSZW1vdmUgdGhlIGR0IGJpbmRpbmcuIFRoaXMgbW9k dWxlIGJlY29tZXMgbW9yZSBsaWtlIGEgbGlicmFyeS4KLSBSZXBocmFzZSB0aGUgY29tbWl0IG1l c3NhZ2UKdjMKLSBBZGQgTGF1cmVudCBhcyBhIG1haW50YWluZXIKLSBGaXggbXVsdGlwbGUtcmVm ZXJlbmNlIG9uIGdlbSBvYmplY3RzCnYyCi0gQ2hhbmdlIHRoZSBTUERYIGlkZW50aWZpZXIgZm9y bWF0Ci0gTWVyZ2UgcGF0Y2hlcyhjcnRjLCBnZW0sIGZiKSBpbnRvIHNpbmdsZSBvbmUKdjIgb2Yg eGxueF9kcnYKLSBSZW5hbWUga21zIHRvIGRpc3BsYXkgaW4geGxueF9kcnYKLSBSZXBsYWNlIHNv bWUgeGxueCBzcGVjaWZpYyBmYiBoZWxwZXIgd2l0aCBjb21tb24gaGVscGVycyBpbiB4bG54X2Ry dgotIERvbid0IHNldCB0aGUgY29tbWl0IHRhaWwgY2FsbGJhY2sgaW4geGxueF9kcnYKLSBTdXBw b3J0ICdwb3J0cycgZ3JhcGggYmluZGluZyBpbiB4bG54X2Rydgp2MiBvZiB4bG54X2ZiCi0gUmVt b3ZlIHdyYXBwZXJzIGluIHhsbnhfZmIKLSBSZXBsYWNlIHNvbWUgZnVuY3Rpb25zIHdpdGggZHJt IGNvcmUgaGVscGVycyBpbiB4bG54X2ZiCi0tLQotLS0KIE1BSU5UQUlORVJTICAgICAgICAgICAg ICAgICAgICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgIHwgICAy ICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS94bG54L0tjb25maWcgICAgIHwgIDEyICsrCiBkcml2ZXJzL2dwdS9kcm0veGxueC9NYWtl ZmlsZSAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2NydGMuYyB8IDE0MiAr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2NydGMuaCB8ICA4MyArKysr KysrKwogZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9kcnYuYyAgfCA0MzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Ry di5oICB8ICAyMyArKysKIGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZmIuYyAgIHwgMjQ5ICsr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZmIuaCAgIHwg IDI3ICsrKwogZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9nZW0uYyAgfCAgMzYgKysrKwogZHJp dmVycy9ncHUvZHJtL3hsbngveGxueF9nZW0uaCAgfCAgMjEgKysKIDEzIGZpbGVzIGNoYW5nZWQs IDEwNDAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94 bG54L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGxueC9NYWtl ZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfY3J0Yy5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9jcnRjLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Rydi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9kcnYuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZmIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZmIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS94bG54L3hsbnhfZ2VtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0veGxueC94bG54X2dlbS5oCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJ TkVSUwppbmRleCAwN2QxNTc2Li4xMzdlZmQ2IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysg Yi9NQUlOVEFJTkVSUwpAQCAtNDg0Niw2ICs0ODQ2LDE1IEBAIEY6CWRyaXZlcnMvZ3B1L2RybS9l dG5hdml2LwogRjoJaW5jbHVkZS91YXBpL2RybS9ldG5hdml2X2RybS5oCiBGOglEb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9ldG5hdml2LwogCitEUk0gRFJJVkVSUyBG T1IgWElMSU5YCitNOglIeXVuIEt3b24gPGh5dW4ua3dvbkB4aWxpbnguY29tPgorTToJTGF1cmVu dCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgorTDoJZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncHUv ZHJtL3hsbngvCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS94 bG54LworVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYwor CiBEUk0gRFJJVkVSUyBGT1IgWlRFIFpYCiBNOglTaGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5v cmc+CiBMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4IDEwZjlm MDEuLmFkNjg5MWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0zMDQsNiArMzA0LDggQEAgc291cmNlICJkcml2ZXJz L2dwdS9kcm0vdHZlMjAwL0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3hlbi9L Y29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS94bG54L0tjb25maWciCisKICMgS2Vl cCBsZWdhY3kgZHJpdmVycyBsYXN0CiAKIG1lbnVjb25maWcgRFJNX0xFR0FDWQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmlu ZGV4IDZhZTUzNWMuLmY2NjcyYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTEwNiwzICsxMDYsNCBAQCBvYmot JChDT05GSUdfRFJNX1RJTllEUk0pICs9IHRpbnlkcm0vCiBvYmotJChDT05GSUdfRFJNX1BMMTEx KSArPSBwbDExMS8KIG9iai0kKENPTkZJR19EUk1fVFZFMjAwKSArPSB0dmUyMDAvCiBvYmotJChD T05GSUdfRFJNX1hFTikgKz0geGVuLworb2JqLSQoQ09ORklHX0RSTV9YTE5YKQkrPSB4bG54Lwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hsbngvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2Ry bS94bG54L0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZDdj ZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L0tjb25maWcKQEAgLTAs MCArMSwxMiBAQAorY29uZmlnIERSTV9YTE5YCisJdHJpc3RhdGUgIlhpbGlueCBEUk0gS01TIERy aXZlciIKKwlkZXBlbmRzIG9uIERSTSAmJiBPRgorCXNlbGVjdCBEUk1fS01TX0hFTFBFUgorCXNl bGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKKwlzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVSCisJaGVs cAorCSAgWGlsaW54IERSTSBLTVMgZHJpdmVyLiBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhh dmUKKwkgIGEgWGlsaW54IFNvQ3Mgd2l0aCBoYXJkZW5lZCBkaXNwbGF5IHBpcGVsaW5lIG9yIHNv ZnQKKwkgIGRpc3BsYXkgcGlwZWxpbmUgdXNpbmcgWGlsaW54IElQcyBpbiBGUEdBLiBUaGlzIG1v ZHVsZQorCSAgcHJvdmlkZXMgdGhlIGtlcm5lbCBtb2RlIHNldHRpbmcgZnVuY3Rpb25hbGl0aWVz CisJICBmb3IgWGlsaW54IGRpc3BsYXkgZHJpdmVycy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94bG54L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3hsbngvTWFrZWZpbGUKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYwYTI4MQotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS94bG54L01ha2VmaWxlCkBAIC0wLDAgKzEsMiBAQAoreGxueF9kcm0t b2JqcyArPSB4bG54X2NydGMubyB4bG54X2Rydi5vIHhsbnhfZmIubyB4bG54X2dlbS5vCitvYmot JChDT05GSUdfRFJNX1hMTlgpICs9IHhsbnhfZHJtLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94bG54L3hsbnhfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9jcnRjLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmMWQ3MAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfY3J0Yy5jCkBAIC0wLDAgKzEsMTQyIEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIFhpbGlueCBEUk0g Y3J0YyBkcml2ZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOCBYaWxpbngsIElu Yy4KKyAqCisgKiAgQXV0aG9yOiBIeXVuIFdvbyBLd29uIDxoeXVuLmt3b25AeGlsaW54LmNvbT4K KyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKworI2luY2x1ZGUgInhsbnhfY3J0Yy5oIgor I2luY2x1ZGUgInhsbnhfZHJ2LmgiCisKKy8qCisgKiBPdmVydmlldworICogLS0tLS0tLS0KKyAq CisgKiBUaGUgWGlsaW54IENSVEMgbGF5ZXIgaXMgdG8gZW5hYmxlIHRoZSBjdXN0b20gaW50ZXJm YWNlIHRvIENSVEMgZHJpdmVycy4KKyAqIFRoZSBpbnRlcmZhY2UgaXMgdXNlZCBieSBYaWxpbngg RFJNIGRyaXZlciB3aGVyZSBpdCBuZWVkcyBDUlRDCisgKiBmdW5jdGlvbmFsaXR5LiBDUlRDIGRy aXZlcnMgc2hvdWxkIGF0dGFjaCB0aGUgZGVzaXJlZCBjYWxsYmFja3MKKyAqIHRvIHN0cnVjdCB4 bG54X2NydGMgYW5kIHJlZ2lzdGVyIHRoZSB4bG54X2NydGMgd2l0aCBjb3JyZXNwb25kaW5nCisg KiBkcm1fZGV2aWNlLiBJdCdzIGhpZ2hseSByZWNvbW1lbmRlZCBDUlRDIGRyaXZlcnMgcmVnaXN0 ZXIgYWxsIGNhbGxiYWNrcworICogZXZlbiB0aG91Z2ggbWFueSBvZiB0aGVtIGFyZSBvcHRpb25h bC4KKyAqIFRoZSBDUlRDIGhlbHBlciBzaW1wbHkgd2Fsa3MgdGhyb3VnaCB0aGUgcmVnaXN0ZXJl ZCBDUlRDIGRldmljZSwKKyAqIGFuZCBjYWxscyB0aGUgY2FsbGJhY2tzLgorICovCisKK3Vuc2ln bmVkIGludCB4bG54X2NydGNfaGVscGVyX2dldF9hbGlnbihzdHJ1Y3QgeGxueF9jcnRjX2hlbHBl ciAqaGVscGVyKQoreworCXN0cnVjdCB4bG54X2NydGMgKmNydGM7CisJdW5zaWduZWQgaW50IGFs aWduID0gMTsKKworCW11dGV4X2xvY2soJmhlbHBlci0+bG9jayk7CisJbGlzdF9mb3JfZWFjaF9l bnRyeShjcnRjLCAmaGVscGVyLT54bG54X2NydGNzLCBsaXN0KSB7CisJCWlmIChjcnRjLT5vcHMt PmdldF9hbGlnbikKKwkJCWFsaWduID0gQUxJR04oYWxpZ24sIGNydGMtPm9wcy0+Z2V0X2FsaWdu KGNydGMpKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZoZWxwZXItPmxvY2spOworCisJcmV0dXJuIGFs aWduOworfQorCit1NjQgeGxueF9jcnRjX2hlbHBlcl9nZXRfZG1hX21hc2soc3RydWN0IHhsbnhf Y3J0Y19oZWxwZXIgKmhlbHBlcikKK3sKKwlzdHJ1Y3QgeGxueF9jcnRjICpjcnRjOworCXU2NCBt YXNrID0gRE1BX0JJVF9NQVNLKHNpemVvZihkbWFfYWRkcl90KSAqIDgpOworCisJbXV0ZXhfbG9j aygmaGVscGVyLT5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZoZWxwZXItPnhs bnhfY3J0Y3MsIGxpc3QpIHsKKwkJaWYgKGNydGMtPm9wcy0+Z2V0X2RtYV9tYXNrKQorCQkJbWFz ayAmPSBjcnRjLT5vcHMtPmdldF9kbWFfbWFzayhjcnRjKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZo ZWxwZXItPmxvY2spOworCisJcmV0dXJuIG1hc2s7Cit9CisKK2ludCB4bG54X2NydGNfaGVscGVy X2dldF9tYXhfd2lkdGgoc3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgKmhlbHBlcikKK3sKKwlzdHJ1 Y3QgeGxueF9jcnRjICpjcnRjOworCWludCB3aWR0aCA9IFMzMl9NQVg7CisKKwltdXRleF9sb2Nr KCZoZWxwZXItPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmhlbHBlci0+eGxu eF9jcnRjcywgbGlzdCkgeworCQlpZiAoY3J0Yy0+b3BzLT5nZXRfbWF4X3dpZHRoKQorCQkJd2lk dGggPSBtaW4od2lkdGgsIGNydGMtPm9wcy0+Z2V0X21heF93aWR0aChjcnRjKSk7CisJfQorCW11 dGV4X3VubG9jaygmaGVscGVyLT5sb2NrKTsKKworCXJldHVybiB3aWR0aDsKK30KKworaW50IHhs bnhfY3J0Y19oZWxwZXJfZ2V0X21heF9oZWlnaHQoc3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgKmhl bHBlcikKK3sKKwlzdHJ1Y3QgeGxueF9jcnRjICpjcnRjOworCWludCBoZWlnaHQgPSBTMzJfTUFY OworCisJbXV0ZXhfbG9jaygmaGVscGVyLT5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNy dGMsICZoZWxwZXItPnhsbnhfY3J0Y3MsIGxpc3QpIHsKKwkJaWYgKGNydGMtPm9wcy0+Z2V0X21h eF9oZWlnaHQpCisJCQloZWlnaHQgPSBtaW4oaGVpZ2h0LCBjcnRjLT5vcHMtPmdldF9tYXhfaGVp Z2h0KGNydGMpKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZoZWxwZXItPmxvY2spOworCisJcmV0dXJu IGhlaWdodDsKK30KKwordTMyIHhsbnhfY3J0Y19oZWxwZXJfZ2V0X2Zvcm1hdChzdHJ1Y3QgeGxu eF9jcnRjX2hlbHBlciAqaGVscGVyKQoreworCXN0cnVjdCB4bG54X2NydGMgKmNydGM7CisJdTMy IHJlc3VsdCA9IDAsIGZvcm1hdDsKKworCW11dGV4X2xvY2soJmhlbHBlci0+bG9jayk7CisJbGlz dF9mb3JfZWFjaF9lbnRyeShjcnRjLCAmaGVscGVyLT54bG54X2NydGNzLCBsaXN0KSB7CisJCWlm IChjcnRjLT5vcHMtPmdldF9mb3JtYXQpIHsKKwkJCWZvcm1hdCA9IGNydGMtPm9wcy0+Z2V0X2Zv cm1hdChjcnRjKTsKKwkJCWlmIChyZXN1bHQgJiYgcmVzdWx0ICE9IGZvcm1hdCkgeworCQkJCW11 dGV4X3VubG9jaygmaGVscGVyLT5sb2NrKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCXJlc3Vs dCA9IGZvcm1hdDsKKwkJfQorCX0KKwltdXRleF91bmxvY2soJmhlbHBlci0+bG9jayk7CisKKwly ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHhsbnhfY3J0Y19oZWxwZXJfaW5pdChzdHJ1Y3QgeGxu eF9jcnRjX2hlbHBlciAqaGVscGVyKQoreworCUlOSVRfTElTVF9IRUFEKCZoZWxwZXItPnhsbnhf Y3J0Y3MpOworCW11dGV4X2luaXQoJmhlbHBlci0+bG9jayk7Cit9CisKK3ZvaWQgeGxueF9jcnRj X2hlbHBlcl9maW5pKHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIpCit7CisJaWYgKFdB Uk5fT04oIWxpc3RfZW1wdHkoJmhlbHBlci0+eGxueF9jcnRjcykpKQorCQlyZXR1cm47CisKKwlt dXRleF9kZXN0cm95KCZoZWxwZXItPmxvY2spOworfQorCit2b2lkIHhsbnhfY3J0Y19yZWdpc3Rl cihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgeGxueF9jcnRjICpjcnRjKQoreworCXN0 cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIgPSB4bG54X2dldF9jcnRjX2hlbHBlcihkcm0p OworCisJbXV0ZXhfbG9jaygmaGVscGVyLT5sb2NrKTsKKwlsaXN0X2FkZF90YWlsKCZjcnRjLT5s aXN0LCAmaGVscGVyLT54bG54X2NydGNzKTsKKwltdXRleF91bmxvY2soJmhlbHBlci0+bG9jayk7 Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh4bG54X2NydGNfcmVnaXN0ZXIpOworCit2b2lkIHhsbnhf Y3J0Y191bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCB4bG54X2NydGMg KmNydGMpCit7CisJc3RydWN0IHhsbnhfY3J0Y19oZWxwZXIgKmhlbHBlciA9IHhsbnhfZ2V0X2Ny dGNfaGVscGVyKGRybSk7CisKKwltdXRleF9sb2NrKCZoZWxwZXItPmxvY2spOworCWxpc3RfZGVs KCZjcnRjLT5saXN0KTsKKwltdXRleF91bmxvY2soJmhlbHBlci0+bG9jayk7Cit9CitFWFBPUlRf U1lNQk9MX0dQTCh4bG54X2NydGNfdW5yZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0veGxueC94bG54X2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfY3J0Yy5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YjVmNTkKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2NydGMuaApAQCAtMCwwICsxLDgzIEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIFhpbGlueCBEUk0g Y3J0YyBoZWFkZXIKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOCBYaWxpbngsIElu Yy4KKyAqCisgKiAgQXV0aG9yOiBIeXVuIFdvbyBLd29uIDxoeXVuLmt3b25AeGlsaW54LmNvbT4K KyAqLworCisjaWZuZGVmIF9YTE5YX0NSVENfSF8KKyNkZWZpbmUgX1hMTlhfQ1JUQ19IXworCisj aW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1 ZGUgPGxpbnV4L211dGV4Lmg+CisKK3N0cnVjdCBkcm1fZGV2aWNlOworc3RydWN0IHhsbnhfY3J0 YzsKKworLyoqCisgKiBzdHJ1Y3QgeGxueF9jcnRjX29wcyAtIFhpbGlueCBDUlRDIG9wZXJhdGlv bnMKKyAqIEBnZXRfYWxpZ246IEdldCB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50IG9mIENSVEMg ZGV2aWNlCisgKiBAZ2V0X2RtYV9tYXNrOiBHZXQgdGhlIGRtYSBtYXNrIG9mIENSVEMgZGV2aWNl CisgKiBAZ2V0X21heF93aWR0aDogR2V0IHRoZSBtYXhpbXVtIHN1cHBvcnRlZCB3aWR0aAorICog QGdldF9tYXhfaGVpZ2h0OiBHZXQgdGhlIG1heGltdW0gc3VwcG9ydGVkIGhlaWdodAorICogQGdl dF9mb3JtYXQ6IEdldCB0aGUgY3VycmVudCBmb3JtYXQgb2YgQ1JUQyBkZXZpY2UKKyAqLworc3Ry dWN0IHhsbnhfY3J0Y19vcHMgeworCXVuc2lnbmVkIGludCAoKmdldF9hbGlnbikoc3RydWN0IHhs bnhfY3J0YyAqY3J0Yyk7CisJdTY0ICgqZ2V0X2RtYV9tYXNrKShzdHJ1Y3QgeGxueF9jcnRjICpj cnRjKTsKKwlpbnQgKCpnZXRfbWF4X3dpZHRoKShzdHJ1Y3QgeGxueF9jcnRjICpjcnRjKTsKKwlp bnQgKCpnZXRfbWF4X2hlaWdodCkoc3RydWN0IHhsbnhfY3J0YyAqY3J0Yyk7CisJdTMyICgqZ2V0 X2Zvcm1hdCkoc3RydWN0IHhsbnhfY3J0YyAqY3J0Yyk7Cit9OworCisvKioKKyAqIHN0cnVjdCB4 bG54X2NydGMgLSBYaWxpbnggQ1JUQyBkZXZpY2UKKyAqIEBjcnRjOiBEUk0gQ1JUQyBkZXZpY2UK KyAqIEBsaXN0OiBsaXN0IG5vZGUgZm9yIFhpbGlueCBDUlRDIGRldmljZSBsaXN0CisgKiBAb3Bz OiBYaWxpbnggQ1JUQyBvcHMKKyAqLworc3RydWN0IHhsbnhfY3J0YyB7CisJc3RydWN0IGRybV9j cnRjIGNydGM7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCWNvbnN0IHN0cnVjdCB4bG54X2Ny dGNfb3BzICpvcHM7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCB4bG54X2NydGMgKnRvX3hs bnhfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihj cnRjLCBzdHJ1Y3QgeGxueF9jcnRjLCBjcnRjKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlv bnM6IHVzZWQgd2l0aGluIFhsbnggRFJNCisgKi8KKworLyoqCisgKiBzdHJ1Y3QgeGxueF9jcnRj X2hlbHBlciAtIFhpbGlueCBDUlRDIGhlbHBlcgorICogQHhsbnhfY3J0Y3M6IGxpc3Qgb2YgWGls aW54IENSVEMgZGV2aWNlcworICogQGxvY2s6IGxvY2sgdG8gcHJvdGVjdCBAeGxueF9jcnRjcwor ICovCitzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciB7CisJc3RydWN0IGxpc3RfaGVhZCB4bG54X2Ny dGNzOworCXN0cnVjdCBtdXRleCBsb2NrOyAvKiBsb2NrIGZvciBAeGxueF9jcnRjcyAqLworfTsK KwordW5zaWduZWQgaW50IHhsbnhfY3J0Y19oZWxwZXJfZ2V0X2FsaWduKHN0cnVjdCB4bG54X2Ny dGNfaGVscGVyICpoZWxwZXIpOwordTY0IHhsbnhfY3J0Y19oZWxwZXJfZ2V0X2RtYV9tYXNrKHN0 cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIpOworaW50IHhsbnhfY3J0Y19oZWxwZXJfZ2V0 X21heF93aWR0aChzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqaGVscGVyKTsKK2ludCB4bG54X2Ny dGNfaGVscGVyX2dldF9tYXhfaGVpZ2h0KHN0cnVjdCB4bG54X2NydGNfaGVscGVyICpoZWxwZXIp OwordTMyIHhsbnhfY3J0Y19oZWxwZXJfZ2V0X2Zvcm1hdChzdHJ1Y3QgeGxueF9jcnRjX2hlbHBl ciAqaGVscGVyKTsKKwordm9pZCB4bG54X2NydGNfaGVscGVyX2luaXQoc3RydWN0IHhsbnhfY3J0 Y19oZWxwZXIgKmhlbHBlcik7Cit2b2lkIHhsbnhfY3J0Y19oZWxwZXJfZmluaShzdHJ1Y3QgeGxu eF9jcnRjX2hlbHBlciAqaGVscGVyKTsKKworLyoKKyAqIENSVEMgcmVnaXN0cmF0aW9uOiB1c2Vk IGJ5IG90aGVyIHN1Yi1kcml2ZXIgbW9kdWxlcworICovCisKK3ZvaWQgeGxueF9jcnRjX3JlZ2lz dGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCB4bG54X2NydGMgKmNydGMpOwordm9p ZCB4bG54X2NydGNfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgeGxu eF9jcnRjICpjcnRjKTsKKworI2VuZGlmIC8qIF9YTE5YX0NSVENfSF8gKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94 bG54X2Rydi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZDJkYzIKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Rydi5jCkBAIC0wLDAg KzEsNDMzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIFhp bGlueCBEUk0gS01TIERyaXZlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4IFhp bGlueCwgSW5jLgorICoKKyAqICBBdXRob3I6IEh5dW4gV29vIEt3b24gPGh5dW4ua3dvbkB4aWxp bnguY29tPgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cisj aW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fb2Yu aD4KKworI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2Rldmlj ZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgorCisjaW5jbHVkZSAieGxueF9jcnRjLmgi CisjaW5jbHVkZSAieGxueF9mYi5oIgorI2luY2x1ZGUgInhsbnhfZ2VtLmgiCisKKyNkZWZpbmUg RFJJVkVSX05BTUUJInhsbngiCisjZGVmaW5lIERSSVZFUl9ERVNDCSJYaWxpbnggRFJNIEtNUyBE cml2ZXIiCisjZGVmaW5lIERSSVZFUl9EQVRFCSIyMDEzMDUwOSIKKyNkZWZpbmUgRFJJVkVSX01B Sk9SCTEKKyNkZWZpbmUgRFJJVkVSX01JTk9SCTAKKworLyoqCisgKiBzdHJ1Y3QgeGxueF9kcm0g LSBYaWxpbnggRFJNIHByaXZhdGUgZGF0YQorICogQGRybTogRFJNIGRldmljZQorICogQGNydGNf aGVscGVyOiBIZWxwZXIgdG8gYWNjZXNzIFhpbGlueCBDUlRDcworICogQGZiOiBEUk0gZmIgaGVs cGVyCisgKiBAbWFzdGVyOiBsb2dpY2FsIG1hc3RlciBkZXZpY2UgZm9yIHBpcGVsaW5lCisgKiBA c3VzcGVuZF9zdGF0ZTogYXRvbWljIHN0YXRlIGZvciBzdXNwZW5kIC8gcmVzdW1lCisgKi8KK3N0 cnVjdCB4bG54X2RybSB7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKwlzdHJ1Y3QgeGxueF9j cnRjX2hlbHBlciBjcnRjX2hlbHBlcjsKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmI7CisJc3Ry dWN0IGRldmljZSAqbWFzdGVyOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdXNwZW5kX3N0 YXRlOworfTsKKworLyoqCisgKiB4bG54X2dldF9jcnRjX2hlbHBlciAtIFJldHVybiB0aGUgY3J0 YyBoZWxwZXIgaW5zdGFuY2UKKyAqIEBkcm06IERSTSBkZXZpY2UKKyAqCisgKiBSZXR1cm46IHRo ZSBjcnRjIGhlbHBlciBpbnN0YW5jZQorICovCitzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqeGxu eF9nZXRfY3J0Y19oZWxwZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3QgeGxu eF9kcm0gKnhsbnhfZHJtID0gZHJtLT5kZXZfcHJpdmF0ZTsKKworCXJldHVybiAmeGxueF9kcm0t PmNydGNfaGVscGVyOworfQorCisvKioKKyAqIHhsbnhfZ2V0X2FsaWduIC0gUmV0dXJuIHRoZSBh bGlnbiByZXF1aXJlbWVudCB0aHJvdWdoIENSVEMgaGVscGVyCisgKiBAZHJtOiBEUk0gZGV2aWNl CisgKgorICogUmV0dXJuOiB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50CisgKi8KK3Vuc2lnbmVk IGludCB4bG54X2dldF9hbGlnbihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQoreworCXN0cnVjdCB4 bG54X2RybSAqeGxueF9kcm0gPSBkcm0tPmRldl9wcml2YXRlOworCisJcmV0dXJuIHhsbnhfY3J0 Y19oZWxwZXJfZ2V0X2FsaWduKCZ4bG54X2RybS0+Y3J0Y19oZWxwZXIpOworfQorCitzdGF0aWMg dm9pZCB4bG54X291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sK KwlzdHJ1Y3QgeGxueF9kcm0gKnhsbnhfZHJtID0gZHJtLT5kZXZfcHJpdmF0ZTsKKworCWlmICh4 bG54X2RybS0+ZmIpCisJCWRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudCh4bG54X2RybS0+ZmIp OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyB4bG54X21v ZGVfY29uZmlnX2Z1bmNzID0geworCS5mYl9jcmVhdGUJCT0geGxueF9mYl9jcmVhdGUsCisJLm91 dHB1dF9wb2xsX2NoYW5nZWQJPSB4bG54X291dHB1dF9wb2xsX2NoYW5nZWQsCisJLmF0b21pY19j aGVjawkJPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwkuYXRvbWljX2NvbW1pdAkJPSBkcm1f YXRvbWljX2hlbHBlcl9jb21taXQsCit9OworCitzdGF0aWMgdm9pZCB4bG54X21vZGVfY29uZmln X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3QgeGxueF9kcm0gKnhsbnhf ZHJtID0gZHJtLT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgeGxueF9jcnRjX2hlbHBlciAqY3J0Y19o ZWxwZXIgPSAmeGxueF9kcm0tPmNydGNfaGVscGVyOworCisJZHJtLT5tb2RlX2NvbmZpZy5taW5f d2lkdGggPSAwOworCWRybS0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7CisJZHJtLT5tb2Rl X2NvbmZpZy5tYXhfd2lkdGggPQorCQl4bG54X2NydGNfaGVscGVyX2dldF9tYXhfd2lkdGgoY3J0 Y19oZWxwZXIpOworCWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9CisJCXhsbnhfY3J0Y19o ZWxwZXJfZ2V0X21heF9oZWlnaHQoY3J0Y19oZWxwZXIpOworfQorCitzdGF0aWMgdm9pZCB4bG54 X2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQoreworCXN0cnVjdCB4bG54X2RybSAq eGxueF9kcm0gPSBkcm0tPmRldl9wcml2YXRlOworCisJaWYgKHhsbnhfZHJtLT5mYikKKwkJZHJt X2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoeGxueF9kcm0tPmZiKTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgeGxueF9mb3BzID0geworCS5v d25lcgkJPSBUSElTX01PRFVMRSwKKwkub3BlbgkJPSBkcm1fb3BlbiwKKwkucmVsZWFzZQk9IGRy bV9yZWxlYXNlLAorCS51bmxvY2tlZF9pb2N0bAk9IGRybV9pb2N0bCwKKwkubW1hcAkJPSBkcm1f Z2VtX2NtYV9tbWFwLAorCS5wb2xsCQk9IGRybV9wb2xsLAorCS5yZWFkCQk9IGRybV9yZWFkLAor I2lmZGVmIENPTkZJR19DT01QQVQKKwkuY29tcGF0X2lvY3RsCT0gZHJtX2NvbXBhdF9pb2N0bCwK KyNlbmRpZgorCS5sbHNlZWsJCT0gbm9vcF9sbHNlZWssCit9OworCitzdGF0aWMgc3RydWN0IGRy bV9kcml2ZXIgeGxueF9kcm1fZHJpdmVyID0geworCS5kcml2ZXJfZmVhdHVyZXMJCT0gRFJJVkVS X01PREVTRVQgfCBEUklWRVJfR0VNIHwKKwkJCQkJICBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX1BS SU1FLAorCS5sYXN0Y2xvc2UJCQk9IHhsbnhfbGFzdGNsb3NlLAorCisJLnByaW1lX2hhbmRsZV90 b19mZAkJPSBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCwKKwkucHJpbWVfZmRfdG9faGFuZGxl CQk9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAorCS5nZW1fcHJpbWVfZXhwb3J0CQk9IGRy bV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJpbWVfaW1wb3J0CQk9IGRybV9nZW1fcHJpbWVf aW1wb3J0LAorCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlCQk9IGRybV9nZW1fY21hX3ByaW1lX2dl dF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZQk9IGRybV9nZW1fY21hX3By aW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX3ZtYXAJCQk9IGRybV9nZW1fY21hX3By aW1lX3ZtYXAsCisJLmdlbV9wcmltZV92dW5tYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfdnVubWFw LAorCS5nZW1fcHJpbWVfbW1hcAkJCT0gZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCwKKwkuZ2VtX2Zy ZWVfb2JqZWN0CQk9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LAorCS5nZW1fdm1fb3BzCQkJPSAm ZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5kdW1iX2NyZWF0ZQkJCT0geGxueF9nZW1fY21hX2R1bWJf Y3JlYXRlLAorCS5kdW1iX2Rlc3Ryb3kJCQk9IGRybV9nZW1fZHVtYl9kZXN0cm95LAorCisJLmZv cHMJCQkJPSAmeGxueF9mb3BzLAorCisJLm5hbWUJCQkJPSBEUklWRVJfTkFNRSwKKwkuZGVzYwkJ CQk9IERSSVZFUl9ERVNDLAorCS5kYXRlCQkJCT0gRFJJVkVSX0RBVEUsCisJLm1ham9yCQkJCT0g RFJJVkVSX01BSk9SLAorCS5taW5vcgkJCQk9IERSSVZFUl9NSU5PUiwKK307CisKK3N0YXRpYyBp bnQgeGxueF9iaW5kKHN0cnVjdCBkZXZpY2UgKm1hc3RlcikKK3sKKwlzdHJ1Y3QgeGxueF9kcm0g KnhsbnhfZHJtOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJY29uc3Qgc3RydWN0IGRybV9m b3JtYXRfaW5mbyAqaW5mbzsKKwlpbnQgcmV0OworCXUzMiBmb3JtYXQ7CisKKwlkcm0gPSBkcm1f ZGV2X2FsbG9jKCZ4bG54X2RybV9kcml2ZXIsIG1hc3Rlci0+cGFyZW50KTsKKwlpZiAoSVNfRVJS KGRybSkpCisJCXJldHVybiBQVFJfRVJSKGRybSk7CisKKwl4bG54X2RybSA9IGRldm1fa3phbGxv Yyhkcm0tPmRldiwgc2l6ZW9mKCp4bG54X2RybSksIEdGUF9LRVJORUwpOworCWlmICgheGxueF9k cm0pIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnJfZHJtOworCX0KKworCWRybV9tb2Rl X2NvbmZpZ19pbml0KGRybSk7CisJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZ4bG54X21vZGVf Y29uZmlnX2Z1bmNzOworCisJcmV0ID0gZHJtX3ZibGFua19pbml0KGRybSwgMSk7CisJaWYgKHJl dCkgeworCQlkZXZfZXJyKG1hc3Rlci0+cGFyZW50LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgdmJs YW5rXG4iKTsKKwkJZ290byBlcnJfeGxueF9kcm07CisJfQorCisJZHJtLT5pcnFfZW5hYmxlZCA9 IDE7CisJZHJtLT5kZXZfcHJpdmF0ZSA9IHhsbnhfZHJtOworCXhsbnhfZHJtLT5kcm0gPSBkcm07 CisJeGxueF9kcm0tPm1hc3RlciA9IG1hc3RlcjsKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQo ZHJtKTsKKwlkZXZfc2V0X2RydmRhdGEobWFzdGVyLCB4bG54X2RybSk7CisKKwl4bG54X2NydGNf aGVscGVyX2luaXQoJnhsbnhfZHJtLT5jcnRjX2hlbHBlcik7CisKKwlyZXQgPSBjb21wb25lbnRf YmluZF9hbGwobWFzdGVyLCBkcm0pOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2NydGM7CisKKwl4 bG54X21vZGVfY29uZmlnX2luaXQoZHJtKTsKKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsK KwlkbWFfc2V0X21hc2soZHJtLT5kZXYsCisJCSAgICAgeGxueF9jcnRjX2hlbHBlcl9nZXRfZG1h X21hc2soJnhsbnhfZHJtLT5jcnRjX2hlbHBlcikpOworCisJZm9ybWF0ID0geGxueF9jcnRjX2hl bHBlcl9nZXRfZm9ybWF0KCZ4bG54X2RybS0+Y3J0Y19oZWxwZXIpOworCWluZm8gPSBkcm1fZm9y bWF0X2luZm8oZm9ybWF0KTsKKwlpZiAoaW5mbyAmJiBpbmZvLT5kZXB0aCAmJiBpbmZvLT5jcHBb MF0pIHsKKwkJdW5zaWduZWQgaW50IGFsaWduOworCisJCWFsaWduID0geGxueF9jcnRjX2hlbHBl cl9nZXRfYWxpZ24oJnhsbnhfZHJtLT5jcnRjX2hlbHBlcik7CisJCXhsbnhfZHJtLT5mYiA9IHhs bnhfZmJfaW5pdChkcm0sIGluZm8tPmNwcFswXSAqIDgsIDEsIGFsaWduKTsKKwkJaWYgKElTX0VS Uih4bG54X2RybS0+ZmIpKSB7CisJCQlkZXZfZXJyKG1hc3Rlci0+cGFyZW50LAorCQkJCSJmYWls ZWQgdG8gaW5pdGlhbGl6ZSBkcm0gZmJcbiIpOworCQkJeGxueF9kcm0tPmZiID0gTlVMTDsKKwkJ fQorCX0gZWxzZSB7CisJCS8qIGZiZGV2IGVtdWxhdGlvbiBpcyBvcHRpb25hbCAqLworCQlkZXZf aW5mbyhtYXN0ZXItPnBhcmVudCwgImZiZGV2IGlzIG5vdCBpbml0aWFsaXplZFxuIik7CisJfQor CisJcmV0ID0gZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOworCWlmIChyZXQgPCAwKQorCQlnb3Rv IGVycl9mYjsKKworCXJldHVybiAwOworCitlcnJfZmI6CisJaWYgKHhsbnhfZHJtLT5mYikKKwkJ eGxueF9mYl9maW5pKHhsbnhfZHJtLT5mYik7CisJY29tcG9uZW50X3VuYmluZF9hbGwoZHJtLT5k ZXYsIGRybSk7CitlcnJfY3J0YzoKKwl4bG54X2NydGNfaGVscGVyX2ZpbmkoJnhsbnhfZHJtLT5j cnRjX2hlbHBlcik7CitlcnJfeGxueF9kcm06CisJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJt KTsKK2Vycl9kcm06CisJZHJtX2Rldl91bnJlZihkcm0pOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyB2b2lkIHhsbnhfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKm1hc3RlcikKK3sKKwlzdHJ1Y3Qg eGxueF9kcm0gKnhsbnhfZHJtID0gZGV2X2dldF9kcnZkYXRhKG1hc3Rlcik7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRybSA9IHhsbnhfZHJtLT5kcm07CisKKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJt KTsKKwlpZiAoeGxueF9kcm0tPmZiKQorCQl4bG54X2ZiX2ZpbmkoeGxueF9kcm0tPmZiKTsKKwlj b21wb25lbnRfdW5iaW5kX2FsbChtYXN0ZXIsIGRybSk7CisJeGxueF9jcnRjX2hlbHBlcl9maW5p KCZ4bG54X2RybS0+Y3J0Y19oZWxwZXIpOworCWRybV9rbXNfaGVscGVyX3BvbGxfZmluaShkcm0p OworCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7CisJZHJtX2Rldl91bnJlZihkcm0pOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9tYXN0ZXJfb3BzIHhsbnhfbWFzdGVy X29wcyA9IHsKKwkuYmluZAk9IHhsbnhfYmluZCwKKwkudW5iaW5kCT0geGxueF91bmJpbmQsCit9 OworCitzdGF0aWMgaW50IHhsbnhfY29tcGFyZV9vZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEpCit7CisJcmV0dXJuIGRldi0+b2Zfbm9kZSA9PSBkYXRhOworfQorCitzdGF0aWMgaW50 IHhsbnhfcHJvYmUoc3RydWN0IGRldmljZSAqbWFzdGVyX2RldikKK3sKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSBtYXN0ZXJfZGV2LT5wYXJlbnQ7CisJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0 Y2ggPSBOVUxMOworCisJaWYgKCFkZXYtPm9mX25vZGUpCisJCXJldHVybiAtRUlOVkFMOworCisJ Y29tcG9uZW50X21hdGNoX2FkZChtYXN0ZXJfZGV2LCAmbWF0Y2gsIHhsbnhfY29tcGFyZV9vZiwg ZGV2LT5vZl9ub2RlKTsKKworCXJldHVybiBjb21wb25lbnRfbWFzdGVyX2FkZF93aXRoX21hdGNo KG1hc3Rlcl9kZXYsICZ4bG54X21hc3Rlcl9vcHMsCisJCQkJCSAgICAgICBtYXRjaCk7Cit9CisK K3N0YXRpYyBpbnQgeGxueF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQoreworCWNvbXBvbmVu dF9tYXN0ZXJfZGVsKGRldiwgJnhsbnhfbWFzdGVyX29wcyk7CisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIHhsbnhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KQoreworCWNvbXBvbmVu dF9tYXN0ZXJfZGVsKGRldiwgJnhsbnhfbWFzdGVyX29wcyk7Cit9CisKK3N0YXRpYyBpbnQgX19t YXliZV91bnVzZWQgeGxueF9wbV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3QgeGxueF9kcm0gKnhsbnhfZHJtID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRybSA9IHhsbnhfZHJtLT5kcm07CisKKwlkcm1fa21zX2hlbHBlcl9wb2xsX2Rp c2FibGUoZHJtKTsKKworCXhsbnhfZHJtLT5zdXNwZW5kX3N0YXRlID0gZHJtX2F0b21pY19oZWxw ZXJfc3VzcGVuZChkcm0pOworCWlmIChJU19FUlIoeGxueF9kcm0tPnN1c3BlbmRfc3RhdGUpKSB7 CisJCWRybV9rbXNfaGVscGVyX3BvbGxfZW5hYmxlKGRybSk7CisJCXJldHVybiBQVFJfRVJSKHhs bnhfZHJtLT5zdXNwZW5kX3N0YXRlKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBfX21heWJlX3VudXNlZCB4bG54X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IHhsbnhfZHJtICp4bG54X2RybSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVj dCBkcm1fZGV2aWNlICpkcm0gPSB4bG54X2RybS0+ZHJtOworCisJZHJtX2F0b21pY19oZWxwZXJf cmVzdW1lKGRybSwgeGxueF9kcm0tPnN1c3BlbmRfc3RhdGUpOworCWRybV9rbXNfaGVscGVyX3Bv bGxfZW5hYmxlKGRybSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBk ZXZfcG1fb3BzIHhsbnhfcG1fb3BzID0geworCVNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKHhsbnhf cG1fc3VzcGVuZCwgeGxueF9wbV9yZXN1bWUpCit9OworCitzdGF0aWMgaW50IHhsbnhfZHJ2X2J1 c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpCit7 CisJcmV0dXJuICFzdHJuY21wKGRldl9uYW1lKGRldiksIGRydi0+bmFtZSwgc3RybGVuKGRydi0+ bmFtZSkpOworfQorCitzdHJ1Y3QgYnVzX3R5cGUgeGxueF9kcml2ZXJfYnVzX3R5cGUgPSB7CisJ Lm5hbWUgICA9ICJ4bG54LWRybS1idXMiLAorCS5tYXRjaCAgPSAmeGxueF9kcnZfYnVzX21hdGNo LAorfTsKKworc3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIHhsbnhfZHJpdmVyID0geworCS5w cm9iZQkJPSB4bG54X3Byb2JlLAorCS5yZW1vdmUJCT0geGxueF9yZW1vdmUsCisJLnNodXRkb3du CT0geGxueF9zaHV0ZG93biwKKwkubmFtZQkJPSAieGxueC1kcm0iLAorCS5wbQkJPSAmeGxueF9w bV9vcHMsCisJLmJ1cwkJPSAmeGxueF9kcml2ZXJfYnVzX3R5cGUsCisJLm93bmVyCQk9IFRISVNf TU9EVUxFLAorfTsKKworLyogYml0bWFwIGZvciBtYXN0ZXIgaWQgKi8KK3N0YXRpYyB1MzIgeGxu eF9tYXN0ZXJfaWRzID0gR0VOTUFTSygzMSwgMCk7CisKK3N0YXRpYyB2b2lkIHhsbnhfbWFzdGVy X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQoreworCWtmcmVlKGRldik7Cit9CisKKy8qKgor ICogeGxueF9kcm1fcGlwZWxpbmVfaW5pdCAtIEluaXRpYWxpemUgdGhlIGRybSBwaXBlbGluZSBm b3IgdGhlIGRldmljZQorICogQGRldjogVGhlIGRldmljZSB0byBpbml0aWFsaXplIHRoZSBkcm0g cGlwZWxpbmUgZGV2aWNlCisgKgorICogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgZHJt IHBpcGVsaW5lIGRldmljZSwgc3RydWN0IGRybV9kZXZpY2UsCisgKiBvbiBAZGV2IGJ5IGNyZWF0 aW5nIGEgbG9naWNhbCBtYXN0ZXIgZGV2aWNlLiBUaGUgbG9naWNhbCBkZXZpY2UgYWN0cworICog YXMgYSBtYXN0ZXIgZGV2aWNlIHRvIGJpbmQgc2xhdmUgZGV2aWNlcyBhbmQgcmVwcmVzZW50cyB0 aGUgZW50aXJlCisgKiBwaXBlbGluZS4KKyAqIFRoZSBsb2dpY2FsIG1hc3RlciB1c2VzIHRoZSBw b3J0IGJpbmRpbmdzIG9mIHRoZSBjYWxsaW5nIGRldmljZSB0bworICogZmlndXJlIG91dCB0aGUg cGlwZWxpbmUgdG9wb2xvZ3kuCisgKgorICogUmV0dXJuOiB0aGUgbG9naWNhbCBtYXN0ZXIgZGV2 aWNlIGlmIHRoZSBkcm0gZGV2aWNlIGlzIGluaXRpYWxpemVkCisgKiBvbiBAZGV2LiBFcnJvciBj b2RlIG90aGVyd2lzZS4KKyAqLworc3RydWN0IGRldmljZSAqeGxueF9kcm1fcGlwZWxpbmVfaW5p dChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRldmljZSAqbWFzdGVyOworCWludCBp ZCwgcmV0OworCisJaWQgPSBmZnMoeGxueF9tYXN0ZXJfaWRzKTsKKwlpZiAoIWlkKQorCQlyZXR1 cm4gRVJSX1BUUigtRU5PU1BDKTsKKworCW1hc3RlciA9IGt6YWxsb2Moc2l6ZW9mKCptYXN0ZXIp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIW1hc3RlcikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CisJZGV2aWNlX2luaXRpYWxpemUobWFzdGVyKTsKKwltYXN0ZXItPnBhcmVudCA9IGRldjsKKwlt YXN0ZXItPmJ1cyA9ICZ4bG54X2RyaXZlcl9idXNfdHlwZTsKKwltYXN0ZXItPnJlbGVhc2UgPSB4 bG54X21hc3Rlcl9yZWxlYXNlOworCisJcmV0ID0gZGV2X3NldF9uYW1lKG1hc3RlciwgInhsbngt ZHJtLiVkIiwgaWQpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2tmcmVlOworCisJcmV0ID0gZGV2 aWNlX2FkZChtYXN0ZXIpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2tmcmVlOworCisJeGxueF9t YXN0ZXJfaWRzICY9IH5CSVQobWFzdGVyLT5pZCk7CisJcmV0dXJuIG1hc3RlcjsKKworZXJyX2tm cmVlOgorCWtmcmVlKG1hc3Rlcik7CisJcmV0dXJuIEVSUl9QVFIocmV0KTsKK30KK0VYUE9SVF9T WU1CT0xfR1BMKHhsbnhfZHJtX3BpcGVsaW5lX2luaXQpOworCisvKioKKyAqIHhsbnhfZHJtX3Bp cGVsaW5lX2V4aXQgLSBSZWxlYXNlIHRoZSBkcm0gcGlwZWxpbmUgZm9yIHRoZSBkZXZpY2UKKyAq IEBtYXN0ZXI6IFRoZSBtYXN0ZXIgcGlwZWxpbmUgZGV2aWNlIHRvIHJlbGVhc2UKKyAqCisgKiBS ZWxlYXNlIHRoZSBsb2dpY2FsIHBpcGVsaW5lIGRldmljZSByZXR1cm5lZCBieSB4bG54X2RybV9w aXBlbGluZV9pbml0KCkuCisgKi8KK3ZvaWQgeGxueF9kcm1fcGlwZWxpbmVfZXhpdChzdHJ1Y3Qg ZGV2aWNlICptYXN0ZXIpCit7CisJeGxueF9tYXN0ZXJfaWRzIHw9IEJJVChtYXN0ZXItPmlkKTsK KwlkZXZpY2VfdW5yZWdpc3RlcihtYXN0ZXIpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoeGxueF9k cm1fcGlwZWxpbmVfZXhpdCk7CisKK3N0YXRpYyBpbnQgX19pbml0IHhsbnhfZHJtX2Rydl9pbml0 KHZvaWQpCit7CisJaW50IHJldDsKKworCXJldCA9IGJ1c19yZWdpc3RlcigmeGxueF9kcml2ZXJf YnVzX3R5cGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBkcml2ZXJfcmVn aXN0ZXIoJnhsbnhfZHJpdmVyKTsKKwlpZiAocmV0KSB7CisJCWJ1c191bnJlZ2lzdGVyKCZ4bG54 X2RyaXZlcl9idXNfdHlwZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIF9fZXhpdCB4bG54X2RybV9kcnZfZXhpdCh2b2lkKQoreworCWJ1c191bnJl Z2lzdGVyKCZ4bG54X2RyaXZlcl9idXNfdHlwZSk7CisJZHJpdmVyX3VucmVnaXN0ZXIoJnhsbnhf ZHJpdmVyKTsKK30KKworbW9kdWxlX2luaXQoeGxueF9kcm1fZHJ2X2luaXQpOworbW9kdWxlX2V4 aXQoeGxueF9kcm1fZHJ2X2V4aXQpOworCitNT0RVTEVfQVVUSE9SKCJYaWxpbngsIEluYy4iKTsK K01PRFVMRV9ERVNDUklQVElPTigiWGlsaW54IERSTSBLTVMgRHJpdmVyIik7CitNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9kcnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5iMzhmZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3hsbngveGxueF9kcnYuaApAQCAtMCwwICsxLDIzIEBACisvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAorLyoKKyAqIFhpbGlueCBEUk0gS01TIEhlYWRlciBmb3IgWGlsaW54 CisgKgorICogIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTggWGlsaW54LCBJbmMuCisgKgorICog IEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bmtAeGlsaW54LmNvbT4KKyAqLworCisjaWZuZGVm IF9YTE5YX0RSVl9IXworI2RlZmluZSBfWExOWF9EUlZfSF8KKworc3RydWN0IGRldmljZTsKK3N0 cnVjdCBkcm1fZGV2aWNlOworc3RydWN0IHhsbnhfY3J0Y19oZWxwZXI7CisKK3N0cnVjdCBkZXZp Y2UgKnhsbnhfZHJtX3BpcGVsaW5lX2luaXQoc3RydWN0IGRldmljZSAqcGFyZW50KTsKK3ZvaWQg eGxueF9kcm1fcGlwZWxpbmVfZXhpdChzdHJ1Y3QgZGV2aWNlICpwaXBlbGluZSk7CisKK3Vuc2ln bmVkIGludCB4bG54X2dldF9hbGlnbihzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKK3N0cnVjdCB4 bG54X2NydGNfaGVscGVyICp4bG54X2dldF9jcnRjX2hlbHBlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtKTsKKworI2VuZGlmIC8qIF9YTE5YX0RSVl9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hsbngveGxueF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9mYi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlOGFiMTQKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2ZiLmMKQEAgLTAsMCArMSwyNDkgQEAKKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogWGlsaW54IERSTSBLTVMg RnJhbWVidWZmZXIgaGVscGVyCisgKgorICogIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTggWGls aW54LCBJbmMuCisgKgorICogIEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bi5rd29uQHhpbGlu eC5jb20+CisgKgorICogQmFzZWQgb24gZHJtX2ZiX2NtYV9oZWxwZXIuYworICoKKyAqICBDb3B5 cmlnaHQgKEMpIDIwMTIgQW5hbG9nIERldmljZSBJbmMuCisgKi8KKworI2luY2x1ZGUgPGRybS9k cm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRj X2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9nZW1fY21hX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVy X2hlbHBlci5oPgorCisjaW5jbHVkZSAieGxueF9kcnYuaCIKKyNpbmNsdWRlICJ4bG54X2ZiLmgi CisKKyNkZWZpbmUgWExOWF9NQVhfUExBTkVTCTQKKworc3RydWN0IHhsbnhfZmJkZXYgeworCXN0 cnVjdCBkcm1fZmJfaGVscGVyIGZiX2hlbHBlcjsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YjsKKwl1bnNpZ25lZCBpbnQgYWxpZ247Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCB4bG54 X2ZiZGV2ICp0b19mYmRldihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQoreworCXJl dHVybiBjb250YWluZXJfb2YoZmJfaGVscGVyLCBzdHJ1Y3QgeGxueF9mYmRldiwgZmJfaGVscGVy KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgeGxueF9m Yl9mdW5jcyA9IHsKKwkuZGVzdHJveQk9IGRybV9nZW1fZmJfZGVzdHJveSwKKwkuY3JlYXRlX2hh bmRsZQk9IGRybV9nZW1fZmJfY3JlYXRlX2hhbmRsZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmJf b3BzIHhsbnhfZmJkZXZfb3BzID0geworCS5vd25lcgkJPSBUSElTX01PRFVMRSwKKwkuZmJfZmls bHJlY3QJPSBzeXNfZmlsbHJlY3QsCisJLmZiX2NvcHlhcmVhCT0gc3lzX2NvcHlhcmVhLAorCS5m Yl9pbWFnZWJsaXQJPSBzeXNfaW1hZ2VibGl0LAorCURSTV9GQl9IRUxQRVJfREVGQVVMVF9PUFMs Cit9OworCisvKioKKyAqIHhsbnhfZmJkZXZfY3JlYXRlIC0gQ3JlYXRlIHRoZSBmYmRldiB3aXRo IGEgZnJhbWVidWZmZXIKKyAqIEBmYl9oZWxwZXI6IGZiIGhlbHBlciBzdHJ1Y3R1cmUKKyAqIEBz aXplOiBmcmFtZWJ1ZmZlciBzaXplIGluZm8KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2Vk IG9uIGRybV9mYmRldl9jbWFfY3JlYXRlKCkuCisgKgorICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3Nm dWwsIG9yIHRoZSBlcnJvciBjb2RlLgorICovCitzdGF0aWMgaW50IHhsbnhfZmJkZXZfY3JlYXRl KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCisJCQkgICAgIHN0cnVjdCBkcm1fZmJf aGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZSkKK3sKKwlzdHJ1Y3QgeGxueF9mYmRldiAqZmJkZXYg PSB0b19mYmRldihmYl9oZWxwZXIpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBmYl9oZWxw ZXItPmRldjsKKwlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpvYmo7CisJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmI7CisJdW5zaWduZWQgaW50IGJ5dGVzX3Blcl9waXhlbDsKKwl1bnNpZ25l ZCBsb25nIG9mZnNldDsKKwlzdHJ1Y3QgZmJfaW5mbyAqZmJpOworCXNpemVfdCBieXRlczsKKwlp bnQgcmV0OworCisJZGV2X2RiZyhkcm0tPmRldiwgInN1cmZhY2Ugd2lkdGgoJWQpLCBoZWlnaHQo JWQpIGFuZCBicHAoJWQpXG4iLAorCQlzaXplLT5zdXJmYWNlX3dpZHRoLCBzaXplLT5zdXJmYWNl X2hlaWdodCwgc2l6ZS0+c3VyZmFjZV9icHApOworCisJYnl0ZXNfcGVyX3BpeGVsID0gRElWX1JP VU5EX1VQKHNpemUtPnN1cmZhY2VfYnBwLCA4KTsKKwlieXRlcyA9IEFMSUdOKHNpemUtPnN1cmZh Y2Vfd2lkdGggKiBieXRlc19wZXJfcGl4ZWwsIGZiZGV2LT5hbGlnbik7CisJYnl0ZXMgKj0gc2l6 ZS0+c3VyZmFjZV9oZWlnaHQ7CisKKwlvYmogPSBkcm1fZ2VtX2NtYV9jcmVhdGUoZHJtLCBieXRl cyk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gUFRSX0VSUihvYmopOworCisJZmJpID0g ZnJhbWVidWZmZXJfYWxsb2MoMCwgZHJtLT5kZXYpOworCWlmICghZmJpKSB7CisJCWRldl9lcnIo ZHJtLT5kZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgZnJhbWVidWZmZXIgaW5mby5cbiIpOworCQly ZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9kcm1fZ2VtX2NtYV9mcmVlX29iamVjdDsKKwl9CisK KwlmYmRldi0+ZmIgPSBkcm1fZ2VtX2ZiZGV2X2ZiX2NyZWF0ZShkcm0sIHNpemUsIGZiZGV2LT5h bGlnbiwgJm9iai0+YmFzZSwKKwkJCQkJICAgICZ4bG54X2ZiX2Z1bmNzKTsKKwlpZiAoSVNfRVJS KGZiZGV2LT5mYikpIHsKKwkJZGV2X2Vycihkcm0tPmRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBE Uk0gZnJhbWVidWZmZXIuXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihmYmRldi0+ZmIpOworCQlnb3Rv IGVycl9mcmFtZWJ1ZmZlcl9yZWxlYXNlOworCX0KKworCWZiID0gZmJkZXYtPmZiOworCWZiX2hl bHBlci0+ZmIgPSBmYjsKKwlmYl9oZWxwZXItPmZiZGV2ID0gZmJpOworCWZiaS0+cGFyID0gZmJf aGVscGVyOworCWZiaS0+ZmxhZ3MgPSBGQklORk9fRkxBR19ERUZBVUxUOworCWZiaS0+ZmJvcHMg PSAmeGxueF9mYmRldl9vcHM7CisKKwlyZXQgPSBmYl9hbGxvY19jbWFwKCZmYmktPmNtYXAsIDI1 NiwgMCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRybS0+ZGV2LCAiRmFpbGVkIHRvIGFsbG9j YXRlIGNvbG9yIG1hcC5cbiIpOworCQlnb3RvIGVycl9mYl9kZXN0cm95OworCX0KKworCWRybV9m Yl9oZWxwZXJfZmlsbF9maXgoZmJpLCBmYi0+cGl0Y2hlc1swXSwgZmItPmZvcm1hdC0+ZGVwdGgp OworCWRybV9mYl9oZWxwZXJfZmlsbF92YXIoZmJpLCBmYl9oZWxwZXIsIHNpemUtPmZiX3dpZHRo LCBzaXplLT5mYl9oZWlnaHQpOworCisJb2Zmc2V0ID0gZmJpLT52YXIueG9mZnNldCAqIGJ5dGVz X3Blcl9waXhlbDsKKwlvZmZzZXQgKz0gZmJpLT52YXIueW9mZnNldCAqIGZiLT5waXRjaGVzWzBd OworCisJZHJtLT5tb2RlX2NvbmZpZy5mYl9iYXNlID0gKHJlc291cmNlX3NpemVfdClvYmotPnBh ZGRyOworCWZiaS0+c2NyZWVuX2Jhc2UgPSAoY2hhciBfX2lvbWVtICopKG9iai0+dmFkZHIgKyBv ZmZzZXQpOworCWZiaS0+Zml4LnNtZW1fc3RhcnQgPSAodW5zaWduZWQgbG9uZykob2JqLT5wYWRk ciArIG9mZnNldCk7CisJZmJpLT5zY3JlZW5fc2l6ZSA9IGJ5dGVzOworCWZiaS0+Zml4LnNtZW1f bGVuID0gYnl0ZXM7CisKKwlyZXR1cm4gMDsKKworZXJyX2ZiX2Rlc3Ryb3k6CisJZHJtX2ZyYW1l YnVmZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZShmYik7CisJZHJtX2dlbV9mYl9kZXN0cm95KGZiKTsK K2Vycl9mcmFtZWJ1ZmZlcl9yZWxlYXNlOgorCWZyYW1lYnVmZmVyX3JlbGVhc2UoZmJpKTsKK2Vy cl9kcm1fZ2VtX2NtYV9mcmVlX29iamVjdDoKKwlkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCgmb2Jq LT5iYXNlKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mYl9o ZWxwZXJfZnVuY3MgeGxueF9mYl9oZWxwZXJfZnVuY3MgPSB7CisJLmZiX3Byb2JlID0geGxueF9m YmRldl9jcmVhdGUsCit9OworCisvKioKKyAqIHhsbnhfZmJfaW5pdCAtIEFsbG9jYXRlIGFuZCBp bml0aWFsaXplcyB0aGUgWGlsaW54IGZyYW1lYnVmZmVyCisgKiBAZHJtOiBEUk0gZGV2aWNlCisg KiBAcHJlZmVycmVkX2JwcDogcHJlZmVycmVkIGJpdHMgcGVyIHBpeGVsIGZvciB0aGUgZGV2aWNl CisgKiBAbWF4X2Nvbm5fY291bnQ6IG1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3RvcnMKKyAqIEBh bGlnbjogYWxpZ25tZW50IHZhbHVlIGZvciBwaXRjaAorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMg YmFzZWQgb24gZHJtX2ZiZGV2X2NtYV9pbml0KCkuCisgKgorICogUmV0dXJuOiBhIG5ld2x5IGFs bG9jYXRlZCBkcm1fZmJfaGVscGVyIHN0cnVjdCBvciBhIEVSUl9QVFIuCisgKi8KK3N0cnVjdCBk cm1fZmJfaGVscGVyICoKK3hsbnhfZmJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBpbnQg cHJlZmVycmVkX2JwcCwKKwkgICAgIHVuc2lnbmVkIGludCBtYXhfY29ubl9jb3VudCwgdW5zaWdu ZWQgaW50IGFsaWduKQoreworCXN0cnVjdCB4bG54X2ZiZGV2ICpmYmRldjsKKwlzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyOworCWludCByZXQ7CisKKwlmYmRldiA9IGt6YWxsb2Moc2l6 ZW9mKCpmYmRldiksIEdGUF9LRVJORUwpOworCWlmICghZmJkZXYpCisJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOworCisJZmJkZXYtPmFsaWduID0gYWxpZ247CisJZmJfaGVscGVyID0gJmZiZGV2 LT5mYl9oZWxwZXI7CisJZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKGRybSwgZmJfaGVscGVyLCAmeGxu eF9mYl9oZWxwZXJfZnVuY3MpOworCisJcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0KGRybSwgZmJf aGVscGVyLCBtYXhfY29ubl9jb3VudCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vycihkcm0t PmRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIGRybSBmYiBoZWxwZXIuXG4iKTsKKwkJZ290byBl cnJfZnJlZTsKKwl9CisKKwlyZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5l Y3RvcnMoZmJfaGVscGVyKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRybS0+ZGV2LCAi RmFpbGVkIHRvIGFkZCBjb25uZWN0b3JzLlxuIik7CisJCWdvdG8gZXJyX2RybV9mYl9oZWxwZXJf ZmluaTsKKwl9CisKKwlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKGZiX2hlbHBl ciwgcHJlZmVycmVkX2JwcCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vycihkcm0tPmRldiwg IkZhaWxlZCB0byBzZXQgaW5pdGlhbCBodyBjb25maWd1cmF0aW9uLlxuIik7CisJCWdvdG8gZXJy X2RybV9mYl9oZWxwZXJfZmluaTsKKwl9CisKKwlyZXR1cm4gZmJfaGVscGVyOworCitlcnJfZHJt X2ZiX2hlbHBlcl9maW5pOgorCWRybV9mYl9oZWxwZXJfZmluaShmYl9oZWxwZXIpOworZXJyX2Zy ZWU6CisJa2ZyZWUoZmJkZXYpOworCXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKKy8qKgorICog eGxueF9mYmRldl9kZWZpb19maW5pIC0gRnJlZSB0aGUgZGVmaW8gZmIKKyAqIEBmYmk6IGZiX2lu Zm8gc3RydWN0CisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBkcm1fZmJkZXZfY21h X2RlZmlvX2ZpbmkoKS4KKyAqLworc3RhdGljIHZvaWQgeGxueF9mYmRldl9kZWZpb19maW5pKHN0 cnVjdCBmYl9pbmZvICpmYmkpCit7CisJaWYgKCFmYmktPmZiZGVmaW8pCisJCXJldHVybjsKKwor CWZiX2RlZmVycmVkX2lvX2NsZWFudXAoZmJpKTsKKwlrZnJlZShmYmktPmZiZGVmaW8pOworCWtm cmVlKGZiaS0+ZmJvcHMpOworfQorCisvKioKKyAqIHhsbnhfZmJkZXZfZmluaSAtIEZyZWUgdGhl IFhpbGlueCBmcmFtZWJ1ZmZlcgorICogQGZiX2hlbHBlcjogZHJtX2ZiX2hlbHBlciBzdHJ1Y3QK KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIGRybV9mYmRldl9jbWFfZmluaSgpLgor ICovCit2b2lkIHhsbnhfZmJfZmluaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQor eworCXN0cnVjdCB4bG54X2ZiZGV2ICpmYmRldiA9IHRvX2ZiZGV2KGZiX2hlbHBlcik7CisKKwlk cm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZmYmRldi0+ZmJfaGVscGVyKTsKKwlpZiAoZmJk ZXYtPmZiX2hlbHBlci5mYmRldikKKwkJeGxueF9mYmRldl9kZWZpb19maW5pKGZiZGV2LT5mYl9o ZWxwZXIuZmJkZXYpOworCisJaWYgKGZiZGV2LT5mYl9oZWxwZXIuZmIpCisJCWRybV9mcmFtZWJ1 ZmZlcl9yZW1vdmUoZmJkZXYtPmZiX2hlbHBlci5mYik7CisKKwlkcm1fZmJfaGVscGVyX2Zpbmko JmZiZGV2LT5mYl9oZWxwZXIpOworCWtmcmVlKGZiZGV2KTsKK30KKworLyoqCisgKiB4bG54X2Zi X2NyZWF0ZSAtIChzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzICopLT5mYl9jcmVhdGUgY2Fs bGJhY2sKKyAqIEBkcm06IERSTSBkZXZpY2UKKyAqIEBmaWxlX3ByaXY6IGRybSBmaWxlIHByaXZh dGUgZGF0YQorICogQG1vZGVfY21kOiBtb2RlIGNvbW1hbmQgZm9yIGZiIGNyZWF0aW9uCisgKgor ICogVGhpcyBmdW5jdGlvbnMgY3JlYXRlcyBhIGRybV9mcmFtZWJ1ZmZlciB3aXRoIHhsbnhfZmJf ZnVuY3MgZm9yIGdpdmVuIG1vZGUKKyAqIEBtb2RlX2NtZC4gVGhpcyBmdW5jdGlvbnMgaXMgaW50 ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlIGZiX2NyZWF0ZSBjYWxsYmFjaworICogZnVuY3Rpb24g b2YgZHJtX21vZGVfY29uZmlnX2Z1bmNzLgorICoKKyAqIFJldHVybjogYSBkcm1fZnJhbWVidWZm ZXIgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwsIG9yCisgKiBFUlJfUFRSIGZyb20gZHJtX2dlbV9mYl9j cmVhdGVfd2l0aF9mdW5jcygpLgorICovCitzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKK3hsbnhf ZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2LAorCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpCit7 CisJcmV0dXJuIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3MoZHJtLCBmaWxlX3ByaXYsIG1v ZGVfY21kLAorCQkJCQkgICAgJnhsbnhfZmJfZnVuY3MpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3hsbngveGxueF9mYi5oIGIvZHJpdmVycy9ncHUvZHJtL3hsbngveGxueF9mYi5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MTczOGUKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGxueC94bG54X2ZiLmgKQEAgLTAsMCArMSwyNyBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBYaWxpbnggRFJNIEtN UyBGcmFtZWJ1ZmZlciBoZWxwZXIgaGVhZGVyCisgKgorICogIENvcHlyaWdodCAoQykgMjAxNSAt IDIwMTggWGlsaW54LCBJbmMuCisgKgorICogIEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bi5r d29uQHhpbGlueC5jb20+CisgKi8KKworI2lmbmRlZiBfWExOWF9GQl9IXworI2RlZmluZSBfWExO WF9GQl9IXworCitzdHJ1Y3QgZHJtX2RldmljZTsKK3N0cnVjdCBkcm1fZmlsZTsKK3N0cnVjdCBk cm1fZmJfaGVscGVyOworc3RydWN0IGRybV9mcmFtZWJ1ZmZlcjsKK3N0cnVjdCBkcm1fbW9kZV9m Yl9jbWQyOworCitzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKK3hsbnhfZmJfY3JlYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCSAgICAgICBj b25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpOworc3RydWN0IGRybV9mYl9o ZWxwZXIgKgoreGxueF9mYl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIGludCBwcmVmZXJy ZWRfYnBwLAorCSAgICAgdW5zaWduZWQgaW50IG1heF9jb25uX2NvdW50LCB1bnNpZ25lZCBpbnQg YWxpZ24pOwordm9pZCB4bG54X2ZiX2Zpbmkoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cik7CisKKyNlbmRpZiAvKiBfWExOWF9GQl9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3hsbngveGxueF9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZ2VtLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc0OGRjMQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZ2VtLmMKQEAgLTAsMCArMSwzNiBAQAorLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBYaWxpbnggRFJNIEtNUyBH RU0gaGVscGVyCisgKgorICogIENvcHlyaWdodCAoQykgMjAxNSAtIDIwMTggWGlsaW54LCBJbmMu CisgKgorICogIEF1dGhvcjogSHl1biBXb28gS3dvbiA8aHl1bi5rd29uQHhpbGlueC5jb20+Cisg Ki8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hl bHBlci5oPgorCisjaW5jbHVkZSAieGxueF9kcnYuaCIKKyNpbmNsdWRlICJ4bG54X2dlbS5oIgor CisvKgorICogeGxueF9nZW1fY21hX2R1bWJfY3JlYXRlIC0gKHN0cnVjdCBkcm1fZHJpdmVyKS0+ ZHVtYl9jcmVhdGUgY2FsbGJhY2sKKyAqIEBmaWxlX3ByaXY6IGRybV9maWxlIG9iamVjdAorICog QGRybTogRFJNIG9iamVjdAorICogQGFyZ3M6IGluZm8gZm9yIGR1bWIgc2Nhbm91dCBidWZmZXIg Y3JlYXRpb24KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGZvciBkdW1iX2NyZWF0ZSBjYWxsYmFj ayBvZiBkcm1fZHJpdmVyIHN0cnVjdC4gU2ltcGx5CisgKiBpdCB3cmFwcyBhcm91bmQgZHJtX2dl bV9jbWFfZHVtYl9jcmVhdGUoKSBhbmQgc2V0cyB0aGUgcGl0Y2ggdmFsdWUKKyAqIGJ5IHJldHJp ZXZpbmcgdGhlIHZhbHVlIGZyb20gdGhlIGRldmljZS4KKyAqCisgKiBSZXR1cm46IFRoZSByZXR1 cm4gdmFsdWUgZnJvbSBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZSgpCisgKi8KK2ludCB4bG54X2dl bV9jbWFfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sCisJCQkgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykK K3sKKwl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBESVZfUk9VTkRfVVAoYXJncy0+d2lkdGggKiBhcmdz LT5icHAsIDgpOworCisJYXJncy0+cGl0Y2ggPSBBTElHTihwaXRjaCwgeGxueF9nZXRfYWxpZ24o ZHJtKSk7CisKKwlyZXR1cm4gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGVfaW50ZXJuYWwoZmlsZV9w cml2LCBkcm0sIGFyZ3MpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hsbngveGxu eF9nZW0uaCBiL2RyaXZlcnMvZ3B1L2RybS94bG54L3hsbnhfZ2VtLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uM2M5ZWQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS94bG54L3hsbnhfZ2VtLmgKQEAgLTAsMCArMSwyMSBAQAorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBYaWxpbnggRFJNIEtNUyBHRU0gaGVscGVyIGhl YWRlcgorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgLSAyMDE4IFhpbGlueCwgSW5jLgorICoK KyAqICBBdXRob3I6IEh5dW4gV29vIEt3b24gPGh5dW4ua3dvbkB4aWxpbnguY29tPgorICovCisK KyNpZm5kZWYgX1hMTlhfR0VNX0hfCisjZGVmaW5lIF9YTE5YX0dFTV9IXworCitzdHJ1Y3QgZHJt X2RldmljZTsKK3N0cnVjdCBkcm1fZmlsZTsKK3N0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYjsK KworaW50IHhsbnhfZ2VtX2NtYV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diwKKwkJCSAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybSwKKwkJCSAgICAgc3RydWN0IGRybV9t b2RlX2NyZWF0ZV9kdW1iICphcmdzKTsKKworI2VuZGlmIC8qIF9YTE5YX0dFTV9IXyAqLwotLSAK Mi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=