From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mahesh Kumar Subject: [PATCH 2/3] drm/i915/skl: New ddb allocation algorithm Date: Thu, 1 Jun 2017 11:29:18 +0530 Message-ID: <20170601055918.4601-1-mahesh1.kumar@intel.com> References: <20170531221640.GD26862@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A8616E2E4 for ; Thu, 1 Jun 2017 05:55:39 +0000 (UTC) In-Reply-To: <20170531221640.GD26862@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: paulo.r.zanoni@intel.com, maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogIkt1bWFyLCBNYWhlc2giIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KClRoaXMgcGF0 Y2ggaW1wbGVtZW50cyBuZXcgRERCIGFsbG9jYXRpb24gYWxnb3JpdGhtIGFzIHBlciBIVyB0ZWFt CnJlY29tbWVuZGF0aW9uLiBUaGlzIGFsZ28gdGFrZWNhcmUgb2Ygc2NlbmFyaW8gd2hlcmUgd2Ug YWxsb2NhdGUgbGVzcyBEREIKZm9yIHRoZSBwbGFuZXMgd2l0aCBsb3dlciByZWxhdGl2ZSBwaXhl bCByYXRlLCBidXQgdGhleSByZXF1aXJlIG1vcmUgRERCCnRvIHdvcmsuCkl0IGFsc28gdGFrZXMg Y2FyZSBvZiBlbmFibGluZyBzYW1lIHdhdGVybWFyayBsZXZlbCBmb3IgZWFjaApwbGFuZSBpbiBj cnRjLCBmb3IgZWZmaWNpZW50IHBvd2VyIHNhdmluZy4KCkNoYW5nZXMgc2luY2UgdjE6CiAtIFJl YmFzZSBvbiB0b3Agb2YgUGF1bG8ncyBwYXRjaCBzZXJpZXMKCkNoYW5nZXMgc2luY2UgdjI6CiAt IEZpeCB0aGUgZm9yIGxvb3AgY29uZGl0aW9uIHRvIGVuYWJsZSBXTQoKQ2hhbmdlcyBzaW5jZSB2 MzoKIC0gRml4IGNyYXNoIGluIGN1cnNvciBpLWctdCByZXBvcnRlZCBieSBNYWFydGVuCiAtIFJl YmFzZSBhZnRlciBhZGRyZXNzaW5nIFBhdWxvJ3MgY29tbWVudHMKIC0gRmV3IG90aGVyIFVMVCBm aXhlcwpDaGFuZ2VzIHNpbmNlIHY0OgogLSBSZWJhc2Ugb24gZHJtLXRpcAogLSBBZGRlZCBzZXBh cmF0ZSBmdW5jdGlvbiB0byBlbmFibGUgV00gbGV2ZWxzCkNoYW5nZXMgc2luY2UgdjU6CiAtIEZp eCBhIGNyYXNoIGlkZW50aWZpZWQgaW4gc2tsLTY3NzBIUSBzeXN0ZW0KQ2hhbmdlcyBzaW5jZSB2 NjoKIC0gQWRkcmVzcyByZXZpZXcgY29tbWVudHMgZnJvbSBNYXR0CkNoYW5nZXMgc2luY2Ugdjc6 CiAtIEZpeCBmYWlsdXJlIHJldHVybiBpbiBza2xfY29tcHV0ZV9wbGFuZV93bSAoTWF0dCkKIC0g Zml4IHR5cG8KQ2hhbmdlcyBzaW5jZSB2ODoKIC0gQWx3YXlzIGNoZWNrIGN1cnNvciB3bSBlbmFi bGUgaXJyZXNwZWN0aXZlIG9mIHRvdGFsX2RhdGFfcmF0ZQpDaGFuZ2VzIHNpbmNlIHY5OgogLSBm aXggdHlwbwoKU2lnbmVkLW9mZi1ieTogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJA aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfCAyNTcgKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE1 OSBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpp bmRleCBmY2U0YmM1Y2NjOTkuLjFmOWZlZTMwY2I0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j CkBAIC00MDM5LDEzICs0MDM5LDQxIEBAIHNrbF9kZGJfY2FsY19taW4oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwgaW50IG51bV9hY3RpdmUsCiAJbWluaW11bVtQTEFORV9D VVJTT1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9hY3RpdmUpOwogfQogCitzdGF0aWMg dm9pZAorc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCQkJICAgdWludDE2X3QgcGxhbmVfZGRiLAorCQkJICAgdWludDE2 X3QgbWF4X2xldmVsLAorCQkJICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20pCit7CisJaW50IGxl dmVsOworCS8qCisJICogTm93IGVuYWJsZSBhbGwgbGV2ZWxzIGluIFdNIHN0cnVjdHVyZSB3aGlj aCBjYW4gYmUgZW5hYmxlZAorCSAqIHVzaW5nIGN1cnJlbnQgRERCIGFsbG9jYXRpb24KKwkgKi8K Kwlmb3IgKGxldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7IGxldmVsID49IDA7IGxl dmVsLS0pIHsKKwkJc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxfd20gPSAmd20tPndtW2xldmVs XTsKKworCQlpZiAobGV2ZWwgPiBtYXhfbGV2ZWwgfHwgbGV2ZWxfd20tPnBsYW5lX3Jlc19iID09 IDAKKwkJCQkgICAgICB8fCBsZXZlbF93bS0+cGxhbmVfcmVzX2wgPj0gMzEKKwkJCQkgICAgICB8 fCBsZXZlbF93bS0+cGxhbmVfcmVzX2IgPj0gcGxhbmVfZGRiKSB7CisJCQlsZXZlbF93bS0+cGxh bmVfZW4gPSBmYWxzZTsKKwkJCWxldmVsX3dtLT5wbGFuZV9yZXNfYiA9IDA7CisJCQlsZXZlbF93 bS0+cGxhbmVfcmVzX2wgPSAwOworCQl9IGVsc2UgeworCQkJbGV2ZWxfd20tPnBsYW5lX2VuID0g dHJ1ZTsKKwkJfQorCX0KK30KKwogc3RhdGljIGludAogc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCisJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93 bSAqcGlwZV93bSwKIAkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91 dCAqLykKIHsKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uu c3RhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+ cGlwZTsKIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmY3N0YXRlLT53bS5za2wuZGRi OwpAQCAtNDA1OCw2ICs0MDg2LDkgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJdW5zaWduZWQgcGxhbmVfZGF0YV9yYXRlW0k5MTVfTUFY X1BMQU5FU10gPSB7fTsKIAl1bnNpZ25lZCBwbGFuZV95X2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFO RVNdID0ge307CiAJdWludDE2X3QgdG90YWxfbWluX2Jsb2NrcyA9IDA7CisJdWludDE2X3QgdG90 YWxfbGV2ZWxfZGRiOworCXVpbnQxNl90IHBsYW5lX2Jsb2NrcyA9IDA7CisJaW50IG1heF9sZXZl bCwgbGV2ZWw7CiAKIAkvKiBDbGVhciB0aGUgcGFydGl0aW9uaW5nIGZvciBkaXNhYmxlZCBwbGFu ZXMuICovCiAJbWVtc2V0KGRkYi0+cGxhbmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnBsYW5lW3Bp cGVdKSk7CkBAIC00MDk2LDEwICs0MTI3LDQ4IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlh bGxvY19zaXplIC09IHRvdGFsX21pbl9ibG9ja3M7Ci0JZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9D VVJTT1JdLnN0YXJ0ID0gYWxsb2MtPmVuZCAtIG1pbmltdW1bUExBTkVfQ1VSU09SXTsKKwlhbGxv Y19zaXplIC09IG1pbmltdW1bUExBTkVfQ1VSU09SXTsKKwlkZGItPnBsYW5lW3BpcGVdW1BMQU5F X0NVUlNPUl0uc3RhcnQgPSBhbGxvYy0+ZW5kIC0KKwkJCQkJCQltaW5pbXVtW1BMQU5FX0NVUlNP Ul07CiAJZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7CiAK Kwlmb3IgKGxldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7IGxldmVsID49IDA7IGxl dmVsLS0pIHsKKwkJdG90YWxfbGV2ZWxfZGRiID0gMDsKKwkJZm9yX2VhY2hfcGxhbmVfaWRfb25f Y3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgeworCQkJLyoKKwkJCSAqIFRPRE86IFdlIHNob3Vs ZCBjYWxjdWxhdGUgd2F0ZXJtYXJrIHZhbHVlcyBmb3IgWS9VVgorCQkJICogcGxhbmUgYm90aCBp biBjYXNlIG9mIE5WMTIgZm9ybWF0IGFuZCB1c2UgYm90aCB2YWx1ZXMKKwkJCSAqIGZvciBkZGIg Y2FsY3VsYXRpb24uIE5WMTIgaXMgZGlzYWJsZWQgYXMgb2Ygbm93LCBTbworCQkJICogdXNpbmcg b25seSBzaW5nbGUvVVYgcGxhbmUgdmFsdWUgaGVyZS4KKwkJCSAqLworCQkJc3RydWN0IHNrbF9w bGFuZV93bSAqd20gPSAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKKwkJCXVpbnQxNl90IHBs YW5lX3Jlc19iID0gd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYjsKKwkJCXVpbnQxNl90IG1pbiA9 IG1pbmltdW1bcGxhbmVfaWRdICsgeV9taW5pbXVtW3BsYW5lX2lkXTsKKworCQkJaWYgKHBsYW5l X2lkID09IFBMQU5FX0NVUlNPUikKKwkJCQljb250aW51ZTsKKworCQkJdG90YWxfbGV2ZWxfZGRi ICs9IG1heChwbGFuZV9yZXNfYiwgbWluKTsKKwkJfQorCisJCS8qCisJCSAqIElmIFRoaXMgbGV2 ZWwgY2FuIHN1Y2Nlc3NmdWxseSBiZSBlbmFibGVkIHdpdGggdGhlCisJCSAqIHBpcGUncyBjdXJy ZW50IEREQiBhbGxvY2F0aW9uLCB0aGVuIGFsbCBsb3dlciBsZXZlbHMgYXJlCisJCSAqIGd1YXJh bnRlZWQgdG8gc3VjY2VlZCBhcyB3ZWxsLgorCQkgKi8KKwkJaWYgKHRvdGFsX2xldmVsX2RkYiA8 PSBhbGxvY19zaXplKQorCQkJYnJlYWs7CisJfQorCisJaWYgKChsZXZlbCA8IDApIHx8ICh0b3Rh bF9taW5fYmxvY2tzID4gYWxsb2Nfc2l6ZSkpIHsKKwkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVk IGRpc3BsYXkgY29uZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSBEREIgbGltaXRhdGlvbnMiKTsK KwkJRFJNX0RFQlVHX0tNUygibWluaW11bSByZXF1aXJlZCAlZC8lZFxuIiwgKGxldmVsIDwgMCkg PworCQkJCXRvdGFsX2xldmVsX2RkYiA6IHRvdGFsX21pbl9ibG9ja3MsIGFsbG9jX3NpemUpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJbWF4X2xldmVsID0gbGV2ZWw7CisJYWxsb2Nfc2l6ZSAt PSB0b3RhbF9sZXZlbF9kZGI7CisKIAkvKgogCSAqIDIuIERpc3RyaWJ1dGUgdGhlIHJlbWFpbmlu ZyBzcGFjZSBpbiBwcm9wb3J0aW9uIHRvIHRoZSBhbW91bnQgb2YKIAkgKiBkYXRhIGVhY2ggcGxh bmUgbmVlZHMgdG8gZmV0Y2ggZnJvbSBtZW1vcnkuCkBAIC00MTA5LDEzICs0MTc4LDI0IEBAIHNr bF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCXRv dGFsX2RhdGFfcmF0ZSA9IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwK IAkJCQkJCQkgICBwbGFuZV9kYXRhX3JhdGUsCiAJCQkJCQkJICAgcGxhbmVfeV9kYXRhX3JhdGUp OworCS8qCisJICogUExBTkVfQ1VSU09SIGRhdGEgcmF0ZSBpcyBub3QgaW5jbHVkZWQgaW4gdG90 YWxfZGF0YV9yYXRlLgorCSAqIElmIG9ubHkgY3Vyc29yIHBsYW5lIGlzIGVuYWJsZWQgd2UgaGF2 ZSB0byBlbmFibGUgaXRzIFdNIGxldmVscworCSAqIGV4cGxpY2l0bHkgYmVmb3JlIHJldHVybmlu Zy4gQ3Vyc29yIGhhcyBmaXhlZCBkZGIgYWxsb2NhdGlvbiwKKwkgKiBTbyBpdCdzIG9rIHRvIGFs d2F5cyBjaGVjayBjdXJzb3IgV00gZW5hYmxpbmcgYmVmb3JlIHJldHVybi4KKwkgKi8KKwlwbGFu ZV9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VS U09SXSk7CisJc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZlbHMoZGV2X3ByaXYsIHBsYW5lX2Jsb2Nr cywgbWF4X2xldmVsLAorCQkJCSAgICZwaXBlX3dtLT5wbGFuZXNbUExBTkVfQ1VSU09SXSk7CiAJ aWYgKHRvdGFsX2RhdGFfcmF0ZSA9PSAwKQogCQlyZXR1cm4gMDsKIAogCXN0YXJ0ID0gYWxsb2Mt PnN0YXJ0OwogCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQp IHsKIAkJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRhX3JhdGU7Ci0JCXVpbnQxNl90IHBs YW5lX2Jsb2NrcywgeV9wbGFuZV9ibG9ja3MgPSAwOworCQl1aW50MTZfdCBwbGFuZV9ibG9ja3Mg PSAwLCB5X3BsYW5lX2Jsb2NrcyA9IDA7CisJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0gJnBp cGVfd20tPnBsYW5lc1twbGFuZV9pZF07CisJCXVpbnQxNl90IHBsYW5lX3Jlc19iID0gd20tPndt W21heF9sZXZlbF0ucGxhbmVfcmVzX2I7CiAKIAkJaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNP UikKIAkJCWNvbnRpbnVlOwpAQCAtNDEyNywzMyArNDIwNywzNiBAQCBza2xfYWxsb2NhdGVfcGlw ZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkJICogcHJvbW90ZSB0aGUg ZXhwcmVzc2lvbiB0byA2NCBiaXRzIHRvIGF2b2lkIG92ZXJmbG93aW5nLCB0aGUKIAkJICogcmVz dWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvIHRvdGFsX2RhdGFfcmF0ZSA8IDEKIAkJ ICovCi0JCXBsYW5lX2Jsb2NrcyA9IG1pbmltdW1bcGxhbmVfaWRdOwotCQlwbGFuZV9ibG9ja3Mg Kz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIGRhdGFfcmF0ZSwKLQkJCQkJdG90YWxf ZGF0YV9yYXRlKTsKIAogCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkgKi8KIAkJ aWYgKGRhdGFfcmF0ZSkgeworCQkJcGxhbmVfYmxvY2tzID0gbWF4KG1pbmltdW1bcGxhbmVfaWRd LCBwbGFuZV9yZXNfYik7CisJCQlwbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxs b2Nfc2l6ZSAqCisJCQkJCWRhdGFfcmF0ZSwgdG90YWxfZGF0YV9yYXRlKTsKIAkJCWRkYi0+cGxh bmVbcGlwZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7CiAJCQlkZGItPnBsYW5lW3BpcGVdW3Bs YW5lX2lkXS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKKwkJCXN0YXJ0ICs9IHBsYW5lX2Js b2NrczsKIAkJfQogCi0JCXN0YXJ0ICs9IHBsYW5lX2Jsb2NrczsKLQogCQkvKgogCQkgKiBhbGxv Y2F0aW9uIGZvciB5X3BsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdDoKKwkJICogVE9ETzogT25j ZSB3ZSBzdGFydCBjYWxjdWxhdGluZyB3YXRlcm1hcmsgdmFsdWVzIGZvciBZL1VWCisJCSAqIHBs YW5lIGJvdGggY29uc2lkZXIgaXQgZm9yIGluaXRpYWwgYWxsb3dlZCB3bSBibG9ja3MuCiAJCSAq LwogCQl5X2RhdGFfcmF0ZSA9IHBsYW5lX3lfZGF0YV9yYXRlW3BsYW5lX2lkXTsKIAotCQl5X3Bs YW5lX2Jsb2NrcyA9IHlfbWluaW11bVtwbGFuZV9pZF07Ci0JCXlfcGxhbmVfYmxvY2tzICs9IGRp dl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKiB5X2RhdGFfcmF0ZSwKLQkJCQkJdG90YWxfZGF0 YV9yYXRlKTsKLQogCQlpZiAoeV9kYXRhX3JhdGUpIHsKKwkJCXlfcGxhbmVfYmxvY2tzID0geV9t aW5pbXVtW3BsYW5lX2lkXTsKKwkJCXlfcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90 KWFsbG9jX3NpemUgKgorCQkJCQl5X2RhdGFfcmF0ZSwgdG90YWxfZGF0YV9yYXRlKTsKIAkJCWRk Yi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0uc3RhcnQgPSBzdGFydDsKIAkJCWRkYi0+eV9wbGFu ZVtwaXBlXVtwbGFuZV9pZF0uZW5kID0gc3RhcnQgKyB5X3BsYW5lX2Jsb2NrczsKKwkJCXN0YXJ0 ICs9IHlfcGxhbmVfYmxvY2tzOwogCQl9Ci0KLQkJc3RhcnQgKz0geV9wbGFuZV9ibG9ja3M7CisJ CXNrbF9lbmFibGVfcGxhbmVfd21fbGV2ZWxzKGRldl9wcml2LAorCQkJCQkgICBwbGFuZV9ibG9j a3MsCisJCQkJCSAgIG1heF9sZXZlbCwKKwkJCQkJICAgd20pOwogCX0KIAogCXJldHVybiAwOwpA QCAtNDI0MywxMSArNDMyNiw5IEBAIHNrbF9hZGp1c3RlZF9wbGFuZV9waXhlbF9yYXRlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiBzdGF0aWMgaW50IHNrbF9jb21wdXRl X3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlLAotCQkJCXVpbnQxNl90IGRkYl9hbGxvY2F0aW9uLAog CQkJCWludCBsZXZlbCwKIAkJCQl1aW50MTZfdCAqb3V0X2Jsb2NrcywgLyogb3V0ICovCi0JCQkJ dWludDhfdCAqb3V0X2xpbmVzLCAvKiBvdXQgKi8KLQkJCQlib29sICplbmFibGVkIC8qIG91dCAq LykKKwkJCQl1aW50OF90ICpvdXRfbGluZXMgLyogb3V0ICovKQogewogCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShpbnRlbF9wc3RhdGUtPmJhc2UucGxhbmUpOwog CWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSA9ICZpbnRlbF9wc3RhdGUtPmJh c2U7CkBAIC00MjcwLDEwICs0MzUxLDggQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93 bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJYm9vbCB5X3RpbGVk LCB4X3RpbGVkOwogCiAJaWYgKGxhdGVuY3kgPT0gMCB8fAotCSAgICAhaW50ZWxfd21fcGxhbmVf dmlzaWJsZShjc3RhdGUsIGludGVsX3BzdGF0ZSkpIHsKLQkJKmVuYWJsZWQgPSBmYWxzZTsKKwkg ICAgIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBpbnRlbF9wc3RhdGUpKQogCQlyZXR1 cm4gMDsKLQl9CiAKIAl5X3RpbGVkID0gZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9Z X1RJTEVEIHx8CiAJCSAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDsK QEAgLTQzNTksOSArNDQzOCw2IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlpZiAoKGNwcCAqIGNzdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsIC8gNTEyIDwgMSkgJiYKIAkJICAgIChw bGFuZV9ieXRlc19wZXJfbGluZSAvIDUxMiA8IDEpKQogCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWV0 aG9kMjsKLQkJZWxzZSBpZiAoKGRkYl9hbGxvY2F0aW9uICYmIGRkYl9hbGxvY2F0aW9uIC8KLQkJ CWZpeGVkXzE2XzE2X3RvX3UzMl9yb3VuZF91cChwbGFuZV9ibG9ja3NfcGVyX2xpbmUpKSA+PSAx KQotCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWluX2ZpeGVkXzE2XzE2KG1ldGhvZDEsIG1ldGhvZDIp OwogCQllbHNlIGlmIChsYXRlbmN5ID49IGxpbmV0aW1lX3VzKQogCQkJc2VsZWN0ZWRfcmVzdWx0 ID0gbWluX2ZpeGVkXzE2XzE2KG1ldGhvZDEsIG1ldGhvZDIpOwogCQllbHNlCkBAIC00MzgxLDY0 ICs0NDU3LDQyIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl9CiAJfQogCi0JaWYgKHJlc19ibG9ja3Mg Pj0gZGRiX2FsbG9jYXRpb24gfHwgcmVzX2xpbmVzID4gMzEpIHsKLQkJKmVuYWJsZWQgPSBmYWxz ZTsKLQotCQkvKgotCQkgKiBJZiB0aGVyZSBhcmUgbm8gdmFsaWQgbGV2ZWwgMCB3YXRlcm1hcmtz LCB0aGVuIHdlIGNhbid0Ci0JCSAqIHN1cHBvcnQgdGhpcyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24u Ci0JCSAqLwotCQlpZiAobGV2ZWwpIHsKLQkJCXJldHVybiAwOwotCQl9IGVsc2UgewotCQkJc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUgPSBwc3RhdGUtPnBsYW5lOworCWlmIChyZXNfbGluZXMgPj0g MzEgJiYgbGV2ZWwgPT0gMCkgeworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBzdGF0ZS0+ cGxhbmU7CiAKLQkJCURSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNvbmZpZ3VyYXRp b24gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKLQkJCURSTV9ERUJV R19LTVMoIltQTEFORTolZDolc10gYmxvY2tzIHJlcXVpcmVkID0gJXUvJXUsIGxpbmVzIHJlcXVp cmVkID0gJXUvMzFcbiIsCi0JCQkJICAgICAgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAot CQkJCSAgICAgIHJlc19ibG9ja3MsIGRkYl9hbGxvY2F0aW9uLCByZXNfbGluZXMpOwotCQkJcmV0 dXJuIC1FSU5WQUw7Ci0JCX0KKwkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRpc3BsYXkgY29u ZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIpOworCQlE Uk1fREVCVUdfS01TKCJbUExBTkU6JWQ6JXNdIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCisJ CQkJcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLCByZXNfbGluZXMpOworCQlyZXR1cm4gLUVJ TlZBTDsKIAl9CiAKIAkqb3V0X2Jsb2NrcyA9IHJlc19ibG9ja3M7CiAJKm91dF9saW5lcyA9IHJl c19saW5lczsKLQkqZW5hYmxlZCA9IHRydWU7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlu dAogc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAogCQkgICAg ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkgICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKIAkJICAgICAgc3RydWN0IHNrbF9wbGFu ZV93bSAqd20pCiB7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IGludGVs X3BzdGF0ZS0+YmFzZS5wbGFuZTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwotCXVpbnQxNl90IGRkYl9ibG9ja3M7Ci0JZW51bSBwaXBl IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dt X21heF9sZXZlbChkZXZfcHJpdik7CiAJaW50IHJldDsKIAogCWlmIChXQVJOX09OKCFpbnRlbF9w c3RhdGUtPmJhc2UuZmIpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCWRkYl9ibG9ja3MgPSBza2xf ZGRiX2VudHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1baW50ZWxfcGxhbmUtPmlkXSk7Ci0KIAlm b3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CiAJCXN0cnVjdCBz a2xfd21fbGV2ZWwgKnJlc3VsdCA9ICZ3bS0+d21bbGV2ZWxdOwogCiAJCXJldCA9IHNrbF9jb21w dXRlX3BsYW5lX3dtKGRldl9wcml2LAogCQkJCQkgICBjc3RhdGUsCiAJCQkJCSAgIGludGVsX3Bz dGF0ZSwKLQkJCQkJICAgZGRiX2Jsb2NrcywKIAkJCQkJICAgbGV2ZWwsCiAJCQkJCSAgICZyZXN1 bHQtPnBsYW5lX3Jlc19iLAotCQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbCwKLQkJCQkJICAg JnJlc3VsdC0+cGxhbmVfZW4pOworCQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbCk7CiAJCWlm IChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTQ1MDQsOCArNDU1OCw3IEBAIHN0YXRpYyBp bnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAog CQl3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOwogCi0JCXJldCA9IHNrbF9jb21wdXRl X3dtX2xldmVscyhkZXZfcHJpdiwgZGRiLCBjc3RhdGUsCi0JCQkJCSAgICBpbnRlbF9wc3RhdGUs IHdtKTsKKwkJcmV0ID0gc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGRldl9wcml2LCBjc3RhdGUsIGlu dGVsX3BzdGF0ZSwgd20pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAkJc2tsX2NvbXB1 dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZ3bS0+dHJhbnNfd20pOwpAQCAtNDYxOCw2ICs0Njcx LDQ1IEBAIGJvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKGNvbnN0IHN0cnVjdCBza2xf ZGRiX2VudHJ5ICoqZW50cmllcywKIAlyZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbnQKK3Nr bF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl LAorCQkJICAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bSAqb2xkX3BpcGVfd20sCisJCQkgICAg Y29uc3Qgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtKQoreworCXN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjc3RhdGUtPmJhc2Uu Y3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwor CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWlj X3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXdfZGRiID0gJmlu dGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpj dXJfZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcuZGRiOworCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlOworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCWVudW0gcGlwZSBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKKworCVdBUk5fT04oIWRybV9hdG9taWNfZ2V0X2V4aXN0 aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpKTsKKworCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNr KHBsYW5lLCBkZXYsIGNzdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7CisJCWVudW0gcGxhbmVfaWQg cGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOworCQljb25zdCBzdHJ1Y3Qgc2ts X3BsYW5lX3dtICp3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOworCQljb25zdCBzdHJ1 Y3Qgc2tsX3BsYW5lX3dtICpvbGRfd20gPSAmb2xkX3BpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07 CisKKwkJaWYgKChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtwaXBlXVtwbGFu ZV9pZF0sCisJCQkJCSZuZXdfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0pICYmCisJCSAgICBz a2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSwKKwkJ CQkJJm5ld19kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkgJiYKKwkJICAgICFtZW1jbXAo d20sIG9sZF93bSwgc2l6ZW9mKHN0cnVjdCBza2xfcGxhbmVfd20pKSkKKwkJCWNvbnRpbnVlOwor CisJCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5l KTsKKwkJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpCisJCQlyZXR1cm4gUFRSX0VSUihwbGFuZV9z dGF0ZSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBl X3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0 IHNrbF9waXBlX3dtICpvbGRfcGlwZV93bSwKIAkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAq cGlwZV93bSwgLyogb3V0ICovCkBAIC00NjMxLDYgKzQ3MjMsMTcgQEAgc3RhdGljIGludCBza2xf dXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAorCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihpbnRlbF9jc3Rh dGUsIHBpcGVfd20sIGRkYik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwkvKgorCSAqIFRP RE86IFBsYW5lcyBhcmUgaW5jbHVkZWQgaW4gc3RhdGUgdG8gYXJtIFdNIHJlZ2lzdGVycy4KKwkg KiBTY29wZSB0byBvcHRpbWl6ZSBmdXJ0aGVyLCBieSBqdXN0IHJld3JpdGluZyBwbGFuZSBzdXJm IHJlZ2lzdGVyLgorCSAqLworCXJldCA9IHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhpbnRl bF9jc3RhdGUsIG9sZF9waXBlX3dtLCBwaXBlX3dtKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCiAJaWYgKCFtZW1jbXAob2xkX3BpcGVfd20sIHBpcGVfd20sIHNpemVvZigqcGlwZV93bSkp KQogCQkqY2hhbmdlZCA9IGZhbHNlOwogCWVsc2UKQEAgLTQ2NTMsNDEgKzQ3NTYsNyBAQCBwaXBl c19tb2RpZmllZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB9CiAKIHN0YXRpYyBp bnQKLXNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlKQotewotCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFz ZS5zdGF0ZTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKLQlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKLQlzdHJ1Y3Qgc2ts X2RkYl9hbGxvY2F0aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsK LQlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJfZGRiID0gJmRldl9wcml2LT53bS5za2xf aHcuZGRiOwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwotCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lOwotCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQot CVdBUk5fT04oIWRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNydGMp KTsKLQotCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNzdGF0ZS0+YmFzZS5w bGFuZV9tYXNrKSB7Ci0JCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShw bGFuZSktPmlkOwotCi0JCWlmIChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtw aXBlXVtwbGFuZV9pZF0sCi0JCQkJCSZuZXdfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0pICYm Ci0JCSAgICBza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5l X2lkXSwKLQkJCQkJJm5ld19kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkKLQkJCWNvbnRp bnVlOwotCi0JCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUs IHBsYW5lKTsKLQkJaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpCi0JCQlyZXR1cm4gUFRSX0VSUihw bGFuZV9zdGF0ZSk7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLXNrbF9jb21w dXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCitza2xfaW5jbHVkZV9hZmZl Y3RlZF9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwpAQCAtNDc1MSwxNCArNDgyMCw2IEBAIHNrbF9jb21wdXRl X2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWNzdGF0ZSA9IGludGVsX2F0 b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7CiAJCWlmIChJU19FUlIoY3N0 YXRlKSkKIAkJCXJldHVybiBQVFJfRVJSKGNzdGF0ZSk7Ci0KLQkJcmV0ID0gc2tsX2FsbG9jYXRl X3BpcGVfZGRiKGNzdGF0ZSwgZGRiKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0KLQkJ cmV0ID0gc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKGNzdGF0ZSk7Ci0JCWlmIChyZXQpCi0J CQlyZXR1cm4gcmV0OwogCX0KIAogCXJldHVybiAwOwpAQCAtNDg0OCw3ICs0OTA5LDcgQEAgc2ts X2NvbXB1dGVfd20oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCS8qIENsZWFyIGFs bCBkaXJ0eSBmbGFncyAqLwogCXJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKIAotCXJldCA9IHNr bF9jb21wdXRlX2RkYihzdGF0ZSk7CisJcmV0ID0gc2tsX2luY2x1ZGVfYWZmZWN0ZWRfY3J0Y3Mo c3RhdGUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLS0gCjIuMTEuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==