Message ID | 20211217124934.32893-1-wei.w.wang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all | expand |
On Fri, Dec 17, 2021 at 6:05 AM Wei Wang <wei.w.wang@intel.com> wrote: > > The fixed counter 3 is used for the Topdown metrics, which hasn't been > enabled for KVM guests. Userspace accessing to it will fail as it's not > included in get_fixed_pmc(). This breaks KVM selftests on ICX+ machines, > which have this counter. > > To reproduce it on ICX+ machines, ./state_test reports: > ==== Test Assertion Failure ==== > lib/x86_64/processor.c:1078: r == nmsrs > pid=4564 tid=4564 - Argument list too long > 1 0x000000000040b1b9: vcpu_save_state at processor.c:1077 > 2 0x0000000000402478: main at state_test.c:209 (discriminator 6) > 3 0x00007fbe21ed5f92: ?? ??:0 > 4 0x000000000040264d: _start at ??:? > Unexpected result from KVM_GET_MSRS, r: 17 (failed MSR was 0x30c) > > With this patch, it works well. > > Signed-off-by: Wei Wang <wei.w.wang@intel.com> Reviewed-and-tested-by: Jim Mattson <jmattson@google.com> I believe this fixes commit 2e8cd7a3b828 ("kvm: x86: limit the maximum number of vPMU fixed counters to 3") from v5.9. Should this be cc'ed to stable?
On Tuesday, January 18, 2022 11:54 AM, Jim Mattson wrote: > On Fri, Dec 17, 2021 at 6:05 AM Wei Wang <wei.w.wang@intel.com> wrote: > > > > The fixed counter 3 is used for the Topdown metrics, which hasn't been > > enabled for KVM guests. Userspace accessing to it will fail as it's > > not included in get_fixed_pmc(). This breaks KVM selftests on ICX+ > > machines, which have this counter. > > > > To reproduce it on ICX+ machines, ./state_test reports: > > ==== Test Assertion Failure ==== > > lib/x86_64/processor.c:1078: r == nmsrs > > pid=4564 tid=4564 - Argument list too long > > 1 0x000000000040b1b9: vcpu_save_state at processor.c:1077 > > 2 0x0000000000402478: main at state_test.c:209 (discriminator 6) > > 3 0x00007fbe21ed5f92: ?? ??:0 > > 4 0x000000000040264d: _start at ??:? > > Unexpected result from KVM_GET_MSRS, r: 17 (failed MSR was 0x30c) > > > > With this patch, it works well. > > > > Signed-off-by: Wei Wang <wei.w.wang@intel.com> > Reviewed-and-tested-by: Jim Mattson <jmattson@google.com> > > I believe this fixes commit 2e8cd7a3b828 ("kvm: x86: limit the maximum > number of vPMU fixed counters to 3") from v5.9. Should this be cc'ed to > stable? Sounds good to me. Thanks, Wei
On 1/18/22 06:04, Wang, Wei W wrote: > On Tuesday, January 18, 2022 11:54 AM, Jim Mattson wrote: >> On Fri, Dec 17, 2021 at 6:05 AM Wei Wang <wei.w.wang@intel.com> wrote: >>> >>> The fixed counter 3 is used for the Topdown metrics, which hasn't been >>> enabled for KVM guests. Userspace accessing to it will fail as it's >>> not included in get_fixed_pmc(). This breaks KVM selftests on ICX+ >>> machines, which have this counter. >>> >>> To reproduce it on ICX+ machines, ./state_test reports: >>> ==== Test Assertion Failure ==== >>> lib/x86_64/processor.c:1078: r == nmsrs >>> pid=4564 tid=4564 - Argument list too long >>> 1 0x000000000040b1b9: vcpu_save_state at processor.c:1077 >>> 2 0x0000000000402478: main at state_test.c:209 (discriminator 6) >>> 3 0x00007fbe21ed5f92: ?? ??:0 >>> 4 0x000000000040264d: _start at ??:? >>> Unexpected result from KVM_GET_MSRS, r: 17 (failed MSR was 0x30c) >>> >>> With this patch, it works well. >>> >>> Signed-off-by: Wei Wang <wei.w.wang@intel.com> >> Reviewed-and-tested-by: Jim Mattson <jmattson@google.com> >> >> I believe this fixes commit 2e8cd7a3b828 ("kvm: x86: limit the maximum >> number of vPMU fixed counters to 3") from v5.9. Should this be cc'ed to >> stable? > > Sounds good to me. Sent, thanks. Paolo
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 0cf1082455df..ed55f037619f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1331,7 +1331,7 @@ static const u32 msrs_to_save_all[] = { MSR_IA32_UMWAIT_CONTROL, MSR_ARCH_PERFMON_FIXED_CTR0, MSR_ARCH_PERFMON_FIXED_CTR1, - MSR_ARCH_PERFMON_FIXED_CTR0 + 2, MSR_ARCH_PERFMON_FIXED_CTR0 + 3, + MSR_ARCH_PERFMON_FIXED_CTR0 + 2, MSR_CORE_PERF_FIXED_CTR_CTRL, MSR_CORE_PERF_GLOBAL_STATUS, MSR_CORE_PERF_GLOBAL_CTRL, MSR_CORE_PERF_GLOBAL_OVF_CTRL, MSR_ARCH_PERFMON_PERFCTR0, MSR_ARCH_PERFMON_PERFCTR1,
The fixed counter 3 is used for the Topdown metrics, which hasn't been enabled for KVM guests. Userspace accessing to it will fail as it's not included in get_fixed_pmc(). This breaks KVM selftests on ICX+ machines, which have this counter. To reproduce it on ICX+ machines, ./state_test reports: ==== Test Assertion Failure ==== lib/x86_64/processor.c:1078: r == nmsrs pid=4564 tid=4564 - Argument list too long 1 0x000000000040b1b9: vcpu_save_state at processor.c:1077 2 0x0000000000402478: main at state_test.c:209 (discriminator 6) 3 0x00007fbe21ed5f92: ?? ??:0 4 0x000000000040264d: _start at ??:? Unexpected result from KVM_GET_MSRS, r: 17 (failed MSR was 0x30c) With this patch, it works well. Signed-off-by: Wei Wang <wei.w.wang@intel.com> --- arch/x86/kvm/x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)