All of lore.kernel.org
 help / color / mirror / Atom feed
From: "tip-bot2 for Kim Phillips" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Kim Phillips <kim.phillips@amd.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: perf/core] perf/amd/uncore: Allow the driver to be built as a module
Date: Mon, 23 Aug 2021 09:32:44 -0000	[thread overview]
Message-ID: <162971116413.25758.1318593988723804136.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20210817221048.88063-8-kim.phillips@amd.com>

The following commit has been merged into the perf/core branch of tip:

Commit-ID:     50b46ab90f7c43a1adcc9099211b7447818d446e
Gitweb:        https://git.kernel.org/tip/50b46ab90f7c43a1adcc9099211b7447818d446e
Author:        Kim Phillips <kim.phillips@amd.com>
AuthorDate:    Tue, 17 Aug 2021 17:10:47 -05:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Fri, 20 Aug 2021 12:33:13 +02:00

perf/amd/uncore: Allow the driver to be built as a module

Add support to build the AMD uncore driver as a module.
This is in order to facilitate development.

Signed-off-by: Kim Phillips <kim.phillips@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210817221048.88063-8-kim.phillips@amd.com
---
 arch/x86/events/Kconfig      | 10 ++++++++++
 arch/x86/events/amd/Makefile |  5 +++--
 arch/x86/events/amd/uncore.c | 28 +++++++++++++++++++++++++++-
 3 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/arch/x86/events/Kconfig b/arch/x86/events/Kconfig
index 39d9ded..d6cdfe6 100644
--- a/arch/x86/events/Kconfig
+++ b/arch/x86/events/Kconfig
@@ -34,4 +34,14 @@ config PERF_EVENTS_AMD_POWER
 	  (CPUID Fn8000_0007_EDX[12]) interface to calculate the
 	  average power consumption on Family 15h processors.
 
+config PERF_EVENTS_AMD_UNCORE
+	tristate "AMD Uncore performance events"
+	depends on PERF_EVENTS && CPU_SUP_AMD
+	default y
+	help
+	  Include support for AMD uncore performance events for use with
+	  e.g., perf stat -e amd_l3/.../,amd_df/.../.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called 'amd-uncore'.
 endmenu
diff --git a/arch/x86/events/amd/Makefile b/arch/x86/events/amd/Makefile
index fe8795a..6cbe38d 100644
--- a/arch/x86/events/amd/Makefile
+++ b/arch/x86/events/amd/Makefile
@@ -1,8 +1,9 @@
 # SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_CPU_SUP_AMD)		+= core.o uncore.o
+obj-$(CONFIG_CPU_SUP_AMD)		+= core.o
 obj-$(CONFIG_PERF_EVENTS_AMD_POWER)	+= power.o
 obj-$(CONFIG_X86_LOCAL_APIC)		+= ibs.o
+obj-$(CONFIG_PERF_EVENTS_AMD_UNCORE)	+= amd-uncore.o
+amd-uncore-objs				:= uncore.o
 ifdef CONFIG_AMD_IOMMU
 obj-$(CONFIG_CPU_SUP_AMD)		+= iommu.o
 endif
-
diff --git a/arch/x86/events/amd/uncore.c b/arch/x86/events/amd/uncore.c
index a01f9f1..0d04414 100644
--- a/arch/x86/events/amd/uncore.c
+++ b/arch/x86/events/amd/uncore.c
@@ -347,6 +347,7 @@ static struct pmu amd_nb_pmu = {
 	.stop		= amd_uncore_stop,
 	.read		= amd_uncore_read,
 	.capabilities	= PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT,
+	.module		= THIS_MODULE,
 };
 
 static struct pmu amd_llc_pmu = {
@@ -360,6 +361,7 @@ static struct pmu amd_llc_pmu = {
 	.stop		= amd_uncore_stop,
 	.read		= amd_uncore_read,
 	.capabilities	= PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT,
+	.module		= THIS_MODULE,
 };
 
 static struct amd_uncore *amd_uncore_alloc(unsigned int cpu)
@@ -665,4 +667,28 @@ fail_nb:
 
 	return ret;
 }
-device_initcall(amd_uncore_init);
+
+static void __exit amd_uncore_exit(void)
+{
+	cpuhp_remove_state(CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE);
+	cpuhp_remove_state(CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING);
+	cpuhp_remove_state(CPUHP_PERF_X86_AMD_UNCORE_PREP);
+
+	if (boot_cpu_has(X86_FEATURE_PERFCTR_LLC)) {
+		perf_pmu_unregister(&amd_llc_pmu);
+		free_percpu(amd_uncore_llc);
+		amd_uncore_llc = NULL;
+	}
+
+	if (boot_cpu_has(X86_FEATURE_PERFCTR_NB)) {
+		perf_pmu_unregister(&amd_nb_pmu);
+		free_percpu(amd_uncore_nb);
+		amd_uncore_nb = NULL;
+	}
+}
+
+module_init(amd_uncore_init);
+module_exit(amd_uncore_exit);
+
+MODULE_DESCRIPTION("AMD Uncore Driver");
+MODULE_LICENSE("GPL v2");

  reply	other threads:[~2021-08-23  9:32 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-17 22:10 [PATCH 0/8] perf/amd: Fixes, uncore as a module, new IBS header Kim Phillips
2021-08-17 22:10 ` [PATCH 1/8] perf/amd/ibs: Extend PERF_PMU_CAP_NO_EXCLUDE to IBS Op Kim Phillips
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  7:45   ` [tip: perf/urgent] perf/x86/amd/ibs: " tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 2/8] perf/x86/amd/ibs: Add workaround for erratum #1,197 Kim Phillips
2021-08-19 22:29   ` Namhyung Kim
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  7:45   ` [tip: perf/urgent] perf/x86/amd/ibs: Work around erratum #1197 tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 3/8] perf/x86/amd/power: Assign pmu.module Kim Phillips
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  7:45   ` [tip: perf/urgent] " tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 4/8] perf/amd/uncore: Use free_percpu's built-in check for null Kim Phillips
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  8:09   ` [tip: perf/core] perf/amd/uncore: Simplify code, use free_percpu()'s built-in check for NULL tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 5/8] perf/amd/uncore: Use linux/ include paths instead of asm/ Kim Phillips
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  8:09   ` [tip: perf/core] perf/amd/uncore: Clean up header use, use <linux/ include paths instead of <asm/ tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 6/8] x86/cpu: Add helper function get_llc_id Kim Phillips
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  8:09   ` [tip: perf/core] x86/cpu: Add get_llc_id() helper function tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 7/8] perf/amd/uncore: Allow the driver to be built as a module Kim Phillips
2021-08-23  9:32   ` tip-bot2 for Kim Phillips [this message]
2021-08-26  8:09   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-17 22:10 ` [PATCH 8/8] perf/x86/amd/ibs: Add bitfield definitions in new header Kim Phillips
2021-08-19 22:56   ` Namhyung Kim
2021-08-23  9:32   ` [tip: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  8:09   ` [tip: perf/core] perf/x86/amd/ibs: Add bitfield definitions in new <asm/amd-ibs.h> header tip-bot2 for Kim Phillips

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=162971116413.25758.1318593988723804136.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=kim.phillips@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.