From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 6/7] drm/i915: Expose RPCS (SSEU) configuration to userspace Date: Wed, 5 Sep 2018 15:22:21 +0100 Message-ID: <20180905142222.3251-7-tvrtko.ursulin@linux.intel.com> References: <20180905142222.3251-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 mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id E021F6E4D0 for ; Wed, 5 Sep 2018 14:22:39 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id y2-v6so8207866wma.1 for ; Wed, 05 Sep 2018 07:22:39 -0700 (PDT) In-Reply-To: <20180905142222.3251-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 RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpXZSB3YW50IHRv IGFsbG93IHVzZXJzcGFjZSB0byByZWNvbmZpZ3VyZSB0aGUgc3Vic2xpY2UgY29uZmlndXJhdGlv biBmb3IKaXRzIG93biB1c2UgY2FzZS4gVG8gZG8gc28sIHdlIGV4cG9zZSBhIGNvbnRleHQgcGFy YW1ldGVyIHRvIGFsbG93CmFkanVzdG1lbnQgb2YgdGhlIFJQQ1MgcmVnaXN0ZXIgc3RvcmVkIHdp dGhpbiB0aGUgY29udGV4dCBpbWFnZSAoYW5kCmN1cnJlbnRseSBub3QgYWNjZXNzaWJsZSB2aWEg TFJJKS4gSWYgdGhlIGNvbnRleHQgaXMgYWRqdXN0ZWQgYmVmb3JlCmZpcnN0IHVzZSwgdGhlIGFk anVzdG1lbnQgaXMgZm9yICJmcmVlIjsgb3RoZXJ3aXNlIGlmIHRoZSBjb250ZXh0IGlzCmFjdGl2 ZSB3ZSBmbHVzaCB0aGUgY29udGV4dCBvZmYgdGhlIEdQVSAoc3RhbGxpbmcgYWxsIHVzZXJzKSBh bmQgZm9yY2luZwp0aGUgR1BVIHRvIHNhdmUgdGhlIGNvbnRleHQgdG8gbWVtb3J5IHdoZXJlIHdl IGNhbiBtb2RpZnkgaXQgYW5kIHNvCmVuc3VyZSB0aGF0IHRoZSByZWdpc3RlciBpcyByZWxvYWRl ZCBvbiBuZXh0IGV4ZWN1dGlvbi4KClRoZSBvdmVyaGVhZCBvZiBtYW5hZ2luZyBhZGRpdGlvbmFs IEVVIHN1YnNsaWNlcyBjYW4gYmUgc2lnbmlmaWNhbnQsCmVzcGVjaWFsbHkgaW4gbXVsdGktY29u dGV4dCB3b3JrbG9hZHMuIE5vbi1HUEdQVSBjb250ZXh0cyBzaG91bGQKcHJlZmVyYWJseSBkaXNh YmxlIHRoZSBzdWJzbGljZXMgaXQgaXMgbm90IHVzaW5nLCBhbmQgb3RoZXJzIHNob3VsZApmaW5l LXR1bmUgdGhlIG51bWJlciB0byBtYXRjaCB0aGVpciB3b3JrbG9hZC4KCldlIGV4cG9zZSBjb21w bGV0ZSBjb250cm9sIG92ZXIgdGhlIFJQQ1MgcmVnaXN0ZXIsIGFsbG93aW5nCmNvbmZpZ3VyYXRp b24gb2Ygc2xpY2Uvc3Vic2xpY2UsIHZpYSBtYXNrcyBwYWNrZWQgaW50byBhIHU2NCBmb3IKc2lt cGxpY2l0eS4gRm9yIGV4YW1wbGUsCgoJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IGFyZzsKCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7IC5j bGFzcyA9IDAsCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuaW5zdGFuY2UgPSAwLCB9OwoKCW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7Cglhcmcu Y3R4X2lkID0gY3R4OwoJYXJnLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVU7Cglhcmcu dmFsdWUgPSAodWludHB0cl90KSAmc3NldTsKCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5 MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0sICZhcmcpID09IDApIHsKCQlzc2V1LnBhY2tlZC5zdWJz bGljZV9tYXNrID0gMDsKCgkJZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhU X1NFVFBBUkFNLCAmYXJnKTsKCX0KCmNvdWxkIGJlIHVzZWQgdG8gZGlzYWJsZSBhbGwgc3Vic2xp Y2VzIHdoZXJlIHN1cHBvcnRlZC4KCnYyOiBGaXggb2Zmc2V0IG9mIENUWF9SX1BXUl9DTEtfU1RB VEUgaW4gaW50ZWxfbHJfY29udGV4dF9zZXRfc3NldSgpIChMaW9uZWwpCgp2MzogQWRkIGFiaWxp dHkgdG8gcHJvZ3JhbSB0aGlzIHBlciBlbmdpbmUgKENocmlzKQoKdjQ6IE1vdmUgbW9zdCBnZXRf c3NldSgpIGludG8gaTkxNV9nZW1fY29udGV4dC5jIChMaW9uZWwpCgp2NTogVmFsaWRhdGUgc3Nl dSBjb25maWd1cmF0aW9uIGFnYWluc3QgdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcyAoTGlvbmVs KQoKdjY6IENoYW5nZSBjb250ZXh0IHBvd2VyZ2F0aW5nIHNldHRpbmdzIHRocm91Z2ggTUlfU0RN IG9uIGtlcm5lbCBjb250ZXh0IChDaHJpcykKCnY3OiBTeW5jaHJvbml6ZSB0aGUgcmVxdWVzdHMg Zm9sbG93aW5nIGEgcG93ZXJnYXRpbmcgc2V0dGluZyBjaGFuZ2UgdXNpbmcgYSBnbG9iYWwKICAg IGRlcGVuZGVuY3kgKENocmlzKQogICAgSXRlcmF0ZSB0aW1lbGluZXMgdGhyb3VnaCBkZXZfcHJp di5ndC5hY3RpdmVfcmluZ3MgKFR2cnRrbykKICAgIERpc2FibGUgUlBDUyBjb25maWd1cmF0aW9u IHNldHRpbmcgZm9yIG5vbiBjYXBhYmxlIHVzZXJzIChMaW9uZWwvVHZydGtvKQoKdjg6IHMvdW5p b24gaW50ZWxfc3NldS9zdHJ1Y3QgaW50ZWxfc3NldS8gKExpb25lbCkKICAgIHMvZGV2X3ByaXYv aTkxNS8gKFR2cnRrbykKICAgIENoYW5nZSB1YXBpIGNsYXNzL2luc3RhbmNlIGZpZWxkcyB0byB1 MTYgKFR2cnRrbykKICAgIEJ1bXAgbWFzayBmaWVsZHMgdG8gNjRiaXRzIChMaW9uZWwpCiAgICBE b24ndCByZXR1cm4gRVBFUk0gd2hlbiBkeW5hbWljIHNzZXUgaXMgZGlzYWJsZWQgKFR2cnRrbykK CnY5OiBJbXBvcnQgY29udGV4dCBpbWFnZSBpbnRvIGtlcm5lbCBjb250ZXh0J3MgcHBndHQgb25s eSB3aGVuCiAgICByZWNvbmZpZ3VyaW5nIHBvd2VyZ2F0ZWQgc2xpY2Uvc3Vic2xpY2VzIChDaHJp cykKICAgIFVzZSBhbGlhc2luZyBwcGd0dCB3aGVuIG5lZWRlZCAoTWljaGVsKQoKVHZydGtvIFVy c3VsaW46Cgp2MTA6CiAqIFVwZGF0ZSBmb3IgdXBzdHJlYW0gY2hhbmdlcy4KICogUmVxdWVzdCBz dWJtaXQgbmVlZHMgYSBSUE0gcmVmZXJlbmNlLgogKiBSZWplY3Qgb24gIUZVTExfUFBHVFQgZm9y IHNpbXBsaWNpdHkuCiAqIFB1bGwgb3V0IGdldC9zZXQgcGFyYW0gdG8gaGVscGVycyBmb3IgcmVh ZGFiaWxpdHkgYW5kIGxlc3MgaW5kZW50LgogKiBVc2UgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9m ZW5jZSBpbiBhZGRfZ2xvYmFsX2JhcnJpZXIgdG8gc2tpcCB3YWl0cwogICBvbiB0aGUgc2FtZSB0 aW1lbGluZSBhbmQgYXZvaWQgR0VNX0JVR19PTi4KICogTm8gbmVlZCB0byBleHBsaWNpdGx5IGFz c2lnbiBhIE5VTEwgcG9pbnRlciB0byBlbmdpbmUgaW4gbGVnYWN5IG1vZGUuCiAqIE5vIG5lZWQg dG8gbW92ZSBnZW44X21ha2VfcnBjcyB1cC4KICogRmFjdG9yZWQgb3V0IGdsb2JhbCBiYXJyaWVy IGFzIHByZXAgcGF0Y2guCiAqIEFsbG93IHRvIG9ubHkgQ0FQX1NZU19BRE1JTiBpZiAhR2VuMTEu Cgp2MTE6CiAqIFJlbW92ZSBlbmdpbmUgdmZ1bmMgaW4gZmF2b3VyIG9mIGxvY2FsIGhlbHBlci4g KENocmlzIFdpbHNvbikKICogU3RvcCByZXRpcmluZyByZXF1ZXN0cyBiZWZvcmUgdXBkYXRlcyBz aW5jZSBpdCBpcyBub3QgbmVlZGVkCiAgIChDaHJpcyBXaWxzb24pCiAqIEltcGxlbWVudCBkaXJl Y3QgQ1BVIHVwZGF0ZSBwYXRoIGZvciBpZGxlIGNvbnRleHRzLiAoQ2hyaXMgV2lsc29uKQogKiBM ZWZ0IHNpZGUgZGVwZW5kZW5jeSBuZWVkcyBvbmx5IGJlIG9uIHRoZSBzYW1lIGNvbnRleHQgdGlt ZWxpbmUuCiAgIChDaHJpcyBXaWxzb24pCiAqIEl0IGlzIHN1ZmZpY2llbnQgdG8gb3JkZXIgdGhl IHRpbWVsaW5lLiAoQ2hyaXMgV2lsc29uKQogKiBSZWplY3QgIVJDUyBjb25maWd1cmF0aW9uIGF0 dGVtcHRzIHdpdGggLUVOT0RFViBmb3Igbm93LgoKdjEyOgogKiBSZWJhc2UgZm9yIG1ha2VfcnBj cy4KCnYxMzoKICogQ2VudHJhbGl6ZSBTU0VVIG5vcm1hbGl6YXRpb24gdG8gbWFrZV9ycGNzLgog KiBUeXBlIHdpZHRoIGNoZWNraW5nICh1QVBJIDwtPiBpbXBsZW1lbnRhdGlvbikuCiAqIEdlbjEx IHJlc3RyaWN0aW9ucyB1QVBJIGNoZWNrcy4KICogR2VuMTEgc3Vic2xpY2UgY291bnQgZGlmZmVy ZW5jZXMgaGFuZGxpbmcuCiBDaHJpcyBXaWxzb246CiAqIGFyZ3MtPnNpemUgaGFuZGxpbmcgZml4 ZXMuCiAqIFVwZGF0ZSBjb250ZXh0IGltYWdlIGZyb20gR0dUVC4KICogUG9zdHBvbmUgY29udGV4 dCBpbWFnZSB1cGRhdGUgdG8gcGlubmluZy4KICogVXNlIGk5MTVfZ2VtX2FjdGl2ZV9yYXcgaW5z dGVhZCBvZiBsYXN0X3JlcXVlc3Rfb25fZW5naW5lLgoKdjE0OgogKiBBZGQgYWN0aXZpdHkgdHJh Y2tlciBvbiBpbnRlbF9jb250ZXh0IHRvIGZpeCB0aGUgbGlmZXRpbWUgaXNzdWVzCiAgIGFuZCBz aW1wbGlmeSB0aGUgY29kZS4gKENocmlzIFdpbHNvbikKCnYxNToKICogRml4IGNvbnRleHQgcGlu IGxlYWsgaWYgbm8gc3BhY2UgaW4gcmluZyBieSBzaW1wbGlmeWluZyB0aGUKICAgY29udGV4dCBw aW5uaW5nIHNlcXVlbmNlLgoKQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcv c2hvd19idWcuY2dpP2lkPTEwMDg5OQpJc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL21l ZGlhLWRyaXZlci9pc3N1ZXMvMjY3ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlv bmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBEbWl0cnkgUm9nb3poa2luIDxkbWl0cnku di5yb2dvemhraW5AaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KQ2M6IFpoaXBlbmcgR29uZyA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KQ2M6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAzMDMgKysrKysrKysrKysr KysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggfCAg IDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICA0ICstCiBp bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNDMgKysrKwogNCBmaWxl cyBjaGFuZ2VkLCAzNTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggY2EyYzhmY2QxMDkwLi5hYTFmMzRlNjMw ODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTkwLDYgKzkw LDcgQEAKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgog I2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKKyNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAjaW5j bHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIKIAogI2RlZmluZSBBTExfTDNfU0xJQ0VTKGRldikg KDEgPDwgTlVNX0wzX1NMSUNFUyhkZXYpKSAtIDEKQEAgLTMyMiw2ICszMjMsMTQgQEAgc3RhdGlj IHUzMiBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJcmV0dXJuIGRlc2M7CiB9CiAKK3N0YXRpYyB2b2lkIGludGVsX2NvbnRleHRfcmV0 aXJlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKKwkJCQkgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gY29udGFpbmVyX29mKGFj dGl2ZSwgdHlwZW9mKCpjZSksIGFjdGl2ZSk7CisKKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsK K30KKwogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKIF9fY3JlYXRlX2h3X2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgc3RydWN0IGRybV9p OTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQpAQCAtMzQ1LDYgKzM1NCw4IEBAIF9fY3JlYXRl X2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljZS0+Z2Vt X2NvbnRleHQgPSBjdHg7CiAJCS8qIFVzZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8K IAkJY2UtPnNzZXUgPSBpbnRlbF9kZXZpY2VfZGVmYXVsdF9zc2V1KGRldl9wcml2KTsKKworCQlp bml0X3JlcXVlc3RfYWN0aXZlKCZjZS0+YWN0aXZlLCBpbnRlbF9jb250ZXh0X3JldGlyZSk7CiAJ fQogCiAJSU5JVF9SQURJWF9UUkVFKCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKQEAg LTg0Niw2ICs4NTcsNDggQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAwOwogfQogCitzdGF0aWMg aW50IGdldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtX3NzZXUgdXNlcl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisKKwlpZiAoYXJncy0+c2l6ZSA9 PSAwKQorCQlnb3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3Nl dSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUs IHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkp CisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5yc3ZkMSB8fCB1c2VyX3NzZXUu cnN2ZDIpCisJCXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1 cF91c2VyKGN0eC0+aTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9z c2V1Lmluc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljZSA9 IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21hc2sg PSBjZS0+c3NldS5zbGljZV9tYXNrOworCXVzZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2UtPnNz ZXUuc3Vic2xpY2VfbWFzazsKKwl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+ c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vic2xp Y2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKworCWlmIChjb3B5X3RvX3VzZXIo dTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNl cl9zc2V1KSkpCisJCXJldHVybiAtRUZBVUxUOworCitvdXQ6CisJYXJncy0+c2l6ZSA9IHNpemVv Zih1c2VyX3NzZXUpOworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dl dHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAg IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKQEAgLTg1OCwxNSArOTExLDE3IEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJaWYgKCFjdHgpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JYXJncy0+c2l6ZSA9IDA7 CiAJc3dpdGNoIChhcmdzLT5wYXJhbSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9Q RVJJT0Q6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BB UkFNX05PX1pFUk9NQVA6CisJCWFyZ3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGN0eC0+ ZmxhZ3MgJiBDT05URVhUX05PX1pFUk9NQVA7CiAJCWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhU X1BBUkFNX0dUVF9TSVpFOgorCQlhcmdzLT5zaXplID0gMDsKKwogCQlpZiAoY3R4LT5wcGd0dCkK IAkJCWFyZ3MtPnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7CiAJCWVsc2UgaWYgKHRvX2k5 MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCkBAIC04NzUsMTQgKzkzMCwyMCBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCQkJYXJncy0+dmFsdWUgPSB0b19pOTE1KGRldiktPmdndHQudm0udG90YWw7CiAJ CWJyZWFrOwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9SX0NBUFRVUkU6CisJCWFy Z3MtPnNpemUgPSAwOwogCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfbm9fZXJyb3Jf Y2FwdHVyZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5OQUJM RToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9p c19iYW5uYWJsZShjdHgpOwogCQlicmVhazsKIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklP UklUWToKKwkJYXJncy0+c2l6ZSA9IDA7CiAJCWFyZ3MtPnZhbHVlID0gY3R4LT5zY2hlZC5wcmlv cml0eTsKIAkJYnJlYWs7CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0g Z2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZB TDsKIAkJYnJlYWs7CkBAIC04OTIsNiArOTUzLDI0MiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9n ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVy biByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLAorCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJIHN0cnVj dCBpbnRlbF9zc2V1IHNzZXUpCit7CisJdTY0IG9mZnNldDsKKwl1MzIgKmNzOworCisJY3MgPSBp bnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsKKwlpZiAoSVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9F UlIoY3MpOworCisJb2Zmc2V0ID0gY2UtPnN0YXRlLT5ub2RlLnN0YXJ0ICsKKwkJTFJDX1NUQVRF X1BOICogUEFHRV9TSVpFICsKKwkJKENUWF9SX1BXUl9DTEtfU1RBVEUgKyAxKSAqIDQ7CisKKwkq Y3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lNTV9HRU40IHwgTUlfVVNFX0dHVFQ7CisJKmNzKysgPSBs b3dlcl8zMl9iaXRzKG9mZnNldCk7CisJKmNzKysgPSB1cHBlcl8zMl9iaXRzKG9mZnNldCk7CisJ KmNzKysgPSBnZW44X21ha2VfcnBjcyhycS0+aTkxNSwgJnNzZXUpOworCisJaW50ZWxfcmluZ19h ZHZhbmNlKHJxLCBjcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZ2VuOF9tb2Rp ZnlfcnBjc19ncHUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAorCQkgICAgIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJICAgICBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCAqcHJldjsKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTighY2UtPnBp bl9jb3VudCk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKKworCS8qIFN1Ym1pdHRpbmcgcmVxdWVzdHMgZXRjIG5lZWRzIHRoZSBodyBhd2FrZS4gKi8K KwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKKworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9j KGVuZ2luZSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOworCWlmIChJU19FUlIocnEpKSB7CisJCXJl dCA9IFBUUl9FUlIocnEpOworCQlnb3RvIG91dF9wdXQ7CisJfQorCisJcmV0ID0gZ2VuOF9lbWl0 X3JwY3NfY29uZmlnKHJxLCBjZSwgc3NldSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfYWRkOwor CisJLyogUXVldWUgdGhpcyBzd2l0Y2ggYWZ0ZXIgYWxsIG90aGVyIGFjdGl2aXR5IGJ5IHRoaXMg Y29udGV4dC4gKi8KKwlwcmV2ID0gaTkxNV9nZW1fYWN0aXZlX3JhdygmY2UtPnJpbmctPnRpbWVs aW5lLT5sYXN0X3JlcXVlc3QsCisJCQkJICAgJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlm IChwcmV2ICYmICFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHByZXYpKQorCQlpOTE1X3N3X2ZlbmNl X2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwKKwkJCQkJCSAmcHJldi0+c3VibWl0LAor CQkJCQkJIEk5MTVfRkVOQ0VfR0ZQKTsKKworCS8qIE9yZGVyIGFsbCBmb2xsb3dpbmcgcmVxdWVz dHMgdG8gYmUgYWZ0ZXIuICovCisJaTkxNV90aW1lbGluZV9zZXRfYmFycmllcihjZS0+cmluZy0+ dGltZWxpbmUsIHJxKTsKKworCS8qCisJICogR3VhcmFudGVlIGNvbnRleHQgaW1hZ2UgYW5kIHRo ZSB0aW1lbGluZSByZW1haW5zIHBpbm5lZCB1bnRpbCB0aGUKKwkgKiBtb2RpZnlpbmcgcmVxdWVz dCBpcyByZXRpcmVkIGJ5IHNldHRpbmcgdGhlIGNlIGFjdGl2aXR5IHRyYWNrZXIuCisJICoKKwkg KiBCdXQgd2Ugb25seSBuZWVkIHRvIHRha2Ugb25lIHBpbiBvbiB0aGUgYWNjb3VudCBvZiBpdC4g T3IgaW4gb3RoZXIKKwkgKiB3b3JkcyB0cmFuc2ZlciB0aGUgcGlubmVkIGNlIG9iamVjdCB0byB0 cmFja2VkIGFjdGl2ZSByZXF1ZXN0LgorCSAqLworCWlmICghaTkxNV9nZW1fYWN0aXZlX2lzc2V0 KCZjZS0+YWN0aXZlKSkKKwkJX19pbnRlbF9jb250ZXh0X3BpbihjZSk7CisJaTkxNV9nZW1fYWN0 aXZlX3NldCgmY2UtPmFjdGl2ZSwgcnEpOworCitvdXRfYWRkOgorCWk5MTVfcmVxdWVzdF9hZGQo cnEpOworb3V0X3B1dDoKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKKworCXJldHVybiBy ZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAorCQkJCSAgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sKKwlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKKwlpbnQgcmV0 ID0gMDsKKworCUdFTV9CVUdfT04oSU5URUxfR0VOKGN0eC0+aTkxNSkgPCA4KTsKKwlHRU1fQlVH X09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIHVubW9kaWZpZWQu ICovCisJaWYgKCFtZW1jbXAoJmNlLT5zc2V1LCAmc3NldSwgc2l6ZW9mKHNzZXUpKSkKKwkJcmV0 dXJuIDA7CisKKwkvKgorCSAqIElmIGNvbnRleHQgaXMgbm90IGlkbGUgd2UgaGF2ZSB0byBzdWJt aXQgYW4gb3JkZXJlZCByZXF1ZXN0IHRvIG1vZGlmeQorCSAqIGl0cyBjb250ZXh0IGltYWdlIHZp YSB0aGUga2VybmVsIGNvbnRleHQuIFByaXN0aW5lIGFuZCBpZGxlIGNvbnRleHRzCisJICogd2ls bCBiZSBjb25maWd1cmVkIG9uIHBpbm5pbmcuCisJICovCisJaWYgKGNlLT5waW5fY291bnQpCisJ CXJldCA9IGdlbjhfbW9kaWZ5X3JwY3NfZ3B1KGNlLCBlbmdpbmUsIHNzZXUpOworCisJaWYgKCFy ZXQpCisJCWNlLT5zc2V1ID0gc3NldTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQK K3VzZXJfdG9fY29udGV4dF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkg ICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1ICp1c2VyLAor CQkgICAgIHN0cnVjdCBpbnRlbF9zc2V1ICpjb250ZXh0KQoreworCWNvbnN0IHN0cnVjdCBzc2V1 X2Rldl9pbmZvICpkZXZpY2UgPSAmSU5URUxfSU5GTyhpOTE1KS0+c3NldTsKKworCS8qIE5vIHpl cm9zIGluIGFueSBmaWVsZC4gKi8KKwlpZiAoIXVzZXItPnNsaWNlX21hc2sgfHwgIXVzZXItPnN1 YnNsaWNlX21hc2sgfHwKKwkgICAgIXVzZXItPm1pbl9ldXNfcGVyX3N1YnNsaWNlIHx8ICF1c2Vy LT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBNYXggPiBt aW4uICovCisJaWYgKHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlIDwgdXNlci0+bWluX2V1c19w ZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogQ2hlY2sgdmFsaWRpdHkgYWdh aW5zdCBoYXJkd2FyZS4gKi8KKwlpZiAodXNlci0+c2xpY2VfbWFzayAmIH5kZXZpY2UtPnNsaWNl X21hc2spCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKHVzZXItPnN1YnNsaWNlX21hc2sgJiB+ ZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1c2Vy LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA+IGRldmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJ CXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBTb21lIGZ1dHVyZSBwcm9vZmluZyBvbiB0aGUg dHlwZXMgc2luY2UgdGhlIHVBUEkgaXMgd2lkZXIgdGhhbiB0aGUKKwkgKiBjdXJyZW50IGludGVy bmFsIGltcGxlbWVudGF0aW9uLgorCSAqLworCWlmIChXQVJOX09OKChmbHModXNlci0+c2xpY2Vf bWFzaykgPgorCQkgICAgIHNpemVvZihjb250ZXh0LT5zbGljZV9tYXNrKSAqIEJJVFNfUEVSX0JZ VEUpIHx8CisJCSAgICAoZmxzKHVzZXItPnN1YnNsaWNlX21hc2spID4KKwkJICAgICBzaXplb2Yo Y29udGV4dC0+c3Vic2xpY2VfbWFzaykgKiBCSVRTX1BFUl9CWVRFKSB8fAorCQkgICAgb3ZlcmZs b3dzX3R5cGUodXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UsCisJCQkJICAgY29udGV4dC0+bWlu X2V1c19wZXJfc3Vic2xpY2UpIHx8CisJCSAgICBvdmVyZmxvd3NfdHlwZSh1c2VyLT5tYXhfZXVz X3Blcl9zdWJzbGljZSwKKwkJCQkgICBjb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJzbGljZSkpKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWNvbnRleHQtPnNsaWNlX21hc2sgPSB1c2VyLT5zbGljZV9t YXNrOworCWNvbnRleHQtPnN1YnNsaWNlX21hc2sgPSB1c2VyLT5zdWJzbGljZV9tYXNrOworCWNv bnRleHQtPm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gdXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2U7 CisJY29udGV4dC0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSB1c2VyLT5tYXhfZXVzX3Blcl9zdWJz bGljZTsKKworCS8qIFBhcnQgc3BlY2lmaWMgcmVzdHJpY3Rpb25zLiAqLworCWlmIChJU19HRU4x MShpOTE1KSkgeworCQl1bnNpZ25lZCBpbnQgaHdfc3NfcGVyX3MgPSBod2VpZ2h0OChkZXZpY2Ut PnN1YnNsaWNlX21hc2tbMF0pOworCQl1bnNpZ25lZCBpbnQgcmVxX3MgPSBod2VpZ2h0OChjb250 ZXh0LT5zbGljZV9tYXNrKTsKKwkJdW5zaWduZWQgaW50IHJlcV9zcyA9IGh3ZWlnaHQ4KGNvbnRl eHQtPnN1YnNsaWNlX21hc2spOworCisJCS8qCisJCSAqIE9ubHkgZnVsbCBzdWJzbGljZSBlbmFi bGVtZW50IGlzIHBvc3NpYmxlIGlmIG1vcmUgdGhhbiBvbmUKKwkJICogc2xpY2UgaXMgdHVybmVk IG9uLgorCQkgKi8KKwkJaWYgKHJlcV9zID4gMSAmJiByZXFfc3MgIT0gaHdfc3NfcGVyX3MpCisJ CQlyZXR1cm4gLUVJTlZBTDsKKworCQkvKgorCQkgKiBJZiBtb3JlIHRoYW4gZm91ciAoU1Njb3Vu dCBiaXRmaWVsZCBsaW1pdCkgc3Vic2xpY2VzIGFyZQorCQkgKiByZXF1ZXN0ZWQgdGhlbiB0aGUg bnVtYmVyIGhhcyB0byBiZSBldmVuLgorCQkgKi8KKwkJaWYgKHJlcV9zcyA+IDQgJiYgKHJlcV9z cyAmIDEpKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJLyoKKwkJICogSWYgb25seSBvbmUgc2xp Y2UgaXMgZW5hYmxlZCBzdWJzbGljZSBjb3VudCBtdXN0IGJlIGF0IG1vc3QKKwkJICogaGFsZiBv ZiB0aGUgYWxsIGF2YWlsYWJsZSBzdWJzbGljZXMuCisJCSAqLworCQlpZiAocmVxX3MgPT0gMSAm JiByZXFfc3MgPiAoaHdfc3NfcGVyX3MgLyAyKSkKKwkJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3Mp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgdXNlcl9zc2V1OworCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1OworCWludCByZXQ7 CisKKwlpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA4KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlm ICghSVNfR0VOMTEoaTkxNSkgJiYgIWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCisJCXJldHVybiAt RVBFUk07CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3VzZXJfcHRy KGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFV TFQ7CisKKwlpZiAodXNlcl9zc2V1LnJzdmQxIHx8IHVzZXJfc3NldS5yc3ZkMikKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkxNSwKKwkJ CQkJICB1c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsKKwlpZiAo IWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBPbmx5IHJlbmRlciBlbmdpbmUgc3Vw cG9ydHMgUlBDUyBjb25maWd1cmF0aW9uLiAqLworCWlmIChlbmdpbmUtPmNsYXNzICE9IFJFTkRF Ul9DTEFTUykKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSB1c2VyX3RvX2NvbnRleHRfc3Nl dShpOTE1LCAmdXNlcl9zc2V1LCAmc3NldSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcmVjb25maWd1cmVfc3NldShjdHgsIGVuZ2luZSwgc3Nl dSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWFyZ3MtPnNpemUgPSBzaXplb2YodXNl cl9zc2V1KTsKKworCXJldHVybiAwOworfQorCiBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJh bV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CkBAIC05NTcsNyArMTI1NCw5IEBAIGludCBpOTE1X2dlbV9j b250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJCQkJY3R4LT5zY2hlZC5wcmlvcml0eSA9IHByaW9yaXR5OwogCQl9CiAJCWJyZWFrOwotCisJ Y2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKKwkJcmV0ID0gc2V0X3NzZXUoY3R4LCBhcmdz KTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXggNzlkMmU4ZjYyYWQxLi45Njhl MWQ0N2Q5NDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKQEAgLTE2 NSw2ICsxNjUsMTIgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewogCQl1NjQgbHJjX2Rlc2M7 CiAJCWludCBwaW5fY291bnQ7CiAKKwkJLyoqCisJCSAqIGFjdGl2ZTogQWN0aXZlIHRyYWNrZXIg Zm9yIHRoZSBleHRlcm5hbCBycSBhY3Rpdml0eSBvbiB0aGlzCisJCSAqIGludGVsX2NvbnRleHQg b2JqZWN0LgorCQkgKi8KKwkJc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBhY3RpdmU7CisKIAkJY29u c3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7CiAKIAkJLyoqIHNzZXU6IENvbnRyb2wg ZXUvc2xpY2UgcGFydGl0aW9uaW5nICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDk3 MDljMWZiZTgzNi4uM2M4NTM5MmEzMTA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt MjUzOCw3ICsyNTM4LDkgQEAgdTMyIGdlbjhfbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkgKiBzdWJzbGljZXMgYXJlIGVuYWJsZWQsIG9yIGEgY291bnQgYmV0 d2VlbiBvbmUgYW5kIGZvdXIgb24gdGhlIGZpcnN0CiAJICogc2xpY2UuCiAJICovCi0JaWYgKElT X0dFTjExKGRldl9wcml2KSAmJiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgeworCWlm IChJU19HRU4xMShkZXZfcHJpdikgJiYKKwkgICAgc2xpY2VzID09IDEgJiYKKwkgICAgc3Vic2xp Y2VzID4gbWluX3QodTgsIDQsIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pIC8gMikp IHsKIAkJR0VNX0JVR19PTihzdWJzbGljZXMgJiAxKTsKIAogCQlzdWJzbGljZV9wZyA9IGZhbHNl OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oCmluZGV4IGE0NDQ2ZjQ1MjA0MC4uZTE5NWMzOGIxNWE2IDEwMDY0NAot LS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oCkBAIC0xNDc4LDkgKzE0NzgsNTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtIHsKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAy MyAvKiBpbmNsdXNpdmUgKi8KICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklU WQkJMAogI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBp bmNsdXNpdmUgKi8KKwkvKgorCSAqIFdoZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbSwgdmFs dWUgc2hvdWxkIGJlIGEgcG9pbnRlciB0bworCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt X3NzZXUuCisJICovCisjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVCQkweDcKIAlfX3U2 NCB2YWx1ZTsKIH07CiAKK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsK KwkvKgorCSAqIEVuZ2luZSBjbGFzcyAmIGluc3RhbmNlIHRvIGJlIGNvbmZpZ3VyZWQgb3IgcXVl cmllZC4KKwkgKi8KKwlfX3UxNiBjbGFzczsKKwlfX3UxNiBpbnN0YW5jZTsKKworCS8qCisJICog VW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgorCSAqLworCV9fdTMyIHJz dmQxOworCisJLyoKKwkgKiBNYXNrIG9mIHNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0 LiBWYWxpZCB2YWx1ZXMgYXJlIGEgc3Vic2V0CisJICogb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0 dXJuZWQgZm9yIEk5MTVfUEFSQU1fU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzbGljZV9tYXNr OworCisJLyoKKwkgKiBNYXNrIG9mIHN1YnNsaWNlcyB0byBlbmFibGUgZm9yIHRoZSBjb250ZXh0 LiBWYWxpZCB2YWx1ZXMgYXJlIGEKKwkgKiBzdWJzZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0 dXJuIGJ5IEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSy4KKwkgKi8KKwlfX3U2NCBzdWJzbGljZV9t YXNrOworCisJLyoKKwkgKiBNaW5pbXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUg cGVyIHN1YnNsaWNlIGZvciB0aGUKKwkgKiBjb250ZXh0LiBtaW5fZXVzX3Blcl9zdWJzbGljZSBt dXN0IGJlIGluZmVyaW9yIG9yIGVxdWFsIHRvCisJICogbWF4X2V1c19wZXJfc3Vic2xpY2UuCisJ ICovCisJX191MTYgbWluX2V1c19wZXJfc3Vic2xpY2U7CisJX191MTYgbWF4X2V1c19wZXJfc3Vi c2xpY2U7CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJlIGNsZWFyZWQgdG8gemVy by4KKwkgKi8KKwlfX3UzMiByc3ZkMjsKK307CisKIGVudW0gZHJtX2k5MTVfb2FfZm9ybWF0IHsK IAlJOTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8KIAlJOTE1X09BX0ZP Uk1BVF9BMjksCSAgICAvKiBIU1cgb25seSAqLwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK