From: tip-bot for Pu Wen <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com,
puwen@hygon.cn, linux-kernel@vger.kernel.org, bp@suse.de
Subject: [tip:x86/cpu] x86/events: Add Hygon Dhyana support to PMU infrastructure
Date: Thu, 27 Sep 2018 10:03:17 -0700 [thread overview]
Message-ID: <tip-6d0ef316b9f8ea03fa867debda70b2f11a0b9736@git.kernel.org> (raw)
In-Reply-To: <9d93ed54a975f33ef7247e0967960f4ce5d3d990.1537533369.git.puwen@hygon.cn>
Commit-ID: 6d0ef316b9f8ea03fa867debda70b2f11a0b9736
Gitweb: https://git.kernel.org/tip/6d0ef316b9f8ea03fa867debda70b2f11a0b9736
Author: Pu Wen <puwen@hygon.cn>
AuthorDate: Sun, 23 Sep 2018 17:34:47 +0800
Committer: Borislav Petkov <bp@suse.de>
CommitDate: Thu, 27 Sep 2018 18:28:57 +0200
x86/events: Add Hygon Dhyana support to PMU infrastructure
The PMU architecture for the Hygon Dhyana CPU is similar to the AMD
Family 17h one. To support it, call amd_pmu_init() to share the AMD PMU
initialization flow, and change the PMU name to "HYGON".
The Hygon Dhyana CPU supports both legacy and extension PMC MSRs (perf
counter registers and event selection registers), so add Hygon Dhyana
support in the similar way as AMD does.
Signed-off-by: Pu Wen <puwen@hygon.cn>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Cc: tglx@linutronix.de
Cc: mingo@redhat.com
Cc: hpa@zytor.com
Cc: x86@kernel.org
Cc: thomas.lendacky@amd.com
Link: https://lkml.kernel.org/r/9d93ed54a975f33ef7247e0967960f4ce5d3d990.1537533369.git.puwen@hygon.cn
---
arch/x86/events/amd/core.c | 4 ++++
arch/x86/events/amd/uncore.c | 20 +++++++++++++-------
arch/x86/events/core.c | 4 ++++
arch/x86/kernel/cpu/perfctr-watchdog.c | 2 ++
4 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/arch/x86/events/amd/core.c b/arch/x86/events/amd/core.c
index c84584bb9402..7d2d7c801dba 100644
--- a/arch/x86/events/amd/core.c
+++ b/arch/x86/events/amd/core.c
@@ -669,6 +669,10 @@ static int __init amd_core_pmu_init(void)
* We fallback to using default amd_get_event_constraints.
*/
break;
+ case 0x18:
+ pr_cont("Fam18h ");
+ /* Using default amd_get_event_constraints. */
+ break;
default:
pr_err("core perfctr but no constraints; unknown hardware!\n");
return -ENODEV;
diff --git a/arch/x86/events/amd/uncore.c b/arch/x86/events/amd/uncore.c
index 981ba5e8241b..c7d745bc4136 100644
--- a/arch/x86/events/amd/uncore.c
+++ b/arch/x86/events/amd/uncore.c
@@ -507,17 +507,19 @@ static int __init amd_uncore_init(void)
{
int ret = -ENODEV;
- if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
+ if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
+ boot_cpu_data.x86_vendor != X86_VENDOR_HYGON)
return -ENODEV;
if (!boot_cpu_has(X86_FEATURE_TOPOEXT))
return -ENODEV;
- if (boot_cpu_data.x86 == 0x17) {
+ if (boot_cpu_data.x86 == 0x17 || boot_cpu_data.x86 == 0x18) {
/*
- * For F17h, the Northbridge counters are repurposed as Data
- * Fabric counters. Also, L3 counters are supported too. The PMUs
- * are exported based on family as either L2 or L3 and NB or DF.
+ * For F17h or F18h, the Northbridge counters are
+ * repurposed as Data Fabric counters. Also, L3
+ * counters are supported too. The PMUs are exported
+ * based on family as either L2 or L3 and NB or DF.
*/
num_counters_nb = NUM_COUNTERS_NB;
num_counters_llc = NUM_COUNTERS_L3;
@@ -547,7 +549,9 @@ static int __init amd_uncore_init(void)
if (ret)
goto fail_nb;
- pr_info("AMD NB counters detected\n");
+ pr_info("%s NB counters detected\n",
+ boot_cpu_data.x86_vendor == X86_VENDOR_HYGON ?
+ "HYGON" : "AMD");
ret = 0;
}
@@ -561,7 +565,9 @@ static int __init amd_uncore_init(void)
if (ret)
goto fail_llc;
- pr_info("AMD LLC counters detected\n");
+ pr_info("%s LLC counters detected\n",
+ boot_cpu_data.x86_vendor == X86_VENDOR_HYGON ?
+ "HYGON" : "AMD");
ret = 0;
}
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index dfb2f7c0d019..9c562f5fbde0 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -1776,6 +1776,10 @@ static int __init init_hw_perf_events(void)
case X86_VENDOR_AMD:
err = amd_pmu_init();
break;
+ case X86_VENDOR_HYGON:
+ err = amd_pmu_init();
+ x86_pmu.name = "HYGON";
+ break;
default:
err = -ENOTSUPP;
}
diff --git a/arch/x86/kernel/cpu/perfctr-watchdog.c b/arch/x86/kernel/cpu/perfctr-watchdog.c
index d389083330c5..9556930cd8c1 100644
--- a/arch/x86/kernel/cpu/perfctr-watchdog.c
+++ b/arch/x86/kernel/cpu/perfctr-watchdog.c
@@ -46,6 +46,7 @@ static inline unsigned int nmi_perfctr_msr_to_bit(unsigned int msr)
{
/* returns the bit offset of the performance counter register */
switch (boot_cpu_data.x86_vendor) {
+ case X86_VENDOR_HYGON:
case X86_VENDOR_AMD:
if (msr >= MSR_F15H_PERF_CTR)
return (msr - MSR_F15H_PERF_CTR) >> 1;
@@ -74,6 +75,7 @@ static inline unsigned int nmi_evntsel_msr_to_bit(unsigned int msr)
{
/* returns the bit offset of the event selection register */
switch (boot_cpu_data.x86_vendor) {
+ case X86_VENDOR_HYGON:
case X86_VENDOR_AMD:
if (msr >= MSR_F15H_PERF_CTL)
return (msr - MSR_F15H_PERF_CTL) >> 1;
next prev parent reply other threads:[~2018-09-27 17:03 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-23 9:30 [PATCH v8 00/16] Add support for Hygon Dhyana Family 18h processor Pu Wen
2018-09-23 9:33 ` [PATCH v8 01/16] x86/cpu: Create Hygon Dhyana architecture support file Pu Wen
2018-09-27 17:00 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:33 ` [PATCH v8 02/16] x86/cpu: Get cache info and setup cache cpumap for Hygon Dhyana Pu Wen
2018-09-27 17:01 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:34 ` [PATCH v8 03/16] x86/cpu/mtrr: Support TOP_MEM2 and get MTRR number Pu Wen
2018-09-27 17:02 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:34 ` [PATCH v8 04/16] x86/smpboot: SMP init no delay and not flush caches before sleep Pu Wen
2018-09-27 17:02 ` [tip:x86/cpu] x86/smpboot: Do not use BSP INIT delay and MWAIT to idle on Dhyana tip-bot for Pu Wen
2018-09-23 9:34 ` [PATCH v8 05/16] perf/x86: Add Hygon Dhyana support to PMU infrastructure Pu Wen
2018-09-27 17:03 ` tip-bot for Pu Wen [this message]
2018-09-23 9:35 ` [PATCH v8 06/16] x86/alternative: Init ideal_nops for Hygon Dhyana Pu Wen
2018-09-27 17:03 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:35 ` [PATCH v8 07/16] x86/pci: Add Hygon Dhyana support to PCI and north bridge Pu Wen
2018-09-23 11:10 ` Borislav Petkov
2018-09-23 12:54 ` Pu Wen
2018-09-24 15:24 ` Borislav Petkov
2018-09-25 12:27 ` Pu Wen
2018-09-25 12:30 ` Borislav Petkov
2018-09-25 12:57 ` Pu Wen
2018-09-25 14:45 ` [PATCH 1/2] x86/amd_nb: Add vendor checking for strict function access Pu Wen
2018-09-27 17:04 ` [tip:x86/cpu] x86/amd_nb: Check vendor in AMD-only functions tip-bot for Pu Wen
2018-09-25 14:46 ` [PATCH 2/2] x86/pci: Add Hygon Dhyana support to PCI and north bridge Pu Wen
2018-09-27 17:04 ` [tip:x86/cpu] x86/pci, x86/amd_nb: Add Hygon Dhyana support to PCI and northbridge tip-bot for Pu Wen
2018-09-23 9:35 ` [PATCH v8 08/16] x86/apic: Add Hygon Dhyana support to APIC Pu Wen
2018-09-27 17:05 ` [tip:x86/cpu] x86/apic: Add Hygon Dhyana support tip-bot for Pu Wen
2018-09-23 9:35 ` [PATCH v8 09/16] x86/bugs: Add mitigation to spectre and no meltdown for Hygon Dhyana Pu Wen
2018-09-27 17:06 ` [tip:x86/cpu] x86/bugs: Add Hygon Dhyana to the respective mitigation machinery tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 10/16] x86/mce: Add Hygon Dhyana support to MCE infrastructure Pu Wen
2018-09-23 9:36 ` [v8,10/16] " Pu Wen
2018-09-27 17:06 ` [tip:x86/cpu] x86/mce: Add Hygon Dhyana support to the MCA infrastructure tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 11/16] x86/kvm: Add Hygon Dhyana support to KVM infrastructure Pu Wen
2018-09-27 17:07 ` [tip:x86/cpu] x86/kvm: Add Hygon Dhyana support to KVM tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 12/16] x86/xen: Add Hygon Dhyana support to Xen Pu Wen
2018-09-23 9:36 ` Pu Wen
2018-09-27 17:07 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:37 ` [PATCH v8 13/16] ACPI, x86: Add Hygon Dhyana support Pu Wen
2018-09-27 17:08 ` [tip:x86/cpu] ACPI: " tip-bot for Pu Wen
2018-09-23 9:37 ` [PATCH v8 14/16] cpufreq, x86: " Pu Wen
2018-09-27 17:08 ` [tip:x86/cpu] cpufreq: " tip-bot for Pu Wen
2018-09-23 9:37 ` [PATCH v8 15/16] EDAC, amd64: " Pu Wen
2018-09-23 9:37 ` [v8,15/16] " Pu Wen
2018-09-23 9:38 ` [PATCH v8 16/16] cpupower, x86: " Pu Wen
-- strict thread matches above, loose matches on Subject: below --
2018-09-10 13:15 [PATCH v6 00/16] Add support for Hygon Dhyana Family 18h processor Pu Wen
2018-09-10 13:15 ` [PATCH v6 01/16] x86/cpu: Create Hygon Dhyana architecture support file Pu Wen
2018-09-10 16:38 ` Borislav Petkov
2018-09-11 6:33 ` Pu Wen
2018-09-10 13:15 ` [PATCH v6 02/16] x86/cpu: Get cache info and setup cache cpumap for Hygon Dhyana Pu Wen
2018-09-10 13:16 ` [PATCH v6 03/16] x86/cpu/mtrr: Support TOP_MEM2 and get MTRR number Pu Wen
2018-09-10 18:06 ` Borislav Petkov
2018-09-10 18:06 ` Borislav Petkov
2018-09-11 6:39 ` Pu Wen
2018-09-10 13:16 ` [PATCH v6 04/16] x86/smpboot: SMP init nodelay and not flush caches before sleep Pu Wen
2018-09-10 13:16 ` [PATCH v6 05/16] perf/x86: Add Hygon Dhyana support to PMU infrastructure Pu Wen
2018-09-10 18:17 ` Borislav Petkov
2018-09-11 7:00 ` Pu Wen
2018-09-10 13:16 ` [PATCH v6 06/16] x86/alternative: Init ideal_nops for Hygon Dhyana Pu Wen
2018-09-10 13:17 ` [PATCH v6 07/16] x86/pci: Add Hygon Dhyana support to PCI and north bridge Pu Wen
2018-09-11 10:07 ` Borislav Petkov
2018-09-19 17:20 ` Lendacky, Thomas
2018-09-19 17:20 ` Lendacky, Thomas
2018-09-20 7:25 ` Thomas Gleixner
2018-09-20 8:05 ` Pu Wen
2018-09-10 13:17 ` [PATCH v6 08/16] x86/apic: Add Hygon Dhyana support to APIC Pu Wen
2018-09-11 10:14 ` Borislav Petkov
2018-09-11 13:03 ` Pu Wen
2018-09-10 13:17 ` [PATCH v6 09/16] x86/bugs: Add mitigation to spectre and no meltdown for Hygon Dhyana Pu Wen
2018-09-11 10:38 ` Borislav Petkov
2018-09-11 13:17 ` Pu Wen
2018-09-10 13:17 ` [PATCH v6 10/16] x86/mce: Add Hygon Dhyana support to MCE infrastructure Pu Wen
2018-09-10 13:17 ` [v6,10/16] " Pu Wen
2018-09-11 10:43 ` [PATCH v6 10/16] " Borislav Petkov
2018-09-11 10:43 ` [v6,10/16] " Borislav Petkov
2018-09-10 13:18 ` [PATCH v6 11/16] x86/kvm: Add Hygon Dhyana support to KVM infrastructure Pu Wen
2018-09-10 13:19 ` [PATCH v6 12/16] x86/xen: Add Hygon Dhyana support to Xen Pu Wen
2018-09-10 13:19 ` Pu Wen
2018-09-10 13:19 ` [PATCH v6 13/16] ACPI, x86: Add Hygon Dhyana support Pu Wen
2018-09-10 13:20 ` [PATCH v6 14/16] cpufreq, " Pu Wen
2018-09-10 13:20 ` [PATCH v6 15/16] EDAC, amd64: " Pu Wen
2018-09-10 13:20 ` [v6,15/16] " Pu Wen
2018-09-11 10:51 ` [PATCH v6 15/16] " Borislav Petkov
2018-09-11 10:51 ` [v6,15/16] " Borislav Petkov
2018-09-10 13:20 ` [PATCH v6 16/16] cpupower, x86: " Pu Wen
2018-10-01 19:38 ` Shuah Khan
2018-10-04 1:21 ` [RESEND PATCH v8 16/16] cpupower: " Pu Wen
2018-10-04 8:03 ` [tip:x86/cpu] tools/cpupower: " tip-bot for Pu Wen
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=tip-6d0ef316b9f8ea03fa867debda70b2f11a0b9736@git.kernel.org \
--to=tipbot@zytor.com \
--cc=bp@suse.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=puwen@hygon.cn \
--cc=tglx@linutronix.de \
/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.