Linux kernel -stable discussions
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: Kim Phillips <kim.phillips@amd.com>
Cc: "Peter Zijlstra" <peterz@infradead.org>,
	"Ingo Molnar" <mingo@kernel.org>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
	"Andi Kleen" <ak@linux.intel.com>,
	"Arnaldo Carvalho de Melo" <acme@kernel.org>,
	"Babu Moger" <babu.moger@amd.com>,
	"Fenghua Yu" <fenghua.yu@intel.com>,
	"Frank van der Linden" <fllinden@amazon.com>,
	"H . Peter Anvin" <hpa@zytor.com>,
	"Huang Rui" <ray.huang@amd.com>,
	"Janakarajan Natarajan" <Janakarajan.Natarajan@amd.com>,
	"Jan Beulich" <jbeulich@suse.com>,
	"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
	"Jiri Olsa" <jolsa@redhat.com>,
	"Josh Poimboeuf" <jpoimboe@redhat.com>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Luwei Kang" <luwei.kang@intel.com>,
	"Martin Liška" <mliska@suse.cz>,
	"Matt Fleming" <matt@codeblueprint.co.uk>,
	"Michael Petlan" <mpetlan@redhat.com>,
	"Namhyung Kim" <namhyung@kernel.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Pawan Gupta" <pawan.kumar.gupta@linux.intel.com>,
	"Suravee Suthikulpanit" <Suravee.Suthikulpanit@amd.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Tom Lendacky" <thomas.lendacky@amd.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: Re: [PATCH 2/2 v2 RESEND] x86/cpu/amd: Enable the fixed intructions retired free counter IRPERF
Date: Tue, 11 Feb 2020 14:42:05 +0100	[thread overview]
Message-ID: <20200211134205.GB32279@zn.tnic> (raw)
In-Reply-To: <20200207230427.26515-2-kim.phillips@amd.com>

On Fri, Feb 07, 2020 at 05:04:27PM -0600, Kim Phillips wrote:
> commit aaf248848db50 ("perf/x86/msr: Add AMD IRPERF (Instructions
> Retired) performance counter") added support for 'perf -e msr/irperf/',
> but when exercised, we always get a 0 count:
> 
> BEFORE:
> 
> $ sudo perf stat -e instructions,msr/irperf/ true
> 
>  Performance counter stats for 'true':
> 
>            624,833      instructions
>                                                   #    0.00  stalled cycles per insn
>                  0      msr/irperf/
> 
> It turns out it simply needs its enable bit - HWCR bit 30 - set.  This patch

Avoid having "This patch" or "This commit" in the commit message. It is
tautologically useless.

Also, do

$ git grep 'This patch' Documentation/process

for more details.

> does just that.
> 
> Enablement is restricted to all machines advertising IRPERF capability,
> except those susceptible to an erratum that makes the IRPERF return
> bad values.
> 
> That erratum occurs in Family 17h models 00-1fh [1], but not in F17h
> models 20h and above [2].
> 
> AFTER (on a family 17h model 31h machine):
> 
> $ sudo perf stat -e instructions,msr/irperf/ true
> 
>  Performance counter stats for 'true':
> 
>            621,690      instructions
>                                                   #    0.00  stalled cycles per insn
>            622,490      msr/irperf/
> 
> [1] "Revision Guide for AMD Family 17h Models 00h-0Fh Processors",
>     currently available here:
> 
>     https://www.amd.com/system/files/TechDocs/55449_Fam_17h_M_00h-0Fh_Rev_Guide.pdf
> 
> [2] "Revision Guide for AMD Family 17h Models 30h-3Fh Processors",
>     currently available here:
> 
>     https://developer.amd.com/wp-content/resources/56323-PUB_0.74.pdf

How stable are those links? Past experience shows not very.

Please upload those to a bugzilla.kernel.org entry and add that URL here
with a Link: tag.

> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> Cc: Andi Kleen <ak@linux.intel.com>
> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> Cc: Babu Moger <babu.moger@amd.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: Frank van der Linden <fllinden@amazon.com>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Huang Rui <ray.huang@amd.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
> Cc: Jan Beulich <jbeulich@suse.com>
> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Cc: Josh Poimboeuf <jpoimboe@redhat.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Luwei Kang <luwei.kang@intel.com>
> Cc: Martin Liška <mliska@suse.cz>
> Cc: Matt Fleming <matt@codeblueprint.co.uk>
> Cc: Michael Petlan <mpetlan@redhat.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Tom Lendacky <thomas.lendacky@amd.com>
> Cc: x86@kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@vger.kernel.org
> Fixes: aaf248848db50 ("perf/x86/msr: Add AMD IRPERF (Instructions Retired) performance counter")
> Signed-off-by: Kim Phillips <kim.phillips@amd.com>
> ---
> RESEND, adding Michael Petlan to cc. Original v2:
> 
> https://lore.kernel.org/lkml/20200121171232.28839-2-kim.phillips@amd.com/
> 
> v2: Based on Andi Kleen's review:
> 
>     https://lore.kernel.org/lkml/20200116040324.GI302770@tassilo.jf.intel.com/
> 
>     Add an amd_erratum_1054 and use cpu_has_bug infrastructure instead of
>     open-coding the {family,model} check.
> 
>  arch/x86/include/asm/cpufeatures.h |  1 +
>  arch/x86/include/asm/msr-index.h   |  2 ++
>  arch/x86/kernel/cpu/amd.c          | 17 +++++++++++++++++
>  3 files changed, 20 insertions(+)
> 
> diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
> index f3327cb56edf..1c1600e7476b 100644
> --- a/arch/x86/include/asm/cpufeatures.h
> +++ b/arch/x86/include/asm/cpufeatures.h
> @@ -404,5 +404,6 @@
>  #define X86_BUG_SWAPGS			X86_BUG(21) /* CPU is affected by speculation through SWAPGS */
>  #define X86_BUG_TAA			X86_BUG(22) /* CPU is affected by TSX Async Abort(TAA) */
>  #define X86_BUG_ITLB_MULTIHIT		X86_BUG(23) /* CPU may incur MCE during certain page attribute changes */
> +#define X86_BUG_AMD_E1054		X86_BUG(24) /* CPU is among the affected by Erratum 1054 */

