From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/7] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Fri, 14 Dec 2018 12:34:47 +0000 Message-ID: <20181214123449.23847-6-tvrtko.ursulin@linux.intel.com> References: <20181214123449.23847-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 749166F48B for ; Fri, 14 Dec 2018 12:35:00 +0000 (UTC) In-Reply-To: <20181214123449.23847-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCldlIHdhbnQg dG8gYWxsb3cgdXNlcnNwYWNlIHRvIHJlY29uZmlndXJlIHRoZSBzdWJzbGljZSBjb25maWd1cmF0 aW9uIG9uIGEKcGVyIGNvbnRleHQgYmFzaXMuCgpUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgZnVu Y3Rpb25hbCByZXF1aXJlbWVudCBvZiBzaHV0dGluZyBkb3duIG5vbi1WTUUKZW5hYmxlZCBzdWIt c2xpY2VzIG9uIEdlbjExIHBhcnRzLgoKVG8gZG8gc28sIHdlIGV4cG9zZSBhIGNvbnRleHQgcGFy YW1ldGVyIHRvIGFsbG93IGFkanVzdG1lbnQgb2YgdGhlIFJQQ1MKcmVnaXN0ZXIgc3RvcmVkIHdp dGhpbiB0aGUgY29udGV4dCBpbWFnZSAoYW5kIGN1cnJlbnRseSBub3QgYWNjZXNzaWJsZSB2aWEK TFJJKS4KCklmIHRoZSBjb250ZXh0IGlzIGFkanVzdGVkIGJlZm9yZSBmaXJzdCB1c2Ugb3Igd2hp bHN0IGlkbGUsIHRoZSBhZGp1c3RtZW50CmlzIGZvciAiZnJlZSI7IG90aGVyd2lzZSBpZiB0aGUg Y29udGV4dCBpcyBhY3RpdmUgd2UgcXVldWUgYSByZXF1ZXN0IHRvIGRvCnNvICh1c2luZyB0aGUg a2VybmVsIGNvbnRleHQpLCBmb2xsb3dpbmcgYWxsIG90aGVyIGFjdGl2aXR5IGJ5IHRoYXQKY29u dGV4dCwgd2hpY2ggaXMgYWxzbyBtYXJrZWQgYXMgYmFycmllciBmb3IgYWxsIGZvbGxvd2luZyBz dWJtaXNzaW9uCmFnYWluc3QgdGhlIHNhbWUgY29udGV4dC4KClNpbmNlIHRoZSBvdmVyaGVhZCBv ZiBkZXZpY2UgcmUtY29uZmlndXJhdGlvbiBkdXJpbmcgY29udGV4dCBzd2l0Y2hpbmcgY2FuCmJl IHNpZ25pZmljYW50LCBlc3BlY2lhbGx5IGluIG11bHRpLWNvbnRleHQgd29ya2xvYWRzLCB3ZSBs aW1pdCB0aGlzIG5ldwp1QVBJIHRvIG9ubHkgc3VwcG9ydCB0aGUgR2VuMTEgVk1FIHVzZSBjYXNl LiBJbiB0aGlzIHVzZSBjYXNlIGVpdGhlciB0aGUKZGV2aWNlIGlzIGZ1bGx5IGVuYWJsZWQsIGFu ZCBleGFjdGx5IG9uZSBzbGljZSBhbmQgaGFsZiBvZiB0aGUgc3Vic2xpY2VzCmFyZSBlbmFibGVk LgoKRXhhbXBsZSB1c2FnZToKCglzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSBzc2V1ID0geyB9OwoJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9CgkJ eyAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKCQkgIC5jdHhfaWQgPSBnZW1fY29u dGV4dF9jcmVhdGUoZmQpLAoJCSAgLnNpemUgPSBzaXplb2Yoc3NldSksCgkJICAudmFsdWUgPSB0 b191c2VyX3BvaW50ZXIoJnNzZXUpCgkJfTsKCgkvKiBRdWVyeSBkZXZpY2UgZGVmYXVsdHMuICov CglnZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpOwoKCS8qIFNldCBWTUUgY29uZmlndXJh dGlvbiBvbiBhIDF4Nng4IHBhcnQuICovCglzc2V1LnNsaWNlX21hc2sgPSAweDE7Cglzc2V1LnN1 YnNsaWNlX21hc2sgPSAweGUwOwoJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKTsKCnYy OiBGaXggb2Zmc2V0IG9mIENUWF9SX1BXUl9DTEtfU1RBVEUgaW4gaW50ZWxfbHJfY29udGV4dF9z ZXRfc3NldSgpIChMaW9uZWwpCgp2MzogQWRkIGFiaWxpdHkgdG8gcHJvZ3JhbSB0aGlzIHBlciBl bmdpbmUgKENocmlzKQoKdjQ6IE1vdmUgbW9zdCBnZXRfc3NldSgpIGludG8gaTkxNV9nZW1fY29u dGV4dC5jIChMaW9uZWwpCgp2NTogVmFsaWRhdGUgc3NldSBjb25maWd1cmF0aW9uIGFnYWluc3Qg dGhlIGRldmljZSdzIGNhcGFiaWxpdGllcyAoTGlvbmVsKQoKdjY6IENoYW5nZSBjb250ZXh0IHBv d2VyZ2F0aW5nIHNldHRpbmdzIHRocm91Z2ggTUlfU0RNIG9uIGtlcm5lbCBjb250ZXh0IChDaHJp cykKCnY3OiBTeW5jaHJvbml6ZSB0aGUgcmVxdWVzdHMgZm9sbG93aW5nIGEgcG93ZXJnYXRpbmcg c2V0dGluZyBjaGFuZ2UgdXNpbmcgYSBnbG9iYWwKICAgIGRlcGVuZGVuY3kgKENocmlzKQogICAg SXRlcmF0ZSB0aW1lbGluZXMgdGhyb3VnaCBkZXZfcHJpdi5ndC5hY3RpdmVfcmluZ3MgKFR2cnRr bykKICAgIERpc2FibGUgUlBDUyBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIG5vbiBjYXBhYmxl IHVzZXJzIChMaW9uZWwvVHZydGtvKQoKdjg6IHMvdW5pb24gaW50ZWxfc3NldS9zdHJ1Y3QgaW50 ZWxfc3NldS8gKExpb25lbCkKICAgIHMvZGV2X3ByaXYvaTkxNS8gKFR2cnRrbykKICAgIENoYW5n ZSB1YXBpIGNsYXNzL2luc3RhbmNlIGZpZWxkcyB0byB1MTYgKFR2cnRrbykKICAgIEJ1bXAgbWFz ayBmaWVsZHMgdG8gNjRiaXRzIChMaW9uZWwpCiAgICBEb24ndCByZXR1cm4gRVBFUk0gd2hlbiBk eW5hbWljIHNzZXUgaXMgZGlzYWJsZWQgKFR2cnRrbykKCnY5OiBJbXBvcnQgY29udGV4dCBpbWFn ZSBpbnRvIGtlcm5lbCBjb250ZXh0J3MgcHBndHQgb25seSB3aGVuCiAgICByZWNvbmZpZ3VyaW5n IHBvd2VyZ2F0ZWQgc2xpY2Uvc3Vic2xpY2VzIChDaHJpcykKICAgIFVzZSBhbGlhc2luZyBwcGd0 dCB3aGVuIG5lZWRlZCAoTWljaGVsKQoKVHZydGtvIFVyc3VsaW46Cgp2MTA6CiAqIFVwZGF0ZSBm b3IgdXBzdHJlYW0gY2hhbmdlcy4KICogUmVxdWVzdCBzdWJtaXQgbmVlZHMgYSBSUE0gcmVmZXJl bmNlLgogKiBSZWplY3Qgb24gIUZVTExfUFBHVFQgZm9yIHNpbXBsaWNpdHkuCiAqIFB1bGwgb3V0 IGdldC9zZXQgcGFyYW0gdG8gaGVscGVycyBmb3IgcmVhZGFiaWxpdHkgYW5kIGxlc3MgaW5kZW50 LgogKiBVc2UgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9mZW5jZSBpbiBhZGRfZ2xvYmFsX2JhcnJp ZXIgdG8gc2tpcCB3YWl0cwogICBvbiB0aGUgc2FtZSB0aW1lbGluZSBhbmQgYXZvaWQgR0VNX0JV R19PTi4KICogTm8gbmVlZCB0byBleHBsaWNpdGx5IGFzc2lnbiBhIE5VTEwgcG9pbnRlciB0byBl bmdpbmUgaW4gbGVnYWN5IG1vZGUuCiAqIE5vIG5lZWQgdG8gbW92ZSBnZW44X21ha2VfcnBjcyB1 cC4KICogRmFjdG9yZWQgb3V0IGdsb2JhbCBiYXJyaWVyIGFzIHByZXAgcGF0Y2guCiAqIEFsbG93 IHRvIG9ubHkgQ0FQX1NZU19BRE1JTiBpZiAhR2VuMTEuCgp2MTE6CiAqIFJlbW92ZSBlbmdpbmUg dmZ1bmMgaW4gZmF2b3VyIG9mIGxvY2FsIGhlbHBlci4gKENocmlzIFdpbHNvbikKICogU3RvcCBy ZXRpcmluZyByZXF1ZXN0cyBiZWZvcmUgdXBkYXRlcyBzaW5jZSBpdCBpcyBub3QgbmVlZGVkCiAg IChDaHJpcyBXaWxzb24pCiAqIEltcGxlbWVudCBkaXJlY3QgQ1BVIHVwZGF0ZSBwYXRoIGZvciBp ZGxlIGNvbnRleHRzLiAoQ2hyaXMgV2lsc29uKQogKiBMZWZ0IHNpZGUgZGVwZW5kZW5jeSBuZWVk cyBvbmx5IGJlIG9uIHRoZSBzYW1lIGNvbnRleHQgdGltZWxpbmUuCiAgIChDaHJpcyBXaWxzb24p CiAqIEl0IGlzIHN1ZmZpY2llbnQgdG8gb3JkZXIgdGhlIHRpbWVsaW5lLiAoQ2hyaXMgV2lsc29u KQogKiBSZWplY3QgIVJDUyBjb25maWd1cmF0aW9uIGF0dGVtcHRzIHdpdGggLUVOT0RFViBmb3Ig bm93LgoKdjEyOgogKiBSZWJhc2UgZm9yIG1ha2VfcnBjcy4KCnYxMzoKICogQ2VudHJhbGl6ZSBT U0VVIG5vcm1hbGl6YXRpb24gdG8gbWFrZV9ycGNzLgogKiBUeXBlIHdpZHRoIGNoZWNraW5nICh1 QVBJIDwtPiBpbXBsZW1lbnRhdGlvbikuCiAqIEdlbjExIHJlc3RyaWN0aW9ucyB1QVBJIGNoZWNr cy4KICogR2VuMTEgc3Vic2xpY2UgY291bnQgZGlmZmVyZW5jZXMgaGFuZGxpbmcuCiBDaHJpcyBX aWxzb246CiAqIGFyZ3MtPnNpemUgaGFuZGxpbmcgZml4ZXMuCiAqIFVwZGF0ZSBjb250ZXh0IGlt YWdlIGZyb20gR0dUVC4KICogUG9zdHBvbmUgY29udGV4dCBpbWFnZSB1cGRhdGUgdG8gcGlubmlu Zy4KICogVXNlIGk5MTVfZ2VtX2FjdGl2ZV9yYXcgaW5zdGVhZCBvZiBsYXN0X3JlcXVlc3Rfb25f ZW5naW5lLgoKdjE0OgogKiBBZGQgYWN0aXZpdHkgdHJhY2tlciBvbiBpbnRlbF9jb250ZXh0IHRv IGZpeCB0aGUgbGlmZXRpbWUgaXNzdWVzCiAgIGFuZCBzaW1wbGlmeSB0aGUgY29kZS4gKENocmlz IFdpbHNvbikKCnYxNToKICogRml4IGNvbnRleHQgcGluIGxlYWsgaWYgbm8gc3BhY2UgaW4gcmlu ZyBieSBzaW1wbGlmeWluZyB0aGUKICAgY29udGV4dCBwaW5uaW5nIHNlcXVlbmNlLgoKdjE2Ogog KiBSZWJhc2UgZm9yIGNvbnRleHQgZ2V0L3NldCBwYXJhbSBsb2NraW5nIGNoYW5nZXMuCiAqIEp1 c3QgLUVOT0RFViBvbiAhR2VuMTEuIChKb29uYXMpCgp2MTc6CiAqIEZpeCBvbmUgR2VuMTEgc3Vi c2xpY2UgZW5hYmxlbWVudCBydWxlLgogKiBIYW5kbGUgZXJyb3IgZnJvbSBpOTE1X3N3X2ZlbmNl X2F3YWl0X3N3X2ZlbmNlX2dmcC4gKENocmlzIFdpbHNvbikKCnYxODoKICogVXBkYXRlIGNvbW1p dCBtZXNzYWdlLiAoSm9vbmFzKQogKiBSZXN0cmljdCB1QVBJIHRvIFZNRSB1c2UgY2FzZS4gKEpv b25hcykKCnYxOToKICogUmViYXNlLgoKdjIwOgogKiBSZWJhc2UgZm9yIGNlLT5hY3RpdmVfdHJh Y2tlci4KCnYyMToKICogUmViYXNlIGZvciBJU19HRU4gY2hhbmdlcy4KCkJ1Z3ppbGxhOiBodHRw czovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4OTkKQnVnemlsbGE6 IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzYzNApJc3N1 ZTogaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21lZGlhLWRyaXZlci9pc3N1ZXMvMjY3ClNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQt b2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ CkNjOiBEbWl0cnkgUm9nb3poa2luIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgpDYzog VHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IFpoaXBlbmcgR29u ZyA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxh aHRpbmVuQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYyB8IDM0MSArKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyAgICAgICAgfCAgIDQgKy0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAg ICAgICAgICB8ICA0MyArKysKIDQgZmlsZXMgY2hhbmdlZCwgMzkxIGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4 IGE1NjU2NDNlOWEyNi4uNzhkNDQ5YjYyNDVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jCkBAIC05MCw2ICs5MCw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+ CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVk ZSAiaW50ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNk ZWZpbmUgQUxMX0wzX1NMSUNFUyhkZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBA IC0zMjIsNiArMzIzLDE1IEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0 aWMgdm9pZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3Rp dmUsCisJCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJh Y2tlcik7CisKKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKK30KKwogc3RhdGljIHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICoKIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQkgICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmls ZV9wcml2KQpAQCAtMzQ1LDYgKzM1NSw4IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljZS0+Z2VtX2NvbnRleHQgPSBjdHg7CiAJCS8q IFVzZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8KIAkJY2UtPnNzZXUgPSBpbnRlbF9k ZXZpY2VfZGVmYXVsdF9zc2V1KGRldl9wcml2KTsKKworCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZj ZS0+YWN0aXZlX3RyYWNrZXIsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKIAl9CiAKIAlJTklUX1JB RElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwpAQCAtODQyLDYgKzg1NCw1 NiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZ2V0X3NzZXUo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW1fc3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPT0g MCkKKwkJZ290byBvdXQ7CisJZWxzZSBpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUp KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1 NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQor CQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUucnN2ZDEgfHwgdXNlcl9zc2V1LnJz dmQyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBf dXNlcihjdHgtPmk5MTUsCisJCQkJCSAgdXNlcl9zc2V1LmNsYXNzLAorCQkJCQkgIHVzZXJfc3Nl dS5pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogT25s eSB1c2UgZm9yIG11dGV4IGhlcmUgaXMgdG8gc2VyaWFsaXplIGdldF9wYXJhbSBhbmQgc2V0X3Bh cmFtLiAqLworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJY2UgPSB0b19pbnRl bF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKworCXVzZXJfc3NldS5zbGljZV9tYXNrID0gY2UtPnNz ZXUuc2xpY2VfbWFzazsKKwl1c2VyX3NzZXUuc3Vic2xpY2VfbWFzayA9IGNlLT5zc2V1LnN1YnNs aWNlX21hc2s7CisJdXNlcl9zc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWlu X2V1c19wZXJfc3Vic2xpY2U7CisJdXNlcl9zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gY2Ut PnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihh cmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCisJCQkgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1 cm4gLUVGQVVMVDsKKworb3V0OgorCWFyZ3MtPnNpemUgPSBzaXplb2YodXNlcl9zc2V1KTsKKwor CXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCiB7CkBAIC04NTQsMTUgKzkxNiwxNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRw YXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmICghY3R4 KQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyZ3MtPnNpemUgPSAwOwogCXN3aXRjaCAoYXJncy0+ cGFyYW0pIHsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgogCQlyZXQgPSAt RUlOVkFMOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19aRVJPTUFQOgor CQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSB0ZXN0X2JpdChVQ09OVEVYVF9OT19a RVJPTUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRf UEFSQU1fR1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOworCiAJCWlmIChjdHgtPnBwZ3R0KQog CQkJYXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsKIAkJZWxzZSBpZiAodG9faTkx NShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKQEAgLTg3MSwxNCArOTM1LDIwIEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52bS50b3RhbDsKIAkJ YnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJST1JfQ0FQVFVSRToKKwkJYXJn cy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9ub19lcnJvcl9j YXB0dXJlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTk5BQkxF OgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X2lz X2Jhbm5hYmxlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1BSSU9S SVRZOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVkLnByaW9y aXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKIAkJYnJlYWs7CisJY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gZ2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CkBAIC04ODgsNiArOTU4LDI3 MSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgZ2VuOF9l bWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAorCQkJCSBzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCisJCQkJIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJdTY0IG9m ZnNldDsKKwl1MzIgKmNzOworCisJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsKKwlpZiAo SVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCisJb2Zmc2V0ID0gY2UtPnN0YXRl LT5ub2RlLnN0YXJ0ICsKKwkJTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFICsKKwkJKENUWF9SX1BX Ul9DTEtfU1RBVEUgKyAxKSAqIDQ7CisKKwkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40 IHwgTUlfVVNFX0dHVFQ7CisJKmNzKysgPSBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJKmNzKysg PSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJKmNzKysgPSBnZW44X21ha2VfcnBjcyhycS0+aTkx NSwgJnNzZXUpOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludAorZ2VuOF9tb2RpZnlfcnBjc19ncHUoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLAorCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJICAgICBz dHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcHJldjsKKwlpbnQg cmV0OworCisJR0VNX0JVR19PTighY2UtPnBpbl9jb3VudCk7CisKKwlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCS8qIFN1Ym1pdHRpbmcgcmVxdWVzdHMg ZXRjIG5lZWRzIHRoZSBodyBhd2FrZS4gKi8KKwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK KworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+a2VybmVsX2NvbnRleHQp OworCWlmIChJU19FUlIocnEpKSB7CisJCXJldCA9IFBUUl9FUlIocnEpOworCQlnb3RvIG91dF9w dXQ7CisJfQorCisJLyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0ZXIgYWxsIG90aGVyIGFjdGl2aXR5 IGJ5IHRoaXMgY29udGV4dC4gKi8KKwlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmY2UtPnJp bmctPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCisJCQkJICAgJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCWlmIChwcmV2ICYmICFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHByZXYpKSB7CisJCXJl dCA9IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKCZycS0+c3VibWl0LAorCQkJCQkJ ICAgICAgICZwcmV2LT5zdWJtaXQsCisJCQkJCQkgICAgICAgSTkxNV9GRU5DRV9HRlApOworCQlp ZiAocmV0IDwgMCkKKwkJCWdvdG8gb3V0X2FkZDsKKwl9CisKKwlyZXQgPSBnZW44X2VtaXRfcnBj c19jb25maWcocnEsIGNlLCBzc2V1KTsKKwlpZiAocmV0KQorCQlnb3RvIG91dF9hZGQ7CisKKwkv KiBPcmRlciBhbGwgZm9sbG93aW5nIHJlcXVlc3RzIHRvIGJlIGFmdGVyLiAqLworCWk5MTVfdGlt ZWxpbmVfc2V0X2JhcnJpZXIoY2UtPnJpbmctPnRpbWVsaW5lLCBycSk7CisKKwkvKgorCSAqIEd1 YXJhbnRlZSBjb250ZXh0IGltYWdlIGFuZCB0aGUgdGltZWxpbmUgcmVtYWlucyBwaW5uZWQgdW50 aWwgdGhlCisJICogbW9kaWZ5aW5nIHJlcXVlc3QgaXMgcmV0aXJlZCBieSBzZXR0aW5nIHRoZSBj ZSBhY3Rpdml0eSB0cmFja2VyLgorCSAqCisJICogQnV0IHdlIG9ubHkgbmVlZCB0byB0YWtlIG9u ZSBwaW4gb24gdGhlIGFjY291bnQgb2YgaXQuIE9yIGluIG90aGVyCisJICogd29yZHMgdHJhbnNm ZXIgdGhlIHBpbm5lZCBjZSBvYmplY3QgdG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KKwkgKi8K KwlpZiAoIWk5MTVfZ2VtX2FjdGl2ZV9pc3NldCgmY2UtPmFjdGl2ZV90cmFja2VyKSkKKwkJX19p bnRlbF9jb250ZXh0X3BpbihjZSk7CisJaTkxNV9nZW1fYWN0aXZlX3NldCgmY2UtPmFjdGl2ZV90 cmFja2VyLCBycSk7CisKK291dF9hZGQ6CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CitvdXRfcHV0 OgorCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludAoraTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3VyZV9zc2V1KHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCWludCByZXQ7CisKKwlHRU1fQlVH X09OKElOVEVMX0dFTihjdHgtPmk5MTUpIDwgOCk7CisJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9 IFJDUyk7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIE5vdGhpbmcg dG8gZG8gaWYgdW5tb2RpZmllZC4gKi8KKwlpZiAoIW1lbWNtcCgmY2UtPnNzZXUsICZzc2V1LCBz aXplb2Yoc3NldSkpKQorCQlnb3RvIG91dDsKKworCS8qCisJICogSWYgY29udGV4dCBpcyBub3Qg aWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVkIHJlcXVlc3QgdG8gbW9kaWZ5CisJICog aXRzIGNvbnRleHQgaW1hZ2UgdmlhIHRoZSBrZXJuZWwgY29udGV4dC4gUHJpc3RpbmUgYW5kIGlk bGUgY29udGV4dHMKKwkgKiB3aWxsIGJlIGNvbmZpZ3VyZWQgb24gcGlubmluZy4KKwkgKi8KKwlp ZiAoY2UtPnBpbl9jb3VudCkKKwkJcmV0ID0gZ2VuOF9tb2RpZnlfcnBjc19ncHUoY2UsIGVuZ2lu ZSwgc3NldSk7CisKKwlpZiAoIXJldCkKKwkJY2UtPnNzZXUgPSBzc2V1OworCitvdXQ6CisJbXV0 ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludAordXNlcl90b19jb250ZXh0X3NzZXUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCisJCSAgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtX3NzZXUgKnVzZXIsCisJCSAgICAgc3RydWN0IGludGVsX3NzZXUgKmNvbnRleHQpCit7CisJ Y29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKmRldmljZSA9ICZJTlRFTF9JTkZPKGk5MTUpLT5z c2V1OworCisJLyogTm8gemVyb3MgaW4gYW55IGZpZWxkLiAqLworCWlmICghdXNlci0+c2xpY2Vf bWFzayB8fCAhdXNlci0+c3Vic2xpY2VfbWFzayB8fAorCSAgICAhdXNlci0+bWluX2V1c19wZXJf c3Vic2xpY2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCS8qIE1heCA+IG1pbi4gKi8KKwlpZiAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2Ug PCB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBD aGVjayB2YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAqLworCWlmICh1c2VyLT5zbGljZV9tYXNr ICYgfmRldmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAodXNlci0+ c3Vic2xpY2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pCisJCXJldHVybiAtRUlO VkFMOworCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlID4gZGV2aWNlLT5tYXhfZXVz X3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIFNvbWUgZnV0dXJl IHByb29maW5nIG9uIHRoZSB0eXBlcyBzaW5jZSB0aGUgdUFQSSBpcyB3aWRlciB0aGFuIHRoZQor CSAqIGN1cnJlbnQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisJICovCisJaWYgKFdBUk5fT04o KGZscyh1c2VyLT5zbGljZV9tYXNrKSA+CisJCSAgICAgc2l6ZW9mKGNvbnRleHQtPnNsaWNlX21h c2spICogQklUU19QRVJfQllURSkgfHwKKwkJICAgIChmbHModXNlci0+c3Vic2xpY2VfbWFzaykg PgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9tYXNrKSAqIEJJVFNfUEVSX0JZVEUp IHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSwKKwkJ CQkgICBjb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgIG92ZXJmbG93c190 eXBlKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCQkJCSAgIGNvbnRleHQtPm1heF9ldXNf cGVyX3N1YnNsaWNlKSkpCisJCXJldHVybiAtRUlOVkFMOworCisJY29udGV4dC0+c2xpY2VfbWFz ayA9IHVzZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vic2xpY2VfbWFzayA9IHVzZXItPnN1 YnNsaWNlX21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5taW5f ZXVzX3Blcl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHVzZXIt Pm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyogUGFydCBzcGVjaWZpYyByZXN0cmljdGlvbnMu ICovCisJaWYgKElTX0dFTihpOTE1LCAxMSkpIHsKKwkJdW5zaWduZWQgaW50IGh3X3MgPSBod2Vp Z2h0OChkZXZpY2UtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBpbnQgaHdfc3NfcGVyX3MgPSBo d2VpZ2h0OChkZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pOworCQl1bnNpZ25lZCBpbnQgcmVxX3Mg PSBod2VpZ2h0OChjb250ZXh0LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zcyA9 IGh3ZWlnaHQ4KGNvbnRleHQtPnN1YnNsaWNlX21hc2spOworCisJCS8qCisJCSAqIE9ubHkgZnVs bCBzdWJzbGljZSBlbmFibGVtZW50IGlzIHBvc3NpYmxlIGlmIG1vcmUgdGhhbiBvbmUKKwkJICog c2xpY2UgaXMgdHVybmVkIG9uLgorCQkgKi8KKwkJaWYgKHJlcV9zID4gMSAmJiByZXFfc3MgIT0g aHdfc3NfcGVyX3MpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBtb3JlIHRo YW4gZm91ciAoU1Njb3VudCBiaXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQorCQkgKiByZXF1 ZXN0ZWQgdGhlbiB0aGUgbnVtYmVyIGhhcyB0byBiZSBldmVuLgorCQkgKi8KKwkJaWYgKHJlcV9z cyA+IDQgJiYgKHJlcV9zcyAmIDEpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICog SWYgb25seSBvbmUgc2xpY2UgaXMgZW5hYmxlZCBhbmQgc3Vic2xpY2UgY291bnQgaXMgYmVsb3cg dGhlCisJCSAqIGRldmljZSBmdWxsIGVuYWJsZW1lbnQsIGl0IG11c3QgYmUgYXQgbW9zdCBoYWxm IG9mIHRoZSBhbGwKKwkJICogYXZhaWxhYmxlIHN1YnNsaWNlcy4KKwkJICovCisJCWlmIChyZXFf cyA9PSAxICYmIHJlcV9zcyA8IGh3X3NzX3Blcl9zICYmCisJCSAgICByZXFfc3MgPiAoaHdfc3Nf cGVyX3MgLyAyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIEFCSSByZXN0cmljdGlvbiAt IFZNRSB1c2UgY2FzZSBvbmx5LiAqLworCisJCS8qIEFsbCBzbGljZXMgb3Igb25lIHNsaWNlIG9u bHkuICovCisJCWlmIChyZXFfcyAhPSAxICYmIHJlcV9zICE9IGh3X3MpCisJCQlyZXR1cm4gLUVJ TlZBTDsKKworCQkvKgorCQkgKiBIYWxmIHN1YnNsaWNlcyBvciBmdWxsIGVuYWJsZW1lbnQgb25s eSB3aGVuIG9uZSBzbGljZSBpcworCQkgKiBlbmFibGVkLgorCQkgKi8KKwkJaWYgKHJlcV9zID09 IDEgJiYKKwkJICAgIChyZXFfc3MgIT0gaHdfc3NfcGVyX3MgJiYgcmVxX3NzICE9IChod19zc19w ZXJfcyAvIDIpKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIE5vIEVVIGNvbmZpZ3VyYXRp b24gY2hhbmdlcy4gKi8KKwkJaWYgKCh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSAhPQorCQkg ICAgIGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICAodXNlci0+bWF4X2V1 c19wZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkK KwkJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNl dF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBjdHgtPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3Nz ZXUgdXNlcl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3Qg aW50ZWxfc3NldSBzc2V1OworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1 c2VyX3NzZXUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghSVNfR0VOKGk5MTUsIDExKSkK KwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0 X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJ cmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAodXNlcl9zc2V1LnJzdmQxIHx8IHVzZXJfc3NldS5yc3Zk MikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3Vz ZXIoaTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3Rh bmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHJlbmRl ciBlbmdpbmUgc3VwcG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLworCWlmIChlbmdpbmUtPmNs YXNzICE9IFJFTkRFUl9DTEFTUykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1c2VyX3Rv X2NvbnRleHRfc3NldShpOTE1LCAmdXNlcl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgs IGVuZ2luZSwgc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3MtPnNpemUg PSBzaXplb2YodXNlcl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29u dGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC05NTAsNyArMTI4NSw5IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJCQkJCUk5MTVfVVNFUl9QUklPUklUWShwcmlvcml0eSk7CiAJCX0KIAkJ YnJlYWs7Ci0KKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBzZXRfc3Nl dShjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQli cmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCBlZjA0ZTQy MmNmOWEuLjJkZWQ0YjhjOWI5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaApAQCAtMTcxLDYgKzE3MSwxMiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJCXU2 NCBscmNfZGVzYzsKIAkJaW50IHBpbl9jb3VudDsKIAorCQkvKioKKwkJICogYWN0aXZlX3RyYWNr ZXI6IEFjdGl2ZSB0cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKKwkJICogb24g dGhpcyBpbnRlbF9jb250ZXh0IG9iamVjdC4KKwkJICovCisJCXN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgYWN0aXZlX3RyYWNrZXI7CisKIAkJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpv cHM7CiAKIAkJLyoqIHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFydGl0aW9uaW5nICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDU5ZTkwZDNlNzZmNi4uZDM5MmMyY2VmMWQ3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMjM2OSw3ICsyMzY5LDkgQEAgdTMyIGdlbjhfbWFr ZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaW50ZWxfc3NldSAq cmVxX3NzZXUpCiAJICogc3Vic2xpY2VzIGFyZSBlbmFibGVkLCBvciBhIGNvdW50IGJldHdlZW4g b25lIGFuZCBmb3VyIG9uIHRoZSBmaXJzdAogCSAqIHNsaWNlLgogCSAqLwotCWlmIChJU19HRU4o aTkxNSwgMTEpICYmIHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0KSB7CisJaWYgKElTX0dF TihpOTE1LCAxMSkgJiYKKwkgICAgc2xpY2VzID09IDEgJiYKKwkgICAgc3Vic2xpY2VzID4gbWlu X3QodTgsIDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8gMikpIHsKIAkJR0VN X0JVR19PTihzdWJzbGljZXMgJiAxKTsKIAogCQlzdWJzbGljZV9wZyA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCmluZGV4IDI5OGIyZTE5Nzc0NC4uMjIwMjFkMTRlZmQ0IDEwMDY0NAotLS0gYS9pbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CkBAIC0xNDg2LDkgKzE0ODYsNTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IHsKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAyMyAvKiBpbmNs dXNpdmUgKi8KICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQkJMAogI2Rl ZmluZSAgIEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBpbmNsdXNpdmUg Ki8KKwkvKgorCSAqIFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFsdWUgc2hvdWxk IGJlIGEgcG9pbnRlciB0bworCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUuCisJ ICovCisjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcKIAlfX3U2NCB2YWx1ZTsK IH07CiAKK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKKwkvKgorCSAq IEVuZ2luZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVlcmllZC4KKwkg Ki8KKwlfX3UxNiBjbGFzczsKKwlfX3UxNiBpbnN0YW5jZTsKKworCS8qCisJICogVW51c2VkIGZv ciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLworCV9fdTMyIHJzdmQxOworCisJ LyoKKwkgKiBNYXNrIG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2 YWx1ZXMgYXJlIGEgc3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuZWQgZm9y IEk5MTVfUEFSQU1fU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzbGljZV9tYXNrOworCisJLyoK KwkgKiBNYXNrIG9mIHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0LiBWYWxpZCB2 YWx1ZXMgYXJlIGEKKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5 MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzdWJzbGljZV9tYXNrOworCisJ LyoKKwkgKiBNaW5pbXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUgcGVyIHN1YnNs aWNlIGZvciB0aGUKKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBtdXN0IGJlIGlu ZmVyaW9yIG9yIGVxdWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vic2xpY2UuCisJICovCisJX191 MTYgbWluX2V1c19wZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1c19wZXJfc3Vic2xpY2U7CisK KwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8K KwlfX3UzMiByc3ZkMjsKK307CisKIGVudW0gZHJtX2k5MTVfb2FfZm9ybWF0IHsKIAlJOTE1X09B X0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8KIAlJOTE1X09BX0ZPUk1BVF9BMjks CSAgICAvKiBIU1cgb25seSAqLwotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK