From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dhinakaran Pandiyan Subject: [PATCH v2 7/8] drm/i915: Introduce a non-blocking power domain for vblank interrupts Date: Mon, 18 Dec 2017 21:26:58 -0800 Message-ID: <20171219052659.2355-8-dhinakaran.pandiyan@intel.com> References: <20171219052659.2355-1-dhinakaran.pandiyan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171219052659.2355-1-dhinakaran.pandiyan@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 Cc: Daniel Vetter , Dhinakaran Pandiyan , dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org V2hlbiBEQyBzdGF0ZXMgYXJlIGVuYWJsZWQgYW5kIFBTUiBpcyBhY3RpdmUsIHRoZSBoYXJkd2Fy ZSBlbnRlcnMgREM1L0RDNgpzdGF0ZXMgcmVzdWx0aW5nIGluIGZyYW1lIGNvdW50ZXIgcmVzZXRz LiBUaGUgZnJhbWUgY291bnRlciByZXNldHMgbWVzcwp1cCB0aGUgdmJsYW5rIGNvdW50aW5nIGxv Z2ljLiBJbiBvcmRlciB0byBkaXNhYmxlIERDIHN0YXRlcyB3aGVuCnZibGFuayBpbnRlcnJ1cHRz IGFyZSByZXF1aXJlZCBhbmQgdG8gZGlzYWxsb3cgREMgc3RhdGVzIHdoZW4gdmJsYW5rcwppbnRl cnJ1cHRzIGFyZSBhbHJlYWR5IGVuYWJsZWQsIGludHJvZHVjZSBhIG5ldyBWQkxBTksgcG93ZXIg ZG9tYWluLgpTaW5jZSB0aGlzIHBvd2VyIGRvbWFpbiByZWZlcmVuY2UgbmVlZHMgdG8gYmUgYWNx dWlyZWQgYW5kIHJlbGVhc2VkIGluCmF0b21pYyBjb250ZXh0LCBfdmJsYW5rX2dldCgpIGFuZCBf dmJsYW5rX3B1dCgpIG1ldGhvZHMgc2tpcCB0aGUKcG93ZXJfZG9tYWluIG11dGV4LgoKdjI6IEZp eCBkZWFkbG9jayBieSBzd2l0Y2hpbmcgaXJxc2F2ZSBzcGlubG9jay4KICAgIEltcGxlbWVudCBh dG9taWMgdmVyc2lvbiBvZiBnZXRfaWZfZW5hYmxlZC4KICAgIE1vZGlmeSBwb3dlcl9kb21haW5f dmVyaWZ5X3N0YXRlIHRvIGNoZWNrIHBvd2VyIHdlbGwgdXNlIGNvdW50IGFuZAplbmFibGVkIHN0 YXR1cyBhdG9taWNhbGx5LgogICAgUmV3cml0ZSBvZiBpbnRlbF9wb3dlcl93ZWxsX3tnZXQscHV0 fQoKQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogUm9kcmlnbyBWaXZp IDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEaGluYWthcmFuIFBhbmRp eWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMTggKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uYyB8IDE4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMyBmaWxl cyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKaW5kZXggZGRhZGViOWVhZjQ5Li5kYjU5N2M1ZWJhZWQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaApAQCAtMzk3LDYgKzM5Nyw3IEBAIGVudW0gaW50ZWxfZGlzcGxheV9wb3dl cl9kb21haW4gewogCVBPV0VSX0RPTUFJTl9BVVhfQywKIAlQT1dFUl9ET01BSU5fQVVYX0QsCiAJ UE9XRVJfRE9NQUlOX0dNQlVTLAorCVBPV0VSX0RPTUFJTl9WQkxBTkssCiAJUE9XRVJfRE9NQUlO X01PREVTRVQsCiAJUE9XRVJfRE9NQUlOX0dUX0lSUSwKIAlQT1dFUl9ET01BSU5fSU5JVCwKQEAg LTE0NzYsNiArMTQ3NywyMyBAQCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsKIAkJCWJvb2wgaGFz X2Z1c2VzOjE7CiAJCX0gaHN3OwogCX07CisKKwkvKiBMb2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3Mg dG8gY291bnQsIGh3X2VuYWJsZWQgYW5kIG9wcywgdXNlZCBmb3IKKwkgKiBwb3dlciB3ZWxscyB0 aGF0IGhhdmUgc3VwcG9ydHNfYXRvbWl4X2N0eCBzZXQgdG8gVHJ1ZS4KKwkgKi8KKwlzcGlubG9j a190IGxvY2s7CisKKwkvKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZ2V0L3B1dCBtZXRob2RzIGZvciB0 aGlzIHBvd2VyIHdlbGwgY2FuIGJlIGNhbGxlZAorCSAqIGluIGF0b21pYyBjb250ZXh0cywgcmVx dWlyZXMgLm9wcyB0byBub3Qgc2xlZXAuIFRoaXMgaXMgdmFsaWQKKwkgKiBvbmx5IGZvciB0aGUg RENfT0ZGIHBvd2VyIHdlbGwgY3VycmVudGx5LgorCSAqLworCWJvb2wgc3VwcG9ydHNfYXRvbWlj X2N0eDsKKworCS8qIERDX09GRiBwb3dlciB3ZWxsIHdhcyBkaXNhYmxlZCBzaW5jZSB0aGUgbGFz dCB0aW1lIHZibGFua3Mgd2VyZQorCSAqIGRpc2FibGVkLgorCSAqLworCWJvb2wgZGNfb2ZmX2Rp c2FibGVkOworCiAJY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMgKm9wczsKIH07CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNDg2NzZlOTkzMTZlLi42ODIyMTE4ZjNjNGQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNzk4LDYgKzE3OTgsOSBAQCBib29sIGlu dGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCQkJCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbik7 CiB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCSAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4p Owordm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3ZibGFua19nZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCQkJCSAgICBib29sICpuZWVkc19yZXN0b3JlKTsKK3ZvaWQgaW50 ZWxfZGlzcGxheV9wb3dlcl92YmxhbmtfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAogYXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3Bl bmRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMKaW5kZXggOTkyY2FlYzFmYmM0Li5mYzY4MTJlZDYxMzcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKQEAgLTU2LDYgKzU2LDE5IEBA IHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICoKIGxvb2t1cF9wb3dlcl93ZWxsKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJICBlbnVtIGk5MTVfcG93ZXJfd2VsbF9p ZCBwb3dlcl93ZWxsX2lkKTsKIAorLyogT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZW4gdGhpcyBp cyBjYWxsZWQgZnJvbSBhdG9taWMgY29udGV4dHMsCisgKiBhbHRob3VnaCB0aGUgY2FzZSBpcyB1 bmxpa2VseS4KKyAqLworI2RlZmluZSBwb3dlcl93ZWxsX2xvY2socG93ZXJfd2VsbCwgZmxhZ3Mp IGRvIHsJCQlcCisJaWYgKGxpa2VseShwb3dlcl93ZWxsLT5zdXBwb3J0c19hdG9taWNfY3R4KSkJ CVwKKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnBvd2VyX3dlbGwtPmxvY2ssIGZsYWdzKTsJXAorCX0g d2hpbGUgKDApCisKKyNkZWZpbmUgcG93ZXJfd2VsbF91bmxvY2socG93ZXJfd2VsbCwgZmxhZ3Mp IGRvIHsJCQlcCisJaWYgKGxpa2VseShwb3dlcl93ZWxsLT5zdXBwb3J0c19hdG9taWNfY3R4KSkJ CQlcCisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvd2VyX3dlbGwtPmxvY2ssIGZsYWdzKTsJ XAorCX0gd2hpbGUgKDApCisKIGNvbnN0IGNoYXIgKgogaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW5fc3RyKGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKQogewpAQCAtMTI2 LDYgKzEzOSw4IEBAIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3N0cihlbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKIAkJcmV0dXJuICJBVVhfRCI7CiAJY2FzZSBQT1dF Ul9ET01BSU5fR01CVVM6CiAJCXJldHVybiAiR01CVVMiOworCWNhc2UgUE9XRVJfRE9NQUlOX1ZC TEFOSzoKKwkJcmV0dXJuICJWQkxBTksiOwogCWNhc2UgUE9XRVJfRE9NQUlOX0lOSVQ6CiAJCXJl dHVybiAiSU5JVCI7CiAJY2FzZSBQT1dFUl9ET01BSU5fTU9ERVNFVDoKQEAgLTE0MSw2ICsxNTYs OSBAQCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbiBkb21haW4pCiBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2VuYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7CisJaWYgKHBvd2VyX3dlbGwtPnN1cHBvcnRzX2F0b21p Y19jdHgpCisJCWFzc2VydF9zcGluX2xvY2tlZCgmcG93ZXJfd2VsbC0+bG9jayk7CisKIAlEUk1f REVCVUdfS01TKCJlbmFibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7CiAJcG93ZXJfd2Vs bC0+b3BzLT5lbmFibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwogCXBvd2VyX3dlbGwtPmh3X2Vu YWJsZWQgPSB0cnVlOwpAQCAtMTQ5LDI2ICsxNjcsNDMgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93 ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGlj IHZvaWQgaW50ZWxfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCQkgICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCiB7 CisJaWYgKHBvd2VyX3dlbGwtPnN1cHBvcnRzX2F0b21pY19jdHgpCisJCWFzc2VydF9zcGluX2xv Y2tlZCgmcG93ZXJfd2VsbC0+bG9jayk7CisKIAlEUk1fREVCVUdfS01TKCJkaXNhYmxpbmcgJXNc biIsIHBvd2VyX3dlbGwtPm5hbWUpOwogCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPSBmYWxzZTsK IAlwb3dlcl93ZWxsLT5vcHMtPmRpc2FibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwogfQogCi1z dGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCitzdGF0aWMgdm9pZCBfX2ludGVsX3Bvd2VyX3dlbGxfZ2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93 ZXJfd2VsbCkKIHsKIAlpZiAoIXBvd2VyX3dlbGwtPmNvdW50KyspCiAJCWludGVsX3Bvd2VyX3dl bGxfZW5hYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKIH0KIAorc3RhdGljIHZvaWQgaW50ZWxf cG93ZXJfd2VsbF9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQoreworCXVuc2lnbmVkIGxvbmcgZmxh Z3MgPSAwOworCisJcG93ZXJfd2VsbF9sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKTsKKwlfX2ludGVs X3Bvd2VyX3dlbGxfZ2V0KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKKwlwb3dlcl93ZWxsX3VubG9j ayhwb3dlcl93ZWxsLCBmbGFncyk7Cit9CisKIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxf cHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgc3RydWN0IGk5MTVf cG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKIHsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKKwor CXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7CiAJV0FSTighcG93ZXJfd2VsbC0+ Y291bnQsICJVc2UgY291bnQgb24gcG93ZXIgd2VsbCAlcyBpcyBhbHJlYWR5IHplcm8iLAogCSAg ICAgcG93ZXJfd2VsbC0+bmFtZSk7CiAKIAlpZiAoIS0tcG93ZXJfd2VsbC0+Y291bnQpCiAJCWlu dGVsX3Bvd2VyX3dlbGxfZGlzYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7CisJcG93ZXJfd2Vs bF91bmxvY2socG93ZXJfd2VsbCwgZmxhZ3MpOwogfQogCiAvKioKQEAgLTcyNiw2ICs3NjEsNyBA QCBzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlza2xfZW5hYmxlX2RjNihkZXZfcHJpdik7CiAJZWxz ZSBpZiAoZGV2X3ByaXYtPmNzci5hbGxvd2VkX2RjX21hc2sgJiBEQ19TVEFURV9FTl9VUFRPX0RD NSkKIAkJZ2VuOV9lbmFibGVfZGM1KGRldl9wcml2KTsKKwlwb3dlcl93ZWxsLT5kY19vZmZfZGlz YWJsZWQgPSB0cnVlOwogfQogCiBzdGF0aWMgdm9pZCBpOXh4X3Bvd2VyX3dlbGxfc3luY19od19u b29wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTE0NDMsNiArMTQ3OSw1 OCBAQCBzdGF0aWMgdm9pZCBjaHZfcGlwZV9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWNodl9zZXRfcGlwZV9wb3dlcl93ZWxsKGRldl9wcml2 LCBwb3dlcl93ZWxsLCBmYWxzZSk7CiB9CiAKK3ZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl92Ymxh bmtfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgYm9vbCAq bmVlZHNfcmVzdG9yZSkKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21h aW5zICA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKKwlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs ICpwb3dlcl93ZWxsOworCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluID0g UE9XRVJfRE9NQUlOX1ZCTEFOSzsKKworCSpuZWVkc19yZXN0b3JlID0gZmFsc2U7CisKKwlpZiAo IUhBU19DU1IoZGV2X3ByaXYpKQorCQlyZXR1cm47CisKKwlpZiAoIUNBTl9QU1IoZGV2X3ByaXYp KQorCQlyZXR1cm47CisKKwlpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZShkZXZfcHJpdik7 CisKKwlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCwgQklU X1VMTChkb21haW4pKSB7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOworCisJCXBvd2VyX3dl bGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7CisJCV9faW50ZWxfcG93ZXJfd2VsbF9nZXQoZGV2 X3ByaXYsIHBvd2VyX3dlbGwpOworCQkqbmVlZHNfcmVzdG9yZSA9IHBvd2VyX3dlbGwtPmRjX29m Zl9kaXNhYmxlZDsKKwkJcG93ZXJfd2VsbC0+ZGNfb2ZmX2Rpc2FibGVkID0gZmFsc2U7CisJCXBv d2VyX3dlbGxfdW5sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKTsKKwl9CisKKwlhdG9taWNfaW5jKCZw b3dlcl9kb21haW5zLT5kb21haW5fdXNlX2NvdW50W2RvbWFpbl0pOworfQorCit2b2lkIGludGVs X2Rpc3BsYXlfcG93ZXJfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZf cHJpdi0+cG93ZXJfZG9tYWluczsKKwlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxs OworCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluID0gUE9XRVJfRE9NQUlO X1ZCTEFOSzsKKworCWlmICghSEFTX0NTUihkZXZfcHJpdikpCisJCXJldHVybjsKKworCWlmICgh Q0FOX1BTUihkZXZfcHJpdikpCisJCXJldHVybjsKKworCVdBUk4oYXRvbWljX2RlY19yZXR1cm4o JnBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWluXSkgPCAwLAorCSAgICAgIlVz ZSBjb3VudCBvbiBkb21haW4gJXMgd2FzIGFscmVhZHkgemVyb1xuIiwKKwkgICAgIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluX3N0cihkb21haW4pKTsKKworCWZvcl9lYWNoX3Bvd2VyX2RvbWFp bl93ZWxsX3JldihkZXZfcHJpdiwgcG93ZXJfd2VsbCwgQklUX1VMTChkb21haW4pKQorCQlpbnRl bF9wb3dlcl93ZWxsX3B1dChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7CisKKwlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7Cit9CisKIHN0YXRpYyB2b2lkCiBfX2ludGVsX2Rpc3BsYXlfcG93 ZXJfZ2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJIGVu dW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKQpAQCAtMTQ4Miw2ICsxNTcwLDM4 IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CiB9CiAKK3N0 YXRpYyBib29sIGRjX29mZl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikK K3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsOworCWJvb2wgaXNfZW5hYmxl ZDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKKworCXBvd2VyX3dlbGwgPSBsb29rdXBfcG93 ZXJfd2VsbChkZXZfcHJpdiwgU0tMX0RJU1BfUFdfRENfT0ZGKTsKKwlpZiAoIXBvd2VyX3dlbGwg fHwgIShwb3dlcl93ZWxsLT5kb21haW5zICYgZG9tYWluKSkKKwkJcmV0dXJuIHRydWU7CisKKwlw b3dlcl93ZWxsX2xvY2socG93ZXJfd2VsbCwgZmxhZ3MpOworCWlzX2VuYWJsZWQgPSBwb3dlcl93 ZWxsLT5od19lbmFibGVkOworCWlmIChpc19lbmFibGVkKQorCQlfX2ludGVsX3Bvd2VyX3dlbGxf Z2V0KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKKwlwb3dlcl93ZWxsX3VubG9jayhwb3dlcl93ZWxs LCBmbGFncyk7CisKKwlyZXR1cm4gaXNfZW5hYmxlZDsKK30KKworc3RhdGljIHZvaWQgZGNfb2Zm X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgICBlbnVtIGlu dGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKK3sKKwlzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsICpwb3dlcl93ZWxsOworCisJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9w cml2LCBTS0xfRElTUF9QV19EQ19PRkYpOworCWlmICghcG93ZXJfd2VsbCB8fCAhKHBvd2VyX3dl bGwtPmRvbWFpbnMgJiBkb21haW4pKQorCQlyZXR1cm47CisKKwlpbnRlbF9wb3dlcl93ZWxsX3B1 dChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cit9CisKIC8qKgogICogaW50ZWxfZGlzcGxheV9wb3dl cl9nZXRfaWZfZW5hYmxlZCAtIGdyYWIgYSByZWZlcmVuY2UgZm9yIGFuIGVuYWJsZWQgZGlzcGxh eSBwb3dlciBkb21haW4KICAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKQEAgLTE0 OTgsMjAgKzE2MTgsMjQgQEAgYm9vbCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCiB7CiAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAq cG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKLQlib29sIGlzX2VuYWJs ZWQ7CisJYm9vbCBpc19lbmFibGVkID0gZmFsc2U7CiAKIAlpZiAoIWludGVsX3J1bnRpbWVfcG1f Z2V0X2lmX2luX3VzZShkZXZfcHJpdikpCiAJCXJldHVybiBmYWxzZTsKIAogCW11dGV4X2xvY2so JnBvd2VyX2RvbWFpbnMtPmxvY2spOwogCisJaWYgKCFkY19vZmZfZ2V0X2lmX2VuYWJsZWQoZGV2 X3ByaXYsIGRvbWFpbikpCisJCWdvdG8gb3V0OworCiAJaWYgKF9faW50ZWxfZGlzcGxheV9wb3dl cl9pc19lbmFibGVkKGRldl9wcml2LCBkb21haW4pKSB7CiAJCV9faW50ZWxfZGlzcGxheV9wb3dl cl9nZXRfZG9tYWluKGRldl9wcml2LCBkb21haW4pOwogCQlpc19lbmFibGVkID0gdHJ1ZTsKLQl9 IGVsc2UgewotCQlpc19lbmFibGVkID0gZmFsc2U7CiAJfQogCisJZGNfb2ZmX3B1dChkZXZfcHJp diwgZG9tYWluKTsKKworb3V0OgogCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7 CiAKIAlpZiAoIWlzX2VuYWJsZWQpCkBAIC0xNzA5LDYgKzE4MzMsNyBAQCB2b2lkIGludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlCSVRf VUxMKFBPV0VSX0RPTUFJTl9HVF9JUlEpIHwJCQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5fTU9E RVNFVCkgfAkJCVwKIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKKwlCSVRfVUxM KFBPV0VSX0RPTUFJTl9WQkxBTkspIHwJCQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5fSU5JVCkp CiAKICNkZWZpbmUgQlhUX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyAoCQlcCkBA IC0xNzMyLDYgKzE4NTcsNyBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9HVF9JUlEp IHwJCQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJCVwKIAlCSVRfVUxMKFBP V0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKKwlCSVRfVUxMKFBPV0VSX0RPTUFJTl9WQkxBTkspIHwJ CQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5fSU5JVCkpCiAjZGVmaW5lIEJYVF9EUElPX0NNTl9B X1BPV0VSX0RPTUFJTlMgKAkJCVwKIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9QT1JUX0RESV9BX0xB TkVTKSB8CQlcCkBAIC0xNzkxLDYgKzE5MTcsNyBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlCSVRfVUxMKFBPV0VSX0RP TUFJTl9HVF9JUlEpIHwJCQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJCVwK IAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKKwlCSVRfVUxMKFBPV0VSX0RPTUFJ Tl9WQkxBTkspIHwJCQlcCiAJQklUX1VMTChQT1dFUl9ET01BSU5fSU5JVCkpCiAKICNkZWZpbmUg Q05MX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyAoCQlcCkBAIC0xODM4LDYgKzE5 NjUsNyBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAlDTkxfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9ET01BSU5TIHwJ CVwKIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9NT0RFU0VUKSB8CQkJXAogCUJJVF9VTEwoUE9XRVJf RE9NQUlOX0FVWF9BKSB8CQkJXAorCUJJVF9VTEwoUE9XRVJfRE9NQUlOX1ZCTEFOSykgfAkJCVwK IAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9JTklUKSkKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X3Bvd2VyX3dlbGxfb3BzIGk5eHhfYWx3YXlzX29uX3Bvd2VyX3dlbGxfb3BzID0gewpAQCAtMjA3 MSw5ICsyMTk5LDEyIEBAIGJvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsX2lzX2VuYWJsZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogewogCXN0cnVjdCBpOTE1X3Bvd2Vy X3dlbGwgKnBvd2VyX3dlbGw7CiAJYm9vbCByZXQ7CisJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7 CiAKIAlwb3dlcl93ZWxsID0gbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGxf aWQpOworCXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7CiAJcmV0ID0gcG93ZXJf d2VsbC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKKwlwb3dlcl93ZWxs X3VubG9jayhwb3dlcl93ZWxsLCBmbGFncyk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMjEwOCw2 ICsyMjM5LDggQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxz W10gPSB7CiAJCS5kb21haW5zID0gU0tMX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RPTUFJTlMsCiAJ CS5vcHMgPSAmZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9vcHMsCiAJCS5pZCA9IFNLTF9ESVNQX1BX X0RDX09GRiwKKwkJLnN1cHBvcnRzX2F0b21pY19jdHggPSB0cnVlLAorCQkuZGNfb2ZmX2Rpc2Fi bGVkID0gZmFsc2UsCiAJfSwKIAl7CiAJCS5uYW1lID0gInBvd2VyIHdlbGwgMiIsCkBAIC0yMTY4 LDYgKzIzMDEsOCBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBieHRfcG93ZXJfd2Vs bHNbXSA9IHsKIAkJLmRvbWFpbnMgPSBCWFRfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUywK IAkJLm9wcyA9ICZnZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcywKIAkJLmlkID0gU0tMX0RJU1Bf UFdfRENfT0ZGLAorCQkuc3VwcG9ydHNfYXRvbWljX2N0eCA9IHRydWUsCisJCS5kY19vZmZfZGlz YWJsZWQgPSBmYWxzZSwKIAl9LAogCXsKIAkJLm5hbWUgPSAicG93ZXIgd2VsbCAyIiwKQEAgLTIy MjMsNiArMjM1OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGdsa19wb3dlcl93 ZWxsc1tdID0gewogCQkuZG9tYWlucyA9IEdMS19ESVNQTEFZX0RDX09GRl9QT1dFUl9ET01BSU5T LAogCQkub3BzID0gJmdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfb3BzLAogCQkuaWQgPSBTS0xfRElT UF9QV19EQ19PRkYsCisJCS5zdXBwb3J0c19hdG9taWNfY3R4ID0gdHJ1ZSwKKwkJLmRjX29mZl9k aXNhYmxlZCA9IGZhbHNlLAogCX0sCiAJewogCQkubmFtZSA9ICJwb3dlciB3ZWxsIDIiLApAQCAt MjM0Nyw2ICsyNDg0LDggQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgY25sX3Bvd2Vy X3dlbGxzW10gPSB7CiAJCS5kb21haW5zID0gQ05MX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RPTUFJ TlMsCiAJCS5vcHMgPSAmZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9vcHMsCiAJCS5pZCA9IFNLTF9E SVNQX1BXX0RDX09GRiwKKwkJLnN1cHBvcnRzX2F0b21pY19jdHggPSB0cnVlLAorCQkuZGNfb2Zm X2Rpc2FibGVkID0gZmFsc2UsCiAJfSwKIAl7CiAJCS5uYW1lID0gInBvd2VyIHdlbGwgMiIsCkBA IC0yNDc1LDYgKzI2MTQsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5p cXVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIGludCBpbnRlbF9wb3dlcl9k b21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVj dCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2Rv bWFpbnM7CisJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKIAogCWk5MTVfbW9k cGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCA9CiAJCXNhbml0aXplX2Rpc2FibGVfcG93ZXJfd2Vs bF9vcHRpb24oZGV2X3ByaXYsCkBAIC0yNTEyLDYgKzI2NTIsMTAgQEAgaW50IGludGVsX3Bvd2Vy X2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXNldF9w b3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsKTsKIAl9 CiAKKwlmb3JfZWFjaF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsKQorCQlpZiAocG93 ZXJfd2VsbC0+c3VwcG9ydHNfYXRvbWljX2N0eCkKKwkJCXNwaW5fbG9ja19pbml0KCZwb3dlcl93 ZWxsLT5sb2NrKTsKKwogCWFzc2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoZGV2X3ByaXYpOwog CiAJcmV0dXJuIDA7CkBAIC0yNTU5LDkgKzI3MDMsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG93 ZXJfZG9tYWluc19zeW5jX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAog CW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwogCWZvcl9lYWNoX3Bvd2VyX3dlbGwo ZGV2X3ByaXYsIHBvd2VyX3dlbGwpIHsKKwkJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CisKKwkJ cG93ZXJfd2VsbF9sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKTsKIAkJcG93ZXJfd2VsbC0+b3BzLT5z eW5jX2h3KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKIAkJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9 IHBvd2VyX3dlbGwtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwKIAkJCQkJCQkJICAgICBwb3dl cl93ZWxsKTsKKwkJcG93ZXJfd2VsbF91bmxvY2socG93ZXJfd2VsbCwgZmxhZ3MpOwogCX0KIAlt dXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwogfQpAQCAtMzAzNCwxNiArMzE4Miwx OCBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCWJ4dF9kaXNwbGF5X2NvcmVfdW5pbml0KGRldl9wcml2KTsKIH0K IAotc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19kdW1wX2luZm8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19k dW1wX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgIGNvbnN0 IGludCAqcG93ZXJfd2VsbF91c2UpCiB7CiAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93 ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKIAlzdHJ1Y3QgaTkxNV9wb3dl cl93ZWxsICpwb3dlcl93ZWxsOworCWludCBpID0gMDsKIAogCWZvcl9lYWNoX3Bvd2VyX3dlbGwo ZGV2X3ByaXYsIHBvd2VyX3dlbGwpIHsKIAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp biBkb21haW47CiAKIAkJRFJNX0RFQlVHX0RSSVZFUigiJS0yNXMgJWRcbiIsCi0JCQkJIHBvd2Vy X3dlbGwtPm5hbWUsIHBvd2VyX3dlbGwtPmNvdW50KTsKKwkJCQkgcG93ZXJfd2VsbC0+bmFtZSwg cG93ZXJfd2VsbF91c2VbaSsrXSk7CiAKIAkJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFpbiwg cG93ZXJfd2VsbC0+ZG9tYWlucykKIAkJCURSTV9ERUJVR19EUklWRVIoIiAgJS0yM3MgJWRcbiIs CkBAIC0zMDY3LDYgKzMyMTcsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3QgaTkxNV9wb3dl cl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOwogCXN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7CiAJYm9vbCBkdW1wX2RvbWFpbl9pbmZv OworCWludCBwb3dlcl93ZWxsX3VzZVtkZXZfcHJpdi0+cG93ZXJfZG9tYWlucy5wb3dlcl93ZWxs X2NvdW50XTsKIAogCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwogCkBAIC0zMDc1 LDYgKzMyMjYsMTQgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWVudW0gaW50ZWxfZGlzcGxheV9wb3dl cl9kb21haW4gZG9tYWluOwogCQlpbnQgZG9tYWluc19jb3VudDsKIAkJYm9vbCBlbmFibGVkOwor CQlpbnQgd2VsbF9jb3VudCwgaSA9IDA7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOworCisJ CXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7CisJCXdlbGxfY291bnQgPSBwb3dl cl93ZWxsLT5jb3VudDsKKwkJZW5hYmxlZCA9IHBvd2VyX3dlbGwtPm9wcy0+aXNfZW5hYmxlZChk ZXZfcHJpdiwgcG93ZXJfd2VsbCk7CisJCXBvd2VyX3dlbGxfdW5sb2NrKHBvd2VyX3dlbGwsIGZs YWdzKTsKKwkJcG93ZXJfd2VsbF91c2VbaSsrXSA9IHdlbGxfY291bnQ7CiAKIAkJLyoKIAkJICog UG93ZXIgd2VsbHMgbm90IGJlbG9uZ2luZyB0byBhbnkgZG9tYWluIChsaWtlIHRoZSBNSVNDX0lP CkBAIC0zMDg0LDIwICszMjQzLDE5IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlpZiAoIXBvd2VyX3dl bGwtPmRvbWFpbnMpCiAJCQljb250aW51ZTsKIAotCQllbmFibGVkID0gcG93ZXJfd2VsbC0+b3Bz LT5pc19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKLQkJaWYgKChwb3dlcl93ZWxsLT5j b3VudCB8fCBwb3dlcl93ZWxsLT5hbHdheXNfb24pICE9IGVuYWJsZWQpCisKKwkJaWYgKCh3ZWxs X2NvdW50IHx8IHBvd2VyX3dlbGwtPmFsd2F5c19vbikgIT0gZW5hYmxlZCkKIAkJCURSTV9FUlJP UigicG93ZXIgd2VsbCAlcyBzdGF0ZSBtaXNtYXRjaCAocmVmY291bnQgJWQvZW5hYmxlZCAlZCki LAotCQkJCSAgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0+Y291bnQsIGVuYWJsZWQpOwor CQkJCSAgcG93ZXJfd2VsbC0+bmFtZSwgd2VsbF9jb3VudCwgZW5hYmxlZCk7CiAKIAkJZG9tYWlu c19jb3VudCA9IDA7CiAJCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIHBvd2VyX3dlbGwt PmRvbWFpbnMpCiAJCQlkb21haW5zX2NvdW50ICs9IGF0b21pY19yZWFkKCZwb3dlcl9kb21haW5z LT5kb21haW5fdXNlX2NvdW50W2RvbWFpbl0pOwogCi0JCWlmIChwb3dlcl93ZWxsLT5jb3VudCAh PSBkb21haW5zX2NvdW50KSB7CisJCWlmICh3ZWxsX2NvdW50ICE9IGRvbWFpbnNfY291bnQpIHsK IAkJCURSTV9FUlJPUigicG93ZXIgd2VsbCAlcyByZWZjb3VudC9kb21haW4gcmVmY291bnQgbWlz bWF0Y2ggIgogCQkJCSAgIihyZWZjb3VudCAlZC9kb21haW5zIHJlZmNvdW50ICVkKVxuIiwKLQkJ CQkgIHBvd2VyX3dlbGwtPm5hbWUsIHBvd2VyX3dlbGwtPmNvdW50LAotCQkJCSAgZG9tYWluc19j b3VudCk7CisJCQkJICBwb3dlcl93ZWxsLT5uYW1lLCB3ZWxsX2NvdW50LCBkb21haW5zX2NvdW50 KTsKIAkJCWR1bXBfZG9tYWluX2luZm8gPSB0cnVlOwogCQl9CiAJfQpAQCAtMzEwNiw3ICszMjY0 LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXN0YXRpYyBib29sIGR1bXBlZDsKIAogCQlpZiAoIWR1 bXBlZCkgewotCQkJaW50ZWxfcG93ZXJfZG9tYWluc19kdW1wX2luZm8oZGV2X3ByaXYpOworCQkJ aW50ZWxfcG93ZXJfZG9tYWluc19kdW1wX2luZm8oZGV2X3ByaXYsIHBvd2VyX3dlbGxfdXNlKTsK IAkJCWR1bXBlZCA9IHRydWU7CiAJCX0KIAl9Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=