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: Mon, 14 Jan 2019 13:57:26 +0000 Message-ID: <20190114135727.14851-6-tvrtko.ursulin@linux.intel.com> References: <20190114135727.14851-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 CF87D6E8EB for ; Mon, 14 Jan 2019 13:57:39 +0000 (UTC) In-Reply-To: <20190114135727.14851-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 ZSB1QVBJIGZvciBmbGFncyBzdHJhaWdodCBhd2F5LiAoQ2hyaXMgV2lsc29uKQoKdjIzOgogKiBS ZWJhc2UgZm9yIFJVTlRJTUVfSU5GTy4KCnYyNDoKICogQWRkZWQgc29tZSBoZWFkbGluZSBkb2Nz IGZvciB0aGUgdWFwaSB1c2FnZS4gKEpvb25hcy9DaHJpcykKCnYyNToKICogUmVuYW1lZCBjbGFz cy9pbnN0YW5jZSB0byBlbmdpbmVfY2xhc3MvZW5naW5lX2luc3RhbmNlIHRvIGF2b2lkIGNsYXNo CiAgIHdpdGggQysrIGtleXdvcmQuIChUb255IFllKQoKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5m cmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDg5OQpCdWd6aWxsYTogaHR0cHM6Ly9i dWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjM0Cklzc3VlOiBodHRwczov L2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2lzc3Vlcy8yNjcKU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYtYnk6IExp b25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KQ2M6IERtaXRy eSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBpbnRlbC5jb20+CkNjOiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogWmhpcGVuZyBHb25nIDx6aGlwZW5n LmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGlu dXguaW50ZWwuY29tPgpDYzogVG9ueSBZZSA8dG9ueS55ZUBpbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4gIyB2MjEKUmV2aWV3ZWQt Ynk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAzNDEgKysrKysrKysr KysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0Lmgg fCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICA0ICst CiBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNjQgKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgNDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGExODIwNDVlMzgwOC4uZjY1ZDNl OTA4OWI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC04OSw2 ICs4OSw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgog I2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKICNkZWZpbmUgQUxMX0wzX1NMSUNFUyhk ZXYpICgxIDw8IE5VTV9MM19TTElDRVMoZGV2KSkgLSAxCkBAIC0zMjEsNiArMzIyLDE1IEBAIHN0 YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAogCXJldHVybiBkZXNjOwogfQogCitzdGF0aWMgdm9pZCBpbnRlbF9jb250ZXh0 X3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCisJCQkJIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9CisJCWNvbnRhaW5l cl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3RpdmVfdHJhY2tlcik7CisKKwlpbnRlbF9jb250 ZXh0X3VucGluKGNlKTsKK30KKwogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKIF9f Y3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkg ICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQpAQCAtMzQ0LDYgKzM1 NCw4IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQljZS0+Z2VtX2NvbnRleHQgPSBjdHg7CiAJCS8qIFVzZSB0aGUgd2hvbGUgZGV2aWNl IGJ5IGRlZmF1bHQgKi8KIAkJY2UtPnNzZXUgPSBpbnRlbF9kZXZpY2VfZGVmYXVsdF9zc2V1KGRl dl9wcml2KTsKKworCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZjZS0+YWN0aXZlX3RyYWNrZXIsIGlu dGVsX2NvbnRleHRfcmV0aXJlKTsKIAl9CiAKIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxl c192bWEsIEdGUF9LRVJORUwpOwpAQCAtODQxLDYgKzg1Myw1NiBAQCBpbnQgaTkxNV9nZW1fY29u dGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7CisJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPT0gMCkKKwkJZ290byBvdXQ7CisJZWxz ZSBpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+ dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKwor CWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJCXJldHVybiAtRUlOVkFM OworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkxNSwKKwkJCQkJ ICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfaW5zdGFu Y2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE9ubHkgdXNlIGZv ciBtdXRleCBoZXJlIGlzIHRvIHNlcmlhbGl6ZSBnZXRfcGFyYW0gYW5kIHNldF9wYXJhbS4gKi8K KwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWNlID0gdG9faW50ZWxfY29udGV4 dChjdHgsIGVuZ2luZSk7CisKKwl1c2VyX3NzZXUuc2xpY2VfbWFzayA9IGNlLT5zc2V1LnNsaWNl X21hc2s7CisJdXNlcl9zc2V1LnN1YnNsaWNlX21hc2sgPSBjZS0+c3NldS5zdWJzbGljZV9tYXNr OworCXVzZXJfc3NldS5taW5fZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1pbl9ldXNfcGVy X3N1YnNsaWNlOworCXVzZXJfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1h eF9ldXNfcGVyX3N1YnNsaWNlOworCisJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCisJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFs dWUpLCAmdXNlcl9zc2V1LAorCQkJIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFV TFQ7CisKK291dDoKKwlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7CisKKwlyZXR1cm4g MDsKK30KKwogaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQog ewpAQCAtODUzLDE1ICs5MTUsMTcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoIWN0eCkKIAkJcmV0 dXJuIC1FTk9FTlQ7CiAKLQlhcmdzLT5zaXplID0gMDsKIAlzd2l0Y2ggKGFyZ3MtPnBhcmFtKSB7 CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKIAkJcmV0ID0gLUVJTlZBTDsK IAkJYnJlYWs7CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoKKwkJYXJncy0+ c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRFWFRfTk9fWkVST01BUCwg JmN0eC0+dXNlcl9mbGFncyk7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0dU VF9TSVpFOgorCQlhcmdzLT5zaXplID0gMDsKKwogCQlpZiAoY3R4LT5wcGd0dCkKIAkJCWFyZ3Mt PnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7CiAJCWVsc2UgaWYgKHRvX2k5MTUoZGV2KS0+ bW0uYWxpYXNpbmdfcHBndHQpCkBAIC04NzAsMTQgKzkzNCwyMCBAQCBpbnQgaTkxNV9nZW1fY29u dGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQkJYXJncy0+dmFsdWUgPSB0b19pOTE1KGRldiktPmdndHQudm0udG90YWw7CiAJCWJyZWFrOwog CWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9SX0NBUFRVUkU6CisJCWFyZ3MtPnNpemUg PSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfbm9fZXJyb3JfY2FwdHVyZShj dHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5OQUJMRToKKwkJYXJn cy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9pc19iYW5uYWJs ZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWToKKwkJ YXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gY3R4LT5zY2hlZC5wcmlvcml0eSA+PiBJ OTE1X1VTRVJfUFJJT1JJVFlfU0hJRlQ7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9DT05URVhUX1BB UkFNX1NTRVU6CisJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1 bHQ6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwpAQCAtODg3LDYgKzk1NywyNzEgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNz X2NvbmZpZyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCQkgc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLAorCQkJCSBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQoreworCXU2NCBvZmZzZXQ7CisJ dTMyICpjczsKKworCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7CisJaWYgKElTX0VSUihj cykpCisJCXJldHVybiBQVFJfRVJSKGNzKTsKKworCW9mZnNldCA9IGNlLT5zdGF0ZS0+bm9kZS5z dGFydCArCisJCUxSQ19TVEFURV9QTiAqIFBBR0VfU0laRSArCisJCShDVFhfUl9QV1JfQ0xLX1NU QVRFICsgMSkgKiA0OworCisJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VT RV9HR1RUOworCSpjcysrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gdXBwZXJf MzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gZ2VuOF9tYWtlX3JwY3MocnEtPmk5MTUsICZzc2V1 KTsKKworCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQKK2dlbjhfbW9kaWZ5X3JwY3NfZ3B1KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwK KwkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAgICAgc3RydWN0IGlu dGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2lu ZS0+aTkxNTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnByZXY7CisJaW50IHJldDsKKwor CUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQpOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwkvKiBTdWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVk cyB0aGUgaHcgYXdha2UuICovCisJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwlycSA9 IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKKwlpZiAo SVNfRVJSKHJxKSkgeworCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBvdXRfcHV0OworCX0K KworCS8qIFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSBieSB0aGlz IGNvbnRleHQuICovCisJcHJldiA9IGk5MTVfZ2VtX2FjdGl2ZV9yYXcoJmNlLT5yaW5nLT50aW1l bGluZS0+bGFzdF9yZXF1ZXN0LAorCQkJCSAgICZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlp ZiAocHJldiAmJiAhaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkgeworCQlyZXQgPSBpOTE1 X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwKKwkJCQkJCSAgICAgICAm cHJldi0+c3VibWl0LAorCQkJCQkJICAgICAgIEk5MTVfRkVOQ0VfR0ZQKTsKKwkJaWYgKHJldCA8 IDApCisJCQlnb3RvIG91dF9hZGQ7CisJfQorCisJcmV0ID0gZ2VuOF9lbWl0X3JwY3NfY29uZmln KHJxLCBjZSwgc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfYWRkOworCisJLyogT3JkZXIg YWxsIGZvbGxvd2luZyByZXF1ZXN0cyB0byBiZSBhZnRlci4gKi8KKwlpOTE1X3RpbWVsaW5lX3Nl dF9iYXJyaWVyKGNlLT5yaW5nLT50aW1lbGluZSwgcnEpOworCisJLyoKKwkgKiBHdWFyYW50ZWUg Y29udGV4dCBpbWFnZSBhbmQgdGhlIHRpbWVsaW5lIHJlbWFpbnMgcGlubmVkIHVudGlsIHRoZQor CSAqIG1vZGlmeWluZyByZXF1ZXN0IGlzIHJldGlyZWQgYnkgc2V0dGluZyB0aGUgY2UgYWN0aXZp dHkgdHJhY2tlci4KKwkgKgorCSAqIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gdGFrZSBvbmUgcGluIG9u IHRoZSBhY2NvdW50IG9mIGl0LiBPciBpbiBvdGhlcgorCSAqIHdvcmRzIHRyYW5zZmVyIHRoZSBw aW5uZWQgY2Ugb2JqZWN0IHRvIHRyYWNrZWQgYWN0aXZlIHJlcXVlc3QuCisJICovCisJaWYgKCFp OTE1X2dlbV9hY3RpdmVfaXNzZXQoJmNlLT5hY3RpdmVfdHJhY2tlcikpCisJCV9faW50ZWxfY29u dGV4dF9waW4oY2UpOworCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJmNlLT5hY3RpdmVfdHJhY2tlciwg cnEpOworCitvdXRfYWRkOgorCWk5MTVfcmVxdWVzdF9hZGQocnEpOworb3V0X3B1dDoKKwlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQK K2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgc3Ry dWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0b19p bnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTihJTlRF TF9HRU4oY3R4LT5pOTE1KSA8IDgpOworCUdFTV9CVUdfT04oZW5naW5lLT5pZCAhPSBSQ1MpOwor CisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlm IHVubW9kaWZpZWQuICovCisJaWYgKCFtZW1jbXAoJmNlLT5zc2V1LCAmc3NldSwgc2l6ZW9mKHNz ZXUpKSkKKwkJZ290byBvdXQ7CisKKwkvKgorCSAqIElmIGNvbnRleHQgaXMgbm90IGlkbGUgd2Ug aGF2ZSB0byBzdWJtaXQgYW4gb3JkZXJlZCByZXF1ZXN0IHRvIG1vZGlmeQorCSAqIGl0cyBjb250 ZXh0IGltYWdlIHZpYSB0aGUga2VybmVsIGNvbnRleHQuIFByaXN0aW5lIGFuZCBpZGxlIGNvbnRl eHRzCisJICogd2lsbCBiZSBjb25maWd1cmVkIG9uIHBpbm5pbmcuCisJICovCisJaWYgKGNlLT5w aW5fY291bnQpCisJCXJldCA9IGdlbjhfbW9kaWZ5X3JwY3NfZ3B1KGNlLCBlbmdpbmUsIHNzZXUp OworCisJaWYgKCFyZXQpCisJCWNlLT5zc2V1ID0gc3NldTsKKworb3V0OgorCW11dGV4X3VubG9j aygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQKK3VzZXJfdG9fY29udGV4dF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAorCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1 ICp1c2VyLAorCQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1ICpjb250ZXh0KQoreworCWNvbnN0IHN0 cnVjdCBzc2V1X2Rldl9pbmZvICpkZXZpY2UgPSAmUlVOVElNRV9JTkZPKGk5MTUpLT5zc2V1Owor CisJLyogTm8gemVyb3MgaW4gYW55IGZpZWxkLiAqLworCWlmICghdXNlci0+c2xpY2VfbWFzayB8 fCAhdXNlci0+c3Vic2xpY2VfbWFzayB8fAorCSAgICAhdXNlci0+bWluX2V1c19wZXJfc3Vic2xp Y2UgfHwgIXVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CS8qIE1heCA+IG1pbi4gKi8KKwlpZiAodXNlci0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPCB1c2Vy LT5taW5fZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBDaGVjayB2 YWxpZGl0eSBhZ2FpbnN0IGhhcmR3YXJlLiAqLworCWlmICh1c2VyLT5zbGljZV9tYXNrICYgfmRl dmljZS0+c2xpY2VfbWFzaykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAodXNlci0+c3Vic2xp Y2VfbWFzayAmIH5kZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pCisJCXJldHVybiAtRUlOVkFMOwor CisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlID4gZGV2aWNlLT5tYXhfZXVzX3Blcl9z dWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIFNvbWUgZnV0dXJlIHByb29m aW5nIG9uIHRoZSB0eXBlcyBzaW5jZSB0aGUgdUFQSSBpcyB3aWRlciB0aGFuIHRoZQorCSAqIGN1 cnJlbnQgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisJICovCisJaWYgKFdBUk5fT04oKGZscyh1 c2VyLT5zbGljZV9tYXNrKSA+CisJCSAgICAgc2l6ZW9mKGNvbnRleHQtPnNsaWNlX21hc2spICog QklUU19QRVJfQllURSkgfHwKKwkJICAgIChmbHModXNlci0+c3Vic2xpY2VfbWFzaykgPgorCQkg ICAgIHNpemVvZihjb250ZXh0LT5zdWJzbGljZV9tYXNrKSAqIEJJVFNfUEVSX0JZVEUpIHx8CisJ CSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSwKKwkJCQkgICBj b250ZXh0LT5taW5fZXVzX3Blcl9zdWJzbGljZSkgfHwKKwkJICAgIG92ZXJmbG93c190eXBlKHVz ZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlLAorCQkJCSAgIGNvbnRleHQtPm1heF9ldXNfcGVyX3N1 YnNsaWNlKSkpCisJCXJldHVybiAtRUlOVkFMOworCisJY29udGV4dC0+c2xpY2VfbWFzayA9IHVz ZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vic2xpY2VfbWFzayA9IHVzZXItPnN1YnNsaWNl X21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5taW5fZXVzX3Bl cl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHVzZXItPm1heF9l dXNfcGVyX3N1YnNsaWNlOworCisJLyogUGFydCBzcGVjaWZpYyByZXN0cmljdGlvbnMuICovCisJ aWYgKElTX0dFTihpOTE1LCAxMSkpIHsKKwkJdW5zaWduZWQgaW50IGh3X3MgPSBod2VpZ2h0OChk ZXZpY2UtPnNsaWNlX21hc2spOworCQl1bnNpZ25lZCBpbnQgaHdfc3NfcGVyX3MgPSBod2VpZ2h0 OChkZXZpY2UtPnN1YnNsaWNlX21hc2tbMF0pOworCQl1bnNpZ25lZCBpbnQgcmVxX3MgPSBod2Vp Z2h0OChjb250ZXh0LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zcyA9IGh3ZWln aHQ4KGNvbnRleHQtPnN1YnNsaWNlX21hc2spOworCisJCS8qCisJCSAqIE9ubHkgZnVsbCBzdWJz bGljZSBlbmFibGVtZW50IGlzIHBvc3NpYmxlIGlmIG1vcmUgdGhhbiBvbmUKKwkJICogc2xpY2Ug aXMgdHVybmVkIG9uLgorCQkgKi8KKwkJaWYgKHJlcV9zID4gMSAmJiByZXFfc3MgIT0gaHdfc3Nf cGVyX3MpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBtb3JlIHRoYW4gZm91 ciAoU1Njb3VudCBiaXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQorCQkgKiByZXF1ZXN0ZWQg dGhlbiB0aGUgbnVtYmVyIGhhcyB0byBiZSBldmVuLgorCQkgKi8KKwkJaWYgKHJlcV9zcyA+IDQg JiYgKHJlcV9zcyAmIDEpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYgb25s eSBvbmUgc2xpY2UgaXMgZW5hYmxlZCBhbmQgc3Vic2xpY2UgY291bnQgaXMgYmVsb3cgdGhlCisJ CSAqIGRldmljZSBmdWxsIGVuYWJsZW1lbnQsIGl0IG11c3QgYmUgYXQgbW9zdCBoYWxmIG9mIHRo ZSBhbGwKKwkJICogYXZhaWxhYmxlIHN1YnNsaWNlcy4KKwkJICovCisJCWlmIChyZXFfcyA9PSAx ICYmIHJlcV9zcyA8IGh3X3NzX3Blcl9zICYmCisJCSAgICByZXFfc3MgPiAoaHdfc3NfcGVyX3Mg LyAyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIEFCSSByZXN0cmljdGlvbiAtIFZNRSB1 c2UgY2FzZSBvbmx5LiAqLworCisJCS8qIEFsbCBzbGljZXMgb3Igb25lIHNsaWNlIG9ubHkuICov CisJCWlmIChyZXFfcyAhPSAxICYmIHJlcV9zICE9IGh3X3MpCisJCQlyZXR1cm4gLUVJTlZBTDsK KworCQkvKgorCQkgKiBIYWxmIHN1YnNsaWNlcyBvciBmdWxsIGVuYWJsZW1lbnQgb25seSB3aGVu IG9uZSBzbGljZSBpcworCQkgKiBlbmFibGVkLgorCQkgKi8KKwkJaWYgKHJlcV9zID09IDEgJiYK KwkJICAgIChyZXFfc3MgIT0gaHdfc3NfcGVyX3MgJiYgcmVxX3NzICE9IChod19zc19wZXJfcyAv IDIpKSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCS8qIE5vIEVVIGNvbmZpZ3VyYXRpb24gY2hh bmdlcy4gKi8KKwkJaWYgKCh1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZSAhPQorCQkgICAgIGRl dmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICAodXNlci0+bWF4X2V1c19wZXJf c3Vic2xpY2UgIT0KKwkJICAgICBkZXZpY2UtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSkKKwkJCXJl dHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNldF9zc2V1 KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSBjdHgtPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgdXNl cl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxf c3NldSBzc2V1OworCWludCByZXQ7CisKKwlpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3Nz ZXUpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghSVNfR0VOKGk5MTUsIDExKSkKKwkJcmV0 dXJuIC1FTk9ERVY7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3Vz ZXJfcHRyKGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJu IC1FRkFVTFQ7CisKKwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihpOTE1 LAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1LmVuZ2lu ZV9pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogT25s eSByZW5kZXIgZW5naW5lIHN1cHBvcnRzIFJQQ1MgY29uZmlndXJhdGlvbi4gKi8KKwlpZiAoZW5n aW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0ID0g dXNlcl90b19jb250ZXh0X3NzZXUoaTkxNSwgJnVzZXJfc3NldSwgJnNzZXUpOworCWlmIChyZXQp CisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3Nz ZXUoY3R4LCBlbmdpbmUsIHNzZXUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlhcmdz LT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGk5MTVf Z2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQogewpAQCAtOTQ5LDcgKzEyODQs OSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCQlJOTE1X1VTRVJfUFJJT1JJVFkocHJpb3JpdHkpOwog CQl9CiAJCWJyZWFrOwotCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0g c2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZB TDsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXgg ZWYwNGU0MjJjZjlhLi4yZGVkNGI4YzliOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmgKQEAgLTE3MSw2ICsxNzEsMTIgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg ewogCQl1NjQgbHJjX2Rlc2M7CiAJCWludCBwaW5fY291bnQ7CiAKKwkJLyoqCisJCSAqIGFjdGl2 ZV90cmFja2VyOiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIGV4dGVybmFsIHJxIGFjdGl2aXR5CisJ CSAqIG9uIHRoaXMgaW50ZWxfY29udGV4dCBvYmplY3QuCisJCSAqLworCQlzdHJ1Y3QgaTkxNV9n ZW1fYWN0aXZlIGFjdGl2ZV90cmFja2VyOworCiAJCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0 X29wcyAqb3BzOwogCiAJCS8qKiBzc2V1OiBDb250cm9sIGV1L3NsaWNlIHBhcnRpdGlvbmluZyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBmYmJmYTc5MmQ0ZDcuLjU1MGJlMGM2NWJl OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTIzODgsNyArMjM4OCw5IEBAIHUzMiBn ZW44X21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVs X3NzZXUgKnJlcV9zc2V1KQogCSAqIHN1YnNsaWNlcyBhcmUgZW5hYmxlZCwgb3IgYSBjb3VudCBi ZXR3ZWVuIG9uZSBhbmQgZm91ciBvbiB0aGUgZmlyc3QKIAkgKiBzbGljZS4KIAkgKi8KLQlpZiAo SVNfR0VOKGk5MTUsIDExKSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgeworCWlm IChJU19HRU4oaTkxNSwgMTEpICYmCisJICAgIHNsaWNlcyA9PSAxICYmCisJICAgIHN1YnNsaWNl cyA+IG1pbl90KHU4LCA0LCBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKSAvIDIpKSB7 CiAJCUdFTV9CVUdfT04oc3Vic2xpY2VzICYgMSk7CiAKIAkJc3Vic2xpY2VfcGcgPSBmYWxzZTsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaAppbmRleCAyOThiMmUxOTc3NDQuLjM5NzgxMGZhMmQzMyAxMDA2NDQKLS0t IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaApAQCAtMTQ4Niw5ICsxNDg2LDczIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSB7CiAjZGVmaW5lICAgSTkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCTEwMjMg LyogaW5jbHVzaXZlICovCiAjZGVmaW5lICAgSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkJ CTAKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkJLTEwMjMgLyogaW5j bHVzaXZlICovCisJLyoKKwkgKiBXaGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0sIHZhbHVl IHNob3VsZCBiZSBhIHBvaW50ZXIgdG8KKwkgKiBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9z c2V1LgorCSAqLworI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3CiAJX191NjQg dmFsdWU7CiB9OwogCisvKioKKyAqIENvbnRleHQgU1NFVSBwcm9ncmFtbWluZworICoKKyAqIEl0 IG1heSBiZSBuZWNlc3NhcnkgZm9yIGVpdGhlciBmdW5jdGlvbmFsIG9yIHBlcmZvcm1hbmNlIHJl YXNvbiB0byBjb25maWd1cmUKKyAqIGEgY29udGV4dCB0byBydW4gd2l0aCBhIHJlZHVjZWQgbnVt YmVyIG9mIFNTRVUgKHdoZXJlIFNTRVUgc3RhbmRzIGZvciBTbGljZS8KKyAqIFN1Yi1zbGljZS9F VSkuCisgKgorICogVGhpcyBpcyBkb25lIGJ5IGNvbmZpZ3VyaW5nIFNTRVUgY29uZmlndXJhdGlv biB1c2luZyB0aGUgYmVsb3cKKyAqIEBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1f c3NldSBmb3IgZXZlcnkgc3VwcG9ydGVkIGVuZ2luZSB3aGljaAorICogdXNlcnNwYWNlIGludGVu ZHMgdG8gdXNlLgorICoKKyAqIE5vdCBhbGwgR1BVcyBvciBlbmdpbmVzIHN1cHBvcnQgdGhpcyBm dW5jdGlvbmFsaXR5IGluIHdoaWNoIGNhc2UgYW4gZXJyb3IKKyAqIGNvZGUgLUVOT0RFViB3aWxs IGJlIHJldHVybmVkLgorICoKKyAqIEFsc28sIGZsZXhpYmlsaXR5IG9mIHBvc3NpYmxlIFNTRVUg Y29uZmlndXJhdGlvbiBwZXJtdXRhdGlvbnMgdmFyaWVzIGJldHdlZW4KKyAqIEdQVSBnZW5lcmF0 aW9ucyBhbmQgc29mdHdhcmUgaW1wb3NlZCBsaW1pdGF0aW9ucy4gUmVxdWVzdGluZyBzdWNoIGEK KyAqIGNvbWJpbmF0aW9uIHdpbGwgcmV0dXJuIGFuIGVycm9yIGNvZGUgb2YgLUVJTlZBTC4KKyAq CisgKiBOT1RFOiBXaGVuIHBlcmYvT0EgaXMgYWN0aXZlIHRoZSBjb250ZXh0J3MgU1NFVSBjb25m aWd1cmF0aW9uIGlzIGlnbm9yZWQgaW4KKyAqIGZhdm91ciBvZiBhIHNpbmdsZSBnbG9iYWwgc2V0 dGluZy4KKyAqLworc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgeworCS8q CisJICogRW5naW5lIGNsYXNzICYgaW5zdGFuY2UgdG8gYmUgY29uZmlndXJlZCBvciBxdWVyaWVk LgorCSAqLworCV9fdTE2IGVuZ2luZV9jbGFzczsKKwlfX3UxNiBlbmdpbmVfaW5zdGFuY2U7CisK KwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVyby4KKwkgKi8K KwlfX3UzMiBmbGFnczsKKworCS8qCisJICogTWFzayBvZiBzbGljZXMgdG8gZW5hYmxlIGZvciB0 aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhIHN1YnNldAorCSAqIG9mIHRoZSBiaXRtYXNr IHZhbHVlIHJldHVybmVkIGZvciBJOTE1X1BBUkFNX1NMSUNFX01BU0suCisJICovCisJX191NjQg c2xpY2VfbWFzazsKKworCS8qCisJICogTWFzayBvZiBzdWJzbGljZXMgdG8gZW5hYmxlIGZvciB0 aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhCisJICogc3Vic2V0IG9mIHRoZSBiaXRtYXNr IHZhbHVlIHJldHVybiBieSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0suCisJICovCisJX191NjQg c3Vic2xpY2VfbWFzazsKKworCS8qCisJICogTWluaW11bS9NYXhpbXVtIG51bWJlciBvZiBFVXMg dG8gZW5hYmxlIHBlciBzdWJzbGljZSBmb3IgdGhlCisJICogY29udGV4dC4gbWluX2V1c19wZXJf c3Vic2xpY2UgbXVzdCBiZSBpbmZlcmlvciBvciBlcXVhbCB0bworCSAqIG1heF9ldXNfcGVyX3N1 YnNsaWNlLgorCSAqLworCV9fdTE2IG1pbl9ldXNfcGVyX3N1YnNsaWNlOworCV9fdTE2IG1heF9l dXNfcGVyX3N1YnNsaWNlOworCisJLyoKKwkgKiBVbnVzZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVh cmVkIHRvIHplcm8uCisJICovCisJX191MzIgcnN2ZDsKK307CisKIGVudW0gZHJtX2k5MTVfb2Ff Zm9ybWF0IHsKIAlJOTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8KIAlJ OTE1X09BX0ZPUk1BVF9BMjksCSAgICAvKiBIU1cgb25seSAqLwotLSAKMi4xOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK