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: Mon, 31 Dec 2018 16:06:34 +0000 Message-ID: <20181231160636.13880-6-tvrtko.ursulin@linux.intel.com> References: <20181231160636.13880-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71FBF6E71F for ; Mon, 31 Dec 2018 16:06:52 +0000 (UTC) In-Reply-To: <20181231160636.13880-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 Y2tlci4KCnYyMToKICogUmViYXNlIGZvciBJU19HRU4gY2hhbmdlcy4KCnYyMjoKICogUmVzZXJ2 ZSB1QVBJIGZvciBmbGFncyBzdHJhaWdodCBhd2F5LiAoQ2hyaXMgV2lsc29uKQoKQnVnemlsbGE6 IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDg5OQpCdWd6 aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjM0 Cklzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2lzc3Vlcy8yNjcK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNp Z25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVs LmNvbT4KQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBpbnRlbC5jb20+ CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogWmhpcGVu ZyBHb25nIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29u YXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+ICMgdjIxCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jIHwgMzQxICsrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgNCArLQogaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oICAgICAgICAgICAgIHwgIDQzICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAzOTEgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKaW5kZXggYTU2NTY0M2U5YTI2Li5jODNkZDEzNTc4ZTEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlIDxkcm0v aTkxNV9kcm0uaD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2Uu aCIKKyNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3Vu ZHMuaCIKIAogI2RlZmluZSBBTExfTDNfU0xJQ0VTKGRldikgKDEgPDwgTlVNX0wzX1NMSUNFUyhk ZXYpKSAtIDEKQEAgLTMyMiw2ICszMjMsMTUgQEAgc3RhdGljIHUzMiBkZWZhdWx0X2Rlc2NfdGVt cGxhdGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIGRlc2M7 CiB9CiAKK3N0YXRpYyB2b2lkIGludGVsX2NvbnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9h Y3RpdmUgKmFjdGl2ZSwKKwkJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjZSks IGFjdGl2ZV90cmFja2VyKTsKKworCWludGVsX2NvbnRleHRfdW5waW4oY2UpOworfQorCiBzdGF0 aWMgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgogX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYpCkBAIC0zNDUsNiArMzU1LDggQEAgX19jcmVhdGVfaHdfY29udGV4 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNlLT5nZW1fY29udGV4dCA9 IGN0eDsKIAkJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAqLwogCQljZS0+c3Nl dSA9IGludGVsX2RldmljZV9kZWZhdWx0X3NzZXUoZGV2X3ByaXYpOworCisJCWluaXRfcmVxdWVz dF9hY3RpdmUoJmNlLT5hY3RpdmVfdHJhY2tlciwgaW50ZWxfY29udGV4dF9yZXRpcmUpOwogCX0K IAogCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7CkBAIC04 NDIsNiArODU0LDU2IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGlu dCBnZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCByZXQ7CisKKwlpZiAoYXJn cy0+c2l6ZSA9PSAwKQorCQlnb3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9m KHVzZXJfc3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1 c2VyX3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNl cl9zc2V1KSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1 c2VyX3NzZXUucnN2ZDIpCisJCXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5n aW5lX2xvb2t1cF91c2VyKGN0eC0+aTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJ CSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwkvKiBPbmx5IHVzZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFt IGFuZCBzZXRfcGFyYW0uICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlj ZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21h c2sgPSBjZS0+c3NldS5zbGljZV9tYXNrOworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2Ut PnNzZXUuc3Vic2xpY2VfbWFzazsKKwl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBj ZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vi c2xpY2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKworCW11dGV4X3VubG9jaygm Y3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3Rv X3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1 KSkpCisJCXJldHVybiAtRUZBVUxUOworCitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVvZih1c2Vy X3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFt X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTg1NCwxNSArOTE2LDE3IEBAIGludCBpOTE1X2dlbV9j b250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJaWYgKCFjdHgpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7CiAJc3dp dGNoIChhcmdzLT5wYXJhbSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6 CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05P X1pFUk9NQVA6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0KFVD T05URVhUX05PX1pFUk9NQVAsICZjdHgtPnVzZXJfZmxhZ3MpOwogCQlicmVhazsKIAljYXNlIEk5 MTVfQ09OVEVYVF9QQVJBTV9HVFRfU0laRToKKwkJYXJncy0+c2l6ZSA9IDA7CisKIAkJaWYgKGN0 eC0+cHBndHQpCiAJCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHBndHQtPnZtLnRvdGFsOwogCQllbHNl IGlmICh0b19pOTE1KGRldiktPm1tLmFsaWFzaW5nX3BwZ3R0KQpAQCAtODcxLDE0ICs5MzUsMjAg QEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZt LnRvdGFsOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBU VVJFOgorCQlhcmdzLT5zaXplID0gMDsKIAkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0 X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fQkFOTkFCTEU6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2Vt X2NvbnRleHRfaXNfYmFubmFibGUoY3R4KTsKIAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRf UEFSQU1fUFJJT1JJVFk6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+ c2NoZWQucHJpb3JpdHkgPj4gSTkxNV9VU0VSX1BSSU9SSVRZX1NISUZUOwogCQlicmVhazsKKwlj YXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgorCQlyZXQgPSBnZXRfc3NldShjdHgsIGFyZ3Mp OworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKQEAgLTg4 OCw2ICs5NTgsMjcxIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGlj IGludCBnZW44X2VtaXRfcnBjc19jb25maWcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJ IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkK K3sKKwl1NjQgb2Zmc2V0OworCXUzMiAqY3M7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEs IDQpOworCWlmIChJU19FUlIoY3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwlvZmZzZXQg PSBjZS0+c3RhdGUtPm5vZGUuc3RhcnQgKworCQlMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgKwor CQkoQ1RYX1JfUFdSX0NMS19TVEFURSArIDEpICogNDsKKworCSpjcysrID0gTUlfU1RPUkVfRFdP UkRfSU1NX0dFTjQgfCBNSV9VU0VfR0dUVDsKKwkqY3MrKyA9IGxvd2VyXzMyX2JpdHMob2Zmc2V0 KTsKKwkqY3MrKyA9IHVwcGVyXzMyX2JpdHMob2Zmc2V0KTsKKwkqY3MrKyA9IGdlbjhfbWFrZV9y cGNzKHJxLT5pOTE1LCAmc3NldSk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZW44X21vZGlmeV9ycGNzX2dwdShzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsCisJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAorCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpw cmV2OworCWludCByZXQ7CisKKwlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKKworCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJLyogU3VibWl0dGlu ZyByZXF1ZXN0cyBldGMgbmVlZHMgdGhlIGh3IGF3YWtlLiAqLworCWludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOworCisJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJu ZWxfY29udGV4dCk7CisJaWYgKElTX0VSUihycSkpIHsKKwkJcmV0ID0gUFRSX0VSUihycSk7CisJ CWdvdG8gb3V0X3B1dDsKKwl9CisKKwkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRlciBhbGwgb3Ro ZXIgYWN0aXZpdHkgYnkgdGhpcyBjb250ZXh0LiAqLworCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVf cmF3KCZjZS0+cmluZy0+dGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKKwkJCQkgICAmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7CisJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJl dikpIHsKKwkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJt aXQsCisJCQkJCQkgICAgICAgJnByZXYtPnN1Ym1pdCwKKwkJCQkJCSAgICAgICBJOTE1X0ZFTkNF X0dGUCk7CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBvdXRfYWRkOworCX0KKworCXJldCA9IGdl bjhfZW1pdF9ycGNzX2NvbmZpZyhycSwgY2UsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0 X2FkZDsKKworCS8qIE9yZGVyIGFsbCBmb2xsb3dpbmcgcmVxdWVzdHMgdG8gYmUgYWZ0ZXIuICov CisJaTkxNV90aW1lbGluZV9zZXRfYmFycmllcihjZS0+cmluZy0+dGltZWxpbmUsIHJxKTsKKwor CS8qCisJICogR3VhcmFudGVlIGNvbnRleHQgaW1hZ2UgYW5kIHRoZSB0aW1lbGluZSByZW1haW5z IHBpbm5lZCB1bnRpbCB0aGUKKwkgKiBtb2RpZnlpbmcgcmVxdWVzdCBpcyByZXRpcmVkIGJ5IHNl dHRpbmcgdGhlIGNlIGFjdGl2aXR5IHRyYWNrZXIuCisJICoKKwkgKiBCdXQgd2Ugb25seSBuZWVk IHRvIHRha2Ugb25lIHBpbiBvbiB0aGUgYWNjb3VudCBvZiBpdC4gT3IgaW4gb3RoZXIKKwkgKiB3 b3JkcyB0cmFuc2ZlciB0aGUgcGlubmVkIGNlIG9iamVjdCB0byB0cmFja2VkIGFjdGl2ZSByZXF1 ZXN0LgorCSAqLworCWlmICghaTkxNV9nZW1fYWN0aXZlX2lzc2V0KCZjZS0+YWN0aXZlX3RyYWNr ZXIpKQorCQlfX2ludGVsX2NvbnRleHRfcGluKGNlKTsKKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZj ZS0+YWN0aXZlX3RyYWNrZXIsIHJxKTsKKworb3V0X2FkZDoKKwlpOTE1X3JlcXVlc3RfYWRkKHJx KTsKK291dF9wdXQ6CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50CitpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKKwkJCQkgIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCit7CisJc3RydWN0IGludGVs X2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CisJaW50IHJldDsK KworCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKKwlHRU1fQlVHX09OKGVu Z2luZS0+aWQgIT0gUkNTKTsKKworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4 LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ LyogTm90aGluZyB0byBkbyBpZiB1bm1vZGlmaWVkLiAqLworCWlmICghbWVtY21wKCZjZS0+c3Nl dSwgJnNzZXUsIHNpemVvZihzc2V1KSkpCisJCWdvdG8gb3V0OworCisJLyoKKwkgKiBJZiBjb250 ZXh0IGlzIG5vdCBpZGxlIHdlIGhhdmUgdG8gc3VibWl0IGFuIG9yZGVyZWQgcmVxdWVzdCB0byBt b2RpZnkKKwkgKiBpdHMgY29udGV4dCBpbWFnZSB2aWEgdGhlIGtlcm5lbCBjb250ZXh0LiBQcmlz dGluZSBhbmQgaWRsZSBjb250ZXh0cworCSAqIHdpbGwgYmUgY29uZmlndXJlZCBvbiBwaW5uaW5n LgorCSAqLworCWlmIChjZS0+cGluX2NvdW50KQorCQlyZXQgPSBnZW44X21vZGlmeV9ycGNzX2dw dShjZSwgZW5naW5lLCBzc2V1KTsKKworCWlmICghcmV0KQorCQljZS0+c3NldSA9IHNzZXU7CisK K291dDoKKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwly ZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Cit1c2VyX3RvX2NvbnRleHRfc3NldShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW1fc3NldSAqdXNlciwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSAqY29u dGV4dCkKK3sKKwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqZGV2aWNlID0gJklOVEVMX0lO Rk8oaTkxNSktPnNzZXU7CisKKwkvKiBObyB6ZXJvcyBpbiBhbnkgZmllbGQuICovCisJaWYgKCF1 c2VyLT5zbGljZV9tYXNrIHx8ICF1c2VyLT5zdWJzbGljZV9tYXNrIHx8CisJICAgICF1c2VyLT5t aW5fZXVzX3Blcl9zdWJzbGljZSB8fCAhdXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJCXJl dHVybiAtRUlOVkFMOworCisJLyogTWF4ID4gbWluLiAqLworCWlmICh1c2VyLT5tYXhfZXVzX3Bl cl9zdWJzbGljZSA8IHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCS8qIENoZWNrIHZhbGlkaXR5IGFnYWluc3QgaGFyZHdhcmUuICovCisJaWYgKHVzZXIt PnNsaWNlX21hc2sgJiB+ZGV2aWNlLT5zbGljZV9tYXNrKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWlmICh1c2VyLT5zdWJzbGljZV9tYXNrICYgfmRldmljZS0+c3Vic2xpY2VfbWFza1swXSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPiBkZXZp Y2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qCisJICog U29tZSBmdXR1cmUgcHJvb2Zpbmcgb24gdGhlIHR5cGVzIHNpbmNlIHRoZSB1QVBJIGlzIHdpZGVy IHRoYW4gdGhlCisJICogY3VycmVudCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlp ZiAoV0FSTl9PTigoZmxzKHVzZXItPnNsaWNlX21hc2spID4KKwkJICAgICBzaXplb2YoY29udGV4 dC0+c2xpY2VfbWFzaykgKiBCSVRTX1BFUl9CWVRFKSB8fAorCQkgICAgKGZscyh1c2VyLT5zdWJz bGljZV9tYXNrKSA+CisJCSAgICAgc2l6ZW9mKGNvbnRleHQtPnN1YnNsaWNlX21hc2spICogQklU U19QRVJfQllURSkgfHwKKwkJICAgIG92ZXJmbG93c190eXBlKHVzZXItPm1pbl9ldXNfcGVyX3N1 YnNsaWNlLAorCQkJCSAgIGNvbnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlKSB8fAorCQkgICAg b3ZlcmZsb3dzX3R5cGUodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAgY29udGV4 dC0+bWF4X2V1c19wZXJfc3Vic2xpY2UpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljb250ZXh0 LT5zbGljZV9tYXNrID0gdXNlci0+c2xpY2VfbWFzazsKKwljb250ZXh0LT5zdWJzbGljZV9tYXNr ID0gdXNlci0+c3Vic2xpY2VfbWFzazsKKwljb250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSA9 IHVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlOworCWNvbnRleHQtPm1heF9ldXNfcGVyX3N1YnNs aWNlID0gdXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwkvKiBQYXJ0IHNwZWNpZmljIHJl c3RyaWN0aW9ucy4gKi8KKwlpZiAoSVNfR0VOKGk5MTUsIDExKSkgeworCQl1bnNpZ25lZCBpbnQg aHdfcyA9IGh3ZWlnaHQ4KGRldmljZS0+c2xpY2VfbWFzayk7CisJCXVuc2lnbmVkIGludCBod19z c19wZXJfcyA9IGh3ZWlnaHQ4KGRldmljZS0+c3Vic2xpY2VfbWFza1swXSk7CisJCXVuc2lnbmVk IGludCByZXFfcyA9IGh3ZWlnaHQ4KGNvbnRleHQtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBp bnQgcmVxX3NzID0gaHdlaWdodDgoY29udGV4dC0+c3Vic2xpY2VfbWFzayk7CisKKwkJLyoKKwkJ ICogT25seSBmdWxsIHN1YnNsaWNlIGVuYWJsZW1lbnQgaXMgcG9zc2libGUgaWYgbW9yZSB0aGFu IG9uZQorCQkgKiBzbGljZSBpcyB0dXJuZWQgb24uCisJCSAqLworCQlpZiAocmVxX3MgPiAxICYm IHJlcV9zcyAhPSBod19zc19wZXJfcykKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAq IElmIG1vcmUgdGhhbiBmb3VyIChTU2NvdW50IGJpdGZpZWxkIGxpbWl0KSBzdWJzbGljZXMgYXJl CisJCSAqIHJlcXVlc3RlZCB0aGVuIHRoZSBudW1iZXIgaGFzIHRvIGJlIGV2ZW4uCisJCSAqLwor CQlpZiAocmVxX3NzID4gNCAmJiAocmVxX3NzICYgMSkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwor CQkvKgorCQkgKiBJZiBvbmx5IG9uZSBzbGljZSBpcyBlbmFibGVkIGFuZCBzdWJzbGljZSBjb3Vu dCBpcyBiZWxvdyB0aGUKKwkJICogZGV2aWNlIGZ1bGwgZW5hYmxlbWVudCwgaXQgbXVzdCBiZSBh dCBtb3N0IGhhbGYgb2YgdGhlIGFsbAorCQkgKiBhdmFpbGFibGUgc3Vic2xpY2VzLgorCQkgKi8K KwkJaWYgKHJlcV9zID09IDEgJiYgcmVxX3NzIDwgaHdfc3NfcGVyX3MgJiYKKwkJICAgIHJlcV9z cyA+IChod19zc19wZXJfcyAvIDIpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogQUJJIHJl c3RyaWN0aW9uIC0gVk1FIHVzZSBjYXNlIG9ubHkuICovCisKKwkJLyogQWxsIHNsaWNlcyBvciBv bmUgc2xpY2Ugb25seS4gKi8KKwkJaWYgKHJlcV9zICE9IDEgJiYgcmVxX3MgIT0gaHdfcykKKwkJ CXJldHVybiAtRUlOVkFMOworCisJCS8qCisJCSAqIEhhbGYgc3Vic2xpY2VzIG9yIGZ1bGwgZW5h YmxlbWVudCBvbmx5IHdoZW4gb25lIHNsaWNlIGlzCisJCSAqIGVuYWJsZWQuCisJCSAqLworCQlp ZiAocmVxX3MgPT0gMSAmJgorCQkgICAgKHJlcV9zcyAhPSBod19zc19wZXJfcyAmJiByZXFfc3Mg IT0gKGh3X3NzX3Blcl9zIC8gMikpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyogTm8gRVUg Y29uZmlndXJhdGlvbiBjaGFuZ2VzLiAqLworCQlpZiAoKHVzZXItPm1pbl9ldXNfcGVyX3N1YnNs aWNlICE9CisJCSAgICAgZGV2aWNlLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgICh1 c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSAhPQorCQkgICAgIGRldmljZS0+bWF4X2V1c19wZXJf c3Vic2xpY2UpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCXN0cnVjdCBpbnRlbF9zc2V1IHNzZXU7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5zaXpl IDwgc2l6ZW9mKHVzZXJfc3NldSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFJU19HRU4o aTkxNSwgMTEpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNl cl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJf c3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNl cl9zc2V1LnJzdmQyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2lu ZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKKwkJCQkJICB1c2Vy X3NzZXUuaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8q IE9ubHkgcmVuZGVyIGVuZ2luZSBzdXBwb3J0cyBSUENTIGNvbmZpZ3VyYXRpb24uICovCisJaWYg KGVuZ2luZS0+Y2xhc3MgIT0gUkVOREVSX0NMQVNTKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJl dCA9IHVzZXJfdG9fY29udGV4dF9zc2V1KGk5MTUsICZ1c2VyX3NzZXUsICZzc2V1KTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9yZWNvbmZpZ3Vy ZV9zc2V1KGN0eCwgZW5naW5lLCBzc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ YXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBp OTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTk1MCw3ICsx Mjg1LDkgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkJSTkxNV9VU0VSX1BSSU9SSVRZKHByaW9yaXR5 KTsKIAkJfQogCQlicmVhazsKLQorCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJl dCA9IHNldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1F SU5WQUw7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCmlu ZGV4IGVmMDRlNDIyY2Y5YS4uMmRlZDRiOGM5YjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5oCkBAIC0xNzEsNiArMTcxLDEyIEBAIHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0IHsKIAkJdTY0IGxyY19kZXNjOwogCQlpbnQgcGluX2NvdW50OwogCisJCS8qKgorCQkgKiBh Y3RpdmVfdHJhY2tlcjogQWN0aXZlIHRyYWNrZXIgZm9yIHRoZSBleHRlcm5hbCBycSBhY3Rpdml0 eQorCQkgKiBvbiB0aGlzIGludGVsX2NvbnRleHQgb2JqZWN0LgorCQkgKi8KKwkJc3RydWN0IGk5 MTVfZ2VtX2FjdGl2ZSBhY3RpdmVfdHJhY2tlcjsKKwogCQljb25zdCBzdHJ1Y3QgaW50ZWxfY29u dGV4dF9vcHMgKm9wczsKIAogCQkvKiogc3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0aXRpb25p bmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggMDkyYTI4YjU4M2YwLi5kMjdhMGZj ZDk1ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0yMzc3LDcgKzIzNzcsOSBAQCB1 MzIgZ2VuOF9tYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBp bnRlbF9zc2V1ICpyZXFfc3NldSkKIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291 bnQgYmV0d2VlbiBvbmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0CiAJICogc2xpY2UuCiAJICovCi0J aWYgKElTX0dFTihpOTE1LCAxMSkgJiYgc2xpY2VzID09IDEgJiYgc3Vic2xpY2VzID49IDQpIHsK KwlpZiAoSVNfR0VOKGk5MTUsIDExKSAmJgorCSAgICBzbGljZXMgPT0gMSAmJgorCSAgICBzdWJz bGljZXMgPiBtaW5fdCh1OCwgNCwgaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1swXSkgLyAy KSkgewogCQlHRU1fQlVHX09OKHN1YnNsaWNlcyAmIDEpOwogCiAJCXN1YnNsaWNlX3BnID0gZmFs c2U7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggMjk4YjJlMTk3NzQ0Li5lYzkzYWZhMDA5YWIgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmgKQEAgLTE0ODYsOSArMTQ4Niw1MiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gewogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQkx MDIzIC8qIGluY2x1c2l2ZSAqLwogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BSSU9S SVRZCQkwCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIzIC8q IGluY2x1c2l2ZSAqLworCS8qCisJICogV2hlbiB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtLCB2 YWx1ZSBzaG91bGQgYmUgYSBwb2ludGVyIHRvCisJICogZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW1fc3NldS4KKwkgKi8KKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1NTRVUJCTB4NwogCV9f dTY0IHZhbHVlOwogfTsKIAorc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUg eworCS8qCisJICogRW5naW5lIGNsYXNzICYgaW5zdGFuY2UgdG8gYmUgY29uZmlndXJlZCBvciBx dWVyaWVkLgorCSAqLworCV9fdTE2IGNsYXNzOworCV9fdTE2IGluc3RhbmNlOworCisJLyoKKwkg KiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRvIHplcm8uCisJICovCisJX191MzIg ZmxhZ3M7CisKKwkvKgorCSAqIE1hc2sgb2Ygc2xpY2VzIHRvIGVuYWJsZSBmb3IgdGhlIGNvbnRl eHQuIFZhbGlkIHZhbHVlcyBhcmUgYSBzdWJzZXQKKwkgKiBvZiB0aGUgYml0bWFzayB2YWx1ZSBy ZXR1cm5lZCBmb3IgSTkxNV9QQVJBTV9TTElDRV9NQVNLLgorCSAqLworCV9fdTY0IHNsaWNlX21h c2s7CisKKwkvKgorCSAqIE1hc2sgb2Ygc3Vic2xpY2VzIHRvIGVuYWJsZSBmb3IgdGhlIGNvbnRl eHQuIFZhbGlkIHZhbHVlcyBhcmUgYQorCSAqIHN1YnNldCBvZiB0aGUgYml0bWFzayB2YWx1ZSBy ZXR1cm4gYnkgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLLgorCSAqLworCV9fdTY0IHN1YnNsaWNl X21hc2s7CisKKwkvKgorCSAqIE1pbmltdW0vTWF4aW11bSBudW1iZXIgb2YgRVVzIHRvIGVuYWJs ZSBwZXIgc3Vic2xpY2UgZm9yIHRoZQorCSAqIGNvbnRleHQuIG1pbl9ldXNfcGVyX3N1YnNsaWNl IG11c3QgYmUgaW5mZXJpb3Igb3IgZXF1YWwgdG8KKwkgKiBtYXhfZXVzX3Blcl9zdWJzbGljZS4K KwkgKi8KKwlfX3UxNiBtaW5fZXVzX3Blcl9zdWJzbGljZTsKKwlfX3UxNiBtYXhfZXVzX3Blcl9z dWJzbGljZTsKKworCS8qCisJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6 ZXJvLgorCSAqLworCV9fdTMyIHJzdmQyOworfTsKKwogZW51bSBkcm1faTkxNV9vYV9mb3JtYXQg ewogCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAqLwogCUk5MTVfT0Ff Rk9STUFUX0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=