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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 F2A19C07E95 for ; Tue, 20 Jul 2021 20:41:06 +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 C393961004 for ; Tue, 20 Jul 2021 20:41:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C393961004 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 8A2266E53C; Tue, 20 Jul 2021 20:40:28 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 005CB6E51B; Tue, 20 Jul 2021 20:40:17 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10051"; a="190909009" X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="190909009" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:16 -0700 X-IronPort-AV: E=Sophos;i="5.84,256,1620716400"; d="scan'208";a="414906071" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2021 13:40:15 -0700 From: Matthew Brost To: , Date: Tue, 20 Jul 2021 13:57:33 -0700 Message-Id: <20210720205802.39610-14-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210720205802.39610-1-matthew.brost@intel.com> References: <20210720205802.39610-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC PATCH 13/42] drm/i915/guc: Selftest for GuC flow control 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QWRkIDUgc2VsZnRlc3RzIGZvciBoYXJkIChmcm9tIHVzZXIgc3BhY2UpIHRvIHJlY3JlYXRlIGZs b3cgY29uZGl0aW9ucy4KVGVzdCBsaXN0ZWQgYmVsb3c6CgoxLiBBIHRlc3QgdG8gdmVyaWZ5IHRo YXQgdGhlIG51bWJlciBvZiBndWNfaWRzIGNhbiBiZSBleGhhdXN0ZWQgYW5kIGFsbApzdWJtaXNz aW9ucyBzdGlsbCBjb21wbGV0ZS4KCjIuIEEgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgZmxvdyBj b250cm9sIHN0YXRlIG1hY2hpbmUgY2FuIHJlY292ZXIgZnJvbQphIGZ1bGwgR1BVIHJlc2V0LgoK My4gQSB0ZXNldCB0byB2ZXJpZnkgdGhhdCB0aGUgbHJjZCByZWdpc3RyYXRpb24gc2xvdHMgY2Fu IGJlIGV4aGF1c3RlZAphbmQgYWxsIHN1Ym1pc3Npb25zIHN0aWxsIGNvbXBsZXRlLgoKNC4gQSB0 ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSBIMkcgY2hhbm5lbCBjYW4gZGVhZGxvY2sgYW5kIGEgZnVs bCBHUFUKcmVzZXQgcmVjb3ZlcnMgdGhlIHN5c3RlbS4KCjUuIEEgdGVzdCB0byBzdHJlc3MgdG8g Q1RCIGNoYW5uZWwgYnV0IHN1Ym1pdHRpbmcgdG8gbG90cyBvZiBjb250ZXh0cwphbmQgdGhlbiBp bW1lZGlhdGVseSBkZXN0cm95IHRoZSBjb250ZXh0cy4KClRlc3RzIDEsIDIsIGFuZCAzIGFsc28g ZW5zdXJlIHdoZW4gdGhlIGZsb3cgY29udHJvbCBpcyB0cmlnZ2VyZWQgYnkKdW5yZWFkeSByZXF1 ZXN0cyB0aG9zZSB1bnJlYWR5IHJlcXVlc3RzIGRvIG5vdCBEb1MgcmVhZHkgcmVxdWVzdHMuCgpT aWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgICAgICAgfCAgIDYgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMgICAgIHwgIDQzICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaCAgICAgfCAgIDkgKwogLi4u L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgIDE2ICsKIC4uLi9p OTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uX3R5cGVzLmggICB8ICAgMiArCiAuLi4vaTkx NS9ndC91Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9sLmMgICAgfCA1ODEgKysrKysrKysrKysr KysrKysrCiAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCAgfCAg IDEgKwogLi4uL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMgIHwgIDEy ICsKIC4uLi9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5oICB8ICAgMSAr CiA5IGZpbGVzIGNoYW5nZWQsIDY2MSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWNf Zmxvd19jb250cm9sLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCmluZGV4 IGIyOTlhNjc3MjgyMy4uNDY2Y2M2MjI3NTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWMuaApAQCAtMTAzLDYgKzEwMywxMiBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAogCS8q IFRvIHNlcmlhbGl6ZSB0aGUgaW50ZWxfZ3VjX3NlbmQgYWN0aW9ucyAqLwogCXN0cnVjdCBtdXRl eCBzZW5kX211dGV4OworCisJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKGJvb2wgZ3NlX2hhbmdfZXhw ZWN0ZWQ7KQorCUk5MTVfU0VMRlRFU1RfREVDTEFSRShib29sIGRlYWRsb2NrX2V4cGVjdGVkOykK KwlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoYm9vbCBiYWRfZGVzY19leHBlY3RlZDspCisJSTkxNV9T RUxGVEVTVF9ERUNMQVJFKGJvb2wgaW5qZWN0X2JhZF9zY2hlZF9kaXNhYmxlOykKKwlJOTE1X1NF TEZURVNUX0RFQ0xBUkUoYm9vbCBpbmplY3RfY29ycnVwdF9oMmc7KQogfTsKIAogc3RhdGljIGlu bGluZSBzdHJ1Y3QgaW50ZWxfZ3VjICpsb2dfdG9fZ3VjKHN0cnVjdCBpbnRlbF9ndWNfbG9nICps b2cpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jCmluZGV4IDkyOTc2 ZDIwNTQ3OC4uNTlhZGYwNmU4MjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfY3QuYwpAQCAtMyw3ICszLDYgQEAKICAqIENvcHlyaWdodCDCqSAyMDE2LTIwMTkgSW50 ZWwgQ29ycG9yYXRpb24KICAqLwogCi0jaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KICNpbmNs dWRlIDxsaW51eC9rdGltZS5oPgogI2luY2x1ZGUgPGxpbnV4L3RpbWU2NC5oPgogI2luY2x1ZGUg PGxpbnV4L3RpbWVrZWVwaW5nLmg+CkBAIC00MTQsOCArNDEzLDkgQEAgc3RhdGljIGludCBjdF93 cml0ZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKIAl1MzIgKmNtZHMgPSBjdGItPmNtZHM7CiAJ dW5zaWduZWQgaW50IGk7CiAKLQlpZiAodW5saWtlbHkoZGVzYy0+c3RhdHVzKSkKLQkJZ290byBj b3JydXB0ZWQ7CisJaWYgKCFJOTE1X1NFTEZURVNUX09OTFkoY3RfdG9fZ3VjKGN0KS0+ZGVhZGxv Y2tfZXhwZWN0ZWQpKQorCQlpZiAodW5saWtlbHkoZGVzYy0+c3RhdHVzKSkKKwkJCWdvdG8gY29y cnVwdGVkOwogCiAJR0VNX0JVR19PTih0YWlsID4gc2l6ZSk7CiAKQEAgLTQ0Myw2ICs0NDMsMTUg QEAgc3RhdGljIGludCBjdF93cml0ZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKIAkJIEZJRUxE X1BSRVAoR1VDX0NUQl9NU0dfMF9OVU1fRFdPUkRTLCBsZW4pIHwKIAkJIEZJRUxEX1BSRVAoR1VD X0NUQl9NU0dfMF9GRU5DRSwgZmVuY2UpOwogCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5 MTVfU0VMRlRFU1QpCisJaWYgKGN0X3RvX2d1YyhjdCktPmluamVjdF9jb3JydXB0X2gyZykgewor CQloZWFkZXIgPSBGSUVMRF9QUkVQKEdVQ19DVEJfTVNHXzBfRk9STUFULCAzKSB8CisJCQkgRklF TERfUFJFUChHVUNfQ1RCX01TR18wX05VTV9EV09SRFMsIGxlbiArIDUpIHwKKwkJCSBGSUVMRF9Q UkVQKEdVQ19DVEJfTVNHXzBfRkVOQ0UsIDB4ZGVhZCk7CisJCWN0X3RvX2d1YyhjdCktPmluamVj dF9jb3JydXB0X2gyZyA9IGZhbHNlOworCX0KKyNlbmRpZgorCiAJdHlwZSA9IChmbGFncyAmIElO VEVMX0dVQ19DVF9TRU5EX05CKSA/IEdVQ19IWEdfVFlQRV9FVkVOVCA6CiAJCUdVQ19IWEdfVFlQ RV9SRVFVRVNUOwogCWh4ZyA9IEZJRUxEX1BSRVAoR1VDX0hYR19NU0dfMF9UWVBFLCB0eXBlKSB8 CkBAIC00ODEsOCArNDkwLDEyIEBAIHN0YXRpYyBpbnQgY3Rfd3JpdGUoc3RydWN0IGludGVsX2d1 Y19jdCAqY3QsCiAJcmV0dXJuIDA7CiAKIGNvcnJ1cHRlZDoKLQlDVF9FUlJPUihjdCwgIkNvcnJ1 cHRlZCBkZXNjcmlwdG9yIGhlYWQ9JXUgdGFpbD0ldSBzdGF0dXM9JSN4XG4iLAotCQkgZGVzYy0+ aGVhZCwgZGVzYy0+dGFpbCwgZGVzYy0+c3RhdHVzKTsKKwlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZ KGN0X3RvX2d1YyhjdCktPmJhZF9kZXNjX2V4cGVjdGVkKSkKKwkJQ1RfREVCVUcoY3QsICJDb3Jy dXB0ZWQgZGVzY3JpcHRvciBoZWFkPSV1IHRhaWw9JXUgc3RhdHVzPSUjeFxuIiwKKwkJCSBkZXNj LT5oZWFkLCBkZXNjLT50YWlsLCBkZXNjLT5zdGF0dXMpOworCWVsc2UKKwkJQ1RfRVJST1IoY3Qs ICJDb3JydXB0ZWQgZGVzY3JpcHRvciBoZWFkPSV1IHRhaWw9JXUgc3RhdHVzPSUjeFxuIiwKKwkJ CSBkZXNjLT5oZWFkLCBkZXNjLT50YWlsLCBkZXNjLT5zdGF0dXMpOwogCWN0Yi0+YnJva2VuID0g dHJ1ZTsKIAlyZXR1cm4gLUVQSVBFOwogfQpAQCAtNTM5LDkgKzU1MiwxOCBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgY3RfZGVhZGxvY2tlZChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKIAkJc3RydWN0 IGd1Y19jdF9idWZmZXJfZGVzYyAqc2VuZCA9IGN0LT5jdGJzLnNlbmQuZGVzYzsKIAkJc3RydWN0 IGd1Y19jdF9idWZmZXJfZGVzYyAqcmVjdiA9IGN0LT5jdGJzLnNlbmQuZGVzYzsKIAotCQlDVF9F UlJPUihjdCwgIkNvbW11bmljYXRpb24gc3RhbGxlZCBmb3IgJWxsZCBtcywgZGVzYyBzdGF0dXM9 JSN4LCUjeFxuIiwKLQkJCSBrdGltZV9tc19kZWx0YShrdGltZV9nZXQoKSwgY3QtPnN0YWxsX3Rp bWUpLAotCQkJIHNlbmQtPnN0YXR1cywgcmVjdi0+c3RhdHVzKTsKKwkJLyoKKwkJICogQ0kgZG9l c24ndCBsaWtlIGVycm9yIG1lc3NhZ2VzLCBkZW1vdGUgdG8gZGVidWcgaWYgZGVhZGxvY2sgd2Fz CisJCSAqIGludGVudGlvbmFsbHkgaGl0LgorCQkgKi8KKwkJaWYgKEk5MTVfU0VMRlRFU1RfT05M WShjdF90b19ndWMoY3QpLT5kZWFkbG9ja19leHBlY3RlZCkpCisJCQlDVF9ERUJVRyhjdCwgIkNv bW11bmljYXRpb24gc3RhbGxlZCBmb3IgJWxsZCBtcywgZGVzYyBzdGF0dXM9JSN4LCUjeFxuIiwK KwkJCQkga3RpbWVfbXNfZGVsdGEoa3RpbWVfZ2V0KCksIGN0LT5zdGFsbF90aW1lKSwKKwkJCQkg c2VuZC0+c3RhdHVzLCByZWN2LT5zdGF0dXMpOworCQllbHNlCisJCQlDVF9FUlJPUihjdCwgIkNv bW11bmljYXRpb24gc3RhbGxlZCBmb3IgJWxsZCBtcywgZGVzYyBzdGF0dXM9JSN4LCUjeFxuIiwK KwkJCQkga3RpbWVfbXNfZGVsdGEoa3RpbWVfZ2V0KCksIGN0LT5zdGFsbF90aW1lKSwKKwkJCQkg c2VuZC0+c3RhdHVzLCByZWN2LT5zdGF0dXMpOwogCQljdC0+Y3Ricy5zZW5kLmJyb2tlbiA9IHRy dWU7CiAJfQogCkBAIC03NjQsOCArNzg2LDkgQEAgaW50IGludGVsX2d1Y19jdF9zZW5kKHN0cnVj dCBpbnRlbF9ndWNfY3QgKmN0LCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKIAkJcmV0dXJu IC1FTk9ERVY7CiAJfQogCi0JaWYgKHVubGlrZWx5KGN0LT5jdGJzLnNlbmQuYnJva2VuKSkKLQkJ cmV0dXJuIC1FUElQRTsKKwlpZiAoIUk5MTVfU0VMRlRFU1RfT05MWShjdF90b19ndWMoY3QpLT5k ZWFkbG9ja19leHBlY3RlZCkpCisJCWlmICh1bmxpa2VseShjdC0+Y3Ricy5zZW5kLmJyb2tlbikp CisJCQlyZXR1cm4gLUVQSVBFOwogCiAJaWYgKGZsYWdzICYgSU5URUxfR1VDX0NUX1NFTkRfTkIp CiAJCXJldHVybiBjdF9zZW5kX25iKGN0LCBhY3Rpb24sIGxlbiwgZmxhZ3MpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAppbmRleCA3YjM0MDI2ZDI2NGEuLmJhZmM1 MTE3NzFmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X2N0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmgKQEAg LTYsNiArNiw3IEBACiAjaWZuZGVmIF9JTlRFTF9HVUNfQ1RfSF8KICNkZWZpbmUgX0lOVEVMX0dV Q19DVF9IXwogCisjaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KICNpbmNsdWRlIDxsaW51eC9p bnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgogI2luY2x1ZGUgPGxpbnV4 L3dvcmtxdWV1ZS5oPgpAQCAtMTE1LDQgKzExNiwxMiBAQCB2b2lkIGludGVsX2d1Y19jdF9ldmVu dF9oYW5kbGVyKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0KTsKIAogdm9pZCBpbnRlbF9ndWNfY3Rf cHJpbnRfaW5mbyhzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgc3RydWN0IGRybV9wcmludGVyICpw KTsKIAorc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19jdF9pc19yZWN2X2J1ZmZlcl9lbXB0 eShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjX2N0X2J1ZmZl ciAqY3RiID0gJmN0LT5jdGJzLnJlY3Y7CisKKwlyZXR1cm4gYXRvbWljX3JlYWQoJmN0Yi0+c3Bh Y2UpID09CisJCShDSVJDX1NQQUNFKDAsIDAsIGN0Yi0+c2l6ZSkgLSBjdGItPnJlc3Zfc3BhY2Up OworfQorCiAjZW5kaWYgLyogX0lOVEVMX0dVQ19DVF9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggOGMzMzMyZTI0ZDU5 Li42NWY1OTQ5N2U3ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtODE4LDYgKzgxOCw3IEBAIHN0YXRpYyBpbnQgZ3NlX2Rl cXVldWVfb25lX2NvbnRleHQoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UpCiAJCQlHRU1f V0FSTl9PTihyZXQpOwkvKiBVbmV4cGVjdGVkICovCiAJCQlnb3RvIGRlYWRsazsKIAkJfQorCQlJ OTE1X1NFTEZURVNUX0RFQ0xBUkUoKytnc2UtPnRhc2tsZXRzX3N1Ym1pdF9jb3VudDspCiAJfQog CiAJLyoKQEAgLTIwOTIsNyArMjA5MywxNSBAQCBzdGF0aWMgdm9pZCBfX2d1Y19jb250ZXh0X3Nj aGVkX2Rpc2FibGUoc3RydWN0IGludGVsX2d1YyAqZ3VjLAogCQlHVUNfQ09OVEVYVF9ESVNBQkxF CiAJfTsKIAorI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQorCWlmIChn dWMtPmluamVjdF9iYWRfc2NoZWRfZGlzYWJsZSAmJgorCSAgICBndWNfaWQgPT0gR1VDX0lOVkFM SURfTFJDX0lEKQorCQlndWMtPmluamVjdF9iYWRfc2NoZWRfZGlzYWJsZSA9IGZhbHNlOworCWVs c2UKKwkJR0VNX0JVR19PTihndWNfaWQgPT0gR1VDX0lOVkFMSURfTFJDX0lEKTsKKyNlbHNlCiAJ R0VNX0JVR19PTihndWNfaWQgPT0gR1VDX0lOVkFMSURfTFJDX0lEKTsKKyNlbmRpZgogCiAJdHJh Y2VfaW50ZWxfY29udGV4dF9zY2hlZF9kaXNhYmxlKGNlKTsKIApAQCAtMjczOSw2ICsyNzQ4LDkg QEAgc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtlcl9zY2hlZF9kaXNhYmxlKHN0cnVjdCBndWNfc3Vi bWl0X2VuZ2luZSAqZ3NlLAogCQlndWNfaWQgPSBwcmVwX2NvbnRleHRfcGVuZGluZ19kaXNhYmxl KGNlKTsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2UtPmd1Y19zdGF0ZS5sb2NrLCBmbGFn cyk7CiAKKwkJaWYgKEk5MTVfU0VMRlRFU1RfT05MWShndWMtPmluamVjdF9iYWRfc2NoZWRfZGlz YWJsZSkpCisJCQlndWNfaWQgPSBHVUNfSU5WQUxJRF9MUkNfSUQ7CisKIAkJd2l0aF9pbnRlbF9y dW50aW1lX3BtKHJ1bnRpbWVfcG0sIHdha2VyZWYpCiAJCQlfX2d1Y19jb250ZXh0X3NjaGVkX2Rp c2FibGUoZ3VjLCBjZSwgZ3VjX2lkKTsKIApAQCAtMzk5MSwzICs0MDAzLDcgQEAgYm9vbCBpbnRl bF9ndWNfdmlydHVhbF9lbmdpbmVfaGFzX2hlYXJ0YmVhdChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICp2ZSkKIAogCXJldHVybiBmYWxzZTsKIH0KKworI2lmIElTX0VOQUJMRUQoQ09ORklH X0RSTV9JOTE1X1NFTEZURVNUKQorI2luY2x1ZGUgInNlbGZ0ZXN0X2d1Y19mbG93X2NvbnRyb2wu YyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb25fdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19zdWJtaXNzaW9uX3R5cGVzLmgKaW5kZXggMGMyMjRhYjE4YzAyLi43MDY5YjcyNDhmNTUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNz aW9uX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1 Ym1pc3Npb25fdHlwZXMuaApAQCAtNDcsNiArNDcsOCBAQCBzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdp bmUgewogCQlTVEFMTF9NT1ZFX0xSQ19UQUlMLAogCQlTVEFMTF9BRERfUkVRVUVTVCwKIAl9IHN1 Ym1pc3Npb25fc3RhbGxfcmVhc29uOworCisJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHU2NCB0YXNr bGV0c19zdWJtaXRfY291bnQ7KQogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9sLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9sLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMzFhYjI2NzRiMmIKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9s LmMKQEAgLTAsMCArMSw1ODEgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8q CisgKiBDb3B5cmlnaHQg77+977+9IDIwMjEgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5j bHVkZSAic2VsZnRlc3RzL2lndF9zcGlubmVyLmgiCisjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9y ZXNldC5oIgorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5oIgor I2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCIKKyNpbmNsdWRlICJnZW0vc2Vs ZnRlc3RzL21vY2tfY29udGV4dC5oIgorCitzdGF0aWMgaW50IF9fcmVxdWVzdF9hZGRfc3Bpbihz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGlndF9zcGlubmVyICpzcGluKQoreworCWlu dCBlcnIgPSAwOworCisJaTkxNV9yZXF1ZXN0X2dldChycSk7CisJaTkxNV9yZXF1ZXN0X2FkZChy cSk7CisJaWYgKHNwaW4gJiYgIWlndF93YWl0X2Zvcl9zcGlubmVyKHNwaW4sIHJxKSkKKwkJZXJy ID0gLUVUSU1FRE9VVDsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpub3Bfa2VybmVsX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJcnEgPSBpbnRlbF9lbmdpbmVfY3Jl YXRlX2tlcm5lbF9yZXF1ZXN0KGVuZ2luZSk7CisJaWYgKElTX0VSUihycSkpCisJCXJldHVybiBy cTsKKworCWk5MTVfcmVxdWVzdF9nZXQocnEpOworCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCisJ cmV0dXJuIHJxOworfQorCitzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqbm9wX3VzZXJfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJCSAgICAgc3RydWN0IGk5MTVfcmVx dWVzdCAqZnJvbSkKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlpbnQgcmV0OworCisJ cnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KGNlKTsKKwlpZiAoSVNfRVJSKHJxKSkK KwkJcmV0dXJuIHJxOworCisJaWYgKGZyb20pIHsKKwkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2Fp dF9kbWFfZmVuY2UoJnJxLT5zdWJtaXQsCisJCQkJCQkgICAgJmZyb20tPmZlbmNlLCAwLAorCQkJ CQkJICAgIEk5MTVfRkVOQ0VfR0ZQKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWk5MTVfcmVxdWVz dF9wdXQocnEpOworCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwkJfQorCX0KKworCWk5MTVfcmVx dWVzdF9nZXQocnEpOworCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCisJcmV0dXJuIHJxOworfQor CitzdGF0aWMgaW50IG5vcF9yZXF1ZXN0X3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCBib29sIGtlcm5lbCwKKwkJCSAgICBib29sIGZsb3dfY29udHJvbCkKK3sKKwlzdHJ1Y3Qg aTkxNV9ncHVfZXJyb3IgKmdsb2JhbCA9ICZlbmdpbmUtPmd0LT5pOTE1LT5ncHVfZXJyb3I7CisJ dW5zaWduZWQgaW50IHJlc2V0X2NvdW50ID0gaTkxNV9yZXNldF9jb3VudChnbG9iYWwpOworCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZlbmdpbmUtPmd0LT51Yy5ndWM7CisJc3RydWN0IGd1Y19z dWJtaXRfZW5naW5lICpnc2UgPSBndWMtPmdzZVtHVUNfU1VCTUlUX0VOR0lORV9TSU5HTEVfTFJD XTsKKwl1NjQgdGFza2xldHNfc3VibWl0X2NvdW50ID0gZ3NlLT50YXNrbGV0c19zdWJtaXRfY291 bnQ7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKm5v cDsKKwlpbnQgcmV0OworCisJaWYgKGtlcm5lbCkgeworCQlub3AgPSBub3Bfa2VybmVsX3JlcXVl c3QoZW5naW5lKTsKKwl9IGVsc2UgeworCQljZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGVuZ2lu ZSk7CisJCWlmIChJU19FUlIoY2UpKQorCQkJcmV0dXJuIFBUUl9FUlIoY2UpOworCQlub3AgPSBu b3BfdXNlcl9yZXF1ZXN0KGNlLCBOVUxMKTsKKwkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCX0K KwlpZiAoSVNfRVJSKG5vcCkpCisJCXJldHVybiBQVFJfRVJSKG5vcCk7CisKKwlyZXQgPSBpbnRl bF9zZWxmdGVzdF93YWl0X2Zvcl9ycShub3ApOworCWk5MTVfcmVxdWVzdF9wdXQobm9wKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKCFmbG93X2NvbnRyb2wgJiYKKwkgICAgZ3Nl LT50YXNrbGV0c19zdWJtaXRfY291bnQgIT0gdGFza2xldHNfc3VibWl0X2NvdW50KSB7CisJCXBy X2VycigiRmxvdyBjb250cm9sIGZvciBzaW5nbGUtbHJjIHVuZXhwZWN0ZWRseSBraWNrZWQgaW5c biIpOworCQlyZXQgPSAtRUlOVkFMOworCX0KKworCWlmIChmbG93X2NvbnRyb2wgJiYKKwkgICAg Z3NlLT50YXNrbGV0c19zdWJtaXRfY291bnQgPT0gdGFza2xldHNfc3VibWl0X2NvdW50KSB7CisJ CXByX2VycigiRmxvdyBjb250cm9sIGZvciBzaW5nbGUtbHJjIGRpZCBub3Qga2ljayBpblxuIik7 CisJCXJldCA9IC1FSU5WQUw7CisJfQorCisJaWYgKGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKSAh PSByZXNldF9jb3VudCkgeworCQlwcl9lcnIoIlVuZXhwZWN0ZWQgR1BVIHJlc2V0IGR1cmluZyBz aW5nbGUtbHJjIHN1Ym1pdFxuIik7CisJCXJldCA9IC1FSU5WQUw7CisJfQorCisJcmV0dXJuIHJl dDsKK30KKworI2RlZmluZSBOVU1fR1VDX0lECQkyNTYKKyNkZWZpbmUgTlVNX0NPTlRFWFQJCTEw MjQKKyNkZWZpbmUgTlVNX1JRX1BFUl9DT05URVhUCTIKKyNkZWZpbmUgSEVBUlRCRUFUX0lOVEVS VkFMCTE1MDAKKworc3RhdGljIGludCBfX2ludGVsX2d1Y19mbG93X2NvbnRyb2xfZ3VjKHZvaWQg KmFyZywgYm9vbCBsaW1pdF9ndWNfaWRzLCBib29sIGhhbmcpCit7CisJc3RydWN0IGludGVsX2d0 ICpndCA9IGFyZzsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZ3QtPnVjLmd1YzsKKwlzdHJ1 Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSA9IGd1Yy0+Z3NlW0dVQ19TVUJNSVRfRU5HSU5FX1NJ TkdMRV9MUkNdOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICoqY29udGV4dHM7CisJaW50IHJldCA9 IDA7CisJaW50IGksIGosIGs7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCXN0cnVjdCBp Z3Rfc3Bpbm5lciBzcGluOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnNwaW5fcnEgPSBOVUxMLCAq bGFzdCA9IE5VTEw7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZ2xvYmFsID0gJmd0LT5p OTE1LT5ncHVfZXJyb3I7CisJdW5zaWduZWQgaW50IHJlc2V0X2NvdW50OworCXU2NCB0YXNrbGV0 c19zdWJtaXRfY291bnQgPSBnc2UtPnRhc2tsZXRzX3N1Ym1pdF9jb3VudDsKKwl1MzIgb2xkX2Jl YXQ7CisKKwljb250ZXh0cyA9IGttYWxsb2Moc2l6ZW9mKCpjb250ZXh0cykgKiBOVU1fQ09OVEVY VCwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjb250ZXh0cykgeworCQlwcl9lcnIoIkNvbnRleHQgYXJy YXkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwl3YWtl cmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZ3QtPnVuY29yZS0+cnBtKTsKKworCWlmIChsaW1p dF9ndWNfaWRzKQorCQlndWMtPm51bV9ndWNfaWRzID0gTlVNX0dVQ19JRDsKKworCWNlID0gaW50 ZWxfY29udGV4dF9jcmVhdGUoaW50ZWxfc2VsZnRlc3RfZmluZF9hbnlfZW5naW5lKGd0KSk7CisJ aWYgKElTX0VSUihjZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihjZSk7CisJCXByX2VycigiRmFpbGVk IHRvIGNyZWF0ZSBjb250ZXh0OiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnI7CisJfQorCisJcmVz ZXRfY291bnQgPSBpOTE1X3Jlc2V0X2NvdW50KGdsb2JhbCk7CisJZW5naW5lID0gY2UtPmVuZ2lu ZTsKKworCW9sZF9iZWF0ID0gZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXM7CisJ aWYgKGhhbmcpIHsKKwkJcmV0ID0gaW50ZWxfZW5naW5lX3NldF9oZWFydGJlYXQoZW5naW5lLCBI RUFSVEJFQVRfSU5URVJWQUwpOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIkZhaWxlZCB0byBi b29zdCBoZWFydGJlYXQgaW50ZXJ2YWw6ICVkXG4iLCByZXQpOworCQkJZ290byBlcnI7CisJCX0K Kwl9CisKKwkvKiBDcmVhdGUgc3Bpbm5lciB0byBibG9jayByZXF1ZXN0cyBpbiBiZWxvdyBsb29w ICovCisJcmV0ID0gaWd0X3NwaW5uZXJfaW5pdCgmc3BpbiwgZW5naW5lLT5ndCk7CisJaWYgKHJl dCkgeworCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgc3Bpbm5lcjogJWRcbiIsIHJldCk7CisJ CWdvdG8gZXJyX2hlYXJ0YmVhdDsKKwl9CisJc3Bpbl9ycSA9IGlndF9zcGlubmVyX2NyZWF0ZV9y ZXF1ZXN0KCZzcGluLCBjZSwgTUlfQVJCX0NIRUNLKTsKKwlpbnRlbF9jb250ZXh0X3B1dChjZSk7 CisJaWYgKElTX0VSUihzcGluX3JxKSkgeworCQlyZXQgPSBQVFJfRVJSKHNwaW5fcnEpOworCQlw cl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgc3Bpbm5lciByZXF1ZXN0OiAlZFxuIiwgcmV0KTsKKwkJ Z290byBlcnJfaGVhcnRiZWF0OworCX0KKwlyZXQgPSBfX3JlcXVlc3RfYWRkX3NwaW4oc3Bpbl9y cSwgJnNwaW4pOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gYWRkIFNwaW5uZXIg cmVxdWVzdDogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX3NwaW5fcnE7CisJfQorCisJLyoKKwkg KiBDcmVhdGUgb2YgbG90IG9mIHJlcXVlc3RzIGluIGEgbG9vcCB0byB0cmlnZ2VyIHRoZSBmbG93 IGNvbnRyb2wgc3RhdGUKKwkgKiBtYWNoaW5lLiBVc2luZyBhIHRocmVlIGxldmVsIGxvb3AgYXMg aXQgaXMgaW50ZXJlc3RpbmcgdG8gaGl0IGZsb3cKKwkgKiBjb250cm9sIHdpdGggbW9yZSB0aGFu IDEgcmVxdWVzdCBvbiBlYWNoIGNvbnRleHQgaW4gYSByb3cgYW5kIGFsc28KKwkgKiBpbnRlcmxl YXZlIHJlcXVlc3RzIHdpdGggb3RoZXIgY29udGV4dHMuCisJICovCisJZm9yIChpID0gMDsgaSA8 IE5VTV9SUV9QRVJfQ09OVEVYVDsgKytpKSB7CisJCWZvciAoaiA9IDA7IGogPCBOVU1fQ09OVEVY VDsgKytqKSB7CisJCQlmb3IgKGsgPSAwOyBrIDwgTlVNX1JRX1BFUl9DT05URVhUOyArK2spIHsK KwkJCQlib29sIGZpcnN0X3Bhc3MgPSAhaSAmJiAhazsKKworCQkJCWlmIChsYXN0KQorCQkJCQlp OTE1X3JlcXVlc3RfcHV0KGxhc3QpOworCQkJCWxhc3QgPSBOVUxMOworCisJCQkJaWYgKGZpcnN0 X3Bhc3MpCisJCQkJCWNvbnRleHRzW2pdID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsK KwkJCQljZSA9IGNvbnRleHRzW2pdOworCisJCQkJaWYgKElTX0VSUihjZSkpIHsKKwkJCQkJcmV0 ID0gUFRSX0VSUihjZSk7CisJCQkJCXByX2VycigiRmFpbGVkIHRvIGNyZWF0ZSBjb250ZXh0LCAl ZCwlZCwlZDogJWRcbiIsCisJCQkJCSAgICAgICBpLCBqLCBrLCByZXQpOworCQkJCQlnb3RvIGVy cl9zcGluX3JxOworCQkJCX0KKworCQkJCWxhc3QgPSBub3BfdXNlcl9yZXF1ZXN0KGNlLCBzcGlu X3JxKTsKKwkJCQlpZiAoZmlyc3RfcGFzcykKKwkJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwor CQkJCWlmIChJU19FUlIobGFzdCkpIHsKKwkJCQkJcmV0ID0gUFRSX0VSUihsYXN0KTsKKwkJCQkJ cHJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIHJlcXVlc3QsICVkLCVkLCVkOiAlZFxuIiwKKwkJCQkJ ICAgICAgIGksIGosIGssIHJldCk7CisJCQkJCWdvdG8gZXJyX3NwaW5fcnE7CisJCQkJfQorCQkJ fQorCQl9CisJfQorCisJLyogVmVyaWZ5IEd1QyBzdWJtaXQgZW5naW5lIHN0YXRlICovCisJaWYg KGxpbWl0X2d1Y19pZHMgJiYgIWd1Y19pZHNfZXhoYXVzdGVkKGdzZSkpIHsKKwkJcHJfZXJyKCJn dWNfaWRzIG5vdCBleGhhdXN0ZWRcbiIpOworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGVycl9z cGluX3JxOworCX0KKwlpZiAoIWxpbWl0X2d1Y19pZHMgJiYgZ3VjX2lkc19leGhhdXN0ZWQoZ3Nl KSkgeworCQlwcl9lcnIoImd1Y19pZHMgZXhoYXVzdGVkXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsK KwkJZ290byBlcnJfc3Bpbl9ycTsKKwl9CisKKwkvKiBFbnN1cmUgbm8gRG9TIGZyb20gdW5yZWFk eSByZXF1ZXN0cyAqLworCXJldCA9IG5vcF9yZXF1ZXN0X3dhaXQoZW5naW5lLCBmYWxzZSwgdHJ1 ZSk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCJVc2VyIE5PUCByZXF1ZXN0IERvUzogJWRc biIsIHJldCk7CisJCWdvdG8gZXJyX3NwaW5fcnE7CisJfQorCisJLyogSW5qZWN0IGhhbmcgaW4g ZmxvdyBjb250cm9sIHN0YXRlIG1hY2hpbmUgKi8KKwlpZiAoaGFuZykgeworCQlndWMtPmdzZV9o YW5nX2V4cGVjdGVkID0gdHJ1ZTsKKwkJZ3VjLT5pbmplY3RfYmFkX3NjaGVkX2Rpc2FibGUgPSB0 cnVlOworCX0KKworCS8qIFJlbGVhc2UgYmxvY2tlZCByZXF1ZXN0cyAqLworCWlndF9zcGlubmVy X2VuZCgmc3Bpbik7CisJcmV0ID0gaW50ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEoc3Bpbl9ycSk7 CisJaWYgKHJldCkgeworCQlwcl9lcnIoIlNwaW4gcmVxdWVzdCBmYWlsZWQgdG8gY29tcGxldGU6 ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9zcGluX3JxOworCX0KKwlpOTE1X3JlcXVlc3RfcHV0 KHNwaW5fcnEpOworCWlndF9zcGlubmVyX2ZpbmkoJnNwaW4pOworCXNwaW5fcnEgPSBOVUxMOwor CisJLyogV2FpdCBmb3IgbGFzdCByZXF1ZXN0IC8gR1QgdG8gaWRsZSAqLworCXJldCA9IGk5MTVf cmVxdWVzdF93YWl0KGxhc3QsIDAsIGhhbmcgPyBIWiAqIDMwIDogSFogKiAxMCk7CisJaWYgKHJl dCA8IDApIHsKKwkJcHJfZXJyKCJMYXN0IHJlcXVlc3QgZmFpbGVkIHRvIGNvbXBsZXRlOiAlZFxu IiwgcmV0KTsKKwkJZ290byBlcnJfc3Bpbl9ycTsKKwl9CisJaTkxNV9yZXF1ZXN0X3B1dChsYXN0 KTsKKwlsYXN0ID0gTlVMTDsKKwlyZXQgPSBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWiAq IDUpOworCWlmIChyZXQgPCAwKSB7CisJCXByX2VycigiR1QgZmFpbGVkIHRvIGlkbGU6ICVkXG4i LCByZXQpOworCQlnb3RvIGVycl9zcGluX3JxOworCX0KKworCS8qIENoZWNrIHN0YXRlIGFmdGVy IGlkbGUgKi8KKwlpZiAoZ3VjX2lkc19leGhhdXN0ZWQoZ3NlKSkgeworCQlwcl9lcnIoImd1Y19p ZHMgZXhoYXVzdGVkIGFmdGVyIGxhc3QgcmVxdWVzdCBzaWduYWxlZFxuIik7CisJCXJldCA9IC1F SU5WQUw7CisJCWdvdG8gZXJyX3NwaW5fcnE7CisJfQorCWlmIChoYW5nKSB7CisJCWlmIChpOTE1 X3Jlc2V0X2NvdW50KGdsb2JhbCkgPT0gcmVzZXRfY291bnQpIHsKKwkJCXByX2VycigiRmFpbGVk IHRvIHJlY29yZCBhIEdQVSByZXNldFxuIik7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBl cnJfc3Bpbl9ycTsKKwkJfQorCX0gZWxzZSB7CisJCWlmIChpOTE1X3Jlc2V0X2NvdW50KGdsb2Jh bCkgIT0gcmVzZXRfY291bnQpIHsKKwkJCXByX2VycigiVW5leHBlY3RlZCBHUFUgcmVzZXRcbiIp OworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJyX3NwaW5fcnE7CisJCX0KKwkJaWYgKGdz ZS0+dGFza2xldHNfc3VibWl0X2NvdW50ID09IHRhc2tsZXRzX3N1Ym1pdF9jb3VudCkgeworCQkJ cHJfZXJyKCJGbG93IGNvbnRyb2wgZmFpbGVkIHRvIGtpY2sgaW5cbiIpOworCQkJcmV0ID0gLUVJ TlZBTDsKKwkJCWdvdG8gZXJyX3NwaW5fcnE7CisJCX0KKwl9CisKKwkvKiBWZXJpZnkgcmVxdWVz dHMgY2FuIGJlIHN1Ym1pdHRlZCBhZnRlciBmbG93IGNvbnRyb2wgKi8KKwlyZXQgPSBub3BfcmVx dWVzdF93YWl0KGVuZ2luZSwgdHJ1ZSwgZmFsc2UpOworCWlmIChyZXQgPCAwKSB7CisJCXByX2Vy cigiS2VybmVsIE5PUCBmYWlsZWQgdG8gY29tcGxldGU6ICVkXG4iLCByZXQpOworCQlnb3RvIGVy cl9zcGluX3JxOworCX0KKwlyZXQgPSBub3BfcmVxdWVzdF93YWl0KGVuZ2luZSwgZmFsc2UsIGZh bHNlKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIlVzZXIgTk9QIGZhaWxlZCB0byBjb21w bGV0ZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX3NwaW5fcnE7CisJfQorCitlcnJfc3Bpbl9y cToKKwlpZiAoc3Bpbl9ycSkgeworCQlpZ3Rfc3Bpbm5lcl9lbmQoJnNwaW4pOworCQlpbnRlbF9z ZWxmdGVzdF93YWl0X2Zvcl9ycShzcGluX3JxKTsKKwkJaTkxNV9yZXF1ZXN0X3B1dChzcGluX3Jx KTsKKwkJaWd0X3NwaW5uZXJfZmluaSgmc3Bpbik7CisJCWludGVsX2d0X3dhaXRfZm9yX2lkbGUo Z3QsIEhaICogNSk7CisJfQorZXJyX2hlYXJ0YmVhdDoKKwlpZiAobGFzdCkKKwkJaTkxNV9yZXF1 ZXN0X3B1dChsYXN0KTsKKwlpbnRlbF9lbmdpbmVfc2V0X2hlYXJ0YmVhdChlbmdpbmUsIG9sZF9i ZWF0KTsKK2VycjoKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChndC0+dW5jb3JlLT5ycG0sIHdha2Vy ZWYpOworCWd1Yy0+bnVtX2d1Y19pZHMgPSBndWMtPm1heF9ndWNfaWRzOworCWd1Yy0+Z3NlX2hh bmdfZXhwZWN0ZWQgPSBmYWxzZTsKKwlndWMtPmluamVjdF9iYWRfc2NoZWRfZGlzYWJsZSA9IGZh bHNlOworCWtmcmVlKGNvbnRleHRzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQg aW50ZWxfZ3VjX2Zsb3dfY29udHJvbF9ndWNfaWRzKHZvaWQgKmFyZykKK3sKKwlyZXR1cm4gX19p bnRlbF9ndWNfZmxvd19jb250cm9sX2d1YyhhcmcsIHRydWUsIGZhbHNlKTsKK30KKworc3RhdGlj IGludCBpbnRlbF9ndWNfZmxvd19jb250cm9sX2xyY2RfcmVnKHZvaWQgKmFyZykKK3sKKwlyZXR1 cm4gX19pbnRlbF9ndWNfZmxvd19jb250cm9sX2d1YyhhcmcsIGZhbHNlLCBmYWxzZSk7Cit9CisK K3N0YXRpYyBpbnQgaW50ZWxfZ3VjX2Zsb3dfY29udHJvbF9oYW5nX3N0YXRlX21hY2hpbmUodm9p ZCAqYXJnKQoreworCXJldHVybiBfX2ludGVsX2d1Y19mbG93X2NvbnRyb2xfZ3VjKGFyZywgdHJ1 ZSwgdHJ1ZSk7Cit9CisKKyNkZWZpbmUgTlVNX1JRX1NUUkVTU19DVEJTCTB4NDAwMAorc3RhdGlj IGludCBpbnRlbF9ndWNfZmxvd19jb250cm9sX3N0cmVzc19jdGJzKHZvaWQgKmFyZykKK3sKKwlz dHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOworCWludCByZXQgPSAwOworCWludCBpOworCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gTlVMTCwg KnJxOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmdsb2JhbCA9ICZndC0+aTkxNS0+Z3B1 X2Vycm9yOworCXVuc2lnbmVkIGludCByZXNldF9jb3VudDsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMgPSAmZ3QtPnVjLmd1YzsKKwlzdHJ1Y3QgaW50ZWxfZ3VjX2N0X2J1ZmZlciAqY3RiID0gJmd1 Yy0+Y3QuY3Ricy5yZWN2OworCisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGd0LT51 bmNvcmUtPnJwbSk7CisKKwlyZXNldF9jb3VudCA9IGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKTsK KwllbmdpbmUgPSBpbnRlbF9zZWxmdGVzdF9maW5kX2FueV9lbmdpbmUoZ3QpOworCisJLyoKKwkg KiBDcmVhdGUgYSBidW5jaCBvZiByZXF1ZXN0cywgYW5kIHRoZW4gaWRsZSB0aGUgR1Qgd2hpY2gg d2lsbCBjcmVhdGUgYQorCSAqIGxvdCBvZiBIMkcgLyBHMkggdHJhZmZpYy4KKwkgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgTlVNX1JRX1NUUkVTU19DVEJTOyArK2kpIHsKKwkJY2UgPSBpbnRlbF9jb250 ZXh0X2NyZWF0ZShlbmdpbmUpOworCQlpZiAoSVNfRVJSKGNlKSkgeworCQkJcmV0ID0gUFRSX0VS UihjZSk7CisJCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgY29udGV4dCwgJWQ6ICVkXG4iLCBp LCByZXQpOworCQkJZ290byBlcnI7CisJCX0KKworCQlycSA9IG5vcF91c2VyX3JlcXVlc3QoY2Us IE5VTEwpOworCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7CisKKwkJaWYgKElTX0VSUihycSkpIHsK KwkJCXJldCA9IFBUUl9FUlIocnEpOworCQkJcHJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIHJlcXVl c3QsICVkOiAlZFxuIiwgaSwgcmV0KTsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJaWYgKGxhc3Qp CisJCQlpOTE1X3JlcXVlc3RfcHV0KGxhc3QpOworCQlsYXN0ID0gcnE7CisJfQorCisJcmV0ID0g aTkxNV9yZXF1ZXN0X3dhaXQobGFzdCwgMCwgSFogKiAxMCk7CisJaWYgKHJldCA8IDApIHsKKwkJ cHJfZXJyKCJMYXN0IHJlcXVlc3QgZmFpbGVkIHRvIGNvbXBsZXRlOiAlZFxuIiwgcmV0KTsKKwkJ Z290byBlcnI7CisJfQorCWk5MTVfcmVxdWVzdF9wdXQobGFzdCk7CisJbGFzdCA9IE5VTEw7CisK KwlyZXQgPSBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWiAqIDEwKTsKKwlpZiAocmV0IDwg MCkgeworCQlwcl9lcnIoIkdUIGZhaWxlZCB0byBpZGxlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBl cnI7CisJfQorCisJaWYgKGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKSAhPSByZXNldF9jb3VudCkg eworCQlwcl9lcnIoIlVuZXhwZWN0ZWQgR1BVIHJlc2V0XG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsK KwkJZ290byBlcnI7CisJfQorCisJcmV0ID0gbm9wX3JlcXVlc3Rfd2FpdChlbmdpbmUsIHRydWUs IGZhbHNlKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIktlcm5lbCBOT1AgZmFpbGVkIHRv IGNvbXBsZXRlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnI7CisJfQorCisJcmV0ID0gbm9wX3Jl cXVlc3Rfd2FpdChlbmdpbmUsIGZhbHNlLCBmYWxzZSk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJf ZXJyKCJVc2VyIE5PUCBmYWlsZWQgdG8gY29tcGxldGU6ICVkXG4iLCByZXQpOworCQlnb3RvIGVy cjsKKwl9CisKKwlyZXQgPSBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWik7CisJaWYgKHJl dCA8IDApIHsKKwkJcHJfZXJyKCJHVCBmYWlsZWQgdG8gaWRsZTogJWRcbiIsIHJldCk7CisJCWdv dG8gZXJyOworCX0KKworCXJldCA9IHdhaXRfZm9yKGludGVsX2d1Y19jdF9pc19yZWN2X2J1ZmZl cl9lbXB0eSgmZ3VjLT5jdCksIEhaKTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiUmVjdiBDVEIg bm90IGV4cGVjdGVkIHZhbHVlPSVkLCVkIG91dHN0YW5kaW5nX2N0Yj0lZFxuIiwKKwkJICAgICAg IGF0b21pY19yZWFkKCZjdGItPnNwYWNlKSwKKwkJICAgICAgIENJUkNfU1BBQ0UoMCwgMCwgY3Ri LT5zaXplKSAtIGN0Yi0+cmVzdl9zcGFjZSwKKwkJICAgICAgIGF0b21pY19yZWFkKCZndWMtPm91 dHN0YW5kaW5nX3N1Ym1pc3Npb25fZzJoKSk7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gZXJy OworCX0KKworZXJyOgorCWlmIChsYXN0KQorCQlpOTE1X3JlcXVlc3RfcHV0KGxhc3QpOworCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGd0LT51bmNvcmUtPnJwbSwgd2FrZXJlZik7CisKKwlyZXR1cm4g cmV0OworfQorCisjZGVmaW5lIE5VTV9SUV9ERUFETE9DSwkJMjA0OAorc3RhdGljIGludCBfX2lu dGVsX2d1Y19mbG93X2NvbnRyb2xfZGVhZGxvY2tfaDJnKHZvaWQgKmFyZywgYm9vbCBiYWRfZGVz YykKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOworCXN0cnVjdCBpbnRlbF9ndWMgKmd1 YyA9ICZndC0+dWMuZ3VjOworCWludCByZXQgPSAwOworCWludCBpOworCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gTlVMTCwgKnJxOworCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK KwlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmdsb2JhbCA9ICZndC0+aTkxNS0+Z3B1X2Vycm9yOwor CXVuc2lnbmVkIGludCByZXNldF9jb3VudDsKKwl1MzIgb2xkX2JlYXQ7CisKKwl3YWtlcmVmID0g aW50ZWxfcnVudGltZV9wbV9nZXQoZ3QtPnVuY29yZS0+cnBtKTsKKworCXJlc2V0X2NvdW50ID0g aTkxNV9yZXNldF9jb3VudChnbG9iYWwpOworCWVuZ2luZSA9IGludGVsX3NlbGZ0ZXN0X2ZpbmRf YW55X2VuZ2luZShndCk7CisKKwlvbGRfYmVhdCA9IGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2lu dGVydmFsX21zOworCXJldCA9IGludGVsX2VuZ2luZV9zZXRfaGVhcnRiZWF0KGVuZ2luZSwgSEVB UlRCRUFUX0lOVEVSVkFMKTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiRmFpbGVkIHRvIGJvb3N0 IGhlYXJ0YmVhdCBpbnRlcnZhbDogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKworCWd1 Yy0+aW5qZWN0X2NvcnJ1cHRfaDJnID0gdHJ1ZTsKKwlpZiAoYmFkX2Rlc2MpCisJCWd1Yy0+YmFk X2Rlc2NfZXhwZWN0ZWQgPSB0cnVlOworCWVsc2UKKwkJZ3VjLT5kZWFkbG9ja19leHBlY3RlZCA9 IHRydWU7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX1JRX0RFQURMT0NLOyArK2kpIHsKKwkJY2Ug PSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOworCQlpZiAoSVNfRVJSKGNlKSkgeworCQkJ cmV0ID0gUFRSX0VSUihjZSk7CisJCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgY29udGV4dCwg JWQ6ICVkXG4iLCBpLCByZXQpOworCQkJZ290byBlcnJfaGVhcnRiZWF0OworCQl9CisKKwkJcnEg PSBub3BfdXNlcl9yZXF1ZXN0KGNlLCBOVUxMKTsKKwkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwor CisJCWlmIChJU19FUlIocnEpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJCXByX2Vycigi RmFpbGVkIHRvIGNyZWF0ZSByZXF1ZXN0LCAlZDogJWRcbiIsIGksIHJldCk7CisJCQlnb3RvIGVy cl9oZWFydGJlYXQ7CisJCX0KKworCQlpZiAobGFzdCkKKwkJCWk5MTVfcmVxdWVzdF9wdXQobGFz dCk7CisJCWxhc3QgPSBycTsKKwl9CisKKwlwcl9kZWJ1ZygiTnVtYmVyIHJlcXVlc3RzIGJlZm9y ZSBkZWFkbG9jazogJWRcbiIsIGkpOworCisJcmV0ID0gaTkxNV9yZXF1ZXN0X3dhaXQobGFzdCwg MCwgSFogKiA1KTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIkxhc3QgcmVxdWVzdCBmYWls ZWQgdG8gY29tcGxldGU6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9oZWFydGJlYXQ7CisJfQor CWk5MTVfcmVxdWVzdF9wdXQobGFzdCk7CisJbGFzdCA9IE5VTEw7CisKKwlyZXQgPSBpbnRlbF9n dF93YWl0X2Zvcl9pZGxlKGd0LCBIWiAqIDEwKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIo IkdUIGZhaWxlZCB0byBpZGxlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfaGVhcnRiZWF0Owor CX0KKworCWlmIChpOTE1X3Jlc2V0X2NvdW50KGdsb2JhbCkgPT0gcmVzZXRfY291bnQpIHsKKwkJ cHJfZXJyKCJGYWlsZWQgdG8gcmVjb3JkIGEgR1BVIHJlc2V0XG4iKTsKKwkJcmV0ID0gLUVJTlZB TDsKKwkJZ290byBlcnJfaGVhcnRiZWF0OworCX0KKworCXJldCA9IG5vcF9yZXF1ZXN0X3dhaXQo ZW5naW5lLCB0cnVlLCBmYWxzZSk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCJLZXJuZWwg Tk9QIGZhaWxlZCB0byBjb21wbGV0ZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2hlYXJ0YmVh dDsKKwl9CisKKwlyZXQgPSBub3BfcmVxdWVzdF93YWl0KGVuZ2luZSwgZmFsc2UsIGZhbHNlKTsK KwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIlVzZXIgTk9QIGZhaWxlZCB0byBjb21wbGV0ZTog JWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2hlYXJ0YmVhdDsKKwl9CisKK2Vycl9oZWFydGJlYXQ6 CisJaWYgKGxhc3QpCisJCWk5MTVfcmVxdWVzdF9wdXQobGFzdCk7CisJaW50ZWxfZW5naW5lX3Nl dF9oZWFydGJlYXQoZW5naW5lLCBvbGRfYmVhdCk7CitlcnI6CisJaW50ZWxfcnVudGltZV9wbV9w dXQoZ3QtPnVuY29yZS0+cnBtLCB3YWtlcmVmKTsKKwlndWMtPmluamVjdF9jb3JydXB0X2gyZyA9 IGZhbHNlOworCWd1Yy0+ZGVhZGxvY2tfZXhwZWN0ZWQgPSBmYWxzZTsKKwlndWMtPmJhZF9kZXNj X2V4cGVjdGVkID0gZmFsc2U7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGludGVs X2d1Y19mbG93X2NvbnRyb2xfZGVhZGxvY2tfaDJnKHZvaWQgKmFyZykKK3sKKwlyZXR1cm4gX19p bnRlbF9ndWNfZmxvd19jb250cm9sX2RlYWRsb2NrX2gyZyhhcmcsIGZhbHNlKTsKK30KKworc3Rh dGljIGludCBpbnRlbF9ndWNfZmxvd19jb250cm9sX2JhZF9kZXNjX2gyZyh2b2lkICphcmcpCit7 CisJcmV0dXJuIF9faW50ZWxfZ3VjX2Zsb3dfY29udHJvbF9kZWFkbG9ja19oMmcoYXJnLCB0cnVl KTsKK30KKworaW50IGludGVsX2d1Y19mbG93X2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9 IHsKKwkJU1VCVEVTVChpbnRlbF9ndWNfZmxvd19jb250cm9sX3N0cmVzc19jdGJzKSwKKwkJU1VC VEVTVChpbnRlbF9ndWNfZmxvd19jb250cm9sX2d1Y19pZHMpLAorCQlTVUJURVNUKGludGVsX2d1 Y19mbG93X2NvbnRyb2xfbHJjZF9yZWcpLAorCQlTVUJURVNUKGludGVsX2d1Y19mbG93X2NvbnRy b2xfaGFuZ19zdGF0ZV9tYWNoaW5lKSwKKwkJU1VCVEVTVChpbnRlbF9ndWNfZmxvd19jb250cm9s X2RlYWRsb2NrX2gyZyksCisJCVNVQlRFU1QoaW50ZWxfZ3VjX2Zsb3dfY29udHJvbF9iYWRfZGVz Y19oMmcpLAorCX07CisJc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKKworCWlmIChp bnRlbF9ndF9pc193ZWRnZWQoZ3QpKQorCQlyZXR1cm4gMDsKKworCWlmICghaW50ZWxfdWNfdXNl c19ndWNfc3VibWlzc2lvbigmZ3QtPnVjKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gaW50ZWxf Z3RfbGl2ZV9zdWJ0ZXN0cyh0ZXN0cywgZ3QpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKaW5kZXggZTJmZDFiNjFhZjcx Li5kOWJkNzMyYjc0MWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaApAQCAtNDcsNSArNDcsNiBAQCBzZWxmdGVzdChoYW5n Y2hlY2ssIGludGVsX2hhbmdjaGVja19saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGV4ZWNsaXN0 cywgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QocmluZ19zdWJtaXNz aW9uLCBpbnRlbF9yaW5nX3N1Ym1pc3Npb25fbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChwZXJm LCBpOTE1X3BlcmZfbGl2ZV9zZWxmdGVzdHMpCitzZWxmdGVzdChndWNfZmxvd19jb250cm9sLCBp bnRlbF9ndWNfZmxvd19jb250cm9sKQogLyogSGVyZSBiZSBkcmFnb25zOiBrZWVwIGxhc3QgdG8g cnVuIGxhc3QhICovCiBzZWxmdGVzdChsYXRlX2d0X3BtLCBpbnRlbF9ndF9wbV9sYXRlX3NlbGZ0 ZXN0cykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9z Y2hlZHVsZXJfaGVscGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X3NjaGVkdWxlcl9oZWxwZXJzLmMKaW5kZXggZWJkNmQ2OWIzMzE1Li5mODNjOGM2YzBkOWIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJf aGVscGVycy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hl ZHVsZXJfaGVscGVycy5jCkBAIC0xNSw2ICsxNSwxOCBAQAogI2RlZmluZSBSRURVQ0VEX1BSRUVN UFQJCTEwCiAjZGVmaW5lIFdBSVRfRk9SX1JFU0VUX1RJTUUJMTAwMDAKIAorc3RydWN0IGludGVs X2VuZ2luZV9jcyAqaW50ZWxfc2VsZnRlc3RfZmluZF9hbnlfZW5naW5lKHN0cnVjdCBpbnRlbF9n dCAqZ3QpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOworCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKQorCQlyZXR1 cm4gZW5naW5lOworCisJcHJfZXJyKCJObyB2YWxpZCBlbmdpbmUgZm91bmQhXG4iKTsKKwlyZXR1 cm4gTlVMTDsKK30KKwogaW50IGludGVsX3NlbGZ0ZXN0X21vZGlmeV9wb2xpY3koc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJCSBzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rfc2F2ZWRf cG9saWN5ICpzYXZlZCwKIAkJCQkgdTMyIG1vZGlmeV90eXBlKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuaAppbmRl eCAwNTBiYzVhOGJhOGIuLjAxYmEwMTYwMzgzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmgKQEAgLTMxLDUg KzMxLDYgQEAgaW50IGludGVsX3NlbGZ0ZXN0X21vZGlmeV9wb2xpY3koc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogaW50IGludGVsX3NlbGZ0ZXN0X3Jlc3RvcmVfcG9saWN5KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkgIHN0cnVjdCBpbnRlbF9zZWxmdGVzdF9z YXZlZF9wb2xpY3kgKnNhdmVkKTsKIGludCBpbnRlbF9zZWxmdGVzdF93YWl0X2Zvcl9ycSggc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEpOworc3RydWN0IGludGVsX2VuZ2luZV9jcyAqaW50ZWxfc2Vs ZnRlc3RfZmluZF9hbnlfZW5naW5lKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwogCiAjZW5kaWYKLS0g CjIuMjguMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==