From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 5/6] drm/i915: Expose RPCS (SSEU) configuration to userspace (Gen11 only) Date: Tue, 13 Nov 2018 14:35:34 +0000 Message-ID: <20181113143535.27741-6-tvrtko.ursulin@linux.intel.com> References: <20181113143535.27741-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EC416E2DE for ; Tue, 13 Nov 2018 14:35:49 +0000 (UTC) In-Reply-To: <20181113143535.27741-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 Y2tlci4KCkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNn aT9pZD0xMDA4OTkKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19i dWcuY2dpP2lkPTEwNzYzNApJc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21lZGlhLWRy aXZlci9pc3N1ZXMvMjY3ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcu bGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBEbWl0cnkgUm9nb3poa2luIDxkbWl0cnkudi5yb2dv emhraW5AaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KQ2M6IFpoaXBlbmcgR29uZyA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KQ2M6IEpvb25h cyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDM0MSArKysrKysrKysrKysrKysrKysrKysr Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICAgNiArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDQgKy0KIGluY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA0MyArKysKIDQgZmlsZXMgY2hhbmdlZCwg MzkxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCmluZGV4IGM4ZDA5ZmRlYTQ5Zi4uOWRkYzRjYjZhY2U1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC05MCw2ICs5MCw3IEBACiAjaW5j bHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJp OTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUgImludGVs X3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUgQUxMX0wzX1NMSUNFUyhkZXYpICgxIDw8IE5VTV9M M19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjIsNiArMzIzLDE1IEBAIHN0YXRpYyB1MzIgZGVmYXVs dF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJl dHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9pZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3Qg aTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQor eworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5 cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7CisKKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsK K30KKwogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKIF9fY3JlYXRlX2h3X2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgc3RydWN0IGRybV9p OTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQpAQCAtMzQ1LDYgKzM1NSw4IEBAIF9fY3JlYXRl X2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljZS0+Z2Vt X2NvbnRleHQgPSBjdHg7CiAJCS8qIFVzZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8K IAkJY2UtPnNzZXUgPSBpbnRlbF9kZXZpY2VfZGVmYXVsdF9zc2V1KGRldl9wcml2KTsKKworCQlp bml0X3JlcXVlc3RfYWN0aXZlKCZjZS0+YWN0aXZlX3RyYWNrZXIsIGludGVsX2NvbnRleHRfcmV0 aXJlKTsKIAl9CiAKIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJO RUwpOwpAQCAtODQ2LDYgKzg1OCw1NiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAK K3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgcmV0Owor CisJaWYgKGFyZ3MtPnNpemUgPT0gMCkKKwkJZ290byBvdXQ7CisJZWxzZSBpZiAoYXJncy0+c2l6 ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChjb3B5X2Zy b21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAg c2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUu cnN2ZDEgfHwgdXNlcl9zc2V1LnJzdmQyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9 IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsCisJCQkJCSAgdXNlcl9zc2V1LmNs YXNzLAorCQkJCQkgIHVzZXJfc3NldS5pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVy biAtRUlOVkFMOworCisJLyogT25seSB1c2UgZm9yIG11dGV4IGhlcmUgaXMgdG8gc2VyaWFsaXpl IGdldF9wYXJhbSBhbmQgc2V0X3BhcmFtLiAqLworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0 aWJsZSgmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKworCXVzZXJfc3Nl dS5zbGljZV9tYXNrID0gY2UtPnNzZXUuc2xpY2VfbWFzazsKKwl1c2VyX3NzZXUuc3Vic2xpY2Vf bWFzayA9IGNlLT5zc2V1LnN1YnNsaWNlX21hc2s7CisJdXNlcl9zc2V1Lm1pbl9ldXNfcGVyX3N1 YnNsaWNlID0gY2UtPnNzZXUubWluX2V1c19wZXJfc3Vic2xpY2U7CisJdXNlcl9zc2V1Lm1heF9l dXNfcGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwltdXRl eF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlpZiAoY29weV90b191 c2VyKHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCisJCQkgc2l6ZW9m KHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworb3V0OgorCWFyZ3MtPnNpemUgPSBz aXplb2YodXNlcl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4 dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJ CSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC04NTgsMTUgKzkyMCwxNyBAQCBpbnQg aTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCWlmICghY3R4KQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCWFyZ3MtPnNpemUg PSAwOwogCXN3aXRjaCAoYXJncy0+cGFyYW0pIHsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9C QU5fUEVSSU9EOgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVY VF9QQVJBTV9OT19aRVJPTUFQOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSB0 ZXN0X2JpdChVQ09OVEVYVF9OT19aRVJPTUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKIAkJYnJlYWs7 CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOwor CiAJCWlmIChjdHgtPnBwZ3R0KQogCQkJYXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3Rh bDsKIAkJZWxzZSBpZiAodG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKQEAgLTg3NSwx NCArOTM5LDIwIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2 KS0+Z2d0dC52bS50b3RhbDsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9f RVJST1JfQ0FQVFVSRToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9n ZW1fY29udGV4dF9ub19lcnJvcl9jYXB0dXJlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9D T05URVhUX1BBUkFNX0JBTk5BQkxFOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUg PSBpOTE1X2dlbV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7CiAJCWJyZWFrOwogCWNhc2UgSTkx NV9DT05URVhUX1BBUkFNX1BSSU9SSVRZOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFs dWUgPSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKIAkJ YnJlYWs7CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gZ2V0X3NzZXUo Y3R4LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJl YWs7CkBAIC04OTIsNiArOTYyLDI3MSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiByZXQ7CiB9 CiAKK3N0YXRpYyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLAorCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJIHN0cnVjdCBpbnRlbF9z c2V1IHNzZXUpCit7CisJdTY0IG9mZnNldDsKKwl1MzIgKmNzOworCisJY3MgPSBpbnRlbF9yaW5n X2JlZ2luKHJxLCA0KTsKKwlpZiAoSVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOwor CisJb2Zmc2V0ID0gY2UtPnN0YXRlLT5ub2RlLnN0YXJ0ICsKKwkJTFJDX1NUQVRFX1BOICogUEFH RV9TSVpFICsKKwkJKENUWF9SX1BXUl9DTEtfU1RBVEUgKyAxKSAqIDQ7CisKKwkqY3MrKyA9IE1J X1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CisJKmNzKysgPSBsb3dlcl8zMl9i aXRzKG9mZnNldCk7CisJKmNzKysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJKmNzKysgPSBn ZW44X21ha2VfcnBjcyhycS0+aTkxNSwgJnNzZXUpOworCisJaW50ZWxfcmluZ19hZHZhbmNlKHJx LCBjcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZ2VuOF9tb2RpZnlfcnBjc19n cHUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCAqcHJldjsKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTighY2UtPnBpbl9jb3VudCk7 CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCS8q IFN1Ym1pdHRpbmcgcmVxdWVzdHMgZXRjIG5lZWRzIHRoZSBodyBhd2FrZS4gKi8KKwlpbnRlbF9y dW50aW1lX3BtX2dldChpOTE1KTsKKworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwg aTkxNS0+a2VybmVsX2NvbnRleHQpOworCWlmIChJU19FUlIocnEpKSB7CisJCXJldCA9IFBUUl9F UlIocnEpOworCQlnb3RvIG91dF9wdXQ7CisJfQorCisJLyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0 ZXIgYWxsIG90aGVyIGFjdGl2aXR5IGJ5IHRoaXMgY29udGV4dC4gKi8KKwlwcmV2ID0gaTkxNV9n ZW1fYWN0aXZlX3JhdygmY2UtPnJpbmctPnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCisJCQkJICAg Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChwcmV2ICYmICFpOTE1X3JlcXVlc3RfY29t cGxldGVkKHByZXYpKSB7CisJCXJldCA9IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2Zw KCZycS0+c3VibWl0LAorCQkJCQkJICAgICAgICZwcmV2LT5zdWJtaXQsCisJCQkJCQkgICAgICAg STkxNV9GRU5DRV9HRlApOworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gb3V0X2FkZDsKKwl9CisK KwlyZXQgPSBnZW44X2VtaXRfcnBjc19jb25maWcocnEsIGNlLCBzc2V1KTsKKwlpZiAocmV0KQor CQlnb3RvIG91dF9hZGQ7CisKKwkvKiBPcmRlciBhbGwgZm9sbG93aW5nIHJlcXVlc3RzIHRvIGJl IGFmdGVyLiAqLworCWk5MTVfdGltZWxpbmVfc2V0X2JhcnJpZXIoY2UtPnJpbmctPnRpbWVsaW5l LCBycSk7CisKKwkvKgorCSAqIEd1YXJhbnRlZSBjb250ZXh0IGltYWdlIGFuZCB0aGUgdGltZWxp bmUgcmVtYWlucyBwaW5uZWQgdW50aWwgdGhlCisJICogbW9kaWZ5aW5nIHJlcXVlc3QgaXMgcmV0 aXJlZCBieSBzZXR0aW5nIHRoZSBjZSBhY3Rpdml0eSB0cmFja2VyLgorCSAqCisJICogQnV0IHdl IG9ubHkgbmVlZCB0byB0YWtlIG9uZSBwaW4gb24gdGhlIGFjY291bnQgb2YgaXQuIE9yIGluIG90 aGVyCisJICogd29yZHMgdHJhbnNmZXIgdGhlIHBpbm5lZCBjZSBvYmplY3QgdG8gdHJhY2tlZCBh Y3RpdmUgcmVxdWVzdC4KKwkgKi8KKwlpZiAoIWk5MTVfZ2VtX2FjdGl2ZV9pc3NldCgmY2UtPmFj dGl2ZV90cmFja2VyKSkKKwkJX19pbnRlbF9jb250ZXh0X3BpbihjZSk7CisJaTkxNV9nZW1fYWN0 aXZlX3NldCgmY2UtPmFjdGl2ZV90cmFja2VyLCBycSk7CisKK291dF9hZGQ6CisJaTkxNV9yZXF1 ZXN0X2FkZChycSk7CitvdXRfcHV0OgorCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAoraTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3Vy ZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwor CWludCByZXQ7CisKKwlHRU1fQlVHX09OKElOVEVMX0dFTihjdHgtPmk5MTUpIDwgOCk7CisJR0VN X0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCS8qIE5vdGhpbmcgdG8gZG8gaWYgdW5tb2RpZmllZC4gKi8KKwlpZiAoIW1lbWNt cCgmY2UtPnNzZXUsICZzc2V1LCBzaXplb2Yoc3NldSkpKQorCQlnb3RvIG91dDsKKworCS8qCisJ ICogSWYgY29udGV4dCBpcyBub3QgaWRsZSB3ZSBoYXZlIHRvIHN1Ym1pdCBhbiBvcmRlcmVkIHJl cXVlc3QgdG8gbW9kaWZ5CisJICogaXRzIGNvbnRleHQgaW1hZ2UgdmlhIHRoZSBrZXJuZWwgY29u dGV4dC4gUHJpc3RpbmUgYW5kIGlkbGUgY29udGV4dHMKKwkgKiB3aWxsIGJlIGNvbmZpZ3VyZWQg b24gcGlubmluZy4KKwkgKi8KKwlpZiAoY2UtPnBpbl9jb3VudCkKKwkJcmV0ID0gZ2VuOF9tb2Rp ZnlfcnBjc19ncHUoY2UsIGVuZ2luZSwgc3NldSk7CisKKwlpZiAoIXJldCkKKwkJY2UtPnNzZXUg PSBzc2V1OworCitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAordXNlcl90b19jb250ZXh0X3Nz ZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCSAgICAgY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgKnVzZXIsCisJCSAgICAgc3RydWN0IGludGVs X3NzZXUgKmNvbnRleHQpCit7CisJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKmRldmljZSA9 ICZJTlRFTF9JTkZPKGk5MTUpLT5zc2V1OworCisJLyogTm8gemVyb3MgaW4gYW55IGZpZWxkLiAq LworCWlmICghdXNlci0+c2xpY2VfbWFzayB8fCAhdXNlci0+c3Vic2xpY2VfbWFzayB8fAorCSAg ICAhdXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNs aWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE1heCA+IG1pbi4gKi8KKwlpZiAodXNlci0+ bWF4X2V1c19wZXJfc3Vic2xpY2UgPCB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwkvKiBDaGVjayB2YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAqLwor CWlmICh1c2VyLT5zbGljZV9tYXNrICYgfmRldmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlpZiAodXNlci0+c3Vic2xpY2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNlX21h c2tbMF0pCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNs aWNlID4gZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwkvKgorCSAqIFNvbWUgZnV0dXJlIHByb29maW5nIG9uIHRoZSB0eXBlcyBzaW5jZSB0aGUgdUFQ SSBpcyB3aWRlciB0aGFuIHRoZQorCSAqIGN1cnJlbnQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24u CisJICovCisJaWYgKFdBUk5fT04oKGZscyh1c2VyLT5zbGljZV9tYXNrKSA+CisJCSAgICAgc2l6 ZW9mKGNvbnRleHQtPnNsaWNlX21hc2spICogQklUU19QRVJfQllURSkgfHwKKwkJICAgIChmbHMo dXNlci0+c3Vic2xpY2VfbWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9t YXNrKSAqIEJJVFNfUEVSX0JZVEUpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5taW5f ZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkgICBjb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkg fHwKKwkJICAgIG92ZXJmbG93c190eXBlKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCQkJ CSAgIGNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkpCisJCXJldHVybiAtRUlOVkFMOwor CisJY29udGV4dC0+c2xpY2VfbWFzayA9IHVzZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vi c2xpY2VfbWFzayA9IHVzZXItPnN1YnNsaWNlX21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJf c3Vic2xpY2UgPSB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVz X3Blcl9zdWJzbGljZSA9IHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyogUGFydCBz cGVjaWZpYyByZXN0cmljdGlvbnMuICovCisJaWYgKElTX0dFTjExKGk5MTUpKSB7CisJCXVuc2ln bmVkIGludCBod19zID0gaHdlaWdodDgoZGV2aWNlLT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQg aW50IGh3X3NzX3Blcl9zID0gaHdlaWdodDgoZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKTsKKwkJ dW5zaWduZWQgaW50IHJlcV9zID0gaHdlaWdodDgoY29udGV4dC0+c2xpY2VfbWFzayk7CisJCXVu c2lnbmVkIGludCByZXFfc3MgPSBod2VpZ2h0OChjb250ZXh0LT5zdWJzbGljZV9tYXNrKTsKKwor CQkvKgorCQkgKiBPbmx5IGZ1bGwgc3Vic2xpY2UgZW5hYmxlbWVudCBpcyBwb3NzaWJsZSBpZiBt b3JlIHRoYW4gb25lCisJCSAqIHNsaWNlIGlzIHR1cm5lZCBvbi4KKwkJICovCisJCWlmIChyZXFf cyA+IDEgJiYgcmVxX3NzICE9IGh3X3NzX3Blcl9zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJ LyoKKwkJICogSWYgbW9yZSB0aGFuIGZvdXIgKFNTY291bnQgYml0ZmllbGQgbGltaXQpIHN1YnNs aWNlcyBhcmUKKwkJICogcmVxdWVzdGVkIHRoZW4gdGhlIG51bWJlciBoYXMgdG8gYmUgZXZlbi4K KwkJICovCisJCWlmIChyZXFfc3MgPiA0ICYmIChyZXFfc3MgJiAxKSkKKwkJCXJldHVybiAtRUlO VkFMOworCisJCS8qCisJCSAqIElmIG9ubHkgb25lIHNsaWNlIGlzIGVuYWJsZWQgYW5kIHN1YnNs aWNlIGNvdW50IGlzIGJlbG93IHRoZQorCQkgKiBkZXZpY2UgZnVsbCBlbmFibGVtZW50LCBpdCBt dXN0IGJlIGF0IG1vc3QgaGFsZiBvZiB0aGUgYWxsCisJCSAqIGF2YWlsYWJsZSBzdWJzbGljZXMu CisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAmJiByZXFfc3MgPCBod19zc19wZXJfcyAmJgorCQkg ICAgcmVxX3NzID4gKGh3X3NzX3Blcl9zIC8gMikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkv KiBBQkkgcmVzdHJpY3Rpb24gLSBWTUUgdXNlIGNhc2Ugb25seS4gKi8KKworCQkvKiBBbGwgc2xp Y2VzIG9yIG9uZSBzbGljZSBvbmx5LiAqLworCQlpZiAocmVxX3MgIT0gMSAmJiByZXFfcyAhPSBo d19zKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSGFsZiBzdWJzbGljZXMgb3Ig ZnVsbCBlbmFibGVtZW50IG9ubHkgd2hlbiBvbmUgc2xpY2UgaXMKKwkJICogZW5hYmxlZC4KKwkJ ICovCisJCWlmIChyZXFfcyA9PSAxICYmCisJCSAgICAocmVxX3NzICE9IGh3X3NzX3Blcl9zICYm IHJlcV9zcyAhPSAoaHdfc3NfcGVyX3MgLyAyKSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkv KiBObyBFVSBjb25maWd1cmF0aW9uIGNoYW5nZXMuICovCisJCWlmICgodXNlci0+bWluX2V1c19w ZXJfc3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSB8fAor CQkgICAgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlICE9CisJCSAgICAgZGV2aWNlLT5tYXhf ZXVzX3Blcl9zdWJzbGljZSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAor CQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1OworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisJc3RydWN0IGludGVsX3NzZXUgc3NldTsKKwlpbnQgcmV0OworCisJaWYgKGFy Z3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAo IUlTX0dFTjExKGk5MTUpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChjb3B5X2Zyb21fdXNl cigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9m KHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUucnN2ZDEg fHwgdXNlcl9zc2V1LnJzdmQyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVs X2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKKwkJCQkJ ICB1c2VyX3NzZXUuaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qIE9ubHkgcmVuZGVyIGVuZ2luZSBzdXBwb3J0cyBSUENTIGNvbmZpZ3VyYXRpb24uICov CisJaWYgKGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCQlyZXR1cm4gLUVOT0RFVjsK KworCXJldCA9IHVzZXJfdG9fY29udGV4dF9zc2V1KGk5MTUsICZ1c2VyX3NzZXUsICZzc2V1KTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9yZWNv bmZpZ3VyZV9zc2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisK IGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTk1 NCw3ICsxMjg5LDkgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkJSTkxNV9VU0VSX1BSSU9SSVRZKHBy aW9yaXR5KTsKIAkJfQogCQlicmVhazsKLQorCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6 CisJCXJldCA9IHNldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJl dCA9IC1FSU5WQUw7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5oCmluZGV4IGVmMDRlNDIyY2Y5YS4uMmRlZDRiOGM5YjlmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5oCkBAIC0xNzEsNiArMTcxLDEyIEBAIHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0IHsKIAkJdTY0IGxyY19kZXNjOwogCQlpbnQgcGluX2NvdW50OwogCisJCS8qKgor CQkgKiBhY3RpdmVfdHJhY2tlcjogQWN0aXZlIHRyYWNrZXIgZm9yIHRoZSBleHRlcm5hbCBycSBh Y3Rpdml0eQorCQkgKiBvbiB0aGlzIGludGVsX2NvbnRleHQgb2JqZWN0LgorCQkgKi8KKwkJc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSBhY3RpdmVfdHJhY2tlcjsKKwogCQljb25zdCBzdHJ1Y3QgaW50 ZWxfY29udGV4dF9vcHMgKm9wczsKIAogCQkvKiogc3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0 aXRpb25pbmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZWUwMmM1OTNhNzJjLi5i ZjNiYjA0NjA4MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0yNDA4LDcgKzI0MDgs OSBAQCB1MzIgZ2VuOF9tYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0 cnVjdCBpbnRlbF9zc2V1ICpyZXFfc3NldSkKIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9y IGEgY291bnQgYmV0d2VlbiBvbmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0CiAJICogc2xpY2UuCiAJ ICovCi0JaWYgKElTX0dFTjExKGk5MTUpICYmIHNsaWNlcyA9PSAxICYmIHN1YnNsaWNlcyA+PSA0 KSB7CisJaWYgKElTX0dFTjExKGk5MTUpICYmCisJICAgIHNsaWNlcyA9PSAxICYmCisJICAgIHN1 YnNsaWNlcyA+IG1pbl90KHU4LCA0LCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSAv IDIpKSB7CiAJCUdFTV9CVUdfT04oc3Vic2xpY2VzICYgMSk7CiAKIAkJc3Vic2xpY2VfcGcgPSBm YWxzZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCBlNDc3ZWY4YzY0NGUuLjhlYTk2ZmYxYzE5ZiAxMDA2 NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaApAQCAtMTQ4Niw5ICsxNDg2LDUyIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSB7CiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZ CTEwMjMgLyogaW5jbHVzaXZlICovCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJ T1JJVFkJCTAKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkJLTEwMjMg LyogaW5jbHVzaXZlICovCisJLyoKKwkgKiBXaGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0s IHZhbHVlIHNob3VsZCBiZSBhIHBvaW50ZXIgdG8KKwkgKiBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbV9zc2V1LgorCSAqLworI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3CiAJ X191NjQgdmFsdWU7CiB9OwogCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSB7CisJLyoKKwkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25maWd1cmVkIG9y IHF1ZXJpZWQuCisJICovCisJX191MTYgY2xhc3M7CisJX191MTYgaW5zdGFuY2U7CisKKwkvKgor CSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3Uz MiByc3ZkMTsKKworCS8qCisJICogTWFzayBvZiBzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29u dGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhIHN1YnNldAorCSAqIG9mIHRoZSBiaXRtYXNrIHZhbHVl IHJldHVybmVkIGZvciBJOTE1X1BBUkFNX1NMSUNFX01BU0suCisJICovCisJX191NjQgc2xpY2Vf bWFzazsKKworCS8qCisJICogTWFzayBvZiBzdWJzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29u dGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhCisJICogc3Vic2V0IG9mIHRoZSBiaXRtYXNrIHZhbHVl IHJldHVybiBieSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0suCisJICovCisJX191NjQgc3Vic2xp Y2VfbWFzazsKKworCS8qCisJICogTWluaW11bS9NYXhpbXVtIG51bWJlciBvZiBFVXMgdG8gZW5h YmxlIHBlciBzdWJzbGljZSBmb3IgdGhlCisJICogY29udGV4dC4gbWluX2V1c19wZXJfc3Vic2xp Y2UgbXVzdCBiZSBpbmZlcmlvciBvciBlcXVhbCB0bworCSAqIG1heF9ldXNfcGVyX3N1YnNsaWNl LgorCSAqLworCV9fdTE2IG1pbl9ldXNfcGVyX3N1YnNsaWNlOworCV9fdTE2IG1heF9ldXNfcGVy X3N1YnNsaWNlOworCisJLyoKKwkgKiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRv IHplcm8uCisJICovCisJX191MzIgcnN2ZDI7Cit9OworCiBlbnVtIGRybV9pOTE1X29hX2Zvcm1h dCB7CiAJSTkxNV9PQV9GT1JNQVRfQTEzID0gMSwJICAgIC8qIEhTVyBvbmx5ICovCiAJSTkxNV9P QV9GT1JNQVRfQTI5LAkgICAgLyogSFNXIG9ubHkgKi8KLS0gCjIuMTkuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==