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>,
	Ingo Molnar <mingo@kernel.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: Thu, 26 Aug 2021 08:09:50 -0000	[thread overview]
Message-ID: <162996539004.25758.14799927560283241124.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:     05485745ad482c1910a45f23a5c255f6a0df0f46
Gitweb:        https://git.kernel.org/tip/05485745ad482c1910a45f23a5c255f6a0df0f46
Author:        Kim Phillips <kim.phillips@amd.com>
AuthorDate:    Tue, 17 Aug 2021 17:10:47 -05:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Thu, 26 Aug 2021 09:14:36 +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 without having
to reboot the kernel in most cases.

Signed-off-by: Kim Phillips <kim.phillips@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.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");

  parent reply	other threads:[~2021-08-26  8:09 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: perf/core] " tip-bot2 for Kim Phillips
2021-08-26  8:09   ` tip-bot2 for Kim Phillips [this message]
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=162996539004.25758.14799927560283241124.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=mingo@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.