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=-17.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable 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 A7F9FC433F5 for ; Tue, 14 Sep 2021 20:50:35 +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 6EAE561164 for ; Tue, 14 Sep 2021 20:50:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6EAE561164 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.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=Si8Ermgqb1l1P7DscBAf8EdQqUcyXIBbS30BgNf4dwA=; b=GTMkHuvAUNeeMl 7AYeyCeNhc0U/YO61DJzU2mAOyn53VM0Muj/LeXn8XPCV9DprKkMJBYIJXjmNNnAYET3Q/DiUgKcW JTwklANZ8F+u42S9oA8tfEFzoSdrjMlwiYElL6WBM5WwsgKlJ7pK1ljrqP8bM8TbRi6qENKgZWUQc oYtjp9e1gCDeRNf/hAs+sW9LqN+5tlNb4w8xARs8ymR0qDdc8+YQMrzoes3OEq2WIqh6Acv5BMXIu 10jF6fpXwV41XJc+4tWLuhgcX5m9Z9w/Xh02rCX5+1+pqWepwarxZ2SOPWFgYoFgvuNHlZDFjmG2h Wr7CUs0rKFIjL5tz7+Yw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mQFMR-0073Zn-Hm; Tue, 14 Sep 2021 20:48:59 +0000 Received: from mail-ot1-f45.google.com ([209.85.210.45]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mQFLl-0073FW-B8 for linux-arm-kernel@lists.infradead.org; Tue, 14 Sep 2021 20:48:21 +0000 Received: by mail-ot1-f45.google.com with SMTP id l7-20020a0568302b0700b0051c0181deebso354191otv.12 for ; Tue, 14 Sep 2021 13:48:05 -0700 (PDT) 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=rSLH2PKNJHJiOXUml/UMr4IbcsQFO5Do6RK1J+6XzDg=; b=3Kw4DMsSRJJRzO+5jlzcxXVchBFWlhRc3isumDclI21krFWqoitPHk5hQ1r0NgMSQo 8lbDEbaUf/ebQk/Sae+rPnqyPHF+Tj23fRSA3Z2BWEYdtejWI/fkZ5bTAJzQ3kKCyzdY a2xgQJHDz8QHub84/ybO3NGAu7rEzEv28QBnoR/DHkls3ZFapsdYdbiLdLfvONwnMP3B gSGkYcdtU9s9QmWgaPUYIwS0hAsmMvKhavoDE/Zq7Dgdn+pqLwUorTnyWaLM33Xg11ry 4VW1/Hzd8bLoFxu2oq4cADgmvbesCQFq29zW/YM4J4C0gOe9DtP9UcbiDBfskeaKSKMi JB0w== X-Gm-Message-State: AOAM530Okn5mS1HInYZRNwQ50pi766476rUKcYH152SKmfczfUYVvFkO FqdiG0hTbyzuFY/z9VAEGA== X-Google-Smtp-Source: ABdhPJwijdoM3VZ7InIf0R1CBiB7dwm8lmTGO/TIgJP9Z1Twe5rxNNJVFg4BOdjky3KFjvXP4UuVTA== X-Received: by 2002:a9d:1469:: with SMTP id h96mr16835050oth.82.1631652485041; Tue, 14 Sep 2021 13:48:05 -0700 (PDT) Received: from xps15.herring.priv (66-90-148-213.dyn.grandenetworks.net. [66.90.148.213]) by smtp.googlemail.com with ESMTPSA id y14sm2883236oti.69.2021.09.14.13.48.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 13:48:04 -0700 (PDT) From: Rob Herring To: Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar Cc: Catalin Marinas , Arnaldo Carvalho de Melo , Jiri Olsa , Kan Liang , Ian Rogers , Alexander Shishkin , honnappa.nagarahalli@arm.com, Zachary.Leaf@arm.com, Raphael Gault , Jonathan Cameron , Namhyung Kim , Itaru Kitayama , Vince Weaver , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Subject: [PATCH v10 3/5] arm64: perf: Add userspace counter access disable switch Date: Tue, 14 Sep 2021 15:47:58 -0500 Message-Id: <20210914204800.3945732-4-robh@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210914204800.3945732-1-robh@kernel.org> References: <20210914204800.3945732-1-robh@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210914_134817_507637_CBA885E5 X-CRM114-Status: GOOD ( 18.22 ) 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="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Like x86, some users may want to disable userspace PMU counter altogether. Add a sysctl 'perf_user_access' file to control userspace counter access. The default is '0' which is disabled. Writing '1' enables access. Note that x86 also supports writing '2' to globally enable user access. As there's not existing userspace support to worry about, this shouldn't be necessary for Arm. It could be added later if the need arises. Cc: Mark Rutland Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Arnaldo Carvalho de Melo Cc: Alexander Shishkin Cc: Jiri Olsa Cc: Namhyung Kim Cc: Catalin Marinas Cc: linux-perf-users@vger.kernel.org Acked-by: Will Deacon Signed-off-by: Rob Herring --- v10: - Add documentation - Use a custom handler (needed on the next patch) v9: - Use sysctl instead of sysfs attr - Default to disabled v8: - New patch --- Documentation/admin-guide/sysctl/kernel.rst | 11 +++++++++ arch/arm64/kernel/perf_event.c | 27 +++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/Documentation/admin-guide/sysctl/kernel.rst b/Documentation/admin-guide/sysctl/kernel.rst index 426162009ce9..346a0dba5703 100644 --- a/Documentation/admin-guide/sysctl/kernel.rst +++ b/Documentation/admin-guide/sysctl/kernel.rst @@ -905,6 +905,17 @@ enabled, otherwise writing to this file will return ``-EBUSY``. The default value is 8. +perf_user_access (arm64 only) +================================= + +Controls user space access for reading perf event counters. When set to 1, +user space can read performance monitor counter registers directly. + +The default value is 0 (access disabled). + +See Documentation/arm64/perf.rst for more information. + + pid_max ======= diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c index b4044469527e..a8f8dd741aeb 100644 --- a/arch/arm64/kernel/perf_event.c +++ b/arch/arm64/kernel/perf_event.c @@ -286,6 +286,8 @@ static const struct attribute_group armv8_pmuv3_events_attr_group = { PMU_FORMAT_ATTR(event, "config:0-15"); PMU_FORMAT_ATTR(long, "config1:0"); +static int sysctl_perf_user_access __read_mostly; + static inline bool armv8pmu_event_is_64bit(struct perf_event *event) { return event->attr.config1 & 0x1; @@ -1104,6 +1106,29 @@ static int armv8pmu_probe_pmu(struct arm_pmu *cpu_pmu) return probe.present ? 0 : -ENODEV; } +int armv8pmu_proc_user_access_handler(struct ctl_table *table, int write, + void *buffer, size_t *lenp, loff_t *ppos) +{ + int ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos); + if (ret || !write || sysctl_perf_user_access) + return ret; + + return 0; +} + +static struct ctl_table armv8_pmu_sysctl_table[] = { + { + .procname = "perf_user_access", + .data = &sysctl_perf_user_access, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = armv8pmu_proc_user_access_handler, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_ONE, + }, + { } +}; + static int armv8_pmu_init(struct arm_pmu *cpu_pmu, char *name, int (*map_event)(struct perf_event *event), const struct attribute_group *events, @@ -1136,6 +1161,8 @@ static int armv8_pmu_init(struct arm_pmu *cpu_pmu, char *name, cpu_pmu->attr_groups[ARMPMU_ATTR_GROUP_CAPS] = caps ? caps : &armv8_pmuv3_caps_attr_group; + register_sysctl("kernel", armv8_pmu_sysctl_table); + return 0; } -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel