diff mbox series

KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all

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

Commit Message

Wang, Wei W Dec. 17, 2021, 12:49 p.m. UTC
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(-)

Comments

Jim Mattson Jan. 18, 2022, 3:54 a.m. UTC | #1
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?
Wang, Wei W Jan. 18, 2022, 5:04 a.m. UTC | #2
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
Paolo Bonzini Jan. 18, 2022, 9:11 a.m. UTC | #3
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 mbox series

Patch

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,