On a system with X86_FEATURE_ARCH_PERFMON disabled
and with a model not known by family PMU drivers,
user gets a kernel message log like the following:
[ 0.100114] Performance Events: unsupported p6 CPU model 85 no PMU driver, 
software events only.

The "unsupported .. CPU" part may be confusing for some
users. Rewording the messages on the failure path to:
[ 0.667154] Performance Events: unknown p6 PMU on CPU model 85: 
!X86_FEATURE_ARCH_PERFMON: no PMU driver, software events only.

Cc: Thomas Gleixner <t...@linutronix.de>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: "H. Peter Anvin" <h...@zytor.com>
Cc: x...@kernel.org
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Andi Kleen <a...@linux.intel.com>
Cc: Kan Liang <kan.li...@linux.intel.com>
Cc: Dan Carpenter <dan.carpen...@oracle.com>
Cc: Eduardo Valentin <edu...@amazon.com>
Cc: Jia Zhang <qianyue...@alibaba-inc.com>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org
Reported-by: Matt Wilson <m...@amazon.com>
Signed-off-by: Eduardo Valentin <edu...@amazon.com>
---
 arch/x86/events/intel/core.c | 15 +++++++++++----
 arch/x86/events/intel/p4.c   |  2 +-
 arch/x86/events/intel/p6.c   |  3 ++-
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 86f0c15dcc2d..b57a16997ee6 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -3884,15 +3884,22 @@ __init int intel_pmu_init(void)
        char *name;
 
        if (!cpu_has(&boot_cpu_data, X86_FEATURE_ARCH_PERFMON)) {
+               int ret = -ENODEV;
+
                switch (boot_cpu_data.x86) {
                case 0x6:
-                       return p6_pmu_init();
+                       ret = p6_pmu_init();
+                       break;
                case 0xb:
-                       return knc_pmu_init();
+                       ret = knc_pmu_init();
+                       break;
                case 0xf:
-                       return p4_pmu_init();
+                       ret = p4_pmu_init();
+                       break;
                }
-               return -ENODEV;
+               if (ret)
+                       pr_cont(" !X86_FEATURE_ARCH_PERFMON: ");
+               return ret;
        }
 
        /*
diff --git a/arch/x86/events/intel/p4.c b/arch/x86/events/intel/p4.c
index d32c0eed38ca..963d2b0600f6 100644
--- a/arch/x86/events/intel/p4.c
+++ b/arch/x86/events/intel/p4.c
@@ -1346,7 +1346,7 @@ __init int p4_pmu_init(void)
 
        rdmsr(MSR_IA32_MISC_ENABLE, low, high);
        if (!(low & (1 << 7))) {
-               pr_cont("unsupported Netburst CPU model %d ",
+               pr_cont("unknown Netburst PMU on CPU model %d: ",
                        boot_cpu_data.x86_model);
                return -ENODEV;
        }
diff --git a/arch/x86/events/intel/p6.c b/arch/x86/events/intel/p6.c
index 408879b0c0d4..221e374299b2 100644
--- a/arch/x86/events/intel/p6.c
+++ b/arch/x86/events/intel/p6.c
@@ -269,7 +269,8 @@ __init int p6_pmu_init(void)
                break;
 
        default:
-               pr_cont("unsupported p6 CPU model %d ", 
boot_cpu_data.x86_model);
+               pr_cont("unknown p6 PMU on CPU model %d: ",
+                       boot_cpu_data.x86_model);
                return -ENODEV;
        }
 
-- 
2.18.0

Reply via email to