That is visible in /proc/cpuinfo and the string "amd_e1054" means
nothing. Call that

X86_BUG_IRPERF

or so to at least give some hint as to what the bug is.

>  
>  #endif /* _ASM_X86_CPUFEATURES_H */
> diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h
> index ebe1685e92dd..d5e517d1c3dd 100644
> --- a/arch/x86/include/asm/msr-index.h
> +++ b/arch/x86/include/asm/msr-index.h
> @@ -512,6 +512,8 @@
>  #define MSR_K7_HWCR			0xc0010015
>  #define MSR_K7_HWCR_SMMLOCK_BIT		0
>  #define MSR_K7_HWCR_SMMLOCK		BIT_ULL(MSR_K7_HWCR_SMMLOCK_BIT)
> +#define MSR_K7_HWCR_IRPERF_EN_BIT	30
> +#define MSR_K7_HWCR_IRPERF_EN		BIT_ULL(MSR_K7_HWCR_IRPERF_EN_BIT)
>  #define MSR_K7_FID_VID_CTL		0xc0010041
>  #define MSR_K7_FID_VID_STATUS		0xc0010042
>  
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index 62c30279be77..c067234a271f 100644
> --- a/arch/x86/kernel/cpu/amd.c
> +++ b/arch/x86/kernel/cpu/amd.c
> @@ -28,6 +28,7 @@
>  
>  static const int amd_erratum_383[];
>  static const int amd_erratum_400[];
> +static const int amd_erratum_1054[];
>  static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum);
>  
>  /*
> @@ -701,6 +702,9 @@ static void early_init_amd(struct cpuinfo_x86 *c)
>  	if (cpu_has_amd_erratum(c, amd_erratum_400))
>  		set_cpu_bug(c, X86_BUG_AMD_E400);
>  
> +	if (cpu_has_amd_erratum(c, amd_erratum_1054))
> +		set_cpu_bug(c, X86_BUG_AMD_E1054);
> +
>  	early_detect_mem_encrypt(c);
>  
>  	/* Re-enable TopologyExtensions if switched off by BIOS */
> @@ -978,6 +982,15 @@ static void init_amd(struct cpuinfo_x86 *c)
>  	/* AMD CPUs don't reset SS attributes on SYSRET, Xen does. */
>  	if (!cpu_has(c, X86_FEATURE_XENPV))
>  		set_cpu_bug(c, X86_BUG_SYSRET_SS_ATTRS);
> +
> +	/*
> +	 * Turn on the Instructions Retired free counter on machines not
> +	 * susceptible to erratum #1054 "Instructions Retired Performance
> +	 * Counter May Be Inaccurate"
				     .
				     ^
				     |--- fullstop.

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

      reply	other threads:[~2020-02-11 13:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-07 23:04 [PATCH 1/2 v2 RESEND] perf/x86/amd: Add missing L2 misses event spec to AMD Family 17h's event map Kim Phillips
2020-02-07 23:04 ` [PATCH 2/2 v2 RESEND] x86/cpu/amd: Enable the fixed intructions retired free counter IRPERF Kim Phillips
2020-02-11 13:42   ` Borislav Petkov [this message]

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=20200211134205.GB32279@zn.tnic \
    --to=bp@alien8.de \
    --cc=Janakarajan.Natarajan@amd.com \
    --cc=Suravee.Suthikulpanit@amd.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=babu.moger@amd.com \
    --cc=fenghua.yu@intel.com \
    --cc=fllinden@amazon.com \
    --cc=hpa@zytor.com \
    --cc=jbeulich@suse.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=jolsa@redhat.com \
    --cc=jpoimboe@redhat.com \
    --cc=kim.phillips@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luwei.kang@intel.com \
    --cc=matt@codeblueprint.co.uk \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mliska@suse.cz \
    --cc=mpetlan@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=pawan.kumar.gupta@linux.intel.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=ray.huang@amd.com \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox