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,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 E569EC3F2D1 for ; Thu, 5 Mar 2020 09:08:27 +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 AA6BF208CD for ; Thu, 5 Mar 2020 09:08:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="tctQg4DY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AA6BF208CD 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=J6ZpzsC1AjBd8ZSO/snKZckXSZpYMlcTEQkSRttf0FI=; b=tctQg4DYAVDPNe D0kefyQrsqBLv9BXfU/NDJNMSj7eJ7D+a/1OJ/DStGesZZM2WyLFKTFh2Ryne8/1gVEufZ/3PKYAZ Cj1pXbB2ijW0aPKlof3qgE9C3BZNxfJ+eR7qU4PagqR+1FdLaIWilshkW6U0WW0nsOsj7D9aM2UzX fXRz8D4sMMJqmZAbiyQsOEmNYBRZpdP3h+WeKf0mjXlYg0x66oVYuRKilhOSy2G3Lho21ii4Y2+TP scTKQhZ1tqfAJV6hwqdhe9gbH+wE5xdDjdCgWu8asEp23DbsKEkilcaEgf7u7CHcRThZs85kHlC7D CdJr1ec5wBmW/+QlA4Cw==; 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 1j9mUU-0007wg-LE; Thu, 05 Mar 2020 09:08:26 +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 1j9mTN-0006pw-ET for linux-arm-kernel@lists.infradead.org; Thu, 05 Mar 2020 09:07:19 +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 8D5D94B2; Thu, 5 Mar 2020 01:07:16 -0800 (PST) Received: from e108754-lin.cambridge.arm.com (e108754-lin.cambridge.arm.com [10.1.198.53]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 127633F534; Thu, 5 Mar 2020 01:07:13 -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, dietmar.eggemann@arm.com, rjw@rjwysocki.net, pkondeti@codeaurora.org, ionela.voinescu@arm.com Subject: [PATCH v6 6/7] arm64: use activity monitors for frequency invariance Date: Thu, 5 Mar 2020 09:06:26 +0000 Message-Id: <20200305090627.31908-7-ionela.voinescu@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200305090627.31908-1-ionela.voinescu@arm.com> References: <20200305090627.31908-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-20200305_010717_605495_F37D62BB X-CRM114-Status: GOOD ( 23.27 ) 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 ZXBlbnRzIG9uIHRoZSBBTVUgZXh0ZW5zaW9uIGJlaW5nIHByZXNlbnQKIC0gQ09ORklHX0NQVV9G UkVRIC0gdGhlIGN1cnJlbnQgZnJlcXVlbmN5IG9idGFpbmVkIHVzaW5nIGNvdW50ZXIKICAgaW5m b3JtYXRpb24gaXMgZGl2aWRlZCBieSB0aGUgbWF4aW11bSBmcmVxdWVuY3kgb2J0YWluZWQgZnJv bSB0aGUKICAgY3B1ZnJlcSBwb2xpY3kuCgpXaGlsZSBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIGEg Y29tYmluYXRpb24gb2YgQ1BVcyBpbiB0aGUgc3lzdGVtIHdpdGgKYW5kIHdpdGhvdXQgc3VwcG9y dCBmb3IgYWN0aXZpdHkgbW9uaXRvcnMsIHRoZSB1c2Ugb2YgY291bnRlcnMgZm9yCmZyZXF1ZW5j eSBpbnZhcmlhbmNlIGlzIG9ubHkgZW5hYmxlZCBmb3IgYSBDUFUgaWYgYWxsIHJlbGF0ZWQgQ1BV cwooQ1BVcyBpbiB0aGUgc2FtZSBmcmVxdWVuY3kgZG9tYWluKSBzdXBwb3J0IGFuZCBoYXZlIGVu YWJsZWQgdGhlIGNvcmUKYW5kIGNvbnN0YW50IGFjdGl2aXR5IG1vbml0b3IgY291bnRlcnMuIElu IHRoaXMgd2F5LCB0aGVyZSBpcyBhIGNsZWFyCnNlcGFyYXRpb24gYmV0d2VlbiB0aGUgcG9saWNp ZXMgZm9yIHdoaWNoIGFyY2hfc2V0X2ZyZXFfc2NhbGUgKGNwdWZyZXEKYmFzZWQgRklFKSBpcyB1 c2VkLCBhbmQgdGhlIHBvbGljaWVzIGZvciB3aGljaCBhcmNoX3NjYWxlX2ZyZXFfdGljawooY291 bnRlciBiYXNlZCBGSUUpIGlzIHVzZWQgdG8gc2V0IHRoZSBmcmVxdWVuY3kgc2NhbGUgZmFjdG9y LiBGb3IKdGhpcyBwdXJwb3NlLCBhIGxhdGVfaW5pdGNhbGxfc3luYyBpcyByZWdpc3RlcmVkIHRv IHRyaWdnZXIgdmFsaWRhdGlvbgp3b3JrIGZvciBwb2xpY2llcyB0aGF0IHdpbGwgZW5hYmxlIG9y IGRpc2FibGUgdGhlIHVzZSBvZiBBTVUgY291bnRlcnMKZm9yIGZyZXF1ZW5jeSBpbnZhcmlhbmNl LiBJZiBDT05GSUdfQ1BVX0ZSRVEgaXMgbm90IGRlZmluZWQsIHRoZSB1c2UKb2YgY291bnRlcnMg aXMgZW5hYmxlZCBvbiBhbGwgQ1BVcyBvbmx5IGlmIGFsbCBwb3NzaWJsZSBDUFVzIGNvcnJlY3Rs eQpzdXBwb3J0IHRoZSBuZWNlc3NhcnkgY291bnRlcnMuCgpTaWduZWQtb2ZmLWJ5OiBJb25lbGEg Vm9pbmVzY3UgPGlvbmVsYS52b2luZXNjdUBhcm0uY29tPgpSZXZpZXdlZC1ieTogTHVrYXN6IEx1 YmEgPGx1a2Fzei5sdWJhQGFybS5jb20+CkNjOiBDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFy aW5hc0Bhcm0uY29tPgpDYzogV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz4KQ2M6IFN1ZGVl cCBIb2xsYSA8c3VkZWVwLmhvbGxhQGFybS5jb20+Ci0tLQogYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS90b3BvbG9neS5oIHwgICA5ICsrCiBhcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMgICAg fCAgIDQgKwogYXJjaC9hcm02NC9rZXJuZWwvdG9wb2xvZ3kuYyAgICAgIHwgMTgwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9iYXNlL2FyY2hfdG9wb2xvZ3kuYyAgICAg IHwgIDEyICsrCiBpbmNsdWRlL2xpbnV4L2FyY2hfdG9wb2xvZ3kuaCAgICAgfCAgIDIgKwogNSBm aWxlcyBjaGFuZ2VkLCAyMDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20vdG9wb2xvZ3kuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdG9wb2xvZ3ku aAppbmRleCBhNGQ5NDVkYjk1YTIuLjIxZDRkNDBkNjI0MyAxMDA2NDQKLS0tIGEvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS90b3BvbG9neS5oCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdG9w b2xvZ3kuaApAQCAtMTYsNiArMTYsMTUgQEAgaW50IHBjaWJ1c190b19ub2RlKHN0cnVjdCBwY2lf YnVzICpidXMpOwogCiAjaW5jbHVkZSA8bGludXgvYXJjaF90b3BvbG9neS5oPgogCisjaWZkZWYg Q09ORklHX0FSTTY0X0FNVV9FWFROCisvKgorICogUmVwbGFjZSB0YXNrIHNjaGVkdWxlcidzIGRl ZmF1bHQgY291bnRlci1iYXNlZAorICogZnJlcXVlbmN5LWludmFyaWFuY2Ugc2NhbGUgZmFjdG9y IHNldHRpbmcuCisgKi8KK3ZvaWQgdG9wb2xvZ3lfc2NhbGVfZnJlcV90aWNrKHZvaWQpOworI2Rl ZmluZSBhcmNoX3NjYWxlX2ZyZXFfdGljayB0b3BvbG9neV9zY2FsZV9mcmVxX3RpY2sKKyNlbmRp ZiAvKiBDT05GSUdfQVJNNjRfQU1VX0VYVE4gKi8KKwogLyogUmVwbGFjZSB0YXNrIHNjaGVkdWxl cidzIGRlZmF1bHQgZnJlcXVlbmN5LWludmFyaWFudCBhY2NvdW50aW5nICovCiAjZGVmaW5lIGFy Y2hfc2NhbGVfZnJlcV9jYXBhY2l0eSB0b3BvbG9neV9nZXRfZnJlcV9zY2FsZQogCmRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2tlcm5lbC9jcHVmZWF0dXJlLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9j cHVmZWF0dXJlLmMKaW5kZXggMzAxNTM4ZDNhMTk3Li5iZjk4YTIzODY1MzQgMTAwNjQ0Ci0tLSBh L2FyY2gvYXJtNjQva2VybmVsL2NwdWZlYXR1cmUuYworKysgYi9hcmNoL2FybTY0L2tlcm5lbC9j cHVmZWF0dXJlLmMKQEAgLTEyNDEsMTIgKzEyNDEsMTYgQEAgYm9vbCBjcHVfaGFzX2FtdV9mZWF0 KGludCBjcHUpCiAJcmV0dXJuIGNwdW1hc2tfdGVzdF9jcHUoY3B1LCAmYW11X2NwdXMpOwogfQog CisvKiBJbml0aWFsaXplIHRoZSB1c2Ugb2YgQU1VIGNvdW50ZXJzIGZvciBmcmVxdWVuY3kgaW52 YXJpYW5jZSAqLworZXh0ZXJuIHZvaWQgaW5pdF9jcHVfZnJlcV9pbnZhcmlhbmNlX2NvdW50ZXJz KHZvaWQpOworCiBzdGF0aWMgdm9pZCBjcHVfYW11X2VuYWJsZShzdHJ1Y3QgYXJtNjRfY3B1X2Nh cGFiaWxpdGllcyBjb25zdCAqY2FwKQogewogCWlmIChoYXNfY3B1aWRfZmVhdHVyZShjYXAsIFND T1BFX0xPQ0FMX0NQVSkpIHsKIAkJcHJfaW5mbygiZGV0ZWN0ZWQgQ1BVJWQ6IEFjdGl2aXR5IE1v bml0b3JzIFVuaXQgKEFNVSlcbiIsCiAJCQlzbXBfcHJvY2Vzc29yX2lkKCkpOwogCQljcHVtYXNr X3NldF9jcHUoc21wX3Byb2Nlc3Nvcl9pZCgpLCAmYW11X2NwdXMpOworCQlpbml0X2NwdV9mcmVx X2ludmFyaWFuY2VfY291bnRlcnMoKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv a2VybmVsL3RvcG9sb2d5LmMgYi9hcmNoL2FybTY0L2tlcm5lbC90b3BvbG9neS5jCmluZGV4IGZh OTUyOGRmZDBjZS4uMDgwMWEwZjNjMTU2IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC90 b3BvbG9neS5jCisrKyBiL2FyY2gvYXJtNjQva2VybmVsL3RvcG9sb2d5LmMKQEAgLTE0LDYgKzE0 LDcgQEAKICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CiAjaW5jbHVkZSA8bGludXgvYXJjaF90b3Bv bG9neS5oPgogI2luY2x1ZGUgPGxpbnV4L2NhY2hlaW5mby5oPgorI2luY2x1ZGUgPGxpbnV4L2Nw dWZyZXEuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvcGVyY3B1 Lmg+CiAKQEAgLTEyMCw0ICsxMjEsMTgzIEBAIGludCBfX2luaXQgcGFyc2VfYWNwaV90b3BvbG9n eSh2b2lkKQogfQogI2VuZGlmCiAKKyNpZmRlZiBDT05GSUdfQVJNNjRfQU1VX0VYVE4KIAorI3Vu ZGVmIHByX2ZtdAorI2RlZmluZSBwcl9mbXQoZm10KSAiQU1VOiAiIGZtdAorCitzdGF0aWMgREVG SU5FX1BFUl9DUFVfUkVBRF9NT1NUTFkodW5zaWduZWQgbG9uZywgYXJjaF9tYXhfZnJlcV9zY2Fs ZSk7CitzdGF0aWMgREVGSU5FX1BFUl9DUFUodTY0LCBhcmNoX2NvbnN0X2N5Y2xlc19wcmV2KTsK K3N0YXRpYyBERUZJTkVfUEVSX0NQVSh1NjQsIGFyY2hfY29yZV9jeWNsZXNfcHJldik7CitzdGF0 aWMgY3B1bWFza192YXJfdCBhbXVfZmllX2NwdXM7CisKKy8qIEluaXRpYWxpemUgY291bnRlciBy ZWZlcmVuY2UgcGVyLWNwdSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50IENQVSAqLwordm9pZCBp bml0X2NwdV9mcmVxX2ludmFyaWFuY2VfY291bnRlcnModm9pZCkKK3sKKwl0aGlzX2NwdV93cml0 ZShhcmNoX2NvcmVfY3ljbGVzX3ByZXYsCisJCSAgICAgICByZWFkX3N5c3JlZ19zKFNZU19BTUVW Q05UUjBfQ09SRV9FTDApKTsKKwl0aGlzX2NwdV93cml0ZShhcmNoX2NvbnN0X2N5Y2xlc19wcmV2 LAorCQkgICAgICAgcmVhZF9zeXNyZWdfcyhTWVNfQU1FVkNOVFIwX0NPTlNUX0VMMCkpOworfQor CitzdGF0aWMgaW50IHZhbGlkYXRlX2NwdV9mcmVxX2ludmFyaWFuY2VfY291bnRlcnMoaW50IGNw dSkKK3sKKwl1NjQgbWF4X2ZyZXFfaHosIHJhdGlvOworCisJaWYgKCFjcHVfaGFzX2FtdV9mZWF0 KGNwdSkpIHsKKwkJcHJfZGVidWcoIkNQVSVkOiBjb3VudGVycyBhcmUgbm90IHN1cHBvcnRlZC5c biIsIGNwdSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICh1bmxpa2VseSghcGVyX2Nw dShhcmNoX2NvbnN0X2N5Y2xlc19wcmV2LCBjcHUpIHx8CisJCSAgICAgIXBlcl9jcHUoYXJjaF9j b3JlX2N5Y2xlc19wcmV2LCBjcHUpKSkgeworCQlwcl9kZWJ1ZygiQ1BVJWQ6IGN5Y2xlIGNvdW50 ZXJzIGFyZSBub3QgZW5hYmxlZC5cbiIsIGNwdSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CS8qIENvbnZlcnQgbWF4aW11bSBmcmVxdWVuY3kgZnJvbSBLSHogdG8gSHogYW5kIHZhbGlkYXRl ICovCisJbWF4X2ZyZXFfaHogPSBjcHVmcmVxX2dldF9od19tYXhfZnJlcShjcHUpICogMTAwMDsK KwlpZiAodW5saWtlbHkoIW1heF9mcmVxX2h6KSkgeworCQlwcl9kZWJ1ZygiQ1BVJWQ6IGludmFs aWQgbWF4aW11bSBmcmVxdWVuY3kuXG4iLCBjcHUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwkvKgorCSAqIFByZS1jb21wdXRlIHRoZSBmaXhlZCByYXRpbyBiZXR3ZWVuIHRoZSBmcmVxdWVu Y3kgb2YgdGhlIGNvbnN0YW50CisJICogY291bnRlciBhbmQgdGhlIG1heGltdW0gZnJlcXVlbmN5 IG9mIHRoZSBDUFUuCisJICoKKwkgKgkJCSAgICAgIGNvbnN0X2ZyZXEKKwkgKiBhcmNoX21heF9m cmVxX3NjYWxlID0gICAtLS0tLS0tLS0tLS0tLS0tICogU0NIRURfQ0FQQUNJVFlfU0NBTEXCsgor CSAqCQkJICAgY3B1aW5mb19tYXhfZnJlcQorCSAqCisJICogV2UgdXNlIGEgZmFjdG9yIG9mIDIg KiBTQ0hFRF9DQVBBQ0lUWV9TSElGVCAtPiBTQ0hFRF9DQVBBQ0lUWV9TQ0FMRcKyCisJICogaW4g b3JkZXIgdG8gZW5zdXJlIGEgZ29vZCByZXNvbHV0aW9uIGZvciBhcmNoX21heF9mcmVxX3NjYWxl IGZvcgorCSAqIHZlcnkgbG93IGFyY2ggdGltZXIgZnJlcXVlbmNpZXMgKGRvd24gdG8gdGhlIEtI eiByYW5nZSB3aGljaCBzaG91bGQKKwkgKiBiZSB1bmxpa2VseSkuCisJICovCisJcmF0aW8gPSAo dTY0KWFyY2hfdGltZXJfZ2V0X3JhdGUoKSA8PCAoMiAqIFNDSEVEX0NBUEFDSVRZX1NISUZUKTsK KwlyYXRpbyA9IGRpdjY0X3U2NChyYXRpbywgbWF4X2ZyZXFfaHopOworCWlmICghcmF0aW8pIHsK KwkJV0FSTl9PTkNFKDEsICJTeXN0ZW0gdGltZXIgZnJlcXVlbmN5IHRvbyBsb3cuXG4iKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJcGVyX2NwdShhcmNoX21heF9mcmVxX3NjYWxlLCBjcHUp ID0gKHVuc2lnbmVkIGxvbmcpcmF0aW87CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGlu ZSBib29sCitlbmFibGVfcG9saWN5X2ZyZXFfY291bnRlcnMoaW50IGNwdSwgY3B1bWFza192YXJf dCB2YWxpZF9jcHVzKQoreworCXN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5ID0gY3B1ZnJl cV9jcHVfZ2V0KGNwdSk7CisKKwlpZiAoIXBvbGljeSkgeworCQlwcl9kZWJ1ZygiQ1BVJWQ6IE5v IGNwdWZyZXEgcG9saWN5IGZvdW5kLlxuIiwgY3B1KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWlmIChjcHVtYXNrX3N1YnNldChwb2xpY3ktPnJlbGF0ZWRfY3B1cywgdmFsaWRfY3B1cykpCisJ CWNwdW1hc2tfb3IoYW11X2ZpZV9jcHVzLCBwb2xpY3ktPnJlbGF0ZWRfY3B1cywKKwkJCSAgIGFt dV9maWVfY3B1cyk7CisKKwljcHVmcmVxX2NwdV9wdXQocG9saWN5KTsKKworCXJldHVybiB0cnVl OworfQorCitzdGF0aWMgREVGSU5FX1NUQVRJQ19LRVlfRkFMU0UoYW11X2ZpZV9rZXkpOworI2Rl ZmluZSBhbXVfZnJlcV9pbnZhcmlhbnQoKSBzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZhbXVfZmll X2tleSkKKworc3RhdGljIGludCBfX2luaXQgaW5pdF9hbXVfZmllKHZvaWQpCit7CisJY3B1bWFz a192YXJfdCB2YWxpZF9jcHVzOworCWJvb2wgaGF2ZV9wb2xpY3kgPSBmYWxzZTsKKwlpbnQgcmV0 ID0gMDsKKwlpbnQgY3B1OworCisJaWYgKCF6YWxsb2NfY3B1bWFza192YXIoJnZhbGlkX2NwdXMs IEdGUF9LRVJORUwpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmICghemFsbG9jX2NwdW1hc2tf dmFyKCZhbXVfZmllX2NwdXMsIEdGUF9LRVJORUwpKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdv dG8gZnJlZV92YWxpZF9tYXNrOworCX0KKworCWZvcl9lYWNoX3ByZXNlbnRfY3B1KGNwdSkgewor CQlpZiAodmFsaWRhdGVfY3B1X2ZyZXFfaW52YXJpYW5jZV9jb3VudGVycyhjcHUpKQorCQkJY29u dGludWU7CisJCWNwdW1hc2tfc2V0X2NwdShjcHUsIHZhbGlkX2NwdXMpOworCQloYXZlX3BvbGlj eSB8PSBlbmFibGVfcG9saWN5X2ZyZXFfY291bnRlcnMoY3B1LCB2YWxpZF9jcHVzKTsKKwl9CisK KwkvKgorCSAqIElmIHdlIGFyZSBub3QgcmVzdHJpY3RlZCBieSBjcHVmcmVxIHBvbGljaWVzLCB3 ZSBvbmx5IGVuYWJsZQorCSAqIHRoZSB1c2Ugb2YgdGhlIEFNVSBmZWF0dXJlIGZvciBGSUUgaWYg YWxsIENQVXMgc3VwcG9ydCBBTVUuCisJICogT3RoZXJ3aXNlLCBlbmFibGVfcG9saWN5X2ZyZXFf Y291bnRlcnMgaGFzIGFscmVhZHkgZW5hYmxlZAorCSAqIHBvbGljeSBjcHVzLgorCSAqLworCWlm ICghaGF2ZV9wb2xpY3kgJiYgY3B1bWFza19lcXVhbCh2YWxpZF9jcHVzLCBjcHVfcHJlc2VudF9t YXNrKSkKKwkJY3B1bWFza19vcihhbXVfZmllX2NwdXMsIGFtdV9maWVfY3B1cywgdmFsaWRfY3B1 cyk7CisKKwlpZiAoIWNwdW1hc2tfZW1wdHkoYW11X2ZpZV9jcHVzKSkgeworCQlwcl9pbmZvKCJD UFVzWyUqcGJsXTogY291bnRlcnMgd2lsbCBiZSB1c2VkIGZvciBGSUUuIiwKKwkJCWNwdW1hc2tf cHJfYXJncyhhbXVfZmllX2NwdXMpKTsKKwkJc3RhdGljX2JyYW5jaF9lbmFibGUoJmFtdV9maWVf a2V5KTsKKwl9CisKK2ZyZWVfdmFsaWRfbWFzazoKKwlmcmVlX2NwdW1hc2tfdmFyKHZhbGlkX2Nw dXMpOworCisJcmV0dXJuIHJldDsKK30KK2xhdGVfaW5pdGNhbGxfc3luYyhpbml0X2FtdV9maWUp OworCitib29sIGFyY2hfZnJlcV9jb3VudGVyc19hdmFpbGFibGUoc3RydWN0IGNwdW1hc2sgKmNw dXMpCit7CisJcmV0dXJuIGFtdV9mcmVxX2ludmFyaWFudCgpICYmCisJICAgICAgIGNwdW1hc2tf c3Vic2V0KGNwdXMsIGFtdV9maWVfY3B1cyk7Cit9CisKK3ZvaWQgdG9wb2xvZ3lfc2NhbGVfZnJl cV90aWNrKHZvaWQpCit7CisJdTY0IHByZXZfY29yZV9jbnQsIHByZXZfY29uc3RfY250OworCXU2 NCBjb3JlX2NudCwgY29uc3RfY250LCBzY2FsZTsKKwlpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9p ZCgpOworCisJaWYgKCFhbXVfZnJlcV9pbnZhcmlhbnQoKSkKKwkJcmV0dXJuOworCisJaWYgKCFj cHVtYXNrX3Rlc3RfY3B1KGNwdSwgYW11X2ZpZV9jcHVzKSkKKwkJcmV0dXJuOworCisJY29uc3Rf Y250ID0gcmVhZF9zeXNyZWdfcyhTWVNfQU1FVkNOVFIwX0NPTlNUX0VMMCk7CisJY29yZV9jbnQg PSByZWFkX3N5c3JlZ19zKFNZU19BTUVWQ05UUjBfQ09SRV9FTDApOworCXByZXZfY29uc3RfY250 ID0gdGhpc19jcHVfcmVhZChhcmNoX2NvbnN0X2N5Y2xlc19wcmV2KTsKKwlwcmV2X2NvcmVfY250 ID0gdGhpc19jcHVfcmVhZChhcmNoX2NvcmVfY3ljbGVzX3ByZXYpOworCisJaWYgKHVubGlrZWx5 KGNvcmVfY250IDw9IHByZXZfY29yZV9jbnQgfHwKKwkJICAgICBjb25zdF9jbnQgPD0gcHJldl9j b25zdF9jbnQpKQorCQlnb3RvIHN0b3JlX2FuZF9leGl0OworCisJLyoKKwkgKgkgICAgL1xjb3Jl ICAgIGFyY2hfbWF4X2ZyZXFfc2NhbGUKKwkgKiBzY2FsZSA9ICAtLS0tLS0tICogLS0tLS0tLS0t LS0tLS0tLS0tLS0KKwkgKgkgICAgL1xjb25zdCAgIFNDSEVEX0NBUEFDSVRZX1NDQUxFCisJICoK KwkgKiBTZWUgdmFsaWRhdGVfY3B1X2ZyZXFfaW52YXJpYW5jZV9jb3VudGVycygpIGZvciBkZXRh aWxzIG9uCisJICogYXJjaF9tYXhfZnJlcV9zY2FsZSBhbmQgdGhlIHVzZSBvZiBTQ0hFRF9DQVBB Q0lUWV9TSElGVC4KKwkgKi8KKwlzY2FsZSA9IGNvcmVfY250IC0gcHJldl9jb3JlX2NudDsKKwlz Y2FsZSAqPSB0aGlzX2NwdV9yZWFkKGFyY2hfbWF4X2ZyZXFfc2NhbGUpOworCXNjYWxlID0gZGl2 NjRfdTY0KHNjYWxlID4+IFNDSEVEX0NBUEFDSVRZX1NISUZULAorCQkJICBjb25zdF9jbnQgLSBw cmV2X2NvbnN0X2NudCk7CisKKwlzY2FsZSA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIHNjYWxlLCBT Q0hFRF9DQVBBQ0lUWV9TQ0FMRSk7CisJdGhpc19jcHVfd3JpdGUoZnJlcV9zY2FsZSwgKHVuc2ln bmVkIGxvbmcpc2NhbGUpOworCitzdG9yZV9hbmRfZXhpdDoKKwl0aGlzX2NwdV93cml0ZShhcmNo X2NvcmVfY3ljbGVzX3ByZXYsIGNvcmVfY250KTsKKwl0aGlzX2NwdV93cml0ZShhcmNoX2NvbnN0 X2N5Y2xlc19wcmV2LCBjb25zdF9jbnQpOworfQorI2VuZGlmIC8qIENPTkZJR19BUk02NF9BTVVf RVhUTiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2FyY2hfdG9wb2xvZ3kuYyBiL2RyaXZl cnMvYmFzZS9hcmNoX3RvcG9sb2d5LmMKaW5kZXggNjExOWUxMWE5Zjk1Li44ZDYzNjczYzE2ODkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmFzZS9hcmNoX3RvcG9sb2d5LmMKKysrIGIvZHJpdmVycy9i YXNlL2FyY2hfdG9wb2xvZ3kuYwpAQCAtMjEsNiArMjEsMTAgQEAKICNpbmNsdWRlIDxsaW51eC9z Y2hlZC5oPgogI2luY2x1ZGUgPGxpbnV4L3NtcC5oPgogCitfX3dlYWsgYm9vbCBhcmNoX2ZyZXFf Y291bnRlcnNfYXZhaWxhYmxlKHN0cnVjdCBjcHVtYXNrICpjcHVzKQoreworCXJldHVybiBmYWxz ZTsKK30KIERFRklORV9QRVJfQ1BVKHVuc2lnbmVkIGxvbmcsIGZyZXFfc2NhbGUpID0gU0NIRURf Q0FQQUNJVFlfU0NBTEU7CiAKIHZvaWQgYXJjaF9zZXRfZnJlcV9zY2FsZShzdHJ1Y3QgY3B1bWFz ayAqY3B1cywgdW5zaWduZWQgbG9uZyBjdXJfZnJlcSwKQEAgLTI5LDYgKzMzLDE0IEBAIHZvaWQg YXJjaF9zZXRfZnJlcV9zY2FsZShzdHJ1Y3QgY3B1bWFzayAqY3B1cywgdW5zaWduZWQgbG9uZyBj dXJfZnJlcSwKIAl1bnNpZ25lZCBsb25nIHNjYWxlOwogCWludCBpOwogCisJLyoKKwkgKiBJZiB0 aGUgdXNlIG9mIGNvdW50ZXJzIGZvciBGSUUgaXMgZW5hYmxlZCwganVzdCByZXR1cm4gYXMgd2Ug ZG9uJ3QKKwkgKiB3YW50IHRvIHVwZGF0ZSB0aGUgc2NhbGUgZmFjdG9yIHdpdGggaW5mb3JtYXRp b24gZnJvbSBDUFVGUkVRLgorCSAqIEluc3RlYWQgdGhlIHNjYWxlIGZhY3RvciB3aWxsIGJlIHVw ZGF0ZWQgZnJvbSBhcmNoX3NjYWxlX2ZyZXFfdGljay4KKwkgKi8KKwlpZiAoYXJjaF9mcmVxX2Nv dW50ZXJzX2F2YWlsYWJsZShjcHVzKSkKKwkJcmV0dXJuOworCiAJc2NhbGUgPSAoY3VyX2ZyZXEg PDwgU0NIRURfQ0FQQUNJVFlfU0hJRlQpIC8gbWF4X2ZyZXE7CiAKIAlmb3JfZWFjaF9jcHUoaSwg Y3B1cykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYXJjaF90b3BvbG9neS5oIGIvaW5jbHVk ZS9saW51eC9hcmNoX3RvcG9sb2d5LmgKaW5kZXggMzAxNWVjYmI5MGIxLi4xY2NkZGRiNTQxYTcg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYXJjaF90b3BvbG9neS5oCisrKyBiL2luY2x1ZGUv bGludXgvYXJjaF90b3BvbG9neS5oCkBAIC0zMyw2ICszMyw4IEBAIHVuc2lnbmVkIGxvbmcgdG9w b2xvZ3lfZ2V0X2ZyZXFfc2NhbGUoaW50IGNwdSkKIAlyZXR1cm4gcGVyX2NwdShmcmVxX3NjYWxl LCBjcHUpOwogfQogCitib29sIGFyY2hfZnJlcV9jb3VudGVyc19hdmFpbGFibGUoc3RydWN0IGNw dW1hc2sgKmNwdXMpOworCiBzdHJ1Y3QgY3B1X3RvcG9sb2d5IHsKIAlpbnQgdGhyZWFkX2lkOwog CWludCBjb3JlX2lkOwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=