From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH] drm/i915: Remove begin/finish_crtc_commit, v3. Date: Thu, 26 Sep 2019 11:47:25 +0200 Message-ID: <20190926094725.5231-1-maarten.lankhorst@linux.intel.com> References: <20190925214212.GT1869@mdroper-desk1.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 443206ECB2 for ; Thu, 26 Sep 2019 09:47:33 +0000 (UTC) In-Reply-To: <20190925214212.GT1869@mdroper-desk1.amr.corp.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 VGhpcyBjYW4gYWxsIGJlIGRvbmUgZnJvbSB0aGUgaW50ZWxfdXBkYXRlX2NydGMgZnVuY3Rpb24u IFNwbGl0IG91dCB0aGUKcGlwZSB1cGRhdGUgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uLCBqdXN0 IGxpa2UgaXMgZG9uZSBmb3IgdGhlIHBsYW5lcy4KUHVsbCBpbiBhbGwgdGhlIGNoYW5nZXMgZG9u ZSBkdXJpbmcgZmFzdHNldCBhcyB3ZWxsLiBJdCBtYWtlcyBubyBzZW5zZQpmb3IgaXQgdG8gc3Rp bGwgZXhpc3QgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbi4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gSW5s aW5lIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZygpCkNoYW5nZXMgc2luY2UgdjI6Ci0gQWRkIGNv bW1lbnRzIHN1Z2dlc3RlZCBieSBtYXR0LgotIFJlb3JkZXIgY29tbWl0X3BpcGVfY29uZmlnKCkg dG8gcmVtb3ZlIGFsbCBuZXN0aW5nLiAoVmlsbGUsIE1hdHQpCi0gVXNlIGludGVsX3NldF9waXBl X3NyY19zaXplKCgpLiAoTWF0dCkKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCAyMDYgKysrKysrKysrLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCmluZGV4IGI3NzU3NGNkYTY0 OC4uMjM5ZTBjYTNlM2VjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwpAQCAtMTM2LDggKzEzNiw2IEBAIHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJlX3Bs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpOwogc3RhdGljIHZvaWQgY2h2X3ByZXBhcmVfcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZyk7Ci1zdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICosIHN0cnVjdCBpbnRlbF9jcnRjICopOwotc3RhdGljIHZv aWQgaW50ZWxfZmluaXNoX2NydGNfY29tbWl0KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKiwg c3RydWN0IGludGVsX2NydGMgKik7CiBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXRfc2NhbGVy cyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpOwogc3RhdGljIHZvaWQgc2t5bGFrZV9wZml0X2VuYWJsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CkBAIC00NDA5LDQ1ICs0NDA3LDYg QEAgc3RhdGljIHZvaWQgaWNsX3NldF9waXBlX2NoaWNrZW4oc3RydWN0IGludGVsX2NydGMgKmNy dGMpCiAJSTkxNV9XUklURShQSVBFX0NISUNLRU4ocGlwZSksIHRtcCk7CiB9CiAKLXN0YXRpYyB2 b2lkIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUsCi0JCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUpCi17Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwotCi0JLyogZHJtX2F0b21p Y19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlIG1pZ2h0IG5vdCBiZSBjYWxsZWQu ICovCi0JY3J0Yy0+YmFzZS5tb2RlID0gbmV3X2NydGNfc3RhdGUtPnVhcGkubW9kZTsKLQotCS8q Ci0JICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSBy ZWFzb24gZm9yIHRoaXMgaXMKLQkgKiB0aGF0IGluIGNvbXB1dGVfbW9kZV9jaGFuZ2VzIHdlIGNo ZWNrIHRoZSBuYXRpdmUgbW9kZSAobm90IHRoZSBwZml0Ci0JICogbW9kZSkgdG8gc2VlIGlmIHdl IGNhbiBmbGlwIHJhdGhlciB0aGFuIGRvIGEgZnVsbCBtb2RlIHNldC4gSW4gdGhlCi0JICogZmFz dGJvb3QgY2FzZSwgd2UnbGwgZmxpcCwgYnV0IGlmIHdlIGRvbid0IHVwZGF0ZSB0aGUgcGlwZXNy YyBhbmQKLQkgKiBwZml0IHN0YXRlLCB3ZSdsbCBlbmQgdXAgd2l0aCBhIGJpZyBmYiBzY2FubmVk IG91dCBpbnRvIHRoZSB3cm9uZwotCSAqIHNpemVkIHN1cmZhY2UuCi0JICovCi0KLQlJOTE1X1dS SVRFKFBJUEVTUkMoY3J0Yy0+cGlwZSksCi0JCSAgICgobmV3X2NydGNfc3RhdGUtPnBpcGVfc3Jj X3cgLSAxKSA8PCAxNikgfAotCQkgICAobmV3X2NydGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSk7 Ci0KLQkvKiBvbiBza3lsYWtlIHRoaXMgaXMgZG9uZSBieSBkZXRhY2hpbmcgc2NhbGVycyAqLwot CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKLQkJc2tsX2RldGFjaF9zY2FsZXJzKG5l d19jcnRjX3N0YXRlKTsKLQotCQlpZiAobmV3X2NydGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQp Ci0JCQlza3lsYWtlX3BmaXRfZW5hYmxlKG5ld19jcnRjX3N0YXRlKTsKLQl9IGVsc2UgaWYgKEhB U19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7Ci0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+cGNoX3BmaXQu ZW5hYmxlZCkKLQkJCWlyb25sYWtlX3BmaXRfZW5hYmxlKG5ld19jcnRjX3N0YXRlKTsKLQkJZWxz ZSBpZiAob2xkX2NydGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpCi0JCQlpcm9ubGFrZV9wZml0 X2Rpc2FibGUob2xkX2NydGNfc3RhdGUpOwotCX0KLQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDExKQotCQlpY2xfc2V0X3BpcGVfY2hpY2tlbihjcnRjKTsKLX0KLQogc3RhdGljIHZvaWQg aW50ZWxfZmRpX25vcm1hbF90cmFpbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIHsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CkBAIC0xMzczOSwxMyArMTM2OTgs OTEgQEAgdTMyIGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQogCXJldHVybiBjcnRjLT5iYXNlLmZ1bmNzLT5nZXRfdmJsYW5rX2NvdW50ZXIoJmNy dGMtPmJhc2UpOwogfQogCit2b2lkIGludGVsX2NydGNfYXJtX2ZpZm9fdW5kZXJydW4oc3RydWN0 IGludGVsX2NydGMgKmNydGMsCisJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKKworCWlmICghSVNfR0VOKGRldl9wcml2LCAyKSkKKwkJaW50ZWxfc2V0 X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgdHJ1ZSk7 CisKKwlpZiAoY3J0Y19zdGF0ZS0+aGFzX3BjaF9lbmNvZGVyKSB7CisJCWVudW0gcGlwZSBwY2hf dHJhbnNjb2RlciA9CisJCQlpbnRlbF9jcnRjX3BjaF90cmFuc2NvZGVyKGNydGMpOworCisJCWlu dGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBjaF90cmFuc2Nv ZGVyLCB0cnVlKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNvbW1pdF9waXBlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCisJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm5ld19jcnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7CisJYm9vbCBtb2Rlc2V0 ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSk7CisKKwlpZiAoZGV2X3ByaXYtPmRpc3Bs YXkuYXRvbWljX3VwZGF0ZV93YXRlcm1hcmtzKQorCQlkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNf dXBkYXRlX3dhdGVybWFya3Moc3RhdGUsCisJCQkJCQkJICAgbmV3X2NydGNfc3RhdGUpOworCisJ LyoKKwkgKiBEdXJpbmcgbW9kZXNldHMgcGlwZSBjb25maWd1cmF0aW9uIHdhcyBwcm9ncmFtbWVk IGFzIHRoZQorCSAqIENSVEMgd2FzIGVuYWJsZWQuCisJICovCisJaWYgKG1vZGVzZXQpCisJCXJl dHVybjsKKworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJCXNrbF9kZXRhY2hfc2Nh bGVycyhuZXdfY3J0Y19zdGF0ZSk7CisKKwlpZiAobmV3X2NydGNfc3RhdGUtPnVhcGkuY29sb3Jf bWdtdF9jaGFuZ2VkIHx8CisJICAgIG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSkKKwkJaW50 ZWxfY29sb3JfY29tbWl0KG5ld19jcnRjX3N0YXRlKTsKKworCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKKwkJYmR3X3NldF9waXBlbWlzYyhu ZXdfY3J0Y19zdGF0ZSk7CisKKwlpZiAoIW5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSkKKwkJ cmV0dXJuOworCisJLyogZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0 YXRlIG1pZ2h0IG5vdCBiZSBjYWxsZWQuICovCisJY3J0Yy0+YmFzZS5tb2RlID0gbmV3X2NydGNf c3RhdGUtPnVhcGkubW9kZTsKKworCS8qCisJICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0 IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKKwkgKiB0aGF0IGluIGNv bXB1dGVfbW9kZV9jaGFuZ2VzIHdlIGNoZWNrIHRoZSBuYXRpdmUgbW9kZSAobm90IHRoZSBwZml0 CisJICogbW9kZSkgdG8gc2VlIGlmIHdlIGNhbiBmbGlwIHJhdGhlciB0aGFuIGRvIGEgZnVsbCBt b2RlIHNldC4gSW4gdGhlCisJICogZmFzdGJvb3QgY2FzZSwgd2UnbGwgZmxpcCwgYnV0IGlmIHdl IGRvbid0IHVwZGF0ZSB0aGUgcGlwZXNyYyBhbmQKKwkgKiBwZml0IHN0YXRlLCB3ZSdsbCBlbmQg dXAgd2l0aCBhIGJpZyBmYiBzY2FubmVkIG91dCBpbnRvIHRoZSB3cm9uZworCSAqIHNpemVkIHN1 cmZhY2UuCisJICovCisJaW50ZWxfc2V0X3BpcGVfc3JjX3NpemUobmV3X2NydGNfc3RhdGUpOwor CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCQkvKgorCQkgKiBlbmFibGUgcGlw ZSBzY2FsZXIgaGVyZSBpZiBuZWVkZWQsIGlmCisJCSAqIGl0J3MgZGlzYWJsZWQsIHRoYXQncyBk b25lIGJ5CisJCSAqIHNrbF9kZXRhY2hfc2NhbGVycygpIGFib3ZlLgorCQkgKi8KKwkJc2t5bGFr ZV9wZml0X2VuYWJsZShuZXdfY3J0Y19zdGF0ZSk7CisJfSBlbHNlIGlmIChIQVNfUENIX1NQTElU KGRldl9wcml2KSkgeworCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5wY2hfcGZpdC5lbmFibGVkKQor CQkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKG9sZF9jcnRjX3N0YXRlKTsKKwkJZWxzZQorCQkJaXJv bmxha2VfcGZpdF9lbmFibGUobmV3X2NydGNfc3RhdGUpOworCX0KKworCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExKQorCQlpY2xfc2V0X3BpcGVfY2hpY2tlbihjcnRjKTsKK30KKwogc3Rh dGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkg ICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCSAgICAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g c3RhdGUtPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHN0YXRlLT5iYXNlLmRldik7CiAJYm9vbCBtb2Rlc2V0ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0 Y19zdGF0ZSk7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPQog CQlpbnRlbF9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwKQEAgLTEzNzY5LDE0ICsx MzgwNiwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAllbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUpCiAJCWludGVsX2ZiY19lbmFibGUo Y3J0YywgbmV3X2NydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7CiAKLQlpbnRlbF9iZWdpbl9j cnRjX2NvbW1pdChzdGF0ZSwgY3J0Yyk7CisJLyogUGVyZm9ybSB2YmxhbmsgZXZhc2lvbiBhcm91 bmQgY29tbWl0IG9wZXJhdGlvbiAqLworCWludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KG5ld19jcnRj X3N0YXRlKTsKKworCWNvbW1pdF9waXBlX2NvbmZpZyhzdGF0ZSwgb2xkX2NydGNfc3RhdGUsIG5l d19jcnRjX3N0YXRlKTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCXNrbF91 cGRhdGVfcGxhbmVzX29uX2NydGMoc3RhdGUsIGNydGMpOwogCWVsc2UKIAkJaTl4eF91cGRhdGVf cGxhbmVzX29uX2NydGMoc3RhdGUsIGNydGMpOwogCi0JaW50ZWxfZmluaXNoX2NydGNfY29tbWl0 KHN0YXRlLCBjcnRjKTsKKwlpbnRlbF9waXBlX3VwZGF0ZV9lbmQobmV3X2NydGNfc3RhdGUpOwor CisgICAgICAgIC8qCisgICAgICAgICAqIFdlIHVzdWFsbHkgZW5hYmxlIEZJRk8gdW5kZXJydW4g aW50ZXJydXB0cyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgKiBDUlRDIGVuYWJsZSBzZXF1ZW5j ZSBkdXJpbmcgbW9kZXNldHMuICBCdXQgd2hlbiB3ZSBpbmhlcml0IGEKKyAgICAgICAgICogdmFs aWQgcGlwZSBjb25maWd1cmF0aW9uIGZyb20gdGhlIEJJT1Mgd2UgbmVlZCB0byB0YWtlIGNhcmUK KyAgICAgICAgICogb2YgZW5hYmxpbmcgdGhlbSBvbiB0aGUgQ1JUQydzIGZpcnN0IGZhc3RzZXQu CisgICAgICAgICAqLworCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgJiYgIW1vZGVz ZXQgJiYKKwkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVf TU9ERV9GTEFHX0lOSEVSSVRFRCkKKwkJaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1bihjcnRj LCBuZXdfY3J0Y19zdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX29sZF9jcnRjX3N0YXRl X2Rpc2FibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLApAQCAtMTQ1NzMsNzIg KzE0NjIzLDYgQEAgc2tsX21heF9zY2FsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKIAlyZXR1cm4gbWF4X3NjYWxlOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9i ZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkg ICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0Jc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlID0KLQkJaW50ZWxfYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0 ZShzdGF0ZSwgY3J0Yyk7Ci0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRl ID0KLQkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Ci0JYm9v bCBtb2Rlc2V0ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSk7Ci0KLQkvKiBQZXJmb3Jt IHZibGFuayBldmFzaW9uIGFyb3VuZCBjb21taXQgb3BlcmF0aW9uICovCi0JaW50ZWxfcGlwZV91 cGRhdGVfc3RhcnQobmV3X2NydGNfc3RhdGUpOwotCi0JaWYgKG1vZGVzZXQpCi0JCWdvdG8gb3V0 OwotCi0JaWYgKG5ld19jcnRjX3N0YXRlLT51YXBpLmNvbG9yX21nbXRfY2hhbmdlZCB8fAotCSAg ICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpCi0JCWludGVsX2NvbG9yX2NvbW1pdChuZXdf Y3J0Y19zdGF0ZSk7Ci0KLQlpZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQotCQlpbnRl bF91cGRhdGVfcGlwZV9jb25maWcob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKTsKLQll bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCi0JCXNrbF9kZXRhY2hfc2NhbGVycyhu ZXdfY3J0Y19zdGF0ZSk7Ci0KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpCi0JCWJkd19zZXRfcGlwZW1pc2MobmV3X2NydGNfc3RhdGUpOwot Ci1vdXQ6Ci0JaWYgKGRldl9wcml2LT5kaXNwbGF5LmF0b21pY191cGRhdGVfd2F0ZXJtYXJrcykK LQkJZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX3VwZGF0ZV93YXRlcm1hcmtzKHN0YXRlLAotCQkJ CQkJCSAgIG5ld19jcnRjX3N0YXRlKTsKLX0KLQotdm9pZCBpbnRlbF9jcnRjX2FybV9maWZvX3Vu ZGVycnVuKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAotCQkJCSAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0KLQlpZiAoIUlTX0dFTihkZXZfcHJpdiwgMikp Ci0JCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIGNydGMt PnBpcGUsIHRydWUpOwotCi0JaWYgKGNydGNfc3RhdGUtPmhhc19wY2hfZW5jb2RlcikgewotCQll bnVtIHBpcGUgcGNoX3RyYW5zY29kZXIgPQotCQkJaW50ZWxfY3J0Y19wY2hfdHJhbnNjb2Rlcihj cnRjKTsKLQotCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2 LCBwY2hfdHJhbnNjb2RlciwgdHJ1ZSk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBpbnRlbF9maW5p c2hfY3J0Y19jb21taXQoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAg ICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGUgPQotCQlpbnRlbF9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPQotCQlp bnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKLQotCWludGVsX3Bp cGVfdXBkYXRlX2VuZChuZXdfY3J0Y19zdGF0ZSk7Ci0KLQlpZiAobmV3X2NydGNfc3RhdGUtPnVw ZGF0ZV9waXBlICYmCi0JICAgICFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAmJgotCSAg ICBvbGRfY3J0Y19zdGF0ZS0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdf SU5IRVJJVEVEKQotCQlpbnRlbF9jcnRjX2FybV9maWZvX3VuZGVycnVuKGNydGMsIG5ld19jcnRj X3N0YXRlKTsKLX0KLQogLyoqCiAgKiBpbnRlbF9wbGFuZV9kZXN0cm95IC0gZGVzdHJveSBhIHBs YW5lCiAgKiBAcGxhbmU6IHBsYW5lIHRvIGRlc3Ryb3kKLS0gCjIuMjAuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4