From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 2/6] drm/i915: Convert most of atomic commit to take more intel state Date: Fri, 28 Jun 2019 10:55:13 +0200 Message-ID: <20190628085517.31886-3-maarten.lankhorst@linux.intel.com> References: <20190628085517.31886-1-maarten.lankhorst@linux.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 [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 76A6989C03 for ; Fri, 28 Jun 2019 08:55:21 +0000 (UTC) In-Reply-To: <20190628085517.31886-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW5zdGVhZCBvZiBwYXNzaW5nIGFsb25nIGRybV9jcnRjX3N0YXRlIGFuZCBkcm1fYXRvbWljX3N0 YXRlLCBwYXNzCmFsb25nIG1vcmUgaW50ZWxfYXRvbWljX3N0YXRlIGFuZCBpbnRlbF9jcnRjX3N0 YXRlLiBUaGlzIHdpbGwKbWFrZSB0aGUgY29kZSBtb3JlIHJlYWRhYmxlIGJ5IG5vdCBjYXN0aW5n IGJldHdlZW4gZHJtIHN0YXRlCmFuZCBpbnRlbCBzdGF0ZSBhbGwgdGhlIHRpbWUuCgpXaGlsZSBh dCBpdCwgcmVuYW1lIG9sZF9zdGF0ZSB0byBzdGF0ZSwgd2l0aCB0aGUgZ2V0X25ldy9vbGQgaGVs cGVycwp0aGVyZSBpcyBubyBwb2ludCBpbiBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuIHN0YXRlIGJl Zm9yZSBhbmQgYWZ0ZXIKc3dhcHBpbmcgc3RhdGUgYW55IG1vcmUuIChWaWxsZSkKClNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j IHwgNDI5ICsrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j ICAgICAgICAgICAgICB8ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaCAg ICAgICAgICAgICAgfCAgIDQgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyks IDI0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCmluZGV4IDkwNzAxZDg2ZmJlYi4uZjQxMWY1N2JjYWNiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtNTg3NywxMyArNTg3Nywx MyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSA9 IG9sZF9jcnRjX3N0YXRlLT5iYXNlLnN0YXRlOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSA9IG9sZF9jcnRjX3N0YXRlLT5iYXNlLnN0YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZyA9Ci0JCWludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUodG9f aW50ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSksCisJCWludGVsX2F0b21pY19nZXRfbmV3X2Ny dGNfc3RhdGUodG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKSwKIAkJCQkJCWNydGMpOwogCXN0 cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRjLT5iYXNlLnByaW1hcnk7CiAJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqb2xkX3ByaW1hcnlfc3RhdGUgPQotCQlkcm1fYXRvbWljX2dldF9vbGRf cGxhbmVfc3RhdGUob2xkX3N0YXRlLCBwcmltYXJ5KTsKKwkJZHJtX2F0b21pY19nZXRfb2xkX3Bs YW5lX3N0YXRlKHN0YXRlLCBwcmltYXJ5KTsKIAogCWludGVsX2Zyb250YnVmZmVyX2ZsaXAodG9f aTkxNShjcnRjLT5iYXNlLmRldiksIHBpcGVfY29uZmlnLT5mYl9iaXRzKTsKIApAQCAtNTg5NSw3 ICs1ODk1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCiAJaWYgKG9sZF9wcmltYXJ5X3N0YXRl KSB7CiAJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wcmltYXJ5X3N0YXRlID0KLQkJCWRy bV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShvbGRfc3RhdGUsIHByaW1hcnkpOworCQkJZHJt X2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBwcmltYXJ5KTsKIAogCQlpbnRlbF9m YmNfcG9zdF91cGRhdGUoY3J0Yyk7CiAKQEAgLTU5MjAsMjAgKzU5MjAsMjAgQEAgc3RhdGljIHZv aWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGUsCiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9j cnRjX3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5i YXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7Ci0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSA9IG9sZF9jcnRjX3N0YXRl LT5iYXNlLnN0YXRlOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG9sZF9jcnRj X3N0YXRlLT5iYXNlLnN0YXRlOwogCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRjLT5i YXNlLnByaW1hcnk7CiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3ByaW1hcnlfc3RhdGUg PQotCQlkcm1fYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUob2xkX3N0YXRlLCBwcmltYXJ5KTsK KwkJZHJtX2F0b21pY19nZXRfb2xkX3BsYW5lX3N0YXRlKHN0YXRlLCBwcmltYXJ5KTsKIAlib29s IG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KHBpcGVfY29uZmlnKTsKLQlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xk X3N0YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9CisJCXRv X2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CiAKIAlpZiAoaHN3X3ByZV91cGRhdGVfZGlzYWJs ZV9pcHMob2xkX2NydGNfc3RhdGUsIHBpcGVfY29uZmlnKSkKIAkJaHN3X2Rpc2FibGVfaXBzKG9s ZF9jcnRjX3N0YXRlKTsKIAogCWlmIChvbGRfcHJpbWFyeV9zdGF0ZSkgewogCQlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKm5ld19wcmltYXJ5X3N0YXRlID0KLQkJCWludGVsX2F0b21pY19nZXRf bmV3X3BsYW5lX3N0YXRlKG9sZF9pbnRlbF9zdGF0ZSwKKwkJCWludGVsX2F0b21pY19nZXRfbmV3 X3BsYW5lX3N0YXRlKGludGVsX3N0YXRlLAogCQkJCQkJCSB0b19pbnRlbF9wbGFuZShwcmltYXJ5 KSk7CiAKIAkJaW50ZWxfZmJjX3ByZV91cGRhdGUoY3J0YywgcGlwZV9jb25maWcsIG5ld19wcmlt YXJ5X3N0YXRlKTsKQEAgLTYwMDIsNyArNjAwMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9w bGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAogCSAq IHVzIHRvLgogCSAqLwogCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mg IT0gTlVMTCkKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKG9sZF9pbnRl bF9zdGF0ZSwKKwkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKGludGVsX3N0 YXRlLAogCQkJCQkJICAgICBwaXBlX2NvbmZpZyk7CiAJZWxzZSBpZiAocGlwZV9jb25maWctPnVw ZGF0ZV93bV9wcmUpCiAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwpAQCAtNjAzNiwx OSArNjAzNiwxOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2 X3ByaXYsIGZiX2JpdHMpOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wcmVfcGxs X2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCitzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVy c19wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkJICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqb2xkX3N0YXRlKQorCQkJCQkgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl KQogewogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwogCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uOwogCWludCBpOwogCi0JZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9p bl9zdGF0ZShvbGRfc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdf Y29ubmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewog CQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9CiAJCQl0b19pbnRlbF9lbmNvZGVyKGNv bm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7CiAKLQkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gY3J0 YykKKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2UpCiAJCQljb250aW51ZTsK IAogCQlpZiAoZW5jb2Rlci0+cHJlX3BsbF9lbmFibGUpCkBAIC02MDU2LDE5ICs2MDU2LDE5IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3ByZV9lbmFibGUo c3RydWN0IGRybV9jcnRjICpjcnRjLAorc3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfcHJlX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq b2xkX3N0YXRlKQorCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQog ewogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwogCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uOwogCWludCBpOwogCi0JZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKKwlmb3JfZWFjaF9uZXdfY29u bmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewogCQlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9CiAJCQl0b19pbnRlbF9lbmNvZGVyKGNvbm5f c3RhdGUtPmJlc3RfZW5jb2Rlcik7CiAKLQkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gY3J0YykK KwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2UpCiAJCQljb250aW51ZTsKIAog CQlpZiAoZW5jb2Rlci0+cHJlX2VuYWJsZSkKQEAgLTYwNzYsMTkgKzYwNzYsMTkgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ fQogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19lbmFibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAorc3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfZW5hYmxlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAogCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0J CQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQorCQkJCSAgc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47CiAJaW50IGk7CiAKLQlm b3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgY29ubl9zdGF0 ZSwgaSkgeworCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNlLCBj b25uLCBjb25uX3N0YXRlLCBpKSB7CiAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0K IAkJCXRvX2ludGVsX2VuY29kZXIoY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKIAotCQlpZiAo Y29ubl9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQorCQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyAhPSAmY3J0 Yy0+YmFzZSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChlbmNvZGVyLT5lbmFibGUpCkBAIC02MDk3 LDE5ICs2MDk3LDE5IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19kaXNh YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKK3N0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX2Rp c2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlLAotCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpv bGRfc3RhdGUpCisJCQkJICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJ c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOwogCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uOwogCWludCBpOwogCi0JZm9yX2VhY2hfb2xkX2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBpKSB7CisJZm9yX2VhY2hfb2xk X2Nvbm5lY3Rvcl9pbl9zdGF0ZSgmc3RhdGUtPmJhc2UsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBp KSB7CiAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KIAkJCXRvX2ludGVsX2VuY29k ZXIob2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7CiAKLQkJaWYgKG9sZF9jb25uX3N0YXRl LT5jcnRjICE9IGNydGMpCisJCWlmIChvbGRfY29ubl9zdGF0ZS0+Y3J0YyAhPSAmY3J0Yy0+YmFz ZSkKIAkJCWNvbnRpbnVlOwogCiAJCWludGVsX29wcmVnaW9uX25vdGlmeV9lbmNvZGVyKGVuY29k ZXIsIGZhbHNlKTsKQEAgLTYxMTgsMTkgKzYxMTgsMTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5j b2RlcnNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJfQogfQogCi1zdGF0aWMgdm9p ZCBpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAorc3Rh dGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCi0JCQkJ CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCisJCQkJCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRf Y29ubl9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKIAlpbnQgaTsKIAotCWZv cl9lYWNoX29sZF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uLCBvbGRfY29ubl9z dGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZF9jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNl LCBjb25uLCBvbGRfY29ubl9zdGF0ZSwgaSkgewogCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciA9CiAJCQl0b19pbnRlbF9lbmNvZGVyKG9sZF9jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIp OwogCi0JCWlmIChvbGRfY29ubl9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQorCQlpZiAob2xkX2Nvbm5f c3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2UpCiAJCQljb250aW51ZTsKIAogCQlpZiAoZW5jb2Rl ci0+cG9zdF9kaXNhYmxlKQpAQCAtNjEzOCwxOSArNjEzOCwxOSBAQCBzdGF0aWMgdm9pZCBpbnRl bF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCX0KIH0KIAot c3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCitzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlLAotCQkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSkKKwkJCQkJICAgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubjsKIAlpbnQgaTsKIAotCWZvcl9lYWNoX29sZF9jb25uZWN0b3JfaW5fc3Rh dGUob2xkX3N0YXRlLCBjb25uLCBvbGRfY29ubl9zdGF0ZSwgaSkgeworCWZvcl9lYWNoX29sZF9j b25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNlLCBjb25uLCBvbGRfY29ubl9zdGF0ZSwgaSkg ewogCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9CiAJCQl0b19pbnRlbF9lbmNvZGVy KG9sZF9jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwogCi0JCWlmIChvbGRfY29ubl9zdGF0ZS0+ Y3J0YyAhPSBjcnRjKQorCQlpZiAob2xkX2Nvbm5fc3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2Up CiAJCQljb250aW51ZTsKIAogCQlpZiAoZW5jb2Rlci0+cG9zdF9wbGxfZGlzYWJsZSkKQEAgLTYx NTgsMTkgKzYxNTgsMTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlz YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9l bmNvZGVyc191cGRhdGVfcGlwZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCitzdGF0aWMgdm9pZCBp bnRlbF9lbmNvZGVyc191cGRhdGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkg ICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkJICAgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCisJCQkJICAgICAgIHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpj b25uX3N0YXRlOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwogCWludCBpOwogCi0JZm9y X2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUs IGkpIHsKKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY29u biwgY29ubl9zdGF0ZSwgaSkgewogCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9CiAJ CQl0b19pbnRlbF9lbmNvZGVyKGNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7CiAKLQkJaWYgKGNv bm5fc3RhdGUtPmNydGMgIT0gY3J0YykKKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJmNydGMt PmJhc2UpCiAJCQljb250aW51ZTsKIAogCQlpZiAoZW5jb2Rlci0+dXBkYXRlX3BpcGUpCkBAIC02 MTg3LDE1ICs2MTg3LDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcHJpbWFyeV9wbGFu ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0CiB9CiAKIHN0YXRpYyB2 b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZywKLQkJCQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKKwkJCQkgc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gcGlwZV9jb25maWctPmJhc2UuY3J0YzsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKm9sZF9pbnRlbF9zdGF0ZSA9Ci0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRfc3RhdGUp OwogCiAJaWYgKFdBUk5fT04oaW50ZWxfY3J0Yy0+YWN0aXZlKSkKIAkJcmV0dXJuOwpAQCAtNjIz MSw3ICs2MjI5LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCiAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1 ZTsKIAotCWludGVsX2VuY29kZXJzX3ByZV9lbmFibGUoY3J0YywgcGlwZV9jb25maWcsIG9sZF9z dGF0ZSk7CisJaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZp Zywgc3RhdGUpOwogCiAJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKIAkJLyog Tm90ZTogRkRJIFBMTCBlbmFibGluZyBfbXVzdF8gYmUgZG9uZSBiZWZvcmUgd2UgZW5hYmxlIHRo ZQpAQCAtNjI1NSwxNiArNjI1MywxNiBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJaW50ZWxfZGlzYWJsZV9w cmltYXJ5X3BsYW5lKHBpcGVfY29uZmlnKTsKIAogCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5pbml0 aWFsX3dhdGVybWFya3MgIT0gTlVMTCkKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRl cm1hcmtzKG9sZF9pbnRlbF9zdGF0ZSwgcGlwZV9jb25maWcpOworCQlkZXZfcHJpdi0+ZGlzcGxh eS5pbml0aWFsX3dhdGVybWFya3Moc3RhdGUsIHBpcGVfY29uZmlnKTsKIAlpbnRlbF9lbmFibGVf cGlwZShwaXBlX2NvbmZpZyk7CiAKIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlcikK LQkJaXJvbmxha2VfcGNoX2VuYWJsZShvbGRfaW50ZWxfc3RhdGUsIHBpcGVfY29uZmlnKTsKKwkJ aXJvbmxha2VfcGNoX2VuYWJsZShzdGF0ZSwgcGlwZV9jb25maWcpOwogCiAJYXNzZXJ0X3ZibGFu a19kaXNhYmxlZChjcnRjKTsKIAlpbnRlbF9jcnRjX3ZibGFua19vbihwaXBlX2NvbmZpZyk7CiAK LQlpbnRlbF9lbmNvZGVyc19lbmFibGUoY3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7CisJ aW50ZWxfZW5jb2RlcnNfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBzdGF0ZSk7CiAK IAlpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpKQogCQljcHRfdmVyaWZ5X21vZGVzZXQoZGV2LCBp bnRlbF9jcnRjLT5waXBlKTsKQEAgLTYzMTcsMjYgKzYzMTUsMjQgQEAgc3RhdGljIHZvaWQgaWNs X3BpcGVfbWJ1c19lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB9CiAKIHN0YXRpYyB2 b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnLAotCQkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCisJCQkJc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0g cGlwZV9jb25maWctPmJhc2UuY3J0YzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmRldik7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZSwgaHN3 X3dvcmthcm91bmRfcGlwZTsKIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBl X2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7Ci0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xk X2ludGVsX3N0YXRlID0KLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSk7CiAJYm9v bCBwc2xfY2xrZ2F0ZV93YTsKIAogCWlmIChXQVJOX09OKGludGVsX2NydGMtPmFjdGl2ZSkpCiAJ CXJldHVybjsKIAotCWludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKGNydGMsIHBpcGVfY29u ZmlnLCBvbGRfc3RhdGUpOworCWludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKGludGVsX2Ny dGMsIHBpcGVfY29uZmlnLCBzdGF0ZSk7CiAKIAlpZiAocGlwZV9jb25maWctPnNoYXJlZF9kcGxs KQogCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwocGlwZV9jb25maWcpOwogCi0JaW50ZWxfZW5j b2RlcnNfcHJlX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRlKTsKKwlpbnRlbF9l bmNvZGVyc19wcmVfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBzdGF0ZSk7CiAKIAlp ZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihwaXBlX2NvbmZpZykpCiAJCWludGVsX2RwX3Nl dF9tX24ocGlwZV9jb25maWcsIE0xX04xKTsKQEAgLTYzOTQsNyArNjM5MCw3IEBAIHN0YXRpYyB2 b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnLAogCQlpbnRlbF9kZGlfZW5hYmxlX3RyYW5zY29kZXJfZnVuYyhwaXBlX2NvbmZpZyk7CiAK IAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzICE9IE5VTEwpCi0JCWRl dl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhvbGRfaW50ZWxfc3RhdGUsIHBpcGVf Y29uZmlnKTsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHN0YXRlLCBw aXBlX2NvbmZpZyk7CiAKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKIAkJaWNsX3Bp cGVfbWJ1c19lbmFibGUoaW50ZWxfY3J0Yyk7CkBAIC02NDA0LDcgKzY0MDAsNyBAQCBzdGF0aWMg dm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZywKIAkJaW50ZWxfZW5hYmxlX3BpcGUocGlwZV9jb25maWcpOwogCiAJaWYgKHBpcGVfY29u ZmlnLT5oYXNfcGNoX2VuY29kZXIpCi0JCWxwdF9wY2hfZW5hYmxlKG9sZF9pbnRlbF9zdGF0ZSwg cGlwZV9jb25maWcpOworCQlscHRfcGNoX2VuYWJsZShzdGF0ZSwgcGlwZV9jb25maWcpOwogCiAJ aWYgKGludGVsX2NydGNfaGFzX3R5cGUocGlwZV9jb25maWcsIElOVEVMX09VVFBVVF9EUF9NU1Qp KQogCQlpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2MocGlwZV9jb25maWcsIHRydWUpOwpA QCAtNjQxMiw3ICs2NDA4LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJYXNzZXJ0X3ZibGFua19kaXNhYmxl ZChjcnRjKTsKIAlpbnRlbF9jcnRjX3ZibGFua19vbihwaXBlX2NvbmZpZyk7CiAKLQlpbnRlbF9l bmNvZGVyc19lbmFibGUoY3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7CisJaW50ZWxfZW5j b2RlcnNfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBzdGF0ZSk7CiAKIAlpZiAocHNs X2Nsa2dhdGVfd2EpIHsKIAkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBwaXBlKTsK QEAgLTY0NDQsNyArNjQ0MCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRfZGlzYWJsZShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiB9CiAKIHN0YXRp YyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdGUsCi0JCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQor CQkJCSAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9j cnRjICpjcnRjID0gb2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0YzsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2OwpAQCAtNjQ2MCw3ICs2NDU2LDcgQEAgc3RhdGljIHZvaWQgaXJv bmxha2VfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZSwKIAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBl LCBmYWxzZSk7CiAJaW50ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJp diwgcGlwZSwgZmFsc2UpOwogCi0JaW50ZWxfZW5jb2RlcnNfZGlzYWJsZShjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwgb2xkX3N0YXRlKTsKKwlpbnRlbF9lbmNvZGVyc19kaXNhYmxlKGludGVsX2NydGMs IG9sZF9jcnRjX3N0YXRlLCBzdGF0ZSk7CiAKIAlkcm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMpOwog CWFzc2VydF92YmxhbmtfZGlzYWJsZWQoY3J0Yyk7CkBAIC02NDcyLDcgKzY0NjgsNyBAQCBzdGF0 aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlLAogCWlmIChvbGRfY3J0Y19zdGF0ZS0+aGFzX3BjaF9lbmNvZGVyKQogCQlp cm9ubGFrZV9mZGlfZGlzYWJsZShjcnRjKTsKIAotCWludGVsX2VuY29kZXJzX3Bvc3RfZGlzYWJs ZShjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgb2xkX3N0YXRlKTsKKwlpbnRlbF9lbmNvZGVyc19wb3N0 X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKIAogCWlmIChvbGRf Y3J0Y19zdGF0ZS0+aGFzX3BjaF9lbmNvZGVyKSB7CiAJCWlyb25sYWtlX2Rpc2FibGVfcGNoX3Ry YW5zY29kZXIoZGV2X3ByaXYsIHBpcGUpOwpAQCAtNjUwMywxNCArNjQ5OSwxNCBAQCBzdGF0aWMg dm9pZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9j cnRjX3N0YXRlLAogfQogCiBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCi0JCQkJIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpvbGRfc3RhdGUpCisJCQkJIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl KQogewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGM7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYp OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK IAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBvbGRfY3J0Y19zdGF0ZS0+Y3B1X3Ry YW5zY29kZXI7CiAKLQlpbnRlbF9lbmNvZGVyc19kaXNhYmxlKGNydGMsIG9sZF9jcnRjX3N0YXRl LCBvbGRfc3RhdGUpOworCWludGVsX2VuY29kZXJzX2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2Ny dGNfc3RhdGUsIHN0YXRlKTsKIAogCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7CiAJYXNzZXJ0 X3ZibGFua19kaXNhYmxlZChjcnRjKTsKQEAgLTY1MzIsOSArNjUyOCw5IEBAIHN0YXRpYyB2b2lk IGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZSwKIAllbHNlCiAJCWlyb25sYWtlX3BmaXRfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSk7CiAK LQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoY3J0Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9z dGF0ZSk7CisJaW50ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxlKGludGVsX2NydGMsIG9sZF9jcnRj X3N0YXRlLCBzdGF0ZSk7CiAKLQlpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKGNydGMs IG9sZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUpOworCWludGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rp c2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKIH0KIAogc3RhdGljIHZv aWQgaTl4eF9wZml0X2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKQEAgLTY2MzMsMTQgKzY2MjksMTMgQEAgaW50ZWxfYXV4X3Bvd2VyX2RvbWFpbihzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKIAl9CiB9CiAKLXN0YXRpYyB1NjQgZ2V0 X2NydGNfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCitzdGF0aWMgdTY0IGdl dF9jcnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRl djsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJ c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMt PnBpcGU7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCXU2NCBtYXNrOwogCWVudW0g dHJhbnNjb2RlciB0cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7CiAKQEAg LTY2NjksMTYgKzY2NjQsMTUgQEAgc3RhdGljIHU2NCBnZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIH0KIAogc3RhdGljIHU2NAotbW9kZXNldF9nZXRfY3J0Y19w b3dlcl9kb21haW5zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKK21vZGVzZXRfZ2V0X2NydGNfcG93 ZXJfZG9tYWlucyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWVudW0gaW50ZWxfZGlzcGxheV9w b3dlcl9kb21haW4gZG9tYWluOwogCXU2NCBkb21haW5zLCBuZXdfZG9tYWlucywgb2xkX2RvbWFp bnM7CiAKLQlvbGRfZG9tYWlucyA9IGludGVsX2NydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWluczsK LQlpbnRlbF9jcnRjLT5lbmFibGVkX3Bvd2VyX2RvbWFpbnMgPSBuZXdfZG9tYWlucyA9CisJb2xk X2RvbWFpbnMgPSBjcnRjLT5lbmFibGVkX3Bvd2VyX2RvbWFpbnM7CisJY3J0Yy0+ZW5hYmxlZF9w b3dlcl9kb21haW5zID0gbmV3X2RvbWFpbnMgPQogCQlnZXRfY3J0Y19wb3dlcl9kb21haW5zKGNy dGMsIGNydGNfc3RhdGUpOwogCiAJZG9tYWlucyA9IG5ld19kb21haW5zICYgfm9sZF9kb21haW5z OwpAQCAtNjY5OSwxMCArNjY5Myw4IEBAIHN0YXRpYyB2b2lkIG1vZGVzZXRfcHV0X3Bvd2VyX2Rv bWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogfQogCiBzdGF0aWMgdm9p ZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZywKLQkJCQkgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQorCQkJCSAg IHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKm9sZF9pbnRlbF9zdGF0ZSA9Ci0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRf c3RhdGUpOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBpcGVfY29uZmlnLT5iYXNlLmNydGM7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CkBAIC02NzI5LDcgKzY3MjEsNyBAQCBz dGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAogCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmco ZGV2X3ByaXYsIHBpcGUsIHRydWUpOwogCi0JaW50ZWxfZW5jb2RlcnNfcHJlX3BsbF9lbmFibGUo Y3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7CisJaW50ZWxfZW5jb2RlcnNfcHJlX3BsbF9l bmFibGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKIAogCWlmIChJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewogCQljaHZfcHJlcGFyZV9wbGwoaW50ZWxfY3J0YywgcGlwZV9jb25m aWcpOwpAQCAtNjczOSw3ICs2NzMxLDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCXZsdl9lbmFibGVf cGxsKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKIAl9CiAKLQlpbnRlbF9lbmNvZGVyc19wcmVf ZW5hYmxlKGNydGMsIHBpcGVfY29uZmlnLCBvbGRfc3RhdGUpOworCWludGVsX2VuY29kZXJzX3By ZV9lbmFibGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKIAogCWk5eHhfcGZpdF9l bmFibGUocGlwZV9jb25maWcpOwogCkBAIC02NzQ4LDE0ICs2NzQwLDEzIEBAIHN0YXRpYyB2b2lk IHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnLAogCS8qIHVwZGF0ZSBEU1BDTlRSIHRvIGNvbmZpZ3VyZSBnYW1tYSBmb3IgcGlwZSBib3R0 b20gY29sb3IgKi8KIAlpbnRlbF9kaXNhYmxlX3ByaW1hcnlfcGxhbmUocGlwZV9jb25maWcpOwog Ci0JZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKG9sZF9pbnRlbF9zdGF0ZSwK LQkJCQkJICAgICBwaXBlX2NvbmZpZyk7CisJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRl cm1hcmtzKHN0YXRlLCBwaXBlX2NvbmZpZyk7CiAJaW50ZWxfZW5hYmxlX3BpcGUocGlwZV9jb25m aWcpOwogCiAJYXNzZXJ0X3ZibGFua19kaXNhYmxlZChjcnRjKTsKIAlpbnRlbF9jcnRjX3ZibGFu a19vbihwaXBlX2NvbmZpZyk7CiAKLQlpbnRlbF9lbmNvZGVyc19lbmFibGUoY3J0YywgcGlwZV9j b25maWcsIG9sZF9zdGF0ZSk7CisJaW50ZWxfZW5jb2RlcnNfZW5hYmxlKGludGVsX2NydGMsIHBp cGVfY29uZmlnLCBzdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BsbF9kaXZpZGVy cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKQEAgLTY3NjgsMTAg KzY3NTksOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9wbGxfZGl2aWRlcnMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB9CiAKIHN0YXRpYyB2b2lkIGk5eHhfY3J0 Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAotCQkJICAgICBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQorCQkJICAgICBzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRf aW50ZWxfc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3N0YXRlKTsKIAlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwpAQCAtNjc5Niw3ICs2Nzg1LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJaWYg KCFJU19HRU4oZGV2X3ByaXYsIDIpKQogCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVw b3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKIAotCWludGVsX2VuY29kZXJzX3ByZV9lbmFi bGUoY3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7CisJaW50ZWxfZW5jb2RlcnNfcHJlX2Vu YWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgc3RhdGUpOwogCiAJaTl4eF9lbmFibGVfcGxs KGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKIApAQCAtNjgwOCw3ICs2Nzk3LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsCiAJaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5lKHBpcGVfY29uZmlnKTsKIAogCWlmIChk ZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgIT0gTlVMTCkKLQkJZGV2X3ByaXYt PmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKG9sZF9pbnRlbF9zdGF0ZSwKKwkJZGV2X3ByaXYt PmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHN0YXRlLAogCQkJCQkJICAgICBwaXBlX2NvbmZp Zyk7CiAJZWxzZQogCQlpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhpbnRlbF9jcnRjKTsKQEAgLTY4 MTcsNyArNjgwNiw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCWFzc2VydF92YmxhbmtfZGlzYWJsZWQoY3J0Yyk7 CiAJaW50ZWxfY3J0Y192Ymxhbmtfb24ocGlwZV9jb25maWcpOwogCi0JaW50ZWxfZW5jb2RlcnNf ZW5hYmxlKGNydGMsIHBpcGVfY29uZmlnLCBvbGRfc3RhdGUpOworCWludGVsX2VuY29kZXJzX2Vu YWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZCBp OXh4X3BmaXRfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGUpCkBAIC02ODM2LDcgKzY4MjUsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZGlzYWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiB9CiAKIHN0 YXRpYyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSwKLQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp CisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CkBAIC02ODUxLDcgKzY4NDAsNyBAQCBzdGF0aWMgdm9p ZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUsCiAJaWYgKElTX0dFTihkZXZfcHJpdiwgMikpCiAJCWludGVsX3dhaXRfZm9yX3ZibGFuayhk ZXZfcHJpdiwgcGlwZSk7CiAKLQlpbnRlbF9lbmNvZGVyc19kaXNhYmxlKGNydGMsIG9sZF9jcnRj X3N0YXRlLCBvbGRfc3RhdGUpOworCWludGVsX2VuY29kZXJzX2Rpc2FibGUoaW50ZWxfY3J0Yywg b2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKIAogCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7CiAJ YXNzZXJ0X3ZibGFua19kaXNhYmxlZChjcnRjKTsKQEAgLTY4NjAsNyArNjg0OSw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0 Y19zdGF0ZSwKIAogCWk5eHhfcGZpdF9kaXNhYmxlKG9sZF9jcnRjX3N0YXRlKTsKIAotCWludGVs X2VuY29kZXJzX3Bvc3RfZGlzYWJsZShjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgb2xkX3N0YXRlKTsK KwlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUs IHN0YXRlKTsKIAogCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShvbGRfY3J0Y19zdGF0ZSwgSU5U RUxfT1VUUFVUX0RTSSkpIHsKIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQpAQCAtNjg3 MSw3ICs2ODYwLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAogCQkJaTl4eF9kaXNhYmxlX3BsbChvbGRfY3J0 Y19zdGF0ZSk7CiAJfQogCi0JaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlzYWJsZShjcnRjLCBv bGRfY3J0Y19zdGF0ZSwgb2xkX3N0YXRlKTsKKwlpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNh YmxlKGludGVsX2NydGMsIG9sZF9jcnRjX3N0YXRlLCBzdGF0ZSk7CiAKIAlpZiAoIUlTX0dFTihk ZXZfcHJpdiwgMikpCiAJCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2 X3ByaXYsIHBpcGUsIGZhbHNlKTsKQEAgLTY5MjUsNyArNjkxNCw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlXQVJO X09OKElTX0VSUihjcnRjX3N0YXRlKSB8fCByZXQpOwogCi0JZGV2X3ByaXYtPmRpc3BsYXkuY3J0 Y19kaXNhYmxlKGNydGNfc3RhdGUsIHN0YXRlKTsKKwlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rp c2FibGUoY3J0Y19zdGF0ZSwgdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKSk7CiAKIAlkcm1f YXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAKQEAgLTEyOTMxLDE1ICsxMjkyMCwxNSBAQCB2ZXJp ZnlfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXI7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywgKnN3X2Nv bmZpZzsKLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlOworCXN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZTsKIAlib29sIGFjdGl2ZTsKIAotCW9sZF9zdGF0ZSA9IG9sZF9j cnRjX3N0YXRlLT5zdGF0ZTsKKwlzdGF0ZSA9IG9sZF9jcnRjX3N0YXRlLT5zdGF0ZTsKIAlfX2Ry bV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7CiAJcGlw ZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsKIAltZW1zZXQo cGlwZV9jb25maWcsIDAsIHNpemVvZigqcGlwZV9jb25maWcpKTsKIAlwaXBlX2NvbmZpZy0+YmFz ZS5jcnRjID0gY3J0YzsKLQlwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZSA9IG9sZF9zdGF0ZTsKKwlw aXBlX2NvbmZpZy0+YmFzZS5zdGF0ZSA9IHN0YXRlOwogCiAJRFJNX0RFQlVHX0tNUygiW0NSVEM6 JWQ6JXNdXG4iLCBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKIApAQCAtMTMwODMsMTkgKzEz MDcyLDE4IEBAIHZlcmlmeV9zaGFyZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiB9CiAKIHN0YXRpYyB2b2lkCi1pbnRlbF9tb2Rlc2V0 X3ZlcmlmeV9jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCSAgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLAotCQkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSwK LQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCitpbnRlbF9tb2Rlc2V0X3Zl cmlmeV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJICBzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSwKKwkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9zdGF0 ZSwKKwkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19zdGF0ZSkKIHsKLQlpZiAoIW5l ZWRzX21vZGVzZXQodG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfc3RhdGUpKSAmJgotCSAgICAhdG9f aW50ZWxfY3J0Y19zdGF0ZShuZXdfc3RhdGUpLT51cGRhdGVfcGlwZSkKKwlpZiAoIW5lZWRzX21v ZGVzZXQobmV3X3N0YXRlKSAmJiAhbmV3X3N0YXRlLT51cGRhdGVfcGlwZSkKIAkJcmV0dXJuOwog Ci0JdmVyaWZ5X3dtX3N0YXRlKGNydGMsIG5ld19zdGF0ZSk7Ci0JdmVyaWZ5X2Nvbm5lY3Rvcl9z dGF0ZShjcnRjLT5kZXYsIHN0YXRlLCBjcnRjKTsKLQl2ZXJpZnlfY3J0Y19zdGF0ZShjcnRjLCBv bGRfc3RhdGUsIG5ld19zdGF0ZSk7Ci0JdmVyaWZ5X3NoYXJlZF9kcGxsX3N0YXRlKGNydGMtPmRl diwgY3J0Yywgb2xkX3N0YXRlLCBuZXdfc3RhdGUpOworCXZlcmlmeV93bV9zdGF0ZSgmY3J0Yy0+ YmFzZSwgJm5ld19zdGF0ZS0+YmFzZSk7CisJdmVyaWZ5X2Nvbm5lY3Rvcl9zdGF0ZShjcnRjLT5i YXNlLmRldiwgJnN0YXRlLT5iYXNlLCAmY3J0Yy0+YmFzZSk7CisJdmVyaWZ5X2NydGNfc3RhdGUo JmNydGMtPmJhc2UsICZvbGRfc3RhdGUtPmJhc2UsICZuZXdfc3RhdGUtPmJhc2UpOworCXZlcmlm eV9zaGFyZWRfZHBsbF9zdGF0ZShjcnRjLT5iYXNlLmRldiwgJmNydGMtPmJhc2UsICZvbGRfc3Rh dGUtPmJhc2UsICZuZXdfc3RhdGUtPmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTMxMTAs MTAgKzEzMDk4LDEwIEBAIHZlcmlmeV9kaXNhYmxlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAKIHN0YXRpYyB2b2lkCiBpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9kaXNhYmxlZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQorCQkJICAgICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7Ci0J dmVyaWZ5X2VuY29kZXJfc3RhdGUoZGV2LCBzdGF0ZSk7Ci0JdmVyaWZ5X2Nvbm5lY3Rvcl9zdGF0 ZShkZXYsIHN0YXRlLCBOVUxMKTsKKwl2ZXJpZnlfZW5jb2Rlcl9zdGF0ZShkZXYsICZzdGF0ZS0+ YmFzZSk7CisJdmVyaWZ5X2Nvbm5lY3Rvcl9zdGF0ZShkZXYsICZzdGF0ZS0+YmFzZSwgTlVMTCk7 CiAJdmVyaWZ5X2Rpc2FibGVkX2RwbGxfc3RhdGUoZGV2KTsKIH0KIApAQCAtMTM1NzAsNTcgKzEz NTU4LDU0IEBAIHUzMiBpbnRlbF9jcnRjX2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKIAlyZXR1cm4gY3J0Yy0+YmFzZS5mdW5jcy0+Z2V0X3ZibGFua19jb3VudGVy KCZjcnRjLT5iYXNlKTsKIH0KIAotc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0 IGRybV9jcnRjICpjcnRjLAotCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAotCQkJICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKLQkJCSAg ICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCitzdGF0aWMgdm9pZCBp bnRlbF91cGRhdGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCSAgICAgIHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJICAgICAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlLAorCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUp OwotCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQocGlwZV9jb25maWcpOworCWJvb2wgbW9k ZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0KLQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVf c3RhdGUodG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKSwKLQkJCQkJCSB0b19pbnRlbF9wbGFu ZShjcnRjLT5wcmltYXJ5KSk7CisJCWludGVsX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0 YXRlLAorCQkJCQkJIHRvX2ludGVsX3BsYW5lKGNydGMtPmJhc2UucHJpbWFyeSkpOwogCiAJaWYg KG1vZGVzZXQpIHsKLQkJdXBkYXRlX3NjYW5saW5lX29mZnNldChwaXBlX2NvbmZpZyk7Ci0JCWRl dl9wcml2LT5kaXNwbGF5LmNydGNfZW5hYmxlKHBpcGVfY29uZmlnLCBzdGF0ZSk7CisJCXVwZGF0 ZV9zY2FubGluZV9vZmZzZXQobmV3X2NydGNfc3RhdGUpOworCQlkZXZfcHJpdi0+ZGlzcGxheS5j cnRjX2VuYWJsZShuZXdfY3J0Y19zdGF0ZSwgc3RhdGUpOwogCiAJCS8qIHZibGFua3Mgd29yayBh Z2FpbiwgcmUtZW5hYmxlIHBpcGUgQ1JDLiAqLwotCQlpbnRlbF9jcnRjX2VuYWJsZV9waXBlX2Ny YyhpbnRlbF9jcnRjKTsKKwkJaW50ZWxfY3J0Y19lbmFibGVfcGlwZV9jcmMoY3J0Yyk7CiAJfSBl bHNlIHsKLQkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZSh0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9j cnRjX3N0YXRlKSwKLQkJCQkgICAgICAgcGlwZV9jb25maWcpOworCQlpbnRlbF9wcmVfcGxhbmVf dXBkYXRlKG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7CiAKLQkJaWYgKHBpcGVfY29u ZmlnLT51cGRhdGVfcGlwZSkKLQkJCWludGVsX2VuY29kZXJzX3VwZGF0ZV9waXBlKGNydGMsIHBp cGVfY29uZmlnLCBzdGF0ZSk7CisJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpCisJ CQlpbnRlbF9lbmNvZGVyc191cGRhdGVfcGlwZShjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgc3RhdGUp OwogCX0KIAotCWlmIChwaXBlX2NvbmZpZy0+dXBkYXRlX3BpcGUgJiYgIXBpcGVfY29uZmlnLT5l bmFibGVfZmJjKQotCQlpbnRlbF9mYmNfZGlzYWJsZShpbnRlbF9jcnRjKTsKKwlpZiAobmV3X2Ny dGNfc3RhdGUtPnVwZGF0ZV9waXBlICYmICFuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlX2ZiYykKKwkJ aW50ZWxfZmJjX2Rpc2FibGUoY3J0Yyk7CiAJZWxzZSBpZiAobmV3X3BsYW5lX3N0YXRlKQotCQlp bnRlbF9mYmNfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBuZXdfcGxhbmVfc3RhdGUp OworCQlpbnRlbF9mYmNfZW5hYmxlKGNydGMsIG5ld19jcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3Rh dGUpOwogCi0JaW50ZWxfYmVnaW5fY3J0Y19jb21taXQodG9faW50ZWxfYXRvbWljX3N0YXRlKHN0 YXRlKSwgaW50ZWxfY3J0Yyk7CisJaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RhdGUsIGNydGMp OwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKLQkJc2tsX3VwZGF0ZV9wbGFuZXNf b25fY3J0Yyh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBpbnRlbF9jcnRjKTsKKwkJc2ts X3VwZGF0ZV9wbGFuZXNfb25fY3J0YyhzdGF0ZSwgY3J0Yyk7CiAJZWxzZQotCQlpOXh4X3VwZGF0 ZV9wbGFuZXNfb25fY3J0Yyh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBpbnRlbF9jcnRj KTsKKwkJaTl4eF91cGRhdGVfcGxhbmVzX29uX2NydGMoc3RhdGUsIGNydGMpOwogCi0JaW50ZWxf ZmluaXNoX2NydGNfY29tbWl0KHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSksIGludGVsX2Ny dGMpOworCWludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChzdGF0ZSwgY3J0Yyk7CiB9CiAKLXN0YXRp YyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp CitzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3J0Y3Moc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdf Y3J0Y19zdGF0ZTsKIAlpbnQgaTsKIAotCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKLQkJaWYgKCFu ZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQorCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJ aWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCiAJCQljb250aW51ZTsKIAogCQlpbnRl bF91cGRhdGVfY3J0YyhjcnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsCkBAIC0xMzYyOCwyNiAr MTM2MTMsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIHNrbF91cGRhdGVfY3J0Y3Mo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQorc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9j cnRjcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwotCXN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRl KTsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0 YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOworCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZSwgKm5ld19jcnRjX3N0YXRlOwogCXVuc2lnbmVkIGludCB1cGRhdGVkID0gMDsKIAlib29sIHBy b2dyZXNzOwogCWVudW0gcGlwZSBwaXBlOwogCWludCBpOwogCXU4IGh3X2VuYWJsZWRfc2xpY2Vz ID0gZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7Ci0JdTggcmVxdWlyZWRf c2xpY2VzID0gaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiLmVuYWJsZWRfc2xpY2VzOworCXU4 IHJlcXVpcmVkX3NsaWNlcyA9IHN0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsK IAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSA9IHt9OwogCi0J Zm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSwgaSkKKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0 ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKQogCQkvKiBp Z25vcmUgYWxsb2NhdGlvbnMgZm9yIGNydGMncyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2ZmLiAq LwotCQlpZiAobmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkKLQkJCWVudHJpZXNbaV0gPSB0b19pbnRl bF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKS0+d20uc2tsLmRkYjsKKwkJaWYgKG5ld19jcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZSkKKwkJCWVudHJpZXNbaV0gPSBvbGRfY3J0Y19zdGF0ZS0+d20u c2tsLmRkYjsKIAogCS8qIElmIDJuZCBEQnVmIHNsaWNlIHJlcXVpcmVkLCBlbmFibGUgaXQgaGVy ZSAqLwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExICYmIHJlcXVpcmVkX3NsaWNlcyA+ IGh3X2VuYWJsZWRfc2xpY2VzKQpAQCAtMTM2NjIsMjQgKzEzNjQ0LDIyIEBAIHN0YXRpYyB2b2lk IHNrbF91cGRhdGVfY3J0Y3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWRvIHsK IAkJcHJvZ3Jlc3MgPSBmYWxzZTsKIAotCQlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7CisJCWZvcl9l YWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0 ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJCWJvb2wgdmJsX3dhaXQgPSBmYWxzZTsKLQkJCXVu c2lnbmVkIGludCBjbWFzayA9IGRybV9jcnRjX21hc2soY3J0Yyk7CisJCQl1bnNpZ25lZCBpbnQg Y21hc2sgPSBkcm1fY3J0Y19tYXNrKCZjcnRjLT5iYXNlKTsKIAotCQkJaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Ci0JCQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19j cnRjX3N0YXRlKTsKLQkJCXBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOworCQkJcGlwZSA9IGNydGMt PnBpcGU7CiAKLQkJCWlmICh1cGRhdGVkICYgY21hc2sgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUp CisJCQlpZiAodXBkYXRlZCAmIGNtYXNrIHx8ICFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUp CiAJCQkJY29udGludWU7CiAKLQkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoJmNz dGF0ZS0+d20uc2tsLmRkYiwKKwkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoJm5l d19jcnRjX3N0YXRlLT53bS5za2wuZGRiLAogCQkJCQkJCWVudHJpZXMsCiAJCQkJCQkJSU5URUxf SU5GTyhkZXZfcHJpdiktPm51bV9waXBlcywgaSkpCiAJCQkJY29udGludWU7CiAKIAkJCXVwZGF0 ZWQgfD0gY21hc2s7Ci0JCQllbnRyaWVzW2ldID0gY3N0YXRlLT53bS5za2wuZGRiOworCQkJZW50 cmllc1tpXSA9IG5ld19jcnRjX3N0YXRlLT53bS5za2wuZGRiOwogCiAJCQkvKgogCQkJICogSWYg dGhpcyBpcyBhbiBhbHJlYWR5IGFjdGl2ZSBwaXBlLCBpdCdzIEREQiBjaGFuZ2VkLApAQCAtMTM2 ODcsMTAgKzEzNjY3LDEwIEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfY3J0Y3Moc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkJICogdGhlbiB3ZSBuZWVkIHRvIHdhaXQgZm9yIGEg dmJsYW5rIHRvIHBhc3MgZm9yIHRoZQogCQkJICogbmV3IGRkYiBhbGxvY2F0aW9uIHRvIHRha2Ug ZWZmZWN0LgogCQkJICovCi0JCQlpZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoJmNzdGF0ZS0+d20u c2tsLmRkYiwKLQkJCQkJCSAmdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSktPndt LnNrbC5kZGIpICYmCi0JCQkgICAgIW5ld19jcnRjX3N0YXRlLT5hY3RpdmVfY2hhbmdlZCAmJgot CQkJICAgIGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5X3BpcGVzICE9IHVwZGF0ZWQpCisJ CQlpZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoJm5ld19jcnRjX3N0YXRlLT53bS5za2wuZGRiLAor CQkJCQkJICZvbGRfY3J0Y19zdGF0ZS0+d20uc2tsLmRkYikgJiYKKwkJCSAgICAhbmV3X2NydGNf c3RhdGUtPmJhc2UuYWN0aXZlX2NoYW5nZWQgJiYKKwkJCSAgICBzdGF0ZS0+d21fcmVzdWx0cy5k aXJ0eV9waXBlcyAhPSB1cGRhdGVkKQogCQkJCXZibF93YWl0ID0gdHJ1ZTsKIAogCQkJaW50ZWxf dXBkYXRlX2NydGMoY3J0Yywgc3RhdGUsIG9sZF9jcnRjX3N0YXRlLApAQCAtMTM3NjMsNTcgKzEz NzQzLDUwIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jbGVhbnVwX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKQogCWludGVsX2F0b21pY19oZWxwZXJfZnJlZV9zdGF0ZShpOTE1KTsK IH0KIAotc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKK3N0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gc3RhdGUtPmRldjsKLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0 ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHN0YXRlLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwg Km5ld19jcnRjX3N0YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfaW50ZWxfY3J0 Y19zdGF0ZSwgKm9sZF9pbnRlbF9jcnRjX3N0YXRlOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUsICpvbGRfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YzsKIAl1NjQgcHV0X2RvbWFpbnNbSTkxNV9NQVhfUElQRVNdID0ge307CiAJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWYgPSAwOwogCWludCBpOwogCi0JaW50ZWxfYXRvbWljX2NvbW1pdF9mZW5j ZV93YWl0KGludGVsX3N0YXRlKTsKKwlpbnRlbF9hdG9taWNfY29tbWl0X2ZlbmNlX3dhaXQoc3Rh dGUpOwogCi0JZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0YXRlKTsK Kwlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMoJnN0YXRlLT5iYXNlKTsK IAotCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkKKwlpZiAoc3RhdGUtPm1vZGVzZXQpCiAJCXdh a2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX01P REVTRVQpOwogCi0JZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9s ZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewotCQlvbGRfaW50ZWxfY3J0Y19zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwotCQluZXdfaW50ZWxfY3J0 Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwotCQlpbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7 CisJCWlmIChuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSB8fAorCQkgICAgbmV3X2NydGNf c3RhdGUtPnVwZGF0ZV9waXBlKSB7CiAKLQkJaWYgKG5lZWRzX21vZGVzZXQobmV3X2ludGVsX2Ny dGNfc3RhdGUpIHx8Ci0JCSAgICBuZXdfaW50ZWxfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpIHsK LQotCQkJcHV0X2RvbWFpbnNbaW50ZWxfY3J0Yy0+cGlwZV0gPQorCQkJcHV0X2RvbWFpbnNbY3J0 Yy0+cGlwZV0gPQogCQkJCW1vZGVzZXRfZ2V0X2NydGNfcG93ZXJfZG9tYWlucyhjcnRjLAotCQkJ CQluZXdfaW50ZWxfY3J0Y19zdGF0ZSk7CisJCQkJCW5ld19jcnRjX3N0YXRlKTsKIAkJfQogCi0J CWlmICghbmVlZHNfbW9kZXNldChuZXdfaW50ZWxfY3J0Y19zdGF0ZSkpCisJCWlmICghbmVlZHNf bW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpCiAJCQljb250aW51ZTsKIAotCQlpbnRlbF9wcmVfcGxh bmVfdXBkYXRlKG9sZF9pbnRlbF9jcnRjX3N0YXRlLCBuZXdfaW50ZWxfY3J0Y19zdGF0ZSk7CisJ CWludGVsX3ByZV9wbGFuZV91cGRhdGUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlKTsK IAotCQlpZiAob2xkX2NydGNfc3RhdGUtPmFjdGl2ZSkgewotCQkJaW50ZWxfY3J0Y19kaXNhYmxl X3BsYW5lcyhpbnRlbF9zdGF0ZSwgaW50ZWxfY3J0Yyk7CisJCWlmIChvbGRfY3J0Y19zdGF0ZS0+ YmFzZS5hY3RpdmUpIHsKKwkJCWludGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoc3RhdGUsIGNydGMp OwogCiAJCQkvKgogCQkJICogV2UgbmVlZCB0byBkaXNhYmxlIHBpcGUgQ1JDIGJlZm9yZSBkaXNh YmxpbmcgdGhlIHBpcGUsCiAJCQkgKiBvciB3ZSByYWNlIGFnYWluc3QgdmJsYW5rIG9mZi4KIAkJ CSAqLwotCQkJaW50ZWxfY3J0Y19kaXNhYmxlX3BpcGVfY3JjKGludGVsX2NydGMpOworCQkJaW50 ZWxfY3J0Y19kaXNhYmxlX3BpcGVfY3JjKGNydGMpOwogCi0JCQlkZXZfcHJpdi0+ZGlzcGxheS5j cnRjX2Rpc2FibGUob2xkX2ludGVsX2NydGNfc3RhdGUsIHN0YXRlKTsKLQkJCWludGVsX2NydGMt PmFjdGl2ZSA9IGZhbHNlOwotCQkJaW50ZWxfZmJjX2Rpc2FibGUoaW50ZWxfY3J0Yyk7Ci0JCQlp bnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxsKG9sZF9pbnRlbF9jcnRjX3N0YXRlKTsKKwkJCWRldl9w cml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSwgc3RhdGUpOworCQkJY3J0 Yy0+YWN0aXZlID0gZmFsc2U7CisJCQlpbnRlbF9mYmNfZGlzYWJsZShjcnRjKTsKKwkJCWludGVs X2Rpc2FibGVfc2hhcmVkX2RwbGwob2xkX2NydGNfc3RhdGUpOwogCiAJCQkvKgogCQkJICogVW5k ZXJydW5zIGRvbid0IGFsd2F5cyByYWlzZQpAQCAtMTM4MjMsMjUgKzEzNzk2LDI1IEBAIHN0YXRp YyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCiAJCQlpbnRlbF9jaGVja19wY2hfZmlmb191bmRlcnJ1bnMoZGV2X3ByaXYpOwogCiAJ CQkvKiBGSVhNRSB1bmlmeSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zICovCi0JCQlpZiAoIW5ld19j cnRjX3N0YXRlLT5hY3RpdmUgJiYKKwkJCWlmICghbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZl ICYmCiAJCQkgICAgIUhBU19HTUNIKGRldl9wcml2KSAmJgogCQkJICAgIGRldl9wcml2LT5kaXNw bGF5LmluaXRpYWxfd2F0ZXJtYXJrcykKLQkJCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dh dGVybWFya3MoaW50ZWxfc3RhdGUsCi0JCQkJCQkJCSAgICAgbmV3X2ludGVsX2NydGNfc3RhdGUp OworCQkJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhzdGF0ZSwKKwkJCQkJ CQkJICAgICBuZXdfY3J0Y19zdGF0ZSk7CiAJCX0KIAl9CiAKLQkvKiBGSVhNRTogRXZlbnR1YWxs eSBnZXQgcmlkIG9mIG91ciBpbnRlbF9jcnRjLT5jb25maWcgcG9pbnRlciAqLwotCWZvcl9lYWNo X25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkKLQkJdG9f aW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19z dGF0ZSk7CisJLyogRklYTUU6IEV2ZW50dWFsbHkgZ2V0IHJpZCBvZiBvdXIgY3J0Yy0+Y29uZmln IHBvaW50ZXIgKi8KKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 YywgbmV3X2NydGNfc3RhdGUsIGkpCisJCWNydGMtPmNvbmZpZyA9IG5ld19jcnRjX3N0YXRlOwog Ci0JaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7Ci0JCWRybV9hdG9taWNfaGVscGVyX3VwZGF0 ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZShzdGF0ZS0+ZGV2LCBzdGF0ZSk7CisJaWYgKHN0YXRlLT5t b2Rlc2V0KSB7CisJCWRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0 ZShkZXYsICZzdGF0ZS0+YmFzZSk7CiAKIAkJaW50ZWxfc2V0X2NkY2xrX3ByZV9wbGFuZV91cGRh dGUoZGV2X3ByaXYsCi0JCQkJCQkgJmludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwsCisJCQkJCQkg JnN0YXRlLT5jZGNsay5hY3R1YWwsCiAJCQkJCQkgJmRldl9wcml2LT5jZGNsay5hY3R1YWwsCi0J CQkJCQkgaW50ZWxfc3RhdGUtPmNkY2xrLnBpcGUpOworCQkJCQkJIHN0YXRlLT5jZGNsay5waXBl KTsKIAogCQkvKgogCQkgKiBTS0wgd29ya2Fyb3VuZDogYnNwZWMgcmVjb21tZW5kcyB3ZSBkaXNh YmxlIHRoZSBTQUdWIHdoZW4gd2UKQEAgLTEzODU0LDI3ICsxMzgyNywyNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQogCX0KIAogCS8qIENvbXBsZXRlIHRoZSBldmVudHMgZm9yIHBpcGVzIHRoYXQgaGF2ZSBub3cg YmVlbiBkaXNhYmxlZCAqLwotCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBuZXdfY3J0Y19zdGF0ZSwgaSkgewotCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KHRv X2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpKTsKKwlmb3JfZWFjaF9uZXdfaW50ZWxf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJYm9vbCBt b2Rlc2V0ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSk7CiAKIAkJLyogQ29tcGxldGUg ZXZlbnRzIGZvciBub3cgZGlzYWJsZSBwaXBlcyBoZXJlLiAqLwotCQlpZiAobW9kZXNldCAmJiAh bmV3X2NydGNfc3RhdGUtPmFjdGl2ZSAmJiBuZXdfY3J0Y19zdGF0ZS0+ZXZlbnQpIHsKKwkJaWYg KG1vZGVzZXQgJiYgIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiBuZXdfY3J0Y19zdGF0 ZS0+YmFzZS5ldmVudCkgewogCQkJc3Bpbl9sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKLQkJ CWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIG5ld19jcnRjX3N0YXRlLT5ldmVudCk7 CisJCQlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgmY3J0Yy0+YmFzZSwgbmV3X2NydGNfc3Rh dGUtPmJhc2UuZXZlbnQpOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwog Ci0JCQluZXdfY3J0Y19zdGF0ZS0+ZXZlbnQgPSBOVUxMOworCQkJbmV3X2NydGNfc3RhdGUtPmJh c2UuZXZlbnQgPSBOVUxMOwogCQl9CiAJfQogCiAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBw bGFuZSwgcGlwZSwgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBzZXQgdXAuICovCiAJZGV2X3ByaXYt PmRpc3BsYXkudXBkYXRlX2NydGNzKHN0YXRlKTsKIAotCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNl dCkKKwlpZiAoc3RhdGUtPm1vZGVzZXQpCiAJCWludGVsX3NldF9jZGNsa19wb3N0X3BsYW5lX3Vw ZGF0ZShkZXZfcHJpdiwKLQkJCQkJCSAgJmludGVsX3N0YXRlLT5jZGNsay5hY3R1YWwsCisJCQkJ CQkgICZzdGF0ZS0+Y2RjbGsuYWN0dWFsLAogCQkJCQkJICAmZGV2X3ByaXYtPmNkY2xrLmFjdHVh bCwKLQkJCQkJCSAgaW50ZWxfc3RhdGUtPmNkY2xrLnBpcGUpOworCQkJCQkJICBzdGF0ZS0+Y2Rj bGsucGlwZSk7CiAKIAkvKiBGSVhNRTogV2Ugc2hvdWxkIGNhbGwgZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X2h3X2RvbmUoKSBoZXJlCiAJICogYWxyZWFkeSwgYnV0IHN0aWxsIG5lZWQgdGhlIHN0 YXRlIGZvciB0aGUgZGVsYXllZCBvcHRpbWl6YXRpb24uIFRvCkBAIC0xMzg4NSwxNiArMTM4NTgs MTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIAkgKiAtIHN3aXRjaCBvdmVyIHRvIHRoZSB2Ymxhbmsgd2FpdCBo ZWxwZXIgaW4gdGhlIGNvcmUgYWZ0ZXIgdGhhdCBzaW5jZQogCSAqICAgd2UgZG9uJ3QgbmVlZCBv dXQgc3BlY2lhbCBoYW5kbGluZyBhbnkgbW9yZS4KIAkgKi8KLQlkcm1fYXRvbWljX2hlbHBlcl93 YWl0X2Zvcl9mbGlwX2RvbmUoZGV2LCBzdGF0ZSk7CisJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9m b3JfZmxpcF9kb25lKGRldiwgJnN0YXRlLT5iYXNlKTsKIAotCWZvcl9lYWNoX25ld19jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewotCQluZXdfaW50ZWxfY3J0 Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwotCi0JCWlmIChu ZXdfY3J0Y19zdGF0ZS0+YWN0aXZlICYmCi0JCSAgICAhbmVlZHNfbW9kZXNldCh0b19pbnRlbF9j cnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKSkgJiYKLQkJICAgIChuZXdfaW50ZWxfY3J0Y19zdGF0 ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQgfHwKLQkJICAgICBuZXdfaW50ZWxfY3J0Y19zdGF0 ZS0+dXBkYXRlX3BpcGUpKQotCQkJaW50ZWxfY29sb3JfbG9hZF9sdXRzKG5ld19pbnRlbF9jcnRj X3N0YXRlKTsKKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg bmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAm JgorCQkgICAgIW5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpICYmCisJCSAgICAobmV3X2Ny dGNfc3RhdGUtPmJhc2UuY29sb3JfbWdtdF9jaGFuZ2VkIHx8CisJCSAgICAgbmV3X2NydGNfc3Rh dGUtPnVwZGF0ZV9waXBlKSkKKwkJCWludGVsX2NvbG9yX2xvYWRfbHV0cyhuZXdfY3J0Y19zdGF0 ZSk7CiAJfQogCiAJLyoKQEAgLTEzOTA0LDE2ICsxMzg3NSwxNCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCSAq CiAJICogVE9ETzogTW92ZSB0aGlzIChhbmQgb3RoZXIgY2xlYW51cCkgdG8gYW4gYXN5bmMgd29y a2VyIGV2ZW50dWFsbHkuCiAJICovCi0JZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7Ci0JCW5ld19pbnRlbF9jcnRjX3N0YXRlID0gdG9f aW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Ci0KKwlmb3JfZWFjaF9uZXdfaW50ZWxf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJaWYgKGRl dl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MpCi0JCQlkZXZfcHJpdi0+ZGlzcGxh eS5vcHRpbWl6ZV93YXRlcm1hcmtzKGludGVsX3N0YXRlLAotCQkJCQkJCSAgICAgIG5ld19pbnRl bF9jcnRjX3N0YXRlKTsKKwkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3Mo c3RhdGUsCisJCQkJCQkJICAgICAgbmV3X2NydGNfc3RhdGUpOwogCX0KIAotCWZvcl9lYWNoX29s ZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNf c3RhdGUsIGkpIHsKLQkJaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUodG9faW50ZWxfY3J0Y19zdGF0 ZShvbGRfY3J0Y19zdGF0ZSkpOworCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJaW50 ZWxfcG9zdF9wbGFuZV91cGRhdGUob2xkX2NydGNfc3RhdGUpOwogCiAJCWlmIChwdXRfZG9tYWlu c1tpXSkKIAkJCW1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoZGV2X3ByaXYsIHB1dF9kb21haW5z W2ldKTsKQEAgLTEzOTIxLDE1ICsxMzg5MCwxNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNf Y29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlpbnRlbF9tb2Rl c2V0X3ZlcmlmeV9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3Rh dGUpOwogCX0KIAotCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkKLQkJaW50ZWxfdmVyaWZ5X3Bs YW5lcyhpbnRlbF9zdGF0ZSk7CisJaWYgKHN0YXRlLT5tb2Rlc2V0KQorCQlpbnRlbF92ZXJpZnlf cGxhbmVzKHN0YXRlKTsKIAotCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCAmJiBpbnRlbF9jYW5f ZW5hYmxlX3NhZ3Yoc3RhdGUpKQorCWlmIChzdGF0ZS0+bW9kZXNldCAmJiBpbnRlbF9jYW5fZW5h YmxlX3NhZ3Yoc3RhdGUpKQogCQlpbnRlbF9lbmFibGVfc2FndihkZXZfcHJpdik7CiAKLQlkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZShzdGF0ZSk7CisJZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X2h3X2RvbmUoJnN0YXRlLT5iYXNlKTsKIAotCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNl dCkgeworCWlmIChzdGF0ZS0+bW9kZXNldCkgewogCQkvKiBBcyBvbmUgb2YgdGhlIHByaW1hcnkg bW1pbyBhY2Nlc3NvcnMsIEtNUyBoYXMgYSBoaWdoCiAJCSAqIGxpa2VsaWhvb2Qgb2YgdHJpZ2dl cmluZyBidWdzIGluIHVuY2xhaW1lZCBhY2Nlc3MuIEFmdGVyIHdlCiAJCSAqIGZpbmlzaCBtb2Rl c2V0dGluZywgc2VlIGlmIGFuIGVycm9yIGhhcyBiZWVuIGZsYWdnZWQsIGFuZCBpZgpAQCAtMTM5 MzksNyArMTM5MDgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1l ZF9tbWlvX2RldGVjdGlvbigmZGV2X3ByaXYtPnVuY29yZSk7CiAJCWludGVsX2Rpc3BsYXlfcG93 ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCwgd2FrZXJlZik7CiAJfQotCWlu dGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgaW50ZWxfc3RhdGUtPndh a2VyZWYpOworCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgc3Rh dGUtPndha2VyZWYpOwogCiAJLyoKIAkgKiBEZWZlciB0aGUgY2xlYW51cCBvZiB0aGUgb2xkIHN0 YXRlIHRvIGEgc2VwYXJhdGUgd29ya2VyIHRvIG5vdApAQCAtMTM5NDksMTQgKzEzOTE4LDE0IEBA IHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCiAJICogc2NoZWR1bGUgcG9pbnQgKGNvbmRfcmVzY2hlZCgpKSBoZXJlIGFu eXdheSB0byBrZWVwIGxhdGVuY2llcwogCSAqIGRvd24uCiAJICovCi0JSU5JVF9XT1JLKCZzdGF0 ZS0+Y29tbWl0X3dvcmssIGludGVsX2F0b21pY19jbGVhbnVwX3dvcmspOwotCXF1ZXVlX3dvcmso c3lzdGVtX2hpZ2hwcmlfd3EsICZzdGF0ZS0+Y29tbWl0X3dvcmspOworCUlOSVRfV09SSygmc3Rh dGUtPmJhc2UuY29tbWl0X3dvcmssIGludGVsX2F0b21pY19jbGVhbnVwX3dvcmspOworCXF1ZXVl X3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsICZzdGF0ZS0+YmFzZS5jb21taXRfd29yayk7CiB9CiAK IHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiB7Ci0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0KLQkJY29udGFpbmVy X29mKHdvcmssIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlLCBjb21taXRfd29yayk7CisJc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPQorCQljb250YWluZXJfb2Yod29yaywgc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSwgYmFzZS5jb21taXRfd29yayk7CiAKIAlpbnRlbF9hdG9taWNf Y29tbWl0X3RhaWwoc3RhdGUpOwogfQpAQCAtMTQwOTksNyArMTQwNjgsNyBAQCBzdGF0aWMgaW50 IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9IGVsc2Ugewog CQlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCiAJCQlmbHVzaF93b3JrcXVldWUoZGV2X3ByaXYt Pm1vZGVzZXRfd3EpOwotCQlpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RhdGUpOworCQlpbnRl bF9hdG9taWNfY29tbWl0X3RhaWwoaW50ZWxfc3RhdGUpOwogCX0KIAogCXJldHVybiAwOwpAQCAt MTY4NzgsNyArMTY4NDcsNyBAQCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCXU2NCBwdXRfZG9tYWluczsKIAogCQljcnRjX3N0YXRlID0gdG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKLQkJcHV0X2RvbWFpbnMgPSBtb2Rl c2V0X2dldF9jcnRjX3Bvd2VyX2RvbWFpbnMoJmNydGMtPmJhc2UsIGNydGNfc3RhdGUpOworCQlw dXRfZG9tYWlucyA9IG1vZGVzZXRfZ2V0X2NydGNfcG93ZXJfZG9tYWlucyhjcnRjLCBjcnRjX3N0 YXRlKTsKIAkJaWYgKFdBUk5fT04ocHV0X2RvbWFpbnMpKQogCQkJbW9kZXNldF9wdXRfcG93ZXJf ZG9tYWlucyhkZXZfcHJpdiwgcHV0X2RvbWFpbnMpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CmluZGV4IDdlOTgxYjAzZmFjZS4uN2Q5YWUyMzRhMDJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTMwNywxMCArMzA3LDEwIEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsK IAlpbnQgKCpjcnRjX2NvbXB1dGVfY2xvY2spKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJ CSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwogCXZvaWQgKCpjcnRjX2Vu YWJsZSkoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAotCQkJICAgIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOworCQkJICAgIHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKm9sZF9zdGF0ZSk7CiAJdm9pZCAoKmNydGNfZGlzYWJsZSkoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAotCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqb2xkX3N0YXRlKTsKLQl2b2lkICgqdXBkYXRlX2NydGNzKShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpOworCQkJICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpOworCXZvaWQgKCp1cGRhdGVfY3J0Y3MpKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKTsKIAl2b2lkICgqYXVkaW9fY29kZWNfZW5hYmxlKShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCBkOWE3YTEzY2UzMmEuLjQxMTZkZTJhNzdm ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0zNzM2LDExICszNzM2LDEwIEBAIGludGVs X2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJu IDA7CiB9CiAKLWJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKK2Jvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2 OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwog CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7CkBAIC0zNzYxLDE4ICszNzYwLDE4IEBA IGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKIAkvKgogCSAqIElmIHRoZXJlIGFyZSBubyBhY3RpdmUgQ1JUQ3MsIG5vIGFkZGl0aW9uYWwg Y2hlY2tzIG5lZWQgYmUgcGVyZm9ybWVkCiAJICovCi0JaWYgKGh3ZWlnaHQzMihpbnRlbF9zdGF0 ZS0+YWN0aXZlX2NydGNzKSA9PSAwKQorCWlmIChod2VpZ2h0MzIoc3RhdGUtPmFjdGl2ZV9jcnRj cykgPT0gMCkKIAkJcmV0dXJuIHRydWU7CiAKIAkvKgogCSAqIFNLTCsgd29ya2Fyb3VuZDogYnNw ZWMgcmVjb21tZW5kcyB3ZSBkaXNhYmxlIFNBR1Ygd2hlbiB3ZSBoYXZlCiAJICogbW9yZSB0aGVu IG9uZSBwaXBlIGVuYWJsZWQKIAkgKi8KLQlpZiAoaHdlaWdodDMyKGludGVsX3N0YXRlLT5hY3Rp dmVfY3J0Y3MpID4gMSkKKwlpZiAoaHdlaWdodDMyKHN0YXRlLT5hY3RpdmVfY3J0Y3MpID4gMSkK IAkJcmV0dXJuIGZhbHNlOwogCiAJLyogU2luY2Ugd2UncmUgbm93IGd1YXJhbnRlZWQgdG8gb25s eSBoYXZlIG9uZSBhY3RpdmUgQ1JUQy4uLiAqLwotCXBpcGUgPSBmZnMoaW50ZWxfc3RhdGUtPmFj dGl2ZV9jcnRjcykgLSAxOworCXBpcGUgPSBmZnMoc3RhdGUtPmFjdGl2ZV9jcnRjcykgLSAxOwog CWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgcGlwZSk7CiAJY3N0YXRl ID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmgKaW5kZXggMWI0ODlmYTM5OWUxLi5lMzU3M2UxZTE2ZTMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uaApAQCAtMTAsMTAgKzEwLDEwIEBACiAKICNpbmNsdWRlICJpOTE1X3JlZy5oIgog Ci1zdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKIHN0cnVjdCBkcm1fZGV2aWNlOwogc3RydWN0IGRy bV9pOTE1X3ByaXZhdGU7CiBzdHJ1Y3QgaTkxNV9yZXF1ZXN0Oworc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZTsKIHN0cnVjdCBpbnRlbF9jcnRjOwogc3RydWN0IGludGVsX2NydGNfc3RhdGU7CiBz dHJ1Y3QgaW50ZWxfcGxhbmU7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJICAgICAgc3RydWN0IHNrbF9w aXBlX3dtICpvdXQpOwogdm9pZCBnNHhfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKIHZvaWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7Ci1ib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpOworYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogaW50IGludGVsX2VuYWJsZV9zYWd2KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBpbnQgaW50ZWxfZGlzYWJsZV9zYWd2KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBib29sIHNrbF93bV9sZXZlbF9lcXVhbHMo Y29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAqbDEsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==