Re: [PATCH V6 2/5] perf/x86/kvm: Avoid unnecessary work in guest filtering

From: Liang, Kan
Date: Mon Feb 04 2019 - 11:55:35 EST




On 2/4/2019 11:23 AM, Peter Zijlstra wrote:
On Mon, Feb 04, 2019 at 10:57:32AM -0500, Liang, Kan wrote:


On 2/4/2019 10:44 AM, Peter Zijlstra wrote:
On Mon, Feb 04, 2019 at 04:38:27PM +0100, Peter Zijlstra wrote:
+static const struct x86_cpu_desc isolation_ucodes[] = {
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_MOBILE, 9, 0x0000004e),
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_MOBILE, 10, 0x0000004e),
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_MOBILE, 11, 0x0000004e),
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_MOBILE, 12, 0x0000004e),

+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_DESKTOP, 10, 0x0000004e),
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_DESKTOP, 11, 0x0000004e),
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_DESKTOP, 12, 0x0000004e),
+ INTEL_CPU_DESC(INTEL_FAM6_KABYLAKE_DESKTOP, 13, 0x0000004e),

Do we want a special stepping (0 / -1) to be able to denote 'all' ?


Something like as below?
#define X86_STEPPING_ANY 0xff

As my understanding, the microcode version for each stepping is independent
and irrelevant. The 0x0000004e should be just coincidence.
If so, I don't think X86_STEPPING_ANY is very useful.

Sure; but since we have this happy accident, we can still use it for a
notational convenience, right?

We cannot apply X86_STEPPING_ANY to ignore the stepping. There will be problems for 0-8 stepping for KABYLAKE_MOBILE.
I think what we need is x86_match_cpu_with_stepping_range().
But I don't think it is worth enabling it just for this rare case.

Thanks,
Kan