From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [PATCH v2 05/10] drm/i915/gen9: Get rid of redundant watermark values Date: Fri, 7 Oct 2016 20:11:29 -0400 Message-ID: <1475885497-6094-6-git-send-email-cpaul@redhat.com> References: <1475885497-6094-1-git-send-email-cpaul@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1475885497-6094-1-git-send-email-cpaul@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter , Lyude List-Id: dri-devel@lists.freedesktop.org Tm93IHRoYXQgd2UndmUgbWFrZSBza2xfd21fbGV2ZWxzIG1ha2UgYSBsaXR0bGUgbW9yZSBzZW5z ZSwgd2UgY2FuCnJlbW92ZSBhbGwgb2YgdGhlIHJlZHVuZGFudCB3bSBpbmZvcm1hdGlvbi4gVXAg dW50aWwgbm93IHdlJ2QgYmVlbgpzdG9yaW5nIHR3byBjb3BpZXMgb2YgYWxsIG9mIHRoZSBza2wg d2F0ZXJtYXJrczogb25lIGJlaW5nIHRoZQpza2xfcGlwZV93bSBzdHJ1Y3RzLCB0aGUgb3RoZXIg YmVpbmcgdGhlIGdsb2JhbCB3bSBzdHJ1Y3QgaW4KZHJtX2k5MTVfcHJpdmF0ZSBjb250YWluaW5n IHRoZSByYXcgcmVnaXN0ZXIgdmFsdWVzLiBUaGlzIGlzIGNvbmZ1c2luZwphbmQgcHJvYmxlbWF0 aWMsIHNpbmNlIGl0IG1lYW5zIHdlJ3JlIHByb25lIHRvIGFjY2lkZW50YWxseSBsZXR0aW5nIHRo ZQp0d28gY29waWVzIGdvIG91dCBvZiBzeW5jLiBTbywgZ2V0IHJpZCBvZiBhbGwgb2YgdGhlIGZ1 bmN0aW9ucwpyZXNwb25zaWJsZSBmb3IgY29tcHV0aW5nIHRoZSByZWdpc3RlciB2YWx1ZXMgYW5k IGp1c3QgdXNlIGEgc2luZ2xlCmhlbHBlciwgc2tsX3dyaXRlX3dtX2xldmVsKCksIHRvIGNvbnZl cnQgYW5kIHdyaXRlIHRoZSBuZXcgd2F0ZXJtYXJrcyBvbgp0aGUgZmx5LgoKQ2hhbmdlcyBzaW5j ZSB2MToKLSBGaXh1cCBza2xfd3JpdGVfd21fbGV2ZWwoKQotIEZpeHVwIHNrbF93bV9sZXZlbF9m cm9tX3JlZ192YWwoKQotIERvbid0IGZvcmdldCB0byBjb3B5ICphY3RpdmUgdG8gaW50ZWxfY3J0 Yy0+d20uYWN0aXZlLnNrbAoKU2lnbmVkLW9mZi1ieTogTHl1ZGUgPGNwYXVsQHJlZGhhdC5jb20+ ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMiAtCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMTQgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg ICAgICB8IDIwNCArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICA4ICstCiA1IGZpbGVzIGNoYW5nZWQsIDkw IGluc2VydGlvbnMoKyksIDE0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApp bmRleCAwMjg3YzkzLi43NjU4M2IyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE2NDQs OCArMTY0NCw2IEBAIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gewogc3RydWN0IHNrbF93bV92 YWx1ZXMgewogCXVuc2lnbmVkIGRpcnR5X3BpcGVzOwogCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRp b24gZGRiOwotCXVpbnQzMl90IHBsYW5lW0k5MTVfTUFYX1BJUEVTXVtJOTE1X01BWF9QTEFORVNd WzhdOwotCXVpbnQzMl90IHBsYW5lX3RyYW5zW0k5MTVfTUFYX1BJUEVTXVtJOTE1X01BWF9QTEFO RVNdOwogfTsKIAogc3RydWN0IHNrbF93bV9sZXZlbCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKaW5kZXggYTcxZDA1YS4uMzk0MDBhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwpAQCAtMzM3OCw2ICszMzc4LDggQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRh dGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsK IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCWNv bnN0IHN0cnVjdCBza2xfd21fdmFsdWVzICp3bSA9ICZkZXZfcHJpdi0+d20uc2tsX3Jlc3VsdHM7 CisJY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqcF93bSA9CisJCSZjcnRjX3N0YXRlLT53bS5z a2wub3B0aW1hbC5wbGFuZXNbMF07CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCXUz MiBwbGFuZV9jdGw7CiAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb247CkBAIC0zNDE0LDcgKzM0MTYsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWludGVsX2NydGMtPmFk anVzdGVkX3kgPSBzcmNfeTsKIAogCWlmICh3bS0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNr KCZpbnRlbF9jcnRjLT5iYXNlKSkKLQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsIHdt LCAwKTsKKwkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsIHBfd20sICZ3bS0+ZGRiLCAw KTsKIAogCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwpOwogCUk5MTVf V1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIDApLCAoc3JjX3kgPDwgMTYpIHwgc3JjX3gpOwpAQCAt MzQ0OCw2ICszNDUwLDggQEAgc3RhdGljIHZvaWQgc2t5bGFrZV9kaXNhYmxlX3ByaW1hcnlfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpOworCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKnBfd20gPSAmY3N0 YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbMF07CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwogCiAJLyoKQEAgLTM0NTUsNyArMzQ1OSw4IEBAIHN0YXRpYyB2b2lkIHNreWxha2VfZGlz YWJsZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAJICogcGxhbmUn cyB2aXNpYmxpdHkgaXNuJ3QgYWN0dWFsbHkgY2hhbmdpbmcgbmVpdGhlciBpcyBpdHMgd2F0ZXJt YXJrcy4KIAkgKi8KIAlpZiAoIWNydGMtPnByaW1hcnktPnN0YXRlLT52aXNpYmxlKQotCQlza2xf d3JpdGVfcGxhbmVfd20oaW50ZWxfY3J0YywgJmRldl9wcml2LT53bS5za2xfcmVzdWx0cywgMCk7 CisJCXNrbF93cml0ZV9wbGFuZV93bShpbnRlbF9jcnRjLCBwX3dtLAorCQkJCSAgICZkZXZfcHJp di0+d20uc2tsX3Jlc3VsdHMuZGRiLCAwKTsKIAogCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUs IDApLCAwKTsKIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIDApOwpAQCAtMTA4MTks MTIgKzEwODI0LDE1IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIHUzMiBiYXNlLAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwog CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7CiAJY29uc3Qgc3RydWN0IHNrbF93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LT53 bS5za2xfcmVzdWx0czsKKwljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpwX3dtID0KKwkJJmNz dGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW1BMQU5FX0NVUlNPUl07CiAJaW50IHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwogCXVpbnQzMl90IGNudGwgPSAwOwogCiAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSAmJiB3bS0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNrKGNydGMpKQot CQlza2xfd3JpdGVfY3Vyc29yX3dtKGludGVsX2NydGMsIHdtKTsKKwkJc2tsX3dyaXRlX2N1cnNv cl93bShpbnRlbF9jcnRjLCBwX3dtLCAmd20tPmRkYik7CiAKIAlpZiAocGxhbmVfc3RhdGUgJiYg cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewogCQljbnRsID0gTUNVUlNPUl9HQU1NQV9FTkFC TEU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGQ2ODRmNGYuLjk1OGRjNzIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xNzY1LDkgKzE3NjUsMTEgQEAgYm9vbCBza2xfZGRi X2FsbG9jYXRpb25fZXF1YWxzKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm9sZCwK IGJvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKIAkJCQkgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpOwogdm9pZCBza2xf d3JpdGVfY3Vyc29yX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAotCQkJIGNvbnN0 IHN0cnVjdCBza2xfd21fdmFsdWVzICp3bSk7CisJCQkgY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93 bSAqd20sCisJCQkgY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiKTsKIHZvaWQg c2tsX3dyaXRlX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAotCQkJY29u c3Qgc3RydWN0IHNrbF93bV92YWx1ZXMgKndtLAorCQkJY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93 bSAqd20sCisJCQljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCiAJCQlpbnQg cGxhbmUpOwogdWludDMyX3QgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwogYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDVkYmFmMTIuLjVj YjUzN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzAwMCw2ICszMDAwLDggQEAgYm9v bCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0 ZShzdGF0ZSk7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGU7CisJc3RydWN0IHNrbF9wbGFuZV93bSAqd207CiAJZW51bSBwaXBlIHBpcGU7 CiAJaW50IGxldmVsLCBwbGFuZTsKIApAQCAtMzAyMCwxOCArMzAyMiwyMSBAQCBib29sIGludGVs X2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJLyogU2lu Y2Ugd2UncmUgbm93IGd1YXJhbnRlZWQgdG8gb25seSBoYXZlIG9uZSBhY3RpdmUgQ1JUQy4uLiAq LwogCXBpcGUgPSBmZnMoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgLSAxOwogCWNydGMgPSBk ZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV07CisJY3N0YXRlID0gaW50ZWxfYXRv bWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCB0b19pbnRlbF9jcnRjKGNydGMpKTsKIAogCWlmIChj cnRjLT5zdGF0ZS0+bW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQogCQlyZXR1 cm4gZmFsc2U7CiAKIAlmb3JfZWFjaF9wbGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpIHsKKwkJ d20gPSAmY3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVdOworCiAJCS8qIFNraXAg dGhpcyBwbGFuZSBpZiBpdCdzIG5vdCBlbmFibGVkICovCi0JCWlmIChpbnRlbF9zdGF0ZS0+d21f cmVzdWx0cy5wbGFuZVtwaXBlXVtwbGFuZV1bMF0gPT0gMCkKKwkJaWYgKCF3bS0+d21bMF0ucGxh bmVfZW4pCiAJCQljb250aW51ZTsKIAogCQkvKiBGaW5kIHRoZSBoaWdoZXN0IGVuYWJsZWQgd20g bGV2ZWwgZm9yIHRoaXMgcGxhbmUgKi8KLQkJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwo ZGV2KTsKLQkJICAgICBpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5wbGFuZVtwaXBlXVtwbGFuZV1b bGV2ZWxdID09IDA7IC0tbGV2ZWwpCisJCWZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRl dik7ICF3bS0+d21bbGV2ZWxdLnBsYW5lX2VuOworCQkgICAgIC0tbGV2ZWwpCiAJCSAgICAgeyB9 CiAKIAkJLyoKQEAgLTM3NzksNjcgKzM3ODQsNiBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBl X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK LQkJCQkgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBfd20sCi0JCQkJICAgc3RydWN0IHNrbF93bV92 YWx1ZXMgKnIsCi0JCQkJICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCi17Ci0JaW50 IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldik7Ci0Jc3RydWN0IHNrbF9w bGFuZV93bSAqcGxhbmVfd207Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwot CXVpbnQzMl90IHRlbXA7Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfbnVtX3Bs YW5lcyhpbnRlbF9jcnRjKTsgaSsrKSB7Ci0JCXBsYW5lX3dtID0gJnBfd20tPnBsYW5lc1tpXTsK LQotCQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Ci0JCQl0 ZW1wID0gMDsKLQotCQkJdGVtcCB8PSBwbGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sIDw8 Ci0JCQkJCVBMQU5FX1dNX0xJTkVTX1NISUZUOwotCQkJdGVtcCB8PSBwbGFuZV93bS0+d21bbGV2 ZWxdLnBsYW5lX3Jlc19iOwotCQkJaWYgKHBsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfZW4pCi0J CQkJdGVtcCB8PSBQTEFORV9XTV9FTjsKLQotCQkJci0+cGxhbmVbcGlwZV1baV1bbGV2ZWxdID0g dGVtcDsKLQkJfQotCi0JfQotCi0JZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsg bGV2ZWwrKykgewotCQlwbGFuZV93bSA9ICZwX3dtLT5wbGFuZXNbUExBTkVfQ1VSU09SXTsKLQkJ dGVtcCA9IDA7Ci0JCXRlbXAgfD0gcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNfbCA8PCBQ TEFORV9XTV9MSU5FU19TSElGVDsKLQkJdGVtcCB8PSBwbGFuZV93bS0+d21bbGV2ZWxdLnBsYW5l X3Jlc19iOwotCQlpZiAocGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9lbikKLQkJCXRlbXAgfD0g UExBTkVfV01fRU47Ci0KLQkJci0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXVtsZXZlbF0gPSB0 ZW1wOwotCX0KLQotCS8qIHRyYW5zaXRpb24gV01zICovCi0JZm9yIChpID0gMDsgaSA8IGludGVs X251bV9wbGFuZXMoaW50ZWxfY3J0Yyk7IGkrKykgewotCQlwbGFuZV93bSA9ICZwX3dtLT5wbGFu ZXNbaV07Ci0JCXRlbXAgPSAwOwotCQl0ZW1wIHw9IHBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9y ZXNfbCA8PCBQTEFORV9XTV9MSU5FU19TSElGVDsKLQkJdGVtcCB8PSBwbGFuZV93bS0+dHJhbnNf d20ucGxhbmVfcmVzX2I7Ci0JCWlmIChwbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4pCi0JCQl0 ZW1wIHw9IFBMQU5FX1dNX0VOOwotCi0JCXItPnBsYW5lX3RyYW5zW3BpcGVdW2ldID0gdGVtcDsK LQl9Ci0KLQlwbGFuZV93bSA9ICZwX3dtLT5wbGFuZXNbUExBTkVfQ1VSU09SXTsKLQl0ZW1wID0g MDsKLQl0ZW1wIHw9IHBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfbCA8PCBQTEFORV9XTV9M SU5FU19TSElGVDsKLQl0ZW1wIHw9IHBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYjsKLQlp ZiAocGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX2VuKQotCQl0ZW1wIHw9IFBMQU5FX1dNX0VOOwot Ci0Jci0+cGxhbmVfdHJhbnNbcGlwZV1bUExBTkVfQ1VSU09SXSA9IHRlbXA7Ci19Ci0KIHN0YXRp YyB2b2lkIHNrbF9kZGJfZW50cnlfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkJCWk5MTVfcmVnX3QgcmVnLAogCQkJCWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5 ICplbnRyeSkKQEAgLTM4NTAsOCArMzc5NCwyNCBAQCBzdGF0aWMgdm9pZCBza2xfZGRiX2VudHJ5 X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJSTkxNV9XUklURShy ZWcsIDApOwogfQogCitzdGF0aWMgdm9pZCBza2xfd3JpdGVfd21fbGV2ZWwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgIGk5MTVfcmVnX3QgcmVnLAorCQkJICAg ICAgIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKmxldmVsKQoreworCXVpbnQzMl90IHZhbCA9 IDA7CisKKwlpZiAobGV2ZWwtPnBsYW5lX2VuKSB7CisJCXZhbCB8PSBQTEFORV9XTV9FTjsKKwkJ dmFsIHw9IGxldmVsLT5wbGFuZV9yZXNfYjsKKwkJdmFsIHw9IGxldmVsLT5wbGFuZV9yZXNfbCA8 PCBQTEFORV9XTV9MSU5FU19TSElGVDsKKwl9CisKKwlJOTE1X1dSSVRFKHJlZywgdmFsKTsKK30K Kwogdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMs Ci0JCQljb25zdCBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd20sCisJCQljb25zdCBzdHJ1Y3Qgc2ts X3BsYW5lX3dtICp3bSwKKwkJCWNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwK IAkJCWludCBwbGFuZSkKIHsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmaW50ZWxfY3J0Yy0+ YmFzZTsKQEAgLTM4NjEsMTkgKzM4MjEsMjEgQEAgdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOwogCiAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykg ewotCQlJOTE1X1dSSVRFKFBMQU5FX1dNKHBpcGUsIHBsYW5lLCBsZXZlbCksCi0JCQkgICB3bS0+ cGxhbmVbcGlwZV1bcGxhbmVdW2xldmVsXSk7CisJCXNrbF93cml0ZV93bV9sZXZlbChkZXZfcHJp diwgUExBTkVfV00ocGlwZSwgcGxhbmUsIGxldmVsKSwKKwkJCQkgICAmd20tPndtW2xldmVsXSk7 CiAJfQotCUk5MTVfV1JJVEUoUExBTkVfV01fVFJBTlMocGlwZSwgcGxhbmUpLCB3bS0+cGxhbmVf dHJhbnNbcGlwZV1bcGxhbmVdKTsKKwlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIFBMQU5F X1dNX1RSQU5TKHBpcGUsIHBsYW5lKSwKKwkJCSAgICZ3bS0+dHJhbnNfd20pOwogCiAJc2tsX2Rk Yl9lbnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfQlVGX0NGRyhwaXBlLCBwbGFuZSksCi0JCQkg ICAgJndtLT5kZGIucGxhbmVbcGlwZV1bcGxhbmVdKTsKKwkJCSAgICAmZGRiLT5wbGFuZVtwaXBl XVtwbGFuZV0pOwogCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX05WMTJfQlVG X0NGRyhwaXBlLCBwbGFuZSksCi0JCQkgICAgJndtLT5kZGIueV9wbGFuZVtwaXBlXVtwbGFuZV0p OworCQkJICAgICZkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVdKTsKIH0KIAogdm9pZCBza2xfd3Jp dGVfY3Vyc29yX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAotCQkJIGNvbnN0IHN0 cnVjdCBza2xfd21fdmFsdWVzICp3bSkKKwkJCSBjb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3 bSwKKwkJCSBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIpCiB7CiAJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMtPmJhc2U7CiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKQEAgLTM4ODIsMTMgKzM4NDQsMTMgQEAgdm9pZCBza2xfd3JpdGVf Y3Vyc29yX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCWVudW0gcGlwZSBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAogCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKLQkJSTkxNV9XUklURShDVVJfV00ocGlwZSwgbGV2ZWwpLAotCQkJICAg d20tPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl1bbGV2ZWxdKTsKKwkJc2tsX3dyaXRlX3dtX2xl dmVsKGRldl9wcml2LCBDVVJfV00ocGlwZSwgbGV2ZWwpLAorCQkJCSAgICZ3bS0+d21bbGV2ZWxd KTsKIAl9Ci0JSTkxNV9XUklURShDVVJfV01fVFJBTlMocGlwZSksIHdtLT5wbGFuZV90cmFuc1tw aXBlXVtQTEFORV9DVVJTT1JdKTsKKwlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIENVUl9X TV9UUkFOUyhwaXBlKSwgJndtLT50cmFuc193bSk7CiAKIAlza2xfZGRiX2VudHJ5X3dyaXRlKGRl dl9wcml2LCBDVVJfQlVGX0NGRyhwaXBlKSwKLQkJCSAgICAmd20tPmRkYi5wbGFuZVtwaXBlXVtQ TEFORV9DVVJTT1JdKTsKKwkJCSAgICAmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdKTsK IH0KIAogc3RhdGljIGlubGluZSBib29sIHNrbF9kZGJfZW50cmllc19vdmVybGFwKGNvbnN0IHN0 cnVjdCBza2xfZGRiX2VudHJ5ICphLApAQCAtNDA3MiwxMSArNDAzNCw2IEBAIHNrbF9jb3B5X3dt X2Zvcl9waXBlKHN0cnVjdCBza2xfd21fdmFsdWVzICpkc3QsCiAJCSAgICAgc3RydWN0IHNrbF93 bV92YWx1ZXMgKnNyYywKIAkJICAgICBlbnVtIHBpcGUgcGlwZSkKIHsKLQltZW1jcHkoZHN0LT5w bGFuZVtwaXBlXSwgc3JjLT5wbGFuZVtwaXBlXSwKLQkgICAgICAgc2l6ZW9mKGRzdC0+cGxhbmVb cGlwZV0pKTsKLQltZW1jcHkoZHN0LT5wbGFuZV90cmFuc1twaXBlXSwgc3JjLT5wbGFuZV90cmFu c1twaXBlXSwKLQkgICAgICAgc2l6ZW9mKGRzdC0+cGxhbmVfdHJhbnNbcGlwZV0pKTsKLQogCW1l bWNweShkc3QtPmRkYi55X3BsYW5lW3BpcGVdLCBzcmMtPmRkYi55X3BsYW5lW3BpcGVdLAogCSAg ICAgICBzaXplb2YoZHN0LT5kZGIueV9wbGFuZVtwaXBlXSkpOwogCW1lbWNweShkc3QtPmRkYi5w bGFuZVtwaXBlXSwgc3JjLT5kZGIucGxhbmVbcGlwZV0sCkBAIC00MTI1LDcgKzQwODIsNiBAQCBz a2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJICogbm8gc3Vp dGFibGUgd2F0ZXJtYXJrIHZhbHVlcyBjYW4gYmUgZm91bmQuCiAJICovCiAJZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7Ci0JCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAkJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmludGVsX2NzdGF0ZSA9CiAJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNzdGF0ZSk7CiAK QEAgLTQxNDMsNyArNDA5OSw2IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKIAkJCWNvbnRpbnVlOwogCiAJCWludGVsX2NzdGF0ZS0+dXBkYXRlX3dtX3By ZSA9IHRydWU7Ci0JCXNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoY3J0Yy0+ZGV2LCBwaXBlX3dtLCBy ZXN1bHRzLCBpbnRlbF9jcnRjKTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTQxNzcsOSArNDEzMiwx MSBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJ aW50IHBsYW5lOwogCiAJCWZvciAocGxhbmUgPSAwOyBwbGFuZSA8IGludGVsX251bV9wbGFuZXMo aW50ZWxfY3J0Yyk7IHBsYW5lKyspCi0JCQlza2xfd3JpdGVfcGxhbmVfd20oaW50ZWxfY3J0Yywg cmVzdWx0cywgcGxhbmUpOworCQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsICZwaXBl X3dtLT5wbGFuZXNbcGxhbmVdLAorCQkJCQkgICAmcmVzdWx0cy0+ZGRiLCBwbGFuZSk7CiAKLQkJ c2tsX3dyaXRlX2N1cnNvcl93bShpbnRlbF9jcnRjLCByZXN1bHRzKTsKKwkJc2tsX3dyaXRlX2N1 cnNvcl93bShpbnRlbF9jcnRjLCAmcGlwZV93bS0+cGxhbmVzW1BMQU5FX0NVUlNPUl0sCisJCQkJ ICAgICZyZXN1bHRzLT5kZGIpOwogCX0KIAogCXNrbF9jb3B5X3dtX2Zvcl9waXBlKGh3X3ZhbHMs IHJlc3VsdHMsIHBpcGUpOwpAQCAtNDI2NCwyNiArNDIyMSwxMyBAQCBzdGF0aWMgdm9pZCBpbGtf b3B0aW1pemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQogCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKIH0KIAotc3RhdGljIHZvaWQgc2ts X3BpcGVfd21fYWN0aXZlX3N0YXRlKHVpbnQzMl90IHZhbCwKLQkJCQkgICAgIHN0cnVjdCBza2xf cGlwZV93bSAqYWN0aXZlLAotCQkJCSAgICAgYm9vbCBpc190cmFuc3dtLAotCQkJCSAgICAgaW50 IGksCi0JCQkJICAgICBpbnQgbGV2ZWwpCitzdGF0aWMgaW5saW5lIHZvaWQgc2tsX3dtX2xldmVs X2Zyb21fcmVnX3ZhbCh1aW50MzJfdCB2YWwsCisJCQkJCSAgICAgc3RydWN0IHNrbF93bV9sZXZl bCAqbGV2ZWwpCiB7Ci0Jc3RydWN0IHNrbF9wbGFuZV93bSAqcGxhbmVfd20gPSAmYWN0aXZlLT5w bGFuZXNbaV07Ci0JYm9vbCBpc19lbmFibGVkID0gKHZhbCAmIFBMQU5FX1dNX0VOKSAhPSAwOwot Ci0JaWYgKCFpc190cmFuc3dtKSB7Ci0JCXBsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfZW4gPSBp c19lbmFibGVkOwotCQlwbGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19iID0gdmFsICYgUExB TkVfV01fQkxPQ0tTX01BU0s7Ci0JCXBsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2wgPQot CQkJKHZhbCA+PiBQTEFORV9XTV9MSU5FU19TSElGVCkgJiBQTEFORV9XTV9MSU5FU19NQVNLOwot CX0gZWxzZSB7Ci0JCXBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9lbiA9IGlzX2VuYWJsZWQ7Ci0J CXBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYiA9IHZhbCAmIFBMQU5FX1dNX0JMT0NLU19N QVNLOwotCQlwbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2wgPQotCQkJKHZhbCA+PiBQTEFO RV9XTV9MSU5FU19TSElGVCkgJiBQTEFORV9XTV9MSU5FU19NQVNLOwotCX0KKwlsZXZlbC0+cGxh bmVfZW4gPSB2YWwgJiBQTEFORV9XTV9FTjsKKwlsZXZlbC0+cGxhbmVfcmVzX2IgPSB2YWwgJiBQ TEFORV9XTV9CTE9DS1NfTUFTSzsKKwlsZXZlbC0+cGxhbmVfcmVzX2wgPSAodmFsID4+IFBMQU5F X1dNX0xJTkVTX1NISUZUKSAmCisJCVBMQU5FX1dNX0xJTkVTX01BU0s7CiB9CiAKIHN0YXRpYyB2 b2lkIHNrbF9waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCkBAIC00 MjkzLDQ5ICs0MjM3LDM5IEBAIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IHNrbF93bV92YWx1ZXMgKmh3ID0gJmRldl9w cml2LT53bS5za2xfaHc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lOwogCXN0cnVjdCBza2xfcGlwZV93bSAqYWN0aXZlID0gJmNzdGF0ZS0+d20uc2tsLm9wdGlt YWw7CisJc3RydWN0IHNrbF9wbGFuZV93bSAqd207CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9j cnRjLT5waXBlOwotCWludCBsZXZlbCwgaSwgbWF4X2xldmVsOwotCXVpbnQzMl90IHRlbXA7CisJ aW50IGxldmVsLCBpZCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXYpOworCXVpbnQz Ml90IHZhbDsKIAotCW1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKKwlmb3JfZWFj aF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKKwkJ aWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOworCQl3bSA9ICZjc3RhdGUtPndtLnNr bC5vcHRpbWFsLnBsYW5lc1tpZF07CiAKLQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xl dmVsOyBsZXZlbCsrKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVs X2NydGMpOyBpKyspCi0JCQlody0+cGxhbmVbcGlwZV1baV1bbGV2ZWxdID0KLQkJCQkJSTkxNV9S RUFEKFBMQU5FX1dNKHBpcGUsIGksIGxldmVsKSk7Ci0JCWh3LT5wbGFuZVtwaXBlXVtQTEFORV9D VVJTT1JdW2xldmVsXSA9IEk5MTVfUkVBRChDVVJfV00ocGlwZSwgbGV2ZWwpKTsKLQl9CisJCWZv ciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKKwkJCWlmIChpZCAh PSBQTEFORV9DVVJTT1IpCisJCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBpcGUsIGlkLCBs ZXZlbCkpOworCQkJZWxzZQorCQkJCXZhbCA9IEk5MTVfUkVBRChDVVJfV00ocGlwZSwgbGV2ZWwp KTsKIAotCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBpKysp Ci0JCWh3LT5wbGFuZV90cmFuc1twaXBlXVtpXSA9IEk5MTVfUkVBRChQTEFORV9XTV9UUkFOUyhw aXBlLCBpKSk7Ci0JaHctPnBsYW5lX3RyYW5zW3BpcGVdW1BMQU5FX0NVUlNPUl0gPSBJOTE1X1JF QUQoQ1VSX1dNX1RSQU5TKHBpcGUpKTsKKwkJCXNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodmFs LCAmd20tPndtW2xldmVsXSk7CisJCX0KKworCQlpZiAoaWQgIT0gUExBTkVfQ1VSU09SKQorCQkJ dmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNX1RSQU5TKHBpcGUsIGlkKSk7CisJCWVsc2UKKwkJCXZh bCA9IEk5MTVfUkVBRChDVVJfV01fVFJBTlMocGlwZSkpOworCisJCXNrbF93bV9sZXZlbF9mcm9t X3JlZ192YWwodmFsLCAmd20tPnRyYW5zX3dtKTsKKwl9CiAKIAlpZiAoIWludGVsX2NydGMtPmFj dGl2ZSkKIAkJcmV0dXJuOwogCiAJaHctPmRpcnR5X3BpcGVzIHw9IGRybV9jcnRjX21hc2soY3J0 Yyk7Ci0KIAlhY3RpdmUtPmxpbmV0aW1lID0gSTkxNV9SRUFEKFBJUEVfV01fTElORVRJTUUocGlw ZSkpOwotCi0JZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewot CQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfbnVtX3BsYW5lcyhpbnRlbF9jcnRjKTsgaSsrKSB7Ci0J CQl0ZW1wID0gaHctPnBsYW5lW3BpcGVdW2ldW2xldmVsXTsKLQkJCXNrbF9waXBlX3dtX2FjdGl2 ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUsIGZhbHNlLCBpLCBsZXZlbCk7Ci0JCX0KLQkJdGVtcCA9IGh3 LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdW2xldmVsXTsKLQkJc2tsX3BpcGVfd21fYWN0aXZl X3N0YXRlKHRlbXAsIGFjdGl2ZSwgZmFsc2UsIFBMQU5FX0NVUlNPUiwKLQkJCQkJIGxldmVsKTsK LQl9Ci0KLQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfbnVtX3BsYW5lcyhpbnRlbF9jcnRjKTsgaSsr KSB7Ci0JCXRlbXAgPSBody0+cGxhbmVfdHJhbnNbcGlwZV1baV07Ci0JCXNrbF9waXBlX3dtX2Fj dGl2ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUsIHRydWUsIGksIDApOwotCX0KLQotCXRlbXAgPSBody0+ cGxhbmVfdHJhbnNbcGlwZV1bUExBTkVfQ1VSU09SXTsKLQlza2xfcGlwZV93bV9hY3RpdmVfc3Rh dGUodGVtcCwgYWN0aXZlLCB0cnVlLCBQTEFORV9DVVJTT1IsIDApOwotCiAJaW50ZWxfY3J0Yy0+ d20uYWN0aXZlLnNrbCA9ICphY3RpdmU7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRl LmMKaW5kZXggNzNhNTIxZi4uMGZiNzc1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRl LmMKQEAgLTIwOCw2ICsyMDgsOCBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KmRybV9wbGFuZSwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7CiAJY29uc3QgaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKIAljb25zdCBp bnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOworCWNvbnN0IHN0cnVjdCBza2xfcGxh bmVfd20gKnBfd20gPQorCQkmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5l XTsKIAl1MzIgcGxhbmVfY3RsOwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9y a2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CiAJdTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0 YXRlLT5tYWluLm9mZnNldDsKQEAgLTIzMiw3ICsyMzQsNyBAQCBza2xfdXBkYXRlX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKIAlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9y b3RhdGlvbihyb3RhdGlvbik7CiAKIAlpZiAod20tPmRpcnR5X3BpcGVzICYgZHJtX2NydGNfbWFz ayhjcnRjKSkKLQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsIHdtLCBwbGFuZSk7CisJ CXNrbF93cml0ZV9wbGFuZV93bShpbnRlbF9jcnRjLCBwX3dtLCAmd20tPmRkYiwgcGxhbmUpOwog CiAJaWYgKGtleS0+ZmxhZ3MpIHsKIAkJSTkxNV9XUklURShQTEFORV9LRVlWQUwocGlwZSwgcGxh bmUpLCBrZXktPm1pbl92YWx1ZSk7CkBAIC0yODksNiArMjkxLDcgQEAgc2tsX2Rpc2FibGVfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGRwbGFuZS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVs X3BsYW5lID0gdG9faW50ZWxfcGxhbmUoZHBsYW5lKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJY29uc3QgaW50 IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKIAljb25zdCBpbnQgcGxhbmUgPSBpbnRlbF9wbGFu ZS0+cGxhbmUgKyAxOwogCkBAIC0yOTgsNyArMzAxLDggQEAgc2tsX2Rpc2FibGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICovCiAJaWYg KCFkcGxhbmUtPnN0YXRlLT52aXNpYmxlKQogCQlza2xfd3JpdGVfcGxhbmVfd20odG9faW50ZWxf Y3J0YyhjcnRjKSwKLQkJCQkgICAmZGV2X3ByaXYtPndtLnNrbF9yZXN1bHRzLCBwbGFuZSk7CisJ CQkJICAgJmNzdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lXSwKKwkJCQkgICAmZGV2 X3ByaXYtPndtLnNrbF9yZXN1bHRzLmRkYiwgcGxhbmUpOwogCiAJSTkxNV9XUklURShQTEFORV9D VEwocGlwZSwgcGxhbmUpLCAwKTsKIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=