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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C212C433EF for ; Thu, 18 Nov 2021 18:50:40 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 DCBC861AFD for ; Thu, 18 Nov 2021 18:50:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DCBC861AFD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=kDLhPa9oaom2EpBAGY4FsDUvLtwolp0zhDWA1jp4foM=; b=AAvoPxiGHdeQ9j cLVSYPcG9BvMgqQb8+IyRfZxVJN4RzuiBzmNMbljBzD25LETDVTjFk0UWnuHdw2v642re11LHJ4fc yBdQHn5Gh6nIjWXauWHWIJwWW4GdELKIlabOlE3kiLW32OLG47xGsp42PvH7QSBcBJFKwtRL9kvS9 VLO5eC9ztdJG+shTxlTTFojeaTST/krs76fLuBUlxTl+qG1awhYh4PoaWAbyEo/WMSjmHZ1BgLXkj cTOKO/rIlYBoB9+ZlzdV6qRo1habkCa8zfylAoOQdrxeuGEmU4aqVqZZA3P+PXelhtCniepIsesCM VjT+h1fna+sBZYwijUZQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mnmT0-008dh2-7y; Thu, 18 Nov 2021 18:49:02 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mnmR6-008cwh-9c for linux-arm-kernel@lists.infradead.org; Thu, 18 Nov 2021 18:47:07 +0000 Received: by mail-wm1-x329.google.com with SMTP id y196so6247527wmc.3 for ; Thu, 18 Nov 2021 10:47:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=89AsjvVNV/Rc4mz/t7QuZ/hAkSNPw+08m1IGT1ip1xI=; b=YcUQsR9goVIG1cmb6wDmmWszFwkT6J/HHGiLzSBZCLy0uob/O1PfkIr4PpOwAx+KgW HaKAroxgCFxbwTMHiQA8IY6i96JGwbqkSqGRpXPvR5wscq7oNhSXr0odBxjpwa1mEryy IkZmujQJ9t9yD+iFr1IUEP2fYF/cpXP9ezCt/4vLX5zy0SslfxPs9A9Zv7vHCEXpA7OM YTseNLdkFx+mhqhIs21GMIbDAiW/FBICBHtsu4sl6G0kB7xs4g+u05l0aEoVbVGQmUTP fjdQFcnhCOD8rYSHGOqec7PMForlDrkFPb0bdfU04Rixd+W0UmVcOiBQGPhTL9a6hauU FLsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=89AsjvVNV/Rc4mz/t7QuZ/hAkSNPw+08m1IGT1ip1xI=; b=mo67+15WtM7wiD0nTBL2LjrPTyhB30G5W9q1C0dZFSmm5L9tZDRC7TPg9JDntIonuG v3rab5ZX0yGbtn0yIMtWY367hKgrfhJTU1YmY8un3LeFx19f1IgiSrz196pQf0r9CtMw LwgpxXDHeNhqIxutTcI+KjeClhNqSKPmoLSfkwN+pqPEvl2CpejDMJ77yV2CQZKhl/U3 pBVE53Y64Ku2zVCgSyxkNVi4teOp1iG1lcEQa5rVNTWMyxHTo7SO8vcm5VWFeb6eN2AM mThrekB6ULQ64f4jM5fz3uo97Yu3734eONNxXsaBOiz2aH1EXw7olsPUdtUh32LJA2Dl aP3w== X-Gm-Message-State: AOAM530A+RzRkrpkJm/4eE1eDS1DF5ESmLxQgguaN6I0Ca+JOfA5FOV+ pvvSRYUfUqxgmYTX2lQ/1nG6ig== X-Google-Smtp-Source: ABdhPJxtJMfw1VaJ9apSMOVnKg6iVLS/xnIsuT0Gx51E7pogEWTJyMokYRVchlu/236t/dIVufjhmA== X-Received: by 2002:a05:600c:4f02:: with SMTP id l2mr12707960wmq.26.1637261222298; Thu, 18 Nov 2021 10:47:02 -0800 (PST) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id b11sm9637580wmj.35.2021.11.18.10.46.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Nov 2021 10:46:55 -0800 (PST) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 78D701FF9F; Thu, 18 Nov 2021 18:46:50 +0000 (GMT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: kvm@vger.kernel.org Cc: idan.horowitz@gmail.com, qemu-arm@nongnu.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, christoffer.dall@arm.com, maz@kernel.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , Will Deacon Subject: [kvm-unit-tests PATCH v8 08/10] arm/barrier-litmus-tests: add simple mp and sal litmus tests Date: Thu, 18 Nov 2021 18:46:48 +0000 Message-Id: <20211118184650.661575-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211118184650.661575-1-alex.bennee@linaro.org> References: <20211118184650.661575-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211118_104704_397926_C07B45E4 X-CRM114-Status: GOOD ( 35.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBhZGRzIGEgZnJhbWV3b3JrIGZvciBhZGRpbmcgc2ltcGxlIGJhcnJpZXIgbGl0bXVzIHRl c3RzIGFnYWluc3QKQVJNLiBUaGUgbGl0bXVzIHRlc3RzIGFyZW4ndCBhcyBjb21wcmVoZW5zaXZl IGFzIHRoZSBhY2FkZW1pYyBleGVyY2lzZXMKd2hpY2ggd2lsbCBhdHRlbXB0IHRvIGRvIGFsbCBz b3J0cyBvZiB0aGluZ3MgdG8ga2VlcCByYWNpbmcgQ1BVcyBzeW5jZWQKdXAuIFRoZXNlIHRlc3Rz IGRvIGhvbm91ciB0aGUgInN5bmMiIHBhcmFtZXRlciB0byBkbyBhIHBvb3ItbWFucwplcXVpdmFs ZW50LgoKVGhlIHR3byBsaXRtdXMgdGVzdHMgYXJlOgogIC0gbWVzc2FnZSBwYXNzaW5nCiAgLSBz dG9yZS1hZnRlci1sb2FkCgpUaGV5IGJvdGggaGF2ZSBjYXNlIHRoYXQgc2hvdWxkIGZhaWwgKGFs dGhvdWdoIHdvbid0IG9uIHNpbmdsZS10aHJlYWRlZApUQ0cgc2V0dXBzKS4gSWYgYmFycmllcnMg YXJlbid0IHdvcmtpbmcgcHJvcGVybHkgdGhlIHN0b3JlLWFmdGVyLWxvYWQKdGVzdCB3aWxsIGZh aWwgZXZlbiBvbiBhbiB4ODYgYmFja2VuZCBhcyB4ODYgYWxsb3dzIHJlLW9yZGluZyBvZiBub24K YWxpYXNlZCBzdG9yZXMuCgpJJ3ZlIGltcG9ydGVkIGEgZmV3IG1vcmUgb2YgdGhlIGJhcnJpZXIg cHJpbWF0aXZlcyBmcm9tIHRoZSBMaW51eCBzb3VyY2UKdHJlZSBzbyB3ZSBjb25zaXN0ZW50bHkg dXNlIG1hY3Jvcy4KClRoZSBhcm02NCBiYXJyaWVyIHByaW1pdGl2ZXMgdHJpcCB1cCBvbiAtV3N0 cmljdC1hbGlhc2luZyBzbyB0aGlzIGlzCmRpc2FibGVkIGluIHRoZSBNYWtlZmlsZS4KClNpZ25l ZC1vZmYtYnk6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9yZz4KQ0M6IFdpbGwg RGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+CgotLS0KdjgKICAtIG1vdmUgdG8gbXR0Y2d0ZXN0cy5j ZmcKICAtIGZpeCBjaGVja3BhdGNoIGlzc3VlcwogIC0gZml4IHJlcG9ydCB1c2FnZQp2NwogIC0g bWVyZ2UgaW4gc3RvcmUtYWZ0ZXItbG9hZAogIC0gY2xlYW4tdXAgc3luYy11cCBjb2RlCiAgLSB1 c2UgbmV3IGNvdW50ZXIgYXBpCiAgLSBmaXggeGZhaWwgZm9yIHNhbCB0ZXN0CnY2CiAgLSBhZGQg YSB1bml0dGVzdC5jZmcKICAtIC1mbm8tc3RyaWN0LWFsaWFzaW5nCi0tLQogYXJtL01ha2VmaWxl LmNvbW1vbiAgICAgICB8ICAgMSArCiBsaWIvYXJtL2FzbS9iYXJyaWVyLmggICAgIHwgIDYxICsr KysrKwogbGliL2FybTY0L2FzbS9iYXJyaWVyLmggICB8ICA1MCArKysrKwogYXJtL2JhcnJpZXIt bGl0bXVzLXRlc3QuYyB8IDQ1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogYXJtL210dGNndGVzdHMuY2ZnICAgICAgICB8ICAzMyArKysKIDUgZmlsZXMgY2hhbmdlZCwg NTk1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcm0vYmFycmllci1saXRtdXMt dGVzdC5jCgpkaWZmIC0tZ2l0IGEvYXJtL01ha2VmaWxlLmNvbW1vbiBiL2FybS9NYWtlZmlsZS5j b21tb24KaW5kZXggZjkwNTk3MS4uODYxZTVjNyAxMDA2NDQKLS0tIGEvYXJtL01ha2VmaWxlLmNv bW1vbgorKysgYi9hcm0vTWFrZWZpbGUuY29tbW9uCkBAIC0xMyw2ICsxMyw3IEBAIHRlc3RzLWNv bW1vbiArPSAkKFRFU1RfRElSKS9zaWV2ZS5mbGF0CiB0ZXN0cy1jb21tb24gKz0gJChURVNUX0RJ UikvcGwwMzEuZmxhdAogdGVzdHMtY29tbW9uICs9ICQoVEVTVF9ESVIpL3RsYmZsdXNoLWNvZGUu ZmxhdAogdGVzdHMtY29tbW9uICs9ICQoVEVTVF9ESVIpL2xvY2tpbmctdGVzdC5mbGF0Cit0ZXN0 cy1jb21tb24gKz0gJChURVNUX0RJUikvYmFycmllci1saXRtdXMtdGVzdC5mbGF0CiAKIHRlc3Rz LWFsbCA9ICQodGVzdHMtY29tbW9uKSAkKHRlc3RzKQogYWxsOiBkaXJlY3RvcmllcyAkKHRlc3Rz LWFsbCkKZGlmZiAtLWdpdCBhL2xpYi9hcm0vYXNtL2JhcnJpZXIuaCBiL2xpYi9hcm0vYXNtL2Jh cnJpZXIuaAppbmRleCA3Zjg2ODMxLi4yODcwMDgwIDEwMDY0NAotLS0gYS9saWIvYXJtL2FzbS9i YXJyaWVyLmgKKysrIGIvbGliL2FybS9hc20vYmFycmllci5oCkBAIC04LDYgKzgsOCBAQAogICog VGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVy c2lvbiAyLgogICovCiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwogI2RlZmluZSBzZXYoKQkJYXNt IHZvbGF0aWxlKCJzZXYiIDogOiA6ICJtZW1vcnkiKQogI2RlZmluZSB3ZmUoKQkJYXNtIHZvbGF0 aWxlKCJ3ZmUiIDogOiA6ICJtZW1vcnkiKQogI2RlZmluZSB3ZmkoKQkJYXNtIHZvbGF0aWxlKCJ3 ZmkiIDogOiA6ICJtZW1vcnkiKQpAQCAtMjUsNCArMjcsNjMgQEAKICNkZWZpbmUgc21wX3JtYigp CXNtcF9tYigpCiAjZGVmaW5lIHNtcF93bWIoKQlkbWIoaXNoc3QpCiAKK2V4dGVybiB2b2lkIGFi b3J0KHZvaWQpOworCitzdGF0aWMgaW5saW5lIHZvaWQgX193cml0ZV9vbmNlX3NpemUodm9sYXRp bGUgdm9pZCAqcCwgdm9pZCAqcmVzLCBpbnQgc2l6ZSkKK3sKKwlzd2l0Y2ggKHNpemUpIHsKKwlj YXNlIDE6ICoodm9sYXRpbGUgdWludDhfdCAqKXAgPSAqKHVpbnQ4X3QgKilyZXM7IGJyZWFrOwor CWNhc2UgMjogKih2b2xhdGlsZSB1aW50MTZfdCAqKXAgPSAqKHVpbnQxNl90ICopcmVzOyBicmVh azsKKwljYXNlIDQ6ICoodm9sYXRpbGUgdWludDMyX3QgKilwID0gKih1aW50MzJfdCAqKXJlczsg YnJlYWs7CisJY2FzZSA4OiAqKHZvbGF0aWxlIHVpbnQ2NF90ICopcCA9ICoodWludDY0X3QgKily ZXM7IGJyZWFrOworCWRlZmF1bHQ6CisJCS8qIHVuaGFuZGxlZCBjYXNlICovCisJCWFib3J0KCk7 CisJfQorfQorCisjZGVmaW5lIFdSSVRFX09OQ0UoeCwgdmFsKSBcCisoewkJCQkJCQlcCisJdW5p b24geyB0eXBlb2YoeCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9CVwKKwkJeyAuX192YWwg PSAodHlwZW9mKHgpKSAodmFsKSB9OyBcCisJX193cml0ZV9vbmNlX3NpemUoJih4KSwgX191Ll9f Yywgc2l6ZW9mKHgpKTsJXAorCV9fdS5fX3ZhbDsJCQkJCVwKK30pCisKKyNkZWZpbmUgc21wX3N0 b3JlX3JlbGVhc2UocCwgdikJCQkJCQlcCitkbyB7CQkJCQkJCQkJXAorCXNtcF9tYigpOwkJCQkJ CQlcCisJV1JJVEVfT05DRSgqcCwgdik7CQkJCQkJXAorfSB3aGlsZSAoMCkKKworCitzdGF0aWMg aW5saW5lCit2b2lkIF9fcmVhZF9vbmNlX3NpemUoY29uc3Qgdm9sYXRpbGUgdm9pZCAqcCwgdm9p ZCAqcmVzLCBpbnQgc2l6ZSkKK3sKKwlzd2l0Y2ggKHNpemUpIHsKKwljYXNlIDE6ICoodWludDhf dCAqKXJlcyA9ICoodm9sYXRpbGUgdWludDhfdCAqKXA7IGJyZWFrOworCWNhc2UgMjogKih1aW50 MTZfdCAqKXJlcyA9ICoodm9sYXRpbGUgdWludDE2X3QgKilwOyBicmVhazsKKwljYXNlIDQ6ICoo dWludDMyX3QgKilyZXMgPSAqKHZvbGF0aWxlIHVpbnQzMl90ICopcDsgYnJlYWs7CisJY2FzZSA4 OiAqKHVpbnQ2NF90ICopcmVzID0gKih2b2xhdGlsZSB1aW50NjRfdCAqKXA7IGJyZWFrOworCWRl ZmF1bHQ6CisJCS8qIHVuaGFuZGxlZCBjYXNlICovCisJCWFib3J0KCk7CisJfQorfQorCisjZGVm aW5lIFJFQURfT05DRSh4KQkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl1bmlvbiB7IHR5cGVvZih4 KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OwkJCVwKKwlfX3JlYWRfb25jZV9zaXplKCYoeCks IF9fdS5fX2MsIHNpemVvZih4KSk7CQkJXAorCV9fdS5fX3ZhbDsJCQkJCQkJXAorfSkKKworCisj ZGVmaW5lIHNtcF9sb2FkX2FjcXVpcmUocCkJCQkJCQlcCisoewkJCQkJCQkJCVwKKwl0eXBlb2Yo KnApIF9fX3AxID0gUkVBRF9PTkNFKCpwKTsJCQkJXAorCXNtcF9tYigpOwkJCQkJCQlcCisJX19f cDE7CQkJCQkJCQlcCit9KQorCiAjZW5kaWYgLyogX0FTTUFSTV9CQVJSSUVSX0hfICovCmRpZmYg LS1naXQgYS9saWIvYXJtNjQvYXNtL2JhcnJpZXIuaCBiL2xpYi9hcm02NC9hc20vYmFycmllci5o CmluZGV4IDBlMTkwNGMuLjVlNDA1MTkgMTAwNjQ0Ci0tLSBhL2xpYi9hcm02NC9hc20vYmFycmll ci5oCisrKyBiL2xpYi9hcm02NC9hc20vYmFycmllci5oCkBAIC0yNCw0ICsyNCw1NCBAQAogI2Rl ZmluZSBzbXBfcm1iKCkJZG1iKGlzaGxkKQogI2RlZmluZSBzbXBfd21iKCkJZG1iKGlzaHN0KQog CisjZGVmaW5lIHNtcF9zdG9yZV9yZWxlYXNlKHAsIHYpCQkJCQkJXAorZG8gewkJCQkJCQkJCVwK Kwlzd2l0Y2ggKHNpemVvZigqcCkpIHsJCQkJCQlcCisJY2FzZSAxOgkJCQkJCQkJXAorCQlhc20g dm9sYXRpbGUgKCJzdGxyYiAldzEsICUwIgkJCQlcCisJCQkJOiAiPVEiICgqcCkgOiAiciIgKHYp IDogIm1lbW9yeSIpOwlcCisJCWJyZWFrOwkJCQkJCQlcCisJY2FzZSAyOgkJCQkJCQkJXAorCQlh c20gdm9sYXRpbGUgKCJzdGxyaCAldzEsICUwIgkJCQlcCisJCQkJOiAiPVEiICgqcCkgOiAiciIg KHYpIDogIm1lbW9yeSIpOwlcCisJCWJyZWFrOwkJCQkJCQlcCisJY2FzZSA0OgkJCQkJCQkJXAor CQlhc20gdm9sYXRpbGUgKCJzdGxyICV3MSwgJTAiCQkJCVwKKwkJCQk6ICI9USIgKCpwKSA6ICJy IiAodikgOiAibWVtb3J5Iik7CVwKKwkJYnJlYWs7CQkJCQkJCVwKKwljYXNlIDg6CQkJCQkJCQlc CisJCWFzbSB2b2xhdGlsZSAoInN0bHIgJTEsICUwIgkJCQlcCisJCQkJOiAiPVEiICgqcCkgOiAi ciIgKHYpIDogIm1lbW9yeSIpOwlcCisJCWJyZWFrOwkJCQkJCQlcCisJfQkJCQkJCQkJXAorfSB3 aGlsZSAoMCkKKworI2RlZmluZSBzbXBfbG9hZF9hY3F1aXJlKHApCQkJCQkJXAorKHsJCQkJCQkJ CQlcCisJdW5pb24geyB0eXBlb2YoKnApIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7CQkJXAor CXN3aXRjaCAoc2l6ZW9mKCpwKSkgewkJCQkJCVwKKwljYXNlIDE6CQkJCQkJCQlcCisJCWFzbSB2 b2xhdGlsZSAoImxkYXJiICV3MCwgJTEiCQkJCVwKKwkJCTogIj1yIiAoKih1OCAqKV9fdS5fX2Mp CQkJCVwKKwkJCTogIlEiICgqcCkgOiAibWVtb3J5Iik7CQkJCVwKKwkJYnJlYWs7CQkJCQkJCVwK KwljYXNlIDI6CQkJCQkJCQlcCisJCWFzbSB2b2xhdGlsZSAoImxkYXJoICV3MCwgJTEiCQkJCVwK KwkJCTogIj1yIiAoKih1MTYgKilfX3UuX19jKQkJCVwKKwkJCTogIlEiICgqcCkgOiAibWVtb3J5 Iik7CQkJCVwKKwkJYnJlYWs7CQkJCQkJCVwKKwljYXNlIDQ6CQkJCQkJCQlcCisJCWFzbSB2b2xh dGlsZSAoImxkYXIgJXcwLCAlMSIJCQkJXAorCQkJOiAiPXIiICgqKHUzMiAqKV9fdS5fX2MpCQkJ XAorCQkJOiAiUSIgKCpwKSA6ICJtZW1vcnkiKTsJCQkJXAorCQlicmVhazsJCQkJCQkJXAorCWNh c2UgODoJCQkJCQkJCVwKKwkJYXNtIHZvbGF0aWxlICgibGRhciAlMCwgJTEiCQkJCVwKKwkJCTog Ij1yIiAoKih1NjQgKilfX3UuX19jKQkJCVwKKwkJCTogIlEiICgqcCkgOiAibWVtb3J5Iik7CQkJ CVwKKwkJYnJlYWs7CQkJCQkJCVwKKwl9CQkJCQkJCQlcCisJX191Ll9fdmFsOwkJCQkJCQlcCit9 KQorCiAjZW5kaWYgLyogX0FTTUFSTTY0X0JBUlJJRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2FybS9i YXJyaWVyLWxpdG11cy10ZXN0LmMgYi9hcm0vYmFycmllci1saXRtdXMtdGVzdC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MGY2ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9h cm0vYmFycmllci1saXRtdXMtdGVzdC5jCkBAIC0wLDAgKzEsNDUwIEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIEFSTSBCYXJyaWVyIExpdG11 cyBUZXN0cworICoKKyAqIFRoaXMgdGVzdCBwcm92aWRlcyBhIGZyYW1ld29yayBmb3IgdGVzdGlu ZyBiYXJyaWVyIGNvbmRpdGlvbnMgb24KKyAqIHRoZSBwcm9jZXNzb3IuIEl0J3Mgc2ltcGxlciB0 aGFuIHRoZSBtb3JlIGludm9sdmVkIGJhcnJpZXIgdGVzdGluZworICogZnJhbWV3b3JrcyBhcyB3 ZSBhcmUgbG9va2luZyBmb3Igc2ltcGxlIGZhaWx1cmVzIG9mIFFFTVUncyBUQ0cgbm90CisgKiB3 ZWlyZCBlZGdlIGNhc2VzIHRoZSBzaWxpY29uIGdldHMgd3JvbmcuCisgKi8KKworI2luY2x1ZGUg PGxpYmNmbGF0Lmg+CisjaW5jbHVkZSA8YXNtL3NtcC5oPgorI2luY2x1ZGUgPGFzbS9jcHVtYXNr Lmg+CisjaW5jbHVkZSA8YXNtL2JhcnJpZXIuaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisKKyNk ZWZpbmUgTUFYX0NQVVMgOAorCisvKiBBcnJheSBzaXplIGFuZCBhY2Nlc3MgY29udHJvbHMgKi8K K3N0YXRpYyBpbnQgYXJyYXlfc2l6ZSA9IDEwMDAwMDsKK3N0YXRpYyBpbnQgd2FpdF9pZl9haGVh ZDsKKworc3RhdGljIGNwdW1hc2tfdCBjcHVfbWFzazsKKworLyoKKyAqIFRoZXNlIHRlc3RfYXJy YXlfKiBzdHJ1Y3R1cmVzIGFyZSBhIGNvbnRpZ3VvdXMgYXJyYXkgbW9kaWZpZWQgYnkgdHdvIG9y IG1vcmUKKyAqIGNvbXBldGluZyBDUFVzLiBUaGUgcGFkZGluZyBpcyB0byBlbnN1cmUgdGhlIHZh cmlhYmxlcyBkbyBub3Qgc2hhcmUKKyAqIGNhY2hlIGxpbmVzLgorICoKKyAqIEFsbCBzdHJ1Y3R1 cmVzIHN0YXJ0IHplcm9lZC4KKyAqLworCit0eXBlZGVmIHN0cnVjdCB0ZXN0X2FycmF5IHsKKwl2 b2xhdGlsZSB1bnNpZ25lZCBpbnQgeDsKKwl1aW50OF90IGR1bW15WzY0XTsKKwl2b2xhdGlsZSB1 bnNpZ25lZCBpbnQgeTsKKwl1aW50OF90IGR1bW15Mls2NF07CisJdm9sYXRpbGUgdW5zaWduZWQg aW50IHJbTUFYX0NQVVNdOworfSB0ZXN0X2FycmF5OworCit2b2xhdGlsZSB0ZXN0X2FycmF5ICph cnJheTsKKworLyogVGVzdCBkZWZpbml0aW9uIHN0cnVjdHVyZQorICoKKyAqIFRoZSBmaXJzdCBm dW5jdGlvbiB3aWxsIGFsd2F5cyBydW4gb24gdGhlIHByaW1hcnkgQ1BVLCBpdCBpcworICogdXN1 YWxseSB0aGUgb25lIHRoYXQgd2lsbCBkZXRlY3QgYW55IHdlaXJkbmVzcyBhbmQgdHJpZ2dlciB0 aGUKKyAqIGZhaWx1cmUgb2YgdGhlIHRlc3QuCisgKi8KKwordHlwZWRlZiB2b2lkICgqdGVzdF9m bikodm9pZCk7CisKK3R5cGVkZWYgc3RydWN0IHsKKwljb25zdCBjaGFyICp0ZXN0X25hbWU7CisJ Ym9vbCAgc2hvdWxkX3Bhc3M7CisJdGVzdF9mbiBtYWluX2ZuOworCXRlc3RfZm4gc2Vjb25kYXJ5 X2Zuc1tNQVhfQ1BVUy0xXTsKK30gdGVzdF9kZXNjcl90OworCisvKiBMaXRtdXMgdGVzdHMgKi8K Kworc3RhdGljIHVuc2lnbmVkIGxvbmcgc3luY19zdGFydCh2b2lkKQoreworCWNvbnN0IHVuc2ln bmVkIGxvbmcgZ2F0ZV9tYXNrID0gfjB4M2ZmZmY7CisJdW5zaWduZWQgbG9uZyBnYXRlLCBub3c7 CisKKwlnYXRlID0gZ2V0X2NudHZjdCgpICYgZ2F0ZV9tYXNrOworCWRvIHsKKwkJbm93ID0gZ2V0 X2NudHZjdCgpOworCX0gd2hpbGUgKChub3cgJiBnYXRlX21hc2spID09IGdhdGUpOworCisJcmV0 dXJuIG5vdzsKK30KKworLyogU2ltcGxlIE1lc3NhZ2UgUGFzc2luZworICoKKyAqIHggaXMgdGhl IG1lc3NhZ2UgZGF0YQorICogeSBpcyB0aGUgZmxhZyB0byBpbmRpY2F0ZSB0aGUgZGF0YSBpcyBy ZWFkeQorICoKKyAqIFJlYWRpbmcgeCA9PSAwIHdoZW4geSA9PSAxIGlzIGEgZmFpbHVyZS4KKyAq LworCitzdGF0aWMgdm9pZCBtZXNzYWdlX3Bhc3Npbmdfd3JpdGUodm9pZCkKK3sKKwlpbnQgaTsK KworCXN5bmNfc3RhcnQoKTsKKwlmb3IgKGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgaSsrKSB7CisJ CXZvbGF0aWxlIHRlc3RfYXJyYXkgKmVudHJ5ID0gJmFycmF5W2ldOworCisJCWVudHJ5LT54ID0g MTsKKwkJZW50cnktPnkgPSAxOworCX0KKworCWhhbHQoKTsKK30KKworc3RhdGljIHZvaWQgbWVz c2FnZV9wYXNzaW5nX3JlYWQodm9pZCkKK3sKKwlpbnQgaTsKKwlpbnQgZXJyb3JzID0gMCwgcmVh ZHkgPSAwOworCisJc3luY19zdGFydCgpOworCWZvciAoaSA9IDA7IGkgPCBhcnJheV9zaXplOyBp KyspIHsKKwkJdm9sYXRpbGUgdGVzdF9hcnJheSAqZW50cnkgPSAmYXJyYXlbaV07CisJCXVuc2ln bmVkIGludCB4LCB5OworCisJCXkgPSBlbnRyeS0+eTsKKwkJeCA9IGVudHJ5LT54OworCisJCWlm ICh5ICYmICF4KQorCQkJZXJyb3JzKys7CisJCXJlYWR5ICs9IHk7CisJfQorCisJLyoKKwkgKiBX ZSBleHBlY3QgdGhpcyB0byBmYWlsIGJ1dCB3aXRoIFNUTyBiYWNrZW5kcyB5b3Ugb2Z0ZW4gZ2V0 CisJICogd2F5IHdpdGggaXQuIEZ1ZGdlIHhmYWlsIGlmIHdlIGRpZCBhY3R1YWxseSBwYXNzLgor CSAqLworCXJlcG9ydF94ZmFpbChlcnJvcnMgPT0gMCA/IGZhbHNlIDogdHJ1ZSwgZXJyb3JzID09 IDAsCisJCSAgICAgIm1wOiAlZCBlcnJvcnMsICVkIHJlYWR5IiwgZXJyb3JzLCByZWFkeSk7Cit9 CisKKy8qIFNpbXBsZSBNZXNzYWdlIFBhc3Npbmcgd2l0aCBiYXJyaWVycyAqLworc3RhdGljIHZv aWQgbWVzc2FnZV9wYXNzaW5nX3dyaXRlX2JhcnJpZXIodm9pZCkKK3sKKwlpbnQgaTsKKworCXN5 bmNfc3RhcnQoKTsKKwlmb3IgKGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgaSsrKSB7CisJCXZvbGF0 aWxlIHRlc3RfYXJyYXkgKmVudHJ5ID0gJmFycmF5W2ldOworCisJCWVudHJ5LT54ID0gMTsKKwkJ c21wX3dtYigpOworCQllbnRyeS0+eSA9IDE7CisJfQorCisJaGFsdCgpOworfQorCitzdGF0aWMg dm9pZCBtZXNzYWdlX3Bhc3NpbmdfcmVhZF9iYXJyaWVyKHZvaWQpCit7CisJaW50IGk7CisJaW50 IGVycm9ycyA9IDAsIHJlYWR5ID0gMCwgbm90X3JlYWR5ID0gMDsKKworCXN5bmNfc3RhcnQoKTsK Kwlmb3IgKGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgaSsrKSB7CisJCXZvbGF0aWxlIHRlc3RfYXJy YXkgKmVudHJ5ID0gJmFycmF5W2ldOworCQl1bnNpZ25lZCBpbnQgeCwgeTsKKworCQl5ID0gZW50 cnktPnk7CisJCXNtcF9ybWIoKTsKKwkJeCA9IGVudHJ5LT54OworCisJCWlmICh5ICYmICF4KQor CQkJZXJyb3JzKys7CisKKwkJaWYgKHkpIHsKKwkJCXJlYWR5Kys7CisJCX0gZWxzZSB7CisJCQlu b3RfcmVhZHkrKzsKKworCQkJaWYgKG5vdF9yZWFkeSA+IDIpIHsKKwkJCQllbnRyeSA9ICZhcnJh eVtpKzFdOworCQkJCWRvIHsKKwkJCQkJbm90X3JlYWR5ID0gMDsKKwkJCQl9IHdoaWxlICh3YWl0 X2lmX2FoZWFkICYmICFlbnRyeS0+eSk7CisJCQl9CisJCX0KKwl9CisKKwlyZXBvcnQoZXJyb3Jz ID09IDAsICJtcCBiYXJyaWVyOiAlZCBlcnJvcnMsICVkIHJlYWR5IiwgZXJyb3JzLCByZWFkeSk7 Cit9CisKKy8qIFNpbXBsZSBNZXNzYWdlIFBhc3Npbmcgd2l0aCBBY3F1aXJlL1JlbGVhc2UgKi8K K3N0YXRpYyB2b2lkIG1lc3NhZ2VfcGFzc2luZ193cml0ZV9yZWxlYXNlKHZvaWQpCit7CisJaW50 IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgaSsrKSB7CisJCXZvbGF0aWxlIHRl c3RfYXJyYXkgKmVudHJ5ID0gJmFycmF5W2ldOworCisJCWVudHJ5LT54ID0gMTsKKwkJc21wX3N0 b3JlX3JlbGVhc2UoJmVudHJ5LT55LCAxKTsKKwl9CisKKwloYWx0KCk7Cit9CisKK3N0YXRpYyB2 b2lkIG1lc3NhZ2VfcGFzc2luZ19yZWFkX2FjcXVpcmUodm9pZCkKK3sKKwlpbnQgaTsKKwlpbnQg ZXJyb3JzID0gMCwgcmVhZHkgPSAwLCBub3RfcmVhZHkgPSAwOworCisJZm9yIChpID0gMDsgaSA8 IGFycmF5X3NpemU7IGkrKykgeworCQl2b2xhdGlsZSB0ZXN0X2FycmF5ICplbnRyeSA9ICZhcnJh eVtpXTsKKwkJdW5zaWduZWQgaW50IHgsIHk7CisKKwkJeSA9IHNtcF9sb2FkX2FjcXVpcmUoJmVu dHJ5LT55KTsKKwkJeCA9IGVudHJ5LT54OworCisJCWlmICh5ICYmICF4KQorCQkJZXJyb3JzKys7 CisKKwkJaWYgKHkpIHsKKwkJCXJlYWR5Kys7CisJCX0gZWxzZSB7CisJCQlub3RfcmVhZHkrKzsK KworCQkJaWYgKG5vdF9yZWFkeSA+IDIpIHsKKwkJCQllbnRyeSA9ICZhcnJheVtpKzFdOworCQkJ CWRvIHsKKwkJCQkJbm90X3JlYWR5ID0gMDsKKwkJCQl9IHdoaWxlICh3YWl0X2lmX2FoZWFkICYm ICFlbnRyeS0+eSk7CisJCQl9CisJCX0KKwl9CisKKwlyZXBvcnQoZXJyb3JzID09IDAsICJtcCBh Y3FyZWw6ICVkIGVycm9ycywgJWQgcmVhZHkiLCBlcnJvcnMsIHJlYWR5KTsKK30KKworLyoKKyAq IFN0b3JlIGFmdGVyIGxvYWQKKyAqCisgKiBUMTogd3JpdGUgMSB0byB4LCBsb2FkIHIgZnJvbSB5 CisgKiBUMjogd3JpdGUgMSB0byB5LCBsb2FkIHIgZnJvbSB4CisgKgorICogV2l0aG91dCBtZW1v cnkgZmVuY2UgclswXSAmJiByWzFdID09IDAKKyAqIFdpdGggbWVtb3J5IGZlbmNlIGJvdGggPT0g MCBzaG91bGQgYmUgaW1wb3NzaWJsZQorICovCisKK3N0YXRpYyB2b2lkIGNoZWNrX3N0b3JlX2Fu ZF9sb2FkX3Jlc3VsdHMoY29uc3QgY2hhciAqbmFtZSwgaW50IHRocmVhZCwKKwkJCQkJIGJvb2wg eGZhaWwsIHVuc2lnbmVkIGxvbmcgc3RhcnQsCisJCQkJCSB1bnNpZ25lZCBsb25nIGVuZCkKK3sK KwlpbnQgaTsKKwlpbnQgbmVpdGhlciA9IDA7CisJaW50IG9ubHlfZmlyc3QgPSAwOworCWludCBv bmx5X3NlY29uZCA9IDA7CisJaW50IGJvdGggPSAwOworCisJZm9yICggaT0gMDsgaSA8IGFycmF5 X3NpemU7IGkrKykgeworCQl2b2xhdGlsZSB0ZXN0X2FycmF5ICplbnRyeSA9ICZhcnJheVtpXTsK KworCQlpZiAoZW50cnktPnJbMF0gPT0gMCAmJgorCQkgICAgZW50cnktPnJbMV0gPT0gMCkKKwkJ CW5laXRoZXIrKzsKKwkJZWxzZSBpZiAoZW50cnktPnJbMF0gJiYKKwkJCWVudHJ5LT5yWzFdKQor CQkJYm90aCsrOworCQllbHNlIGlmIChlbnRyeS0+clswXSkKKwkJCW9ubHlfZmlyc3QrKzsKKwkJ ZWxzZQorCQkJb25seV9zZWNvbmQrKzsKKwl9CisKKwlwcmludGYoIlQlZDogJTA4bHgtPiUwOGx4 IG5laXRoZXI9JWQgb25seV90MT0lZCBvbmx5X3QyPSVkIGJvdGg9JWRcbiIsIHRocmVhZCwKKwkJ c3RhcnQsIGVuZCwgbmVpdGhlciwgb25seV9maXJzdCwgb25seV9zZWNvbmQsIGJvdGgpOworCisJ aWYgKHRocmVhZCA9PSAxKQorCQlyZXBvcnRfeGZhaWwoeGZhaWwsIG5laXRoZXI9PTAsICIlczog ZXJyb3JzPSVkIiwgbmFtZSwgbmVpdGhlcik7CisKK30KKworLyoKKyAqIFRoaXMgYXR0ZW1wdHMg dG8gc3luY2hyb25pc2UgdGhlIHN0YXJ0IG9mIGJvdGggdGhyZWFkcyB0byByb3VnaGx5CisgKiB0 aGUgc2FtZSB0aW1lLiBPbiByZWFsIGhhcmR3YXJlIHRoZXJlIGlzIGEgbGl0dGxlIGxhdGVuY3kg YXMgdGhlCisgKiBzZWNvbmRhcnkgdkNQVXMgYXJlIHBvd2VyZWQgdXAgaG93ZXZlciB0aGlzIGVm ZmVjdCBpdCBtdWNoIG1vcmUKKyAqIGV4YWdnZXJhdGVkIG9uIGEgVENHIGhvc3QuCisgKgorICog QnVzeSB3YWl0cyB1bnRpbCB0aGUgd2UgcGFzcyBhIGZ1dHVyZSBwb2ludCBpbiB0aW1lLCByZXR1 cm5zIGZpbmFsCisgKiBzdGFydCB0aW1lLgorICovCisKK3N0YXRpYyB2b2lkIHN0b3JlX2FuZF9s b2FkXzEodm9pZCkKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisKKwlz dGFydCA9IHN5bmNfc3RhcnQoKTsKKwlmb3IgKGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgaSsrKSB7 CisJCXZvbGF0aWxlIHRlc3RfYXJyYXkgKmVudHJ5ID0gJmFycmF5W2ldOworCQl1bnNpZ25lZCBp bnQgcjsKKworCQllbnRyeS0+eCA9IDE7CisJCXIgPSBlbnRyeS0+eTsKKwkJZW50cnktPnJbMF0g PSByOworCX0KKwllbmQgPSBnZXRfY250dmN0KCk7CisKKwlzbXBfbWIoKTsKKworCXdoaWxlICgh Y3B1bWFza190ZXN0X2NwdSgxLCAmY3B1X21hc2spKQorCQljcHVfcmVsYXgoKTsKKworCWNoZWNr X3N0b3JlX2FuZF9sb2FkX3Jlc3VsdHMoInNhbCIsIDEsIHRydWUsIHN0YXJ0LCBlbmQpOworfQor CitzdGF0aWMgdm9pZCBzdG9yZV9hbmRfbG9hZF8yKHZvaWQpCit7CisJaW50IGk7CisJdW5zaWdu ZWQgbG9uZyBzdGFydCwgZW5kOworCisJc3RhcnQgPSBzeW5jX3N0YXJ0KCk7CisJZm9yIChpID0g MDsgaSA8IGFycmF5X3NpemU7IGkrKykgeworCQl2b2xhdGlsZSB0ZXN0X2FycmF5ICplbnRyeSA9 ICZhcnJheVtpXTsKKwkJdW5zaWduZWQgaW50IHI7CisKKwkJZW50cnktPnkgPSAxOworCQlyID0g ZW50cnktPng7CisJCWVudHJ5LT5yWzFdID0gcjsKKwl9CisJZW5kID0gZ2V0X2NudHZjdCgpOwor CisJY2hlY2tfc3RvcmVfYW5kX2xvYWRfcmVzdWx0cygic2FsIiwgMiwgdHJ1ZSwgc3RhcnQsIGVu ZCk7CisKKwljcHVtYXNrX3NldF9jcHUoMSwgJmNwdV9tYXNrKTsKKworCWhhbHQoKTsKK30KKwor c3RhdGljIHZvaWQgc3RvcmVfYW5kX2xvYWRfYmFycmllcl8xKHZvaWQpCit7CisJaW50IGk7CisJ dW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOworCisJc3RhcnQgPSBzeW5jX3N0YXJ0KCk7CisJZm9y IChpID0gMDsgaSA8IGFycmF5X3NpemU7IGkrKykgeworCQl2b2xhdGlsZSB0ZXN0X2FycmF5ICpl bnRyeSA9ICZhcnJheVtpXTsKKwkJdW5zaWduZWQgaW50IHI7CisKKwkJZW50cnktPnggPSAxOwor CQlzbXBfbWIoKTsKKwkJciA9IGVudHJ5LT55OworCQllbnRyeS0+clswXSA9IHI7CisJfQorCWVu ZCA9IGdldF9jbnR2Y3QoKTsKKworCXNtcF9tYigpOworCisJd2hpbGUgKCFjcHVtYXNrX3Rlc3Rf Y3B1KDEsICZjcHVfbWFzaykpCisJCWNwdV9yZWxheCgpOworCisJY2hlY2tfc3RvcmVfYW5kX2xv YWRfcmVzdWx0cygic2FsX2JhcnJpZXIiLCAxLCBmYWxzZSwgc3RhcnQsIGVuZCk7Cit9CisKK3N0 YXRpYyB2b2lkIHN0b3JlX2FuZF9sb2FkX2JhcnJpZXJfMih2b2lkKQoreworCWludCBpOworCXVu c2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKKworCXN0YXJ0ID0gc3luY19zdGFydCgpOworCWZvciAo aSA9IDA7IGkgPCBhcnJheV9zaXplOyBpKyspIHsKKwkJdm9sYXRpbGUgdGVzdF9hcnJheSAqZW50 cnkgPSAmYXJyYXlbaV07CisJCXVuc2lnbmVkIGludCByOworCisJCWVudHJ5LT55ID0gMTsKKwkJ c21wX21iKCk7CisJCXIgPSBlbnRyeS0+eDsKKwkJZW50cnktPnJbMV0gPSByOworCX0KKwllbmQg PSBnZXRfY250dmN0KCk7CisKKwljaGVja19zdG9yZV9hbmRfbG9hZF9yZXN1bHRzKCJzYWxfYmFy cmllciIsIDIsIGZhbHNlLCBzdGFydCwgZW5kKTsKKworCWNwdW1hc2tfc2V0X2NwdSgxLCAmY3B1 X21hc2spOworCisJaGFsdCgpOworfQorCisKKy8qIFRlc3QgYXJyYXkgKi8KK3N0YXRpYyB0ZXN0 X2Rlc2NyX3QgdGVzdHNbXSA9IHsKKworCXsgIm1wIiwgICAgICAgICBmYWxzZSwKKwkgIG1lc3Nh Z2VfcGFzc2luZ19yZWFkLAorCSAgeyBtZXNzYWdlX3Bhc3Npbmdfd3JpdGUgfQorCX0sCisKKwl7 ICJtcF9iYXJyaWVyIiwgdHJ1ZSwKKwkgIG1lc3NhZ2VfcGFzc2luZ19yZWFkX2JhcnJpZXIsCisJ ICB7IG1lc3NhZ2VfcGFzc2luZ193cml0ZV9iYXJyaWVyIH0KKwl9LAorCisJeyAibXBfYWNxcmVs IiwgdHJ1ZSwKKwkgIG1lc3NhZ2VfcGFzc2luZ19yZWFkX2FjcXVpcmUsCisJICB7IG1lc3NhZ2Vf cGFzc2luZ193cml0ZV9yZWxlYXNlIH0KKwl9LAorCisJeyAic2FsIiwgICAgICAgZmFsc2UsCisJ ICBzdG9yZV9hbmRfbG9hZF8xLAorCSAgeyBzdG9yZV9hbmRfbG9hZF8yIH0KKwl9LAorCisJeyAi c2FsX2JhcnJpZXIiLCB0cnVlLAorCSAgc3RvcmVfYW5kX2xvYWRfYmFycmllcl8xLAorCSAgeyBz dG9yZV9hbmRfbG9hZF9iYXJyaWVyXzIgfQorCX0sCit9OworCisKK3N0YXRpYyB2b2lkIHNldHVw X2FuZF9ydW5fbGl0bXVzKHRlc3RfZGVzY3JfdCAqdGVzdCkKK3sKKwlhcnJheSA9IGNhbGxvYyhh cnJheV9zaXplLCBzaXplb2YodGVzdF9hcnJheSkpOworCisJaWYgKGFycmF5KSB7CisJCWludCBp ID0gMDsKKworCQlwcmludGYoIkFsbG9jYXRlZCB0ZXN0IGFycmF5IEAgJXBcbiIsIGFycmF5KTsK KworCQl3aGlsZSAodGVzdC0+c2Vjb25kYXJ5X2Zuc1tpXSkgeworCQkJc21wX2Jvb3Rfc2Vjb25k YXJ5KGkrMSwgdGVzdC0+c2Vjb25kYXJ5X2Zuc1tpXSk7CisJCQlpKys7CisJCX0KKworCQl0ZXN0 LT5tYWluX2ZuKCk7CisJfSBlbHNlCisJCXJlcG9ydChmYWxzZSwgIiVzOiBmYWlsZWQgdG8gYWxs b2NhdGUgbWVtb3J5IiwgdGVzdC0+dGVzdF9uYW1lKTsKK30KKworaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQoreworCWludCBpOworCXVuc2lnbmVkIGludCBqOworCXRlc3RfZGVzY3Jf dCAqdGVzdCA9IE5VTEw7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CisJCWNoYXIg KmFyZyA9IGFyZ3ZbaV07CisKKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUodGVzdHMpOyBq KyspIHsKKwkJCWlmIChzdHJjbXAoYXJnLCB0ZXN0c1tqXS50ZXN0X25hbWUpID09IDApCisJCQkJ dGVzdCA9ICZ0ZXN0c1tqXTsKKwkJfQorCisJCS8qIFRlc3QgbW9kaWZpZXJzICovCisJCWlmIChz dHJzdHIoYXJnLCAiY291bnQ9IikgIT0gTlVMTCkgeworCQkJY2hhciAqcCA9IHN0cnN0cihhcmcs ICI9Iik7CisKKwkJCWFycmF5X3NpemUgPSBhdG9sKHArMSk7CisJCX0gZWxzZSBpZiAoc3RyY21w KGFyZywgIndhaXQiKSA9PSAwKSB7CisJCQl3YWl0X2lmX2FoZWFkID0gMTsKKwkJfQorCX0KKwor CWlmICh0ZXN0KQorCQlzZXR1cF9hbmRfcnVuX2xpdG11cyh0ZXN0KTsKKwllbHNlCisJCXJlcG9y dChmYWxzZSwgIlVua25vd24gdGVzdCIpOworCisJcmV0dXJuIHJlcG9ydF9zdW1tYXJ5KCk7Cit9 CmRpZmYgLS1naXQgYS9hcm0vbXR0Y2d0ZXN0cy5jZmcgYi9hcm0vbXR0Y2d0ZXN0cy5jZmcKaW5k ZXggNDZmY2I1Ny4uMmI0Njc1NiAxMDA2NDQKLS0tIGEvYXJtL210dGNndGVzdHMuY2ZnCisrKyBi L2FybS9tdHRjZ3Rlc3RzLmNmZwpAQCAtNTcsMyArNTcsMzYgQEAgZmlsZSA9IGxvY2tpbmctdGVz dC5mbGF0CiBzbXAgPSAkKCgkTUFYX1NNUD40PzQ6JE1BWF9TTVApKQogZXh0cmFfcGFyYW1zID0g LWFwcGVuZCAnZXhjbCcKIGdyb3VwcyA9IGxvY2tpbmcKKworIyBCYXJyaWVyIExpdG11cyB0ZXN0 cworW2JhcnJpZXItbGl0bXVzOjptcF0KK2ZpbGUgPSBiYXJyaWVyLWxpdG11cy10ZXN0LmZsYXQK K3NtcCA9IDIKK2V4dHJhX3BhcmFtcyA9IC1hcHBlbmQgJ21wJworZ3JvdXBzID0gYmFycmllcgor CitbYmFycmllci1saXRtdXM6Om1wLWJhcnJpZXJdCitmaWxlID0gYmFycmllci1saXRtdXMtdGVz dC5mbGF0CitzbXAgPSAyCitleHRyYV9wYXJhbXMgPSAtYXBwZW5kICdtcF9iYXJyaWVyJworZ3Jv dXBzID0gYmFycmllcgorCitbYmFycmllci1saXRtdXM6Om1wLWFjcXJlbF0KK2ZpbGUgPSBiYXJy aWVyLWxpdG11cy10ZXN0LmZsYXQKK3NtcCA9IDIKK2V4dHJhX3BhcmFtcyA9IC1hcHBlbmQgJ21w X2FjcXJlbCcKK2dyb3VwcyA9IGJhcnJpZXIKKworW2JhcnJpZXItbGl0bXVzOjpzYWxdCitmaWxl ID0gYmFycmllci1saXRtdXMtdGVzdC5mbGF0CitzbXAgPSAyCitleHRyYV9wYXJhbXMgPSAtYXBw ZW5kICdzYWwnCitncm91cHMgPSBiYXJyaWVyCithY2NlbCA9IHRjZworCitbYmFycmllci1saXRt dXM6OnNhbC1iYXJyaWVyXQorZmlsZSA9IGJhcnJpZXItbGl0bXVzLXRlc3QuZmxhdAorc21wID0g MgorZXh0cmFfcGFyYW1zID0gLWFwcGVuZCAnc2FsX2JhcnJpZXInCitncm91cHMgPSBiYXJyaWVy CisKLS0gCjIuMzAuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK