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.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 B1CF2C2D0DD for ; Tue, 31 Dec 2019 23:38:51 +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 88460206E0 for ; Tue, 31 Dec 2019 23:38:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 88460206E0 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 3A5586E296; Tue, 31 Dec 2019 23:38:48 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id A71766E29B for ; Tue, 31 Dec 2019 23:38:46 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Dec 2019 15:38:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,381,1571727600"; d="scan'208";a="221529996" Received: from ideak-desk.fi.intel.com ([10.237.72.183]) by orsmga003.jf.intel.com with ESMTP; 31 Dec 2019 15:38:43 -0800 From: Imre Deak To: intel-gfx@lists.freedesktop.org Date: Wed, 1 Jan 2020 01:37:56 +0200 Message-Id: <20191231233756.18753-8-imre.deak@intel.com> X-Mailer: git-send-email 2.23.1 In-Reply-To: <20191231233756.18753-1-imre.deak@intel.com> References: <20191231233756.18753-1-imre.deak@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 7/7] drm/i915/tgl: Gen-12 display can decompress surfaces compressed by the media engine X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nanley G Chery , Yang A Shi , Lucas De Marchi , Dhinakaran Pandiyan Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ CgpEZXRlY3QgdGhlIG1vZGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gbWVkaWEgY29tcHJlc3Npb24g dG8gZW5hYmxlCmRpc3BsYXkgZGVjb21wcmVzc2lvbiBmb3IgWVVWIGFuZCB4UkdCIHBhY2tlZCBm b3JtYXRzLiBBIG5ldyBtb2RpZmllciBpcwphZGRlZCBzbyB0aGF0IHRoZSBkcml2ZXIgY2FuIGRp c3Rpbmd1aXNoIGJldHdlZW4gbWVkaWEgYW5kIHJlbmRlcgpjb21wcmVzc2VkIGJ1ZmZlcnMuIFVu bGlrZSByZW5kZXIgZGVjb21wcmVzc2lvbiwgcGxhbmUgNiBhbmQgIHBsYW5lIDcgZG8gbm90CnN1 cHBvcnQgbWVkaWEgZGVjb21wcmVzc2lvbi4KCnYyOiBGaXggY2hlY2twYXRjaCB3YXJuaW5ncyBv biBjb2RlIHN0eWxlIChMdWNhcykKCkZyb20gREs6ClNlcGFyYXRlIG1vZGlmaWVyIGFycmF5IGZv ciBwbGFuZXMgdGhhdCBjYW5ub3QgZGVjb21wcmVzcyBtZWRpYSAoVmlsbGUpCgp2MzogU3VwcG9y dCBwbGFuYXIgZm9ybWF0cwp2NDogU3dpdGNoIHBsYW5lIG9yZGVyCnY1OgotIFVzZSBmb3JtYXQg YmxvY2sgZGVzY3JpcHRvcnMgdG8gZ2V0IENDUyBzdWJzYW1wbGluZyBjYWxjdWxhdGlvbiByaWdo dAogIGV2ZXJ5d2hlcmUuCi0gRXh0ZW5kIHRoZSBwbGFuZSBzdGF0ZSBub3JtYWwgdmlldyBhcnJh eSB0byBhY2NvbW1vZGF0ZSA0IGNvbG9yIHBsYW5lcy4KLSBVc2UgaGVscGVycyB0byBjb252ZXJ0 IGJldHdlZW4gbWFpbiBhbmQgQ0NTIHBsYW5lcy4KdjY6IEFkZCBtaXNzaW5nIHBhY2tlZCBZVVYg Zm9ybWF0cyB0byB0aGUgTUMgZm9ybWF0IGxpc3QuIChZYW5nKQp2NzogQWxpZ24gVVYgcGxhbmVz IHRvIHRpbGUtcm93IHNpemUuCgpDYzogTmFubGV5IEcgQ2hlcnkgPG5hbmxleS5nLmNoZXJ5QGlu dGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+CkNjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgpDYzogWWFuZyBB IFNoaSA8eWFuZy5hLnNoaUBpbnRlbC5jb20+CkNjOiBSYWRoYWtyaXNobmEgU3JpcGFkYSA8cmFk aGFrcmlzaG5hLnNyaXBhZGFAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEaGluYWthcmFuIFBh bmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTHVj YXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IElt cmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFJhZGhha3Jpc2huYSBT cmlwYWRhIDxyYWRoYWtyaXNobmEuc3JpcGFkYUBpbnRlbC5jb20+ICh2NikKLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAxNzYgKysrKysrKysrKysr KystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaCAgfCAg IDEgKwogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jICAgfCAgNTUg KysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICAgICAgfCAg IDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwppbmRleCBk NTEyOGU5MDA2NjAuLmRhNGRiNTA1MjU3OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE5NDUsNyArMTk0NSw5IEBAIHN0YXRpYyBib29sIGlz X2Njc19wbGFuZShjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IHBsYW5lKQog CiBzdGF0aWMgYm9vbCBpc19nZW4xMl9jY3NfbW9kaWZpZXIodTY0IG1vZGlmaWVyKQogewotCXJl dHVybiBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M7CisJ cmV0dXJuIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUyB8 fAorCSAgICAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19D Q1M7CisKIH0KIAogc3RhdGljIGJvb2wgaXNfZ2VuMTJfY2NzX3BsYW5lKGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUpCkBAIC0xOTc4LDggKzE5ODAsNyBAQCBzdGF0 aWMgaW50IGNjc190b19tYWluX3BsYW5lKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LCBpbnQgY2NzX3BsYW5lKQogfQogCiAvKiBSZXR1cm4gZWl0aGVyIHRoZSBtYWluIHBsYW5lJ3Mg Q0NTIG9yIC0gaWYgbm90IGEgQ0NTIEZCIC0gVVYgcGxhbmUgKi8KLXN0YXRpYyBpbnQKLWludGVs X21haW5fdG9fYXV4X3BsYW5lKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQg bWFpbl9wbGFuZSkKK2ludCBpbnRlbF9tYWluX3RvX2F1eF9wbGFuZShjb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwgaW50IG1haW5fcGxhbmUpCiB7CiAJaWYgKGlzX2Njc19tb2RpZmll cihmYi0+bW9kaWZpZXIpKQogCQlyZXR1cm4gbWFpbl90b19jY3NfcGxhbmUoZmIsIG1haW5fcGxh bmUpOwpAQCAtMjAyMSw2ICsyMDIyLDcgQEAgaW50ZWxfdGlsZV93aWR0aF9ieXRlcyhjb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNvbG9yX3BsYW5lKQogCQkJcmV0dXJuIDEy ODsKIAkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9H RU4xMl9SQ19DQ1M6CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6 CiAJCWlmIChpc19jY3NfcGxhbmUoZmIsIGNvbG9yX3BsYW5lKSkKIAkJCXJldHVybiA2NDsKIAkJ LyogZmFsbCB0aHJvdWdoICovCkBAIC0yMTcxLDYgKzIxNzMsMTAgQEAgc3RhdGljIHVuc2lnbmVk IGludCBpbnRlbF9zdXJmX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKIAkJCXJldHVybiAyNTYgKiAxMDI0 OwogCQlyZXR1cm4gMDsKKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0ND UzoKKwkJaWYgKGlzX3NlbWlwbGFuYXJfdXZfcGxhbmUoZmIsIGNvbG9yX3BsYW5lKSkKKwkJCXJl dHVybiBpbnRlbF90aWxlX3Jvd19zaXplKGZiLCBjb2xvcl9wbGFuZSk7CisJCS8qIEZhbGwtdGhy b3VnaCAqLwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTOgogCQly ZXR1cm4gMTYgKiAxMDI0OwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOgpAQCAt MjU3NCw2ICsyNTgwLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9mYl9tb2RpZmllcl90 b190aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6 CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6CiAJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9H RU4xMl9NQ19DQ1M6CiAJCXJldHVybiBJOTE1X1RJTElOR19ZOwogCWRlZmF1bHQ6CiAJCXJldHVy biBJOTE1X1RJTElOR19OT05FOwpAQCAtMjYyNSw2ICsyNjMyLDMwIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIGdlbjEyX2Njc19mb3JtYXRzW10gPSB7CiAJeyAuZm9ybWF0 ID0gRFJNX0ZPUk1BVF9BQkdSODg4OCwgLmRlcHRoID0gMzIsIC5udW1fcGxhbmVzID0gMiwKIAkg IC5jaGFyX3Blcl9ibG9jayA9IHsgNCwgMSB9LCAuYmxvY2tfdyA9IHsgMSwgMiB9LCAuYmxvY2tf aCA9IHsgMSwgMSB9LAogCSAgLmhzdWIgPSAxLCAudnN1YiA9IDEsIC5oYXNfYWxwaGEgPSB0cnVl IH0sCisJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9ZVVlWLCAubnVtX3BsYW5lcyA9IDIsCisJICAu Y2hhcl9wZXJfYmxvY2sgPSB7IDIsIDEgfSwgLmJsb2NrX3cgPSB7IDEsIDIgfSwgLmJsb2NrX2gg PSB7IDEsIDEgfSwKKwkgIC5oc3ViID0gMiwgLnZzdWIgPSAxLCAuaXNfeXV2ID0gdHJ1ZSB9LAor CXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWVZZVSwgLm51bV9wbGFuZXMgPSAyLAorCSAgLmNoYXJf cGVyX2Jsb2NrID0geyAyLCAxIH0sIC5ibG9ja193ID0geyAxLCAyIH0sIC5ibG9ja19oID0geyAx LCAxIH0sCisJICAuaHN1YiA9IDIsIC52c3ViID0gMSwgLmlzX3l1diA9IHRydWUgfSwKKwl7IC5m b3JtYXQgPSBEUk1fRk9STUFUX1VZVlksIC5udW1fcGxhbmVzID0gMiwKKwkgIC5jaGFyX3Blcl9i bG9jayA9IHsgMiwgMSB9LCAuYmxvY2tfdyA9IHsgMSwgMiB9LCAuYmxvY2tfaCA9IHsgMSwgMSB9 LAorCSAgLmhzdWIgPSAyLCAudnN1YiA9IDEsIC5pc195dXYgPSB0cnVlIH0sCisJeyAuZm9ybWF0 ID0gRFJNX0ZPUk1BVF9WWVVZLCAubnVtX3BsYW5lcyA9IDIsCisJICAuY2hhcl9wZXJfYmxvY2sg PSB7IDIsIDEgfSwgLmJsb2NrX3cgPSB7IDEsIDIgfSwgLmJsb2NrX2ggPSB7IDEsIDEgfSwKKwkg IC5oc3ViID0gMiwgLnZzdWIgPSAxLCAuaXNfeXV2ID0gdHJ1ZSB9LAorCXsgLmZvcm1hdCA9IERS TV9GT1JNQVRfTlYxMiwgLm51bV9wbGFuZXMgPSA0LAorCSAgLmNoYXJfcGVyX2Jsb2NrID0geyAx LCAyLCAxLCAxIH0sIC5ibG9ja193ID0geyAxLCAxLCA0LCA0IH0sIC5ibG9ja19oID0geyAxLCAx LCAxLCAxIH0sCisJICAuaHN1YiA9IDIsIC52c3ViID0gMiwgLmlzX3l1diA9IHRydWUgfSwKKwl7 IC5mb3JtYXQgPSBEUk1fRk9STUFUX1AwMTAsIC5udW1fcGxhbmVzID0gNCwKKwkgIC5jaGFyX3Bl cl9ibG9jayA9IHsgMiwgNCwgMSwgMSB9LCAuYmxvY2tfdyA9IHsgMSwgMSwgMiwgMiB9LCAuYmxv Y2tfaCA9IHsgMSwgMSwgMSwgMSB9LAorCSAgLmhzdWIgPSAyLCAudnN1YiA9IDIsIC5pc195dXYg PSB0cnVlIH0sCisJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9QMDEyLCAubnVtX3BsYW5lcyA9IDQs CisJICAuY2hhcl9wZXJfYmxvY2sgPSB7IDIsIDQsIDEsIDEgfSwgLmJsb2NrX3cgPSB7IDEsIDEs IDIsIDIgfSwgLmJsb2NrX2ggPSB7IDEsIDEsIDEsIDEgfSwKKwkgIC5oc3ViID0gMiwgLnZzdWIg PSAyLCAuaXNfeXV2ID0gdHJ1ZSB9LAorCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfUDAxNiwgLm51 bV9wbGFuZXMgPSA0LAorCSAgLmNoYXJfcGVyX2Jsb2NrID0geyAyLCA0LCAxLCAxIH0sIC5ibG9j a193ID0geyAxLCAxLCAyLCAyIH0sIC5ibG9ja19oID0geyAxLCAxLCAxLCAxIH0sCisJICAuaHN1 YiA9IDIsIC52c3ViID0gMiwgLmlzX3l1diA9IHRydWUgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICoKQEAgLTI2NTEsNiArMjY4Miw3IEBAIGludGVsX2dldF9m b3JtYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKQogCQkJCQkgIEFS UkFZX1NJWkUoc2tsX2Njc19mb3JtYXRzKSwKIAkJCQkJICBjbWQtPnBpeGVsX2Zvcm1hdCk7CiAJ Y2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCXJldHVybiBsb29rdXBfZm9ybWF0X2lu Zm8oZ2VuMTJfY2NzX2Zvcm1hdHMsCiAJCQkJCSAgQVJSQVlfU0laRShnZW4xMl9jY3NfZm9ybWF0 cyksCiAJCQkJCSAgY21kLT5waXhlbF9mb3JtYXQpOwpAQCAtMjY2Miw2ICsyNjk0LDcgQEAgaW50 ZWxfZ2V0X2Zvcm1hdF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICpjbWQpCiBi b29sIGlzX2Njc19tb2RpZmllcih1NjQgbW9kaWZpZXIpCiB7CiAJcmV0dXJuIG1vZGlmaWVyID09 IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUyB8fAorCSAgICAgICBtb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MgfHwKIAkgICAgICAgbW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CiAJICAgICAgIG1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M7CiB9CkBAIC0yNzM1LDcgKzI3NjgsNyBA QCBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLCBpbnQgY29sb3JfcGxhbmUpCiAJfQogCiAJdGlsZV93aWR0aCA9IGludGVsX3RpbGVfd2lk dGhfYnl0ZXMoZmIsIGNvbG9yX3BsYW5lKTsKLQlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT5tb2Rp ZmllcikgJiYgY29sb3JfcGxhbmUgPT0gMCkgeworCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1v ZGlmaWVyKSkgewogCQkvKgogCQkgKiBEaXNwbGF5IFdBICMwNTMxOiBza2wsYnh0LGtibCxnbGsK IAkJICoKQEAgLTI3NDUsNyArMjc3OCw3IEBAIGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSkKIAkJICogcmVx dWlyZSB0aGUgZW50aXJlIGZiIHRvIGFjY29tbW9kYXRlIHRoYXQgdG8gYXZvaWQKIAkJICogcG90 ZW50aWFsIHJ1bnRpbWUgZXJyb3JzIGF0IHBsYW5lIGNvbmZpZ3VyYXRpb24gdGltZS4KIAkJICov Ci0JCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmIGZiLT53aWR0aCA+IDM4NDApCisJCWlmIChJ U19HRU4oZGV2X3ByaXYsIDkpICYmIGNvbG9yX3BsYW5lID09IDAgJiYgZmItPndpZHRoID4gMzg0 MCkKIAkJCXRpbGVfd2lkdGggKj0gNDsKIAkJLyoKIAkJICogVGhlIG1haW4gc3VyZmFjZSBwaXRj aCBtdXN0IGJlIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIGZvdXIKQEAgLTM2MzksNiArMzY3Miw3 IEBAIHN0YXRpYyBpbnQgc2tsX21heF9wbGFuZV93aWR0aChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKIAkJCXJldHVybiA1MTIwOwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElM RURfQ0NTOgogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKKwljYXNlIEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoKIAkJLyogRklYTUUgQVVYIHBsYW5lPyAq LwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRUQ6CkBAIC0zNjk3LDExICszNzMxLDEyIEBAIHN0YXRpYyBpbnQgaWNsX21heF9wbGFu ZV9oZWlnaHQodm9pZCkKIAlyZXR1cm4gNDMyMDsKIH0KIAotc3RhdGljIGJvb2wgc2tsX2NoZWNr X21haW5fY2NzX2Nvb3JkaW5hdGVzKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUsCi0JCQkJCSAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCkKK3N0 YXRpYyBib29sCitza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKKwkJCSAgICAgICBpbnQgbWFpbl94LCBpbnQgbWFpbl95 LCB1MzIgbWFpbl9vZmZzZXQsCisJCQkgICAgICAgaW50IGNjc19wbGFuZSkKIHsKIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKLQlpbnQgY2Nz X3BsYW5lID0gbWFpbl90b19jY3NfcGxhbmUoZmIsIDApOwogCWludCBhdXhfeCA9IHBsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVtjY3NfcGxhbmVdLng7CiAJaW50IGF1eF95ID0gcGxhbmVfc3RhdGUt PmNvbG9yX3BsYW5lW2Njc19wbGFuZV0ueTsKIAl1MzIgYXV4X29mZnNldCA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVtjY3NfcGxhbmVdLm9mZnNldDsKQEAgLTM4MTUsNyArMzg1MCw4IEBAIHN0 YXRpYyBpbnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogCSAqIHRoZXkgbWF0Y2ggd2l0aCB0aGUgbWFpbiBzdXJmYWNlIHgveSBv ZmZzZXRzLgogCSAqLwogCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkgewotCQl3 aGlsZSAoIXNrbF9jaGVja19tYWluX2Njc19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSwgeCwgeSwg b2Zmc2V0KSkgeworCQl3aGlsZSAoIXNrbF9jaGVja19tYWluX2Njc19jb29yZGluYXRlcyhwbGFu ZV9zdGF0ZSwgeCwgeSwKKwkJCQkJCSAgICAgICBvZmZzZXQsIGF1eF9wbGFuZSkpIHsKIAkJCWlm IChvZmZzZXQgPT0gMCkKIAkJCQlicmVhazsKIApAQCAtMzg0OCw3ICszODg0LDggQEAgc3RhdGlj IGludCBza2xfY2hlY2tfbnYxMl9hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbjsKLQlpbnQgbWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChmYiwgMSwg cm90YXRpb24pOworCWludCB1dl9wbGFuZSA9IDE7CisJaW50IG1heF93aWR0aCA9IHNrbF9tYXhf cGxhbmVfd2lkdGgoZmIsIHV2X3BsYW5lLCByb3RhdGlvbik7CiAJaW50IG1heF9oZWlnaHQgPSA0 MDk2OwogCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE3OwogCWludCB5ID0g cGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE3OwpAQCAtMzg1Niw4ICszODkzLDkgQEAgc3Rh dGljIGludCBza2xfY2hlY2tfbnYxMl9hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQogCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMpID4+IDE3OwogCXUzMiBvZmZzZXQ7CiAKLQlpbnRlbF9hZGRfZmJfb2Zmc2V0cygm eCwgJnksIHBsYW5lX3N0YXRlLCAxKTsKLQlvZmZzZXQgPSBpbnRlbF9wbGFuZV9jb21wdXRlX2Fs aWduZWRfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDEpOworCWludGVsX2FkZF9mYl9vZmZz ZXRzKCZ4LCAmeSwgcGxhbmVfc3RhdGUsIHV2X3BsYW5lKTsKKwlvZmZzZXQgPSBpbnRlbF9wbGFu ZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KCZ4LCAmeSwKKwkJCQkJCSAgICBwbGFuZV9zdGF0ZSwg dXZfcGxhbmUpOwogCiAJLyogRklYTUUgbm90IHF1aXRlIHN1cmUgaG93L2lmIHRoZXNlIGFwcGx5 IHRvIHRoZSBjaHJvbWEgcGxhbmUgKi8KIAlpZiAodyA+IG1heF93aWR0aCB8fCBoID4gbWF4X2hl aWdodCkgewpAQCAtMzg2Niw5ICszOTA0LDM5IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJf YXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJfQogCi0JcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCA9 IG9mZnNldDsKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ueCA9IHg7Ci0JcGxhbmVfc3Rh dGUtPmNvbG9yX3BsYW5lWzFdLnkgPSB5OworCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlm aWVyKSkgeworCQlpbnQgY2NzX3BsYW5lID0gbWFpbl90b19jY3NfcGxhbmUoZmIsIHV2X3BsYW5l KTsKKwkJaW50IGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY2NzX3BsYW5l XS5vZmZzZXQ7CisJCWludCBhbGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdubWVudChmYiwgdXZf cGxhbmUpOworCisJCWlmIChvZmZzZXQgPiBhdXhfb2Zmc2V0KQorCQkJb2Zmc2V0ID0gaW50ZWxf cGxhbmVfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KCZ4LCAmeSwKKwkJCQkJCQkJICAgcGxhbmVfc3Rh dGUsCisJCQkJCQkJCSAgIHV2X3BsYW5lLAorCQkJCQkJCQkgICBvZmZzZXQsCisJCQkJCQkJCSAg IGF1eF9vZmZzZXQgJiB+KGFsaWdubWVudCAtIDEpKTsKKworCQl3aGlsZSAoIXNrbF9jaGVja19t YWluX2Njc19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSwgeCwgeSwKKwkJCQkJCSAgICAgICBvZmZz ZXQsIGNjc19wbGFuZSkpIHsKKwkJCWlmIChvZmZzZXQgPT0gMCkKKwkJCQlicmVhazsKKworCQkJ b2Zmc2V0ID0gaW50ZWxfcGxhbmVfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KCZ4LCAmeSwKKwkJCQkJ CQkJICAgcGxhbmVfc3RhdGUsCisJCQkJCQkJCSAgIHV2X3BsYW5lLAorCQkJCQkJCQkgICBvZmZz ZXQsIG9mZnNldCAtIGFsaWdubWVudCk7CisJCX0KKworCQlpZiAoeCAhPSBwbGFuZV9zdGF0ZS0+ Y29sb3JfcGxhbmVbY2NzX3BsYW5lXS54IHx8CisJCSAgICB5ICE9IHBsYW5lX3N0YXRlLT5jb2xv cl9wbGFuZVtjY3NfcGxhbmVdLnkpIHsKKwkJCURSTV9ERUJVR19LTVMoIlVuYWJsZSB0byBmaW5k IHN1aXRhYmxlIGRpc3BsYXkgc3VyZmFjZSBvZmZzZXQgZHVlIHRvIENDU1xuIik7CisJCQlyZXR1 cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVt1dl9wbGFu ZV0ub2Zmc2V0ID0gb2Zmc2V0OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVt1dl9wbGFuZV0u eCA9IHg7CisJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW3V2X3BsYW5lXS55ID0geTsKIAogCXJl dHVybiAwOwogfQpAQCAtMzg3OCwyMSArMzk0Niw0MCBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19j Y3NfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAlp bnQgc3JjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CiAJaW50IHNyY195ID0g cGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2OwotCWludCBoc3ViOwotCWludCB2c3ViOwot CWludCB4OwotCWludCB5OwogCXUzMiBvZmZzZXQ7CisJaW50IGNjc19wbGFuZTsKKworCWZvciAo Y2NzX3BsYW5lID0gMDsgY2NzX3BsYW5lIDwgZmItPmZvcm1hdC0+bnVtX3BsYW5lczsgY2NzX3Bs YW5lKyspIHsKKwkJaW50IG1haW5faHN1YiwgbWFpbl92c3ViOworCQlpbnQgaHN1YiwgdnN1YjsK KwkJaW50IHgsIHk7CiAKLQlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoJmhzdWIsICZ2 c3ViLCBmYiwgMSk7Ci0JeCA9IHNyY194IC8gaHN1YjsKLQl5ID0gc3JjX3kgLyB2c3ViOwotCWlu dGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDEpOwotCW9mZnNldCA9IGlu dGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25lZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSk7 CisJCWlmICghaXNfY2NzX3BsYW5lKGZiLCBjY3NfcGxhbmUpKQorCQkJY29udGludWU7CisKKwkJ aW50ZWxfZmJfcGxhbmVfZ2V0X3N1YnNhbXBsaW5nKCZtYWluX2hzdWIsICZtYWluX3ZzdWIsIGZi LAorCQkJCQkgICAgICAgY2NzX3RvX21haW5fcGxhbmUoZmIsIGNjc19wbGFuZSkpOworCQlpbnRl bF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoJmhzdWIsICZ2c3ViLCBmYiwgY2NzX3BsYW5lKTsK KworCQloc3ViICo9IG1haW5faHN1YjsKKwkJdnN1YiAqPSBtYWluX3ZzdWI7CisJCXggPSBzcmNf eCAvIGhzdWI7CisJCXkgPSBzcmNfeSAvIHZzdWI7CisKKwkJaW50ZWxfYWRkX2ZiX29mZnNldHMo JngsICZ5LCBwbGFuZV9zdGF0ZSwgY2NzX3BsYW5lKTsKIAotCXBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVsxXS5vZmZzZXQgPSBvZmZzZXQ7Ci0JcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLngg PSB4ICogaHN1YiArIHNyY194ICUgaHN1YjsKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0u eSA9IHkgKiB2c3ViICsgc3JjX3kgJSB2c3ViOworCQlvZmZzZXQgPSBpbnRlbF9wbGFuZV9jb21w dXRlX2FsaWduZWRfb2Zmc2V0KCZ4LCAmeSwKKwkJCQkJCQkgICAgcGxhbmVfc3RhdGUsCisJCQkJ CQkJICAgIGNjc19wbGFuZSk7CisKKwkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2Njc19wbGFu ZV0ub2Zmc2V0ID0gb2Zmc2V0OworCQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY2NzX3BsYW5l XS54ID0gKHggKiBoc3ViICsKKwkJCQkJCQkgc3JjX3ggJSBoc3ViKSAvCisJCQkJCQkJbWFpbl9o c3ViOworCQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY2NzX3BsYW5lXS55ID0gKHkgKiB2c3Vi ICsKKwkJCQkJCQkgc3JjX3kgJSB2c3ViKSAvCisJCQkJCQkJbWFpbl92c3ViOworCX0KIAogCXJl dHVybiAwOwogfQpAQCAtMzkwMSw2ICszOTg4LDcgQEAgaW50IHNrbF9jaGVja19wbGFuZV9zdXJm YWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAJaW50IHJldDsK Kwlib29sIG5lZWRzX2F1eCA9IGZhbHNlOwogCiAJcmV0ID0gaW50ZWxfcGxhbmVfY29tcHV0ZV9n dHQocGxhbmVfc3RhdGUpOwogCWlmIChyZXQpCkBAIC0zOTEwLDIyICszOTk4LDMyIEBAIGludCBz a2xfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQogCQlyZXR1cm4gMDsKIAogCS8qCi0JICogSGFuZGxlIHRoZSBBVVggc3VyZmFjZSBmaXJz dCBzaW5jZQotCSAqIHRoZSBtYWluIHN1cmZhY2Ugc2V0dXAgZGVwZW5kcyBvbiBpdC4KKwkgKiBI YW5kbGUgdGhlIEFVWCBzdXJmYWNlIGZpcnN0IHNpbmNlIHRoZSBtYWluIHN1cmZhY2Ugc2V0dXAg ZGVwZW5kcyBvbgorCSAqIGl0LgogCSAqLworCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlm aWVyKSkgeworCQluZWVkc19hdXggPSB0cnVlOworCQlyZXQgPSBza2xfY2hlY2tfY2NzX2F1eF9z dXJmYWNlKHBsYW5lX3N0YXRlKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCiAJ aWYgKGludGVsX2Zvcm1hdF9pbmZvX2lzX3l1dl9zZW1pcGxhbmFyKGZiLT5mb3JtYXQsCiAJCQkJ CQlmYi0+bW9kaWZpZXIpKSB7CisJCW5lZWRzX2F1eCA9IHRydWU7CiAJCXJldCA9IHNrbF9jaGVj a19udjEyX2F1eF9zdXJmYWNlKHBsYW5lX3N0YXRlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiBy ZXQ7Ci0JfSBlbHNlIGlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkgewotCQlyZXQg PSBza2xfY2hlY2tfY2NzX2F1eF9zdXJmYWNlKHBsYW5lX3N0YXRlKTsKLQkJaWYgKHJldCkKLQkJ CXJldHVybiByZXQ7Ci0JfSBlbHNlIHsKLQkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9m ZnNldCA9IH4weGZmZjsKLQkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnggPSAwOwotCQlw bGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ueSA9IDA7CisJfQorCisJaWYgKCFuZWVkc19hdXgp IHsKKwkJaW50IGk7CisKKwkJZm9yIChpID0gMTsgaSA8IGZiLT5mb3JtYXQtPm51bV9wbGFuZXM7 IGkrKykgeworCQkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2ldLm9mZnNldCA9IH4weGZmZjsK KwkJCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtpXS54ID0gMDsKKwkJCXBsYW5lX3N0YXRlLT5j b2xvcl9wbGFuZVtpXS55ID0gMDsKKwkJfQogCX0KIAogCXJldCA9IHNrbF9jaGVja19tYWluX3N1 cmZhY2UocGxhbmVfc3RhdGUpOwpAQCAtNDUxNSw2ICs0NjEzLDggQEAgc3RhdGljIHUzMiBza2xf cGxhbmVfY3RsX3RpbGluZyh1NjQgZmJfbW9kaWZpZXIpCiAJCXJldHVybiBQTEFORV9DVExfVElM RURfWSB8CiAJCSAgICAgICBQTEFORV9DVExfUkVOREVSX0RFQ09NUFJFU1NJT05fRU5BQkxFIHwK IAkJICAgICAgIFBMQU5FX0NUTF9DTEVBUl9DT0xPUl9ESVNBQkxFOworCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOgorCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1kg fCBQTEFORV9DVExfTUVESUFfREVDT01QUkVTU0lPTl9FTkFCTEU7CiAJY2FzZSBJOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQ6CiAJCXJldHVybiBQTEFORV9DVExfVElMRURfWUY7CiAJY2FzZSBJOTE1 X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgpAQCAtMTAyMzYsNiArMTAzMzYsOCBAQCBza2xfZ2V0 X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJZmItPm1v ZGlmaWVyID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiA/CiAJCQkJSTkxNV9GT1JNQVRfTU9E X1lfVElMRURfR0VOMTJfUkNfQ0NTIDoKIAkJCQlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M7 CisJCWVsc2UgaWYgKHZhbCAmIFBMQU5FX0NUTF9NRURJQV9ERUNPTVBSRVNTSU9OX0VOQUJMRSkK KwkJCWZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUzsK IAkJZWxzZQogCQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ7CiAJCWJy ZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaAppbmRl eCBiYzJjNTEwNGY3NTUuLjAyOGFhYjcyODUxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKQEAgLTQ3NCw2ICs0NzQsNyBAQCB2b2lkIGludGVsX2xp bmtfY29tcHV0ZV9tX24odTE2IGJwcCwgaW50IG5sYW5lcywKIAkJCSAgICBzdHJ1Y3QgaW50ZWxf bGlua19tX24gKm1fbiwKIAkJCSAgICBib29sIGNvbnN0YW50X24sIGJvb2wgZmVjX2VuYWJsZSk7 CiBib29sIGlzX2Njc19tb2RpZmllcih1NjQgbW9kaWZpZXIpOworaW50IGludGVsX21haW5fdG9f YXV4X3BsYW5lKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgbWFpbl9wbGFu ZSk7CiB2b2lkIGxwdF9kaXNhYmxlX2Nsa291dF9kcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogdTMyIGludGVsX3BsYW5lX2ZiX21heF9zdHJpZGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgdTMyIHBpeGVsX2Zvcm1hdCwgdTY0IG1vZGlm aWVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3R5cGVzLmgKaW5kZXggNjMwYTk0ODkyYjdiLi5hMWE3MzIwOWQ4MjQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCkBAIC05MCw4 ICs5MCw4IEBAIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciB7CiAJLyogZm9yIGVhY2ggcGxhbmUg aW4gdGhlIG5vcm1hbCBHVFQgdmlldyAqLwogCXN0cnVjdCB7CiAJCXVuc2lnbmVkIGludCB4LCB5 OwotCX0gbm9ybWFsWzJdOwotCS8qIGZvciBlYWNoIHBsYW5lIGluIHRoZSByb3RhdGVkIEdUVCB2 aWV3ICovCisJfSBub3JtYWxbNF07CisJLyogZm9yIGVhY2ggcGxhbmUgaW4gdGhlIHJvdGF0ZWQg R1RUIHZpZXcgZm9yIG5vLUNDUyBmb3JtYXRzICovCiAJc3RydWN0IHsKIAkJdW5zaWduZWQgaW50 IHgsIHk7CiAJCXVuc2lnbmVkIGludCBwaXRjaDsgLyogcGl4ZWxzICovCkBAIC01NTUsNyArNTU1 LDcgQEAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKIAkJICovCiAJCXUzMiBzdHJpZGU7CiAJ CWludCB4LCB5OwotCX0gY29sb3JfcGxhbmVbMl07CisJfSBjb2xvcl9wbGFuZVs0XTsKIAogCS8q IHBsYW5lIGNvbnRyb2wgcmVnaXN0ZXIgKi8KIAl1MzIgY3RsOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKaW5kZXggM2Y3YjhmMmZmNjcxLi5mY2E3N2VjMWUw ZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRl LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwpAQCAt NTgzLDE1ICs1ODMsMTYgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBs YW5lX3N0YXRlLT5ja2V5OwogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbY29sb3JfcGxhbmVdLm9mZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShw bGFuZV9zdGF0ZSwgY29sb3JfcGxhbmUpOwotCXUzMiBhdXhfZGlzdCA9IHBsYW5lX3N0YXRlLT5j b2xvcl9wbGFuZVsxXS5vZmZzZXQgLSBzdXJmX2FkZHI7Ci0JdTMyIGF1eF9zdHJpZGUgPSBza2xf cGxhbmVfc3RyaWRlKHBsYW5lX3N0YXRlLCAxKTsKKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKKwlpbnQgYXV4X3BsYW5lID0gaW50ZWxfbWFp bl90b19hdXhfcGxhbmUoZmIsIGNvbG9yX3BsYW5lKTsKKwl1MzIgYXV4X2Rpc3QgPSBwbGFuZV9z dGF0ZS0+Y29sb3JfcGxhbmVbYXV4X3BsYW5lXS5vZmZzZXQgLSBzdXJmX2FkZHI7CisJdTMyIGF1 eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKHBsYW5lX3N0YXRlLCBhdXhfcGxhbmUpOwogCWlu dCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CiAJaW50IGNydGNfeSA9IHBsYW5l X3N0YXRlLT51YXBpLmRzdC55MTsKIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtj b2xvcl9wbGFuZV0ueDsKIAl1MzIgeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9w bGFuZV0ueTsKIAl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGku c3JjKSA+PiAxNjsKIAl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51 YXBpLnNyYykgPj4gMTY7Ci0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7CiAJdTggYWxwaGEgPSBwbGFuZV9zdGF0ZS0+aHcuYWxwaGEgPj4gODsK IAl1MzIgcGxhbmVfY29sb3JfY3RsID0gMDsKIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwpAQCAt MjEwNiw3ICsyMTA3LDggQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICAgICBmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEIHx8CiAJICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CiAJICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEX0NDUyB8fAotCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUykpIHsKKwkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1 X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKKwkgICAgIGZiLT5tb2RpZmllciA9 PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MpKSB7CiAJCURSTV9ERUJVR19L TVMoIlkvWWYgdGlsaW5nIG5vdCBzdXBwb3J0ZWQgaW4gSUYtSUQgbW9kZVxuIik7CiAJCXJldHVy biAtRUlOVkFMOwogCX0KQEAgLTI1NzgsNyArMjU4MCwxNiBAQCBzdGF0aWMgY29uc3QgdTY0IHNr bF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX2Njc1tdID0gewogCURSTV9GT1JNQVRfTU9EX0lOVkFM SUQKIH07CiAKLXN0YXRpYyBjb25zdCB1NjQgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19j Y3NbXSA9IHsKK3N0YXRpYyBjb25zdCB1NjQgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19t Y19jY3NbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MsCisJSTkx NV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTLAorCUk5MTVfRk9STUFUX01PRF9ZX1RJ TEVELAorCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAorCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwK KwlEUk1fRk9STUFUX01PRF9JTlZBTElECit9OworCitzdGF0aWMgY29uc3QgdTY0IGdlbjEyX3Bs YW5lX2Zvcm1hdF9tb2RpZmllcnNfcmNfY2NzW10gPSB7CiAJSTkxNV9GT1JNQVRfTU9EX1lfVElM RURfR0VOMTJfUkNfQ0NTLAogCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVELAogCUk5MTVfRk9STUFU X01PRF9YX1RJTEVELApAQCAtMjc0MywxMCArMjc1NCwyMSBAQCBzdGF0aWMgYm9vbCBza2xfcGxh bmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCX0KIH0K IAorc3RhdGljIGJvb2wgZ2VuMTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKGVudW0gcGxhbmVfaWQg cGxhbmVfaWQpCit7CisJcmV0dXJuIHBsYW5lX2lkIDwgUExBTkVfU1BSSVRFNDsKK30KKwogc3Rh dGljIGJvb2wgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFu ZSAqX3BsYW5lLAogCQkJCQkgICAgIHUzMiBmb3JtYXQsIHU2NCBtb2RpZmllcikKIHsKKwlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoX3BsYW5lKTsKKwogCXN3aXRj aCAobW9kaWZpZXIpIHsKKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0ND UzoKKwkJaWYgKCFnZW4xMl9wbGFuZV9zdXBwb3J0c19tY19jY3MocGxhbmUtPmlkKSkKKwkJCXJl dHVybiBmYWxzZTsKKwkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBEUk1fRk9STUFUX01PRF9M SU5FQVI6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKIAljYXNlIEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEOgpAQCAtMjc2NCwxMSArMjc4Niw2IEBAIHN0YXRpYyBib29sIGdlbjEyX3Bs YW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAkJaWYg KGlzX2Njc19tb2RpZmllcihtb2RpZmllcikpCiAJCQlyZXR1cm4gdHJ1ZTsKIAkJLyogZmFsbCB0 aHJvdWdoICovCi0JY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKLQljYXNlIERSTV9GT1JNQVRfWFJH QjIxMDEwMTA6Ci0JY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgotCWNhc2UgRFJNX0ZPUk1B VF9BUkdCMjEwMTAxMDoKLQljYXNlIERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6CiAJY2FzZSBEUk1f Rk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZ Vlk6CkBAIC0yNzc3LDYgKzI3OTQsMTQgQEAgc3RhdGljIGJvb2wgZ2VuMTJfcGxhbmVfZm9ybWF0 X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCWNhc2UgRFJNX0ZPUk1B VF9QMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgogCWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogor CQlpZiAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTKQor CQkJcmV0dXJuIHRydWU7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgRFJNX0ZPUk1BVF9S R0I1NjU6CisJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9Y QkdSMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfQVJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9S TUFUX0FCR1IyMTAxMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoKIAljYXNlIERS TV9GT1JNQVRfQzg6CiAJY2FzZSBEUk1fRk9STUFUX1hCR1IxNjE2MTYxNkY6CkBAIC0yOTEwLDYg KzI5MzUsMTQgQEAgc3RhdGljIGNvbnN0IHUzMiAqaWNsX2dldF9wbGFuZV9mb3JtYXRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl9CiB9CiAKK3N0YXRpYyBjb25zdCB1NjQg KmdlbjEyX2dldF9wbGFuZV9tb2RpZmllcnMoZW51bSBwbGFuZV9pZCBwbGFuZV9pZCkKK3sKKwlp ZiAoZ2VuMTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKHBsYW5lX2lkKSkKKwkJcmV0dXJuIGdlbjEy X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfbWNfY2NzOworCWVsc2UKKwkJcmV0dXJuIGdlbjEyX3Bs YW5lX2Zvcm1hdF9tb2RpZmllcnNfcmNfY2NzOworfQorCiBzdGF0aWMgYm9vbCBza2xfcGxhbmVf aGFzX2NjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICBlbnVt IHBpcGUgcGlwZSwgZW51bSBwbGFuZV9pZCBwbGFuZV9pZCkKIHsKQEAgLTI5NzUsNyArMzAwOCw3 IEBAIHNrbF91bml2ZXJzYWxfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAogCXBsYW5lLT5oYXNfY2NzID0gc2tsX3BsYW5lX2hhc19jY3MoZGV2X3ByaXYs IHBpcGUsIHBsYW5lX2lkKTsKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewotCQlt b2RpZmllcnMgPSBnZW4xMl9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX2NjczsKKwkJbW9kaWZpZXJz ID0gZ2VuMTJfZ2V0X3BsYW5lX21vZGlmaWVycyhwbGFuZV9pZCk7CiAJCXBsYW5lX2Z1bmNzID0g JmdlbjEyX3BsYW5lX2Z1bmNzOwogCX0gZWxzZSB7CiAJCWlmIChwbGFuZS0+aGFzX2NjcykKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDAzMGEzZjNlNjlhZi4uMzZkNjMxMjczNjg0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTY4MTMsNiArNjgxMyw3IEBAIGVudW0gewogI2RlZmlu ZSAgIFBMQU5FX0NUTF9USUxFRF9ZCQkJKDQgPDwgMTApCiAjZGVmaW5lICAgUExBTkVfQ1RMX1RJ TEVEX1lGCQkJKDUgPDwgMTApCiAjZGVmaW5lICAgUExBTkVfQ1RMX0ZMSVBfSE9SSVpPTlRBTAkJ KDEgPDwgOCkKKyNkZWZpbmUgICBQTEFORV9DVExfTUVESUFfREVDT01QUkVTU0lPTl9FTkFCTEUJ KDEgPDwgNCkgLyogVEdMKyAqLwogI2RlZmluZSAgIFBMQU5FX0NUTF9BTFBIQV9NQVNLCQkJKDB4 MyA8PCA0KSAvKiBQcmUtR0xLICovCiAjZGVmaW5lICAgUExBTkVfQ1RMX0FMUEhBX0RJU0FCTEUJ CSgwIDw8IDQpCiAjZGVmaW5lICAgUExBTkVfQ1RMX0FMUEhBX1NXX1BSRU1VTFRJUExZCSgyIDw8 IDQpCi0tIAoyLjIzLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=