From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: [PATCH 13/17] drm/i915/icl: Enable 2nd DBuf slice only when needed Date: Tue, 23 Jan 2018 17:05:32 -0200 Message-ID: <20180123190536.11208-14-paulo.r.zanoni@intel.com> References: <20180123190536.11208-1-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1EE1A6E442 for ; Tue, 23 Jan 2018 19:06:05 +0000 (UTC) In-Reply-To: <20180123190536.11208-1-paulo.r.zanoni@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KCklDTCBoYXMgdHdv IHNsaWNlcyBvZiBEQnVmLCBlYWNoIHNsaWNlIG9mIHNpemUgMTAyNCBibG9ja3MuCldlIHNob3Vs ZCBub3QgYWx3YXlzIGVuYWJsZSBzbGljZS0yLiBJdCBzaG91bGQgYmUgZW5hYmxlZCBvbmx5IGlm CmRpc3BsYXkgdG90YWwgcmVxdWlyZWQgQlcgaXMgPiAxMkdCcHMgT1IgbW9yZSB0aGFuIDEgcGlw ZXMgYXJlIGVuYWJsZWQuCgpDaGFuZ2VzIHNpbmNlIFYxOgogLSB0eXBlY2FzdCB0b3RhbF9kYXRh X3JhdGUgdG8gdTY0IGJlZm9yZSBtdWx0aXBsaWNhdGlvbiB0byBzb2x2ZSBhbnkKICAgcG9zc2li bGUgb3ZlcmZsb3cgKFJvZHJpZ28pCiAtIGZpeCB3aGVyZSBza2xfd21fZ2V0X2h3X3N0YXRlIHdh cyBtZW1zZXR0aW5nIGRkYiwgcmVzdWx0aW5nCiAgIGVuYWJsZWRfc2xpY2VzIHRvIGJlY29tZSB6 ZXJvCiAtIEZpeCB0aGUgbG9naWMgb2YgY2FsY3VsYXRpbmcgZGRiX3NpemUKQ2hhbmdlcyBzaW5j ZSBWMjoKIC0gSWYgbm8tY3J0YyBpcyBwYXJ0IG9mIGNvbW1pdCByZXF1aXJlZF9zbGljZXMgd2ls bCBoYXZlIHZhbHVlICIwIiwKICAgZG9uJ3QgdHJ5IHRvIGRpc2FibGUgREJ1ZiBzbGljZS4KClNp Z25lZC1vZmYtYnk6IE1haGVzaCBLdW1hciA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgMTIgKysrKysrKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgIHwgIDYgKysrKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgfCA0 NyArKysrKysrKysrKysrKysrKysrKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlv bnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpp bmRleCBiYWQzYjExMmFjM2UuLjNlYjIzNTljMjIxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwpAQCAtMTIxMTcsNiArMTIxMTcsOCBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRl X2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlib29sIHByb2dyZXNzOwog CWVudW0gcGlwZSBwaXBlOwogCWludCBpOworCXVpbnQ4X3QgaHdfZW5hYmxlZF9zbGljZXMgPSBk ZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlczsKKwl1aW50OF90IHJlcXVpcmVk X3NsaWNlcyA9IGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKIAog CWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICplbnRyaWVzW0k5MTVfTUFYX1BJUEVTXSA9IHt9 OwogCkBAIC0xMjEyNSw2ICsxMjEyNywxMSBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX2NydGNz KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJaWYgKG5ld19jcnRjX3N0YXRlLT5h Y3RpdmUpCiAJCQllbnRyaWVzW2ldID0gJnRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3Rh dGUpLT53bS5za2wuZGRiOwogCisJLyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJs ZSBpdCBoZXJlICovCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRf c2xpY2VzICYmCisJCQkJCSByZXF1aXJlZF9zbGljZXMgPiBod19lbmFibGVkX3NsaWNlcykKKwkJ aWNsX2RidWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKKwogCS8q CiAJICogV2hlbmV2ZXIgdGhlIG51bWJlciBvZiBhY3RpdmUgcGlwZXMgY2hhbmdlcywgd2UgbmVl ZCB0byBtYWtlIHN1cmUgd2UKIAkgKiB1cGRhdGUgdGhlIHBpcGVzIGluIHRoZSByaWdodCBvcmRl ciBzbyB0aGF0IHRoZWlyIGRkYiBhbGxvY2F0aW9ucwpAQCAtMTIxNzUsNiArMTIxODIsMTEgQEAg c3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCiAJCQlwcm9ncmVzcyA9IHRydWU7CiAJCX0KIAl9IHdoaWxlIChwcm9ncmVzcyk7CisKKwkv KiBJZiAybmQgREJ1ZiBzbGljZSBpcyBubyBtb3JlIHJlcXVpcmVkIGRpc2FibGUgaXQgKi8KKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgJiYKKwkJCQkJ IHJlcXVpcmVkX3NsaWNlcyA8IGh3X2VuYWJsZWRfc2xpY2VzKQorCQlpY2xfZGJ1Zl9zbGljZXNf dXBkYXRlKGRldl9wcml2LCByZXF1aXJlZF9zbGljZXMpOwogfQogCiBzdGF0aWMgdm9pZCBpbnRl bF9hdG9taWNfaGVscGVyX2ZyZWVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBjNWQ2MDkyYWNhNDEuLmQ0NjM5YTE2 MWZlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE0MCw2ICsxNDAsMTAgQEAKICNk ZWZpbmUgS0h6KHgpICgxMDAwICogKHgpKQogI2RlZmluZSBNSHooeCkgS0h6KDEwMDAgKiAoeCkp CiAKKyNkZWZpbmUgS0Jwcyh4KSAoMTAwMCAqICh4KSkKKyNkZWZpbmUgTUJwcyh4KSBLQnBzKDEw MDAgKiAoeCkpCisjZGVmaW5lIEdCcHMoeCkgKCh1aW50NjRfdCkgMTAwMCAqIE1CcHMoKHgpKSkK KwogLyoKICAqIERpc3BsYXkgcmVsYXRlZCBzdHVmZgogICovCkBAIC0xODkwLDYgKzE4OTQsOCBA QCBib29sIGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWlu IGRvbWFpbik7CiB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFp biBkb21haW4pOwordm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICB1aW50OF90IHJlcV9zbGljZXMpOwogCiBzdGF0aWMg aW5saW5lIHZvaWQKIGFzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5kZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggZThkOTg4 NTdjMjA4Li5kNGNkNjMxMzc3ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzc2Nyw5 ICszNzY3LDQyIEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGludCBp bnRlbF9nZXRfZGRiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ CSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAorCQkJCSAgICAg ICBjb25zdCB1bnNpZ25lZCBpbnQgdG90YWxfZGF0YV9yYXRlLAorCQkJCSAgICAgICBjb25zdCBp bnQgbnVtX2FjdGl2ZSwKKwkJCQkgICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRi KQoreworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlOworCXU2 NCB0b3RhbF9kYXRhX2J3OworCXUxNiBkZGJfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5k ZGJfc2l6ZTsKKworCVdBUk5fT04oZGRiX3NpemUgPT0gMCk7CisKKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDExKQorCQlyZXR1cm4gZGRiX3NpemUgLSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlw YXNzIHBhdGggYWxsb2NhdGlvbiAqLworCisJYWRqdXN0ZWRfbW9kZSA9ICZjc3RhdGUtPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKKwl0b3RhbF9kYXRhX2J3ID0gKHU2NCl0b3RhbF9kYXRhX3JhdGUgKiBk cm1fbW9kZV92cmVmcmVzaChhZGp1c3RlZF9tb2RlKTsKKworCS8qCisJICogMTJHQi9zIGlzIG1h eGltdW0gQlcgc3VwcG9ydGVkIGJ5IHNpbmdsZSBEQnVmIHNsaWNlLgorCSAqLworCWlmICh0b3Rh bF9kYXRhX2J3ID49IEdCcHMoMTIpIHx8IG51bV9hY3RpdmUgPiAxKQorCQlkZGItPmVuYWJsZWRf c2xpY2VzID0gMjsKKwllbHNlIHsKKwkJZGRiLT5lbmFibGVkX3NsaWNlcyA9IDE7CisJCWRkYl9z aXplIC89IDI7CisJfQorCisJcmV0dXJuIGRkYl9zaXplOworfQorCiBzdGF0aWMgdm9pZAogc2ts X2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCisJCQkJICAgY29u c3QgdW5zaWduZWQgaW50IHRvdGFsX2RhdGFfcmF0ZSwKKwkJCQkgICBzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uICpkZGIsCiAJCQkJICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jLCAvKiBv dXQgKi8KIAkJCQkgICBpbnQgKm51bV9hY3RpdmUgLyogb3V0ICovKQogewpAQCAtMzc5MiwxMSAr MzgyNSw4IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAllbHNlCiAJCSpudW1fYWN0aXZlID0gaHdlaWdodDMyKGRldl9wcml2LT5h Y3RpdmVfY3J0Y3MpOwogCi0JZGRiX3NpemUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ZGRiX3Np emU7Ci0JV0FSTl9PTihkZGJfc2l6ZSA9PSAwKTsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgMTEpCi0JCWRkYl9zaXplIC09IDQ7IC8qIDQgYmxvY2tzIGZvciBieXBhc3MgcGF0aCBhbGxv Y2F0aW9uICovCisJZGRiX3NpemUgPSBpbnRlbF9nZXRfZGRiX3NpemUoZGV2X3ByaXYsIGNzdGF0 ZSwgdG90YWxfZGF0YV9yYXRlLAorCQkJCSAgICAgICpudW1fYWN0aXZlLCBkZGIpOwogCiAJLyoK IAkgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2UgdGhlIGFjdGl2ZSBDUlRDJ3MsIHRoZW4g dGhlcmUncwpAQCAtNDIzNSw3ICs0MjY1LDE0IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQlyZXR1cm4gMDsKIAl9CiAKLQlza2xfZGRi X2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKGRldiwgY3N0YXRlLCBhbGxvYywgJm51bV9hY3Rp dmUpOworCXRvdGFsX2RhdGFfcmF0ZSA9IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRl KGNzdGF0ZSwKKwkJCQkJCQkgICBwbGFuZV9kYXRhX3JhdGUsCisJCQkJCQkJICAgcGxhbmVfeV9k YXRhX3JhdGUpOworCWlmICh0b3RhbF9kYXRhX3JhdGUgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlz a2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKGRldiwgY3N0YXRlLCB0b3RhbF9kYXRh X3JhdGUsIGRkYiwKKwkJCQkJICAgYWxsb2MsICZudW1fYWN0aXZlKTsKIAlhbGxvY19zaXplID0g c2tsX2RkYl9lbnRyeV9zaXplKGFsbG9jKTsKIAlpZiAoYWxsb2Nfc2l6ZSA9PSAwKQogCQlyZXR1 cm4gMDsKQEAgLTQyNzAsMTIgKzQzMDcsNiBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkgKgogCSAqIEZJWE1FOiB3ZSBtYXkgbm90IGFs bG9jYXRlIGV2ZXJ5IHNpbmdsZSBibG9jayBoZXJlLgogCSAqLwotCXRvdGFsX2RhdGFfcmF0ZSA9 IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwKLQkJCQkJCQkgICBwbGFu ZV9kYXRhX3JhdGUsCi0JCQkJCQkJICAgcGxhbmVfeV9kYXRhX3JhdGUpOwotCWlmICh0b3RhbF9k YXRhX3JhdGUgPT0gMCkKLQkJcmV0dXJuIDA7Ci0KIAlzdGFydCA9IGFsbG9jLT5zdGFydDsKIAlm b3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7CiAJCXVuc2ln bmVkIGludCBkYXRhX3JhdGUsIHlfZGF0YV9yYXRlOwpAQCAtNTA2OCw3ICs1MDk5LDYgQEAgc2ts X2NvcHlfd21fZm9yX3BpcGUoc3RydWN0IHNrbF93bV92YWx1ZXMgKmRzdCwKIAkgICAgICAgc2l6 ZW9mKGRzdC0+ZGRiLnlfcGxhbmVbcGlwZV0pKTsKIAltZW1jcHkoZHN0LT5kZGIucGxhbmVbcGlw ZV0sIHNyYy0+ZGRiLnBsYW5lW3BpcGVdLAogCSAgICAgICBzaXplb2YoZHN0LT5kZGIucGxhbmVb cGlwZV0pKTsKLQlkc3QtPmRkYi5lbmFibGVkX3NsaWNlcyA9IHNyYy0+ZGRiLmVuYWJsZWRfc2xp Y2VzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTM4MSw4ICs1NDExLDEyIEBAIHZvaWQgc2tsX3dt X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkvKiBGdWxseSByZWNvbXB1 dGUgRERCIG9uIGZpcnN0IGF0b21pYyBjb21taXQgKi8KIAkJZGV2X3ByaXYtPndtLmRpc3RydXN0 X2Jpb3Nfd20gPSB0cnVlOwogCX0gZWxzZSB7Ci0JCS8qIEVhc3kvY29tbW9uIGNhc2U7IGp1c3Qg c2FuaXRpemUgRERCIG5vdyBpZiBldmVyeXRoaW5nIG9mZiAqLwotCQltZW1zZXQoZGRiLCAwLCBz aXplb2YoKmRkYikpOworCQkvKgorCQkgKiBFYXN5L2NvbW1vbiBjYXNlOyBqdXN0IHNhbml0aXpl IEREQiBub3cgaWYgZXZlcnl0aGluZyBvZmYKKwkJICogS2VlcCBkYnVmIHNsaWNlIGluZm8gaW50 YWN0CisJCSAqLworCQltZW1zZXQoZGRiLT5wbGFuZSwgMCwgc2l6ZW9mKGRkYi0+cGxhbmUpKTsK KwkJbWVtc2V0KGRkYi0+eV9wbGFuZSwgMCwgc2l6ZW9mKGRkYi0+eV9wbGFuZSkpOwogCX0KIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCmluZGV4IDEzYzhkYWQ5NWI4 NC4uYTY3YTU3NzM4NzQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5j CkBAIC0yNjEwLDEwICsyNjEwLDQ5IEBAIHN0YXRpYyB2b2lkIGdlbjlfZGJ1Zl9kaXNhYmxlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJRFJNX0VSUk9SKCJEQnVmIHBvd2Vy IGRpc2FibGUgdGltZW91dCFcbiIpOwogfQogCi0vKgotICogVE9ETzogd2Ugc2hvdWxkbid0IGFs d2F5cyBlbmFibGUgREJVRl9DVExfUzIsIHdlIHNob3VsZCBvbmx5IGVuYWJsZSBpdCB3aGVuCi0g KiBuZWVkZWQgYW5kIGtlZXAgaXQgZGlzYWJsZWQgYXMgbXVjaCBhcyBwb3NzaWJsZS4KLSAqLwor c3RhdGljIHVpbnQ4X3QgaW50ZWxfZGJ1Zl9tYXhfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQorCQlyZXR1 cm4gMTsKKwlyZXR1cm4gMjsKK30KKwordm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICB1aW50OF90IHJlcV9zbGljZXMp Cit7CisJdWludDhfdCBod19lbmFibGVkX3NsaWNlcyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRi LmVuYWJsZWRfc2xpY2VzOworCXUzMiB2YWw7CisKKwlpZiAocmVxX3NsaWNlcyA+IGludGVsX2Ri dWZfbWF4X3NsaWNlcyhkZXZfcHJpdikpIHsKKwkJRFJNX0VSUk9SKCJJbnZhbGlkIG51bWJlciBv ZiBkYnVmIHNsaWNlcyByZXF1ZXN0ZWRcbiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKHJlcV9z bGljZXMgPT0gaHdfZW5hYmxlZF9zbGljZXMpCisJCXJldHVybjsKKworCXZhbCA9IEk5MTVfUkVB RChEQlVGX0NUTF9TMik7CisJaWYgKHJlcV9zbGljZXMgPiBod19lbmFibGVkX3NsaWNlcykgewor CQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MyLCB2YWwgfCBEQlVGX1BPV0VSX1JFUVVFU1QpOworCQlQ T1NUSU5HX1JFQUQoREJVRl9DVExfUzIpOworCisJCXVkZWxheSgxMCk7CisJCWlmICghKEk5MTVf UkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkKKwkJCURSTV9FUlJPUigiREJ1 ZiBwb3dlciBlbmFibGUgdGltZW91dFxuIik7CisJCWVsc2UKKwkJCWRldl9wcml2LT53bS5za2xf aHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gcmVxX3NsaWNlczsKKwl9IGVsc2UgeworCQlJOTE1X1dS SVRFKERCVUZfQ1RMX1MyLCB2YWwgJiB+REJVRl9QT1dFUl9SRVFVRVNUKTsKKwkJUE9TVElOR19S RUFEKERCVUZfQ1RMX1MyKTsKKworCQl1ZGVsYXkoMTApOworCQlpZiAoSTkxNV9SRUFEKERCVUZf Q1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpCisJCQlEUk1fRVJST1IoIkRCdWYgcG93ZXIgZGlz YWJsZSB0aW1lb3V0IVxuIik7CisJCWVsc2UKKwkJCWRldl9wcml2LT53bS5za2xfaHcuZGRiLmVu YWJsZWRfc2xpY2VzID0gcmVxX3NsaWNlczsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIGljbF9kYnVm X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJSTkxNV9XUklU RShEQlVGX0NUTF9TMSwgSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSB8IERCVUZfUE9XRVJfUkVRVUVT VCk7Ci0tIAoyLjE0LjMKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=