From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 09/13] drm/i915: Extract per-platform plane->check() functions Date: Fri, 7 Sep 2018 18:24:09 +0300 Message-ID: <20180907152413.15761-10-ville.syrjala@linux.intel.com> References: <20180907152413.15761-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 316FA6E981 for ; Fri, 7 Sep 2018 15:24:44 +0000 (UTC) In-Reply-To: <20180907152413.15761-1-ville.syrjala@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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClNw bGl0IHVwIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoKSBhbmQgaW50ZWxfY2hlY2tfc3ByaXRl X3BsYW5lKCkKaW50byBwZXItcGxhdGZvcm0gdmFyaWFudHMuIFRoaXMgd2F5IHdlIGNhbiBnZXQg YSB1bmlmaWVkIGJlaGF2aW91cgpiZXR3ZWVuIHRoZSBTS0wgdW5pdmVyc2FsIHBsYW5lcywgYW5k IHdlIHN0b3AgY2hlY2tpbmcgZm9yIG5vbi1TS0wKc3BlY2lmaWMgc2NhbGluZyBsaW1pdHMgZm9y IHRoZSAic3ByaXRlIiBwbGFuZXMuIEFuZCB3ZSBub3cgZ2V0CmEgbmF0dXJhbCBwbGFjZSB3aGVy ZSB0byBhZGQgbW9yZSBwbGFyZm9ybSBzcGVjaWZpYyBjaGVja3MuCgp2MjogU3BsaXQgdGhlIC5j aGVja19wbGFuZSgpIGNhbGxpbmcgY29udmVudGlvbiBjaGFuZ2Ugb3V0IChKb3PDqSkKClJldmll d2VkLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMTYgKysrKysr LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgOCArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMzAzICsrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDI0MyBpbnNlcnRpb25zKCsp LCAxODQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4 IDczMmQwNDYyNzRjOS4uYWRiYjhlNmQ4ZDM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCkBAIC0zMzU1LDYgKzMzNTUsMzYgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFj ZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCXJldHVybiAwOwogfQog CitzdGF0aWMgaW50CitpOXh4X3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKK3sK KwlpbnQgcmV0OworCisJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUo JnBsYW5lX3N0YXRlLT5iYXNlLAorCQkJCQkJICAmY3J0Y19zdGF0ZS0+YmFzZSwKKwkJCQkJCSAg RFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAorCQkJCQkJICBEUk1fUExBTkVfSEVMUEVSX05P X1NDQUxJTkcsCisJCQkJCQkgIGZhbHNlLCB0cnVlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQorCQlyZXR1cm4gMDsKKworCXJl dCA9IGludGVsX3BsYW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShw bGFuZV9zdGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXBsYW5lX3N0YXRlLT5j dGwgPSBpOXh4X3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7CisKKwlyZXR1cm4g MDsKK30KKwogc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKQEAgLTk2ODksNiArOTcxOSwxMSBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAl1MzIgb2Zmc2V0OwogCWludCBy ZXQ7CiAKKwlpZiAoZmIgJiYgZmItPm1vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX0xJTkVBUikg eworCQlEUk1fREVCVUdfS01TKCJjdXJzb3IgY2Fubm90IGJlIHRpbGVkXG4iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCiAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3Rh dGUoJnBsYW5lX3N0YXRlLT5iYXNlLAogCQkJCQkJICAmY3J0Y19zdGF0ZS0+YmFzZSwKIAkJCQkJ CSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLApAQCAtOTY5NywxMyArOTczMiwxMiBAQCBz dGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JaWYgKCFmYikKKwlpZiAoIXBs YW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCiAJCXJldHVybiAwOwogCi0JaWYgKGZiLT5tb2RpZmll ciAhPSBEUk1fRk9STUFUX01PRF9MSU5FQVIpIHsKLQkJRFJNX0RFQlVHX0tNUygiY3Vyc29yIGNh bm5vdCBiZSB0aWxlZFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KKwlyZXQgPSBpbnRlbF9w bGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVfc3RhdGUpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CiAKIAlpbnRlbF9maWxsX2ZiX2dndHRfdmlldygmcGxhbmVfc3RhdGUtPnZpZXcs IGZiLCByb3RhdGlvbik7CiAJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSA9IGlu dGVsX2ZiX3BpdGNoKGZiLCAwLCByb3RhdGlvbik7CkBAIC0xMzIzMCwxOSArMTMyNjQsMTcgQEAg aW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIH0KIAogaW50 Ci1za2xfbWF4X3NjYWxlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAotCSAgICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCSAgICAgIHVpbnQzMl90IHBpeGVs X2Zvcm1hdCkKK3NrbF9tYXhfc2NhbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCisJICAgICAgdTMyIHBpeGVsX2Zvcm1hdCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXY7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJaW50IG1heF9zY2FsZSwgbXVsdDsK IAlpbnQgY3J0Y19jbG9jaywgbWF4X2RvdGNsaywgdG1wY2xrMSwgdG1wY2xrMjsKIAotCWlmICgh aW50ZWxfY3J0YyB8fCAhY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCisJaWYgKCFjcnRjX3N0YXRl LT5iYXNlLmVuYWJsZSkKIAkJcmV0dXJuIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKIAot CWRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7Ci0KIAljcnRjX2Nsb2Nr ID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7CiAJbWF4X2RvdGNs ayA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKS0+Y2RjbGsu bG9naWNhbC5jZGNsazsKIApAQCAtMTMyNjYsNjEgKzEzMjk4LDYgQEAgc2tsX21heF9zY2FsZShz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAlyZXR1cm4gbWF4X3NjYWxlOwogfQogCi1z dGF0aWMgaW50Ci1pbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAotCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQot ewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShzdGF0ZS0+YmFz ZS5wbGFuZSk7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw bGFuZS0+YmFzZS5kZXYpOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNy dGM7Ci0JaW50IG1pbl9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKLQlpbnQg bWF4X3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwotCWJvb2wgY2FuX3Bvc2l0 aW9uID0gZmFsc2U7Ci0JaW50IHJldDsKLQl1aW50MzJfdCBwaXhlbF9mb3JtYXQgPSAwOwotCi0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewotCQkvKiB1c2Ugc2NhbGVyIHdoZW4gY29s b3JrZXkgaXMgbm90IHJlcXVpcmVkICovCi0JCWlmICghc3RhdGUtPmNrZXkuZmxhZ3MpIHsKLQkJ CW1pbl9zY2FsZSA9IDE7Ci0JCQlpZiAoc3RhdGUtPmJhc2UuZmIpCi0JCQkJcGl4ZWxfZm9ybWF0 ID0gc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Zm9ybWF0OwotCQkJbWF4X3NjYWxlID0gc2tsX21h eF9zY2FsZSh0b19pbnRlbF9jcnRjKGNydGMpLAotCQkJCQkJICBjcnRjX3N0YXRlLCBwaXhlbF9m b3JtYXQpOwotCQl9Ci0JCWNhbl9wb3NpdGlvbiA9IHRydWU7Ci0JfQotCi0JcmV0ID0gZHJtX2F0 b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnN0YXRlLT5iYXNlLAotCQkJCQkJICAmY3J0 Y19zdGF0ZS0+YmFzZSwKLQkJCQkJCSAgbWluX3NjYWxlLCBtYXhfc2NhbGUsCi0JCQkJCQkgIGNh bl9wb3NpdGlvbiwgdHJ1ZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWlmICghc3Rh dGUtPmJhc2UuZmIpCi0JCXJldHVybiAwOwotCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkgewotCQlyZXQgPSBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShjcnRjX3N0YXRlLCBzdGF0ZSk7 Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCXN0YXRlLT5jdGwgPSBza2xfcGxhbmVf Y3RsKGNydGNfc3RhdGUsIHN0YXRlKTsKLQl9IGVsc2UgewotCQlyZXQgPSBpOXh4X2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RhdGUpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQotCQlzdGF0 ZS0+Y3RsID0gaTl4eF9wbGFuZV9jdGwoY3J0Y19zdGF0ZSwgc3RhdGUpOwotCX0KLQotCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQotCQlz dGF0ZS0+Y29sb3JfY3RsID0gZ2xrX3BsYW5lX2NvbG9yX2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlKQogewpAQCAtMTM3NzAsOCArMTM3NDcsNiBAQCBpbnRlbF9wcmltYXJ5X3Bs YW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBw aXBlKQogCQlmYmMtPnBvc3NpYmxlX2ZyYW1lYnVmZmVyX2JpdHMgfD0gcHJpbWFyeS0+ZnJvbnRi dWZmZXJfYml0OwogCX0KIAotCXByaW1hcnktPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfcHJp bWFyeV9wbGFuZTsKLQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJcHJpbWFy eS0+aGFzX2NjcyA9IHNrbF9wbGFuZV9oYXNfY2NzKGRldl9wcml2LCBwaXBlLAogCQkJCQkJICAg ICBQTEFORV9QUklNQVJZKTsKQEAgLTEzNzkzLDYgKzEzNzY4LDcgQEAgaW50ZWxfcHJpbWFyeV9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUg cGlwZSkKIAkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0gc2tsX3VwZGF0ZV9wbGFuZTsKIAkJcHJp bWFyeS0+ZGlzYWJsZV9wbGFuZSA9IHNrbF9kaXNhYmxlX3BsYW5lOwogCQlwcmltYXJ5LT5nZXRf aHdfc3RhdGUgPSBza2xfcGxhbmVfZ2V0X2h3X3N0YXRlOworCQlwcmltYXJ5LT5jaGVja19wbGFu ZSA9IHNrbF9wbGFuZV9jaGVjazsKIAogCQlwbGFuZV9mdW5jcyA9ICZza2xfcGxhbmVfZnVuY3M7 CiAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKQEAgLTEzODA0LDYgKzEz NzgwLDcgQEAgaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIAkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0g aTl4eF91cGRhdGVfcGxhbmU7CiAJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2Fi bGVfcGxhbmU7CiAJCXByaW1hcnktPmdldF9od19zdGF0ZSA9IGk5eHhfcGxhbmVfZ2V0X2h3X3N0 YXRlOworCQlwcmltYXJ5LT5jaGVja19wbGFuZSA9IGk5eHhfcGxhbmVfY2hlY2s7CiAKIAkJcGxh bmVfZnVuY3MgPSAmaTk2NV9wbGFuZV9mdW5jczsKIAl9IGVsc2UgewpAQCAtMTM4MTUsNiArMTM3 OTIsNyBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCQlwcmltYXJ5LT51cGRhdGVfcGxhbmUgPSBp OXh4X3VwZGF0ZV9wbGFuZTsKIAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJs ZV9wbGFuZTsKIAkJcHJpbWFyeS0+Z2V0X2h3X3N0YXRlID0gaTl4eF9wbGFuZV9nZXRfaHdfc3Rh dGU7CisJCXByaW1hcnktPmNoZWNrX3BsYW5lID0gaTl4eF9wbGFuZV9jaGVjazsKIAogCQlwbGFu ZV9mdW5jcyA9ICZpOHh4X3BsYW5lX2Z1bmNzOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK aW5kZXggNGFiYTBjY2U5Mzg1Li4zYzYyZmE4MDJmN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCkBAIC0xNjQ3LDggKzE2NDcsOCBAQCB2b2lkIGludGVsX2NydGNfYXJtX2ZpZm9fdW5kZXJy dW4oc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIHUxNiBza2xfc2NhbGVyX2NhbGNfcGhhc2Uo aW50IHN1YiwgYm9vbCBjaHJvbWFfY2VudGVyKTsKIGludCBza2xfdXBkYXRlX3NjYWxlcl9jcnRj KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKLWludCBza2xfbWF4X3NjYWxl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKLQkJICB1aW50MzJfdCBwaXhlbF9mb3JtYXQpOworaW50IHNrbF9tYXhfc2NhbGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAgdTMyIHBpeGVsX2Zv cm1hdCk7CiAKIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7CkBAIC0yMTM5LDcgKzIxMzksOSBA QCBib29sIHNrbF9wbGFuZV9oYXNfcGxhbmFyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHVuc2lnbmVkIGludCBza2xfcGxhbmVfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lLAogCQkJCSAgdTMyIHBpeGVsX2Zvcm1hdCwgdTY0IG1vZGlmaWVyLAogCQkJCSAg dW5zaWduZWQgaW50IHJvdGF0aW9uKTsKLQoraW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpOworaW50IGludGVsX3BsYW5lX2NoZWNrX3NyY19jb29yZGluYXRlcyhz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKIAogLyogaW50ZWxfdHYuYyAq Lwogdm9pZCBpbnRlbF90dl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCmluZGV4IGFhNGQ4MmU3MjQ1Yi4uNTA1ZDg1 MjkxZWU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpAQCAtMjMwLDYgKzIzMCwz OSBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGUpCiAjZW5kaWYKIH0KIAoraW50IGludGVsX3BsYW5lX2NoZWNrX3NyY19j b29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQoreworCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7CisJ c3RydWN0IGRybV9yZWN0ICpzcmMgPSAmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjOworCXUzMiBzcmNf eCwgc3JjX3ksIHNyY193LCBzcmNfaDsKKworCS8qCisJICogSGFyZHdhcmUgZG9lc24ndCBoYW5k bGUgc3VicGl4ZWwgY29vcmRpbmF0ZXMuCisJICogQWRqdXN0IHRvIChtYWNybylwaXhlbCBib3Vu ZGFyeSwgYnV0IGJlIGNhcmVmdWwgbm90IHRvCisJICogaW5jcmVhc2UgdGhlIHNvdXJjZSB2aWV3 cG9ydCBzaXplLCBiZWNhdXNlIHRoYXQgY291bGQKKwkgKiBwdXNoIHRoZSBkb3duc2NhbGluZyBm YWN0b3Igb3V0IG9mIGJvdW5kcy4KKwkgKi8KKwlzcmNfeCA9IHNyYy0+eDEgPj4gMTY7CisJc3Jj X3cgPSBkcm1fcmVjdF93aWR0aChzcmMpID4+IDE2OworCXNyY195ID0gc3JjLT55MSA+PiAxNjsK KwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMpID4+IDE2OworCisJc3JjLT54MSA9IHNyY194 IDw8IDE2OworCXNyYy0+eDIgPSAoc3JjX3ggKyBzcmNfdykgPDwgMTY7CisJc3JjLT55MSA9IHNy Y195IDw8IDE2OworCXNyYy0+eTIgPSAoc3JjX3kgKyBzcmNfaCkgPDwgMTY7CisKKwlpZiAoZmIt PmZvcm1hdC0+aXNfeXV2ICYmCisJICAgIGZiLT5mb3JtYXQtPmZvcm1hdCAhPSBEUk1fRk9STUFU X05WMTIgJiYKKwkgICAgKHNyY194ICYgMSB8fCBzcmNfdyAmIDEpKSB7CisJCURSTV9ERUJVR19L TVMoInNyYyB4L3cgKCV1LCAldSkgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIgZm9yIFlVViBwbGFu ZXNcbiIsCisJCQkgICAgICBzcmNfeCwgc3JjX3cpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwlyZXR1cm4gMDsKK30KKwogdW5zaWduZWQgaW50CiBza2xfcGxhbmVfbWF4X3N0cmlkZShzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCQkgICAgIHUzMiBwaXhlbF9mb3JtYXQsIHU2NCBtb2Rp ZmllciwKQEAgLTk4NSwxNDYgKzEwMTgsMTg5IEBAIGc0eF9wbGFuZV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSwKIH0KIAogc3RhdGljIGludAotaW50ZWxfY2hlY2tfc3By aXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJIHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCitnNHhfc3ByaXRlX2NoZWNrX3NjYWxpbmcoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUoc3RhdGUtPmJhc2UucGxhbmUpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwotCWludCBtYXhfc2NhbGUsIG1p bl9zY2FsZTsKLQlpbnQgcmV0OwotCXVpbnQzMl90IHBpeGVsX2Zvcm1hdCA9IDA7Ci0KLQlpZiAo IWZiKSB7Ci0JCXN0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKKwljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCWNvbnN0IHN0cnVjdCBk cm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT5iYXNlLnNyYzsKKwljb25zdCBzdHJ1Y3QgZHJt X3JlY3QgKmRzdCA9ICZwbGFuZV9zdGF0ZS0+YmFzZS5kc3Q7CisJaW50IHNyY194LCBzcmNfeSwg c3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9CisJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 CisJdW5zaWduZWQgaW50IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKKwl1bnNpZ25lZCBpbnQg d2lkdGhfYnl0ZXM7CisJaW50IG1pbl93aWR0aCwgbWluX2hlaWdodDsKKworCWNydGNfdyA9IGRy bV9yZWN0X3dpZHRoKGRzdCk7CisJY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KGRzdCk7CisKKwlz cmNfeCA9IHNyYy0+eDEgPj4gMTY7CisJc3JjX3kgPSBzcmMtPnkxID4+IDE2OworCXNyY193ID0g ZHJtX3JlY3Rfd2lkdGgoc3JjKSA+PiAxNjsKKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMp ID4+IDE2OworCisJaWYgKHNyY193ID09IGNydGNfdyAmJiBzcmNfaCA9PSBjcnRjX2gpCiAJCXJl dHVybiAwOworCisJbWluX3dpZHRoID0gMzsKKworCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7CisJCWlmIChzcmNfaCAmIDEpIHsKKwkJCURSTV9E RUJVR19LTVMoIlNvdXJjZSBoZWlnaHQgbXVzdCBiZSBldmVuIHdpdGggaW50ZXJsYWNlZCBtb2Rl c1xuIik7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCQltaW5faGVpZ2h0ID0gNjsKKwl9IGVs c2UgeworCQltaW5faGVpZ2h0ID0gMzsKIAl9CiAKLQkvKiBEb24ndCBtb2RpZnkgYW5vdGhlciBw aXBlJ3MgcGxhbmUgKi8KLQlpZiAocGxhbmUtPnBpcGUgIT0gY3J0Yy0+cGlwZSkgewotCQlEUk1f REVCVUdfS01TKCJXcm9uZyBwbGFuZSA8LT4gY3J0YyBtYXBwaW5nXG4iKTsKKwl3aWR0aF9ieXRl cyA9ICgoc3JjX3ggKiBjcHApICYgNjMpICsgc3JjX3cgKiBjcHA7CisKKwlpZiAoc3JjX3cgPCBt aW5fd2lkdGggfHwgc3JjX2ggPCBtaW5faGVpZ2h0IHx8CisJICAgIHNyY193ID4gMjA0OCB8fCBz cmNfaCA+IDIwNDgpIHsKKwkJRFJNX0RFQlVHX0tNUygiU291cmNlIGRpbWVuc2lvbnMgKCVkeCVk KSBleGNlZWQgaGFyZHdhcmUgbGltaXRzICglZHglZCAtICVkeCVkKVxuIiwKKwkJCSAgICAgIHNy Y193LCBzcmNfaCwgbWluX3dpZHRoLCBtaW5faGVpZ2h0LCAyMDQ4LCAyMDQ4KTsKIAkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCi0JLyogRklYTUUgY2hlY2sgYWxsIGdlbiBsaW1pdHMgKi8KLQlpZiAo ZmItPndpZHRoIDwgMyB8fCBmYi0+aGVpZ2h0IDwgMyB8fAotCSAgICBmYi0+cGl0Y2hlc1swXSA+ IHBsYW5lLT5tYXhfc3RyaWRlKHBsYW5lLCBmYi0+Zm9ybWF0LT5mb3JtYXQsCi0JCQkJCSAgICAg ICBmYi0+bW9kaWZpZXIsIERSTV9NT0RFX1JPVEFURV8wKSkgewotCQlEUk1fREVCVUdfS01TKCJV bnN1aXRhYmxlIGZyYW1lYnVmZmVyIGZvciBwbGFuZVxuIik7CisJaWYgKHdpZHRoX2J5dGVzID4g NDA5NikgeworCQlEUk1fREVCVUdfS01TKCJGZXRjaCB3aWR0aCAoJWQpIGV4Y2VlZHMgaGFyZHdh cmUgbWF4IHdpdGggc2NhbGluZyAoJXUpXG4iLAorCQkJICAgICAgd2lkdGhfYnl0ZXMsIDQwOTYp OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSB7Ci0JCWlmIChzdGF0ZS0+YmFzZS5mYikKLQkJCXBpeGVsX2Zvcm1hdCA9IHN0YXRlLT5iYXNl LmZiLT5mb3JtYXQtPmZvcm1hdDsKLQkJLyogdXNlIHNjYWxlciB3aGVuIGNvbG9ya2V5IGlzIG5v dCByZXF1aXJlZCAqLwotCQlpZiAoIXN0YXRlLT5ja2V5LmZsYWdzKSB7Ci0JCQltaW5fc2NhbGUg PSAxOwotCQkJbWF4X3NjYWxlID0KLQkJCQlza2xfbWF4X3NjYWxlKGNydGMsIGNydGNfc3RhdGUs IHBpeGVsX2Zvcm1hdCk7Ci0JCX0gZWxzZSB7Ci0JCQltaW5fc2NhbGUgPSBEUk1fUExBTkVfSEVM UEVSX05PX1NDQUxJTkc7Ci0JCQltYXhfc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJ Tkc7Ci0JCX0KKwlpZiAod2lkdGhfYnl0ZXMgPiA0MDk2IHx8IGZiLT5waXRjaGVzWzBdID4gNDA5 NikgeworCQlEUk1fREVCVUdfS01TKCJTdHJpZGUgKCV1KSBleGNlZWRzIGhhcmR3YXJlIG1heCB3 aXRoIHNjYWxpbmcgKCV1KVxuIiwKKwkJCSAgICAgIGZiLT5waXRjaGVzWzBdLCA0MDk2KTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2c0eF9z cHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp OworCWludCBtYXhfc2NhbGUsIG1pbl9zY2FsZTsKKwlpbnQgcmV0OworCisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPCA3KSB7CisJCW1pbl9zY2FsZSA9IDE7CisJCW1heF9zY2FsZSA9IDE2IDw8 IDE2OworCX0gZWxzZSBpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkgeworCQltaW5fc2NhbGUg PSAxOworCQltYXhfc2NhbGUgPSAyIDw8IDE2OwogCX0gZWxzZSB7Ci0JCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNykgewotCQkJbWluX3NjYWxlID0gMTsKLQkJCW1heF9zY2FsZSA9IDE2IDw8 IDE2OwotCQl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsKLQkJCW1pbl9zY2Fs ZSA9IDE7Ci0JCQltYXhfc2NhbGUgPSAyIDw8IDE2OwotCQl9IGVsc2UgewotCQkJbWluX3NjYWxl ID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwotCQkJbWF4X3NjYWxlID0gRFJNX1BMQU5F X0hFTFBFUl9OT19TQ0FMSU5HOwotCQl9CisJCW1pbl9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJf Tk9fU0NBTElORzsKKwkJbWF4X3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwog CX0KIAotCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZzdGF0ZS0+ YmFzZSwKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVf c3RhdGUtPmJhc2UsCiAJCQkJCQkgICZjcnRjX3N0YXRlLT5iYXNlLAogCQkJCQkJICBtaW5fc2Nh bGUsIG1heF9zY2FsZSwKIAkJCQkJCSAgdHJ1ZSwgdHJ1ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAotCWlmIChzdGF0ZS0+YmFzZS52aXNpYmxlKSB7Ci0JCXN0cnVjdCBkcm1fcmVjdCAq c3JjID0gJnN0YXRlLT5iYXNlLnNyYzsKLQkJc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmc3RhdGUt PmJhc2UuZHN0OwotCQl1bnNpZ25lZCBpbnQgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoZHN0KTsK LQkJdW5zaWduZWQgaW50IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodChkc3QpOwotCQl1aW50MzJf dCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCisJCXJldHVybiAwOwogCi0JCS8qCi0JCSAqIEhhcmR3YXJlIGRvZXNuJ3QgaGFuZGxl IHN1YnBpeGVsIGNvb3JkaW5hdGVzLgotCQkgKiBBZGp1c3QgdG8gKG1hY3JvKXBpeGVsIGJvdW5k YXJ5LCBidXQgYmUgY2FyZWZ1bCBub3QgdG8KLQkJICogaW5jcmVhc2UgdGhlIHNvdXJjZSB2aWV3 cG9ydCBzaXplLCBiZWNhdXNlIHRoYXQgY291bGQKLQkJICogcHVzaCB0aGUgZG93bnNjYWxpbmcg ZmFjdG9yIG91dCBvZiBib3VuZHMuCi0JCSAqLwotCQlzcmNfeCA9IHNyYy0+eDEgPj4gMTY7Ci0J CXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoc3JjKSA+PiAxNjsKLQkJc3JjX3kgPSBzcmMtPnkxID4+ IDE2OwotCQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMpID4+IDE2OwotCi0JCXNyYy0+eDEg PSBzcmNfeCA8PCAxNjsKLQkJc3JjLT54MiA9IChzcmNfeCArIHNyY193KSA8PCAxNjsKLQkJc3Jj LT55MSA9IHNyY195IDw8IDE2OwotCQlzcmMtPnkyID0gKHNyY195ICsgc3JjX2gpIDw8IDE2Owot Ci0JCWlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYKLSAgICAJCSAgICBmYi0+Zm9ybWF0LT5mb3Jt YXQgIT0gRFJNX0ZPUk1BVF9OVjEyICYmCi0JCSAgICAoc3JjX3ggJSAyIHx8IHNyY193ICUgMikp IHsKLQkJCURSTV9ERUJVR19LTVMoInNyYyB4L3cgKCV1LCAldSkgbXVzdCBiZSBhIG11bHRpcGxl IG9mIDIgZm9yIFlVViBwbGFuZXNcbiIsCi0JCQkJICAgICAgc3JjX3gsIHNyY193KTsKLQkJCXJl dHVybiAtRUlOVkFMOwotCQl9CisJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5h dGVzKHBsYW5lX3N0YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCi0JCS8qIENoZWNr IHNpemUgcmVzdHJpY3Rpb25zIHdoZW4gc2NhbGluZyAqLwotCQlpZiAoc3JjX3cgIT0gY3J0Y193 IHx8IHNyY19oICE9IGNydGNfaCkgewotCQkJdW5zaWduZWQgaW50IHdpZHRoX2J5dGVzOwotCQkJ aW50IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKLQotCQkJd2lkdGhfYnl0ZXMgPSAoKHNyY194 ICogY3BwKSAmIDYzKSArIHNyY193ICogY3BwOwotCi0JCQkvKiBGSVhNRSBpbnRlcmxhY2luZyBt aW4gaGVpZ2h0IGlzIDYgKi8KLQkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiAoCi0J CQkgICAgIHNyY193IDwgMyB8fCBzcmNfaCA8IDMgfHwKLQkJCSAgICAgc3JjX3cgPiAyMDQ4IHx8 IHNyY19oID4gMjA0OCB8fAotCQkJICAgICBjcnRjX3cgPCAzIHx8IGNydGNfaCA8IDMgfHwKLQkJ CSAgICAgd2lkdGhfYnl0ZXMgPiA0MDk2IHx8IGZiLT5waXRjaGVzWzBdID4gNDA5NikpIHsKLQkJ CQlEUk1fREVCVUdfS01TKCJTb3VyY2UgZGltZW5zaW9ucyBleGNlZWQgaGFyZHdhcmUgbGltaXRz XG4iKTsKLQkJCQlyZXR1cm4gLUVJTlZBTDsKLQkJCX0KLQkJfQotCX0KKwlyZXQgPSBnNHhfc3By aXRlX2NoZWNrX3NjYWxpbmcoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Ci0JCXJldCA9 IHNrbF9jaGVja19wbGFuZV9zdXJmYWNlKGNydGNfc3RhdGUsIHN0YXRlKTsKLQkJaWYgKHJldCkK LQkJCXJldHVybiByZXQ7CisJcmV0ID0gaTl4eF9jaGVja19wbGFuZV9zdXJmYWNlKHBsYW5lX3N0 YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCi0JCXN0YXRlLT5jdGwgPSBza2xfcGxh bmVfY3RsKGNydGNfc3RhdGUsIHN0YXRlKTsKLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Ci0JCXJldCA9IGk5eHhfY2hlY2tf cGxhbmVfc3VyZmFjZShzdGF0ZSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OworCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDcpCisJCXBsYW5lX3N0YXRlLT5jdGwgPSBpdmJfc3ByaXRl X2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7CisJZWxzZQorCQlwbGFuZV9zdGF0ZS0+Y3Rs ID0gZzR4X3Nwcml0ZV9jdGwoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOwogCi0JCXN0YXRlLT5j dGwgPSB2bHZfc3ByaXRlX2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7Ci0JfSBlbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDcpIHsKLQkJcmV0ID0gaTl4eF9jaGVja19wbGFuZV9zdXJmYWNl KHN0YXRlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CisJcmV0dXJuIDA7Cit9CiAKLQkJ c3RhdGUtPmN0bCA9IGl2Yl9zcHJpdGVfY3RsKGNydGNfc3RhdGUsIHN0YXRlKTsKLQl9IGVsc2Ug ewotCQlyZXQgPSBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RhdGUpOwotCQlpZiAocmV0KQot CQkJcmV0dXJuIHJldDsKK3N0YXRpYyBpbnQKK3Zsdl9zcHJpdGVfY2hlY2soc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQoreworCWludCByZXQ7CisKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVj a19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCisJCQkJCQkgICZjcnRjX3N0YXRlLT5i YXNlLAorCQkJCQkJICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCisJCQkJCQkgIERSTV9Q TEFORV9IRUxQRVJfTk9fU0NBTElORywKKwkJCQkJCSAgdHJ1ZSwgdHJ1ZSk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwkJcmV0 dXJuIDA7CisKKwlyZXQgPSBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxhbmVf c3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBpOXh4X2NoZWNrX3Bs YW5lX3N1cmZhY2UocGxhbmVfc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlw bGFuZV9zdGF0ZS0+Y3RsID0gdmx2X3Nwcml0ZV9jdGwoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUp OwogCi0JCXN0YXRlLT5jdGwgPSBnNHhfc3ByaXRlX2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7CisJ cmV0dXJuIDA7Cit9CisKK2ludCBza2xfcGxhbmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCisJCSAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQoreworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOworCWludCBtYXhfc2NhbGUsIG1pbl9zY2FsZTsK KwlpbnQgcmV0OworCisJLyogdXNlIHNjYWxlciB3aGVuIGNvbG9ya2V5IGlzIG5vdCByZXF1aXJl ZCAqLworCWlmICghcGxhbmVfc3RhdGUtPmNrZXkuZmxhZ3MpIHsKKwkJY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKKworCQltaW5fc2NhbGUg PSAxOworCQltYXhfc2NhbGUgPSBza2xfbWF4X3NjYWxlKGNydGNfc3RhdGUsCisJCQkJCSAgZmIg PyBmYi0+Zm9ybWF0LT5mb3JtYXQgOiAwKTsKKwl9IGVsc2UgeworCQltaW5fc2NhbGUgPSBEUk1f UExBTkVfSEVMUEVSX05PX1NDQUxJTkc7CisJCW1heF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJf Tk9fU0NBTElORzsKIAl9CiAKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9z dGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCisJCQkJCQkgICZjcnRjX3N0YXRlLT5iYXNlLAorCQkJ CQkJICBtaW5fc2NhbGUsIG1heF9zY2FsZSwKKwkJCQkJCSAgdHJ1ZSwgdHJ1ZSk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKKwkJ cmV0dXJuIDA7CisKKwlyZXQgPSBpbnRlbF9wbGFuZV9jaGVja19zcmNfY29vcmRpbmF0ZXMocGxh bmVfc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBza2xfY2hlY2tf cGxhbmVfc3VyZmFjZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCXBsYW5lX3N0YXRlLT5jdGwgPSBza2xfcGxhbmVfY3RsKGNydGNfc3RhdGUs IHBsYW5lX3N0YXRlKTsKKwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKQotCQlzdGF0ZS0+Y29sb3JfY3RsID0gZ2xrX3BsYW5lX2NvbG9y X2N0bChjcnRjX3N0YXRlLCBzdGF0ZSk7CisJCXBsYW5lX3N0YXRlLT5jb2xvcl9jdGwgPSBnbGtf cGxhbmVfY29sb3JfY3RsKGNydGNfc3RhdGUsCisJCQkJCQkJICAgICBwbGFuZV9zdGF0ZSk7CiAK IAlyZXR1cm4gMDsKIH0KQEAgLTE1NjAsNiArMTYzNiw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpbnRlbF9wbGFuZS0+ dXBkYXRlX3BsYW5lID0gc2tsX3VwZGF0ZV9wbGFuZTsKIAkJaW50ZWxfcGxhbmUtPmRpc2FibGVf cGxhbmUgPSBza2xfZGlzYWJsZV9wbGFuZTsKIAkJaW50ZWxfcGxhbmUtPmdldF9od19zdGF0ZSA9 IHNrbF9wbGFuZV9nZXRfaHdfc3RhdGU7CisJCWludGVsX3BsYW5lLT5jaGVja19wbGFuZSA9IHNr bF9wbGFuZV9jaGVjazsKIAogCQlpZiAoc2tsX3BsYW5lX2hhc19wbGFuYXIoZGV2X3ByaXYsIHBp cGUsCiAJCQkJCSBQTEFORV9TUFJJVEUwICsgcGxhbmUpKSB7CkBAIC0xNTgxLDYgKzE2NTgsNyBA QCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IHZsdl91cGRhdGVfcGxhbmU7CiAJ CWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lID0gdmx2X2Rpc2FibGVfcGxhbmU7CiAJCWludGVs X3BsYW5lLT5nZXRfaHdfc3RhdGUgPSB2bHZfcGxhbmVfZ2V0X2h3X3N0YXRlOworCQlpbnRlbF9w bGFuZS0+Y2hlY2tfcGxhbmUgPSB2bHZfc3ByaXRlX2NoZWNrOwogCiAJCXBsYW5lX2Zvcm1hdHMg PSB2bHZfcGxhbmVfZm9ybWF0czsKIAkJbnVtX3BsYW5lX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHZs dl9wbGFuZV9mb3JtYXRzKTsKQEAgLTE1OTIsNiArMTY3MCw3IEBAIGludGVsX3Nwcml0ZV9wbGFu ZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpbnRlbF9wbGFu ZS0+dXBkYXRlX3BsYW5lID0gaXZiX3VwZGF0ZV9wbGFuZTsKIAkJaW50ZWxfcGxhbmUtPmRpc2Fi bGVfcGxhbmUgPSBpdmJfZGlzYWJsZV9wbGFuZTsKIAkJaW50ZWxfcGxhbmUtPmdldF9od19zdGF0 ZSA9IGl2Yl9wbGFuZV9nZXRfaHdfc3RhdGU7CisJCWludGVsX3BsYW5lLT5jaGVja19wbGFuZSA9 IGc0eF9zcHJpdGVfY2hlY2s7CiAKIAkJcGxhbmVfZm9ybWF0cyA9IHNuYl9wbGFuZV9mb3JtYXRz OwogCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUoc25iX3BsYW5lX2Zvcm1hdHMpOwpA QCAtMTYwMyw2ICsxNjgyLDcgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWludGVsX3BsYW5lLT51cGRhdGVfcGxhbmUgPSBn NHhfdXBkYXRlX3BsYW5lOwogCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZSA9IGc0eF9kaXNh YmxlX3BsYW5lOwogCQlpbnRlbF9wbGFuZS0+Z2V0X2h3X3N0YXRlID0gZzR4X3BsYW5lX2dldF9o d19zdGF0ZTsKKwkJaW50ZWxfcGxhbmUtPmNoZWNrX3BsYW5lID0gZzR4X3Nwcml0ZV9jaGVjazsK IAogCQltb2RpZmllcnMgPSBpOXh4X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnM7CiAJCWlmIChJU19H RU42KGRldl9wcml2KSkgewpAQCAtMTYzNSw3ICsxNzE1LDYgQEAgaW50ZWxfc3ByaXRlX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaW50ZWxfcGxhbmUt Pmk5eHhfcGxhbmUgPSBwbGFuZTsKIAlpbnRlbF9wbGFuZS0+aWQgPSBQTEFORV9TUFJJVEUwICsg cGxhbmU7CiAJaW50ZWxfcGxhbmUtPmZyb250YnVmZmVyX2JpdCA9IElOVEVMX0ZST05UQlVGRkVS KHBpcGUsIGludGVsX3BsYW5lLT5pZCk7Ci0JaW50ZWxfcGxhbmUtPmNoZWNrX3BsYW5lID0gaW50 ZWxfY2hlY2tfc3ByaXRlX3BsYW5lOwogCiAJcG9zc2libGVfY3J0Y3MgPSAoMSA8PCBwaXBlKTsK IAotLSAKMi4xNi40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK