From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v3 04/11] drm/i915: Add support for asynchronous display power disabling Date: Thu, 9 May 2019 20:34:39 +0300 Message-ID: <20190509173446.31095-5-imre.deak@intel.com> References: <20190509173446.31095-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id BEB9F89F27 for ; Thu, 9 May 2019 17:35:14 +0000 (UTC) In-Reply-To: <20190509173446.31095-1-imre.deak@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 QnkgZGlzYWJsaW5nIGEgcG93ZXIgZG9tYWluIGFzeW5jaHJvbm91c2x5IHdlIGNhbiByZXN0cmlj dCBob2xkaW5nIGEKcmVmZXJlbmNlIG9uIHRoYXQgcG93ZXIgZG9tYWluIHRvIHRoZSBhY3R1YWwg Y29kZSBzZXF1ZW5jZSB0aGF0CnJlcXVpcmVzIHRoZSBwb3dlciB0byBiZSBvbiBmb3IgdGhlIEhX IGFjY2VzcyBpdCdzIGRvaW5nLCBieSBhbHNvCmF2b2lkaW5nIHVubmVlZGVkIG9uLW9mZi1vbiB0 b2dnbGluZ3Mgb2YgdGhlIHBvd2VyIGRvbWFpbiAoc2luY2UgdGhlCmRpc2FibGluZyBoYXBwZW5z IHdpdGggYSBkZWxheSkuCgpPbmUgYmVuZWZpdCBpcyBwb3RlbnRpYWwgcG93ZXIgc2F2aW5nIGR1 ZSB0byB0aGUgZm9sbG93aW5nIHR3byByZWFzb25zOgoxLiBUaGUgZmFjdCB0aGF0IHdlIHdpbGwg bm93IGJlIGhvbGRpbmcgdGhlIHJlZmVyZW5jZSBvbmx5IGZvciB0aGUKICAgbmVjZXNzYXJ5IGR1 cmF0aW9uIGJ5IHRoZSBlbmQgb2YgdGhlIHBhdGNoc2V0LiBXaGlsZSBzaW1wbHkgbm90CiAgIGRl bGF5aW5nIHRoZSBkaXNhYmxpbmcgaGFzIHRoZSBzYW1lIGJlbmVmaXQsIGl0IGhhcyB0aGUgcHJv YmxlbSB0aGF0CiAgIGZyZXF1ZW50IG9uLW9mZi1vbiBwb3dlciBzd2l0Y2hpbmcgaGFzIGl0cyBv d24gcG93ZXIgY29zdCAoc2VlIHRoZSAyLgogICBwb2ludCBiZWxvdykgYW5kIHRoZSBkZWJ1ZyB0 cmFjZSBmb3IgcG93ZXIgd2VsbCBvbi9vZmYgZXZlbnRzIHdpbGwKICAgY2F1c2UgYSBsb3Qgb2Yg ZG1lc2cgc3BhbSAoc2VlIGRldGFpbHMgYWJvdXQgdGhpcyBmdXJ0aGVyIGJlbG93KS4KMi4gQXZv aWRpbmcgdGhlIHBvd2VyIGNvc3Qgb2YgZnJldXFlbnQgb24tb2ZmLW9uIHBvd2VyIHN3aXRjaGlu Zy4gVGhpcwogICByZXF1aXJlcyB1cyB0byBmaW5kIHRoZSBvcHRpbWFsIGRpc2FibGluZyBkZWxh eSBiYXNlZCBvbiB0aGUgbWVhc3VyZWQKICAgcG93ZXIgY29zdCBvZiBvbi0+b2ZmIGFuZCBvZmYt Pm9uIHN3aXRjaGluZyBvZiBlYWNoIHBvd2VyIHdlbGwgdnMuCiAgIHRoZSBwb3dlciBvZiBrZWVw aW5nIHRoZSBnaXZlbiBwb3dlciB3ZWxsIG9uLgoKICAgSW4gdGhpcyBwYXRjaHNldCBJJ20gbm90 IHByb3ZpZGluZyB0aGlzIG9wdGltYWwgZGVsYXkgZm9yIHR3bwogICByZWFzb25zOgogICBhKSBJ IGRvbid0IGhhdmUgdGhlIG1lYW5zIHlldCB0byBwZXJmb3JtIHRoZSBtZWFzdXJlbWVudCAod2l0 aCBoaWdoCiAgICAgIGVub3VnaCBzaWduYWwtdG8tbm9pc2UgcmF0aW8sIG9yIHdpdGggdGhlIGhl bHAgb2YgYW4gZW5lcmd5CiAgICAgIGNvdW50ZXIgdGhhdCB0YWtlcyBzd2l0Y2hpbmcgaW50byBh Y2NvdW50KS4gSSdtIGN1cnJlbnRseSBsb29raW5nCiAgICAgIGZvciBhIHdheSB0byBtZWFzdXJl IHRoaXMuCgogICBiKSBCZWZvcmUgcmVkdWNpbmcgdGhlIGRpc2FibGluZyBkZWxheSB3ZSBuZWVk IGFuIGFsdGVybmF0aXZlIHdheSBmb3IKICAgICAgZGVidWcgdHJhY2luZyBwb3dlcndlbGwgb24v b2ZmIGV2ZW50cy4gU2ltcGx5IGF2b2lkaW5nL3Rocm90dGxpbmcKICAgICAgdGhlIGRlYnVnIG1l c3NhZ2VzIGlzIG5vdCBhIHNvbHV0aW9uLCBzZWUgZnVydGhlciBiZWxvdy4KCiAgIE5vdGUgdGhh dCBldmVuIGluIHRoZSBjYXNlIHdoZXJlIHdlIGNhbid0IG1lYXN1cmUgYW55IGNvbnNpZGVyYWJs ZQogICBwb3dlciBjb3N0IG9mIGZyZXF1ZW50IG9uLW9mZiBzd2l0Y2hpbmcgb2YgcG93ZXJ3ZWxs cywgaXQgc3RpbGwgd291bGQKICAgbWFrZSBzZW5zZSB0byBkbyB0aGUgZGlzYWJsaW5nIGFzeW5j aHJvbm91c2x5ICh3aXRoIDAgZGVsYXkpIHRvIGF2b2lkCiAgIGJsb2NraW5nIG9uIHRoZSBkaXNh YmxpbmcuIE9uIFZMViBJIG1lYXN1cmVkIHRoaXMgZGlzYWJsaW5nIHRpbWUKICAgb3ZlcmhlYWQg dG8gYmUgMW1zIG9uIGF2ZXJhZ2Ugd2l0aCBhIHdvcnN0IGNhc2Ugb2YgNG1zLgoKSW4gdGhlIGNh c2Ugb2YgdGhlIEFVWCBwb3dlciBkb21haW5zIG9uIElDTCB3ZSB3b3VsZCBhbHNvIG5lZWQgdG8g a2VlcAp0aGUgc2VxdWVuY2Ugd2hlcmUgd2UgaG9sZCB0aGUgcG93ZXIgcmVmZXJlbmNlIHNob3J0 LCB0aGUgd2F5IGl0IHdvdWxkCmJlIGJ5IHRoZSBlbmQgb2YgdGhpcyBwYXRjaHNldCB3aGVyZSB3 ZSBob2xkIGl0IG9ubHkgZm9yIHRoZSBhY3R1YWwgQVVYCnRyYW5zZmVyLiBBbnl0aGluZyBlbHNl IHdvdWxkIG1ha2UgdGhlIGxvY2tpbmcgd2UgbmVlZCBmb3IgSUNMIFR5cGVDCnBvcnRzICh3aGVu ZXZlciB3ZSBob2xkIGEgcmVmZXJlbmNlIG9uIGFueSBBVVggcG93ZXIgZG9tYWluKSByYXRoZXIK cHJvYmxlbWF0aWMsIGFkZGluZyBmb3IgaW5zdGFuY2UgdW5uZWNlc3NhcnkgbG9ja2RlcCBkZXBl bmRlbmNpZXMgdG8KdGhlIHJlcXVpcmVkIFR5cGVDIHBvcnQgbG9jay4KCkkgY2hvc2UgdGhlIGRp c2FibGluZyBkZWxheSB0byBiZSAxMDBtc2VjIGZvciBub3cgdG8gYXZvaWQgdGhlIHVubmVlZGVk CnRvZ2dsaW5nIChhbmQgc28gbm90IHRvIGludHJvZHVjZSBkbWVzZyBzcGFtbWluZykgaW4gdGhl IERQIE1TVCBzaWRlYmFuZApzaWduYWxpbmcgY29kZS4gV2UgY291bGQgb3B0aW1pemUgdGhpcyBk ZWxheSBsYXRlciwgb25jZSB3ZSBoYXZlIHRoZQptZWFucyB0byBtZWFzdXJlIHRoZSBzd2l0Y2hp bmcgcG93ZXIgY29zdCAoc2VlIGFib3ZlKS4KCk5vdGUgdGhhdCBzaW1wbHkgcmVtb3ZpbmcvdGhy b3R0bGluZyB0aGUgZGVidWcgdHJhY2luZyBmb3IgcG93ZXIgd2VsbApvbi9vZmYgZXZlbnRzIGlz IG5vdCBhIHNvbHV0aW9uLiBXZSBuZWVkIHRvIGtub3cgdGhlIGV4YWN0IHNwb3RzIG9mCnRoZXNl IGV2ZW50cyBhbmQgY2Fubm90IHJlbHkgb25seSBvbiBpbmNvcnJlY3QgcmVnaXN0ZXIgYWNjZXNz ZXMgY2F1Z2h0CihkdWUgdG8gbm90IGhvbGRpbmcgYSB3YWtlcmVmIGF0IHRoZSB0aW1lIG9mIGFj Y2VzcykuIEluY29ycmVjdApwb3dlcndlbGwgZW5hYmxpbmcvZGlzYWJsaW5nIGNvdWxkIGxlYWQg dG8gb3RoZXIgcHJvYmxlbXMsIGZvciBpbnN0YW5jZQp3ZSBuZWVkIHRvIGtlZXAgY2VydGFpbiBw b3dlcndlbGxzIGVuYWJsZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiBtb2Rlc2V0cwphbmQgQVVYIHRy YW5zZmVycy4KCnYyOgotIENsYXJpZnkgdGhlIGNvbW1pdCBsb2cgcGFydHMgYWJvdXQgcG93ZXIg Y29zdCBtZWFzdXJlbWVudCBhbmQgdGhlCiAgcHJvYmxlbSBvZiBzaW1wbHkgcmVtb3ZpbmcvdGhy b3R0bGluZyBkZWJ1ZyB0cmFjaW5nLiAoQ2hyaXMpCi0gT3B0aW1pemUgb3V0IGxvY2FsIHdha2Vy ZWYgdmFycyBhdCBpbnRlbF9ydW50aW1lX3BtX3B1dF9yYXcoKSBhbmQKICBpbnRlbF9kaXNwbGF5 X3Bvd2VyX3B1dF9hc3luYygpIGNhbGwgc2l0ZXMgaWYKICBDT05GSUdfRFJNX0k5MTVfREVCVUdf UlVOVElNRV9QTT1uLiAoQ2hyaXMpCi0gUmViYXNlZCBvbiB2MiBvZiB0aGUgd2FrZXJlZiB3L28g cG93ZXItb24gZ3VhcmFudGVlIHBhdGNoLgotIEFkZCBtaXNzaW5nIGRvY2Jvb2sgaGVhZGVycy4K djM6Ci0gQ2hlY2twYXRjaCBzcGVsbGluZy9taXNzaW5nLWVtcHR5LWxpbmUgZml4LgoKQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVmlsbGUgU3lyamFsYSA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8 aW1yZS5kZWFrQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCAz NjMgKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmggfCAgIDggKwogMyBmaWxlcyBjaGFuZ2VkLCAzNjkgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkMDI1NzgwODczNGMu LjU4MDFmNTQwNzU4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC04MzQsNiArODM0LDEx IEBAIHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgewogCiAJc3RydWN0IG11dGV4IGxvY2s7CiAJ aW50IGRvbWFpbl91c2VfY291bnRbUE9XRVJfRE9NQUlOX05VTV07CisKKwlzdHJ1Y3QgZGVsYXll ZF93b3JrIGFzeW5jX3B1dF93b3JrOworCWludGVsX3dha2VyZWZfdCBhc3luY19wdXRfd2FrZXJl ZjsKKwl1NjQgYXN5bmNfcHV0X2RvbWFpbnNbMl07CisKIAlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs ICpwb3dlcl93ZWxsczsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0u YwppbmRleCAyY2Y0OTQzZGYyZTcuLjJlZDZmYjMzODU2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYwpAQCAtNjAsNiArNjAsMTkgQEAKICAqIHByZXNlbnQgZm9yIGEg Z2l2ZW4gcGxhdGZvcm0uCiAgKi8KIAorc3RhdGljIGludGVsX3dha2VyZWZfdCBpbnRlbF9ydW50 aW1lX3BtX2dldF9yYXcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOworc3RhdGljIHZv aWQKK19faW50ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IGludGVsX3dha2VyZWZfdCB3cmVmLAorCQkgICAgICAgYm9vbCB3YWtlbG9jayk7CisKKyNpZiBJ U19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKQorc3RhdGljIHZvaWQK K2ludGVsX3J1bnRpbWVfcG1fcHV0X3JhdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg aW50ZWxfd2FrZXJlZl90IHdyZWYpOworI2Vsc2UKKyNkZWZpbmUgaW50ZWxfcnVudGltZV9wbV9w dXRfcmF3KGk5MTUsIHdyZWYpIFwKKwlfX2ludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIC0xLCBm YWxzZSkKKyNlbmRpZgorCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVO VElNRV9QTSkKIAogI2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4KQEAgLTE5MDMsNiArMTkxNiwxMjUg QEAgc3RhdGljIHZvaWQgY2h2X3BpcGVfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAljaHZfc2V0X3BpcGVfcG93ZXJfd2VsbChkZXZfcHJpdiwg cG93ZXJfd2VsbCwgZmFsc2UpOwogfQogCitzdGF0aWMgdTY0IF9fYXN5bmNfcHV0X2RvbWFpbnNf bWFzayhzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQoreworCXJldHVy biBwb3dlcl9kb21haW5zLT5hc3luY19wdXRfZG9tYWluc1swXSB8CisJICAgICAgIHBvd2VyX2Rv bWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzFdOworfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdf RFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKKworc3RhdGljIGJvb2wKK2Fzc2VydF9hc3luY19w dXRfZG9tYWluX21hc2tzX2Rpc2pvaW50KHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2Vy X2RvbWFpbnMpCit7CisJcmV0dXJuICFXQVJOX09OKHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9k b21haW5zWzBdICYKKwkJCXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzFdKTsKK30K Kworc3RhdGljIGJvb2wKK19fYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGVfb2soc3RydWN0IGk5MTVf cG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucykKK3sKKwllbnVtIGludGVsX2Rpc3BsYXlfcG93 ZXJfZG9tYWluIGRvbWFpbjsKKwlib29sIGVyciA9IGZhbHNlOworCisJZXJyIHw9ICFhc3NlcnRf YXN5bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNqb2ludChwb3dlcl9kb21haW5zKTsKKwllcnIgfD0g V0FSTl9PTighIXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93YWtlcmVmICE9CisJCSAgICAgICAh IV9fYXN5bmNfcHV0X2RvbWFpbnNfbWFzayhwb3dlcl9kb21haW5zKSk7CisKKwlmb3JfZWFjaF9w b3dlcl9kb21haW4oZG9tYWluLCBfX2FzeW5jX3B1dF9kb21haW5zX21hc2socG93ZXJfZG9tYWlu cykpCisJCWVyciB8PSBXQVJOX09OKHBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9t YWluXSAhPSAxKTsKKworCXJldHVybiAhZXJyOworfQorCitzdGF0aWMgdm9pZCBwcmludF9wb3dl cl9kb21haW5zKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMsCisJCQkJ Y29uc3QgY2hhciAqcHJlZml4LCB1NjQgbWFzaykKK3sKKwllbnVtIGludGVsX2Rpc3BsYXlfcG93 ZXJfZG9tYWluIGRvbWFpbjsKKworCURSTV9ERUJVR19EUklWRVIoIiVzICglbHUpOlxuIiwgcHJl Zml4LCBod2VpZ2h0NjQobWFzaykpOworCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIG1h c2spCisJCURSTV9ERUJVR19EUklWRVIoIiVzIHVzZV9jb3VudCAlZFxuIiwKKwkJCQkgaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKGRvbWFpbiksCisJCQkJIHBvd2VyX2RvbWFpbnMtPmRv bWFpbl91c2VfY291bnRbZG9tYWluXSk7Cit9CisKK3N0YXRpYyB2b2lkCitwcmludF9hc3luY19w dXRfZG9tYWluc19zdGF0ZShzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5z KQoreworCURSTV9ERUJVR19EUklWRVIoImFzeW5jX3B1dF93YWtlcmVmICV1XG4iLAorCQkJIHBv d2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93YWtlcmVmKTsKKworCXByaW50X3Bvd2VyX2RvbWFpbnMo cG93ZXJfZG9tYWlucywgImFzeW5jX3B1dF9kb21haW5zWzBdIiwKKwkJCSAgICBwb3dlcl9kb21h aW5zLT5hc3luY19wdXRfZG9tYWluc1swXSk7CisJcHJpbnRfcG93ZXJfZG9tYWlucyhwb3dlcl9k b21haW5zLCAiYXN5bmNfcHV0X2RvbWFpbnNbMV0iLAorCQkJICAgIHBvd2VyX2RvbWFpbnMtPmFz eW5jX3B1dF9kb21haW5zWzFdKTsKK30KKworc3RhdGljIHZvaWQKK3ZlcmlmeV9hc3luY19wdXRf ZG9tYWluc19zdGF0ZShzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQor eworCWlmICghX19hc3luY19wdXRfZG9tYWluc19zdGF0ZV9vayhwb3dlcl9kb21haW5zKSkKKwkJ cHJpbnRfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUocG93ZXJfZG9tYWlucyk7Cit9CisKKyNlbHNl CisKK3N0YXRpYyB2b2lkCithc3NlcnRfYXN5bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNqb2ludChz dHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQoreworfQorCitzdGF0aWMg dm9pZAordmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHN0cnVjdCBpOTE1X3Bvd2VyX2Rv bWFpbnMgKnBvd2VyX2RvbWFpbnMpCit7Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfRFJNX0k5MTVf REVCVUdfUlVOVElNRV9QTSAqLworCitzdGF0aWMgdTY0IGFzeW5jX3B1dF9kb21haW5zX21hc2so c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucykKK3sKKwlhc3NlcnRfYXN5 bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNqb2ludChwb3dlcl9kb21haW5zKTsKKworCXJldHVybiBf X2FzeW5jX3B1dF9kb21haW5zX21hc2socG93ZXJfZG9tYWlucyk7Cit9CisKK3N0YXRpYyB2b2lk Cithc3luY19wdXRfZG9tYWluc19jbGVhcl9kb21haW4oc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlu cyAqcG93ZXJfZG9tYWlucywKKwkJCSAgICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9t YWluIGRvbWFpbikKK3sKKwlhc3NlcnRfYXN5bmNfcHV0X2RvbWFpbl9tYXNrc19kaXNqb2ludChw b3dlcl9kb21haW5zKTsKKworCXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzBdICY9 IH5CSVRfVUxMKGRvbWFpbik7CisJcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFpbnNbMV0g Jj0gfkJJVF9VTEwoZG9tYWluKTsKK30KKworc3RhdGljIGJvb2wKK2ludGVsX2Rpc3BsYXlfcG93 ZXJfZ3JhYl9hc3luY19wdXRfcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK KwkJCQkgICAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCit7CisJ c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93 ZXJfZG9tYWluczsKKwlib29sIHJldCA9IGZhbHNlOworCisJaWYgKCEoYXN5bmNfcHV0X2RvbWFp bnNfbWFzayhwb3dlcl9kb21haW5zKSAmIEJJVF9VTEwoZG9tYWluKSkpCisJCWdvdG8gb3V0X3Zl cmlmeTsKKworCWFzeW5jX3B1dF9kb21haW5zX2NsZWFyX2RvbWFpbihwb3dlcl9kb21haW5zLCBk b21haW4pOworCisJcmV0ID0gdHJ1ZTsKKworCWlmIChhc3luY19wdXRfZG9tYWluc19tYXNrKHBv d2VyX2RvbWFpbnMpKQorCQlnb3RvIG91dF92ZXJpZnk7CisKKwljYW5jZWxfZGVsYXllZF93b3Jr KCZwb3dlcl9kb21haW5zLT5hc3luY19wdXRfd29yayk7CisJaW50ZWxfcnVudGltZV9wbV9wdXRf cmF3KGRldl9wcml2LAorCQkJCSBmZXRjaF9hbmRfemVybygmcG93ZXJfZG9tYWlucy0+YXN5bmNf cHV0X3dha2VyZWYpKTsKK291dF92ZXJpZnk6CisJdmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0 YXRlKHBvd2VyX2RvbWFpbnMpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIHZvaWQKIF9f aW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCQkgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCkBA IC0xOTEwLDYgKzIwNDIsOSBAQCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlu cyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKIAlzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsOwogCisJaWYgKGludGVsX2Rpc3BsYXlfcG93ZXJfZ3Jh Yl9hc3luY19wdXRfcmVmKGRldl9wcml2LCBkb21haW4pKQorCQlyZXR1cm47CisKIAlmb3JfZWFj aF9wb3dlcl9kb21haW5fd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCwgQklUX1VMTChkb21haW4p KQogCQlpbnRlbF9wb3dlcl93ZWxsX2dldChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7CiAKQEAgLTE5 MzUsOSArMjA3MCw3IEBAIGludGVsX3dha2VyZWZfdCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAltdXRleF9sb2NrKCZwb3dl cl9kb21haW5zLT5sb2NrKTsKLQogCV9faW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfZG9tYWluKGRl dl9wcml2LCBkb21haW4pOwotCiAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsK IAogCXJldHVybiB3YWtlcmVmOwpAQCAtMTk4NiwyNCArMjExOSwzNiBAQCBpbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldF9pZl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAlyZXR1cm4gd2FrZXJlZjsKIH0KIAotc3RhdGljIHZvaWQgX19pbnRlbF9kaXNwbGF5X3Bvd2Vy X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgICAgZW51bSBp bnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCitzdGF0aWMgdm9pZAorX19pbnRlbF9k aXNwbGF5X3Bvd2VyX3B1dF9kb21haW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCSBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKIHsKIAlzdHJ1 Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zOwogCXN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGwgKnBvd2VyX3dlbGw7CisJY29uc3QgY2hhciAqbmFtZSA9IGludGVsX2Rpc3BsYXlfcG93 ZXJfZG9tYWluX3N0cihkb21haW4pOwogCiAJcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93 ZXJfZG9tYWluczsKIAotCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwotCiAJV0FS TighcG93ZXJfZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtkb21haW5dLAogCSAgICAgIlVzZSBj b3VudCBvbiBkb21haW4gJXMgaXMgYWxyZWFkeSB6ZXJvXG4iLAotCSAgICAgaW50ZWxfZGlzcGxh eV9wb3dlcl9kb21haW5fc3RyKGRvbWFpbikpOworCSAgICAgbmFtZSk7CisJV0FSTihhc3luY19w dXRfZG9tYWluc19tYXNrKHBvd2VyX2RvbWFpbnMpICYgQklUX1VMTChkb21haW4pLAorCSAgICAg IkFzeW5jIGRpc2FibGluZyBvZiBkb21haW4gJXMgaXMgcGVuZGluZ1xuIiwKKwkgICAgIG5hbWUp OworCiAJcG93ZXJfZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtkb21haW5dLS07CiAKIAlmb3Jf ZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXZlcnNlKGRldl9wcml2LCBwb3dlcl93ZWxsLCBCSVRf VUxMKGRvbWFpbikpCiAJCWludGVsX3Bvd2VyX3dlbGxfcHV0KGRldl9wcml2LCBwb3dlcl93ZWxs KTsKK30KIAorc3RhdGljIHZvaWQgX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbiBkb21haW4pCit7CisJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJf ZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKKworCW11dGV4X2xvY2soJnBvd2Vy X2RvbWFpbnMtPmxvY2spOworCV9faW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfZG9tYWluKGRldl9w cml2LCBkb21haW4pOwogCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CiB9CiAK QEAgLTIwMjcsNiArMjE3MiwxODggQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNo ZWNrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWludGVsX3J1bnRpbWVf cG1fcHV0X3VuY2hlY2tlZChkZXZfcHJpdik7CiB9CiAKK3N0YXRpYyB2b2lkCitxdWV1ZV9hc3lu Y19wdXRfZG9tYWluc193b3JrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFp bnMsCisJCQkgICAgIGludGVsX3dha2VyZWZfdCB3YWtlcmVmKQoreworCVdBUk5fT04ocG93ZXJf ZG9tYWlucy0+YXN5bmNfcHV0X3dha2VyZWYpOworCXBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93 YWtlcmVmID0gd2FrZXJlZjsKKwlXQVJOX09OKCFxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3Vu Ym91bmRfd3EsCisJCQkJICAgICZwb3dlcl9kb21haW5zLT5hc3luY19wdXRfd29yaywKKwkJCQkg ICAgbXNlY3NfdG9famlmZmllcygxMDApKSk7Cit9CisKK3N0YXRpYyB2b2lkCityZWxlYXNlX2Fz eW5jX3B1dF9kb21haW5zKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMs IHU2NCBtYXNrKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNv bnRhaW5lcl9vZihwb3dlcl9kb21haW5zLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwKKwkJCSAg ICAgcG93ZXJfZG9tYWlucyk7CisJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21h aW47CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwkvKgorCSAqIFRoZSBjYWxsZXIgbXVz dCBob2xkIGFscmVhZHkgcmF3IHdha2VyZWYsIHVwZ3JhZGUgdGhhdCB0byBhIHByb3BlcgorCSAq IHdha2VyZWYgdG8gbWFrZSB0aGUgc3RhdGUgY2hlY2tlciBoYXBweSBhYm91dCB0aGUgSFcgYWNj ZXNzIGR1cmluZworCSAqIHBvd2VyIHdlbGwgZGlzYWJsaW5nLgorCSAqLworCWFzc2VydF9ycG1f cmF3X3dha2VyZWZfaGVsZChkZXZfcHJpdik7CisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKKworCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIG1hc2spIHsK KwkJLyogQ2xlYXIgYmVmb3JlIHB1dCwgc28gcHV0J3Mgc2FuaXR5IGNoZWNrIGlzIGhhcHB5LiAq LworCQlhc3luY19wdXRfZG9tYWluc19jbGVhcl9kb21haW4ocG93ZXJfZG9tYWlucywgZG9tYWlu KTsKKwkJX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9kb21haW4oZGV2X3ByaXYsIGRvbWFpbik7 CisJfQorCisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOworfQorCitz dGF0aWMgdm9pZAoraW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmNfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0K KwkJY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLAorCQkJICAgICBw b3dlcl9kb21haW5zLmFzeW5jX3B1dF93b3JrLndvcmspOworCXN0cnVjdCBpOTE1X3Bvd2VyX2Rv bWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7CisJaW50ZWxf d2FrZXJlZl90IG5ld193b3JrX3dha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9yYXcoZGV2 X3ByaXYpOworCWludGVsX3dha2VyZWZfdCBvbGRfd29ya193YWtlcmVmID0gMDsKKworCW11dGV4 X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOworCisJLyoKKwkgKiBCYWlsIG91dCBpZiBhbGwg dGhlIGRvbWFpbiByZWZzIHBlbmRpbmcgdG8gYmUgcmVsZWFzZWQgd2VyZSBncmFiYmVkCisJICog Ynkgc3Vic2VxdWVudCBnZXRzIG9yIGEgZmx1c2hfd29yay4KKwkgKi8KKwlvbGRfd29ya193YWtl cmVmID0gZmV0Y2hfYW5kX3plcm8oJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93YWtlcmVmKTsK KwlpZiAoIW9sZF93b3JrX3dha2VyZWYpCisJCWdvdG8gb3V0X3ZlcmlmeTsKKworCXJlbGVhc2Vf YXN5bmNfcHV0X2RvbWFpbnMocG93ZXJfZG9tYWlucywKKwkJCQkgIHBvd2VyX2RvbWFpbnMtPmFz eW5jX3B1dF9kb21haW5zWzBdKTsKKworCS8qIFJlcXVldWUgdGhlIHdvcmsgaWYgbW9yZSBkb21h aW5zIHdlcmUgYXN5bmMgcHV0IG1lYW53aGlsZS4gKi8KKwlpZiAocG93ZXJfZG9tYWlucy0+YXN5 bmNfcHV0X2RvbWFpbnNbMV0pIHsKKwkJcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFpbnNb MF0gPQorCQkJZmV0Y2hfYW5kX3plcm8oJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5z WzFdKTsKKwkJcXVldWVfYXN5bmNfcHV0X2RvbWFpbnNfd29yayhwb3dlcl9kb21haW5zLAorCQkJ CQkgICAgIGZldGNoX2FuZF96ZXJvKCZuZXdfd29ya193YWtlcmVmKSk7CisJfQorCitvdXRfdmVy aWZ5OgorCXZlcmlmeV9hc3luY19wdXRfZG9tYWluc19zdGF0ZShwb3dlcl9kb21haW5zKTsKKwor CW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisKKwlpZiAob2xkX3dvcmtfd2Fr ZXJlZikKKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfcmF3KGRldl9wcml2LCBvbGRfd29ya193YWtl cmVmKTsKKwlpZiAobmV3X3dvcmtfd2FrZXJlZikKKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfcmF3 KGRldl9wcml2LCBuZXdfd29ya193YWtlcmVmKTsKK30KKworLyoqCisgKiBpbnRlbF9kaXNwbGF5 X3Bvd2VyX3B1dF9hc3luYyAtIHJlbGVhc2UgYSBwb3dlciBkb21haW4gcmVmZXJlbmNlIGFzeW5j aHJvbm91c2x5CisgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBkb21haW46IHBv d2VyIGRvbWFpbiB0byByZWZlcmVuY2UKKyAqIEB3YWtlcmVmOiB3YWtlcmVmIGFjcXVpcmVkIGZv ciB0aGUgcmVmZXJlbmNlIHRoYXQgaXMgYmVpbmcgcmVsZWFzZWQKKyAqCisgKiBUaGlzIGZ1bmN0 aW9uIGRyb3BzIHRoZSBwb3dlciBkb21haW4gcmVmZXJlbmNlIG9idGFpbmVkIGJ5CisgKiBpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldCooKSBhbmQgc2NoZWR1bGVzIGEgd29yayB0byBwb3dlciBkb3du IHRoZQorICogY29ycmVzcG9uZGluZyBoYXJkd2FyZSBibG9jayBpZiB0aGlzIGlzIHRoZSBsYXN0 IHJlZmVyZW5jZS4KKyAqLwordm9pZCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCSAgICAgZW51bSBpbnRlbF9kaXNwbGF5 X3Bvd2VyX2RvbWFpbiBkb21haW4sCisJCQkJICAgICBpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZikK K3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmk5MTUtPnBv d2VyX2RvbWFpbnM7CisJaW50ZWxfd2FrZXJlZl90IHdvcmtfd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0X3JhdyhpOTE1KTsKKworCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2sp OworCisJaWYgKHBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWluXSA+IDEpIHsK KwkJX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9kb21haW4oaTkxNSwgZG9tYWluKTsKKworCQln b3RvIG91dF92ZXJpZnk7CisJfQorCisJV0FSTl9PTihwb3dlcl9kb21haW5zLT5kb21haW5fdXNl X2NvdW50W2RvbWFpbl0gIT0gMSk7CisKKwkvKiBMZXQgYSBwZW5kaW5nIHdvcmsgcmVxdWV1ZSBp dHNlbGYgb3IgcXVldWUgYSBuZXcgb25lLiAqLworCWlmIChwb3dlcl9kb21haW5zLT5hc3luY19w dXRfd2FrZXJlZikgeworCQlwb3dlcl9kb21haW5zLT5hc3luY19wdXRfZG9tYWluc1sxXSB8PSBC SVRfVUxMKGRvbWFpbik7CisJfSBlbHNlIHsKKwkJcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2Rv bWFpbnNbMF0gfD0gQklUX1VMTChkb21haW4pOworCQlxdWV1ZV9hc3luY19wdXRfZG9tYWluc193 b3JrKHBvd2VyX2RvbWFpbnMsCisJCQkJCSAgICAgZmV0Y2hfYW5kX3plcm8oJndvcmtfd2FrZXJl ZikpOworCX0KKworb3V0X3ZlcmlmeToKKwl2ZXJpZnlfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUo cG93ZXJfZG9tYWlucyk7CisKKwltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwor CisJaWYgKHdvcmtfd2FrZXJlZikKKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfcmF3KGk5MTUsIHdv cmtfd2FrZXJlZik7CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKK30K KworLyoqCisgKiBpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsgLSBmbHVzaGVzIHRoZSBh c3luYyBkaXNwbGF5IHBvd2VyIGRpc2FibGluZyB3b3JrCisgKiBAaTkxNTogaTkxNSBkZXZpY2Ug aW5zdGFuY2UKKyAqCisgKiBGbHVzaGVzIGFueSBwZW5kaW5nIHdvcmsgdGhhdCB3YXMgc2NoZWR1 bGVkIGJ5IGEgcHJlY2VkaW5nCisgKiBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYygpIGNh bGwsIGNvbXBsZXRpbmcgdGhlIGRpc2FibGluZyBvZiB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgcG93 ZXIgZG9tYWlucy4KKyAqCisgKiBOb3RlIHRoYXQgdGhlIHdvcmsgaGFuZGxlciBmdW5jdGlvbiBt YXkgc3RpbGwgYmUgcnVubmluZyBhZnRlciB0aGlzCisgKiBmdW5jdGlvbiByZXR1cm5zOyB0byBl bnN1cmUgdGhhdCB0aGUgd29yayBoYW5kbGVyIGlzbid0IHJ1bm5pbmcgdXNlCisgKiBpbnRlbF9k aXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmtfc3luYygpIGluc3RlYWQuCisgKi8KK3ZvaWQgaW50ZWxf ZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQor eworCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmaTkxNS0+cG93 ZXJfZG9tYWluczsKKwlpbnRlbF93YWtlcmVmX3Qgd29ya193YWtlcmVmOworCisJbXV0ZXhfbG9j aygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisKKwl3b3JrX3dha2VyZWYgPSBmZXRjaF9hbmRfemVy bygmcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dha2VyZWYpOworCWlmICghd29ya193YWtlcmVm KQorCQlnb3RvIG91dF92ZXJpZnk7CisKKwlyZWxlYXNlX2FzeW5jX3B1dF9kb21haW5zKHBvd2Vy X2RvbWFpbnMsCisJCQkJICBhc3luY19wdXRfZG9tYWluc19tYXNrKHBvd2VyX2RvbWFpbnMpKTsK KwljYW5jZWxfZGVsYXllZF93b3JrKCZwb3dlcl9kb21haW5zLT5hc3luY19wdXRfd29yayk7CisK K291dF92ZXJpZnk6CisJdmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHBvd2VyX2RvbWFp bnMpOworCisJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKKworCWlmICh3b3Jr X3dha2VyZWYpCisJCWludGVsX3J1bnRpbWVfcG1fcHV0X3JhdyhpOTE1LCB3b3JrX3dha2VyZWYp OworfQorCisvKioKKyAqIGludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29ya19zeW5jIC0gZmx1 c2hlcyBhbmQgc3luY3MgdGhlIGFzeW5jIGRpc3BsYXkgcG93ZXIgZGlzYWJsaW5nIHdvcmsKKyAq IEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQorICoKKyAqIExpa2UgaW50ZWxfZGlzcGxheV9w b3dlcl9mbHVzaF93b3JrKCksIGJ1dCBhbHNvIGVuc3VyZSB0aGF0IHRoZSB3b3JrCisgKiBoYW5k bGVyIGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nIGFueSBtb3JlIHdoZW4gdGhpcyBmdW5jdGlvbiBy ZXR1cm5zLgorICovCitzdGF0aWMgdm9pZAoraW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3Jr X3N5bmMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpOTE1 X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7 CisKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoZGV2X3ByaXYpOworCWNhbmNlbF9k ZWxheWVkX3dvcmtfc3luYygmcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dvcmspOworCisJdmVy aWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHBvd2VyX2RvbWFpbnMpOworCisJV0FSTl9PTihw b3dlcl9kb21haW5zLT5hc3luY19wdXRfd2FrZXJlZik7Cit9CisKICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKQogLyoqCiAgKiBpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dCAtIHJlbGVhc2UgYSBwb3dlciBkb21haW4gcmVmZXJlbmNlCkBAIC0zNTI1LDYgKzM4 NTIsOSBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAogCW11dGV4X2luaXQoJnBvd2VyX2RvbWFpbnMtPmxvY2spOwogCisJ SU5JVF9ERUxBWUVEX1dPUksoJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93b3JrLAorCQkJICBp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luY193b3JrKTsKKwogCS8qCiAJICogVGhlIGVuYWJs aW5nIG9yZGVyIHdpbGwgYmUgZnJvbSBsb3dlciB0byBoaWdoZXIgaW5kZXhlZCB3ZWxscywKIAkg KiB0aGUgZGlzYWJsaW5nIG9yZGVyIGlzIHJldmVyc2VkLgpAQCAtNDQ0NSw2ICs0Nzc1LDggQEAg dm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2ZpbmlfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCiAJaWYgKCFpOTE1X21vZHBhcmFtcy5kaXNhYmxlX3Bvd2VyX3dlbGwpCiAJCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChpOTE1LCBQT1dFUl9ET01BSU5fSU5JVCk7CiAK KwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmtfc3luYyhpOTE1KTsKKwogCWludGVsX3Bv d2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKGk5MTUpOwogCiAJLyogS2VlcCB0aGUgcG93ZXIgd2Vs bCBlbmFibGVkLCBidXQgY2FuY2VsIGl0cyBycG0gd2FrZXJlZi4gKi8KQEAgLTQ1MjAsNiArNDg1 Miw3IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCWlmICghKGk5MTUtPmNzci5hbGxvd2VkX2RjX21hc2sgJiBEQ19TVEFU RV9FTl9EQzkpICYmCiAJICAgIHN1c3BlbmRfbW9kZSA9PSBJOTE1X0RSTV9TVVNQRU5EX0lETEUg JiYKIAkgICAgaTkxNS0+Y3NyLmRtY19wYXlsb2FkKSB7CisJCWludGVsX2Rpc3BsYXlfcG93ZXJf Zmx1c2hfd29yayhpOTE1KTsKIAkJaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoaTkx NSk7CiAJCXJldHVybjsKIAl9CkBAIC00NTMxLDYgKzQ4NjQsNyBAQCB2b2lkIGludGVsX3Bvd2Vy X2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlpZiAoIWk5 MTVfbW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCkKIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9w dXRfdW5jaGVja2VkKGk5MTUsIFBPV0VSX0RPTUFJTl9JTklUKTsKIAorCWludGVsX2Rpc3BsYXlf cG93ZXJfZmx1c2hfd29yayhpOTE1KTsKIAlpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0 ZShpOTE1KTsKIAogCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpCkBAIC00NjA5LDYgKzQ5NDMs OCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxv Y2spOwogCisJdmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHBvd2VyX2RvbWFpbnMpOwor CiAJZHVtcF9kb21haW5faW5mbyA9IGZhbHNlOwogCWZvcl9lYWNoX3Bvd2VyX3dlbGwoaTkxNSwg cG93ZXJfd2VsbCkgewogCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsK QEAgLTQ2NzAsNiArNTAwNiwxMSBAQCBzdGF0aWMgaW50ZWxfd2FrZXJlZl90IF9faW50ZWxfcnVu dGltZV9wbV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIHRyYWNr X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsKIH0KIAorc3RhdGljIGludGVsX3dha2Vy ZWZfdCBpbnRlbF9ydW50aW1lX3BtX2dldF9yYXcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCit7CisJcmV0dXJuIF9faW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSwgZmFsc2UpOworfQor CiAvKioKICAqIGludGVsX3J1bnRpbWVfcG1fZ2V0IC0gZ3JhYiBhIHJ1bnRpbWUgcG0gcmVmZXJl bmNlCiAgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKQEAgLTQ3NjksNiArNTExMCwxNCBA QCBzdGF0aWMgdm9pZCBfX2ludGVsX3J1bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAogCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGtkZXYpOwogfQogCisjaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKK3N0YXRpYyB2b2lk CitpbnRlbF9ydW50aW1lX3BtX3B1dF9yYXcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IGludGVsX3dha2VyZWZfdCB3cmVmKQoreworCV9faW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwg d3JlZiwgZmFsc2UpOworfQorI2VuZGlmCisKIC8qKgogICogaW50ZWxfcnVudGltZV9wbV9wdXRf dW5jaGVja2VkIC0gcmVsZWFzZSBhbiB1bmNoZWNrZWQgcnVudGltZSBwbSByZWZlcmVuY2UKICAq IEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVu dGltZV9wbS5oCmluZGV4IGUzMGIzODYzMmJkMi4uYTdhM2Q5Mjk1NDZmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5oCkBAIC01OSwxMyArNTksMjEgQEAgaW50ZWxfZGlz cGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkJICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pOwogdm9p ZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkJCSAgICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbik7Cit2b2lkIF9faW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJf ZG9tYWluIGRvbWFpbiwKKwkJCQkgICAgIGludGVsX3dha2VyZWZfdCB3YWtlcmVmKTsKK3ZvaWQg aW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KTsKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKQog dm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCQkgICAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluLAog CQkJICAgICBpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZik7CisjZGVmaW5lIGludGVsX2Rpc3BsYXlf cG93ZXJfcHV0X2FzeW5jKGk5MTUsIGRvbWFpbiwgd2FrZXJlZikgXAorCV9faW50ZWxfZGlzcGxh eV9wb3dlcl9wdXRfYXN5bmMoaTkxNSwgZG9tYWluLCB3YWtlcmVmKQogI2Vsc2UKICNkZWZpbmUg aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoaTkxNSwgZG9tYWluLCB3YWtlcmVmKSBcCiAJaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2VkKGk5MTUsIGRvbWFpbikKKyNkZWZpbmUgaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXRfYXN5bmMoaTkxNSwgZG9tYWluLCB3YWtlcmVmKSBcCisJX19pbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYyhpOTE1LCBkb21haW4sIC0xKQogI2VuZGlmCiB2b2lk IGljbF9kYnVmX3NsaWNlc191cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCQkJICAgIHU4IHJlcV9zbGljZXMpOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=