From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stanislav Lisovskiy Subject: [PATCH v4] drm/i915: Enable second dbuf slice for ICL and TGL Date: Thu, 7 Nov 2019 15:10:20 +0200 Message-ID: <20191107131020.12869-1-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B5116F695 for ; Thu, 7 Nov 2019 13:13:06 +0000 (UTC) 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 QWxzbyBpbXBsZW1lbnRlZCBhbGdvcml0aG0gZm9yIGNob29zaW5nIERCdWYgc2xpY2UgY29uZmln dXJhdGlvbgpiYXNlZCBvbiBhY3RpdmUgcGlwZXMsIHBpcGUgcmF0aW8gYXMgc3RhdGVkIGluIEJT cGVjIDEyNzE2LgoKTm93IHBpcGUgYWxsb2NhdGlvbiBzdGlsbCBzdGF5cyBwcm9wb3J0aW9uYWwg dG8gcGlwZSB3aWR0aCBhcyBiZWZvcmUsCmhvd2V2ZXIgd2l0aGluIGFsbG93ZWQgREJ1ZiBzbGlj ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCgp2MjogUmVtb3ZlIHVubmVlZGVk IGNoZWNrIGZyb20gY29tbWl0IGFzIGRkYiBlbmFibGVkIHNsaWNlcyBtaWdodAogICAgbm93IGRp ZmZlciBmcm9tIGh3IHN0YXRlLgoKdjM6IC0gQWRkZWQgbmV3IGZpZWxkICJzdXBwb3J0ZWRfc2xp Y2VzIiB0byBkZGIgdG8gc2VwYXJhdGUgbWF4CiAgICAgIHN1cHBvcnRlZCBzbGljZXMgdnMgY3Vy cmVudGx5IGVuYWJsZWQsIHRvIGF2b2lkIGNvbmZ1c2lvbi4KICAgIC0gUmVtb3ZlZCBvYnNvbGV0 ZSBjb21tZW50cyBhbmQgY29kZSByZWxhdGVkIHRvIERCdWYoTWF0dGhldyBSb3BlcikuCiAgICAt IFNvbWUgY29kZSBzdHlsZSBhbmQgbG9uZyBsaW5lIHJlbW92YWwoTWF0dGhldyBSb3BlcikuCiAg ICAtIEFkZGVkIFdBUk5fT04gdG8gbmV3IGRkYiByYW5nZSBvZmZzZXQgY2FsYyBmdW5jdGlvbihN YXR0aGV3IFJvcGVyKS4KICAgIC0gUmVtb3ZlZCBwbGF0Zm9ybSBzcGVjaWZpYyBjYWxsIHRvIGNh bGMgcGlwZSByYXRpbyBmcm9tIGRkYgogICAgICBhbGxvY2F0aW9uIGZ1bmN0aW9uIGFuZCBmaXhl ZCB0aGUgcmV0dXJuIHZhbHVlKE1hdHRoZXcgUm9wZXIpCiAgICAtIFJlZmFjdG9yZWQgREJVRiBz bGljZSBhbGxvY2F0aW9uIHRhYmxlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkKICAgIC0gQWRkZWQg REJVRiBzbGljZSBhbGxvY2F0aW9uIGZvciBUR0wgYXMgd2VsbC4KICAgIC0gSUNMKGhvd2V2ZXIg bm90IFRHTCkgc2VlbXMgdG8gdm9sdW50YXJpbHkgZW5hYmxlIHNlY29uZCBEQnVmIHNsaWNlCiAg ICAgIGFmdGVyIHBtIHN1c3BlbmQvcmVzdW1lIGNhdXNpbmcgYSBtaXNtYXRjaCBmYWlsdXJlLCBi ZWNhdXNlIHdlCiAgICAgIHVwZGF0ZSBEQnVmIHNsaWNlcyBvbmx5IGlmIHdlIGRvIGEgbW9kZXNl dCwgaG93ZXZlciB0aGlzIGNoZWNrCiAgICAgIGlzIGRvbmUgYWx3YXlzLiBGaXhlZCBpdCB0byBi ZSBkb25lIG9ubHkgd2hlbiBtb2Rlc2V0IGZvciBJQ0wuCgp2NDogLSBOb3cgZW5hYmxlZCBzbGlj ZXMgaXMgbm90IGFjdHVhbGx5IGEgbnVtYmVyLCBidXQgYSBiaXRtYXNrLAogICAgICBiZWNhdXNl IHdlIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIHNlY29uZCBzbGljZSBvbmx5IGFuZCBudW1iZXIKICAg ICAgb2Ygc2xpY2VzIHdvdWxkIHN0aWxsIDEgYW5kIHRoYXQgY3VycmVudCBjb2RlIGRvZXNuJ3Qg YWxsb3cuCiAgICAtIFJlbW92ZSByZWR1bmRhbnQgZHVwbGljYXRlIGNvZGUgdG8gaGF2ZSBzb21l IHVuaWZpZWQgd2F5IG9mCiAgICAgIGVuYWJsaW5nIGRidWYgc2xpY2VzIGluc3RlYWQgb2YgaGFy ZGNvZGluZy4KClNpZ25lZC1vZmYtYnk6IFN0YW5pc2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5s aXNvdnNraXlAaW50ZWwuY29tPgpDYzogTWF0dGhldyBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+CkNj OiBKYW1lcyBBdXNtdXMgPGphbWVzLmF1c211c0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDIyICstCiAuLi4vZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgICAgfCAgODMgKystLQogLi4uL2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jICAgICAgICAgICAgICAgfCAzOTEgKysrKysrKysrKysrKysrKy0tCiA3IGZp bGVzIGNoYW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCmluZGV4IDg3NmZjMjU5Njhi Zi4uZWU2M2RhMTg3NzJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwpAQCAtMTMzODYsOCArMTMzODYsOSBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21f c3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJc3dfZGRiID0gJmRldl9wcml2LT53bS5z a2xfaHcuZGRiOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYKLQkgICAgaHct PmRkYi5lbmFibGVkX3NsaWNlcyAhPSBzd19kZGItPmVuYWJsZWRfc2xpY2VzKQotCQlEUk1fRVJS T1IoIm1pc21hdGNoIGluIERCVUYgU2xpY2VzIChleHBlY3RlZCAldSwgZ290ICV1KVxuIiwKKwkg ICAgaHctPmRkYi5lbmFibGVkX3NsaWNlcyAhPSBzd19kZGItPmVuYWJsZWRfc2xpY2VzICYmCisJ ICAgIG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQorCQlEUk1fRVJST1IoIm1pc21hdGNo IGluIERCVUYgU2xpY2VzIChleHBlY3RlZCAleCwgZ290ICV4KVxuIiwKIAkJCSAgc3dfZGRiLT5l bmFibGVkX3NsaWNlcywKIAkJCSAgaHctPmRkYi5lbmFibGVkX3NsaWNlcyk7CiAKQEAgLTE0NjEz LDE2ICsxNDYxNCwyMSBAQCBzdGF0aWMgdm9pZCBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpbnQgaTsKIAl1OCBod19lbmFibGVk X3NsaWNlcyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwogCXU4IHJl cXVpcmVkX3NsaWNlcyA9IHN0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKLQlz dHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSA9IHt9OworCXU4IHNs aWNlc191bmlvbiA9IGh3X2VuYWJsZWRfc2xpY2VzIHwgcmVxdWlyZWRfc2xpY2VzOworCXU4IHNs aWNlc19pbnRlcnNlY3Rpb24gPSBzbGljZXNfdW5pb24gJiByZXF1aXJlZF9zbGljZXM7CiAKKwlz dHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSA9IHt9OwogCWZvcl9l YWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0 ZSwgbmV3X2NydGNfc3RhdGUsIGkpCiAJCS8qIGlnbm9yZSBhbGxvY2F0aW9ucyBmb3IgY3J0Yydz IHRoYXQgaGF2ZSBiZWVuIHR1cm5lZCBvZmYuICovCiAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+aHcu YWN0aXZlKQogCQkJZW50cmllc1tpXSA9IG9sZF9jcnRjX3N0YXRlLT53bS5za2wuZGRiOwogCi0J LyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJlICovCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzID4gaHdfZW5hYmxlZF9z bGljZXMpCi0JCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHJlcXVpcmVkX3NsaWNl cyk7CisJRFJNX0RFQlVHX0tNUygiREJ1ZiByZXEgc2xpY2VzICVkIGh3IHNsaWNlcyAlZFxuIiwK KwkJICAgICAgcmVxdWlyZWRfc2xpY2VzLCBod19lbmFibGVkX3NsaWNlcyk7CisKKwkvKiBJZiBz b21lIG90aGVyIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJlICovCisJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzICE9IGh3X2VuYWJsZWRf c2xpY2VzKQorCQlpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCBzbGljZXNfdW5pb24p OwogCiAJLyoKIAkgKiBXaGVuZXZlciB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBwaXBlcyBjaGFuZ2Vz LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZQpAQCAtMTQ2ODIsOCArMTQ2ODgsOCBAQCBzdGF0aWMg dm9pZCBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSkKIAl9IHdoaWxlIChwcm9ncmVzcyk7CiAKIAkvKiBJZiAybmQgREJ1ZiBzbGljZSBp cyBubyBtb3JlIHJlcXVpcmVkIGRpc2FibGUgaXQgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgPCBod19lbmFibGVkX3NsaWNlcykKLQkJaWNsX2Ri dWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgIT0gaHdfZW5hYmxlZF9zbGlj ZXMpCisJCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHNsaWNlc19pbnRlcnNlY3Rp b24pOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfaGVscGVyX2ZyZWVfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwppbmRleCBjZTFiNjRmNGRkNDQuLmM5 MjIwNDdmYzI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3Bvd2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3Bvd2VyLmMKQEAgLTQyNTQsMzEgKzQyNTQsNTMgQEAgc3RhdGljIHZvaWQgZ2Vu OV9kYnVmX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVs X2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LCBEQlVGX0NUTCwgZmFsc2UpOwogfQogCi1zdGF0aWMg dTggaW50ZWxfZGJ1Zl9tYXhfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3U4IGludGVsX2RidWZfbWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiB7CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKIAkJcmV0dXJuIDE7CiAJ cmV0dXJuIDI7CiB9CiAKK3ZvaWQgaWNsX2RidWZfc2xpY2VzX3Jlc3RvcmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWNvbnN0IHU4IGh3X2VuYWJsZWRfc2xpY2VzID0g ZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7CisKKwlpY2xfZGJ1Zl9zbGlj ZXNfdXBkYXRlKGRldl9wcml2LCBod19lbmFibGVkX3NsaWNlcyk7Cit9CisKIHZvaWQgaWNsX2Ri dWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkg ICAgdTggcmVxX3NsaWNlcykKIHsKLQljb25zdCB1OCBod19lbmFibGVkX3NsaWNlcyA9IGRldl9w cml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwotCWJvb2wgcmV0OworCWJvb2wgcmV0 ID0gdHJ1ZTsKKwlpbnQgaTsKKwlpbnQgbWF4X3NsaWNlcyA9IGludGVsX2RidWZfbWF4X3NsaWNl cyhkZXZfcHJpdik7CiAKLQlpZiAocmVxX3NsaWNlcyA+IGludGVsX2RidWZfbWF4X3NsaWNlcyhk ZXZfcHJpdikpIHsKKwlpZiAoaHdlaWdodDgocmVxX3NsaWNlcykgPiBpbnRlbF9kYnVmX21heF9z bGljZXMoZGV2X3ByaXYpKSB7CiAJCURSTV9FUlJPUigiSW52YWxpZCBudW1iZXIgb2YgZGJ1ZiBz bGljZXMgcmVxdWVzdGVkXG4iKTsKIAkJcmV0dXJuOwogCX0KIAotCWlmIChyZXFfc2xpY2VzID09 IGh3X2VuYWJsZWRfc2xpY2VzIHx8IHJlcV9zbGljZXMgPT0gMCkKLQkJcmV0dXJuOworCURSTV9E RUJVR19LTVMoIlVwZGF0aW5nIGRidWYgc2xpY2VzIHRvICV4XG4iLCByZXFfc2xpY2VzKTsKIAot CWlmIChyZXFfc2xpY2VzID4gaHdfZW5hYmxlZF9zbGljZXMpCi0JCXJldCA9IGludGVsX2RidWZf c2xpY2Vfc2V0KGRldl9wcml2LCBEQlVGX0NUTF9TMiwgdHJ1ZSk7Ci0JZWxzZQotCQlyZXQgPSBp bnRlbF9kYnVmX3NsaWNlX3NldChkZXZfcHJpdiwgREJVRl9DVExfUzIsIGZhbHNlKTsKKwlmb3Ig KGkgPSAwOyBpIDwgbWF4X3NsaWNlczsgaSsrKSB7CisJCWludCBzbGljZV9iaXQgPSAxIDw8IGk7 CisJCWJvb2wgc2xpY2Vfc2V0ID0gKChzbGljZV9iaXQpICYgcmVxX3NsaWNlcykgIT0gMDsKKwor CQlzd2l0Y2ggKHNsaWNlX2JpdCkgeworCQljYXNlIERCVUZfUzFfQklUOgorCQkJcmV0ID0gcmV0 ICYmIGludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LAorCQkJCQkJCSAgREJVRl9DVExfUzEs CisJCQkJCQkJICBzbGljZV9zZXQpOworCQkJYnJlYWs7CisJCWNhc2UgREJVRl9TMl9CSVQ6CisJ CQlyZXQgPSByZXQgJiYgaW50ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3ByaXYsCisJCQkJCQkJICBE QlVGX0NUTF9TMiwKKwkJCQkJCQkgIHNsaWNlX3NldCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK KwkJCVdBUk4oMSwgIlVuc3VwcG9ydGVkIERCVUYgc2xpY2UiKTsKKwkJfQorCX0KIAogCWlmIChy ZXQpCiAJCWRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gcmVxX3NsaWNl czsKQEAgLTQyODYsNDAgKzQzMDgsMjEgQEAgdm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogc3RhdGljIHZvaWQgaWNsX2RidWZf ZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlJOTE1X1dSSVRF KERCVUZfQ1RMX1MxLCBJOTE1X1JFQUQoREJVRl9DVExfUzEpIHwgREJVRl9QT1dFUl9SRVFVRVNU KTsKLQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MyLCBJOTE1X1JFQUQoREJVRl9DVExfUzIpIHwgREJV Rl9QT1dFUl9SRVFVRVNUKTsKLQlQT1NUSU5HX1JFQUQoREJVRl9DVExfUzIpOwotCi0JdWRlbGF5 KDEwKTsKLQotCWlmICghKEk5MTVfUkVBRChEQlVGX0NUTF9TMSkgJiBEQlVGX1BPV0VSX1NUQVRF KSB8fAotCSAgICAhKEk5MTVfUkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkK LQkJRFJNX0VSUk9SKCJEQnVmIHBvd2VyIGVuYWJsZSB0aW1lb3V0XG4iKTsKLQllbHNlCi0JCS8q Ci0JCSAqIEZJWE1FOiBmb3Igbm93IHByZXRlbmQgdGhhdCB3ZSBvbmx5IGhhdmUgMSBzbGljZSwg c2VlCi0JCSAqIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCi0JCSAqLwotCQlkZXZf cHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IDE7CisJLyoKKwkgKiBGb3Igbm93 IHByZXRlbmQgdGhhdCB3ZSBvbmx5IGhhdmUgMSBzbGljZSwgd2Ugd2lsbAorCSAqIGZpZ3VyZSBv dXQgbGF0ZXIgd2hpY2ggc2xpY2VzIHdlIGhhdmUgYW5kIHdoYXQgd2UgbmVlZC4KKwkgKi8KKwlk ZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IDE7CisJaWNsX2RidWZfc2xp Y2VzX3Jlc3RvcmUoZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlJOTE1X1dSSVRFKERCVUZf Q1RMX1MxLCBJOTE1X1JFQUQoREJVRl9DVExfUzEpICYgfkRCVUZfUE9XRVJfUkVRVUVTVCk7Ci0J STkxNV9XUklURShEQlVGX0NUTF9TMiwgSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIH5EQlVGX1BP V0VSX1JFUVVFU1QpOwotCVBPU1RJTkdfUkVBRChEQlVGX0NUTF9TMik7Ci0KLQl1ZGVsYXkoMTAp OwotCi0JaWYgKChJOTE1X1JFQUQoREJVRl9DVExfUzEpICYgREJVRl9QT1dFUl9TVEFURSkgfHwK LQkgICAgKEk5MTVfUkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkKLQkJRFJN X0VSUk9SKCJEQnVmIHBvd2VyIGRpc2FibGUgdGltZW91dCFcbiIpOwotCWVsc2UKLQkJLyoKLQkJ ICogRklYTUU6IGZvciBub3cgcHJldGVuZCB0aGF0IHRoZSBmaXJzdCBzbGljZSBpcyBhbHdheXMK LQkJICogZW5hYmxlZCwgc2VlIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCi0JCSAq LwotCQlkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IDE7CisJLyoKKwkg KiBEaXNhYmxlIGFsbCBzbGljZXMKKwkgKi8KKwlkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFi bGVkX3NsaWNlcyA9IDA7CisJaWNsX2RidWZfc2xpY2VzX3Jlc3RvcmUoZGV2X3ByaXYpOwogfQog CiBzdGF0aWMgdm9pZCBpY2xfbWJ1c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV9wb3dlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3Bvd2VyLmgKaW5kZXggMWRhMDRmM2UwZmIzLi40ZDViYjBhY2NlZjcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oCkBAIC0zMTEs OCArMzExLDEwIEBAIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCWZvciAoKHdmKSA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KChp OTE1KSwgKGRvbWFpbikpOyAod2YpOyBcCiAJICAgICBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9h c3luYygoaTkxNSksIChkb21haW4pLCAod2YpKSwgKHdmKSA9IDApCiAKK3U4IGludGVsX2RidWZf bWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpY2xf ZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ CSAgICB1OCByZXFfc2xpY2VzKTsKK3ZvaWQgaWNsX2RidWZfc2xpY2VzX3Jlc3RvcmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAogdm9pZCBjaHZfcGh5X3Bvd2VyZ2F0ZV9s YW5lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgICAgYm9vbCBvdmVycmlk ZSwgdW5zaWduZWQgaW50IG1hc2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggODJlNGU2 YmYwOGMzLi4wMzA3YWVjMmM5MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNTEsNiAr NTEsNyBAQAogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfYncuaCIKICNpbmNsdWRlICJkaXNwbGF5 L2ludGVsX2NkY2xrLmgiCiAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgi CisjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgiCiAjaW5jbHVkZSAiZGlz cGxheS9pbnRlbF9kcC5oIgogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZmJkZXYuaCIKICNpbmNs dWRlICJkaXNwbGF5L2ludGVsX2hvdHBsdWcuaCIKQEAgLTI1ODgsNiArMjU4OSwxMCBAQCBzdGF0 aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmtkZXYpCiAJaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQlyZXQg PSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIHRydWUpOwogCisJLyogV2VpcmQgaGFjayB0 byBmaXggSUNMIGhhcmR3YXJlIGJ1ZywgYXMgaXQgcmVzZXRzIERCVUYgc2xpY2VzIHJlZyAqLwor CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID09IDExKQorCQlpY2xfZGJ1Zl9zbGljZXNfcmVzdG9y ZShkZXZfcHJpdik7CisKIAlpbnRlbF91bmNvcmVfcnVudGltZV9yZXN1bWUoJmRldl9wcml2LT51 bmNvcmUpOwogCiAJaW50ZWxfcnVudGltZV9wbV9lbmFibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA3ZTBmNjdiYWJlMjAuLjc4YmQwMTBjYjU5YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC04MDQsNyArODA0LDggQEAgc3RhdGljIGlubGlu ZSBib29sIHNrbF9kZGJfZW50cnlfZXF1YWwoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUx LAogfQogCiBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKLQl1OCBlbmFibGVkX3NsaWNlczsg LyogR0VOMTEgaGFzIGNvbmZpZ3VyYWJsZSAyIHNsaWNlcyAqLworCXU4IGVuYWJsZWRfc2xpY2Vz OyAgIC8qIEJpdG1hc2sgb2YgY3VycmVudGx5IGVuYWJsZWQgREJ1ZiBzbGljZXMgKi8KKwl1OCBz dXBwb3J0ZWRfc2xpY2VzOyAvKiBHRU4gMTEgc3VwcG9ydHMgMiBzbGljZXMgKi8KIH07CiAKIHN0 cnVjdCBza2xfZGRiX3ZhbHVlcyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCBhNjA3ZWE1 MjA4MjkuLjdlY2EyYWRiYjI4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC03NzM0LDYg Kzc3MzQsOCBAQCBlbnVtIHsKICNkZWZpbmUgRElTUF9BUkJfQ1RMMglfTU1JTygweDQ1MDA0KQog I2RlZmluZSAgRElTUF9EQVRBX1BBUlRJVElPTl81XzYJKDEgPDwgNikKICNkZWZpbmUgIERJU1Bf SVBDX0VOQUJMRQkJKDEgPDwgMykKKyNkZWZpbmUgREJVRl9TMV9CSVQJCQkxCisjZGVmaW5lIERC VUZfUzJfQklUCQkJMgogI2RlZmluZSBEQlVGX0NUTAlfTU1JTygweDQ1MDA4KQogI2RlZmluZSBE QlVGX0NUTF9TMQlfTU1JTygweDQ1MDA4KQogI2RlZmluZSBEQlVGX0NUTF9TMglfTU1JTygweDQ0 RkU4KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMmQzODllNDM3ZTg3Li5lYmU1MzdhNDc4 NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzU4NiwyNCArMzU4NiwyMCBAQCBib29s IGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIF9pbGtf ZGlzYWJsZV9scF93bShkZXZfcHJpdiwgV01fRElSVFlfTFBfQUxMKTsKIH0KIAotc3RhdGljIHU4 IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3N0YXRpYyB1OCBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQl1OCBlbmFibGVkX3NsaWNlczsKLQotCS8qIFNs aWNlIDEgd2lsbCBhbHdheXMgYmUgZW5hYmxlZCAqLwotCWVuYWJsZWRfc2xpY2VzID0gMTsKKwl1 OCBlbmFibGVkX3NsaWNlcyA9IDA7CiAKIAkvKiBHZW4gcHJpb3IgdG8gR0VOMTEgaGF2ZSBvbmx5 IG9uZSBEQnVmIHNsaWNlICovCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKLQkJcmV0 dXJuIGVuYWJsZWRfc2xpY2VzOworCQlyZXR1cm4gMTsKIAotCS8qCi0JICogRklYTUU6IGZvciBu b3cgd2UnbGwgb25seSBldmVyIHVzZSAxIHNsaWNlOyBwcmV0ZW5kIHRoYXQgd2UgaGF2ZQotCSAq IG9ubHkgdGhhdCAxIHNsaWNlIGVuYWJsZWQgdW50aWwgd2UgaGF2ZSBhIHByb3BlciB3YXkgZm9y IG9uLWRlbWFuZAotCSAqIHRvZ2dsaW5nIG9mIHRoZSBzZWNvbmQgc2xpY2UuCi0JICovCi0JaWYg KDAgJiYgSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpCi0JCWVuYWJs ZWRfc2xpY2VzKys7CisJLyogQ2hlY2sgaWYgc2Vjb25kIERCdWYgc2xpY2UgaXMgZW5hYmxlZCAq LworCWlmIChJOTE1X1JFQUQoREJVRl9DVExfUzEpICYgREJVRl9QT1dFUl9TVEFURSkKKwkJZW5h YmxlZF9zbGljZXMgfD0gMTsKKworCWlmIChJOTE1X1JFQUQoREJVRl9DVExfUzIpICYgREJVRl9Q T1dFUl9TVEFURSkKKwkJZW5hYmxlZF9zbGljZXMgfD0gMjsKIAogCXJldHVybiBlbmFibGVkX3Ns aWNlczsKIH0KQEAgLTM4MTIsMzYgKzM4MDgsNDQgQEAgc3RhdGljIHUxNiBpbnRlbF9nZXRfZGRi X3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgY29uc3Qg aW50IG51bV9hY3RpdmUsCiAJCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIp CiB7Ci0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Ci0JdTY0 IHRvdGFsX2RhdGFfYnc7CiAJdTE2IGRkYl9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmRk Yl9zaXplOwogCiAJV0FSTl9PTihkZGJfc2l6ZSA9PSAwKTsKKwlkZGItPnN1cHBvcnRlZF9zbGlj ZXMgPSBpbnRlbF9kYnVmX21heF9zbGljZXMoZGV2X3ByaXYpOwogCiAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCAxMSkKIAkJcmV0dXJuIGRkYl9zaXplIC0gNDsgLyogNCBibG9ja3MgZm9yIGJ5 cGFzcyBwYXRoIGFsbG9jYXRpb24gKi8KIAotCWFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZTsKLQl0b3RhbF9kYXRhX2J3ID0gdG90YWxfZGF0YV9yYXRlICogZHJt X21vZGVfdnJlZnJlc2goYWRqdXN0ZWRfbW9kZSk7CisJcmV0dXJuIGRkYl9zaXplOworfQogCi0J LyoKLQkgKiAxMkdCL3MgaXMgbWF4aW11bSBCVyBzdXBwb3J0ZWQgYnkgc2luZ2xlIERCdWYgc2xp Y2UuCi0JICoKLQkgKiBGSVhNRSBkYnVmIHNsaWNlIGNvZGUgaXMgYnJva2VuOgotCSAqIC0gbXVz dCB3YWl0IGZvciBwbGFuZXMgdG8gc3RvcCB1c2luZyB0aGUgc2xpY2UgYmVmb3JlIHBvd2VyaW5n IGl0IG9mZgotCSAqIC0gcGxhbmUgc3RyYWRkbGluZyBib3RoIHNsaWNlcyBpcyBpbGxlZ2FsIGlu IG11bHRpLXBpcGUgc2NlbmFyaW9zCi0JICogLSBzaG91bGQgdmFsaWRhdGUgd2Ugc3RheSB3aXRo aW4gdGhlIGh3IGJhbmR3aWR0aCBsaW1pdHMKLQkgKi8KLQlpZiAoMCAmJiAobnVtX2FjdGl2ZSA+ IDEgfHwgdG90YWxfZGF0YV9idyA+PSBHQnBzKDEyKSkpIHsKLQkJZGRiLT5lbmFibGVkX3NsaWNl cyA9IDI7Ci0JfSBlbHNlIHsKLQkJZGRiLT5lbmFibGVkX3NsaWNlcyA9IDE7Ci0JCWRkYl9zaXpl IC89IDI7Ci0JfQorLyoKKyAqIENhbGN1bGF0ZSBpbml0aWFsIERCdWYgc2xpY2Ugb2Zmc2V0LCBi YXNlZCBvbiBzbGljZSBzaXplCisgKiBhbmQgbWFzayhpLmUgaWYgc2xpY2Ugc2l6ZSBpcyAxMDI0 IGFuZCBzZWNvbmQgc2xpY2UgaXMgZW5hYmxlZAorICogb2Zmc2V0IHdvdWxkIGJlIDEwMjQpCisg Ki8KK3N0YXRpYyB1MzIgc2tsX2dldF9maXJzdF9kYnVmX3NsaWNlX29mZnNldCh1MzIgZGJ1Zl9z bGljZV9tYXNrLAorCQkJCQkgICB1MzIgc2xpY2Vfc2l6ZSwgdTMyIGRkYl9zaXplKQoreworCXUz MiBvZmZzZXQgPSAwOwogCi0JcmV0dXJuIGRkYl9zaXplOworCWlmICghZGJ1Zl9zbGljZV9tYXNr KQorCQlyZXR1cm4gMDsKKworCXdoaWxlICghKGRidWZfc2xpY2VfbWFzayAmIDEpKSB7CisJCWRi dWZfc2xpY2VfbWFzayA+Pj0gMTsKKwkJb2Zmc2V0ICs9IHNsaWNlX3NpemU7CisJCWlmIChvZmZz ZXQgPj0gZGRiX3NpemUpCisJCQlicmVhazsKKwl9CisJV0FSTl9PTihvZmZzZXQgPj0gZGRiX3Np emUpOworCXJldHVybiBvZmZzZXQ7CiB9CiAKK3N0YXRpYyB1MzIgaTkxNV9nZXRfYWxsb3dlZF9k YnVmX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICAgIGlu dCBwaXBlLCB1MzIgYWN0aXZlX3BpcGVzLAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKKwogc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVf YWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLApAQCAtMzg1Nyw3 ICszODYxLDE0IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXUzMiBwaXBlX3dpZHRoID0gMCwgdG90YWxfd2lk dGggPSAwLCB3aWR0aF9iZWZvcmVfcGlwZSA9IDA7CiAJZW51bSBwaXBlIGZvcl9waXBlID0gdG9f aW50ZWxfY3J0Yyhmb3JfY3J0YyktPnBpcGU7CiAJdTE2IGRkYl9zaXplOworCXUzMiBkZGJfcmFu Z2Vfc2l6ZTsKIAl1MzIgaTsKKwl1MzIgZGJ1Zl9zbGljZV9tYXNrOworCXUzMiBhY3RpdmVfcGlw ZXM7CisJdTMyIG9mZnNldDsKKwl1MzIgc2xpY2Vfc2l6ZTsKKwl1MzIgdG90YWxfc2xpY2VfbWFz azsKKwl1MzIgc3RhcnQsIGVuZDsKIAogCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSkgewogCQlhbGxvYy0+c3RhcnQgPSAwOwpAQCAtMzg2NiwxNCArMzg3Nywy MyBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJcmV0dXJuOwogCX0KIAotCWlmIChpbnRlbF9zdGF0ZS0+YWN0 aXZlX3BpcGVfY2hhbmdlcykKKwlpZiAoaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMp IHsKIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsK LQllbHNlCisJCWFjdGl2ZV9waXBlcyA9IGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZXM7CisJfSBl bHNlIHsKIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKTsK KwkJYWN0aXZlX3BpcGVzID0gZGV2X3ByaXYtPmFjdGl2ZV9waXBlczsKKwl9CiAKIAlkZGJfc2l6 ZSA9IGludGVsX2dldF9kZGJfc2l6ZShkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9y YXRlLAogCQkJCSAgICAgICpudW1fYWN0aXZlLCBkZGIpOwogCisJRFJNX0RFQlVHX0tNUygiR290 IHRvdGFsIGRkYiBzaXplICVkXG4iLCBkZGJfc2l6ZSk7CisKKwlzbGljZV9zaXplID0gZGRiX3Np emUgLyBkZGItPnN1cHBvcnRlZF9zbGljZXM7CisKKwlEUk1fREVCVUdfS01TKCJHb3QgREJ1ZiBz bGljZSBzaXplICVkXG4iLCBzbGljZV9zaXplKTsKKwogCS8qCiAJICogSWYgdGhlIHN0YXRlIGRv ZXNuJ3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJlIGlzIG5vCiAJICogbW9kZXNl dCByZXF1ZXN0LCB0aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byByZWNhbGN1bGF0ZTsKQEAgLTM4OTEs MjAgKzM5MTEsNzMgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJldHVybjsKIAl9CiAKKwkvKgorCSAqIEdl dCBhbGxvd2VkIERCdWYgc2xpY2VzIGZvciBjb3JyZXNwb25kZW50IHBpcGUgYW5kIHBsYXRmb3Jt LgorCSAqLworCWRidWZfc2xpY2VfbWFzayA9IGk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGRl dl9wcml2LCBmb3JfcGlwZSwKKwkJCQkJCSAgICAgYWN0aXZlX3BpcGVzLCBjcnRjX3N0YXRlKTsK KworCURSTV9ERUJVR19LTVMoIkRCdWYgc2xpY2UgbWFzayAleCBwaXBlICVkIGFjdGl2ZSBwaXBl cyAleFxuIiwKKwkJICAgICAgZGJ1Zl9zbGljZV9tYXNrLAorCQkgICAgICBmb3JfcGlwZSwgYWN0 aXZlX3BpcGVzKTsKKworCS8qCisJICogRmlndXJlIG91dCBhdCB3aGljaCBEQnVmIHNsaWNlIHdl IHN0YXJ0LCBpLmUgaWYgd2Ugc3RhcnQgYXQgRGJ1ZiBTMgorCSAqIGFuZCBzbGljZSBzaXplIGlz IDEwMjQsIHRoZSBvZmZzZXQgd291bGQgYmUgMTAyNAorCSAqLworCW9mZnNldCA9IHNrbF9nZXRf Zmlyc3RfZGJ1Zl9zbGljZV9vZmZzZXQoZGJ1Zl9zbGljZV9tYXNrLAorCQkJCQkJIHNsaWNlX3Np emUsIGRkYl9zaXplKTsKKworCS8qCisJICogRmlndXJlIG91dCB0b3RhbCBzaXplIG9mIGFsbG93 ZWQgREJ1ZiBzbGljZXMsIHdoaWNoIGlzIGJhc2ljYWxseQorCSAqIGEgbnVtYmVyIG9mIGFsbG93 ZWQgc2xpY2VzIGZvciB0aGF0IHBpcGUgbXVsdGlwbGllZCBieSBzbGljZSBzaXplLgorCSAqIFdl IG1pZ2h0IHN0aWxsIGhhdmUgc29tZSBkYnVmIHNsaWNlcyBkaXNhYmxlZCBpbiBjYXNlIGlmIHRo b3NlCisJICogYXJlIG5vdCBuZWVkZWQgYmFzZWQgb24gYmFuZHdpZHRoIHJlcXVpcmVtZW50cyBh bmQgbnVtX2FjdGl2ZSBwaXBlcywKKwkgKiBzbyBzdGljayB0byByZWFsIGRkYiBzaXplIGlmIGl0 IGhhcHBlbnMgdG8gYmUgbGVzcy4gSW5zaWRlIG9mIHRoaXMKKwkgKiByYW5nZSBkZGIgZW50cmll cyBhcmUgc3RpbGwgYWxsb2NhdGVkIGluIHByb3BvcnRpb24gdG8gZGlzcGxheSB3aWR0aC4KKwkg Ki8KKwlkZGJfcmFuZ2Vfc2l6ZSA9IG1pbihod2VpZ2h0OChkYnVmX3NsaWNlX21hc2spICogc2xp Y2Vfc2l6ZSwKKwkJCSAgICAgKHVuc2lnbmVkIGludClkZGJfc2l6ZSk7CisKIAkvKgogCSAqIFdh dGVybWFyay9kZGIgcmVxdWlyZW1lbnQgaGlnaGx5IGRlcGVuZHMgdXBvbiB3aWR0aCBvZiB0aGUK IAkgKiBmcmFtZWJ1ZmZlciwgU28gaW5zdGVhZCBvZiBhbGxvY2F0aW5nIEREQiBlcXVhbGx5IGFt b25nIHBpcGVzCiAJICogZGlzdHJpYnV0ZSBEREIgYmFzZWQgb24gcmVzb2x1dGlvbi93aWR0aCBv ZiB0aGUgZGlzcGxheS4KIAkgKi8KKwl0b3RhbF9zbGljZV9tYXNrID0gZGJ1Zl9zbGljZV9tYXNr OwogCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBj cnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0KIAkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCQllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7CiAJCWludCBoZGlzcGxheSwgdmRpc3BsYXk7CisJCXUzMiBwaXBl X2RidWZfc2xpY2VfbWFzayA9IFwKKwkJCWk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGRldl9w cml2LAorCQkJCQkJcGlwZSwKKwkJCQkJCWFjdGl2ZV9waXBlcywKKwkJCQkJCWNydGNfc3RhdGUp OwogCiAJCWlmICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQkJY29udGludWU7CiAKKwkJLyoK KwkJICogQWNjb3JkaW5nIHRvIEJTcGVjIHBpcGUgY2FuIHNoYXJlIG9uZSBkYnVmIHNsaWNlIHdp dGggYW5vdGhlcgorCQkgKiBwaXBlcyBvciBwaXBlIGNhbiB1c2UgbXVsdGlwbGUgZGJ1ZnMsIGlu IGJvdGggY2FzZXMgd2UKKwkJICogYWNjb3VudCBmb3Igb3RoZXIgcGlwZXMgb25seSBpZiB0aGV5 IGhhdmUgZXhhY3RseSBzYW1lIG1hc2suCisJCSAqIEhvd2V2ZXIgd2UgbmVlZCB0byBhY2NvdW50 IGhvdyBtYW55IHNsaWNlcyB3ZSBzaG91bGQgZW5hYmxlCisJCSAqIGluIHRvdGFsLgorCQkgKi8K KwkJdG90YWxfc2xpY2VfbWFzayB8PSBwaXBlX2RidWZfc2xpY2VfbWFzazsKKworCQkvKgorCQkg KiBEbyBub3QgYWNjb3VudCBwaXBlcyB1c2luZyBvdGhlciBzbGljZSBzZXRzCisJCSAqIGx1Y2tp bHkgYXMgb2YgY3VycmVudCBCU3BlYyBzbGljZSBzZXRzIGRvIG5vdCBwYXJ0aWFsbHkKKwkJICog aW50ZXJzZWN0KHBpcGVzIHNoYXJlIGVpdGhlciBzYW1lIG9uZSBzbGljZSBvciBzYW1lIHNsaWNl IHNldAorCQkgKiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBlbm91Z2gg dG8gY2hlY2sgZm9yCisJCSAqIGVxdWFsaXR5IGZvciBub3cuCisJCSAqLworCQlpZiAoZGJ1Zl9z bGljZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQorCQkJY29udGludWU7CisKIAkJZHJt X21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxheSk7 CiAJCXRvdGFsX3dpZHRoICs9IGhkaXNwbGF5OwogCkBAIC0zOTE0LDggKzM5ODcsMTkgQEAgc2ts X2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQlwaXBlX3dpZHRoID0gaGRpc3BsYXk7CiAJfQogCi0JYWxsb2MtPnN0YXJ0 ID0gZGRiX3NpemUgKiB3aWR0aF9iZWZvcmVfcGlwZSAvIHRvdGFsX3dpZHRoOwotCWFsbG9jLT5l bmQgPSBkZGJfc2l6ZSAqICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxf d2lkdGg7CisJZGRiLT5lbmFibGVkX3NsaWNlcyA9IHRvdGFsX3NsaWNlX21hc2s7CisKKwlzdGFy dCA9IGRkYl9yYW5nZV9zaXplICogd2lkdGhfYmVmb3JlX3BpcGUgLyB0b3RhbF93aWR0aDsKKwll bmQgPSBkZGJfcmFuZ2Vfc2l6ZSAqICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8g dG90YWxfd2lkdGg7CisKKwlhbGxvYy0+c3RhcnQgPSBvZmZzZXQgKyBzdGFydDsKKwlhbGxvYy0+ ZW5kID0gb2Zmc2V0ICsgZW5kOworCisJRFJNX0RFQlVHX0tNUygiUGlwZSAlZCBkZGIgJWQtJWRc biIsIGZvcl9waXBlLAorCQkgICAgICBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQpOworCURSTV9E RUJVR19LTVMoIkVuYWJsZWQgZGRiIHNsaWNlcyBtYXNrICV4IG51bSBzdXBwb3J0ZWQgJWRcbiIs CisJCSAgICAgIGRkYi0+ZW5hYmxlZF9zbGljZXMsCisJCSAgICAgIGRkYi0+c3VwcG9ydGVkX3Ns aWNlcyk7CiB9CiAKIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfd21fcGFyYW1zKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLApAQCAtNDAzNiw3ICs0MTIwLDggQEAgdm9p ZCBza2xfcGlwZV9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogdm9p ZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCiB7Ci0JZGRi LT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKGRldl9wcml2 KTsKKwlkZGItPmVuYWJsZWRfc2xpY2VzID0gaW50ZWxfZW5hYmxlZF9kYnVmX3NsaWNlcyhkZXZf cHJpdik7CisJRFJNX0RFQlVHX0tNUygiR290IGh3IGRidWYgc2xpY2VzIG1hc2sgJXhcbiIsIGRk Yi0+ZW5hYmxlZF9zbGljZXMpOwogfQogCiAvKgpAQCAtNDE2NCw2ICs0MjQ5LDIzOCBAQCBza2xf Z2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKIAlyZXR1cm4gdG90YWxfZGF0YV9yYXRlOwogfQogCit1aW50X2ZpeGVkXzE2XzE2 X3QKK3NrbF9waXBlX2Rvd25zY2FsZV9hbW91bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCit7CisJdTMyIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oOworCXVp bnRfZml4ZWRfMTZfMTZfdCBmcF93X3JhdGlvLCBmcF9oX3JhdGlvOworCXVpbnRfZml4ZWRfMTZf MTZfdCBkb3duc2NhbGVfaCwgZG93bnNjYWxlX3c7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKKwor CXNyY193ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdzsKKwlzcmNfaCA9IGNydGNfc3RhdGUtPnBp cGVfc3JjX2g7CisJZHN0X3cgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5OworCWRzdF9o ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKKworCWZwX3dfcmF0aW8gPSBkaXZfZml4 ZWQxNihzcmNfdywgZHN0X3cpOworCWZwX2hfcmF0aW8gPSBkaXZfZml4ZWQxNihzcmNfaCwgZHN0 X2gpOworCWRvd25zY2FsZV93ID0gbWF4X2ZpeGVkMTYoZnBfd19yYXRpbywgdTMyX3RvX2ZpeGVk MTYoMSkpOworCWRvd25zY2FsZV9oID0gbWF4X2ZpeGVkMTYoZnBfaF9yYXRpbywgdTMyX3RvX2Zp eGVkMTYoMSkpOworCisJcmV0dXJuIG11bF9maXhlZDE2KGRvd25zY2FsZV93LCBkb3duc2NhbGVf aCk7Cit9CisKK3VpbnRfZml4ZWRfMTZfMTZfdAoraWNsX2dldF9waXBlX3JhdGlvKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lOworCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRybV9wbGFuZV9zdGF0ZTsK Kwl1aW50X2ZpeGVkXzE2XzE2X3QgcGlwZV9kb3duc2NhbGUsIHBpcGVfcmF0aW87CisJdWludF9m aXhlZF8xNl8xNl90IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK KworCWlmICghY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCisJCXJldHVybiBtYXhfZG93bnNjYWxl OworCisJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBk cm1fcGxhbmVfc3RhdGUsICZjcnRjX3N0YXRlLT51YXBpKSB7CisJCXVpbnRfZml4ZWRfMTZfMTZf dCBwbGFuZV9kb3duc2NhbGU7CisJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUgPQorCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3BsYW5lX3N0YXRlKTsKKwor CQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpKQor CQkJY29udGludWU7CisKKwkJcGxhbmVfZG93bnNjYWxlID0gc2tsX3BsYW5lX2Rvd25zY2FsZV9h bW91bnQoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOworCisJCURSTV9ERUJVR19LTVMoIlBsYW5l ICVkIGRvd25zY2FsZSBhbW91bnQgJWQuJWRcbiIsCisJCQkgICAgICB0b19pbnRlbF9wbGFuZShw bGFuZSktPmlkLAorCQkJICAgICAgcGxhbmVfZG93bnNjYWxlLnZhbCA+PiAxNiwKKwkJCSAgICAg IHBsYW5lX2Rvd25zY2FsZS52YWwgJiAweGZmZmYpOworCisJCW1heF9kb3duc2NhbGUgPSBtYXhf Zml4ZWQxNihwbGFuZV9kb3duc2NhbGUsIG1heF9kb3duc2NhbGUpOworCX0KKworCisJcGlwZV9k b3duc2NhbGUgPSBza2xfcGlwZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUpOworCisJRFJN X0RFQlVHX0tNUygiUGlwZSAlZCBkb3duc2NhbGUgYW1vdW50ICVkLiVkXG4iLAorCQkgICAgICAg Y3J0Yy0+cGlwZSwgcGlwZV9kb3duc2NhbGUudmFsID4+IDE2LAorCQkgICAgICAgcGlwZV9kb3du c2NhbGUudmFsICYgMHhmZmZmKTsKKworCXBpcGVfZG93bnNjYWxlID0gbXVsX2ZpeGVkMTYocGlw ZV9kb3duc2NhbGUsIG1heF9kb3duc2NhbGUpOworCisJLyogQ29udmVydCByZXN1bHQgdG8gcGVy Y2VudGFnZSAqLworCXBpcGVfcmF0aW8gPSB1MzJfdG9fZml4ZWQxNigxMDAgKiBkaXZfcm91bmRf dXBfdTMyX2ZpeGVkMTYoMSwgcGlwZV9kb3duc2NhbGUpKTsKKworCURSTV9ERUJVR19LTVMoIlBp cGUgJWQgcmF0aW8gJWQuJWRcbiIsIGNydGMtPnBpcGUsCisJCSAgICAgIHBpcGVfcmF0aW8udmFs ID4+IDE2LCBwaXBlX3JhdGlvLnZhbCAmIDB4ZmZmZik7CisKKwlyZXR1cm4gcGlwZV9yYXRpbzsK K30KKworc3RydWN0IGRidWZfc2xpY2VfY29uZl9lbnRyeSB7CisJdTMyIGRidWZfbWFza1tJOTE1 X01BWF9QSVBFU107CisJdTMyIGFjdGl2ZV9waXBlczsKK307CisKKworI2RlZmluZSBJQ0xfUElQ RV9BX0RCVUZfU0xJQ0VTKERCdWYxKSAgXAorCXsgeyBEQnVmMSwgMCwgMCwgMCB9LCBCSVQoUElQ RV9BKSB9CisjZGVmaW5lIElDTF9QSVBFX0JfREJVRl9TTElDRVMoREJ1ZjEpICBcCisJeyB7IDAs IERCdWYxLCAwLCAwIH0sIEJJVChQSVBFX0IpIH0KKyNkZWZpbmUgSUNMX1BJUEVfQ19EQlVGX1NM SUNFUyhEQnVmMSkgIFwKKwl7IHsgMCwgMCwgREJ1ZjEsIDAgfSwgQklUKFBJUEVfQykgfQorI2Rl ZmluZSBJQ0xfUElQRV9EX0RCVUZfU0xJQ0VTKERCdWYxKSAgXAorCXsgeyAwLCAwLCAwLCBEQnVm MSB9LCBCSVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCdWYx LCBEQnVmMikgICBcCisJeyB7IERCdWYxLCBEQnVmMiwgMCwgMCB9LCBCSVQoUElQRV9BKSB8IEJJ VChQSVBFX0IpIH0KKyNkZWZpbmUgSUNMX1BJUEVfQkNfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYy KSAgIFwKKwl7IHsgMCwgREJ1ZjEsIERCdWYyLCAwIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVf QykgfQorI2RlZmluZSBJQ0xfUElQRV9CRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIpICAgXAor CXsgeyAwLCBEQnVmMSwgMCwgREJ1ZjIgfSwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9EKSB9Cisj ZGVmaW5lIElDTF9QSVBFX0FDX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCisJeyB7IERC dWYxLCAwLCBEQnVmMiwgMCB9LCBCSVQoUElQRV9BKSB8IEJJVChQSVBFX0MpIH0KKyNkZWZpbmUg SUNMX1BJUEVfQURfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyKSAgIFwKKwl7IHsgREJ1ZjEsIDAs IDAsIERCdWYyIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfRCkgfQorI2RlZmluZSBJQ0xfUElQ RV9DRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIpICAgXAorCXsgeyAwLCAwLCBEQnVmMSwgREJ1 ZjIgfSwgQklUKFBJUEVfQykgfCBCSVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCQ19E QlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsgeyBEQnVmMSwgREJ1ZjIsIERC dWYzLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9DKSB9CisjZGVm aW5lIElDTF9QSVBFX0FDRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsg eyBEQnVmMSwgMCwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQykgfCBC SVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0JDRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1 ZjIsIERCdWYzKSAgXAorCXsgeyAwLCBEQnVmMSwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0Ip IHwgQklUKFBJUEVfQykgfCBCSVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCRF9EQlVG X1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsgeyBEQnVmMSwgREJ1ZjIsIDAsIERC dWYzIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9EKSB9CisjZGVmaW5l IElDTF9QSVBFX0FCQ19EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsgeyBE QnVmMSwgREJ1ZjIsIERCdWYzLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQo UElQRV9DKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYy LCBEQnVmMywgREJ1ZjQpICBcCisJeyB7IERCdWYxLCBEQnVmMiwgREJ1ZjMsIERCdWY0IH0sIEJJ VChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBcCisJCQkJCSAgQklUKFBJUEVfQykgfCBCSVQoUElQ RV9EKSB9CisKKy8qCisgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVjIDEyNzE2CisgKiBQaXBlcyBk byBoYXZlIHNvbWUgcHJlZmVycmVkIERCdWYgc2xpY2UgYWZmaW5pdHksCisgKiBwbHVzIHRoZXJl IGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93CisgKiB0aG9zZSBzaG91bGQg YmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlwZSBzY2VuYXJpb3MuCisgKiBGb3IgbW9yZSBEQnVm IHNsaWNlcyBhbGdvcml0aG0gY2FuIGdldCBldmVuIG1vcmUgbWVzc3kKKyAqIGFuZCBsZXNzIHJl YWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAorICogYXMgaXMgZnJvbSBC U3BlYyBpdHNlbGYgLSB0aGF0IHdheSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKKyAqIHRvIGNvbXBh cmUsIGNoYW5nZSBhbmQgY2hlY2suCisgKi8KK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkg aWNsX2FsbG93ZWRfZGJ1ZnNbXSA9IHsKK3sgeyAwLCAwLCAwLCAwIH0sIDAgfSwKK0lDTF9QSVBF X0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlv IDwgODguOCAqLworSUNMX1BJUEVfQV9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCksICAgICAgICAg ICAgICAgIC8qIGZvciBwaXBlIHJhdGlvID49IDg4LjggKi8KK0lDTF9QSVBFX0JfREJVRl9TTElD RVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLwor SUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCksICAgICAgICAgICAgICAgIC8qIGZv ciBwaXBlIHJhdGlvID49IDg4LjggKi8KK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMV9C SVQgfCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLworSUNMX1BJUEVfQ19E QlVGX1NMSUNFUyhEQlVGX1MyX0JJVCksICAgICAgICAgICAgICAgIC8qIGZvciBwaXBlIHJhdGlv ID49IDg4LjggKi8KK0lDTF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1My X0JJVCksCitJQ0xfUElQRV9BQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAorSUNMX1BJUEVfQkNfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzJfQklUKSwKK0lD TF9QSVBFX0FCQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJf QklUKSwKK307CisKKy8qCisgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVjIDQ5MjU1CisgKiBQaXBl cyBkbyBoYXZlIHNvbWUgcHJlZmVycmVkIERCdWYgc2xpY2UgYWZmaW5pdHksCisgKiBwbHVzIHRo ZXJlIGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93CisgKiB0aG9zZSBzaG91 bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlwZSBzY2VuYXJpb3MuCisgKiBGb3IgbW9yZSBE QnVmIHNsaWNlcyBhbGdvcml0aG0gY2FuIGdldCBldmVuIG1vcmUgbWVzc3kKKyAqIGFuZCBsZXNz IHJlYWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAorICogYXMgaXMgZnJv bSBCU3BlYyBpdHNlbGYgLSB0aGF0IHdheSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKKyAqIHRvIGNv bXBhcmUsIGNoYW5nZSBhbmQgY2hlY2suCisgKi8KK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50 cnkgdGdsX2FsbG93ZWRfZGJ1ZnNbXSA9IHsKK3sgeyAwLCAwLCAwLCAwIH0sIDAgfSwKK0lDTF9Q SVBFX0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9C X0RCVUZfU0xJQ0VTKERCVUZfUzFfQklUIHwgREJVRl9TMl9CSVQpLAorSUNMX1BJUEVfQ19EQlVG X1NMSUNFUyhEQlVGX1MxX0JJVCB8IERCVUZfUzJfQklUKSwKK0lDTF9QSVBFX0RfREJVRl9TTElD RVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BQl9EQlVGX1NMSUNFUyhE QlVGX1MxX0JJVCwgREJVRl9TMl9CSVQpLAorSUNMX1BJUEVfQUNfREJVRl9TTElDRVMoREJVRl9T MV9CSVQsIERCVUZfUzJfQklUKSwKK0lDTF9QSVBFX0JDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklU LCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJV Rl9TMl9CSVQpLAorSUNMX1BJUEVfQkRfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzJf QklUKSwKK0lDTF9QSVBFX0NEX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCks CitJQ0xfUElQRV9BQkRfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBEQlVG X1MyX0JJVCksCitJQ0xfUElQRV9BQkNfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFf QklULCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BQ0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQs IERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9CQ0RfREJVRl9TTElDRVMoREJV Rl9TMV9CSVQsIERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BQkNEX0RCVUZf U0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQsIERCVUZfUzJfQklU KSwKK307CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuIGVudHJ5IHdpdGggc2FtZSBl bmFibGVkIHBpcGUgY29uZmlndXJhdGlvbiBhbmQKKyAqIHJldHVybnMgY29ycmVzcG9uZGVudCBE QnVmIHNsaWNlIG1hc2sgYXMgc3RhdGVkIGluIEJTcGVjIGZvciBwYXJ0aWN1bGFyCisgKiBwbGF0 Zm9ybS4KKyAqLworc3RhdGljIHUzMiBpY2xfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGludCBwaXBl LAorCQkJCSAgICAgdTMyIGFjdGl2ZV9waXBlcywKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWludCBpOworCXVpbnRfZml4ZWRfMTZfMTZf dCBwaXBlX3JhdGlvOworCisJLyoKKwkgKiBDYWxjdWxhdGUgcGlwZSByYXRpbyBhcyBzdGF0ZWQg aW4gQlNwZWMgMjg2OTIKKwkgKi8KKwlwaXBlX3JhdGlvID0gaWNsX2dldF9waXBlX3JhdGlvKGNy dGNfc3RhdGUpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaWNsX2FsbG93ZWRfZGJ1 ZnMpOyBpKyspIHsKKwkJaWYgKGljbF9hbGxvd2VkX2RidWZzW2ldLmFjdGl2ZV9waXBlcyA9PSBh Y3RpdmVfcGlwZXMpIHsKKwkJCWlmIChod2VpZ2h0MzIoYWN0aXZlX3BpcGVzKSA9PSAxKSB7CisJ CQkJLyoKKwkJCQkgKiBBY2NvcmRpbmcgdG8gQlNwZWMgMTI3MTY6IGlmIHJhdGlvID49IDg4LjgK KwkJCQkgKiBhbHdheXMgdXNlIHNpbmdsZSBkYnVmIHNsaWNlLgorCQkJCSAqLworCQkJCWlmIChw aXBlX3JhdGlvLnZhbCA+PSBkaXZfZml4ZWQxNig4ODgsIDEwKS52YWwpCisJCQkJCSsraTsKKwkJ CX0KKwkJCXJldHVybiBpY2xfYWxsb3dlZF9kYnVmc1tpXS5kYnVmX21hc2tbcGlwZV07CisJCX0K Kwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuIGVudHJ5 IHdpdGggc2FtZSBlbmFibGVkIHBpcGUgY29uZmlndXJhdGlvbiBhbmQKKyAqIHJldHVybnMgY29y cmVzcG9uZGVudCBEQnVmIHNsaWNlIG1hc2sgYXMgc3RhdGVkIGluIEJTcGVjIGZvciBwYXJ0aWN1 bGFyCisgKiBwbGF0Zm9ybS4KKyAqLworc3RhdGljIHUzMiB0Z2xfZ2V0X2FsbG93ZWRfZGJ1Zl9t YXNrKGludCBwaXBlLAorCQkJCSAgICAgdTMyIGFjdGl2ZV9waXBlcywKKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWludCBpOworCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGdsX2FsbG93ZWRfZGJ1ZnMpOyBpKyspIHsKKwkJaWYg KHRnbF9hbGxvd2VkX2RidWZzW2ldLmFjdGl2ZV9waXBlcyA9PSBhY3RpdmVfcGlwZXMpCisJCQly ZXR1cm4gdGdsX2FsbG93ZWRfZGJ1ZnNbaV0uZGJ1Zl9tYXNrW3BpcGVdOworCX0KKwlyZXR1cm4g MDsKK30KKwordTMyIGk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICBpbnQgcGlwZSwgdTMyIGFjdGl2ZV9waXBlcywK KwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sK KwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMSkpCisJCXJldHVybiBpY2xfZ2V0X2FsbG93ZWRfZGJ1 Zl9tYXNrKHBpcGUsCisJCQkJCQkgYWN0aXZlX3BpcGVzLAorCQkJCQkJIGNydGNfc3RhdGUpOwor CWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTIpKQorCQlyZXR1cm4gdGdsX2dldF9hbGxvd2Vk X2RidWZfbWFzayhwaXBlLAorCQkJCQkJIGFjdGl2ZV9waXBlcywKKwkJCQkJCSBjcnRjX3N0YXRl KTsKKwkvKgorCSAqIEZvciBhbnl0aGluZyBlbHNlIGp1c3QgcmV0dXJuIG9uZSBzbGljZSB5ZXQu CisJICogU2hvdWxkIGJlIGV4dGVuZGVkIGZvciBvdGhlciBwbGF0Zm9ybXMuCisJICovCisJcmV0 dXJuIERCVUZfUzFfQklUOworfQorCiBzdGF0aWMgdTY0CiBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZl X2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgdTY0 ICpwbGFuZV9kYXRhX3JhdGUpCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 822EFC5DF60 for ; Thu, 7 Nov 2019 13:13:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5D2A62075C for ; Thu, 7 Nov 2019 13:13:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5D2A62075C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 07DB16F695; Thu, 7 Nov 2019 13:13:08 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B5116F695 for ; Thu, 7 Nov 2019 13:13:06 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2019 05:13:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,278,1569308400"; d="scan'208";a="353791814" Received: from slisovsk-lenovo-ideapad-720s-13ikb.fi.intel.com ([10.237.72.89]) by orsmga004.jf.intel.com with ESMTP; 07 Nov 2019 05:13:03 -0800 From: Stanislav Lisovskiy To: intel-gfx@lists.freedesktop.org Date: Thu, 7 Nov 2019 15:10:20 +0200 Message-Id: <20191107131020.12869-1-stanislav.lisovskiy@intel.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v4] drm/i915: Enable second dbuf slice for ICL and TGL X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191107131020.O6XLbRyb8FFrvV9cOEkf9d9ISFGzBgesS8STykrQXFM@z> QWxzbyBpbXBsZW1lbnRlZCBhbGdvcml0aG0gZm9yIGNob29zaW5nIERCdWYgc2xpY2UgY29uZmln dXJhdGlvbgpiYXNlZCBvbiBhY3RpdmUgcGlwZXMsIHBpcGUgcmF0aW8gYXMgc3RhdGVkIGluIEJT cGVjIDEyNzE2LgoKTm93IHBpcGUgYWxsb2NhdGlvbiBzdGlsbCBzdGF5cyBwcm9wb3J0aW9uYWwg dG8gcGlwZSB3aWR0aCBhcyBiZWZvcmUsCmhvd2V2ZXIgd2l0aGluIGFsbG93ZWQgREJ1ZiBzbGlj ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCgp2MjogUmVtb3ZlIHVubmVlZGVk IGNoZWNrIGZyb20gY29tbWl0IGFzIGRkYiBlbmFibGVkIHNsaWNlcyBtaWdodAogICAgbm93IGRp ZmZlciBmcm9tIGh3IHN0YXRlLgoKdjM6IC0gQWRkZWQgbmV3IGZpZWxkICJzdXBwb3J0ZWRfc2xp Y2VzIiB0byBkZGIgdG8gc2VwYXJhdGUgbWF4CiAgICAgIHN1cHBvcnRlZCBzbGljZXMgdnMgY3Vy cmVudGx5IGVuYWJsZWQsIHRvIGF2b2lkIGNvbmZ1c2lvbi4KICAgIC0gUmVtb3ZlZCBvYnNvbGV0 ZSBjb21tZW50cyBhbmQgY29kZSByZWxhdGVkIHRvIERCdWYoTWF0dGhldyBSb3BlcikuCiAgICAt IFNvbWUgY29kZSBzdHlsZSBhbmQgbG9uZyBsaW5lIHJlbW92YWwoTWF0dGhldyBSb3BlcikuCiAg ICAtIEFkZGVkIFdBUk5fT04gdG8gbmV3IGRkYiByYW5nZSBvZmZzZXQgY2FsYyBmdW5jdGlvbihN YXR0aGV3IFJvcGVyKS4KICAgIC0gUmVtb3ZlZCBwbGF0Zm9ybSBzcGVjaWZpYyBjYWxsIHRvIGNh bGMgcGlwZSByYXRpbyBmcm9tIGRkYgogICAgICBhbGxvY2F0aW9uIGZ1bmN0aW9uIGFuZCBmaXhl ZCB0aGUgcmV0dXJuIHZhbHVlKE1hdHRoZXcgUm9wZXIpCiAgICAtIFJlZmFjdG9yZWQgREJVRiBz bGljZSBhbGxvY2F0aW9uIHRhYmxlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkKICAgIC0gQWRkZWQg REJVRiBzbGljZSBhbGxvY2F0aW9uIGZvciBUR0wgYXMgd2VsbC4KICAgIC0gSUNMKGhvd2V2ZXIg bm90IFRHTCkgc2VlbXMgdG8gdm9sdW50YXJpbHkgZW5hYmxlIHNlY29uZCBEQnVmIHNsaWNlCiAg ICAgIGFmdGVyIHBtIHN1c3BlbmQvcmVzdW1lIGNhdXNpbmcgYSBtaXNtYXRjaCBmYWlsdXJlLCBi ZWNhdXNlIHdlCiAgICAgIHVwZGF0ZSBEQnVmIHNsaWNlcyBvbmx5IGlmIHdlIGRvIGEgbW9kZXNl dCwgaG93ZXZlciB0aGlzIGNoZWNrCiAgICAgIGlzIGRvbmUgYWx3YXlzLiBGaXhlZCBpdCB0byBi ZSBkb25lIG9ubHkgd2hlbiBtb2Rlc2V0IGZvciBJQ0wuCgp2NDogLSBOb3cgZW5hYmxlZCBzbGlj ZXMgaXMgbm90IGFjdHVhbGx5IGEgbnVtYmVyLCBidXQgYSBiaXRtYXNrLAogICAgICBiZWNhdXNl IHdlIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIHNlY29uZCBzbGljZSBvbmx5IGFuZCBudW1iZXIKICAg ICAgb2Ygc2xpY2VzIHdvdWxkIHN0aWxsIDEgYW5kIHRoYXQgY3VycmVudCBjb2RlIGRvZXNuJ3Qg YWxsb3cuCiAgICAtIFJlbW92ZSByZWR1bmRhbnQgZHVwbGljYXRlIGNvZGUgdG8gaGF2ZSBzb21l IHVuaWZpZWQgd2F5IG9mCiAgICAgIGVuYWJsaW5nIGRidWYgc2xpY2VzIGluc3RlYWQgb2YgaGFy ZGNvZGluZy4KClNpZ25lZC1vZmYtYnk6IFN0YW5pc2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5s aXNvdnNraXlAaW50ZWwuY29tPgpDYzogTWF0dGhldyBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+CkNj OiBKYW1lcyBBdXNtdXMgPGphbWVzLmF1c211c0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDIyICstCiAuLi4vZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgICAgfCAgODMgKystLQogLi4uL2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8ICAgNSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jICAgICAgICAgICAgICAgfCAzOTEgKysrKysrKysrKysrKysrKy0tCiA3IGZp bGVzIGNoYW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCmluZGV4IDg3NmZjMjU5Njhi Zi4uZWU2M2RhMTg3NzJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwpAQCAtMTMzODYsOCArMTMzODYsOSBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21f c3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJc3dfZGRiID0gJmRldl9wcml2LT53bS5z a2xfaHcuZGRiOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYKLQkgICAgaHct PmRkYi5lbmFibGVkX3NsaWNlcyAhPSBzd19kZGItPmVuYWJsZWRfc2xpY2VzKQotCQlEUk1fRVJS T1IoIm1pc21hdGNoIGluIERCVUYgU2xpY2VzIChleHBlY3RlZCAldSwgZ290ICV1KVxuIiwKKwkg ICAgaHctPmRkYi5lbmFibGVkX3NsaWNlcyAhPSBzd19kZGItPmVuYWJsZWRfc2xpY2VzICYmCisJ ICAgIG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQorCQlEUk1fRVJST1IoIm1pc21hdGNo IGluIERCVUYgU2xpY2VzIChleHBlY3RlZCAleCwgZ290ICV4KVxuIiwKIAkJCSAgc3dfZGRiLT5l bmFibGVkX3NsaWNlcywKIAkJCSAgaHctPmRkYi5lbmFibGVkX3NsaWNlcyk7CiAKQEAgLTE0NjEz LDE2ICsxNDYxNCwyMSBAQCBzdGF0aWMgdm9pZCBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpbnQgaTsKIAl1OCBod19lbmFibGVk X3NsaWNlcyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwogCXU4IHJl cXVpcmVkX3NsaWNlcyA9IHN0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKLQlz dHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSA9IHt9OworCXU4IHNs aWNlc191bmlvbiA9IGh3X2VuYWJsZWRfc2xpY2VzIHwgcmVxdWlyZWRfc2xpY2VzOworCXU4IHNs aWNlc19pbnRlcnNlY3Rpb24gPSBzbGljZXNfdW5pb24gJiByZXF1aXJlZF9zbGljZXM7CiAKKwlz dHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSA9IHt9OwogCWZvcl9l YWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0 ZSwgbmV3X2NydGNfc3RhdGUsIGkpCiAJCS8qIGlnbm9yZSBhbGxvY2F0aW9ucyBmb3IgY3J0Yydz IHRoYXQgaGF2ZSBiZWVuIHR1cm5lZCBvZmYuICovCiAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+aHcu YWN0aXZlKQogCQkJZW50cmllc1tpXSA9IG9sZF9jcnRjX3N0YXRlLT53bS5za2wuZGRiOwogCi0J LyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJlICovCi0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzID4gaHdfZW5hYmxlZF9z bGljZXMpCi0JCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHJlcXVpcmVkX3NsaWNl cyk7CisJRFJNX0RFQlVHX0tNUygiREJ1ZiByZXEgc2xpY2VzICVkIGh3IHNsaWNlcyAlZFxuIiwK KwkJICAgICAgcmVxdWlyZWRfc2xpY2VzLCBod19lbmFibGVkX3NsaWNlcyk7CisKKwkvKiBJZiBz b21lIG90aGVyIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJlICovCisJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzICE9IGh3X2VuYWJsZWRf c2xpY2VzKQorCQlpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCBzbGljZXNfdW5pb24p OwogCiAJLyoKIAkgKiBXaGVuZXZlciB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBwaXBlcyBjaGFuZ2Vz LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZQpAQCAtMTQ2ODIsOCArMTQ2ODgsOCBAQCBzdGF0aWMg dm9pZCBza2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSkKIAl9IHdoaWxlIChwcm9ncmVzcyk7CiAKIAkvKiBJZiAybmQgREJ1ZiBzbGljZSBp cyBubyBtb3JlIHJlcXVpcmVkIGRpc2FibGUgaXQgKi8KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgPCBod19lbmFibGVkX3NsaWNlcykKLQkJaWNsX2Ri dWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgIT0gaHdfZW5hYmxlZF9zbGlj ZXMpCisJCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHNsaWNlc19pbnRlcnNlY3Rp b24pOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfaGVscGVyX2ZyZWVfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwppbmRleCBjZTFiNjRmNGRkNDQuLmM5 MjIwNDdmYzI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3Bvd2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3Bvd2VyLmMKQEAgLTQyNTQsMzEgKzQyNTQsNTMgQEAgc3RhdGljIHZvaWQgZ2Vu OV9kYnVmX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVs X2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LCBEQlVGX0NUTCwgZmFsc2UpOwogfQogCi1zdGF0aWMg dTggaW50ZWxfZGJ1Zl9tYXhfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3U4IGludGVsX2RidWZfbWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiB7CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKIAkJcmV0dXJuIDE7CiAJ cmV0dXJuIDI7CiB9CiAKK3ZvaWQgaWNsX2RidWZfc2xpY2VzX3Jlc3RvcmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWNvbnN0IHU4IGh3X2VuYWJsZWRfc2xpY2VzID0g ZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7CisKKwlpY2xfZGJ1Zl9zbGlj ZXNfdXBkYXRlKGRldl9wcml2LCBod19lbmFibGVkX3NsaWNlcyk7Cit9CisKIHZvaWQgaWNsX2Ri dWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkg ICAgdTggcmVxX3NsaWNlcykKIHsKLQljb25zdCB1OCBod19lbmFibGVkX3NsaWNlcyA9IGRldl9w cml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwotCWJvb2wgcmV0OworCWJvb2wgcmV0 ID0gdHJ1ZTsKKwlpbnQgaTsKKwlpbnQgbWF4X3NsaWNlcyA9IGludGVsX2RidWZfbWF4X3NsaWNl cyhkZXZfcHJpdik7CiAKLQlpZiAocmVxX3NsaWNlcyA+IGludGVsX2RidWZfbWF4X3NsaWNlcyhk ZXZfcHJpdikpIHsKKwlpZiAoaHdlaWdodDgocmVxX3NsaWNlcykgPiBpbnRlbF9kYnVmX21heF9z bGljZXMoZGV2X3ByaXYpKSB7CiAJCURSTV9FUlJPUigiSW52YWxpZCBudW1iZXIgb2YgZGJ1ZiBz bGljZXMgcmVxdWVzdGVkXG4iKTsKIAkJcmV0dXJuOwogCX0KIAotCWlmIChyZXFfc2xpY2VzID09 IGh3X2VuYWJsZWRfc2xpY2VzIHx8IHJlcV9zbGljZXMgPT0gMCkKLQkJcmV0dXJuOworCURSTV9E RUJVR19LTVMoIlVwZGF0aW5nIGRidWYgc2xpY2VzIHRvICV4XG4iLCByZXFfc2xpY2VzKTsKIAot CWlmIChyZXFfc2xpY2VzID4gaHdfZW5hYmxlZF9zbGljZXMpCi0JCXJldCA9IGludGVsX2RidWZf c2xpY2Vfc2V0KGRldl9wcml2LCBEQlVGX0NUTF9TMiwgdHJ1ZSk7Ci0JZWxzZQotCQlyZXQgPSBp bnRlbF9kYnVmX3NsaWNlX3NldChkZXZfcHJpdiwgREJVRl9DVExfUzIsIGZhbHNlKTsKKwlmb3Ig KGkgPSAwOyBpIDwgbWF4X3NsaWNlczsgaSsrKSB7CisJCWludCBzbGljZV9iaXQgPSAxIDw8IGk7 CisJCWJvb2wgc2xpY2Vfc2V0ID0gKChzbGljZV9iaXQpICYgcmVxX3NsaWNlcykgIT0gMDsKKwor CQlzd2l0Y2ggKHNsaWNlX2JpdCkgeworCQljYXNlIERCVUZfUzFfQklUOgorCQkJcmV0ID0gcmV0 ICYmIGludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LAorCQkJCQkJCSAgREJVRl9DVExfUzEs CisJCQkJCQkJICBzbGljZV9zZXQpOworCQkJYnJlYWs7CisJCWNhc2UgREJVRl9TMl9CSVQ6CisJ CQlyZXQgPSByZXQgJiYgaW50ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3ByaXYsCisJCQkJCQkJICBE QlVGX0NUTF9TMiwKKwkJCQkJCQkgIHNsaWNlX3NldCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK KwkJCVdBUk4oMSwgIlVuc3VwcG9ydGVkIERCVUYgc2xpY2UiKTsKKwkJfQorCX0KIAogCWlmIChy ZXQpCiAJCWRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gcmVxX3NsaWNl czsKQEAgLTQyODYsNDAgKzQzMDgsMjEgQEAgdm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogc3RhdGljIHZvaWQgaWNsX2RidWZf ZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlJOTE1X1dSSVRF KERCVUZfQ1RMX1MxLCBJOTE1X1JFQUQoREJVRl9DVExfUzEpIHwgREJVRl9QT1dFUl9SRVFVRVNU KTsKLQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MyLCBJOTE1X1JFQUQoREJVRl9DVExfUzIpIHwgREJV Rl9QT1dFUl9SRVFVRVNUKTsKLQlQT1NUSU5HX1JFQUQoREJVRl9DVExfUzIpOwotCi0JdWRlbGF5 KDEwKTsKLQotCWlmICghKEk5MTVfUkVBRChEQlVGX0NUTF9TMSkgJiBEQlVGX1BPV0VSX1NUQVRF KSB8fAotCSAgICAhKEk5MTVfUkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkK LQkJRFJNX0VSUk9SKCJEQnVmIHBvd2VyIGVuYWJsZSB0aW1lb3V0XG4iKTsKLQllbHNlCi0JCS8q Ci0JCSAqIEZJWE1FOiBmb3Igbm93IHByZXRlbmQgdGhhdCB3ZSBvbmx5IGhhdmUgMSBzbGljZSwg c2VlCi0JCSAqIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCi0JCSAqLwotCQlkZXZf cHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IDE7CisJLyoKKwkgKiBGb3Igbm93 IHByZXRlbmQgdGhhdCB3ZSBvbmx5IGhhdmUgMSBzbGljZSwgd2Ugd2lsbAorCSAqIGZpZ3VyZSBv dXQgbGF0ZXIgd2hpY2ggc2xpY2VzIHdlIGhhdmUgYW5kIHdoYXQgd2UgbmVlZC4KKwkgKi8KKwlk ZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IDE7CisJaWNsX2RidWZfc2xp Y2VzX3Jlc3RvcmUoZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlJOTE1X1dSSVRFKERCVUZf Q1RMX1MxLCBJOTE1X1JFQUQoREJVRl9DVExfUzEpICYgfkRCVUZfUE9XRVJfUkVRVUVTVCk7Ci0J STkxNV9XUklURShEQlVGX0NUTF9TMiwgSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIH5EQlVGX1BP V0VSX1JFUVVFU1QpOwotCVBPU1RJTkdfUkVBRChEQlVGX0NUTF9TMik7Ci0KLQl1ZGVsYXkoMTAp OwotCi0JaWYgKChJOTE1X1JFQUQoREJVRl9DVExfUzEpICYgREJVRl9QT1dFUl9TVEFURSkgfHwK LQkgICAgKEk5MTVfUkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkKLQkJRFJN X0VSUk9SKCJEQnVmIHBvd2VyIGRpc2FibGUgdGltZW91dCFcbiIpOwotCWVsc2UKLQkJLyoKLQkJ ICogRklYTUU6IGZvciBub3cgcHJldGVuZCB0aGF0IHRoZSBmaXJzdCBzbGljZSBpcyBhbHdheXMK LQkJICogZW5hYmxlZCwgc2VlIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCi0JCSAq LwotCQlkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IDE7CisJLyoKKwkg KiBEaXNhYmxlIGFsbCBzbGljZXMKKwkgKi8KKwlkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFi bGVkX3NsaWNlcyA9IDA7CisJaWNsX2RidWZfc2xpY2VzX3Jlc3RvcmUoZGV2X3ByaXYpOwogfQog CiBzdGF0aWMgdm9pZCBpY2xfbWJ1c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV9wb3dlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3Bvd2VyLmgKaW5kZXggMWRhMDRmM2UwZmIzLi40ZDViYjBhY2NlZjcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oCkBAIC0zMTEs OCArMzExLDEwIEBAIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1LAogCWZvciAoKHdmKSA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KChp OTE1KSwgKGRvbWFpbikpOyAod2YpOyBcCiAJICAgICBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9h c3luYygoaTkxNSksIChkb21haW4pLCAod2YpKSwgKHdmKSA9IDApCiAKK3U4IGludGVsX2RidWZf bWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpY2xf ZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ CSAgICB1OCByZXFfc2xpY2VzKTsKK3ZvaWQgaWNsX2RidWZfc2xpY2VzX3Jlc3RvcmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAogdm9pZCBjaHZfcGh5X3Bvd2VyZ2F0ZV9s YW5lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgICAgYm9vbCBvdmVycmlk ZSwgdW5zaWduZWQgaW50IG1hc2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggODJlNGU2 YmYwOGMzLi4wMzA3YWVjMmM5MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNTEsNiAr NTEsNyBAQAogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfYncuaCIKICNpbmNsdWRlICJkaXNwbGF5 L2ludGVsX2NkY2xrLmgiCiAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgi CisjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgiCiAjaW5jbHVkZSAiZGlz cGxheS9pbnRlbF9kcC5oIgogI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZmJkZXYuaCIKICNpbmNs dWRlICJkaXNwbGF5L2ludGVsX2hvdHBsdWcuaCIKQEAgLTI1ODgsNiArMjU4OSwxMCBAQCBzdGF0 aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmtkZXYpCiAJaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQlyZXQg PSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIHRydWUpOwogCisJLyogV2VpcmQgaGFjayB0 byBmaXggSUNMIGhhcmR3YXJlIGJ1ZywgYXMgaXQgcmVzZXRzIERCVUYgc2xpY2VzIHJlZyAqLwor CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID09IDExKQorCQlpY2xfZGJ1Zl9zbGljZXNfcmVzdG9y ZShkZXZfcHJpdik7CisKIAlpbnRlbF91bmNvcmVfcnVudGltZV9yZXN1bWUoJmRldl9wcml2LT51 bmNvcmUpOwogCiAJaW50ZWxfcnVudGltZV9wbV9lbmFibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA3ZTBmNjdiYWJlMjAuLjc4YmQwMTBjYjU5YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC04MDQsNyArODA0LDggQEAgc3RhdGljIGlubGlu ZSBib29sIHNrbF9kZGJfZW50cnlfZXF1YWwoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUx LAogfQogCiBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKLQl1OCBlbmFibGVkX3NsaWNlczsg LyogR0VOMTEgaGFzIGNvbmZpZ3VyYWJsZSAyIHNsaWNlcyAqLworCXU4IGVuYWJsZWRfc2xpY2Vz OyAgIC8qIEJpdG1hc2sgb2YgY3VycmVudGx5IGVuYWJsZWQgREJ1ZiBzbGljZXMgKi8KKwl1OCBz dXBwb3J0ZWRfc2xpY2VzOyAvKiBHRU4gMTEgc3VwcG9ydHMgMiBzbGljZXMgKi8KIH07CiAKIHN0 cnVjdCBza2xfZGRiX3ZhbHVlcyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCBhNjA3ZWE1 MjA4MjkuLjdlY2EyYWRiYjI4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC03NzM0LDYg Kzc3MzQsOCBAQCBlbnVtIHsKICNkZWZpbmUgRElTUF9BUkJfQ1RMMglfTU1JTygweDQ1MDA0KQog I2RlZmluZSAgRElTUF9EQVRBX1BBUlRJVElPTl81XzYJKDEgPDwgNikKICNkZWZpbmUgIERJU1Bf SVBDX0VOQUJMRQkJKDEgPDwgMykKKyNkZWZpbmUgREJVRl9TMV9CSVQJCQkxCisjZGVmaW5lIERC VUZfUzJfQklUCQkJMgogI2RlZmluZSBEQlVGX0NUTAlfTU1JTygweDQ1MDA4KQogI2RlZmluZSBE QlVGX0NUTF9TMQlfTU1JTygweDQ1MDA4KQogI2RlZmluZSBEQlVGX0NUTF9TMglfTU1JTygweDQ0 RkU4KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMmQzODllNDM3ZTg3Li5lYmU1MzdhNDc4 NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzU4NiwyNCArMzU4NiwyMCBAQCBib29s IGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIF9pbGtf ZGlzYWJsZV9scF93bShkZXZfcHJpdiwgV01fRElSVFlfTFBfQUxMKTsKIH0KIAotc3RhdGljIHU4 IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3N0YXRpYyB1OCBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQl1OCBlbmFibGVkX3NsaWNlczsKLQotCS8qIFNs aWNlIDEgd2lsbCBhbHdheXMgYmUgZW5hYmxlZCAqLwotCWVuYWJsZWRfc2xpY2VzID0gMTsKKwl1 OCBlbmFibGVkX3NsaWNlcyA9IDA7CiAKIAkvKiBHZW4gcHJpb3IgdG8gR0VOMTEgaGF2ZSBvbmx5 IG9uZSBEQnVmIHNsaWNlICovCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKLQkJcmV0 dXJuIGVuYWJsZWRfc2xpY2VzOworCQlyZXR1cm4gMTsKIAotCS8qCi0JICogRklYTUU6IGZvciBu b3cgd2UnbGwgb25seSBldmVyIHVzZSAxIHNsaWNlOyBwcmV0ZW5kIHRoYXQgd2UgaGF2ZQotCSAq IG9ubHkgdGhhdCAxIHNsaWNlIGVuYWJsZWQgdW50aWwgd2UgaGF2ZSBhIHByb3BlciB3YXkgZm9y IG9uLWRlbWFuZAotCSAqIHRvZ2dsaW5nIG9mIHRoZSBzZWNvbmQgc2xpY2UuCi0JICovCi0JaWYg KDAgJiYgSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpCi0JCWVuYWJs ZWRfc2xpY2VzKys7CisJLyogQ2hlY2sgaWYgc2Vjb25kIERCdWYgc2xpY2UgaXMgZW5hYmxlZCAq LworCWlmIChJOTE1X1JFQUQoREJVRl9DVExfUzEpICYgREJVRl9QT1dFUl9TVEFURSkKKwkJZW5h YmxlZF9zbGljZXMgfD0gMTsKKworCWlmIChJOTE1X1JFQUQoREJVRl9DVExfUzIpICYgREJVRl9Q T1dFUl9TVEFURSkKKwkJZW5hYmxlZF9zbGljZXMgfD0gMjsKIAogCXJldHVybiBlbmFibGVkX3Ns aWNlczsKIH0KQEAgLTM4MTIsMzYgKzM4MDgsNDQgQEAgc3RhdGljIHUxNiBpbnRlbF9nZXRfZGRi X3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgY29uc3Qg aW50IG51bV9hY3RpdmUsCiAJCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIp CiB7Ci0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Ci0JdTY0 IHRvdGFsX2RhdGFfYnc7CiAJdTE2IGRkYl9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmRk Yl9zaXplOwogCiAJV0FSTl9PTihkZGJfc2l6ZSA9PSAwKTsKKwlkZGItPnN1cHBvcnRlZF9zbGlj ZXMgPSBpbnRlbF9kYnVmX21heF9zbGljZXMoZGV2X3ByaXYpOwogCiAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCAxMSkKIAkJcmV0dXJuIGRkYl9zaXplIC0gNDsgLyogNCBibG9ja3MgZm9yIGJ5 cGFzcyBwYXRoIGFsbG9jYXRpb24gKi8KIAotCWFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZTsKLQl0b3RhbF9kYXRhX2J3ID0gdG90YWxfZGF0YV9yYXRlICogZHJt X21vZGVfdnJlZnJlc2goYWRqdXN0ZWRfbW9kZSk7CisJcmV0dXJuIGRkYl9zaXplOworfQogCi0J LyoKLQkgKiAxMkdCL3MgaXMgbWF4aW11bSBCVyBzdXBwb3J0ZWQgYnkgc2luZ2xlIERCdWYgc2xp Y2UuCi0JICoKLQkgKiBGSVhNRSBkYnVmIHNsaWNlIGNvZGUgaXMgYnJva2VuOgotCSAqIC0gbXVz dCB3YWl0IGZvciBwbGFuZXMgdG8gc3RvcCB1c2luZyB0aGUgc2xpY2UgYmVmb3JlIHBvd2VyaW5n IGl0IG9mZgotCSAqIC0gcGxhbmUgc3RyYWRkbGluZyBib3RoIHNsaWNlcyBpcyBpbGxlZ2FsIGlu IG11bHRpLXBpcGUgc2NlbmFyaW9zCi0JICogLSBzaG91bGQgdmFsaWRhdGUgd2Ugc3RheSB3aXRo aW4gdGhlIGh3IGJhbmR3aWR0aCBsaW1pdHMKLQkgKi8KLQlpZiAoMCAmJiAobnVtX2FjdGl2ZSA+ IDEgfHwgdG90YWxfZGF0YV9idyA+PSBHQnBzKDEyKSkpIHsKLQkJZGRiLT5lbmFibGVkX3NsaWNl cyA9IDI7Ci0JfSBlbHNlIHsKLQkJZGRiLT5lbmFibGVkX3NsaWNlcyA9IDE7Ci0JCWRkYl9zaXpl IC89IDI7Ci0JfQorLyoKKyAqIENhbGN1bGF0ZSBpbml0aWFsIERCdWYgc2xpY2Ugb2Zmc2V0LCBi YXNlZCBvbiBzbGljZSBzaXplCisgKiBhbmQgbWFzayhpLmUgaWYgc2xpY2Ugc2l6ZSBpcyAxMDI0 IGFuZCBzZWNvbmQgc2xpY2UgaXMgZW5hYmxlZAorICogb2Zmc2V0IHdvdWxkIGJlIDEwMjQpCisg Ki8KK3N0YXRpYyB1MzIgc2tsX2dldF9maXJzdF9kYnVmX3NsaWNlX29mZnNldCh1MzIgZGJ1Zl9z bGljZV9tYXNrLAorCQkJCQkgICB1MzIgc2xpY2Vfc2l6ZSwgdTMyIGRkYl9zaXplKQoreworCXUz MiBvZmZzZXQgPSAwOwogCi0JcmV0dXJuIGRkYl9zaXplOworCWlmICghZGJ1Zl9zbGljZV9tYXNr KQorCQlyZXR1cm4gMDsKKworCXdoaWxlICghKGRidWZfc2xpY2VfbWFzayAmIDEpKSB7CisJCWRi dWZfc2xpY2VfbWFzayA+Pj0gMTsKKwkJb2Zmc2V0ICs9IHNsaWNlX3NpemU7CisJCWlmIChvZmZz ZXQgPj0gZGRiX3NpemUpCisJCQlicmVhazsKKwl9CisJV0FSTl9PTihvZmZzZXQgPj0gZGRiX3Np emUpOworCXJldHVybiBvZmZzZXQ7CiB9CiAKK3N0YXRpYyB1MzIgaTkxNV9nZXRfYWxsb3dlZF9k YnVmX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICAgIGlu dCBwaXBlLCB1MzIgYWN0aXZlX3BpcGVzLAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKKwogc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVf YWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLApAQCAtMzg1Nyw3 ICszODYxLDE0IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXUzMiBwaXBlX3dpZHRoID0gMCwgdG90YWxfd2lk dGggPSAwLCB3aWR0aF9iZWZvcmVfcGlwZSA9IDA7CiAJZW51bSBwaXBlIGZvcl9waXBlID0gdG9f aW50ZWxfY3J0Yyhmb3JfY3J0YyktPnBpcGU7CiAJdTE2IGRkYl9zaXplOworCXUzMiBkZGJfcmFu Z2Vfc2l6ZTsKIAl1MzIgaTsKKwl1MzIgZGJ1Zl9zbGljZV9tYXNrOworCXUzMiBhY3RpdmVfcGlw ZXM7CisJdTMyIG9mZnNldDsKKwl1MzIgc2xpY2Vfc2l6ZTsKKwl1MzIgdG90YWxfc2xpY2VfbWFz azsKKwl1MzIgc3RhcnQsIGVuZDsKIAogCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSkgewogCQlhbGxvYy0+c3RhcnQgPSAwOwpAQCAtMzg2NiwxNCArMzg3Nywy MyBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJcmV0dXJuOwogCX0KIAotCWlmIChpbnRlbF9zdGF0ZS0+YWN0 aXZlX3BpcGVfY2hhbmdlcykKKwlpZiAoaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMp IHsKIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsK LQllbHNlCisJCWFjdGl2ZV9waXBlcyA9IGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZXM7CisJfSBl bHNlIHsKIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKTsK KwkJYWN0aXZlX3BpcGVzID0gZGV2X3ByaXYtPmFjdGl2ZV9waXBlczsKKwl9CiAKIAlkZGJfc2l6 ZSA9IGludGVsX2dldF9kZGJfc2l6ZShkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9y YXRlLAogCQkJCSAgICAgICpudW1fYWN0aXZlLCBkZGIpOwogCisJRFJNX0RFQlVHX0tNUygiR290 IHRvdGFsIGRkYiBzaXplICVkXG4iLCBkZGJfc2l6ZSk7CisKKwlzbGljZV9zaXplID0gZGRiX3Np emUgLyBkZGItPnN1cHBvcnRlZF9zbGljZXM7CisKKwlEUk1fREVCVUdfS01TKCJHb3QgREJ1ZiBz bGljZSBzaXplICVkXG4iLCBzbGljZV9zaXplKTsKKwogCS8qCiAJICogSWYgdGhlIHN0YXRlIGRv ZXNuJ3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJlIGlzIG5vCiAJICogbW9kZXNl dCByZXF1ZXN0LCB0aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byByZWNhbGN1bGF0ZTsKQEAgLTM4OTEs MjAgKzM5MTEsNzMgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJldHVybjsKIAl9CiAKKwkvKgorCSAqIEdl dCBhbGxvd2VkIERCdWYgc2xpY2VzIGZvciBjb3JyZXNwb25kZW50IHBpcGUgYW5kIHBsYXRmb3Jt LgorCSAqLworCWRidWZfc2xpY2VfbWFzayA9IGk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGRl dl9wcml2LCBmb3JfcGlwZSwKKwkJCQkJCSAgICAgYWN0aXZlX3BpcGVzLCBjcnRjX3N0YXRlKTsK KworCURSTV9ERUJVR19LTVMoIkRCdWYgc2xpY2UgbWFzayAleCBwaXBlICVkIGFjdGl2ZSBwaXBl cyAleFxuIiwKKwkJICAgICAgZGJ1Zl9zbGljZV9tYXNrLAorCQkgICAgICBmb3JfcGlwZSwgYWN0 aXZlX3BpcGVzKTsKKworCS8qCisJICogRmlndXJlIG91dCBhdCB3aGljaCBEQnVmIHNsaWNlIHdl IHN0YXJ0LCBpLmUgaWYgd2Ugc3RhcnQgYXQgRGJ1ZiBTMgorCSAqIGFuZCBzbGljZSBzaXplIGlz IDEwMjQsIHRoZSBvZmZzZXQgd291bGQgYmUgMTAyNAorCSAqLworCW9mZnNldCA9IHNrbF9nZXRf Zmlyc3RfZGJ1Zl9zbGljZV9vZmZzZXQoZGJ1Zl9zbGljZV9tYXNrLAorCQkJCQkJIHNsaWNlX3Np emUsIGRkYl9zaXplKTsKKworCS8qCisJICogRmlndXJlIG91dCB0b3RhbCBzaXplIG9mIGFsbG93 ZWQgREJ1ZiBzbGljZXMsIHdoaWNoIGlzIGJhc2ljYWxseQorCSAqIGEgbnVtYmVyIG9mIGFsbG93 ZWQgc2xpY2VzIGZvciB0aGF0IHBpcGUgbXVsdGlwbGllZCBieSBzbGljZSBzaXplLgorCSAqIFdl IG1pZ2h0IHN0aWxsIGhhdmUgc29tZSBkYnVmIHNsaWNlcyBkaXNhYmxlZCBpbiBjYXNlIGlmIHRo b3NlCisJICogYXJlIG5vdCBuZWVkZWQgYmFzZWQgb24gYmFuZHdpZHRoIHJlcXVpcmVtZW50cyBh bmQgbnVtX2FjdGl2ZSBwaXBlcywKKwkgKiBzbyBzdGljayB0byByZWFsIGRkYiBzaXplIGlmIGl0 IGhhcHBlbnMgdG8gYmUgbGVzcy4gSW5zaWRlIG9mIHRoaXMKKwkgKiByYW5nZSBkZGIgZW50cmll cyBhcmUgc3RpbGwgYWxsb2NhdGVkIGluIHByb3BvcnRpb24gdG8gZGlzcGxheSB3aWR0aC4KKwkg Ki8KKwlkZGJfcmFuZ2Vfc2l6ZSA9IG1pbihod2VpZ2h0OChkYnVmX3NsaWNlX21hc2spICogc2xp Y2Vfc2l6ZSwKKwkJCSAgICAgKHVuc2lnbmVkIGludClkZGJfc2l6ZSk7CisKIAkvKgogCSAqIFdh dGVybWFyay9kZGIgcmVxdWlyZW1lbnQgaGlnaGx5IGRlcGVuZHMgdXBvbiB3aWR0aCBvZiB0aGUK IAkgKiBmcmFtZWJ1ZmZlciwgU28gaW5zdGVhZCBvZiBhbGxvY2F0aW5nIEREQiBlcXVhbGx5IGFt b25nIHBpcGVzCiAJICogZGlzdHJpYnV0ZSBEREIgYmFzZWQgb24gcmVzb2x1dGlvbi93aWR0aCBv ZiB0aGUgZGlzcGxheS4KIAkgKi8KKwl0b3RhbF9zbGljZV9tYXNrID0gZGJ1Zl9zbGljZV9tYXNr OwogCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBj cnRjX3N0YXRlLCBpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0KIAkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwogCQllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7CiAJCWludCBoZGlzcGxheSwgdmRpc3BsYXk7CisJCXUzMiBwaXBl X2RidWZfc2xpY2VfbWFzayA9IFwKKwkJCWk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGRldl9w cml2LAorCQkJCQkJcGlwZSwKKwkJCQkJCWFjdGl2ZV9waXBlcywKKwkJCQkJCWNydGNfc3RhdGUp OwogCiAJCWlmICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQogCQkJY29udGludWU7CiAKKwkJLyoK KwkJICogQWNjb3JkaW5nIHRvIEJTcGVjIHBpcGUgY2FuIHNoYXJlIG9uZSBkYnVmIHNsaWNlIHdp dGggYW5vdGhlcgorCQkgKiBwaXBlcyBvciBwaXBlIGNhbiB1c2UgbXVsdGlwbGUgZGJ1ZnMsIGlu IGJvdGggY2FzZXMgd2UKKwkJICogYWNjb3VudCBmb3Igb3RoZXIgcGlwZXMgb25seSBpZiB0aGV5 IGhhdmUgZXhhY3RseSBzYW1lIG1hc2suCisJCSAqIEhvd2V2ZXIgd2UgbmVlZCB0byBhY2NvdW50 IGhvdyBtYW55IHNsaWNlcyB3ZSBzaG91bGQgZW5hYmxlCisJCSAqIGluIHRvdGFsLgorCQkgKi8K KwkJdG90YWxfc2xpY2VfbWFzayB8PSBwaXBlX2RidWZfc2xpY2VfbWFzazsKKworCQkvKgorCQkg KiBEbyBub3QgYWNjb3VudCBwaXBlcyB1c2luZyBvdGhlciBzbGljZSBzZXRzCisJCSAqIGx1Y2tp bHkgYXMgb2YgY3VycmVudCBCU3BlYyBzbGljZSBzZXRzIGRvIG5vdCBwYXJ0aWFsbHkKKwkJICog aW50ZXJzZWN0KHBpcGVzIHNoYXJlIGVpdGhlciBzYW1lIG9uZSBzbGljZSBvciBzYW1lIHNsaWNl IHNldAorCQkgKiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBlbm91Z2gg dG8gY2hlY2sgZm9yCisJCSAqIGVxdWFsaXR5IGZvciBub3cuCisJCSAqLworCQlpZiAoZGJ1Zl9z bGljZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQorCQkJY29udGludWU7CisKIAkJZHJt X21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxheSk7 CiAJCXRvdGFsX3dpZHRoICs9IGhkaXNwbGF5OwogCkBAIC0zOTE0LDggKzM5ODcsMTkgQEAgc2ts X2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQlwaXBlX3dpZHRoID0gaGRpc3BsYXk7CiAJfQogCi0JYWxsb2MtPnN0YXJ0 ID0gZGRiX3NpemUgKiB3aWR0aF9iZWZvcmVfcGlwZSAvIHRvdGFsX3dpZHRoOwotCWFsbG9jLT5l bmQgPSBkZGJfc2l6ZSAqICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxf d2lkdGg7CisJZGRiLT5lbmFibGVkX3NsaWNlcyA9IHRvdGFsX3NsaWNlX21hc2s7CisKKwlzdGFy dCA9IGRkYl9yYW5nZV9zaXplICogd2lkdGhfYmVmb3JlX3BpcGUgLyB0b3RhbF93aWR0aDsKKwll bmQgPSBkZGJfcmFuZ2Vfc2l6ZSAqICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8g dG90YWxfd2lkdGg7CisKKwlhbGxvYy0+c3RhcnQgPSBvZmZzZXQgKyBzdGFydDsKKwlhbGxvYy0+ ZW5kID0gb2Zmc2V0ICsgZW5kOworCisJRFJNX0RFQlVHX0tNUygiUGlwZSAlZCBkZGIgJWQtJWRc biIsIGZvcl9waXBlLAorCQkgICAgICBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQpOworCURSTV9E RUJVR19LTVMoIkVuYWJsZWQgZGRiIHNsaWNlcyBtYXNrICV4IG51bSBzdXBwb3J0ZWQgJWRcbiIs CisJCSAgICAgIGRkYi0+ZW5hYmxlZF9zbGljZXMsCisJCSAgICAgIGRkYi0+c3VwcG9ydGVkX3Ns aWNlcyk7CiB9CiAKIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfd21fcGFyYW1zKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLApAQCAtNDAzNiw3ICs0MTIwLDggQEAgdm9p ZCBza2xfcGlwZV9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogdm9p ZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCiB7Ci0JZGRi LT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKGRldl9wcml2 KTsKKwlkZGItPmVuYWJsZWRfc2xpY2VzID0gaW50ZWxfZW5hYmxlZF9kYnVmX3NsaWNlcyhkZXZf cHJpdik7CisJRFJNX0RFQlVHX0tNUygiR290IGh3IGRidWYgc2xpY2VzIG1hc2sgJXhcbiIsIGRk Yi0+ZW5hYmxlZF9zbGljZXMpOwogfQogCiAvKgpAQCAtNDE2NCw2ICs0MjQ5LDIzOCBAQCBza2xf Z2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKIAlyZXR1cm4gdG90YWxfZGF0YV9yYXRlOwogfQogCit1aW50X2ZpeGVkXzE2XzE2 X3QKK3NrbF9waXBlX2Rvd25zY2FsZV9hbW91bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCit7CisJdTMyIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oOworCXVp bnRfZml4ZWRfMTZfMTZfdCBmcF93X3JhdGlvLCBmcF9oX3JhdGlvOworCXVpbnRfZml4ZWRfMTZf MTZfdCBkb3duc2NhbGVfaCwgZG93bnNjYWxlX3c7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKKwor CXNyY193ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdzsKKwlzcmNfaCA9IGNydGNfc3RhdGUtPnBp cGVfc3JjX2g7CisJZHN0X3cgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5OworCWRzdF9o ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKKworCWZwX3dfcmF0aW8gPSBkaXZfZml4 ZWQxNihzcmNfdywgZHN0X3cpOworCWZwX2hfcmF0aW8gPSBkaXZfZml4ZWQxNihzcmNfaCwgZHN0 X2gpOworCWRvd25zY2FsZV93ID0gbWF4X2ZpeGVkMTYoZnBfd19yYXRpbywgdTMyX3RvX2ZpeGVk MTYoMSkpOworCWRvd25zY2FsZV9oID0gbWF4X2ZpeGVkMTYoZnBfaF9yYXRpbywgdTMyX3RvX2Zp eGVkMTYoMSkpOworCisJcmV0dXJuIG11bF9maXhlZDE2KGRvd25zY2FsZV93LCBkb3duc2NhbGVf aCk7Cit9CisKK3VpbnRfZml4ZWRfMTZfMTZfdAoraWNsX2dldF9waXBlX3JhdGlvKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lOworCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRybV9wbGFuZV9zdGF0ZTsK Kwl1aW50X2ZpeGVkXzE2XzE2X3QgcGlwZV9kb3duc2NhbGUsIHBpcGVfcmF0aW87CisJdWludF9m aXhlZF8xNl8xNl90IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK KworCWlmICghY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCisJCXJldHVybiBtYXhfZG93bnNjYWxl OworCisJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBk cm1fcGxhbmVfc3RhdGUsICZjcnRjX3N0YXRlLT51YXBpKSB7CisJCXVpbnRfZml4ZWRfMTZfMTZf dCBwbGFuZV9kb3duc2NhbGU7CisJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUgPQorCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3BsYW5lX3N0YXRlKTsKKwor CQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpKQor CQkJY29udGludWU7CisKKwkJcGxhbmVfZG93bnNjYWxlID0gc2tsX3BsYW5lX2Rvd25zY2FsZV9h bW91bnQoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOworCisJCURSTV9ERUJVR19LTVMoIlBsYW5l ICVkIGRvd25zY2FsZSBhbW91bnQgJWQuJWRcbiIsCisJCQkgICAgICB0b19pbnRlbF9wbGFuZShw bGFuZSktPmlkLAorCQkJICAgICAgcGxhbmVfZG93bnNjYWxlLnZhbCA+PiAxNiwKKwkJCSAgICAg IHBsYW5lX2Rvd25zY2FsZS52YWwgJiAweGZmZmYpOworCisJCW1heF9kb3duc2NhbGUgPSBtYXhf Zml4ZWQxNihwbGFuZV9kb3duc2NhbGUsIG1heF9kb3duc2NhbGUpOworCX0KKworCisJcGlwZV9k b3duc2NhbGUgPSBza2xfcGlwZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUpOworCisJRFJN X0RFQlVHX0tNUygiUGlwZSAlZCBkb3duc2NhbGUgYW1vdW50ICVkLiVkXG4iLAorCQkgICAgICAg Y3J0Yy0+cGlwZSwgcGlwZV9kb3duc2NhbGUudmFsID4+IDE2LAorCQkgICAgICAgcGlwZV9kb3du c2NhbGUudmFsICYgMHhmZmZmKTsKKworCXBpcGVfZG93bnNjYWxlID0gbXVsX2ZpeGVkMTYocGlw ZV9kb3duc2NhbGUsIG1heF9kb3duc2NhbGUpOworCisJLyogQ29udmVydCByZXN1bHQgdG8gcGVy Y2VudGFnZSAqLworCXBpcGVfcmF0aW8gPSB1MzJfdG9fZml4ZWQxNigxMDAgKiBkaXZfcm91bmRf dXBfdTMyX2ZpeGVkMTYoMSwgcGlwZV9kb3duc2NhbGUpKTsKKworCURSTV9ERUJVR19LTVMoIlBp cGUgJWQgcmF0aW8gJWQuJWRcbiIsIGNydGMtPnBpcGUsCisJCSAgICAgIHBpcGVfcmF0aW8udmFs ID4+IDE2LCBwaXBlX3JhdGlvLnZhbCAmIDB4ZmZmZik7CisKKwlyZXR1cm4gcGlwZV9yYXRpbzsK K30KKworc3RydWN0IGRidWZfc2xpY2VfY29uZl9lbnRyeSB7CisJdTMyIGRidWZfbWFza1tJOTE1 X01BWF9QSVBFU107CisJdTMyIGFjdGl2ZV9waXBlczsKK307CisKKworI2RlZmluZSBJQ0xfUElQ RV9BX0RCVUZfU0xJQ0VTKERCdWYxKSAgXAorCXsgeyBEQnVmMSwgMCwgMCwgMCB9LCBCSVQoUElQ RV9BKSB9CisjZGVmaW5lIElDTF9QSVBFX0JfREJVRl9TTElDRVMoREJ1ZjEpICBcCisJeyB7IDAs IERCdWYxLCAwLCAwIH0sIEJJVChQSVBFX0IpIH0KKyNkZWZpbmUgSUNMX1BJUEVfQ19EQlVGX1NM SUNFUyhEQnVmMSkgIFwKKwl7IHsgMCwgMCwgREJ1ZjEsIDAgfSwgQklUKFBJUEVfQykgfQorI2Rl ZmluZSBJQ0xfUElQRV9EX0RCVUZfU0xJQ0VTKERCdWYxKSAgXAorCXsgeyAwLCAwLCAwLCBEQnVm MSB9LCBCSVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCdWYx LCBEQnVmMikgICBcCisJeyB7IERCdWYxLCBEQnVmMiwgMCwgMCB9LCBCSVQoUElQRV9BKSB8IEJJ VChQSVBFX0IpIH0KKyNkZWZpbmUgSUNMX1BJUEVfQkNfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYy KSAgIFwKKwl7IHsgMCwgREJ1ZjEsIERCdWYyLCAwIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVf QykgfQorI2RlZmluZSBJQ0xfUElQRV9CRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIpICAgXAor CXsgeyAwLCBEQnVmMSwgMCwgREJ1ZjIgfSwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9EKSB9Cisj ZGVmaW5lIElDTF9QSVBFX0FDX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCisJeyB7IERC dWYxLCAwLCBEQnVmMiwgMCB9LCBCSVQoUElQRV9BKSB8IEJJVChQSVBFX0MpIH0KKyNkZWZpbmUg SUNMX1BJUEVfQURfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyKSAgIFwKKwl7IHsgREJ1ZjEsIDAs IDAsIERCdWYyIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfRCkgfQorI2RlZmluZSBJQ0xfUElQ RV9DRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIpICAgXAorCXsgeyAwLCAwLCBEQnVmMSwgREJ1 ZjIgfSwgQklUKFBJUEVfQykgfCBCSVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCQ19E QlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsgeyBEQnVmMSwgREJ1ZjIsIERC dWYzLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9DKSB9CisjZGVm aW5lIElDTF9QSVBFX0FDRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsg eyBEQnVmMSwgMCwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQykgfCBC SVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0JDRF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1 ZjIsIERCdWYzKSAgXAorCXsgeyAwLCBEQnVmMSwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0Ip IHwgQklUKFBJUEVfQykgfCBCSVQoUElQRV9EKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCRF9EQlVG X1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsgeyBEQnVmMSwgREJ1ZjIsIDAsIERC dWYzIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9EKSB9CisjZGVmaW5l IElDTF9QSVBFX0FCQ19EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAorCXsgeyBE QnVmMSwgREJ1ZjIsIERCdWYzLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQo UElQRV9DKSB9CisjZGVmaW5lIElDTF9QSVBFX0FCQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYy LCBEQnVmMywgREJ1ZjQpICBcCisJeyB7IERCdWYxLCBEQnVmMiwgREJ1ZjMsIERCdWY0IH0sIEJJ VChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBcCisJCQkJCSAgQklUKFBJUEVfQykgfCBCSVQoUElQ RV9EKSB9CisKKy8qCisgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVjIDEyNzE2CisgKiBQaXBlcyBk byBoYXZlIHNvbWUgcHJlZmVycmVkIERCdWYgc2xpY2UgYWZmaW5pdHksCisgKiBwbHVzIHRoZXJl IGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93CisgKiB0aG9zZSBzaG91bGQg YmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlwZSBzY2VuYXJpb3MuCisgKiBGb3IgbW9yZSBEQnVm IHNsaWNlcyBhbGdvcml0aG0gY2FuIGdldCBldmVuIG1vcmUgbWVzc3kKKyAqIGFuZCBsZXNzIHJl YWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAorICogYXMgaXMgZnJvbSBC U3BlYyBpdHNlbGYgLSB0aGF0IHdheSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKKyAqIHRvIGNvbXBh cmUsIGNoYW5nZSBhbmQgY2hlY2suCisgKi8KK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkg aWNsX2FsbG93ZWRfZGJ1ZnNbXSA9IHsKK3sgeyAwLCAwLCAwLCAwIH0sIDAgfSwKK0lDTF9QSVBF X0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlv IDwgODguOCAqLworSUNMX1BJUEVfQV9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCksICAgICAgICAg ICAgICAgIC8qIGZvciBwaXBlIHJhdGlvID49IDg4LjggKi8KK0lDTF9QSVBFX0JfREJVRl9TTElD RVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLwor SUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCksICAgICAgICAgICAgICAgIC8qIGZv ciBwaXBlIHJhdGlvID49IDg4LjggKi8KK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMV9C SVQgfCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLworSUNMX1BJUEVfQ19E QlVGX1NMSUNFUyhEQlVGX1MyX0JJVCksICAgICAgICAgICAgICAgIC8qIGZvciBwaXBlIHJhdGlv ID49IDg4LjggKi8KK0lDTF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1My X0JJVCksCitJQ0xfUElQRV9BQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAorSUNMX1BJUEVfQkNfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzJfQklUKSwKK0lD TF9QSVBFX0FCQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJf QklUKSwKK307CisKKy8qCisgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVjIDQ5MjU1CisgKiBQaXBl cyBkbyBoYXZlIHNvbWUgcHJlZmVycmVkIERCdWYgc2xpY2UgYWZmaW5pdHksCisgKiBwbHVzIHRo ZXJlIGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93CisgKiB0aG9zZSBzaG91 bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlwZSBzY2VuYXJpb3MuCisgKiBGb3IgbW9yZSBE QnVmIHNsaWNlcyBhbGdvcml0aG0gY2FuIGdldCBldmVuIG1vcmUgbWVzc3kKKyAqIGFuZCBsZXNz IHJlYWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAorICogYXMgaXMgZnJv bSBCU3BlYyBpdHNlbGYgLSB0aGF0IHdheSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKKyAqIHRvIGNv bXBhcmUsIGNoYW5nZSBhbmQgY2hlY2suCisgKi8KK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50 cnkgdGdsX2FsbG93ZWRfZGJ1ZnNbXSA9IHsKK3sgeyAwLCAwLCAwLCAwIH0sIDAgfSwKK0lDTF9Q SVBFX0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9C X0RCVUZfU0xJQ0VTKERCVUZfUzFfQklUIHwgREJVRl9TMl9CSVQpLAorSUNMX1BJUEVfQ19EQlVG X1NMSUNFUyhEQlVGX1MxX0JJVCB8IERCVUZfUzJfQklUKSwKK0lDTF9QSVBFX0RfREJVRl9TTElD RVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BQl9EQlVGX1NMSUNFUyhE QlVGX1MxX0JJVCwgREJVRl9TMl9CSVQpLAorSUNMX1BJUEVfQUNfREJVRl9TTElDRVMoREJVRl9T MV9CSVQsIERCVUZfUzJfQklUKSwKK0lDTF9QSVBFX0JDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklU LCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJV Rl9TMl9CSVQpLAorSUNMX1BJUEVfQkRfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzJf QklUKSwKK0lDTF9QSVBFX0NEX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCks CitJQ0xfUElQRV9BQkRfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBEQlVG X1MyX0JJVCksCitJQ0xfUElQRV9BQkNfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFf QklULCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BQ0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQs IERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9CQ0RfREJVRl9TTElDRVMoREJV Rl9TMV9CSVQsIERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCitJQ0xfUElQRV9BQkNEX0RCVUZf U0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQsIERCVUZfUzJfQklU KSwKK307CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuIGVudHJ5IHdpdGggc2FtZSBl bmFibGVkIHBpcGUgY29uZmlndXJhdGlvbiBhbmQKKyAqIHJldHVybnMgY29ycmVzcG9uZGVudCBE QnVmIHNsaWNlIG1hc2sgYXMgc3RhdGVkIGluIEJTcGVjIGZvciBwYXJ0aWN1bGFyCisgKiBwbGF0 Zm9ybS4KKyAqLworc3RhdGljIHUzMiBpY2xfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGludCBwaXBl LAorCQkJCSAgICAgdTMyIGFjdGl2ZV9waXBlcywKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWludCBpOworCXVpbnRfZml4ZWRfMTZfMTZf dCBwaXBlX3JhdGlvOworCisJLyoKKwkgKiBDYWxjdWxhdGUgcGlwZSByYXRpbyBhcyBzdGF0ZWQg aW4gQlNwZWMgMjg2OTIKKwkgKi8KKwlwaXBlX3JhdGlvID0gaWNsX2dldF9waXBlX3JhdGlvKGNy dGNfc3RhdGUpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaWNsX2FsbG93ZWRfZGJ1 ZnMpOyBpKyspIHsKKwkJaWYgKGljbF9hbGxvd2VkX2RidWZzW2ldLmFjdGl2ZV9waXBlcyA9PSBh Y3RpdmVfcGlwZXMpIHsKKwkJCWlmIChod2VpZ2h0MzIoYWN0aXZlX3BpcGVzKSA9PSAxKSB7CisJ CQkJLyoKKwkJCQkgKiBBY2NvcmRpbmcgdG8gQlNwZWMgMTI3MTY6IGlmIHJhdGlvID49IDg4LjgK KwkJCQkgKiBhbHdheXMgdXNlIHNpbmdsZSBkYnVmIHNsaWNlLgorCQkJCSAqLworCQkJCWlmIChw aXBlX3JhdGlvLnZhbCA+PSBkaXZfZml4ZWQxNig4ODgsIDEwKS52YWwpCisJCQkJCSsraTsKKwkJ CX0KKwkJCXJldHVybiBpY2xfYWxsb3dlZF9kYnVmc1tpXS5kYnVmX21hc2tbcGlwZV07CisJCX0K Kwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuIGVudHJ5 IHdpdGggc2FtZSBlbmFibGVkIHBpcGUgY29uZmlndXJhdGlvbiBhbmQKKyAqIHJldHVybnMgY29y cmVzcG9uZGVudCBEQnVmIHNsaWNlIG1hc2sgYXMgc3RhdGVkIGluIEJTcGVjIGZvciBwYXJ0aWN1 bGFyCisgKiBwbGF0Zm9ybS4KKyAqLworc3RhdGljIHUzMiB0Z2xfZ2V0X2FsbG93ZWRfZGJ1Zl9t YXNrKGludCBwaXBlLAorCQkJCSAgICAgdTMyIGFjdGl2ZV9waXBlcywKKwkJCQkgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWludCBpOworCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGdsX2FsbG93ZWRfZGJ1ZnMpOyBpKyspIHsKKwkJaWYg KHRnbF9hbGxvd2VkX2RidWZzW2ldLmFjdGl2ZV9waXBlcyA9PSBhY3RpdmVfcGlwZXMpCisJCQly ZXR1cm4gdGdsX2FsbG93ZWRfZGJ1ZnNbaV0uZGJ1Zl9tYXNrW3BpcGVdOworCX0KKwlyZXR1cm4g MDsKK30KKwordTMyIGk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICBpbnQgcGlwZSwgdTMyIGFjdGl2ZV9waXBlcywK KwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sK KwlpZiAoSVNfR0VOKGRldl9wcml2LCAxMSkpCisJCXJldHVybiBpY2xfZ2V0X2FsbG93ZWRfZGJ1 Zl9tYXNrKHBpcGUsCisJCQkJCQkgYWN0aXZlX3BpcGVzLAorCQkJCQkJIGNydGNfc3RhdGUpOwor CWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTIpKQorCQlyZXR1cm4gdGdsX2dldF9hbGxvd2Vk X2RidWZfbWFzayhwaXBlLAorCQkJCQkJIGFjdGl2ZV9waXBlcywKKwkJCQkJCSBjcnRjX3N0YXRl KTsKKwkvKgorCSAqIEZvciBhbnl0aGluZyBlbHNlIGp1c3QgcmV0dXJuIG9uZSBzbGljZSB5ZXQu CisJICogU2hvdWxkIGJlIGV4dGVuZGVkIGZvciBvdGhlciBwbGF0Zm9ybXMuCisJICovCisJcmV0 dXJuIERCVUZfUzFfQklUOworfQorCiBzdGF0aWMgdTY0CiBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZl X2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgdTY0 ICpwbGFuZV9kYXRhX3JhdGUpCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==