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 CCECFC433B4 for ; Thu, 6 May 2021 19:01:14 +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 90FC061001 for ; Thu, 6 May 2021 19:01:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 90FC061001 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 AEE9D6EE2C; Thu, 6 May 2021 18:58:00 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DA566EDB0; Thu, 6 May 2021 18:57:15 +0000 (UTC) IronPort-SDR: 9oFKr5JmHTdAVd9Aui+ouTxjy4RYydVnA4Momyls7T25IbreH6vD5uT+4hLsW5swBaHNkViX9P a/Mp35pf31tQ== X-IronPort-AV: E=McAfee;i="6200,9189,9976"; a="219439499" X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="219439499" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:14 -0700 IronPort-SDR: d1QQJ1afUB/P+Nj0na0h+CMwjYShtYBJq0UvWYk00l2xZA/XvWYDSBjdyKOy5lSupAjzYElE6Y 8YsEMxFBY7YQ== X-IronPort-AV: E=Sophos;i="5.82,278,1613462400"; d="scan'208";a="469583675" Received: from dhiatt-server.jf.intel.com ([10.54.81.3]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2021 11:57:14 -0700 From: Matthew Brost To: , Date: Thu, 6 May 2021 12:14:49 -0700 Message-Id: <20210506191451.77768-96-matthew.brost@intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210506191451.77768-1-matthew.brost@intel.com> References: <20210506191451.77768-1-matthew.brost@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [RFC PATCH 95/97] 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: , Cc: jason.ekstrand@intel.com, daniel.vetter@intel.com 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 CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmggICAgICAgIHwgICA2ICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jICAgICB8ICA0MCArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmggICAgIHwgICA5ICsKIC4uLi9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8ICAxNiArCiAuLi4vaTkx NS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbl90eXBlcy5oICAgfCAgIDIgKwogLi4uL2k5MTUv Z3QvdWMvc2VsZnRlc3RfZ3VjX2Zsb3dfY29udHJvbC5jICAgIHwgNTg5ICsrKysrKysrKysrKysr KysrKwogLi4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmggIHwgICAx ICsKIC4uLi9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5jICB8IDEwMSAr KysKIC4uLi9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5oICB8ICAzNyAr KwogMTAgZmlsZXMgY2hhbmdlZCwgNzkzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvc2VsZnRlc3RfZ3Vj X2Zsb3dfY29udHJvbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2ludGVsX3NjaGVkdWxlcl9oZWxwZXJzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuaAoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggYzgwZWMxNjNhN2QxLi5lYmE1YzFlOWVjZWIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCkBAIC0yODUsNiArMjg1LDcgQEAgaTkxNS0kKENPTkZJR19EUk1fSTkx NV9TRUxGVEVTVCkgKz0gXAogCXNlbGZ0ZXN0cy9pZ3RfbW1hcC5vIFwKIAlzZWxmdGVzdHMvaWd0 X3Jlc2V0Lm8gXAogCXNlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5vIFwKKwlzZWxmdGVzdHMvaW50ZWxf c2NoZWR1bGVyX2hlbHBlcnMubyBcCiAJc2VsZnRlc3RzL2xpYnJhcGwubwogCiAjIHZpcnR1YWwg Z3B1IGNvZGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmgKaW5kZXggMTBkY2Zk NzkwYWEyLi4xNjlkYWFmOGExODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Yy5oCkBAIC0xMDIsNiArMTAyLDEyIEBAIHN0cnVjdCBpbnRlbF9ndWMgewogCiAJLyogVG8gc2Vy aWFsaXplIHRoZSBpbnRlbF9ndWNfc2VuZCBhY3Rpb25zICovCiAJc3RydWN0IG11dGV4IHNlbmRf bXV0ZXg7CisKKwlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoYm9vbCBnc2VfaGFuZ19leHBlY3RlZDsp CisJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKGJvb2wgZGVhZGxvY2tfZXhwZWN0ZWQ7KQorCUk5MTVf U0VMRlRFU1RfREVDTEFSRShib29sIGJhZF9kZXNjX2V4cGVjdGVkOykKKwlJOTE1X1NFTEZURVNU X0RFQ0xBUkUoYm9vbCBpbmplY3RfYmFkX3NjaGVkX2Rpc2FibGU7KQorCUk5MTVfU0VMRlRFU1Rf REVDTEFSRShib29sIGluamVjdF9jb3JydXB0X2gyZzspCiB9OwogCiBzdGF0aWMgaW5saW5lIHN0 cnVjdCBpbnRlbF9ndWMgKmxvZ190b19ndWMoc3RydWN0IGludGVsX2d1Y19sb2cgKmxvZykKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKaW5kZXggMWMyNDBmZjhkZWM5 Li4wM2I4YTM1OWJmY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19jdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19j dC5jCkBAIC0zLDcgKzMsNiBAQAogICogQ29weXJpZ2h0IMKpIDIwMTYtMjAxOSBJbnRlbCBDb3Jw b3JhdGlvbgogICovCiAKLSNpbmNsdWRlIDxsaW51eC9jaXJjX2J1Zi5oPgogI2luY2x1ZGUgPGxp bnV4L2t0aW1lLmg+CiAjaW5jbHVkZSA8bGludXgvdGltZTY0Lmg+CiAjaW5jbHVkZSA8bGludXgv dGltZWtlZXBpbmcuaD4KQEAgLTQwNCwxMSArNDAzLDEzIEBAIHN0YXRpYyBpbnQgY3Rfd3JpdGUo c3RydWN0IGludGVsX2d1Y19jdCAqY3QsCiAJdTMyICpjbWRzID0gY3RiLT5jbWRzOwogCXVuc2ln bmVkIGludCBpOwogCi0JaWYgKHVubGlrZWx5KGN0Yi0+YnJva2VuKSkKLQkJcmV0dXJuIC1FREVB RExLOworCWlmICghSTkxNV9TRUxGVEVTVF9PTkxZKGN0X3RvX2d1YyhjdCktPmRlYWRsb2NrX2V4 cGVjdGVkKSkgeworCQlpZiAodW5saWtlbHkoY3RiLT5icm9rZW4pKQorCQkJcmV0dXJuIC1FREVB RExLOwogCi0JaWYgKHVubGlrZWx5KGRlc2MtPnN0YXR1cykpCi0JCWdvdG8gY29ycnVwdGVkOwor CQlpZiAodW5saWtlbHkoZGVzYy0+c3RhdHVzKSkKKwkJCWdvdG8gY29ycnVwdGVkOworCX0KIAog I2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19HVUMKIAlpZiAodW5saWtlbHkoKGRlc2MtPnRh aWwgfCBkZXNjLT5oZWFkKSA+PSBzaXplKSkgewpAQCAtNDI3LDYgKzQyOCwxNSBAQCBzdGF0aWMg aW50IGN0X3dyaXRlKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAogCQkgRklFTERfUFJFUChHVUNf Q1RCX01TR18wX05VTV9EV09SRFMsIGxlbikgfAogCQkgRklFTERfUFJFUChHVUNfQ1RCX01TR18w X0ZFTkNFLCBmZW5jZSk7CiAKKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVT VCkKKwlpZiAoY3RfdG9fZ3VjKGN0KS0+aW5qZWN0X2NvcnJ1cHRfaDJnKSB7CisJCWhlYWRlciA9 IEZJRUxEX1BSRVAoR1VDX0NUQl9NU0dfMF9GT1JNQVQsIDMpIHwKKwkJCSBGSUVMRF9QUkVQKEdV Q19DVEJfTVNHXzBfTlVNX0RXT1JEUywgbGVuICsgNSkgfAorCQkJIEZJRUxEX1BSRVAoR1VDX0NU Ql9NU0dfMF9GRU5DRSwgMHhkZWFkKTsKKwkJY3RfdG9fZ3VjKGN0KS0+aW5qZWN0X2NvcnJ1cHRf aDJnID0gZmFsc2U7CisJfQorI2VuZGlmCisKIAloeGcgPSAoZmxhZ3MgJiBJTlRFTF9HVUNfU0VO RF9OQikgPwogCQkoRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZUEUsIEdVQ19IWEdfVFlQRV9F VkVOVCkgfAogCQkgRklFTERfUFJFUChHVUNfSFhHX0VWRU5UX01TR18wX0FDVElPTiB8CkBAIC00 NjQsOCArNDc0LDEyIEBAIHN0YXRpYyBpbnQgY3Rfd3JpdGUoc3RydWN0IGludGVsX2d1Y19jdCAq Y3QsCiAJcmV0dXJuIDA7CiAKIGNvcnJ1cHRlZDoKLQlDVF9FUlJPUihjdCwgIkNvcnJ1cHRlZCBk ZXNjcmlwdG9yIGhlYWQ9JXUgdGFpbD0ldSBzdGF0dXM9JSN4XG4iLAotCQkgZGVzYy0+aGVhZCwg ZGVzYy0+dGFpbCwgZGVzYy0+c3RhdHVzKTsKKwlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKGN0X3Rv X2d1YyhjdCktPmJhZF9kZXNjX2V4cGVjdGVkKSkKKwkJQ1RfREVCVUcoY3QsICJDb3JydXB0ZWQg ZGVzY3JpcHRvciBoZWFkPSV1IHRhaWw9JXUgc3RhdHVzPSUjeFxuIiwKKwkJCSBkZXNjLT5oZWFk LCBkZXNjLT50YWlsLCBkZXNjLT5zdGF0dXMpOworCWVsc2UKKwkJQ1RfRVJST1IoY3QsICJDb3Jy dXB0ZWQgZGVzY3JpcHRvciBoZWFkPSV1IHRhaWw9JXUgc3RhdHVzPSUjeFxuIiwKKwkJCSBkZXNj LT5oZWFkLCBkZXNjLT50YWlsLCBkZXNjLT5zdGF0dXMpOwogCWN0Yi0+YnJva2VuID0gdHJ1ZTsK IAlyZXR1cm4gLUVERUFETEs7CiB9CkBAIC01MTcsOCArNTMxLDE2IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBjdF9kZWFkbG9ja2VkKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0KQogCWJvb2wgcmV0ID0g a3RpbWVfdXNfZGVsdGEoa3RpbWVfZ2V0KCksIGN0LT5zdGFsbF90aW1lKSA+CiAJCU1BWF9VU19T VEFMTF9DVEI7CiAKLQlpZiAodW5saWtlbHkocmV0KSkKLQkJQ1RfRVJST1IoY3QsICJDVCBkZWFk bG9ja2VkXG4iKTsKKwlpZiAodW5saWtlbHkocmV0KSkgeworCQkvKgorCQkgKiBDSSBkb2Vzbid0 IGxpa2UgZXJyb3IgbWVzc2FnZXMsIGRlbW90ZSB0byBkZWJ1ZyBpZiBkZWFkbG9jayB3YXMKKwkJ ICogaW50ZW50aW9uYWxseSBoaXQuCisJCSAqLworCQlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKGN0 X3RvX2d1YyhjdCktPmRlYWRsb2NrX2V4cGVjdGVkKSkKKwkJCUNUX0RFQlVHKGN0LCAiQ1QgZGVh ZGxvY2tlZFxuIik7CisJCWVsc2UKKwkJCUNUX0VSUk9SKGN0LCAiQ1QgZGVhZGxvY2tlZFxuIik7 CisJfQogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19jdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX2N0LmgKaW5kZXggZjYyZWIwNmIzMmZjLi44NDAyM2MxNzUwMDEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCkBAIC02LDYgKzYsNyBAQAogI2lmbmRlZiBf SU5URUxfR1VDX0NUX0hfCiAjZGVmaW5lIF9JTlRFTF9HVUNfQ1RfSF8KIAorI2luY2x1ZGUgPGxp bnV4L2NpcmNfYnVmLmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CiAjaW5jbHVkZSA8 bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KQEAgLTEwOSw0 ICsxMTAsMTIgQEAgdm9pZCBpbnRlbF9ndWNfY3RfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgaW50ZWxf Z3VjX2N0ICpjdCk7CiAKIHZvaWQgaW50ZWxfZ3VjX2xvZ19jdF9pbmZvKHN0cnVjdCBpbnRlbF9n dWNfY3QgKmN0LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwogCitzdGF0aWMgaW5saW5lIGJvb2wg aW50ZWxfZ3VjX2N0X2lzX3JlY3ZfYnVmZmVyX2VtcHR5KHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0 KQoreworCXN0cnVjdCBpbnRlbF9ndWNfY3RfYnVmZmVyICpjdGIgPSAmY3QtPmN0YnMucmVjdjsK KworCXJldHVybiBhdG9taWNfcmVhZCgmY3RiLT5zcGFjZSkgPT0KKwkJKENJUkNfU1BBQ0UoMCwg MCwgY3RiLT5zaXplKSAtIGN0Yi0+cmVzdl9zcGFjZSk7Cit9CisKICNlbmRpZiAvKiBfSU5URUxf R1VDX0NUX0hfICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X3N1Ym1pc3Npb24uYwppbmRleCBkZDRiYWFhZDY3OWYuLjMzN2RkYzBkYWI2YiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCkBAIC04 MTgsNiArODE4LDcgQEAgc3RhdGljIGludCBnc2VfZGVxdWV1ZV9vbmVfY29udGV4dChzdHJ1Y3Qg Z3VjX3N1Ym1pdF9lbmdpbmUgKmdzZSkKIAkJCUdFTV9XQVJOX09OKHJldCk7CS8qIFVuZXhwZWN0 ZWQgKi8KIAkJCWdvdG8gZGVhZGxrOwogCQl9CisJCUk5MTVfU0VMRlRFU1RfREVDTEFSRSgrK2dz ZS0+dGFza2xldHNfc3VibWl0X2NvdW50OykKIAl9CiAKIAkvKgpAQCAtMjA3Nyw3ICsyMDc4LDE1 IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2NvbnRleHRfc2NoZWRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsCiAJCUdVQ19DT05URVhUX0RJU0FCTEUKIAl9OwogCisjaWYgSVNfRU5BQkxFRChD T05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCisJaWYgKGd1Yy0+aW5qZWN0X2JhZF9zY2hlZF9kaXNh YmxlICYmCisJICAgIGd1Y19pZCA9PSBHVUNfSU5WQUxJRF9MUkNfSUQpCisJCWd1Yy0+aW5qZWN0 X2JhZF9zY2hlZF9kaXNhYmxlID0gZmFsc2U7CisJZWxzZQorCQlHRU1fQlVHX09OKGd1Y19pZCA9 PSBHVUNfSU5WQUxJRF9MUkNfSUQpOworI2Vsc2UKIAlHRU1fQlVHX09OKGd1Y19pZCA9PSBHVUNf SU5WQUxJRF9MUkNfSUQpOworI2VuZGlmCiAKIAl0cmFjZV9pbnRlbF9jb250ZXh0X3NjaGVkX2Rp c2FibGUoY2UpOwogCkBAIC0yNjg5LDYgKzI2OTgsOSBAQCBzdGF0aWMgdm9pZCByZXRpcmVfd29y a2VyX3NjaGVkX2Rpc2FibGUoc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpnc2UsCiAJCWd1Y19p ZCA9IHByZXBfY29udGV4dF9wZW5kaW5nX2Rpc2FibGUoY2UpOwogCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZjZS0+Z3VjX3N0YXRlLmxvY2ssIGZsYWdzKTsKIAorCQlpZiAoSTkxNV9TRUxGVEVT VF9PTkxZKGdzZS0+Z3VjLT5pbmplY3RfYmFkX3NjaGVkX2Rpc2FibGUpKQorCQkJZ3VjX2lkID0g R1VDX0lOVkFMSURfTFJDX0lEOworCiAJCXdpdGhfaW50ZWxfcnVudGltZV9wbShydW50aW1lX3Bt LCB3YWtlcmVmKQogCQkJX19ndWNfY29udGV4dF9zY2hlZF9kaXNhYmxlKGdzZS0+Z3VjLCBjZSwg Z3VjX2lkKTsKIApAQCAtMzk1MiwzICszOTY0LDcgQEAgYm9vbCBpbnRlbF9ndWNfdmlydHVhbF9l bmdpbmVfaGFzX2hlYXJ0YmVhdChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp2ZSkKIAog CXJldHVybiBmYWxzZTsKIH0KKworI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZU RVNUKQorI2luY2x1ZGUgInNlbGZ0ZXN0X2d1Y19mbG93X2NvbnRyb2wuYyIKKyNlbmRpZgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb25f dHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u X3R5cGVzLmgKaW5kZXggZTQ1YzJmMDBmMDljLi40M2M1ZWEwZjY0ZTcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uX3R5cGVzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb25fdHlwZXMu aApAQCAtNDgsNiArNDgsOCBAQCBzdHJ1Y3QgZ3VjX3N1Ym1pdF9lbmdpbmUgewogCQlTVEFMTF9N T1ZFX0xSQ19UQUlMLAogCQlTVEFMTF9BRERfUkVRVUVTVCwKIAl9IHN1Ym1pc3Npb25fc3RhbGxf cmVhc29uOworCisJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHU2NCB0YXNrbGV0c19zdWJtaXRfY291 bnQ7KQogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9sLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5jNTM4NTA2NDc1NGQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9zZWxmdGVzdF9ndWNfZmxvd19jb250cm9sLmMKQEAgLTAsMCArMSw1 ODkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQg 77+977+9IDIwMjEgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAic2VsZnRlc3Rz L2lndF9zcGlubmVyLmgiCisjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9yZXNldC5oIgorI2luY2x1 ZGUgInNlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVscGVycy5oIgorI2luY2x1ZGUgImd0L2lu dGVsX2VuZ2luZV9oZWFydGJlYXQuaCIKKyNpbmNsdWRlICJnZW0vc2VsZnRlc3RzL21vY2tfY29u dGV4dC5oIgorCitzdGF0aWMgaW50IF9fcmVxdWVzdF9hZGRfc3BpbihzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwgc3RydWN0IGlndF9zcGlubmVyICpzcGluKQoreworCWludCBlcnIgPSAwOworCisJ aTkxNV9yZXF1ZXN0X2dldChycSk7CisJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJaWYgKHNwaW4g JiYgIWlndF93YWl0X2Zvcl9zcGlubmVyKHNwaW4sIHJxKSkKKwkJZXJyID0gLUVUSU1FRE9VVDsK KworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpub3Bfa2Vy bmVsX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOworCisJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1 ZXN0KGVuZ2luZSk7CisJaWYgKElTX0VSUihycSkpCisJCXJldHVybiBycTsKKworCWk5MTVfcmVx dWVzdF9nZXQocnEpOworCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCisJcmV0dXJuIHJxOworfQor CitzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqbm9wX3VzZXJfcmVxdWVzdChzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UsCisJCQkJCSAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqZnJvbSkKK3sK KwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlpbnQgcmV0OworCisJcnEgPSBpbnRlbF9jb250 ZXh0X2NyZWF0ZV9yZXF1ZXN0KGNlKTsKKwlpZiAoSVNfRVJSKHJxKSkKKwkJcmV0dXJuIHJxOwor CisJaWYgKGZyb20pIHsKKwkJcmV0ID0gaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoJnJx LT5zdWJtaXQsCisJCQkJCQkgICAgJmZyb20tPmZlbmNlLCAwLAorCQkJCQkJICAgIEk5MTVfRkVO Q0VfR0ZQKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCQkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKKwkJfQorCX0KKworCWk5MTVfcmVxdWVzdF9nZXQocnEpOwor CWk5MTVfcmVxdWVzdF9hZGQocnEpOworCisJcmV0dXJuIHJxOworfQorCitzdGF0aWMgaW50IG5v cF9yZXF1ZXN0X3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIGtlcm5l bCwKKwkJCSAgICBib29sIGZsb3dfY29udHJvbCkKK3sKKwlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3Ig Kmdsb2JhbCA9ICZlbmdpbmUtPmd0LT5pOTE1LT5ncHVfZXJyb3I7CisJdW5zaWduZWQgaW50IHJl c2V0X2NvdW50ID0gaTkxNV9yZXNldF9jb3VudChnbG9iYWwpOworCXN0cnVjdCBpbnRlbF9ndWMg Kmd1YyA9ICZlbmdpbmUtPmd0LT51Yy5ndWM7CisJc3RydWN0IGd1Y19zdWJtaXRfZW5naW5lICpn c2UgPSBndWMtPmdzZVtHVUNfU1VCTUlUX0VOR0lORV9TSU5HTEVfTFJDXTsKKwl1NjQgdGFza2xl dHNfc3VibWl0X2NvdW50ID0gZ3NlLT50YXNrbGV0c19zdWJtaXRfY291bnQ7CisJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKm5vcDsKKwlpbnQgcmV0Owor CisJaWYgKGtlcm5lbCkgeworCQlub3AgPSBub3Bfa2VybmVsX3JlcXVlc3QoZW5naW5lKTsKKwl9 IGVsc2UgeworCQljZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGVuZ2luZSk7CisJCWlmIChJU19F UlIoY2UpKQorCQkJcmV0dXJuIFBUUl9FUlIoY2UpOworCQlub3AgPSBub3BfdXNlcl9yZXF1ZXN0 KGNlLCBOVUxMKTsKKwkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCX0KKwlpZiAoSVNfRVJSKG5v cCkpCisJCXJldHVybiBQVFJfRVJSKG5vcCk7CisKKwlyZXQgPSBpbnRlbF9zZWxmdGVzdF93YWl0 X2Zvcl9ycShub3ApOworCWk5MTVfcmVxdWVzdF9wdXQobm9wKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJaWYgKCFmbG93X2NvbnRyb2wgJiYKKwkgICAgZ3NlLT50YXNrbGV0c19zdWJt aXRfY291bnQgIT0gdGFza2xldHNfc3VibWl0X2NvdW50KSB7CisJCXByX2VycigiRmxvdyBjb250 cm9sIGZvciBzaW5nbGUtbHJjIHVuZXhwZWN0ZWRseSBraWNrZWQgaW5cbiIpOworCQlyZXQgPSAt RUlOVkFMOworCX0KKworCWlmIChmbG93X2NvbnRyb2wgJiYKKwkgICAgZ3NlLT50YXNrbGV0c19z dWJtaXRfY291bnQgPT0gdGFza2xldHNfc3VibWl0X2NvdW50KSB7CisJCXByX2VycigiRmxvdyBj b250cm9sIGZvciBzaW5nbGUtbHJjIGRpZCBub3Qga2ljayBpblxuIik7CisJCXJldCA9IC1FSU5W QUw7CisJfQorCisJaWYgKGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKSAhPSByZXNldF9jb3VudCkg eworCQlwcl9lcnIoIlVuZXhwZWN0ZWQgR1BVIHJlc2V0IGR1cmluZyBzaW5nbGUtbHJjIHN1Ym1p dFxuIik7CisJCXJldCA9IC1FSU5WQUw7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworI2RlZmlu ZSBOVU1fR1VDX0lECQkyNTYKKyNkZWZpbmUgTlVNX0NPTlRFWFQJCTEwMjQKKyNkZWZpbmUgTlVN X1JRX1BFUl9DT05URVhUCTIKKyNkZWZpbmUgSEVBUlRCRUFUX0lOVEVSVkFMCTE1MDAKKworc3Rh dGljIGludCBfX2ludGVsX2d1Y19mbG93X2NvbnRyb2xfZ3VjKHZvaWQgKmFyZywgYm9vbCBsaW1p dF9ndWNfaWRzLCBib29sIGhhbmcpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGFyZzsKKwlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZ3QtPnVjLmd1YzsKKwlzdHJ1Y3QgZ3VjX3N1Ym1pdF9l bmdpbmUgKmdzZSA9IGd1Yy0+Z3NlW0dVQ19TVUJNSVRfRU5HSU5FX1NJTkdMRV9MUkNdOworCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICoqY29udGV4dHM7CisJaW50IHJldCA9IDA7CisJaW50IGksIGos IGs7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCXN0cnVjdCBpZ3Rfc3Bpbm5lciBzcGlu OworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnNwaW5fcnEgPSBOVUxMLCAqbGFzdCA9IE5VTEw7CisJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZ2xvYmFsID0gJmd0LT5pOTE1LT5ncHVfZXJyb3I7 CisJdW5zaWduZWQgaW50IHJlc2V0X2NvdW50OworCXU2NCB0YXNrbGV0c19zdWJtaXRfY291bnQg PSBnc2UtPnRhc2tsZXRzX3N1Ym1pdF9jb3VudDsKKwl1MzIgb2xkX2JlYXQ7CisKKwljb250ZXh0 cyA9IGttYWxsb2Moc2l6ZW9mKCpjb250ZXh0cykgKiBOVU1fQ09OVEVYVCwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFjb250ZXh0cykgeworCQlwcl9lcnIoIkNvbnRleHQgYXJyYXkgYWxsb2NhdGlvbiBm YWlsZWRcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoZ3QtPnVuY29yZS0+cnBtKTsKKworCWlmIChsaW1pdF9ndWNfaWRzKQorCQln dWMtPm51bV9ndWNfaWRzID0gTlVNX0dVQ19JRDsKKworCWNlID0gaW50ZWxfY29udGV4dF9jcmVh dGUoaW50ZWxfc2VsZnRlc3RfZmluZF9hbnlfZW5naW5lKGd0KSk7CisJaWYgKElTX0VSUihjZSkp IHsKKwkJcmV0ID0gUFRSX0VSUihjZSk7CisJCXByX2VycigiRmFpbGVkIHRvIGNyZWF0ZSBjb250 ZXh0OiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnI7CisJfQorCisJcmVzZXRfY291bnQgPSBpOTE1 X3Jlc2V0X2NvdW50KGdsb2JhbCk7CisJZW5naW5lID0gY2UtPmVuZ2luZTsKKworCW9sZF9iZWF0 ID0gZW5naW5lLT5wcm9wcy5oZWFydGJlYXRfaW50ZXJ2YWxfbXM7CisJaWYgKGhhbmcpIHsKKwkJ cmV0ID0gaW50ZWxfZW5naW5lX3NldF9oZWFydGJlYXQoZW5naW5lLCBIRUFSVEJFQVRfSU5URVJW QUwpOworCQlpZiAocmV0KSB7CisJCQlwcl9lcnIoIkZhaWxlZCB0byBib29zdCBoZWFydGJlYXQg aW50ZXJ2YWw6ICVkXG4iLCByZXQpOworCQkJZ290byBlcnI7CisJCX0KKwl9CisKKwkvKiBDcmVh dGUgc3Bpbm5lciB0byBibG9jayByZXF1ZXN0cyBpbiBiZWxvdyBsb29wICovCisJcmV0ID0gaWd0 X3NwaW5uZXJfaW5pdCgmc3BpbiwgZW5naW5lLT5ndCk7CisJaWYgKHJldCkgeworCQlwcl9lcnIo IkZhaWxlZCB0byBjcmVhdGUgc3Bpbm5lcjogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2hlYXJ0 YmVhdDsKKwl9CisJc3Bpbl9ycSA9IGlndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZzcGluLCBj ZSwgTUlfQVJCX0NIRUNLKTsKKwlpbnRlbF9jb250ZXh0X3B1dChjZSk7CisJaWYgKElTX0VSUihz cGluX3JxKSkgeworCQlyZXQgPSBQVFJfRVJSKHNwaW5fcnEpOworCQlwcl9lcnIoIkZhaWxlZCB0 byBjcmVhdGUgc3Bpbm5lciByZXF1ZXN0OiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfaGVhcnRi ZWF0OworCX0KKwlyZXQgPSBfX3JlcXVlc3RfYWRkX3NwaW4oc3Bpbl9ycSwgJnNwaW4pOworCWlm IChyZXQpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gYWRkIFNwaW5uZXIgcmVxdWVzdDogJWRcbiIs IHJldCk7CisJCWdvdG8gZXJyX3NwaW5fcnE7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgb2YgbG90 IG9mIHJlcXVlc3RzIGluIGEgbG9vcCB0byB0cmlnZ2VyIHRoZSBmbG93IGNvbnRyb2wgc3RhdGUK KwkgKiBtYWNoaW5lLiBVc2luZyBhIHRocmVlIGxldmVsIGxvb3AgYXMgaXQgaXMgaW50ZXJlc3Rp bmcgdG8gaGl0IGZsb3cKKwkgKiBjb250cm9sIHdpdGggbW9yZSB0aGFuIDEgcmVxdWVzdCBvbiBl YWNoIGNvbnRleHQgaW4gYSByb3cgYW5kIGFsc28KKwkgKiBpbnRlcmxlYXZlIHJlcXVlc3RzIHdp dGggb3RoZXIgY29udGV4dHMuCisJICovCisJZm9yIChpID0gMDsgaSA8IE5VTV9SUV9QRVJfQ09O VEVYVDsgKytpKSB7CisJCWZvciAoaiA9IDA7IGogPCBOVU1fQ09OVEVYVDsgKytqKSB7CisJCQlm b3IgKGsgPSAwOyBrIDwgTlVNX1JRX1BFUl9DT05URVhUOyArK2spIHsKKwkJCQlib29sIGZpcnN0 X3Bhc3MgPSAhaSAmJiAhazsKKworCQkJCWlmIChsYXN0KQorCQkJCQlpOTE1X3JlcXVlc3RfcHV0 KGxhc3QpOworCQkJCWxhc3QgPSBOVUxMOworCisJCQkJaWYgKGZpcnN0X3Bhc3MpCisJCQkJCWNv bnRleHRzW2pdID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKKwkJCQljZSA9IGNvbnRl eHRzW2pdOworCisJCQkJaWYgKElTX0VSUihjZSkpIHsKKwkJCQkJcmV0ID0gUFRSX0VSUihjZSk7 CisJCQkJCXByX2VycigiRmFpbGVkIHRvIGNyZWF0ZSBjb250ZXh0LCAlZCwlZCwlZDogJWRcbiIs CisJCQkJCSAgICAgICBpLCBqLCBrLCByZXQpOworCQkJCQlnb3RvIGVycl9zcGluX3JxOworCQkJ CX0KKworCQkJCWxhc3QgPSBub3BfdXNlcl9yZXF1ZXN0KGNlLCBzcGluX3JxKTsKKwkJCQlpZiAo Zmlyc3RfcGFzcykKKwkJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCQkJCWlmIChJU19FUlIo bGFzdCkpIHsKKwkJCQkJcmV0ID0gUFRSX0VSUihsYXN0KTsKKwkJCQkJcHJfZXJyKCJGYWlsZWQg dG8gY3JlYXRlIHJlcXVlc3QsICVkLCVkLCVkOiAlZFxuIiwKKwkJCQkJICAgICAgIGksIGosIGss IHJldCk7CisJCQkJCWdvdG8gZXJyX3NwaW5fcnE7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJ LyogVmVyaWZ5IEd1QyBzdWJtaXQgZW5naW5lIHN0YXRlICovCisJaWYgKGxpbWl0X2d1Y19pZHMg JiYgIWd1Y19pZHNfZXhoYXVzdGVkKGdzZSkpIHsKKwkJcHJfZXJyKCJndWNfaWRzIG5vdCBleGhh dXN0ZWRcbiIpOworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGVycl9zcGluX3JxOworCX0KKwlp ZiAoIWxpbWl0X2d1Y19pZHMgJiYgZ3VjX2lkc19leGhhdXN0ZWQoZ3NlKSkgeworCQlwcl9lcnIo Imd1Y19pZHMgZXhoYXVzdGVkXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBlcnJfc3Bp bl9ycTsKKwl9CisKKwkvKiBFbnN1cmUgbm8gRG9TIGZyb20gdW5yZWFkeSByZXF1ZXN0cyAqLwor CXJldCA9IG5vcF9yZXF1ZXN0X3dhaXQoZW5naW5lLCBmYWxzZSwgdHJ1ZSk7CisJaWYgKHJldCA8 IDApIHsKKwkJcHJfZXJyKCJVc2VyIE5PUCByZXF1ZXN0IERvUzogJWRcbiIsIHJldCk7CisJCWdv dG8gZXJyX3NwaW5fcnE7CisJfQorCisJLyogSW5qZWN0IGhhbmcgaW4gZmxvdyBjb250cm9sIHN0 YXRlIG1hY2hpbmUgKi8KKwlpZiAoaGFuZykgeworCQlndWMtPmdzZV9oYW5nX2V4cGVjdGVkID0g dHJ1ZTsKKwkJZ3VjLT5pbmplY3RfYmFkX3NjaGVkX2Rpc2FibGUgPSB0cnVlOworCX0KKworCS8q IFJlbGVhc2UgYmxvY2tlZCByZXF1ZXN0cyAqLworCWlndF9zcGlubmVyX2VuZCgmc3Bpbik7CisJ cmV0ID0gaW50ZWxfc2VsZnRlc3Rfd2FpdF9mb3JfcnEoc3Bpbl9ycSk7CisJaWYgKHJldCkgewor CQlwcl9lcnIoIlNwaW4gcmVxdWVzdCBmYWlsZWQgdG8gY29tcGxldGU6ICVkXG4iLCByZXQpOwor CQlnb3RvIGVycl9zcGluX3JxOworCX0KKwlpOTE1X3JlcXVlc3RfcHV0KHNwaW5fcnEpOworCWln dF9zcGlubmVyX2ZpbmkoJnNwaW4pOworCXNwaW5fcnEgPSBOVUxMOworCisJLyogV2FpdCBmb3Ig bGFzdCByZXF1ZXN0IC8gR1QgdG8gaWRsZSAqLworCXJldCA9IGk5MTVfcmVxdWVzdF93YWl0KGxh c3QsIDAsIGhhbmcgPyBIWiAqIDMwIDogSFogKiAxMCk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJf ZXJyKCJMYXN0IHJlcXVlc3QgZmFpbGVkIHRvIGNvbXBsZXRlOiAlZFxuIiwgcmV0KTsKKwkJZ290 byBlcnJfc3Bpbl9ycTsKKwl9CisJaTkxNV9yZXF1ZXN0X3B1dChsYXN0KTsKKwlsYXN0ID0gTlVM TDsKKwlyZXQgPSBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWiAqIDUpOworCWlmIChyZXQg PCAwKSB7CisJCXByX2VycigiR1QgZmFpbGVkIHRvIGlkbGU6ICVkXG4iLCByZXQpOworCQlnb3Rv IGVycl9zcGluX3JxOworCX0KKworCS8qIENoZWNrIHN0YXRlIGFmdGVyIGlkbGUgKi8KKwlpZiAo Z3VjX2lkc19leGhhdXN0ZWQoZ3NlKSkgeworCQlwcl9lcnIoImd1Y19pZHMgZXhoYXVzdGVkIGFm dGVyIGxhc3QgcmVxdWVzdCBzaWduYWxlZFxuIik7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8g ZXJyX3NwaW5fcnE7CisJfQorCWlmIChoYW5nKSB7CisJCWlmIChpOTE1X3Jlc2V0X2NvdW50KGds b2JhbCkgPT0gcmVzZXRfY291bnQpIHsKKwkJCXByX2VycigiRmFpbGVkIHRvIHJlY29yZCBhIEdQ VSByZXNldFxuIik7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBlcnJfc3Bpbl9ycTsKKwkJ fQorCX0gZWxzZSB7CisJCWlmIChpOTE1X3Jlc2V0X2NvdW50KGdsb2JhbCkgIT0gcmVzZXRfY291 bnQpIHsKKwkJCXByX2VycigiVW5leHBlY3RlZCBHUFUgcmVzZXRcbiIpOworCQkJcmV0ID0gLUVJ TlZBTDsKKwkJCWdvdG8gZXJyX3NwaW5fcnE7CisJCX0KKwkJaWYgKGdzZS0+dGFza2xldHNfc3Vi bWl0X2NvdW50ID09IHRhc2tsZXRzX3N1Ym1pdF9jb3VudCkgeworCQkJcHJfZXJyKCJGbG93IGNv bnRyb2wgZmFpbGVkIHRvIGtpY2sgaW5cbiIpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8g ZXJyX3NwaW5fcnE7CisJCX0KKwl9CisKKwkvKiBWZXJpZnkgcmVxdWVzdHMgY2FuIGJlIHN1Ym1p dHRlZCBhZnRlciBmbG93IGNvbnRyb2wgKi8KKwlyZXQgPSBub3BfcmVxdWVzdF93YWl0KGVuZ2lu ZSwgdHJ1ZSwgZmFsc2UpOworCWlmIChyZXQgPCAwKSB7CisJCXByX2VycigiS2VybmVsIE5PUCBm YWlsZWQgdG8gY29tcGxldGU6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9zcGluX3JxOworCX0K KwlyZXQgPSBub3BfcmVxdWVzdF93YWl0KGVuZ2luZSwgZmFsc2UsIGZhbHNlKTsKKwlpZiAocmV0 IDwgMCkgeworCQlwcl9lcnIoIlVzZXIgTk9QIGZhaWxlZCB0byBjb21wbGV0ZTogJWRcbiIsIHJl dCk7CisJCWdvdG8gZXJyX3NwaW5fcnE7CisJfQorCitlcnJfc3Bpbl9ycToKKwlpZiAoc3Bpbl9y cSkgeworCQlpZ3Rfc3Bpbm5lcl9lbmQoJnNwaW4pOworCQlpbnRlbF9zZWxmdGVzdF93YWl0X2Zv cl9ycShzcGluX3JxKTsKKwkJaTkxNV9yZXF1ZXN0X3B1dChzcGluX3JxKTsKKwkJaWd0X3NwaW5u ZXJfZmluaSgmc3Bpbik7CisJCWludGVsX2d0X3dhaXRfZm9yX2lkbGUoZ3QsIEhaICogNSk7CisJ fQorZXJyX2hlYXJ0YmVhdDoKKwlpZiAobGFzdCkKKwkJaTkxNV9yZXF1ZXN0X3B1dChsYXN0KTsK KwlpbnRlbF9lbmdpbmVfc2V0X2hlYXJ0YmVhdChlbmdpbmUsIG9sZF9iZWF0KTsKK2VycjoKKwlp bnRlbF9ydW50aW1lX3BtX3B1dChndC0+dW5jb3JlLT5ycG0sIHdha2VyZWYpOworCWd1Yy0+bnVt X2d1Y19pZHMgPSBndWMtPm1heF9ndWNfaWRzOworCWd1Yy0+Z3NlX2hhbmdfZXhwZWN0ZWQgPSBm YWxzZTsKKwlndWMtPmluamVjdF9iYWRfc2NoZWRfZGlzYWJsZSA9IGZhbHNlOworCWtmcmVlKGNv bnRleHRzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfZ3VjX2Zsb3df Y29udHJvbF9ndWNfaWRzKHZvaWQgKmFyZykKK3sKKwlyZXR1cm4gX19pbnRlbF9ndWNfZmxvd19j b250cm9sX2d1YyhhcmcsIHRydWUsIGZhbHNlKTsKK30KKworc3RhdGljIGludCBpbnRlbF9ndWNf Zmxvd19jb250cm9sX2xyY2RfcmVnKHZvaWQgKmFyZykKK3sKKwlyZXR1cm4gX19pbnRlbF9ndWNf Zmxvd19jb250cm9sX2d1YyhhcmcsIGZhbHNlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBpbnQgaW50 ZWxfZ3VjX2Zsb3dfY29udHJvbF9oYW5nX3N0YXRlX21hY2hpbmUodm9pZCAqYXJnKQoreworCXJl dHVybiBfX2ludGVsX2d1Y19mbG93X2NvbnRyb2xfZ3VjKGFyZywgdHJ1ZSwgdHJ1ZSk7Cit9CisK KyNkZWZpbmUgTlVNX1JRX1NUUkVTU19DVEJTCTB4NDAwMAorc3RhdGljIGludCBpbnRlbF9ndWNf Zmxvd19jb250cm9sX3N0cmVzc19jdGJzKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gYXJnOworCWludCByZXQgPSAwOworCWludCBpOworCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZTsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gTlVMTCwgKnJxOworCWludGVsX3dh a2VyZWZfdCB3YWtlcmVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1 Y3QgaTkxNV9ncHVfZXJyb3IgKmdsb2JhbCA9ICZndC0+aTkxNS0+Z3B1X2Vycm9yOworCXVuc2ln bmVkIGludCByZXNldF9jb3VudDsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZ3QtPnVjLmd1 YzsKKwlzdHJ1Y3QgaW50ZWxfZ3VjX2N0X2J1ZmZlciAqY3RiID0gJmd1Yy0+Y3QuY3Ricy5yZWN2 OworCisJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGd0LT51bmNvcmUtPnJwbSk7CisK KwlyZXNldF9jb3VudCA9IGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKTsKKwllbmdpbmUgPSBpbnRl bF9zZWxmdGVzdF9maW5kX2FueV9lbmdpbmUoZ3QpOworCisJLyoKKwkgKiBDcmVhdGUgYSBidW5j aCBvZiByZXF1ZXN0cywgYW5kIHRoZW4gaWRsZSB0aGUgR1Qgd2hpY2ggd2lsbCBjcmVhdGUgYQor CSAqIGxvdCBvZiBIMkcgLyBHMkggdHJhZmZpYy4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgTlVN X1JRX1NUUkVTU19DVEJTOyArK2kpIHsKKwkJY2UgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdp bmUpOworCQlpZiAoSVNfRVJSKGNlKSkgeworCQkJcmV0ID0gUFRSX0VSUihjZSk7CisJCQlwcl9l cnIoIkZhaWxlZCB0byBjcmVhdGUgY29udGV4dCwgJWQ6ICVkXG4iLCBpLCByZXQpOworCQkJZ290 byBlcnI7CisJCX0KKworCQlycSA9IG5vcF91c2VyX3JlcXVlc3QoY2UsIE5VTEwpOworCQlpbnRl bF9jb250ZXh0X3B1dChjZSk7CisKKwkJaWYgKElTX0VSUihycSkpIHsKKwkJCXJldCA9IFBUUl9F UlIocnEpOworCQkJcHJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIHJlcXVlc3QsICVkOiAlZFxuIiwg aSwgcmV0KTsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJaWYgKGxhc3QpCisJCQlpOTE1X3JlcXVl c3RfcHV0KGxhc3QpOworCQlsYXN0ID0gcnE7CisJfQorCisJcmV0ID0gaTkxNV9yZXF1ZXN0X3dh aXQobGFzdCwgMCwgSFogKiAxMCk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCJMYXN0IHJl cXVlc3QgZmFpbGVkIHRvIGNvbXBsZXRlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnI7CisJfQor CWk5MTVfcmVxdWVzdF9wdXQobGFzdCk7CisJbGFzdCA9IE5VTEw7CisKKwlyZXQgPSBpbnRlbF9n dF93YWl0X2Zvcl9pZGxlKGd0LCBIWiAqIDEwKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIo IkdUIGZhaWxlZCB0byBpZGxlOiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnI7CisJfQorCisJaWYg KGk5MTVfcmVzZXRfY291bnQoZ2xvYmFsKSAhPSByZXNldF9jb3VudCkgeworCQlwcl9lcnIoIlVu ZXhwZWN0ZWQgR1BVIHJlc2V0XG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBlcnI7CisJ fQorCisJcmV0ID0gbm9wX3JlcXVlc3Rfd2FpdChlbmdpbmUsIHRydWUsIGZhbHNlKTsKKwlpZiAo cmV0IDwgMCkgeworCQlwcl9lcnIoIktlcm5lbCBOT1AgZmFpbGVkIHRvIGNvbXBsZXRlOiAlZFxu IiwgcmV0KTsKKwkJZ290byBlcnI7CisJfQorCisJcmV0ID0gbm9wX3JlcXVlc3Rfd2FpdChlbmdp bmUsIGZhbHNlLCBmYWxzZSk7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCJVc2VyIE5PUCBm YWlsZWQgdG8gY29tcGxldGU6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycjsKKwl9CisKKwlyZXQg PSBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBIWik7CisJaWYgKHJldCA8IDApIHsKKwkJcHJf ZXJyKCJHVCBmYWlsZWQgdG8gaWRsZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKwor CXJldCA9IHdhaXRfZm9yKGludGVsX2d1Y19jdF9pc19yZWN2X2J1ZmZlcl9lbXB0eSgmZ3VjLT5j dCksIEhaKTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiUmVjdiBDVEIgbm90IGV4cGVjdGVkIHZh bHVlPSVkLCVkIG91dHN0YW5kaW5nX2N0Yj0lZFxuIiwKKwkJICAgICAgIGF0b21pY19yZWFkKCZj dGItPnNwYWNlKSwKKwkJICAgICAgIENJUkNfU1BBQ0UoMCwgMCwgY3RiLT5zaXplKSAtIGN0Yi0+ cmVzdl9zcGFjZSwKKwkJICAgICAgIGF0b21pY19yZWFkKCZndWMtPm91dHN0YW5kaW5nX3N1Ym1p c3Npb25fZzJoKSk7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gZXJyOworCX0KKworZXJyOgor CWlmIChsYXN0KQorCQlpOTE1X3JlcXVlc3RfcHV0KGxhc3QpOworCWludGVsX3J1bnRpbWVfcG1f cHV0KGd0LT51bmNvcmUtPnJwbSwgd2FrZXJlZik7CisKKwlyZXR1cm4gcmV0OworfQorCisjZGVm aW5lIE5VTV9SUV9ERUFETE9DSwkJMjA0OAorc3RhdGljIGludCBfX2ludGVsX2d1Y19mbG93X2Nv bnRyb2xfZGVhZGxvY2tfaDJnKHZvaWQgKmFyZywgYm9vbCBiYWRfZGVzYykKK3sKKwlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0ID0gYXJnOworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZndC0+dWMuZ3Vj OworCWludCByZXQgPSAwOworCWludCBpOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gTlVMTCwgKnJxOworCWludGVsX3dha2VyZWZfdCB3 YWtlcmVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgaTkxNV9n cHVfZXJyb3IgKmdsb2JhbCA9ICZndC0+aTkxNS0+Z3B1X2Vycm9yOworCXVuc2lnbmVkIGludCBy ZXNldF9jb3VudDsKKwl1MzIgb2xkX2JlYXQ7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9w bV9nZXQoZ3QtPnVuY29yZS0+cnBtKTsKKworCXJlc2V0X2NvdW50ID0gaTkxNV9yZXNldF9jb3Vu dChnbG9iYWwpOworCWVuZ2luZSA9IGludGVsX3NlbGZ0ZXN0X2ZpbmRfYW55X2VuZ2luZShndCk7 CisKKwlvbGRfYmVhdCA9IGVuZ2luZS0+cHJvcHMuaGVhcnRiZWF0X2ludGVydmFsX21zOworCXJl dCA9IGludGVsX2VuZ2luZV9zZXRfaGVhcnRiZWF0KGVuZ2luZSwgSEVBUlRCRUFUX0lOVEVSVkFM KTsKKwlpZiAocmV0KSB7CisJCXByX2VycigiRmFpbGVkIHRvIGJvb3N0IGhlYXJ0YmVhdCBpbnRl cnZhbDogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyOworCX0KKworCWd1Yy0+aW5qZWN0X2NvcnJ1 cHRfaDJnID0gdHJ1ZTsKKwlpZiAoYmFkX2Rlc2MpCisJCWd1Yy0+YmFkX2Rlc2NfZXhwZWN0ZWQg PSB0cnVlOworCWVsc2UKKwkJZ3VjLT5kZWFkbG9ja19leHBlY3RlZCA9IHRydWU7CisKKwlmb3Ig KGkgPSAwOyBpIDwgTlVNX1JRX0RFQURMT0NLOyArK2kpIHsKKwkJY2UgPSBpbnRlbF9jb250ZXh0 X2NyZWF0ZShlbmdpbmUpOworCQlpZiAoSVNfRVJSKGNlKSkgeworCQkJcmV0ID0gUFRSX0VSUihj ZSk7CisJCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgY29udGV4dCwgJWQ6ICVkXG4iLCBpLCBy ZXQpOworCQkJZ290byBlcnJfaGVhcnRiZWF0OworCQl9CisKKwkJcnEgPSBub3BfdXNlcl9yZXF1 ZXN0KGNlLCBOVUxMKTsKKwkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCisJCWlmIChJU19FUlIo cnEpICYmIFBUUl9FUlIocnEpID09IC1FREVBRExLKSB7CisJCQlicmVhazsKKwkJfSBlbHNlIGlm IChJU19FUlIocnEpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHJxKTsKKwkJCXByX2VycigiRmFpbGVk IHRvIGNyZWF0ZSByZXF1ZXN0LCAlZDogJWRcbiIsIGksIHJldCk7CisJCQlnb3RvIGVycl9oZWFy dGJlYXQ7CisJCX0KKworCQlpZiAobGFzdCkKKwkJCWk5MTVfcmVxdWVzdF9wdXQobGFzdCk7CisJ CWxhc3QgPSBycTsKKwl9CisKKwlwcl9kZWJ1ZygiTnVtYmVyIHJlcXVlc3RzIGJlZm9yZSBkZWFk bG9jazogJWRcbiIsIGkpOworCisJaWYgKCFzdWJtaXNzaW9uX2Rpc2FibGVkKGd1YykpIHsKKwkJ cHJfZXJyKCJTdWJtaXNzaW9uIG5vdCBkaXNhYmxlZCIpOworCQlyZXQgPSAtRUlOVkFMOworCQln b3RvIGVycl9oZWFydGJlYXQ7CisJfQorCisJcmV0ID0gaTkxNV9yZXF1ZXN0X3dhaXQobGFzdCwg 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 bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKaW5kZXggYTkyYzBlOWI3ZTZi Li43YTQ4YjNhZGM1NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaApAQCAtNDYsNSArNDYsNiBAQCBzZWxmdGVzdChoYW5n Y2hlY2ssIGludGVsX2hhbmdjaGVja19saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGV4ZWNsaXN0 cywgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QocmluZ19zdWJtaXNz aW9uLCBpbnRlbF9yaW5nX3N1Ym1pc3Npb25fbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChwZXJm LCBpOTE1X3BlcmZfbGl2ZV9zZWxmdGVzdHMpCitzZWxmdGVzdChndWNfZmxvd19jb250cm9sLCBp bnRlbF9ndWNfZmxvd19jb250cm9sKQogLyogSGVyZSBiZSBkcmFnb25zOiBrZWVwIGxhc3QgdG8g cnVuIGxhc3QhICovCiBzZWxmdGVzdChsYXRlX2d0X3BtLCBpbnRlbF9ndF9wbV9sYXRlX3NlbGZ0 ZXN0cykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9z Y2hlZHVsZXJfaGVscGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVs X3NjaGVkdWxlcl9oZWxwZXJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5mODNjOGM2YzBkOWIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBlcnMuYwpAQCAtMCwwICsxLDEwMSBAQAor LyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkg MjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKy8vI2luY2x1ZGUgImd0L2ludGVsX2VuZ2lu ZV91c2VyLmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpOTE1X2Rydi5o IgorI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKKworI2luY2x1ZGUgInNlbGZ0ZXN0cy9pbnRl bF9zY2hlZHVsZXJfaGVscGVycy5oIgorCisjZGVmaW5lIFJFRFVDRURfVElNRVNMSUNFCTUKKyNk ZWZpbmUgUkVEVUNFRF9QUkVFTVBUCQkxMAorI2RlZmluZSBXQUlUX0ZPUl9SRVNFVF9USU1FCTEw MDAwCisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmludGVsX3NlbGZ0ZXN0X2ZpbmRfYW55X2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGd0LCBpZCkKKwkJcmV0dXJuIGVuZ2luZTsKKworCXByX2VycigiTm8gdmFsaWQgZW5naW5l IGZvdW5kIVxuIik7CisJcmV0dXJuIE5VTEw7Cit9CisKK2ludCBpbnRlbF9zZWxmdGVzdF9tb2Rp ZnlfcG9saWN5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCQkgc3RydWN0IGlu dGVsX3NlbGZ0ZXN0X3NhdmVkX3BvbGljeSAqc2F2ZWQsCisJCQkJIHUzMiBtb2RpZnlfdHlwZSkK KworeworCWludCBlcnI7CisKKwlzYXZlZC0+cmVzZXQgPSBlbmdpbmUtPmk5MTUtPnBhcmFtcy5y ZXNldDsKKwlzYXZlZC0+ZmxhZ3MgPSBlbmdpbmUtPmZsYWdzOworCXNhdmVkLT50aW1lc2xpY2Ug PSBlbmdpbmUtPnByb3BzLnRpbWVzbGljZV9kdXJhdGlvbl9tczsKKwlzYXZlZC0+cHJlZW1wdF90 aW1lb3V0ID0gZW5naW5lLT5wcm9wcy5wcmVlbXB0X3RpbWVvdXRfbXM7CisKKwlzd2l0Y2ggKG1v ZGlmeV90eXBlKSB7CisJY2FzZSBTRUxGVEVTVF9TQ0hFRFVMRVJfTU9ESUZZX0ZBU1RfUkVTRVQ6 CisJCS8qCisJCSAqIEVuYWJsZSBmb3JjZSBwcmUtZW1wdGlvbiBvbiB0aW1lIHNsaWNlIGV4cGly YXRpb24KKwkJICogdG9nZXRoZXIgd2l0aCBlbmdpbmUgcmVzZXQgb24gcHJlLWVtcHRpb24gdGlt ZW91dC4KKwkJICogVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBHdUMgbm90aWNlIGFuZCBy ZXNldAorCQkgKiB0aGUgc2luZ2xlIGhhbmdpbmcgY29udGV4dC4KKwkJICogQWxzbywgcmVkdWNl IHRoZSBwcmVlbXB0aW9uIHRpbWVvdXQgdG8gc29tZXRoaW5nCisJCSAqIHNtYWxsIHRvIHNwZWVk IHRoZSB0ZXN0IHVwLgorCQkgKi8KKwkJZW5naW5lLT5pOTE1LT5wYXJhbXMucmVzZXQgPSAyOwor CQllbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX1dBTlRfRk9SQ0VEX1BSRUVNUFRJT047CisJ CWVuZ2luZS0+cHJvcHMudGltZXNsaWNlX2R1cmF0aW9uX21zID0gUkVEVUNFRF9USU1FU0xJQ0U7 CisJCWVuZ2luZS0+cHJvcHMucHJlZW1wdF90aW1lb3V0X21zID0gUkVEVUNFRF9QUkVFTVBUOwor CQlicmVhazsKKworCWNhc2UgU0VMRlRFU1RfU0NIRURVTEVSX01PRElGWV9OT19IQU5HQ0hFQ0s6 CisJCWVuZ2luZS0+cHJvcHMucHJlZW1wdF90aW1lb3V0X21zID0gMDsKKwkJYnJlYWs7CisKKwlk ZWZhdWx0OgorCQlwcl9lcnIoIkludmFsaWQgc2NoZWR1bGVyIHBvbGljeSBtb2RpZmljYXRpb24g dHlwZTogJWQhXG4iLCBtb2RpZnlfdHlwZSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlm ICghaW50ZWxfZW5naW5lX3VzZXNfZ3VjKGVuZ2luZSkpCisJCXJldHVybiAwOworCisJZXJyID0g aW50ZWxfZ3VjX2dsb2JhbF9wb2xpY2llc191cGRhdGUoJmVuZ2luZS0+Z3QtPnVjLmd1Yyk7CisJ aWYgKGVycikKKwkJaW50ZWxfc2VsZnRlc3RfcmVzdG9yZV9wb2xpY3koZW5naW5lLCBzYXZlZCk7 CisKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaW50ZWxfc2VsZnRlc3RfcmVzdG9yZV9wb2xpY3ko c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgc3RydWN0IGludGVsX3NlbGZ0 ZXN0X3NhdmVkX3BvbGljeSAqc2F2ZWQpCit7CisJLyogUmVzdG9yZSB0aGUgb3JpZ2luYWwgcG9s aWNpZXMgKi8KKwllbmdpbmUtPmk5MTUtPnBhcmFtcy5yZXNldCA9IHNhdmVkLT5yZXNldDsKKwll bmdpbmUtPmZsYWdzID0gc2F2ZWQtPmZsYWdzOworCWVuZ2luZS0+cHJvcHMudGltZXNsaWNlX2R1 cmF0aW9uX21zID0gc2F2ZWQtPnRpbWVzbGljZTsKKwllbmdpbmUtPnByb3BzLnByZWVtcHRfdGlt ZW91dF9tcyA9IHNhdmVkLT5wcmVlbXB0X3RpbWVvdXQ7CisKKwlpZiAoIWludGVsX2VuZ2luZV91 c2VzX2d1YyhlbmdpbmUpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBpbnRlbF9ndWNfZ2xvYmFs X3BvbGljaWVzX3VwZGF0ZSgmZW5naW5lLT5ndC0+dWMuZ3VjKTsKK30KKworaW50IGludGVsX3Nl bGZ0ZXN0X3dhaXRfZm9yX3JxKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCWxvbmcgcmV0 OworCisJcmV0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIFdBSVRfRk9SX1JFU0VUX1RJTUUp OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfc2NoZWR1bGVyX2hlbHBl cnMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9zY2hlZHVsZXJfaGVs cGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzRmMjZjMTU5 N2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX3NjaGVkdWxlcl9oZWxwZXJzLmgKQEAgLTAsMCArMSwzNyBAQAorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0LTIwMTkgSW50ZWwg Q29ycG9yYXRpb24KKyAqLworCisjaWZuZGVmIF9JTlRFTF9TRUxGVEVTVF9TQ0hFRFVMRVJfSEVM UEVSU19IXworI2RlZmluZSBfSU5URUxfU0VMRlRFU1RfU0NIRURVTEVSX0hFTFBFUlNfSF8KKwor I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKK3N0cnVjdCBpbnRlbF9ndDsKK3N0cnVjdCBpOTE1 X3JlcXVlc3Q7CitzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOworCitzdHJ1Y3QgaW50ZWxfc2VsZnRl c3Rfc2F2ZWRfcG9saWN5Cit7CisJdTMyIGZsYWdzOworCXUzMiByZXNldDsKKwl1NjQgdGltZXNs aWNlOworCXU2NCBwcmVlbXB0X3RpbWVvdXQ7Cit9OworCitlbnVtIHNlbGZ0ZXN0X3NjaGVkdWxl cl9tb2RpZnkKK3sKKwlTRUxGVEVTVF9TQ0hFRFVMRVJfTU9ESUZZX05PX0hBTkdDSEVDSyA9IDAs CisJU0VMRlRFU1RfU0NIRURVTEVSX01PRElGWV9GQVNUX1JFU0VULAorfTsKKworaW50IGludGVs X3NlbGZ0ZXN0X21vZGlmeV9wb2xpY3koc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAor CQkJCSBzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rfc2F2ZWRfcG9saWN5ICpzYXZlZCwKKwkJCQkgZW51 bSBzZWxmdGVzdF9zY2hlZHVsZXJfbW9kaWZ5IG1vZGlmeV90eXBlKTsKK2ludCBpbnRlbF9zZWxm dGVzdF9yZXN0b3JlX3BvbGljeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCQkJ ICBzdHJ1Y3QgaW50ZWxfc2VsZnRlc3Rfc2F2ZWRfcG9saWN5ICpzYXZlZCk7CitpbnQgaW50ZWxf c2VsZnRlc3Rfd2FpdF9mb3JfcnEoIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKK3N0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmludGVsX3NlbGZ0ZXN0X2ZpbmRfYW55X2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KTsKKworI2VuZGlmCi0tIAoyLjI4LjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=