From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34AC2C352A3 for ; Tue, 11 Feb 2020 18:47:38 +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 0C4E4214DB for ; Tue, 11 Feb 2020 18:47:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="GOXDm1qh" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0C4E4214DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hBMw4SIJ4xtMR1TYSpku8Dec8eBWm2gi6WQLMujQlJs=; b=GOXDm1qhZxCUNl 9IYiUe2D4F3aUU9MLqF0Xt3TLxjNh4rwHv6UO7UH3qTESnD97IStz4gyl0rUjRgO56uMjuirmQt2K XN/tFU3wZ/imjULgDgkBoafJN8lzW72MzZJ5Cf2vyaZ30aJB/4wKv4Adnu369HExnOZ0hmlCQi7Yk I6QvHnyHLcS6hFQtM4eUKdEpcRQuwWJyfcEgEo6B/XWzC10nteJHbTSJCBU2js3PAn9JD79Vd7lLZ Jx3X3HayOPd8OP5PJRkcbS9yiqqwg4DQGfbDDkp/xCdg1hOXRVlFZ4VfM/vUM34wWDicS6gn4D1QH CizyL7Rsw7N+7rUy10ow==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1j1aZN-00063t-9u; Tue, 11 Feb 2020 18:47:37 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1j1aYT-00056x-Et for linux-arm-kernel@lists.infradead.org; Tue, 11 Feb 2020 18:46:44 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C66B01FB; Tue, 11 Feb 2020 10:46:40 -0800 (PST) Received: from e108754-lin.cambridge.arm.com (e108754-lin.cambridge.arm.com [10.1.198.52]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 975793F68F; Tue, 11 Feb 2020 10:46:38 -0800 (PST) From: Ionela Voinescu To: catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, maz@kernel.org, suzuki.poulose@arm.com, sudeep.holla@arm.com, lukasz.luba@arm.com, valentin.schneider@arm.com, rjw@rjwysocki.net, ionela.voinescu@arm.com Subject: [PATCH v3 6/7] arm64: use activity monitors for frequency invariance Date: Tue, 11 Feb 2020 18:45:41 +0000 Message-Id: <20200211184542.29585-7-ionela.voinescu@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200211184542.29585-1-ionela.voinescu@arm.com> References: <20200211184542.29585-1-ionela.voinescu@arm.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200211_104641_604047_90DAB824 X-CRM114-Status: GOOD ( 22.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-doc@vger.kernel.org, peterz@infradead.org, viresh.kumar@linaro.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, mingo@redhat.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIEZyZXF1ZW5jeSBJbnZhcmlhbmNlIEVuZ2luZSAoRklFKSBpcyBwcm92aWRpbmcgYSBmcmVx dWVuY3kKc2NhbGluZyBjb3JyZWN0aW9uIGZhY3RvciB0aGF0IGhlbHBzIGFjaGlldmUgbW9yZSBh Y2N1cmF0ZQpsb2FkLXRyYWNraW5nLgoKU28gZmFyLCBmb3IgYXJtIGFuZCBhcm02NCBwbGF0Zm9y bXMsIHRoaXMgc2NhbGUgZmFjdG9yIGhhcyBiZWVuCm9idGFpbmVkIGJhc2VkIG9uIHRoZSByYXRp byBiZXR3ZWVuIHRoZSBjdXJyZW50IGZyZXF1ZW5jeSBhbmQgdGhlCm1heGltdW0gc3VwcG9ydGVk IGZyZXF1ZW5jeSByZWNvcmRlZCBieSB0aGUgY3B1ZnJlcSBwb2xpY3kuIFRoZQpzZXR0aW5nIG9m IHRoaXMgc2NhbGUgZmFjdG9yIGlzIHRyaWdnZXJlZCBmcm9tIGNwdWZyZXEgZHJpdmVycyBieQpj YWxsaW5nIGFyY2hfc2V0X2ZyZXFfc2NhbGUuIFRoZSBjdXJyZW50IGZyZXF1ZW5jeSB1c2VkIGlu IGNvbXB1dGF0aW9uCmlzIHRoZSBmcmVxdWVuY3kgcmVxdWVzdGVkIGJ5IGEgZ292ZXJub3IsIGJ1 dCBpdCBtYXkgbm90IGJlIHRoZQpmcmVxdWVuY3kgdGhhdCB3YXMgaW1wbGVtZW50ZWQgYnkgdGhl IHBsYXRmb3JtLgoKVGhpcyBjb3JyZWN0aW9uIGZhY3RvciBjYW4gYWxzbyBiZSBvYnRhaW5lZCB1 c2luZyBhIGNvcmUgY291bnRlciBhbmQgYQpjb25zdGFudCBjb3VudGVyIHRvIGdldCBpbmZvcm1h dGlvbiBvbiB0aGUgcGVyZm9ybWFuY2UgKGZyZXF1ZW5jeSBiYXNlZApvbmx5KSBvYnRhaW5lZCBp biBhIHBlcmlvZCBvZiB0aW1lLiBUaGlzIHdpbGwgbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QKdGhl IGFjdHVhbCBjdXJyZW50IGZyZXF1ZW5jeSBvZiB0aGUgQ1BVLCBjb21wYXJlZCB3aXRoIHRoZSBh bHRlcm5hdGl2ZQppbXBsZW1lbnRhdGlvbiB0aGF0IHJlZmxlY3RzIHRoZSByZXF1ZXN0IG9mIGEg cGVyZm9ybWFuY2UgbGV2ZWwgZnJvbQp0aGUgT1MuCgpUaGVyZWZvcmUsIGltcGxlbWVudCBhcmNo X3NjYWxlX2ZyZXFfdGljayB0byB1c2UgYWN0aXZpdHkgbW9uaXRvcnMsIGlmCnByZXNlbnQsIGZv ciB0aGUgY29tcHV0YXRpb24gb2YgdGhlIGZyZXF1ZW5jeSBzY2FsZSBmYWN0b3IuCgpUaGUgdXNl IG9mIEFNVSBjb3VudGVycyBkZXBlbmRzIG9uOgogLSBDT05GSUdfQVJNNjRfQU1VX0VYVE4gLSBk ZXBlbnRzIG9uIHRoZSBBTVUgZXh0ZW5zaW9uIGJlaW5nIHByZXNlbnQKIC0gKG9wdGlvbmFsKSBD T05GSUdfQ1BVX0ZSRVEgLSB0aGUgY3VycmVudCBmcmVxdWVuY3kgb2J0YWluZWQgdXNpbmcKICAg Y291bnRlciBpbmZvcm1hdGlvbiBpcyBkaXZpZGVkIGJ5IHRoZSBtYXhpbXVtIGZyZXF1ZW5jeSBv YnRhaW5lZCBmcm9tCiAgIHRoZSBjcHVmcmVxIHBvbGljeS4gQnV0IHRoZSB1c2Ugb2YgY3B1ZnJl cSBwb2xpY3kgbWF4aW11bSBmcmVxdWVuY3kKICAgaXMgd2VhayBhbmQgY3B1X2dldF9tYXhfZnJl cSBjYW4gYmUgcmVkZWZpbmVkIHRvIHByb3ZpZGUgdGhlIGRhdGEKICAgc29tZSBvdGhlciB3YXku CgpXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIGEgY29tYmluYXRpb24gb2YgQ1BVcyBpbiB0 aGUgc3lzdGVtIHdpdGgKYW5kIHdpdGhvdXQgc3VwcG9ydCBmb3IgYWN0aXZpdHkgbW9uaXRvcnMs IHRoZSB1c2Ugb2YgY291bnRlcnMgZm9yCmZyZXF1ZW5jeSBpbnZhcmlhbmNlIGlzIG9ubHkgZW5h YmxlZCBmb3IgYSBDUFUgaWYgYWxsIHJlbGF0ZWQgQ1BVcwooQ1BVcyBpbiB0aGUgc2FtZSBmcmVx dWVuY3kgZG9tYWluKSBzdXBwb3J0IGFuZCBoYXZlIGVuYWJsZWQgdGhlIGNvcmUKYW5kIGNvbnN0 YW50IGFjdGl2aXR5IG1vbml0b3IgY291bnRlcnMuIEluIHRoaXMgd2F5LCB0aGVyZSBpcyBhIGNs ZWFyCnNlcGFyYXRpb24gYmV0d2VlbiB0aGUgcG9saWNpZXMgZm9yIHdoaWNoIGFyY2hfc2V0X2Zy ZXFfc2NhbGUgKGNwdWZyZXEKYmFzZWQgRklFKSBpcyB1c2VkLCBhbmQgdGhlIHBvbGljaWVzIGZv ciB3aGljaCBhcmNoX3NjYWxlX2ZyZXFfdGljawooY291bnRlciBiYXNlZCBGSUUpIGlzIHVzZWQg dG8gc2V0IHRoZSBmcmVxdWVuY3kgc2NhbGUgZmFjdG9yLiBGb3IKdGhpcyBwdXJwb3NlLCBhIGxh dGVfaW5pdGNhbGxfc3luYyBpcyByZWdpc3RlcmVkIHRvIHRyaWdnZXIgdmFsaWRhdGlvbgp3b3Jr IGZvciBwb2xpY2llcyB0aGF0IHdpbGwgZW5hYmxlIG9yIGRpc2FibGUgdGhlIHVzZSBvZiBBTVUg Y291bnRlcnMKZm9yIGZyZXF1ZW5jeSBpbnZhcmlhbmNlLiBJZiBDT05GSUdfQ1BVX0ZSRVEgaXMg bm90IGRlZmluZWQsIHRoZSB1c2UKb2YgY291bnRlcnMgaXMgZW5hYmxlZCBvbiBhbGwgQ1BVcyBv bmx5IGlmIGFsbCBwb3NzaWJsZSBDUFVzIGNvcnJlY3RseQpzdXBwb3J0IHRoZSBuZWNlc3Nhcnkg Y291bnRlcnMuCgpTaWduZWQtb2ZmLWJ5OiBJb25lbGEgVm9pbmVzY3UgPGlvbmVsYS52b2luZXNj dUBhcm0uY29tPgpDYzogQ2F0YWxpbiBNYXJpbmFzIDxjYXRhbGluLm1hcmluYXNAYXJtLmNvbT4K Q2M6IFdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+CkNjOiBTdWRlZXAgSG9sbGEgPHN1ZGVl cC5ob2xsYUBhcm0uY29tPgotLS0KIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCB8 ICAxNiArKysKIGFyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYyAgICB8ICAgNCArCiBhcmNo L2FybTY0L2tlcm5lbC90b3BvbG9neS5jICAgICAgfCAxODUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5jICAgICAgfCAgIDggKysKIGlu Y2x1ZGUvbGludXgvdG9wb2xvZ3kuaCAgICAgICAgICB8ICAgNyArKwogNSBmaWxlcyBjaGFuZ2Vk LCAyMjAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v dG9wb2xvZ3kuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaAppbmRleCBhNGQ5 NDVkYjk1YTIuLmQ5MTBkNDYzY2Y3NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS90b3BvbG9neS5oCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaApAQCAt MTYsNiArMTYsMjIgQEAgaW50IHBjaWJ1c190b19ub2RlKHN0cnVjdCBwY2lfYnVzICpidXMpOwog CiAjaW5jbHVkZSA8bGludXgvYXJjaF90b3BvbG9neS5oPgogCisjaWZkZWYgQ09ORklHX0FSTTY0 X0FNVV9FWFROCitleHRlcm4gdW5zaWduZWQgaW50IGNwdV9nZXRfbWF4X2ZyZXEodW5zaWduZWQg aW50IGNwdSk7CisvKgorICogUmVwbGFjZSBkZWZhdWx0IGZ1bmN0aW9uIHRoYXQgc2lnbmFscyB1 c2Ugb2YgY291bnRlcnMKKyAqIGZvciBmcmVxdWVuY3kgaW52YXJpYW5jZSBmb3IgZ2l2ZW4gQ1BV cy4KKyAqLworYm9vbCB0b3BvbG9neV9jcHVfZnJlcV9jb3VudGVycyhzdHJ1Y3QgY3B1bWFzayAq Y3B1cyk7CisjZGVmaW5lIGFyY2hfY3B1X2ZyZXFfY291bnRlcnMgdG9wb2xvZ3lfY3B1X2ZyZXFf Y291bnRlcnMKKy8qCisgKiBSZXBsYWNlIHRhc2sgc2NoZWR1bGVyJ3MgZGVmYXVsdCBjb3VudGVy LWJhc2VkCisgKiBmcmVxdWVuY3ktaW52YXJpYW5jZSBzY2FsZSBmYWN0b3Igc2V0dGluZy4KKyAq Lwordm9pZCB0b3BvbG9neV9zY2FsZV9mcmVxX3RpY2sodm9pZCk7CisjZGVmaW5lIGFyY2hfc2Nh bGVfZnJlcV90aWNrIHRvcG9sb2d5X3NjYWxlX2ZyZXFfdGljaworI2VuZGlmIC8qIENPTkZJR19B Uk02NF9BTVVfRVhUTiAqLworCiAvKiBSZXBsYWNlIHRhc2sgc2NoZWR1bGVyJ3MgZGVmYXVsdCBm cmVxdWVuY3ktaW52YXJpYW50IGFjY291bnRpbmcgKi8KICNkZWZpbmUgYXJjaF9zY2FsZV9mcmVx X2NhcGFjaXR5IHRvcG9sb2d5X2dldF9mcmVxX3NjYWxlCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQva2VybmVsL2NwdWZlYXR1cmUuYyBiL2FyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYwpp bmRleCAwMjlhNDczYWQyNzMuLmE0NjIwYjI2OWI1NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9r ZXJuZWwvY3B1ZmVhdHVyZS5jCisrKyBiL2FyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYwpA QCAtMTE3MiwxMiArMTE3MiwxNiBAQCBib29sIGNwdV9oYXNfYW11X2ZlYXQoaW50IGNwdSkKIAly ZXR1cm4gZmFsc2U7CiB9CiAKKy8qIEluaXRpYWxpemUgdGhlIHVzZSBvZiBBTVUgY291bnRlcnMg Zm9yIGZyZXF1ZW5jeSBpbnZhcmlhbmNlICovCitleHRlcm4gdm9pZCBpbml0X2NwdV9mcmVxX2lu dmFyaWFuY2VfY291bnRlcnModm9pZCk7CisKIHN0YXRpYyB2b2lkIGNwdV9hbXVfZW5hYmxlKHN0 cnVjdCBhcm02NF9jcHVfY2FwYWJpbGl0aWVzIGNvbnN0ICpjYXApCiB7CiAJaWYgKGhhc19jcHVp ZF9mZWF0dXJlKGNhcCwgU0NPUEVfTE9DQUxfQ1BVKSkgewogCQlwcl9pbmZvKCJkZXRlY3RlZCBD UFUlZDogQWN0aXZpdHkgTW9uaXRvcnMgVW5pdCAoQU1VKVxuIiwKIAkJCXNtcF9wcm9jZXNzb3Jf aWQoKSk7CiAJCWNwdW1hc2tfc2V0X2NwdShzbXBfcHJvY2Vzc29yX2lkKCksIGFtdV9jcHVzKTsK KwkJaW5pdF9jcHVfZnJlcV9pbnZhcmlhbmNlX2NvdW50ZXJzKCk7CiAJfQogfQogCmRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2tlcm5lbC90b3BvbG9neS5jIGIvYXJjaC9hcm02NC9rZXJuZWwvdG9w b2xvZ3kuYwppbmRleCBmYTk1MjhkZmQwY2UuLjNmNmUzNzlmMDdiMyAxMDA2NDQKLS0tIGEvYXJj aC9hcm02NC9rZXJuZWwvdG9wb2xvZ3kuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC90b3BvbG9n eS5jCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8bGludXgvYWNwaS5oPgogI2luY2x1ZGUg PGxpbnV4L2FyY2hfdG9wb2xvZ3kuaD4KICNpbmNsdWRlIDxsaW51eC9jYWNoZWluZm8uaD4KKyNp bmNsdWRlIDxsaW51eC9jcHVmcmVxLmg+CiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1 ZGUgPGxpbnV4L3BlcmNwdS5oPgogCkBAIC0xMjAsNCArMTIxLDE4OCBAQCBpbnQgX19pbml0IHBh cnNlX2FjcGlfdG9wb2xvZ3kodm9pZCkKIH0KICNlbmRpZgogCisjaWZkZWYgQ09ORklHX0FSTTY0 X0FNVV9FWFROCiAKKyN1bmRlZiBwcl9mbXQKKyNkZWZpbmUgcHJfZm10KGZtdCkgIkFNVTogIiBm bXQKKworc3RhdGljIERFRklORV9QRVJfQ1BVX1JFQURfTU9TVExZKHVuc2lnbmVkIGxvbmcsIGFy Y2hfbWF4X2ZyZXFfc2NhbGUpOworc3RhdGljIERFRklORV9QRVJfQ1BVKHU2NCwgYXJjaF9jb25z dF9jeWNsZXNfcHJldik7CitzdGF0aWMgREVGSU5FX1BFUl9DUFUodTY0LCBhcmNoX2NvcmVfY3lj bGVzX3ByZXYpOworc3RhdGljIGNwdW1hc2tfdmFyX3QgYW11X2ZpZV9jcHVzOworCisvKiBPYnRh aW4gbWF4IGZyZXF1ZW5jeSAoaW4gS0h6KSBhcyByZXBvcnRlZCBieSBoYXJkd2FyZSAqLworX193 ZWFrIHVuc2lnbmVkIGludCBjcHVfZ2V0X21heF9mcmVxKHVuc2lnbmVkIGludCBjcHUpCit7CisJ cmV0dXJuIDA7Cit9CisKKyNpZmRlZiBDT05GSUdfQ1BVX0ZSRVEKKy8qIFJlcGxhY2UgbWF4IGZy ZXF1ZW5jeSBnZXR0ZXIgd2l0aCBjcHVmcmVxIGJhc2VkIGZ1bmN0aW9uICovCisjZGVmaW5lIGNw dV9nZXRfbWF4X2ZyZXEgY3B1ZnJlcV9nZXRfaHdfbWF4X2ZyZXEKKyNlbmRpZgorCisvKiBJbml0 aWFsaXplIGNvdW50ZXIgcmVmZXJlbmNlIHBlci1jcHUgdmFyaWFibGVzIGZvciB0aGUgY3VycmVu dCBDUFUgKi8KK3ZvaWQgaW5pdF9jcHVfZnJlcV9pbnZhcmlhbmNlX2NvdW50ZXJzKHZvaWQpCit7 CisJdGhpc19jcHVfd3JpdGUoYXJjaF9jb3JlX2N5Y2xlc19wcmV2LAorCQkgICAgICAgcmVhZF9z eXNyZWdfcyhTWVNfQU1FVkNOVFIwX0NPUkVfRUwwKSk7CisJdGhpc19jcHVfd3JpdGUoYXJjaF9j b25zdF9jeWNsZXNfcHJldiwKKwkJICAgICAgIHJlYWRfc3lzcmVnX3MoU1lTX0FNRVZDTlRSMF9D T05TVF9FTDApKTsKK30KKworc3RhdGljIGludCB2YWxpZGF0ZV9jcHVfZnJlcV9pbnZhcmlhbmNl X2NvdW50ZXJzKGludCBjcHUpCit7CisJdTY0IG1heF9mcmVxX2h6LCByYXRpbzsKKworCWlmICgh Y3B1X2hhc19hbXVfZmVhdChjcHUpKSB7CisJCXByX2RlYnVnKCJDUFUlZDogY291bnRlcnMgYXJl IG5vdCBzdXBwb3J0ZWQuXG4iLCBjcHUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAo dW5saWtlbHkoIXBlcl9jcHUoYXJjaF9jb25zdF9jeWNsZXNfcHJldiwgY3B1KSB8fAorCQkgICAg ICFwZXJfY3B1KGFyY2hfY29yZV9jeWNsZXNfcHJldiwgY3B1KSkpIHsKKwkJcHJfZGVidWcoIkNQ VSVkOiBjeWNsZSBjb3VudGVycyBhcmUgbm90IGVuYWJsZWQuXG4iLCBjcHUpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwkvKiBDb252ZXJ0IG1heGltdW0gZnJlcXVlbmN5IGZyb20gS0h6IHRv IEh6IGFuZCB2YWxpZGF0ZSAqLworCW1heF9mcmVxX2h6ID0gY3B1X2dldF9tYXhfZnJlcShjcHUp ICogMTAwMDsKKwlpZiAodW5saWtlbHkoIW1heF9mcmVxX2h6KSkgeworCQlwcl9kZWJ1ZygiQ1BV JWQ6IGludmFsaWQgbWF4aW11bSBmcmVxdWVuY3kuXG4iLCBjcHUpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwkvKgorCSAqIFByZS1jb21wdXRlIHRoZSBmaXhlZCByYXRpbyBiZXR3ZWVuIHRo ZSBmcmVxdWVuY3kgb2YgdGhlIGNvbnN0YW50CisJICogY291bnRlciBhbmQgdGhlIG1heGltdW0g ZnJlcXVlbmN5IG9mIHRoZSBDUFUuCisJICoKKwkgKgkJCSAgICAgIGNvbnN0X2ZyZXEKKwkgKiBh cmNoX21heF9mcmVxX3NjYWxlID0gICAtLS0tLS0tLS0tLS0tLS0tICogU0NIRURfQ0FQQUNJVFlf U0NBTEXCsgorCSAqCQkJICAgY3B1aW5mb19tYXhfZnJlcQorCSAqCisJICogV2UgdXNlIGEgZmFj dG9yIG9mIDIgKiBTQ0hFRF9DQVBBQ0lUWV9TSElGVCAtPiBTQ0hFRF9DQVBBQ0lUWV9TQ0FMRcKy CisJICogaW4gb3JkZXIgdG8gZW5zdXJlIGEgZ29vZCByZXNvbHV0aW9uIGZvciBhcmNoX21heF9m cmVxX3NjYWxlIGZvcgorCSAqIHZlcnkgbG93IGFyY2ggdGltZXIgZnJlcXVlbmNpZXMgKHVwIHRv IHRoZSBLSHogcmFuZ2Ugd2hpY2ggc2hvdWxkIGJlCisJICogdW5saWtlbHkpLgorCSAqLworCXJh dGlvID0gKHU2NClhcmNoX3RpbWVyX2dldF9yYXRlKCkgPDwgKDIgKiBTQ0hFRF9DQVBBQ0lUWV9T SElGVCk7CisJcmF0aW8gPSBkaXY2NF91NjQocmF0aW8sIG1heF9mcmVxX2h6KTsKKwlpZiAoIXJh dGlvKSB7CisJCXByX2VycigiU3lzdGVtIHRpbWVyIGZyZXF1ZW5jeSB0b28gbG93LlxuIik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCXBlcl9jcHUoYXJjaF9tYXhfZnJlcV9zY2FsZSwgY3B1 KSA9ICh1bnNpZ25lZCBsb25nKXJhdGlvOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxp bmUgaW50CitlbmFibGVfcG9saWN5X2ZyZXFfY291bnRlcnMoaW50IGNwdSwgY3B1bWFza192YXJf dCB2YWxpZF9jcHVzKQoreworCXN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5ID0gY3B1ZnJl cV9jcHVfZ2V0KGNwdSk7CisKKwlpZiAoIXBvbGljeSkgeworCQlwcl9kZWJ1ZygiQ1BVJWQ6IE5v IGNwdWZyZXEgcG9saWN5IGZvdW5kLlxuIiwgY3B1KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWlmIChjcHVtYXNrX3N1YnNldChwb2xpY3ktPnJlbGF0ZWRfY3B1cywgdmFsaWRfY3B1cykpIHsK KwkJY3B1bWFza19vcihhbXVfZmllX2NwdXMsIHBvbGljeS0+cmVsYXRlZF9jcHVzLAorCQkJICAg YW11X2ZpZV9jcHVzKTsKKwkJcHJfaW5mbygiQ1BVc1slKnBibF06IGNvdW50ZXJzIHdpbGwgYmUg dXNlZCBmb3IgRklFLiIsCisJCQljcHVtYXNrX3ByX2FyZ3MoYW11X2ZpZV9jcHVzKSk7CisJfQor CisJY3B1ZnJlcV9jcHVfcHV0KHBvbGljeSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IGludCBfX2luaXQgaW5pdF9hbXVfZmllKHZvaWQpCit7CisJY3B1bWFza192YXJfdCB2YWxpZF9j cHVzOworCWJvb2wgaGF2ZV9wb2xpY3kgPSBmYWxzZTsKKwlpbnQgY3B1OworCisJaWYgKCF6YWxs b2NfY3B1bWFza192YXIoJnZhbGlkX2NwdXMsIEdGUF9LRVJORUwpIHx8CisJICAgICF6YWxsb2Nf Y3B1bWFza192YXIoJmFtdV9maWVfY3B1cywgR0ZQX0tFUk5FTCkpCisJCXJldHVybiAtRU5PTUVN OworCisJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgeworCQlpZiAodmFsaWRhdGVfY3B1X2Zy ZXFfaW52YXJpYW5jZV9jb3VudGVycyhjcHUpKQorCQkJY29udGludWU7CisJCWNwdW1hc2tfc2V0 X2NwdShjcHUsIHZhbGlkX2NwdXMpOworCQloYXZlX3BvbGljeSA9IGVuYWJsZV9wb2xpY3lfZnJl cV9jb3VudGVycyhjcHUsIHZhbGlkX2NwdXMpIHx8CisJCQkgICAgICBoYXZlX3BvbGljeTsKKwl9 CisKKwlpZiAoIWhhdmVfcG9saWN5KSB7CisJCS8qCisJCSAqIElmIHdlIGFyZSBub3QgcmVzdHJp Y3RlZCBieSBjcHVmcmVxIHBvbGljaWVzLCB3ZSBvbmx5IGVuYWJsZQorCQkgKiB0aGUgdXNlIG9m IHRoZSBBTVUgZmVhdHVyZSBmb3IgRklFIGlmIGFsbCBDUFVzIHN1cHBvcnQgQU1VLgorCQkgKiBP dGhlcndpc2UsIGVuYWJsZV9wb2xpY3lfZnJlcV9jb3VudGVycyBoYXMgYWxyZWFkeSBlbmFibGVk CisJCSAqIHBvbGljeSBjcHVzLgorCQkgKi8KKwkJaWYgKGNwdW1hc2tfZXF1YWwodmFsaWRfY3B1 cywgY3B1X3Bvc3NpYmxlX21hc2spKSB7CisJCQljcHVtYXNrX29yKGFtdV9maWVfY3B1cywgYW11 X2ZpZV9jcHVzLCB2YWxpZF9jcHVzKTsKKwkJCXByX2luZm8oIkNQVXNbJSpwYmxdOiBjb3VudGVy cyB3aWxsIGJlIHVzZWQgZm9yIEZJRS4iLAorCQkJCWNwdW1hc2tfcHJfYXJncyhhbXVfZmllX2Nw dXMpKTsKKwkJfQorCX0KKworCWZyZWVfY3B1bWFza192YXIodmFsaWRfY3B1cyk7CisKKwlyZXR1 cm4gMDsKK30KK2xhdGVfaW5pdGNhbGxfc3luYyhpbml0X2FtdV9maWUpOworCitib29sIHRvcG9s b2d5X2NwdV9mcmVxX2NvdW50ZXJzKHN0cnVjdCBjcHVtYXNrICpjcHVzKQoreworCXJldHVybiBj cHVtYXNrX2F2YWlsYWJsZShhbXVfZmllX2NwdXMpICYmCisJICAgICAgIGNwdW1hc2tfc3Vic2V0 KGNwdXMsIGFtdV9maWVfY3B1cyk7Cit9CisKK3ZvaWQgdG9wb2xvZ3lfc2NhbGVfZnJlcV90aWNr KHZvaWQpCit7CisJdTY0IHByZXZfY29yZV9jbnQsIHByZXZfY29uc3RfY250OworCXU2NCBjb3Jl X2NudCwgY29uc3RfY250LCBzY2FsZTsKKwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwor CisJaWYgKCFjcHVtYXNrX2F2YWlsYWJsZShhbXVfZmllX2NwdXMpIHx8CisJICAgICFjcHVtYXNr X3Rlc3RfY3B1KGNwdSwgYW11X2ZpZV9jcHVzKSkKKwkJcmV0dXJuOworCisJY29uc3RfY250ID0g cmVhZF9zeXNyZWdfcyhTWVNfQU1FVkNOVFIwX0NPTlNUX0VMMCk7CisJY29yZV9jbnQgPSByZWFk X3N5c3JlZ19zKFNZU19BTUVWQ05UUjBfQ09SRV9FTDApOworCXByZXZfY29uc3RfY250ID0gdGhp c19jcHVfcmVhZChhcmNoX2NvbnN0X2N5Y2xlc19wcmV2KTsKKwlwcmV2X2NvcmVfY250ID0gdGhp c19jcHVfcmVhZChhcmNoX2NvcmVfY3ljbGVzX3ByZXYpOworCisJaWYgKHVubGlrZWx5KGNvcmVf Y250IDw9IHByZXZfY29yZV9jbnQgfHwKKwkJICAgICBjb25zdF9jbnQgPD0gcHJldl9jb25zdF9j bnQpKQorCQlnb3RvIHN0b3JlX2FuZF9leGl0OworCisJLyoKKwkgKgkgICAgL1xjb3JlICAgIGFy Y2hfbWF4X2ZyZXFfc2NhbGUKKwkgKiBzY2FsZSA9ICAtLS0tLS0tICogLS0tLS0tLS0tLS0tLS0t LS0tLS0KKwkgKgkgICAgL1xjb25zdCAgIFNDSEVEX0NBUEFDSVRZX1NDQUxFCisJICoKKwkgKiBX ZSBzaGlmdCBieSBTQ0hFRF9DQVBBQ0lUWV9TSElGVCAoZGl2aWRlIGJ5IFNDSEVEX0NBUEFDSVRZ X1NDQUxFKQorCSAqIGluIG9yZGVyIHRvIGNvbXBlbnNhdGUgZm9yIHRoZSBTQ0hFRF9DQVBBQ0lU WV9TQ0FMRcKyIGZhY3RvciBpbgorCSAqIGFyY2hfbWF4X2ZyZXFfc2NhbGUgKHVzZWQgdG8gZW5z dXJlIGl0cyByZXNvbHV0aW9uKSB3aGlsZSBrZWVwaW5nCisJICogdGhlIHNjYWxlIHZhbHVlIGlu IHRoZSAwLVNDSEVEX0NBUEFDSVRZX1NDQUxFIGNhcGFjaXR5IHJhbmdlLgorCSAqLworCXNjYWxl ID0gY29yZV9jbnQgLSBwcmV2X2NvcmVfY250OworCXNjYWxlICo9IHRoaXNfY3B1X3JlYWQoYXJj aF9tYXhfZnJlcV9zY2FsZSk7CisJc2NhbGUgPSBkaXY2NF91NjQoc2NhbGUgPj4gU0NIRURfQ0FQ QUNJVFlfU0hJRlQsCisJCQkgIGNvbnN0X2NudCAtIHByZXZfY29uc3RfY250KTsKKworCXNjYWxl ID0gbWluX3QodW5zaWduZWQgbG9uZywgc2NhbGUsIFNDSEVEX0NBUEFDSVRZX1NDQUxFKTsKKwl0 aGlzX2NwdV93cml0ZShmcmVxX3NjYWxlLCAodW5zaWduZWQgbG9uZylzY2FsZSk7CisKK3N0b3Jl X2FuZF9leGl0OgorCXRoaXNfY3B1X3dyaXRlKGFyY2hfY29yZV9jeWNsZXNfcHJldiwgY29yZV9j bnQpOworCXRoaXNfY3B1X3dyaXRlKGFyY2hfY29uc3RfY3ljbGVzX3ByZXYsIGNvbnN0X2NudCk7 Cit9CisjZW5kaWYgLyogQ09ORklHX0FSTTY0X0FNVV9FWFROICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5jIGIvZHJpdmVycy9iYXNlL2FyY2hfdG9wb2xvZ3kuYwpp bmRleCAxZWI4MWYxMTM3ODYuLjFhYjJiNzUwM2Q2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9iYXNl L2FyY2hfdG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2Jhc2UvYXJjaF90b3BvbG9neS5jCkBAIC0y OSw2ICsyOSwxNCBAQCB2b2lkIGFyY2hfc2V0X2ZyZXFfc2NhbGUoc3RydWN0IGNwdW1hc2sgKmNw dXMsIHVuc2lnbmVkIGxvbmcgY3VyX2ZyZXEsCiAJdW5zaWduZWQgbG9uZyBzY2FsZTsKIAlpbnQg aTsKIAorCS8qCisJICogSWYgdGhlIHVzZSBvZiBjb3VudGVycyBmb3IgRklFIGlzIGVuYWJsZWQs IGp1c3QgcmV0dXJuIGFzIHdlIGRvbid0CisJICogd2FudCB0byB1cGRhdGUgdGhlIHNjYWxlIGZh Y3RvciB3aXRoIGluZm9ybWF0aW9uIGZyb20gQ1BVRlJFUS4KKwkgKiBJbnN0ZWFkIHRoZSBzY2Fs ZSBmYWN0b3Igd2lsbCBiZSB1cGRhdGVkIGZyb20gYXJjaF9zY2FsZV9mcmVxX3RpY2suCisJICov CisJaWYgKGFyY2hfY3B1X2ZyZXFfY291bnRlcnMoY3B1cykpCisJCXJldHVybjsKKwogCXNjYWxl ID0gKGN1cl9mcmVxIDw8IFNDSEVEX0NBUEFDSVRZX1NISUZUKSAvIG1heF9mcmVxOwogCiAJZm9y X2VhY2hfY3B1KGksIGNwdXMpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5Lmgg Yi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgKaW5kZXggZWIyZmU2ZWRkNzNjLi4zOTdhYWQ2YWUx NjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdG9wb2xvZ3kuaAorKysgYi9pbmNsdWRlL2xp bnV4L3RvcG9sb2d5LmgKQEAgLTIyNyw1ICsyMjcsMTIgQEAgc3RhdGljIGlubGluZSBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqY3B1X2NwdV9tYXNrKGludCBjcHUpCiAJcmV0dXJuIGNwdW1hc2tfb2Zf bm9kZShjcHVfdG9fbm9kZShjcHUpKTsKIH0KIAorI2lmbmRlZiBhcmNoX2NwdV9mcmVxX2NvdW50 ZXJzCitzdGF0aWMgX19hbHdheXNfaW5saW5lCitib29sIGFyY2hfY3B1X2ZyZXFfY291bnRlcnMo c3RydWN0IGNwdW1hc2sgKmNwdXMpCit7CisJcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCiAKICNl bmRpZiAvKiBfTElOVVhfVE9QT0xPR1lfSCAqLwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=