From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v2 04/11] drm/i915: Add support for asynchronous display power disabling Date: Thu, 9 May 2019 09:19:47 +0300 Message-ID: <20190509061954.10379-5-imre.deak@intel.com> References: <20190509061954.10379-1-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id A5FE389B12 for ; Thu, 9 May 2019 06:20:20 +0000 (UTC) In-Reply-To: <20190509061954.10379-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 CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFZpbGxlIFN5 cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBJbXJl IERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYyB8IDM2MiArKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uaCB8ICAgOCArCiAzIGZpbGVzIGNoYW5nZWQsIDM2OCBpbnNl cnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGQw MjU3ODA4NzM0Yy4uNTgwMWY1NDA3NTg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTgz NCw2ICs4MzQsMTEgQEAgc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyB7CiAKIAlzdHJ1Y3QgbXV0 ZXggbG9jazsKIAlpbnQgZG9tYWluX3VzZV9jb3VudFtQT1dFUl9ET01BSU5fTlVNXTsKKworCXN0 cnVjdCBkZWxheWVkX3dvcmsgYXN5bmNfcHV0X3dvcms7CisJaW50ZWxfd2FrZXJlZl90IGFzeW5j X3B1dF93YWtlcmVmOworCXU2NCBhc3luY19wdXRfZG9tYWluc1syXTsKKwogCXN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGxzOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCmluZGV4IDg5ZDYzMDliYjFmNy4uODI5ZDQ4M2QyN2U5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCkBAIC02MCw2ICs2MCwxOSBAQAogICogcHJl c2VudCBmb3IgYSBnaXZlbiBwbGF0Zm9ybS4KICAqLwogCitzdGF0aWMgaW50ZWxfd2FrZXJlZl90 IGludGVsX3J1bnRpbWVfcG1fZ2V0X3JhdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7 CitzdGF0aWMgdm9pZAorX19pbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgaW50ZWxfd2FrZXJlZl90IHdyZWYsCisJCSAgICAgICBib29sIHdha2Vsb2Nr KTsKKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCitz dGF0aWMgdm9pZAoraW50ZWxfcnVudGltZV9wbV9wdXRfcmF3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCBpbnRlbF93YWtlcmVmX3Qgd3JlZik7CisjZWxzZQorI2RlZmluZSBpbnRlbF9y dW50aW1lX3BtX3B1dF9yYXcoaTkxNSwgd3JlZikgXAorCV9faW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSwgLTEsIGZhbHNlKQorI2VuZGlmCisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkx NV9ERUJVR19SVU5USU1FX1BNKQogCiAjaW5jbHVkZSA8bGludXgvc29ydC5oPgpAQCAtMTkwMyw2 ICsxOTE2LDEyNSBAQCBzdGF0aWMgdm9pZCBjaHZfcGlwZV9wb3dlcl93ZWxsX2Rpc2FibGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWNodl9zZXRfcGlwZV9wb3dlcl93ZWxs KGRldl9wcml2LCBwb3dlcl93ZWxsLCBmYWxzZSk7CiB9CiAKK3N0YXRpYyB1NjQgX19hc3luY19w dXRfZG9tYWluc19tYXNrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMp Cit7CisJcmV0dXJuIHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzBdIHwKKwkgICAg ICAgcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFpbnNbMV07Cit9CisKKyNpZiBJU19FTkFC TEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKQorCitzdGF0aWMgYm9vbAorYXNz ZXJ0X2FzeW5jX3B1dF9kb21haW5fbWFza3NfZGlzam9pbnQoc3RydWN0IGk5MTVfcG93ZXJfZG9t YWlucyAqcG93ZXJfZG9tYWlucykKK3sKKwlyZXR1cm4gIVdBUk5fT04ocG93ZXJfZG9tYWlucy0+ YXN5bmNfcHV0X2RvbWFpbnNbMF0gJgorCQkJcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFp bnNbMV0pOworfQorCitzdGF0aWMgYm9vbAorX19hc3luY19wdXRfZG9tYWluc19zdGF0ZV9vayhz dHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQoreworCWVudW0gaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluOworCWJvb2wgZXJyID0gZmFsc2U7CisKKwllcnIg fD0gIWFzc2VydF9hc3luY19wdXRfZG9tYWluX21hc2tzX2Rpc2pvaW50KHBvd2VyX2RvbWFpbnMp OworCWVyciB8PSBXQVJOX09OKCEhcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dha2VyZWYgIT0K KwkJICAgICAgICEhX19hc3luY19wdXRfZG9tYWluc19tYXNrKHBvd2VyX2RvbWFpbnMpKTsKKwor CWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIF9fYXN5bmNfcHV0X2RvbWFpbnNfbWFzayhw b3dlcl9kb21haW5zKSkKKwkJZXJyIHw9IFdBUk5fT04ocG93ZXJfZG9tYWlucy0+ZG9tYWluX3Vz ZV9jb3VudFtkb21haW5dICE9IDEpOworCisJcmV0dXJuICFlcnI7Cit9CisKK3N0YXRpYyB2b2lk IHByaW50X3Bvd2VyX2RvbWFpbnMoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9t YWlucywKKwkJCQljb25zdCBjaGFyICpwcmVmaXgsIHU2NCBtYXNrKQoreworCWVudW0gaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluOworCisJRFJNX0RFQlVHX0RSSVZFUigiJXMgKCVs dSk6XG4iLCBwcmVmaXgsIGh3ZWlnaHQ2NChtYXNrKSk7CisJZm9yX2VhY2hfcG93ZXJfZG9tYWlu KGRvbWFpbiwgbWFzaykKKwkJRFJNX0RFQlVHX0RSSVZFUigiJXMgdXNlX2NvdW50ICVkXG4iLAor CQkJCSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZG9tYWluKSwKKwkJCQkgcG93ZXJf ZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtkb21haW5dKTsKK30KKworc3RhdGljIHZvaWQKK3By aW50X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBv d2VyX2RvbWFpbnMpCit7CisJRFJNX0RFQlVHX0RSSVZFUigiYXN5bmNfcHV0X3dha2VyZWYgJXVc biIsCisJCQkgcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dha2VyZWYpOworCisJcHJpbnRfcG93 ZXJfZG9tYWlucyhwb3dlcl9kb21haW5zLCAiYXN5bmNfcHV0X2RvbWFpbnNbMF0iLAorCQkJICAg IHBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF9kb21haW5zWzBdKTsKKwlwcmludF9wb3dlcl9kb21h aW5zKHBvd2VyX2RvbWFpbnMsICJhc3luY19wdXRfZG9tYWluc1sxXSIsCisJCQkgICAgcG93ZXJf ZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFpbnNbMV0pOworfQorCitzdGF0aWMgdm9pZAordmVyaWZ5 X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2Vy X2RvbWFpbnMpCit7CisJaWYgKCFfX2FzeW5jX3B1dF9kb21haW5zX3N0YXRlX29rKHBvd2VyX2Rv bWFpbnMpKQorCQlwcmludF9hc3luY19wdXRfZG9tYWluc19zdGF0ZShwb3dlcl9kb21haW5zKTsK K30KKworI2Vsc2UKKworc3RhdGljIHZvaWQKK2Fzc2VydF9hc3luY19wdXRfZG9tYWluX21hc2tz X2Rpc2pvaW50KHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMpCit7Cit9 CisKK3N0YXRpYyB2b2lkCit2ZXJpZnlfYXN5bmNfcHV0X2RvbWFpbnNfc3RhdGUoc3RydWN0IGk5 MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucykKK3sKK30KKworI2VuZGlmIC8qIENPTkZJ R19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNICovCisKK3N0YXRpYyB1NjQgYXN5bmNfcHV0X2Rv bWFpbnNfbWFzayhzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zKQorewor CWFzc2VydF9hc3luY19wdXRfZG9tYWluX21hc2tzX2Rpc2pvaW50KHBvd2VyX2RvbWFpbnMpOwor CisJcmV0dXJuIF9fYXN5bmNfcHV0X2RvbWFpbnNfbWFzayhwb3dlcl9kb21haW5zKTsKK30KKwor c3RhdGljIHZvaWQKK2FzeW5jX3B1dF9kb21haW5zX2NsZWFyX2RvbWFpbihzdHJ1Y3QgaTkxNV9w b3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zLAorCQkJICAgICAgIGVudW0gaW50ZWxfZGlzcGxh eV9wb3dlcl9kb21haW4gZG9tYWluKQoreworCWFzc2VydF9hc3luY19wdXRfZG9tYWluX21hc2tz X2Rpc2pvaW50KHBvd2VyX2RvbWFpbnMpOworCisJcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X2Rv bWFpbnNbMF0gJj0gfkJJVF9VTEwoZG9tYWluKTsKKwlwb3dlcl9kb21haW5zLT5hc3luY19wdXRf ZG9tYWluc1sxXSAmPSB+QklUX1VMTChkb21haW4pOworfQorCitzdGF0aWMgYm9vbAoraW50ZWxf ZGlzcGxheV9wb3dlcl9ncmFiX2FzeW5jX3B1dF9yZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAorCQkJCSAgICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRv bWFpbikKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRl dl9wcml2LT5wb3dlcl9kb21haW5zOworCWJvb2wgcmV0ID0gZmFsc2U7CisKKwlpZiAoIShhc3lu Y19wdXRfZG9tYWluc19tYXNrKHBvd2VyX2RvbWFpbnMpICYgQklUX1VMTChkb21haW4pKSkKKwkJ Z290byBvdXRfdmVyaWZ5OworCisJYXN5bmNfcHV0X2RvbWFpbnNfY2xlYXJfZG9tYWluKHBvd2Vy X2RvbWFpbnMsIGRvbWFpbik7CisKKwlyZXQgPSB0cnVlOworCisJaWYgKGFzeW5jX3B1dF9kb21h aW5zX21hc2socG93ZXJfZG9tYWlucykpCisJCWdvdG8gb3V0X3ZlcmlmeTsKKworCWNhbmNlbF9k ZWxheWVkX3dvcmsoJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93b3JrKTsKKwlpbnRlbF9ydW50 aW1lX3BtX3B1dF9yYXcoZGV2X3ByaXYsCisJCQkJIGZldGNoX2FuZF96ZXJvKCZwb3dlcl9kb21h aW5zLT5hc3luY19wdXRfd2FrZXJlZikpOworb3V0X3ZlcmlmeToKKwl2ZXJpZnlfYXN5bmNfcHV0 X2RvbWFpbnNfc3RhdGUocG93ZXJfZG9tYWlucyk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0 aWMgdm9pZAogX19pbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9kb21haW4oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbikKQEAgLTE5MTAsNiArMjA0Miw5IEBAIF9faW50ZWxfZGlzcGxheV9wb3dlcl9nZXRf ZG9tYWluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzdHJ1Y3QgaTkxNV9w b3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOwog CXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7CiAKKwlpZiAoaW50ZWxfZGlzcGxh eV9wb3dlcl9ncmFiX2FzeW5jX3B1dF9yZWYoZGV2X3ByaXYsIGRvbWFpbikpCisJCXJldHVybjsK KwogCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCBCSVRf VUxMKGRvbWFpbikpCiAJCWludGVsX3Bvd2VyX3dlbGxfZ2V0KGRldl9wcml2LCBwb3dlcl93ZWxs KTsKIApAQCAtMTkzNSw5ICsyMDcwLDcgQEAgaW50ZWxfd2FrZXJlZl90IGludGVsX2Rpc3BsYXlf cG93ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCW11dGV4 X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwotCiAJX19pbnRlbF9kaXNwbGF5X3Bvd2VyX2dl dF9kb21haW4oZGV2X3ByaXYsIGRvbWFpbik7Ci0KIAltdXRleF91bmxvY2soJnBvd2VyX2RvbWFp bnMtPmxvY2spOwogCiAJcmV0dXJuIHdha2VyZWY7CkBAIC0xOTg2LDI0ICsyMTE5LDM2IEBAIGlu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCXJldHVybiB3YWtlcmVmOwogfQogCi1zdGF0aWMgdm9pZCBfX2ludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkg ICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKK3N0YXRpYyB2b2lk CitfX2ludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCisJCQkJIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWlu KQogewogCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnM7CiAJc3RydWN0 IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKKwljb25zdCBjaGFyICpuYW1lID0gaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKGRvbWFpbik7CiAKIAlwb3dlcl9kb21haW5zID0gJmRl dl9wcml2LT5wb3dlcl9kb21haW5zOwogCi0JbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9j ayk7Ci0KIAlXQVJOKCFwb3dlcl9kb21haW5zLT5kb21haW5fdXNlX2NvdW50W2RvbWFpbl0sCiAJ ICAgICAiVXNlIGNvdW50IG9uIGRvbWFpbiAlcyBpcyBhbHJlYWR5IHplcm9cbiIsCi0JICAgICBp bnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZG9tYWluKSk7CisJICAgICBuYW1lKTsKKwlX QVJOKGFzeW5jX3B1dF9kb21haW5zX21hc2socG93ZXJfZG9tYWlucykgJiBCSVRfVUxMKGRvbWFp biksCisJICAgICAiQXN5bmMgZGlzYWJsaW5nIG9mIGRvbWFpbiAlcyBpcyBwZW5kaW5nXG4iLAor CSAgICAgbmFtZSk7CisKIAlwb3dlcl9kb21haW5zLT5kb21haW5fdXNlX2NvdW50W2RvbWFpbl0t LTsKIAogCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsX3JldmVyc2UoZGV2X3ByaXYsIHBvd2Vy X3dlbGwsIEJJVF9VTEwoZG9tYWluKSkKIAkJaW50ZWxfcG93ZXJfd2VsbF9wdXQoZGV2X3ByaXYs IHBvd2VyX3dlbGwpOworfQogCitzdGF0aWMgdm9pZCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICBlbnVtIGludGVs X2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21h aW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCisJbXV0ZXhf bG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisJX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9k b21haW4oZGV2X3ByaXYsIGRvbWFpbik7CiAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5s b2NrKTsKIH0KIApAQCAtMjAyNyw2ICsyMTcyLDE4NyBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0X3VuY2hlY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50 ZWxfcnVudGltZV9wbV9wdXRfdW5jaGVja2VkKGRldl9wcml2KTsKIH0KIAorc3RhdGljIHZvaWQK K3F1ZXVlX2FzeW5jX3B1dF9kb21haW5zX3dvcmsoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAq cG93ZXJfZG9tYWlucywKKwkJCSAgICAgaW50ZWxfd2FrZXJlZl90IHdha2VyZWYpCit7CisJV0FS Tl9PTihwb3dlcl9kb21haW5zLT5hc3luY19wdXRfd2FrZXJlZik7CisJcG93ZXJfZG9tYWlucy0+ YXN5bmNfcHV0X3dha2VyZWYgPSB3YWtlcmVmOworCVdBUk5fT04oIXF1ZXVlX2RlbGF5ZWRfd29y ayhzeXN0ZW1fdW5ib3VuZF93cSwKKwkJCQkgICAgJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93 b3JrLAorCQkJCSAgICBtc2Vjc190b19qaWZmaWVzKDEwMCkpKTsKK30KKworc3RhdGljIHZvaWQK K3JlbGVhc2VfYXN5bmNfcHV0X2RvbWFpbnMoc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93 ZXJfZG9tYWlucywgdTY0IG1hc2spCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0KKwkJY29udGFpbmVyX29mKHBvd2VyX2RvbWFpbnMsIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlLAorCQkJICAgICBwb3dlcl9kb21haW5zKTsKKwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJf ZG9tYWluIGRvbWFpbjsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCS8qCisJICogVGhl IGNhbGxlciBtdXN0IGhvbGQgYWxyZWFkeSByYXcgd2FrZXJlZiwgdXBncmFkZSB0aGF0IHRvIGEg cHJvcGVyCisJICogd2FrZXJlZiB0byBtYWtlIHRoZSBzdGF0ZSBjaGVja2VyIGhhcHB5IGFib3V0 IHRoZSBIVyBhY2Nlc3MgZHVyaW5nCisJICogcG93ZXIgd2VsbCBkaXNhYmxpbmcuCisJICovCisJ YXNzZXJ0X3JwbV9yYXdfd2FrZXJlZl9oZWxkKGRldl9wcml2KTsKKwl3YWtlcmVmID0gaW50ZWxf cnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCisJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFp biwgbWFzaykgeworCQkvKiBDbGVhciBiZWZvcmUgcHV0LCBzbyBwdXQncyBzYW5pdHkgY2hlY2sg aXMgaGFwcHkuICovCisJCWFzeW5jX3B1dF9kb21haW5zX2NsZWFyX2RvbWFpbihwb3dlcl9kb21h aW5zLCBkb21haW4pOworCQlfX2ludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2RvbWFpbihkZXZfcHJp diwgZG9tYWluKTsKKwl9CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJl Zik7Cit9CisKK3N0YXRpYyB2b2lkCitpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luY193b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPQorCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUs CisJCQkgICAgIHBvd2VyX2RvbWFpbnMuYXN5bmNfcHV0X3dvcmsud29yayk7CisJc3RydWN0IGk5 MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWlu czsKKwlpbnRlbF93YWtlcmVmX3QgbmV3X3dvcmtfd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0X3JhdyhkZXZfcHJpdik7CisJaW50ZWxfd2FrZXJlZl90IG9sZF93b3JrX3dha2VyZWYgPSAw OworCisJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisKKwkvKgorCSAqIEJhaWwg b3V0IGlmIGFsbCB0aGUgZG9tYWluIHJlZnMgcGVuZGluZyB0byBiZSByZWxlYXNlZCB3ZXJlIGdy YWJiZWQKKwkgKiBieSBzdWJzZXF1ZW50IGdldHMgb3IgYSBmbHVzaF93b3JrLgorCSAqLworCW9s ZF93b3JrX3dha2VyZWYgPSBmZXRjaF9hbmRfemVybygmcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0 X3dha2VyZWYpOworCWlmICghb2xkX3dvcmtfd2FrZXJlZikKKwkJZ290byBvdXRfdmVyaWZ5Owor CisJcmVsZWFzZV9hc3luY19wdXRfZG9tYWlucyhwb3dlcl9kb21haW5zLAorCQkJCSAgcG93ZXJf ZG9tYWlucy0+YXN5bmNfcHV0X2RvbWFpbnNbMF0pOworCisJLyogUmVxdWV1ZSB0aGUgd29yayBp ZiBtb3JlIGRvbWFpbnMgd2VyZSBhc3luYyBwdXQgbWVhbndoaWxlLiAqLworCWlmIChwb3dlcl9k b21haW5zLT5hc3luY19wdXRfZG9tYWluc1sxXSkgeworCQlwb3dlcl9kb21haW5zLT5hc3luY19w dXRfZG9tYWluc1swXSA9CisJCQlmZXRjaF9hbmRfemVybygmcG93ZXJfZG9tYWlucy0+YXN5bmNf cHV0X2RvbWFpbnNbMV0pOworCQlxdWV1ZV9hc3luY19wdXRfZG9tYWluc193b3JrKHBvd2VyX2Rv bWFpbnMsCisJCQkJCSAgICAgZmV0Y2hfYW5kX3plcm8oJm5ld193b3JrX3dha2VyZWYpKTsKKwl9 CisKK291dF92ZXJpZnk6CisJdmVyaWZ5X2FzeW5jX3B1dF9kb21haW5zX3N0YXRlKHBvd2VyX2Rv bWFpbnMpOworCisJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKKworCWlmIChv bGRfd29ya193YWtlcmVmKQorCQlpbnRlbF9ydW50aW1lX3BtX3B1dF9yYXcoZGV2X3ByaXYsIG9s ZF93b3JrX3dha2VyZWYpOworCWlmIChuZXdfd29ya193YWtlcmVmKQorCQlpbnRlbF9ydW50aW1l X3BtX3B1dF9yYXcoZGV2X3ByaXYsIG5ld193b3JrX3dha2VyZWYpOworfQorLyoqCisgKiBpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYyAtIHJlbGVhc2UgYSBwb3dlciBkb21haW4gcmVmZXJl bmNlIGFzeW5jaHJvbm91c2x5CisgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBk b21haW46IHBvd2VyIGRvbWFpbiB0byByZWZlcmVuY2UKKyAqIEB3YWtlcmVmOiB3YWtlcmVmIGFj cXVpcmVkIGZvciB0aGUgcmVmZXJlbmNlIHRoYXQgaXMgYmVpbmcgcmVsZWFzZWQKKyAqCisgKiBU aGlzIGZ1bmN0aW9uIGRyb3BzIHRoZSBwb3dlciBkb21haW4gcmVmZXJlbmNlIG9idGFpbmVkIGJ5 CisgKiBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldCooKSBhbmQgc2NoZWR1bGVzIGEgd29yayB0byBw b3dlciBkb3duIHRoZQorICogY29ycmVzcG9uZGluZyBoYXJkd2FyZSBibG9jayBpZiB0aGlzIGlz IHRoZSBsYXN0IHJlZmVyZW5jZS4KKyAqLwordm9pZCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 X2FzeW5jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCSAgICAgZW51bSBpbnRl bF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4sCisJCQkJICAgICBpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZikKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0g Jmk5MTUtPnBvd2VyX2RvbWFpbnM7CisJaW50ZWxfd2FrZXJlZl90IHdvcmtfd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0X3JhdyhpOTE1KTsKKworCW11dGV4X2xvY2soJnBvd2VyX2RvbWFp bnMtPmxvY2spOworCisJaWYgKHBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWlu XSA+IDEpIHsKKwkJX19pbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9kb21haW4oaTkxNSwgZG9tYWlu KTsKKworCQlnb3RvIG91dF92ZXJpZnk7CisJfQorCisJV0FSTl9PTihwb3dlcl9kb21haW5zLT5k b21haW5fdXNlX2NvdW50W2RvbWFpbl0gIT0gMSk7CisKKwkvKiBMZXQgYSBwZW5kaW5nIHdvcmsg cmVxdWV1ZSBpdHNlbGYgb3IgcXVldWUgYSBuZXcgb25lLiAqLworCWlmIChwb3dlcl9kb21haW5z LT5hc3luY19wdXRfd2FrZXJlZikgeworCQlwb3dlcl9kb21haW5zLT5hc3luY19wdXRfZG9tYWlu c1sxXSB8PSBCSVRfVUxMKGRvbWFpbik7CisJfSBlbHNlIHsKKwkJcG93ZXJfZG9tYWlucy0+YXN5 bmNfcHV0X2RvbWFpbnNbMF0gfD0gQklUX1VMTChkb21haW4pOworCQlxdWV1ZV9hc3luY19wdXRf ZG9tYWluc193b3JrKHBvd2VyX2RvbWFpbnMsCisJCQkJCSAgICAgZmV0Y2hfYW5kX3plcm8oJndv cmtfd2FrZXJlZikpOworCX0KKworb3V0X3ZlcmlmeToKKwl2ZXJpZnlfYXN5bmNfcHV0X2RvbWFp bnNfc3RhdGUocG93ZXJfZG9tYWlucyk7CisKKwltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMt PmxvY2spOworCisJaWYgKHdvcmtfd2FrZXJlZikKKwkJaW50ZWxfcnVudGltZV9wbV9wdXRfcmF3 KGk5MTUsIHdvcmtfd2FrZXJlZik7CisKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKK30KKworLyoqCisgKiBpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsgLSBmbHVz aGVzIHRoZSBhc3luYyBkaXNwbGF5IHBvd2VyIGRpc2FibGluZyB3b3JrCisgKiBAaTkxNTogaTkx NSBkZXZpY2UgaW5zdGFuY2UKKyAqCisgKiBGbHVzaGVzIGFueSBwZW5kaW5nIHdvcmsgdGhhdCB3 YXMgc2NoZWR1bGVkIGJ5IGEgcHJlY2VlZGluZworICogaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRf YXN5bmMoKSBjYWxsLCBjb21wbGV0aW5nIHRoZSBkaXNhYmxpbmcgb2YgdGhlCisgKiBjb3JyZXNw b25kaW5nIHBvd2VyIGRvbWFpbnMuCisgKgorICogTm90ZSB0aGF0IHRoZSB3b3JrIGhhbmRsZXIg ZnVuY3Rpb24gbWF5IHN0aWxsIGJlIHJ1bm5pbmcgYWZ0ZXIgdGhpcworICogZnVuY3Rpb24gcmV0 dXJuczsgdG8gZW5zdXJlIHRoYXQgdGhlIHdvcmsgaGFuZGxlciBpc24ndCBydW5uaW5nIHVzZQor ICogaW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrX3N5bmMoKSBpbnN0ZWFkLgorICovCit2 b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29yayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0g Jmk5MTUtPnBvd2VyX2RvbWFpbnM7CisJaW50ZWxfd2FrZXJlZl90IHdvcmtfd2FrZXJlZjsKKwor CW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOworCisJd29ya193YWtlcmVmID0gZmV0 Y2hfYW5kX3plcm8oJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93YWtlcmVmKTsKKwlpZiAoIXdv cmtfd2FrZXJlZikKKwkJZ290byBvdXRfdmVyaWZ5OworCisJcmVsZWFzZV9hc3luY19wdXRfZG9t YWlucyhwb3dlcl9kb21haW5zLAorCQkJCSAgYXN5bmNfcHV0X2RvbWFpbnNfbWFzayhwb3dlcl9k b21haW5zKSk7CisJY2FuY2VsX2RlbGF5ZWRfd29yaygmcG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0 X3dvcmspOworCitvdXRfdmVyaWZ5OgorCXZlcmlmeV9hc3luY19wdXRfZG9tYWluc19zdGF0ZShw b3dlcl9kb21haW5zKTsKKworCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisK KwlpZiAod29ya193YWtlcmVmKQorCQlpbnRlbF9ydW50aW1lX3BtX3B1dF9yYXcoaTkxNSwgd29y a193YWtlcmVmKTsKK30KKworLyoqCisgKiBpbnRlbF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmtf c3luYyAtIGZsdXNoZXMgYW5kIHN5bmNzIHRoZSBhc3luYyBkaXNwbGF5IHBvd2VyIGRpc2FibGlu ZyB3b3JrCisgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqCisgKiBMaWtlIGludGVs X2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29yaygpLCBidXQgYWxzbyBlbnN1cmUgdGhhdCB0aGUgd29y aworICogaGFuZGxlciBmdW5jdGlvbiBpcyBub3QgcnVubmluZyBhbnkgbW9yZSB3aGVuIHRoaXMg ZnVuY3Rpb24gcmV0dXJucy4KKyAqLworc3RhdGljIHZvaWQKK2ludGVsX2Rpc3BsYXlfcG93ZXJf Zmx1c2hfd29ya19zeW5jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlz dHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dl cl9kb21haW5zOworCisJaW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrKGRldl9wcml2KTsK KwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnBvd2VyX2RvbWFpbnMtPmFzeW5jX3B1dF93b3Jr KTsKKworCXZlcmlmeV9hc3luY19wdXRfZG9tYWluc19zdGF0ZShwb3dlcl9kb21haW5zKTsKKwor CVdBUk5fT04ocG93ZXJfZG9tYWlucy0+YXN5bmNfcHV0X3dha2VyZWYpOworfQorCiAjaWYgSVNf RU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKIC8qKgogICogaW50ZWxf ZGlzcGxheV9wb3dlcl9wdXQgLSByZWxlYXNlIGEgcG93ZXIgZG9tYWluIHJlZmVyZW5jZQpAQCAt MzUyNSw2ICszODUxLDkgQEAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAltdXRleF9pbml0KCZwb3dlcl9kb21haW5zLT5s b2NrKTsKIAorCUlOSVRfREVMQVlFRF9XT1JLKCZwb3dlcl9kb21haW5zLT5hc3luY19wdXRfd29y aywKKwkJCSAgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmNfd29yayk7CisKIAkvKgogCSAq IFRoZSBlbmFibGluZyBvcmRlciB3aWxsIGJlIGZyb20gbG93ZXIgdG8gaGlnaGVyIGluZGV4ZWQg d2VsbHMsCiAJICogdGhlIGRpc2FibGluZyBvcmRlciBpcyByZXZlcnNlZC4KQEAgLTQ0NDUsNiAr NDc3NCw4IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCWlmICghaTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxs KQogCQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF91bmNoZWNrZWQoaTkxNSwgUE9XRVJfRE9NQUlO X0lOSVQpOwogCisJaW50ZWxfZGlzcGxheV9wb3dlcl9mbHVzaF93b3JrX3N5bmMoaTkxNSk7CisK IAlpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShpOTE1KTsKIAogCS8qIEtlZXAgdGhl IHBvd2VyIHdlbGwgZW5hYmxlZCwgYnV0IGNhbmNlbCBpdHMgcnBtIHdha2VyZWYuICovCkBAIC00 NTIwLDYgKzQ4NTEsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlpZiAoIShpOTE1LT5jc3IuYWxsb3dlZF9kY19tYXNr ICYgRENfU1RBVEVfRU5fREM5KSAmJgogCSAgICBzdXNwZW5kX21vZGUgPT0gSTkxNV9EUk1fU1VT UEVORF9JRExFICYmCiAJICAgIGk5MTUtPmNzci5kbWNfcGF5bG9hZCkgeworCQlpbnRlbF9kaXNw bGF5X3Bvd2VyX2ZsdXNoX3dvcmsoaTkxNSk7CiAJCWludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5 X3N0YXRlKGk5MTUpOwogCQlyZXR1cm47CiAJfQpAQCAtNDUzMSw2ICs0ODYzLDcgQEAgdm9pZCBp bnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CiAJaWYgKCFpOTE1X21vZHBhcmFtcy5kaXNhYmxlX3Bvd2VyX3dlbGwpCiAJCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0X3VuY2hlY2tlZChpOTE1LCBQT1dFUl9ET01BSU5fSU5JVCk7CiAKKwlpbnRl bF9kaXNwbGF5X3Bvd2VyX2ZsdXNoX3dvcmsoaTkxNSk7CiAJaW50ZWxfcG93ZXJfZG9tYWluc192 ZXJpZnlfc3RhdGUoaTkxNSk7CiAKIAlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKQpAQCAtNDYw OSw2ICs0OTQyLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAKIAltdXRleF9sb2NrKCZwb3dlcl9k b21haW5zLT5sb2NrKTsKIAorCXZlcmlmeV9hc3luY19wdXRfZG9tYWluc19zdGF0ZShwb3dlcl9k b21haW5zKTsKKwogCWR1bXBfZG9tYWluX2luZm8gPSBmYWxzZTsKIAlmb3JfZWFjaF9wb3dlcl93 ZWxsKGk5MTUsIHBvd2VyX3dlbGwpIHsKIAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp biBkb21haW47CkBAIC00NjcwLDYgKzUwMDUsMTEgQEAgc3RhdGljIGludGVsX3dha2VyZWZfdCBf X2ludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJl dHVybiB0cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoaTkxNSk7CiB9CiAKK3N0YXRpYyBp bnRlbF93YWtlcmVmX3QgaW50ZWxfcnVudGltZV9wbV9nZXRfcmF3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQoreworCXJldHVybiBfX2ludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUsIGZh bHNlKTsKK30KKwogLyoqCiAgKiBpbnRlbF9ydW50aW1lX3BtX2dldCAtIGdyYWIgYSBydW50aW1l IHBtIHJlZmVyZW5jZQogICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCkBAIC00NzY5LDYg KzUxMDksMTQgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChrZGV2KTsK IH0KIAorI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCitz dGF0aWMgdm9pZAoraW50ZWxfcnVudGltZV9wbV9wdXRfcmF3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCBpbnRlbF93YWtlcmVmX3Qgd3JlZikKK3sKKwlfX2ludGVsX3J1bnRpbWVfcG1f cHV0KGk5MTUsIHdyZWYsIGZhbHNlKTsKK30KKyNlbmRpZgorCiAvKioKICAqIGludGVsX3J1bnRp bWVfcG1fcHV0X3VuY2hlY2tlZCAtIHJlbGVhc2UgYW4gdW5jaGVja2VkIHJ1bnRpbWUgcG0gcmVm ZXJlbmNlCiAgKiBAaTkxNTogaTkxNSBkZXZpY2UgaW5zdGFuY2UKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uaAppbmRleCBlMzBiMzg2MzJiZDIuLmE3YTNkOTI5NTQ2ZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uaApAQCAtNTksMTMgKzU5LDIxIEBA IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkJCSAgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9t YWluKTsKIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfdW5jaGVja2VkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbiBkb21haW4pOwordm9pZCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5j KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCSAgICAgZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbiBkb21haW4sCisJCQkJICAgICBpbnRlbF93YWtlcmVmX3Qgd2FrZXJl Zik7Cit2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfZmx1c2hfd29yayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSk7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVO VElNRV9QTSkKIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQkJICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbiwKIAkJCSAgICAgaW50ZWxfd2FrZXJlZl90IHdha2VyZWYpOworI2RlZmluZSBpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYyhpOTE1LCBkb21haW4sIHdha2VyZWYpIFwKKwlfX2lu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKGk5MTUsIGRvbWFpbiwgd2FrZXJlZikKICNlbHNl CiAjZGVmaW5lIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGk5MTUsIGRvbWFpbiwgd2FrZXJlZikg XAogCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X3VuY2hlY2tlZChpOTE1LCBkb21haW4pCisjZGVm aW5lIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKGk5MTUsIGRvbWFpbiwgd2FrZXJlZikg XAorCV9faW50ZWxfZGlzcGxheV9wb3dlcl9wdXRfYXN5bmMoaTkxNSwgZG9tYWluLCAtMSkKICNl bmRpZgogdm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCSAgICB1OCByZXFfc2xpY2VzKTsKLS0gCjIuMTcuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4