From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v2 10/13] drm/i915: Extract skl_universal_plane_init() Date: Wed, 30 May 2018 20:15:58 +0300 Message-ID: <20180530171601.19073-1-ville.syrjala@linux.intel.com> References: <20180530165933.11424-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id E53F16E44A for ; Wed, 30 May 2018 17:16:04 +0000 (UTC) In-Reply-To: <20180530165933.11424-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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZXJlJ3Mgbm90IG11Y2ggcG9pbnQgaW4gZm9sbG93aW5nIHRoZSBwcmltYXJ5IHZzLiBzcHJpdGUg c3BsaXQKZm9yIHRoZSBTS0wrIHVuaXZlcnNhbCBwbGFuZSBpbml0IGNvZGUuIFRoZSBvbmx5IGRp ZmZlcmVuY2UgaXMKb2Ygb3VyIG93biBkb2luZyBpbiB0aGUgZm9ybSBvZiB0aGUgLmNoZWNrX3Bs YW5lKCkuIExldCdzIG1ha2UKYSBzbWFsbCBleGNlcHRpb24gZm9yIHRoYXQgbGl0dGxlIGRldGFp bCBhbmQgb3RoZXJ3aXNlIHNoYXJlCnRoZSBzYW1lIGNvZGUgdG8gaW5pdGlhbGl6ZSBhbGwgdGhl IHVuaXZlcnNhbCBwbGFuZXMuCgpFdmVudHVhbGx5IHdlIHNob3VsZCBlbGltaW5hdGUgdGhlIG1l c3MgYXJvdW5kIC5jaGVja19wbGFuZSgpCmFzIHdlbGwsIGJ1dCBmb3Igbm93IGxldCdzIGJlIGhh cHB5IHdpdGggc29tZSBjb2RlIHJlZHVjdGlvbi4KCnYyOiBSZW1lbWJlciB0byBzZXQgdXAgcGxh bmUtPmhhc19mYmMKICAgIE1ha2Ugc2tsX3BsYW5lX2hhc19jY3MoKSBzdGF0aWMKdjM6IFJlYmFz ZSBkdWUgdG8gTlYxMiwgcmVuYW1lIHNvbWUgdmFyaWFibGVzCgpTaWduZWQtb2ZmLWJ5OiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE5NSArKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDEy ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTkyICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlv bnMoKyksIDIzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK aW5kZXggYTU4MTExOGY1YzdiLi42ODQ1MTRjM2ZiNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKQEAgLTczLDU1ICs3Myw2IEBAIHN0YXRpYyBjb25zdCB1aW50NjRfdCBpOXh4 X2Zvcm1hdF9tb2RpZmllcnNbXSA9IHsKIAlEUk1fRk9STUFUX01PRF9JTlZBTElECiB9OwogCi1z dGF0aWMgY29uc3QgdWludDMyX3Qgc2tsX3ByaW1hcnlfZm9ybWF0c1tdID0gewotCURSTV9GT1JN QVRfQzgsCi0JRFJNX0ZPUk1BVF9SR0I1NjUsCi0JRFJNX0ZPUk1BVF9YUkdCODg4OCwKLQlEUk1f Rk9STUFUX1hCR1I4ODg4LAotCURSTV9GT1JNQVRfQVJHQjg4ODgsCi0JRFJNX0ZPUk1BVF9BQkdS ODg4OCwKLQlEUk1fRk9STUFUX1hSR0IyMTAxMDEwLAotCURSTV9GT1JNQVRfWEJHUjIxMDEwMTAs Ci0JRFJNX0ZPUk1BVF9ZVVlWLAotCURSTV9GT1JNQVRfWVZZVSwKLQlEUk1fRk9STUFUX1VZVlks Ci0JRFJNX0ZPUk1BVF9WWVVZLAotfTsKLQotc3RhdGljIGNvbnN0IHVpbnQzMl90IHNrbF9wcmlf cGxhbmFyX2Zvcm1hdHNbXSA9IHsKLQlEUk1fRk9STUFUX0M4LAotCURSTV9GT1JNQVRfUkdCNTY1 LAotCURSTV9GT1JNQVRfWFJHQjg4ODgsCi0JRFJNX0ZPUk1BVF9YQkdSODg4OCwKLQlEUk1fRk9S TUFUX0FSR0I4ODg4LAotCURSTV9GT1JNQVRfQUJHUjg4ODgsCi0JRFJNX0ZPUk1BVF9YUkdCMjEw MTAxMCwKLQlEUk1fRk9STUFUX1hCR1IyMTAxMDEwLAotCURSTV9GT1JNQVRfWVVZViwKLQlEUk1f Rk9STUFUX1lWWVUsCi0JRFJNX0ZPUk1BVF9VWVZZLAotCURSTV9GT1JNQVRfVllVWSwKLQlEUk1f Rk9STUFUX05WMTIsCi19OwotCi1zdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX2Zvcm1hdF9tb2Rp ZmllcnNfbm9jY3NbXSA9IHsKLQlJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQsCi0JSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQsCi0JSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCi0JRFJNX0ZPUk1BVF9N T0RfTElORUFSLAotCURSTV9GT1JNQVRfTU9EX0lOVkFMSUQKLX07Ci0KLXN0YXRpYyBjb25zdCB1 aW50NjRfdCBza2xfZm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKLQlJOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRURfQ0NTLAotCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUywKLQlJOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQsCi0JSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCi0JSTkxNV9GT1JNQVRf TU9EX1hfVElMRUQsCi0JRFJNX0ZPUk1BVF9NT0RfTElORUFSLAotCURSTV9GT1JNQVRfTU9EX0lO VkFMSUQKLX07Ci0KIC8qIEN1cnNvciBmb3JtYXRzICovCiBzdGF0aWMgY29uc3QgdWludDMyX3Qg aW50ZWxfY3Vyc29yX2Zvcm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX0FSR0I4ODg4LApAQCAtMTMx ODgsNDIgKzEzMTM5LDkgQEAgc3RhdGljIGJvb2wgaTk2NV9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90 IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIpCiAJfQogfQogCi1zdGF0aWMgYm9vbCBza2xfbW9k X3N1cHBvcnRlZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQotewotCXN3aXRj aCAoZm9ybWF0KSB7Ci0JY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgotCWNhc2UgRFJNX0ZPUk1B VF9YQkdSODg4ODoKLQljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Ci0JY2FzZSBEUk1fRk9STUFU X0FCR1I4ODg4OgotCQlpZiAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0ND UyB8fAotCQkgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTKQotCQkJ cmV0dXJuIHRydWU7Ci0JCS8qIGZhbGwgdGhyb3VnaCAqLwotCWNhc2UgRFJNX0ZPUk1BVF9SR0I1 NjU6Ci0JY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgotCWNhc2UgRFJNX0ZPUk1BVF9YQkdS MjEwMTAxMDoKLQljYXNlIERSTV9GT1JNQVRfWVVZVjoKLQljYXNlIERSTV9GT1JNQVRfWVZZVToK LQljYXNlIERSTV9GT1JNQVRfVVlWWToKLQljYXNlIERSTV9GT1JNQVRfVllVWToKLQljYXNlIERS TV9GT1JNQVRfTlYxMjoKLQkJaWYgKG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCkKLQkJCXJldHVybiB0cnVlOwotCQkvKiBmYWxsIHRocm91Z2ggKi8KLQljYXNlIERSTV9GT1JN QVRfQzg6Ci0JCWlmIChtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKLQkJICAg IG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEIHx8Ci0JCSAgICBtb2RpZmllciA9 PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCkKLQkJCXJldHVybiB0cnVlOwotCQkvKiBmYWxsIHRo cm91Z2ggKi8KLQlkZWZhdWx0OgotCQlyZXR1cm4gZmFsc2U7Ci0JfQotfQotCi1zdGF0aWMgYm9v bCBpbnRlbF9wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAotCQkJCQkJICAgICB1aW50MzJfdCBmb3JtYXQsCi0JCQkJCQkgICAgIHVpbnQ2 NF90IG1vZGlmaWVyKQorc3RhdGljIGJvb2wgaTl4eF9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRl ZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJICAgIHVpbnQzMl90IGZvcm1hdCwKKwkJ CQkJICAgIHVpbnQ2NF90IG1vZGlmaWVyKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7CiAKQEAgLTEzMjM0LDkgKzEzMTUyLDcgQEAg c3RhdGljIGJvb2wgaW50ZWxfcHJpbWFyeV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkgICAgbW9kaWZpZXIgIT0gRFJNX0ZPUk1BVF9NT0RfTElO RUFSKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQot CQlyZXR1cm4gc2tsX21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Ci0JZWxzZSBpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQp CiAJCXJldHVybiBpOTY1X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7CiAJZWxzZQog CQlyZXR1cm4gaTh4eF9tb2Rfc3VwcG9ydGVkKGZvcm1hdCwgbW9kaWZpZXIpOwpAQCAtMTMyNTIs NyArMTMxNjgsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3JfcGxhbmVfZm9ybWF0X21vZF9z dXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJcmV0dXJuIG1vZGlmaWVyID09IERS TV9GT1JNQVRfTU9EX0xJTkVBUiAmJiBmb3JtYXQgPT0gRFJNX0ZPUk1BVF9BUkdCODg4ODsKIH0K IAotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcGxhbmVfZnVuY3Mg PSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpOXh4X3BsYW5lX2Z1bmNz ID0gewogCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCiAJ LmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAogCS5kZXN0 cm95ID0gaW50ZWxfcGxhbmVfZGVzdHJveSwKQEAgLTEzMjYwLDcgKzEzMTc2LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcGxhbmVfZnVuY3MgPSB7CiAJLmF0 b21pY19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAogCS5h dG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAogCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCi0JLmZvcm1h dF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfcHJpbWFyeV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRl ZCwKKwkuZm9ybWF0X21vZF9zdXBwb3J0ZWQgPSBpOXh4X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9y dGVkLAogfTsKIAogc3RhdGljIGludApAQCAtMTM0MDUsMzkgKzEzMzIxLDYgQEAgc3RhdGljIGJv b2wgaTl4eF9wbGFuZV9oYXNfZmJjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJcmV0dXJuIGk5eHhfcGxhbmUgPT0gUExBTkVfQTsKIH0KIAotc3RhdGljIGJvb2wgc2tsX3Bs YW5lX2hhc19mYmMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICAg ZW51bSBwaXBlIHBpcGUsIGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpCi17Ci0JaWYgKCFIQVNfRkJD KGRldl9wcml2KSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIHBpcGUgPT0gUElQRV9BICYm IHBsYW5lX2lkID09IFBMQU5FX1BSSU1BUlk7Ci19Ci0KLWJvb2wgc2tsX3BsYW5lX2hhc19wbGFu YXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICBlbnVtIHBpcGUgcGlw ZSwgZW51bSBwbGFuZV9pZCBwbGFuZV9pZCkKLXsKLQlpZiAocGxhbmVfaWQgPT0gUExBTkVfUFJJ TUFSWSkgewotCQlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJp dikpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCWVsc2UgaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID09 IDkgJiYgcGlwZSA9PSBQSVBFX0MpICYmCi0JCQkgIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQot CQkJcmV0dXJuIGZhbHNlOwotCX0gZWxzZSBpZiAocGxhbmVfaWQgPj0gUExBTkVfU1BSSVRFMCkg ewotCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQotCQkJcmV0dXJuIGZhbHNlOwotCQlp ZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMCkg ewotCQkJaWYgKHBsYW5lX2lkICE9IFBMQU5FX1NQUklURTApCi0JCQkJcmV0dXJuIGZhbHNlOwot CQl9IGVsc2UgewotCQkJaWYgKHBsYW5lX2lkICE9IFBMQU5FX1NQUklURTAgfHwgcGlwZSA9PSBQ SVBFX0MgfHwKLQkJCSAgICBJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9w cml2KSkKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQl9Ci0JcmV0dXJuIHRydWU7Ci19Ci0KIHN0 YXRpYyBzdHJ1Y3QgaW50ZWxfcGxhbmUgKgogaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIHsKQEAgLTEz NDQ5LDE0ICsxMzMzMiwyNCBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCWNvbnN0IHVpbnQ2NF90 ICptb2RpZmllcnM7CiAJaW50IHJldDsKIAorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp IHsKKwkJcHJpbWFyeSA9IHNrbF91bml2ZXJzYWxfcGxhbmVfY3JlYXRlKGRldl9wcml2LCBwaXBl LAorCQkJCQkJICAgICBQTEFORV9QUklNQVJZKTsKKwkJaWYgKElTX0VSUihwcmltYXJ5KSkKKwkJ CXJldHVybiBwcmltYXJ5OworCisJCS8qIEZJWE1FIHVuaWZ5ICovCisJCXByaW1hcnktPmNoZWNr X3BsYW5lID0gaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZTsKKworCQlyZXR1cm4gcHJpbWFyeTsK Kwl9CisKIAlwcmltYXJ5ID0gaW50ZWxfcGxhbmVfYWxsb2MoKTsKIAlpZiAoSVNfRVJSKHByaW1h cnkpKQogCQlyZXR1cm4gcHJpbWFyeTsKIAogCXByaW1hcnktPmNhbl9zY2FsZSA9IGZhbHNlOwog CXByaW1hcnktPm1heF9kb3duc2NhbGUgPSAxOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCi0JCXByaW1hcnktPmNhbl9zY2FsZSA9IHRydWU7CiAJcHJpbWFyeS0+cGlwZSA9IHBpcGU7 CiAJLyoKIAkgKiBPbiBnZW4yLzMgb25seSBwbGFuZSBBIGNhbiBkbyBGQkMsIGJ1dCB0aGUgcGFu ZWwgZml0dGVyIGFuZCBMVkRTCkBAIC0xMzQ2OSwxNCArMTMzNjIsNyBAQCBpbnRlbF9wcmltYXJ5 X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlw ZSBwaXBlKQogCXByaW1hcnktPmlkID0gUExBTkVfUFJJTUFSWTsKIAlwcmltYXJ5LT5mcm9udGJ1 ZmZlcl9iaXQgPSBJTlRFTF9GUk9OVEJVRkZFUihwaXBlLCBwcmltYXJ5LT5pZCk7CiAKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQotCQlwcmltYXJ5LT5oYXNfZmJjID0gc2tsX3BsYW5l X2hhc19mYmMoZGV2X3ByaXYsCi0JCQkJCQkgICAgIHByaW1hcnktPnBpcGUsCi0JCQkJCQkgICAg IHByaW1hcnktPmlkKTsKLQllbHNlCi0JCXByaW1hcnktPmhhc19mYmMgPSBpOXh4X3BsYW5lX2hh c19mYmMoZGV2X3ByaXYsCi0JCQkJCQkgICAgICBwcmltYXJ5LT5pOXh4X3BsYW5lKTsKLQorCXBy aW1hcnktPmhhc19mYmMgPSBpOXh4X3BsYW5lX2hhc19mYmMoZGV2X3ByaXYsIHByaW1hcnktPmk5 eHhfcGxhbmUpOwogCWlmIChwcmltYXJ5LT5oYXNfZmJjKSB7CiAJCXN0cnVjdCBpbnRlbF9mYmMg KmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwogCkBAIC0xMzQ4NSwyNCArMTMzNzEsNyBAQCBpbnRlbF9w cmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcGlwZSBwaXBlKQogCiAJcHJpbWFyeS0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19wcmlt YXJ5X3BsYW5lOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewotCQlpZiAoc2ts X3BsYW5lX2hhc19wbGFuYXIoZGV2X3ByaXYsIHBpcGUsIFBMQU5FX1BSSU1BUlkpKSB7Ci0JCQlp bnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBza2xfcHJpX3BsYW5hcl9mb3JtYXRzOwotCQkJbnVtX2Zv cm1hdHMgPSBBUlJBWV9TSVpFKHNrbF9wcmlfcGxhbmFyX2Zvcm1hdHMpOwotCQl9IGVsc2Ugewot CQkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gc2tsX3ByaW1hcnlfZm9ybWF0czsKLQkJCW51bV9m b3JtYXRzID0gQVJSQVlfU0laRShza2xfcHJpbWFyeV9mb3JtYXRzKTsKLQkJfQotCi0JCWlmIChz a2xfcGxhbmVfaGFzX2NjcyhkZXZfcHJpdiwgcGlwZSwgUExBTkVfUFJJTUFSWSkpCi0JCQltb2Rp ZmllcnMgPSBza2xfZm9ybWF0X21vZGlmaWVyc19jY3M7Ci0JCWVsc2UKLQkJCW1vZGlmaWVycyA9 IHNrbF9mb3JtYXRfbW9kaWZpZXJzX25vY2NzOwotCi0JCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9 IHNrbF91cGRhdGVfcGxhbmU7Ci0JCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBza2xfZGlzYWJs ZV9wbGFuZTsKLQkJcHJpbWFyeS0+Z2V0X2h3X3N0YXRlID0gc2tsX3BsYW5lX2dldF9od19zdGF0 ZTsKLQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgeworCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDQpIHsKIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gaTk2NV9wcmlt YXJ5X2Zvcm1hdHM7CiAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShpOTY1X3ByaW1hcnlfZm9y bWF0cyk7CiAJCW1vZGlmaWVycyA9IGk5eHhfZm9ybWF0X21vZGlmaWVyczsKQEAgLTEzNTIyLDIz ICsxMzM5MSwxNiBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogCiAJcG9zc2libGVfY3J0Y3MgPSBC SVQocGlwZSk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQotCQlyZXQgPSBkcm1f dW5pdmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAotCQkJ CQkgICAgICAgcG9zc2libGVfY3J0Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKLQkJCQkJICAgICAg IGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCi0JCQkJCSAgICAgICBtb2RpZmll cnMsCi0JCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZLAotCQkJCQkgICAgICAgInBs YW5lIDElYyIsIHBpcGVfbmFtZShwaXBlKSk7Ci0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NSB8fCBJU19HNFgoZGV2X3ByaXYpKQogCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQo JmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAotCQkJCQkgICAgICAgcG9zc2libGVfY3J0 Y3MsICZpbnRlbF9wbGFuZV9mdW5jcywKKwkJCQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAmaTl4 eF9wbGFuZV9mdW5jcywKIAkJCQkJICAgICAgIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zv cm1hdHMsCiAJCQkJCSAgICAgICBtb2RpZmllcnMsCiAJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQ RV9QUklNQVJZLAogCQkJCQkgICAgICAgInByaW1hcnkgJWMiLCBwaXBlX25hbWUocGlwZSkpOwog CWVsc2UKIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAm cHJpbWFyeS0+YmFzZSwKLQkJCQkJICAgICAgIHBvc3NpYmxlX2NydGNzLCAmaW50ZWxfcGxhbmVf ZnVuY3MsCisJCQkJCSAgICAgICBwb3NzaWJsZV9jcnRjcywgJmk5eHhfcGxhbmVfZnVuY3MsCiAJ CQkJCSAgICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAogCQkJCQkgICAg ICAgbW9kaWZpZXJzLAogCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwKQEAgLTEz NTQ3LDE2ICsxMzQwOSw3IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCiAJaWYgKHJldCkKIAkJZ290 byBmYWlsOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKLQkJc3VwcG9ydGVk X3JvdGF0aW9ucyA9Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV85MCB8 Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMTgwIHwgRFJNX01PREVfUk9UQVRFXzI3MCB8Ci0JCQlEUk1f TU9ERV9SRUZMRUNUX1g7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsK LQkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RF X1JPVEFURV85MCB8Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMTgwIHwgRFJNX01PREVfUk9UQVRFXzI3 MDsKLQl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9C KSB7CisJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9CKSB7CiAJ CXN1cHBvcnRlZF9yb3RhdGlvbnMgPQogCQkJRFJNX01PREVfUk9UQVRFXzAgfCBEUk1fTU9ERV9S T1RBVEVfMTgwIHwKIAkJCURSTV9NT0RFX1JFRkxFQ1RfWDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKaW5kZXggYjkwMzU0MzJmMjg1Li5mNjc1NmQ0ZWQ0MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCkBAIC0yMDc5LDE4ICsyMDc5LDEyIEBAIGludCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9y a2V5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKTsKIHZvaWQgaW50 ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0 ZSk7Ci12b2lkIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKLQkJ ICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwotdm9pZCBza2xf ZGlzYWJsZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0Yyk7Ci1ib29sIHNrbF9wbGFuZV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSk7Ci1ib29sIHNrbF9wbGFuZV9oYXNfY2NzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJICAgICAgIGVudW0gcGlwZSBwaXBlLCBlbnVtIHBsYW5lX2lkIHBsYW5l X2lkKTsKIGJvb2wgaW50ZWxfZm9ybWF0X2lzX3l1dih1aW50MzJfdCBmb3JtYXQpOwotYm9vbCBz a2xfcGxhbmVfaGFzX3BsYW5hcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0J CQkgIGVudW0gcGlwZSBwaXBlLCBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkKTsKIHN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmVfYWxsb2Modm9pZCk7CiB2b2lkIGludGVsX3BsYW5lX2ZyZWUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSk7CitzdHJ1Y3QgaW50ZWxfcGxhbmUgKgorc2tsX3Vu aXZlcnNhbF9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CQkJICAgZW51bSBwaXBlIHBpcGUsIGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpOwogCiAKIC8qIGlu dGVsX3R2LmMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggMzZiODY0MTZm MTFlLi4wZDQ1NDUzMTY2YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC0y MzAsNyArMjMwLDcgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQogI2VuZGlmCiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lk CiBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJCSBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJIGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCkBAIC0zMDgsNyArMzA4LDcgQEAgc2tsX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwogfQogCi12b2lkCitzdGF0aWMg dm9pZAogc2tsX2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwgc3RydWN0 IGludGVsX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIHNrbF9kaXNh YmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsIHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJx ZmxhZ3MpOwogfQogCi1ib29sCitzdGF0aWMgYm9vbAogc2tsX3BsYW5lX2dldF9od19zdGF0ZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKQEAgLTEzNTIsOCArMTM1Miw0MSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9zcHJpdGVfcGxhbmVf ZnVuY3MgPSB7CiAJLmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfc3ByaXRlX3BsYW5lX2Zv cm1hdF9tb2Rfc3VwcG9ydGVkLAogfTsKIAotYm9vbCBza2xfcGxhbmVfaGFzX2NjcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBlbnVtIHBpcGUgcGlwZSwgZW51 bSBwbGFuZV9pZCBwbGFuZV9pZCkKK3N0YXRpYyBib29sIHNrbF9wbGFuZV9oYXNfZmJjKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgIGVudW0gcGlwZSBwaXBlLCBl bnVtIHBsYW5lX2lkIHBsYW5lX2lkKQoreworCWlmICghSEFTX0ZCQyhkZXZfcHJpdikpCisJCXJl dHVybiBmYWxzZTsKKworCXJldHVybiBwaXBlID09IFBJUEVfQSAmJiBwbGFuZV9pZCA9PSBQTEFO RV9QUklNQVJZOworfQorCitzdGF0aWMgYm9vbCBza2xfcGxhbmVfaGFzX3BsYW5hcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJIGVudW0gcGlwZSBwaXBlLCBlbnVtIHBs YW5lX2lkIHBsYW5lX2lkKQoreworCWlmIChwbGFuZV9pZCA9PSBQTEFORV9QUklNQVJZKSB7CisJ CWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkKKwkJCXJl dHVybiBmYWxzZTsKKwkJZWxzZSBpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPT0gOSAmJiBwaXBl ID09IFBJUEVfQykgJiYKKwkJCSAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCisJCQlyZXR1cm4g ZmFsc2U7CisJfSBlbHNlIGlmIChwbGFuZV9pZCA+PSBQTEFORV9TUFJJVEUwKSB7CisJCWlmIChw bGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCisJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChJU19HRU1J TklMQUtFKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID09IDEwKSB7CisJCQlpZiAo cGxhbmVfaWQgIT0gUExBTkVfU1BSSVRFMCkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0gZWxzZSB7 CisJCQlpZiAocGxhbmVfaWQgIT0gUExBTkVfU1BSSVRFMCB8fCBwaXBlID09IFBJUEVfQyB8fAor CQkJICAgIElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQorCQkJ CXJldHVybiBmYWxzZTsKKwkJfQorCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wg c2tsX3BsYW5lX2hhc19jY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ ICAgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpCiB7CiAJaWYgKHBs YW5lX2lkID09IFBMQU5FX0NVUlNPUikKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMTM5OCw2ICsxNDMx LDkwIEBAIHZvaWQgaW50ZWxfcGxhbmVfZnJlZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQog CWtmcmVlKHBsYW5lKTsKIH0KIAorc3RydWN0IGludGVsX3BsYW5lICoKK3NrbF91bml2ZXJzYWxf cGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgIGVu dW0gcGlwZSBwaXBlLCBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkKQoreworCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmU7CisJZW51bSBkcm1fcGxhbmVfdHlwZSBwbGFuZV90eXBlOworCXVuc2lnbmVk IGludCBzdXBwb3J0ZWRfcm90YXRpb25zOworCXVuc2lnbmVkIGludCBwb3NzaWJsZV9jcnRjczsK Kwljb25zdCB1NjQgKm1vZGlmaWVyczsKKwljb25zdCB1MzIgKmZvcm1hdHM7CisJaW50IG51bV9m b3JtYXRzOworCWludCByZXQ7CisKKwlwbGFuZSA9IGludGVsX3BsYW5lX2FsbG9jKCk7CisJaWYg KElTX0VSUihwbGFuZSkpCisJCXJldHVybiBwbGFuZTsKKworCXBsYW5lLT5waXBlID0gcGlwZTsK KwlwbGFuZS0+aWQgPSBwbGFuZV9pZDsKKwlwbGFuZS0+ZnJvbnRidWZmZXJfYml0ID0gSU5URUxf RlJPTlRCVUZGRVIocGlwZSwgcGxhbmVfaWQpOworCisJcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7 CisKKwlwbGFuZS0+aGFzX2ZiYyA9IHNrbF9wbGFuZV9oYXNfZmJjKGRldl9wcml2LCBwaXBlLCBw bGFuZV9pZCk7CisJaWYgKHBsYW5lLT5oYXNfZmJjKSB7CisJCXN0cnVjdCBpbnRlbF9mYmMgKmZi YyA9ICZkZXZfcHJpdi0+ZmJjOworCisJCWZiYy0+cG9zc2libGVfZnJhbWVidWZmZXJfYml0cyB8 PSBwbGFuZS0+ZnJvbnRidWZmZXJfYml0OworCX0KKworCXBsYW5lLT51cGRhdGVfcGxhbmUgPSBz a2xfdXBkYXRlX3BsYW5lOworCXBsYW5lLT5kaXNhYmxlX3BsYW5lID0gc2tsX2Rpc2FibGVfcGxh bmU7CisJcGxhbmUtPmdldF9od19zdGF0ZSA9IHNrbF9wbGFuZV9nZXRfaHdfc3RhdGU7CisKKwlp ZiAoc2tsX3BsYW5lX2hhc19wbGFuYXIoZGV2X3ByaXYsIHBpcGUsIHBsYW5lX2lkKSkgeworCQlm b3JtYXRzID0gc2tsX3BsYW5hcl9mb3JtYXRzOworCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUo c2tsX3BsYW5hcl9mb3JtYXRzKTsKKwl9IGVsc2UgeworCQlmb3JtYXRzID0gc2tsX3BsYW5lX2Zv cm1hdHM7CisJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0cyk7CisJ fQorCisJaWYgKHNrbF9wbGFuZV9oYXNfY2NzKGRldl9wcml2LCBwaXBlLCBwbGFuZV9pZCkpCisJ CW1vZGlmaWVycyA9IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX2NjczsKKwllbHNlCisJCW1v ZGlmaWVycyA9IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX25vY2NzOworCisJaWYgKHBsYW5l X2lkID09IFBMQU5FX1BSSU1BUlkpCisJCXBsYW5lX3R5cGUgPSBEUk1fUExBTkVfVFlQRV9QUklN QVJZOworCWVsc2UKKwkJcGxhbmVfdHlwZSA9IERSTV9QTEFORV9UWVBFX09WRVJMQVk7CisKKwlw b3NzaWJsZV9jcnRjcyA9IEJJVChwaXBlKTsKKworCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVf aW5pdCgmZGV2X3ByaXYtPmRybSwgJnBsYW5lLT5iYXNlLAorCQkJCSAgICAgICBwb3NzaWJsZV9j cnRjcywgJmludGVsX3Nwcml0ZV9wbGFuZV9mdW5jcywKKwkJCQkgICAgICAgZm9ybWF0cywgbnVt X2Zvcm1hdHMsIG1vZGlmaWVycywKKwkJCQkgICAgICAgcGxhbmVfdHlwZSwKKwkJCQkgICAgICAg InBsYW5lICVkJWMiLCBwbGFuZV9pZCArIDEsCisJCQkJICAgICAgIHBpcGVfbmFtZShwaXBlKSk7 CisJaWYgKHJldCkKKwkJZ290byBmYWlsOworCisJc3VwcG9ydGVkX3JvdGF0aW9ucyA9CisJCURS TV9NT0RFX1JPVEFURV8wIHwgRFJNX01PREVfUk9UQVRFXzkwIHwKKwkJRFJNX01PREVfUk9UQVRF XzE4MCB8IERSTV9NT0RFX1JPVEFURV8yNzA7CisKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMCkKKwkJc3VwcG9ydGVkX3JvdGF0aW9ucyB8PSBEUk1fTU9ERV9SRUZMRUNUX1g7CisKKwlk cm1fcGxhbmVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwKKwkJCQkJICAg RFJNX01PREVfUk9UQVRFXzAsCisJCQkJCSAgIHN1cHBvcnRlZF9yb3RhdGlvbnMpOworCisJZHJt X3BsYW5lX2hlbHBlcl9hZGQoJnBsYW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNz KTsKKworCXJldHVybiBwbGFuZTsKKworZmFpbDoKKwlpbnRlbF9wbGFuZV9mcmVlKHBsYW5lKTsK KworCXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKIHN0cnVjdCBpbnRlbF9wbGFuZSAqCiBpbnRl bF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCSAgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKQEAgLTE0MTAsMzEgKzE1MjcsMjMgQEAg aW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJaW50IG51bV9wbGFuZV9mb3JtYXRzOwogCWludCByZXQ7CiAKLQlpbnRlbF9wbGFuZSA9 IGludGVsX3BsYW5lX2FsbG9jKCk7Ci0JaWYgKElTX0VSUihpbnRlbF9wbGFuZSkpCi0JCXJldHVy biBpbnRlbF9wbGFuZTsKLQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKLQkJaW50 ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7CisJCWludGVsX3BsYW5lID0gc2tsX3VuaXZlcnNh bF9wbGFuZV9jcmVhdGUoZGV2X3ByaXYsIHBpcGUsCisJCQkJCQkJIFBMQU5FX1NQUklURTAgKyBw bGFuZSk7CisJCWlmIChJU19FUlIoaW50ZWxfcGxhbmUpKQorCQkJcmV0dXJuIGludGVsX3BsYW5l OwogCi0JCWludGVsX3BsYW5lLT51cGRhdGVfcGxhbmUgPSBza2xfdXBkYXRlX3BsYW5lOwotCQlp bnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZSA9IHNrbF9kaXNhYmxlX3BsYW5lOwotCQlpbnRlbF9w bGFuZS0+Z2V0X2h3X3N0YXRlID0gc2tsX3BsYW5lX2dldF9od19zdGF0ZTsKKwkJLyogRklYTUUg dW5pZnkgKi8KKwkJaW50ZWxfcGxhbmUtPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfc3ByaXRl X3BsYW5lOwogCi0JCWlmIChza2xfcGxhbmVfaGFzX3BsYW5hcihkZXZfcHJpdiwgcGlwZSwKLQkJ CQkJIFBMQU5FX1NQUklURTAgKyBwbGFuZSkpIHsKLQkJCXBsYW5lX2Zvcm1hdHMgPSBza2xfcGxh bmFyX2Zvcm1hdHM7Ci0JCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUoc2tsX3BsYW5h cl9mb3JtYXRzKTsKLQkJfSBlbHNlIHsKLQkJCXBsYW5lX2Zvcm1hdHMgPSBza2xfcGxhbmVfZm9y bWF0czsKLQkJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0 cyk7Ci0JCX0KKwkJcmV0dXJuIGludGVsX3BsYW5lOworCX0KIAotCQlpZiAoc2tsX3BsYW5lX2hh c19jY3MoZGV2X3ByaXYsIHBpcGUsIFBMQU5FX1NQUklURTAgKyBwbGFuZSkpCi0JCQltb2RpZmll cnMgPSBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3M7Ci0JCWVsc2UKLQkJCW1vZGlmaWVy cyA9IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX25vY2NzOwotCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKKwlpbnRlbF9w bGFuZSA9IGludGVsX3BsYW5lX2FsbG9jKCk7CisJaWYgKElTX0VSUihpbnRlbF9wbGFuZSkpCisJ CXJldHVybiBpbnRlbF9wbGFuZTsKKworCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkgewogCQlpbnRlbF9wbGFuZS0+Y2FuX3NjYWxlID0gZmFs c2U7CiAJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMTsKIApAQCAtMTQ3OSwxNiArMTU4 OCw3IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCQl9CiAJfQogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsK LQkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMCB8IERSTV9NT0RF X1JPVEFURV85MCB8Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMTgwIHwgRFJNX01PREVfUk9UQVRFXzI3 MCB8Ci0JCQlEUk1fTU9ERV9SRUZMRUNUX1g7Ci0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpIHsKLQkJc3VwcG9ydGVkX3JvdGF0aW9ucyA9Ci0JCQlEUk1fTU9ERV9ST1RBVEVf MCB8IERSTV9NT0RFX1JPVEFURV85MCB8Ci0JCQlEUk1fTU9ERV9ST1RBVEVfMTgwIHwgRFJNX01P REVfUk9UQVRFXzI3MDsKLQl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBp cGUgPT0gUElQRV9CKSB7CisJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBpcGUgPT0g UElQRV9CKSB7CiAJCXN1cHBvcnRlZF9yb3RhdGlvbnMgPQogCQkJRFJNX01PREVfUk9UQVRFXzAg fCBEUk1fTU9ERV9ST1RBVEVfMTgwIHwKIAkJCURSTV9NT0RFX1JFRkxFQ1RfWDsKQEAgLTE1MDQs MjAgKzE2MDQsMTIgQEAgaW50ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlwb3NzaWJsZV9jcnRjcyA9IEJJVChwaXBlKTsKIAotCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCi0JCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVf aW5pdCgmZGV2X3ByaXYtPmRybSwgJmludGVsX3BsYW5lLT5iYXNlLAotCQkJCQkgICAgICAgcG9z c2libGVfY3J0Y3MsICZpbnRlbF9zcHJpdGVfcGxhbmVfZnVuY3MsCi0JCQkJCSAgICAgICBwbGFu ZV9mb3JtYXRzLCBudW1fcGxhbmVfZm9ybWF0cywKLQkJCQkJICAgICAgIG1vZGlmaWVycywKLQkJ CQkJICAgICAgIERSTV9QTEFORV9UWVBFX09WRVJMQVksCi0JCQkJCSAgICAgICAicGxhbmUgJWQl YyIsIHBsYW5lICsgMiwgcGlwZV9uYW1lKHBpcGUpKTsKLQllbHNlCi0JCXJldCA9IGRybV91bml2 ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJmludGVsX3BsYW5lLT5iYXNlLAotCQkJ CQkgICAgICAgcG9zc2libGVfY3J0Y3MsICZpbnRlbF9zcHJpdGVfcGxhbmVfZnVuY3MsCi0JCQkJ CSAgICAgICBwbGFuZV9mb3JtYXRzLCBudW1fcGxhbmVfZm9ybWF0cywKLQkJCQkJICAgICAgIG1v ZGlmaWVycywKLQkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX09WRVJMQVksCi0JCQkJCSAgICAg ICAic3ByaXRlICVjIiwgc3ByaXRlX25hbWUocGlwZSwgcGxhbmUpKTsKKwlyZXQgPSBkcm1fdW5p dmVyc2FsX3BsYW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKKwkJ CQkgICAgICAgcG9zc2libGVfY3J0Y3MsICZpbnRlbF9zcHJpdGVfcGxhbmVfZnVuY3MsCisJCQkJ ICAgICAgIHBsYW5lX2Zvcm1hdHMsIG51bV9wbGFuZV9mb3JtYXRzLAorCQkJCSAgICAgICBtb2Rp ZmllcnMsCisJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX09WRVJMQVksCisJCQkJICAgICAgICJz cHJpdGUgJWMiLCBzcHJpdGVfbmFtZShwaXBlLCBwbGFuZSkpOwogCWlmIChyZXQpCiAJCWdvdG8g ZmFpbDsKIAotLSAKMi4xNi4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK