All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[]
@ 2021-04-22  0:18 Jim Mattson
  2021-04-22  2:05 ` Andi Kleen
  2021-04-23  6:53 ` [tip: perf/urgent] " tip-bot2 for Jim Mattson
  0 siblings, 2 replies; 3+ messages in thread
From: Jim Mattson @ 2021-04-22  0:18 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Thomas Gleixner, Borislav Petkov, x86, H. Peter Anvin, Kan Liang,
	Andi Kleen, linux-kernel, kvm-list
  Cc: Jim Mattson, Peter Shier

The only stepping of Broadwell Xeon parts is stepping 1. Fix the
relevant isolation_ucodes[] entry, which previously enumerated
stepping 2.

Although the original commit was characterized as an optimization, it
is also a workaround for a correctness issue.

If a PMI arrives between kvm's call to perf_guest_get_msrs() and the
subsequent VM-entry, a stale value for the IA32_PEBS_ENABLE MSR may be
restored at the next VM-exit. This is because, unbeknownst to kvm, PMI
throttling may clear bits in the IA32_PEBS_ENABLE MSR. CPUs with "PEBS
isolation" don't suffer from this issue, because perf_guest_get_msrs()
doesn't report the IA32_PEBS_ENABLE value.

Fixes: 9b545c04abd4f ("perf/x86/kvm: Avoid unnecessary work in guest filtering")
Cc: Andi Kleen <ak@linux.intel.com>
Reported-by: Peter Shier <pshier@google.com>
Signed-off-by: Jim Mattson <jmattson@google.com>
Reviewed-by: Peter Shier <pshier@google.com>
---
 arch/x86/events/intel/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 37ce38403cb8..c57ec8e27907 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -4516,7 +4516,7 @@ static const struct x86_cpu_desc isolation_ucodes[] = {
 	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D,		 3, 0x07000009),
 	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D,		 4, 0x0f000009),
 	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D,		 5, 0x0e000002),
-	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X,		 2, 0x0b000014),
+	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X,		 1, 0x0b000014),
 	INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X,		 3, 0x00000021),
 	INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X,		 4, 0x00000000),
 	INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X,		 5, 0x00000000),
-- 
2.31.1.368.gbe11c130af-goog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[]
  2021-04-22  0:18 [PATCH] perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[] Jim Mattson
@ 2021-04-22  2:05 ` Andi Kleen
  2021-04-23  6:53 ` [tip: perf/urgent] " tip-bot2 for Jim Mattson
  1 sibling, 0 replies; 3+ messages in thread
From: Andi Kleen @ 2021-04-22  2:05 UTC (permalink / raw)
  To: Jim Mattson
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Thomas Gleixner, Borislav Petkov, x86, H. Peter Anvin, Kan Liang,
	linux-kernel, kvm-list, Peter Shier

On Wed, Apr 21, 2021 at 05:18:34PM -0700, Jim Mattson wrote:
> The only stepping of Broadwell Xeon parts is stepping 1. Fix the
> relevant isolation_ucodes[] entry, which previously enumerated
> stepping 2.
> 
> Although the original commit was characterized as an optimization, it
> is also a workaround for a correctness issue.
> 
> If a PMI arrives between kvm's call to perf_guest_get_msrs() and the
> subsequent VM-entry, a stale value for the IA32_PEBS_ENABLE MSR may be
> restored at the next VM-exit. This is because, unbeknownst to kvm, PMI
> throttling may clear bits in the IA32_PEBS_ENABLE MSR. CPUs with "PEBS
> isolation" don't suffer from this issue, because perf_guest_get_msrs()
> doesn't report the IA32_PEBS_ENABLE value.

Acked-by: Andi Kleen <ak@linux.intel.com>

-Andi

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [tip: perf/urgent] perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[]
  2021-04-22  0:18 [PATCH] perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[] Jim Mattson
  2021-04-22  2:05 ` Andi Kleen
@ 2021-04-23  6:53 ` tip-bot2 for Jim Mattson
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot2 for Jim Mattson @ 2021-04-23  6:53 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Jim Mattson, Peter Zijlstra (Intel),
	Peter Shier, Andi Kleen, x86, linux-kernel

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

Commit-ID:     4b2f1e59229b9da319d358828cdfa4ddbc140769
Gitweb:        https://git.kernel.org/tip/4b2f1e59229b9da319d358828cdfa4ddbc140769
Author:        Jim Mattson <jmattson@google.com>
AuthorDate:    Wed, 21 Apr 2021 17:18:34 -07:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Thu, 22 Apr 2021 14:36:01 +02:00

perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[]

The only stepping of Broadwell Xeon parts is stepping 1. Fix the
relevant isolation_ucodes[] entry, which previously enumerated
stepping 2.

Although the original commit was characterized as an optimization, it
is also a workaround for a correctness issue.

If a PMI arrives between kvm's call to perf_guest_get_msrs() and the
subsequent VM-entry, a stale value for the IA32_PEBS_ENABLE MSR may be
restored at the next VM-exit. This is because, unbeknownst to kvm, PMI
throttling may clear bits in the IA32_PEBS_ENABLE MSR. CPUs with "PEBS
isolation" don't suffer from this issue, because perf_guest_get_msrs()
doesn't report the IA32_PEBS_ENABLE value.

Fixes: 9b545c04abd4f ("perf/x86/kvm: Avoid unnecessary work in guest filtering")
Signed-off-by: Jim Mattson <jmattson@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Peter Shier <pshier@google.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Link: https://lkml.kernel.org/r/20210422001834.1748319-1-jmattson@google.com
---
 arch/x86/events/intel/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 37ce384..c57ec8e 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -4516,7 +4516,7 @@ static const struct x86_cpu_desc isolation_ucodes[] = {
 	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D,		 3, 0x07000009),
 	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D,		 4, 0x0f000009),
 	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_D,		 5, 0x0e000002),
-	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X,		 2, 0x0b000014),
+	INTEL_CPU_DESC(INTEL_FAM6_BROADWELL_X,		 1, 0x0b000014),
 	INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X,		 3, 0x00000021),
 	INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X,		 4, 0x00000000),
 	INTEL_CPU_DESC(INTEL_FAM6_SKYLAKE_X,		 5, 0x00000000),

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-04-23  6:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-22  0:18 [PATCH] perf/x86/kvm: Fix Broadwell Xeon stepping in isolation_ucodes[] Jim Mattson
2021-04-22  2:05 ` Andi Kleen
2021-04-23  6:53 ` [tip: perf/urgent] " tip-bot2 for Jim Mattson

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.