All of lore.kernel.org
 help / color / mirror / Atom feed
* [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA
@ 2022-04-29 20:28 tip-bot2 for Sandipan Das
  2022-05-09 17:24 ` Borislav Petkov
  0 siblings, 1 reply; 5+ messages in thread
From: tip-bot2 for Sandipan Das @ 2022-04-29 20:28 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vasant Hegde, Sandipan Das, Peter Zijlstra (Intel), x86, linux-kernel

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

Commit-ID:     fafd15ab6dc1fdfff66908e6d9231b124e1875cf
Gitweb:        https://git.kernel.org/tip/fafd15ab6dc1fdfff66908e6d9231b124e1875cf
Author:        Sandipan Das <sandipan.das@amd.com>
AuthorDate:    Thu, 21 Apr 2022 11:16:59 +05:30
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Fri, 29 Apr 2022 11:06:27 +02:00

kvm: x86/cpuid: Fix CPUID leaf 0xA

On some x86 processors, CPUID leaf 0xA provides information
on Architectural Performance Monitoring features. It
advertises a PMU version which Qemu uses to determine the
availability of additional MSRs to manage the PMCs.

Upon receiving a KVM_GET_SUPPORTED_CPUID ioctl request for
the same, the kernel constructs return values based on the
x86_pmu_capability irrespective of the vendor.

This leaf and the additional MSRs are not supported on AMD
processors. If PerfMonV2 is detected, the PMU version is
set to 2 and guest startup breaks because of an attempt to
access a non-existent MSR. Return zeros to avoid this.

Fixes: a6c06ed1a60a ("KVM: Expose the architectural performance monitoring CPUID leaf")
Reported-by: Vasant Hegde <vasant.hegde@amd.com>
Signed-off-by: Sandipan Das <sandipan.das@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/54bc7fe4cadf6bdef823bab1fba43d4891d2e1a9.1650515382.git.sandipan.das@amd.com
---
 arch/x86/kvm/cpuid.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index b24ca7f..ae1d963 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -887,6 +887,12 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
 		union cpuid10_eax eax;
 		union cpuid10_edx edx;
 
+		if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
+		    boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) {
+			entry->eax = entry->ebx = entry->ecx = entry->edx = 0;
+			break;
+		}
+
 		perf_get_x86_pmu_capability(&cap);
 
 		/*

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

* Re: [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA
  2022-04-29 20:28 [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA tip-bot2 for Sandipan Das
@ 2022-05-09 17:24 ` Borislav Petkov
  2022-05-10  4:59   ` Sandipan Das
  0 siblings, 1 reply; 5+ messages in thread
From: Borislav Petkov @ 2022-05-09 17:24 UTC (permalink / raw)
  To: Sandipan Das
  Cc: linux-tip-commits, Vasant Hegde, Sandipan Das,
	Peter Zijlstra (Intel),
	x86, linux-kernel

On Fri, Apr 29, 2022 at 08:28:48PM -0000, tip-bot2 for Sandipan Das wrote:
> The following commit has been merged into the perf/core branch of tip:
> 
> Commit-ID:     fafd15ab6dc1fdfff66908e6d9231b124e1875cf
> Gitweb:        https://git.kernel.org/tip/fafd15ab6dc1fdfff66908e6d9231b124e1875cf
> Author:        Sandipan Das <sandipan.das@amd.com>
> AuthorDate:    Thu, 21 Apr 2022 11:16:59 +05:30
> Committer:     Peter Zijlstra <peterz@infradead.org>
> CommitterDate: Fri, 29 Apr 2022 11:06:27 +02:00
> 
> kvm: x86/cpuid: Fix CPUID leaf 0xA
> 
> On some x86 processors, CPUID leaf 0xA provides information
> on Architectural Performance Monitoring features. It
> advertises a PMU version which Qemu uses to determine the
> availability of additional MSRs to manage the PMCs.
> 
> Upon receiving a KVM_GET_SUPPORTED_CPUID ioctl request for
> the same, the kernel constructs return values based on the
> x86_pmu_capability irrespective of the vendor.
> 
> This leaf and the additional MSRs are not supported on AMD
> processors. If PerfMonV2 is detected, the PMU version is
> set to 2 and guest startup breaks because of an attempt to
> access a non-existent MSR. Return zeros to avoid this.
> 
> Fixes: a6c06ed1a60a ("KVM: Expose the architectural performance monitoring CPUID leaf")
> Reported-by: Vasant Hegde <vasant.hegde@amd.com>
> Signed-off-by: Sandipan Das <sandipan.das@amd.com>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Link: https://lkml.kernel.org/r/54bc7fe4cadf6bdef823bab1fba43d4891d2e1a9.1650515382.git.sandipan.das@amd.com
> ---
>  arch/x86/kvm/cpuid.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> index b24ca7f..ae1d963 100644
> --- a/arch/x86/kvm/cpuid.c
> +++ b/arch/x86/kvm/cpuid.c
> @@ -887,6 +887,12 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
>  		union cpuid10_eax eax;
>  		union cpuid10_edx edx;
>  
> +		if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
> +		    boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) {
> +			entry->eax = entry->ebx = entry->ecx = entry->edx = 0;
> +			break;
> +		}
> +

This is all fine and dandy but this patch in tip conflicts with the very
similar patch of yours:

  5a1bde46f98b ("kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU")

which is already upstream.

So which is it? Should we zap this version in tip instead?

-- 
Regards/Gruss,
    Boris.

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

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

* Re: [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA
  2022-05-09 17:24 ` Borislav Petkov
@ 2022-05-10  4:59   ` Sandipan Das
  2022-05-10  9:35     ` Peter Zijlstra
  0 siblings, 1 reply; 5+ messages in thread
From: Sandipan Das @ 2022-05-10  4:59 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: linux-tip-commits, Vasant Hegde, Peter Zijlstra (Intel),
	pbonzini, x86, linux-kernel

Hi Boris,

On 5/9/2022 10:54 PM, Borislav Petkov wrote:
> On Fri, Apr 29, 2022 at 08:28:48PM -0000, tip-bot2 for Sandipan Das wrote:
>> The following commit has been merged into the perf/core branch of tip:
>>
>> Commit-ID:     fafd15ab6dc1fdfff66908e6d9231b124e1875cf
>> Gitweb:        https://git.kernel.org/tip/fafd15ab6dc1fdfff66908e6d9231b124e1875cf
>> Author:        Sandipan Das <sandipan.das@amd.com>
>> AuthorDate:    Thu, 21 Apr 2022 11:16:59 +05:30
>> Committer:     Peter Zijlstra <peterz@infradead.org>
>> CommitterDate: Fri, 29 Apr 2022 11:06:27 +02:00
>>
>> kvm: x86/cpuid: Fix CPUID leaf 0xA
>>
>> On some x86 processors, CPUID leaf 0xA provides information
>> on Architectural Performance Monitoring features. It
>> advertises a PMU version which Qemu uses to determine the
>> availability of additional MSRs to manage the PMCs.
>>
>> Upon receiving a KVM_GET_SUPPORTED_CPUID ioctl request for
>> the same, the kernel constructs return values based on the
>> x86_pmu_capability irrespective of the vendor.
>>
>> This leaf and the additional MSRs are not supported on AMD
>> processors. If PerfMonV2 is detected, the PMU version is
>> set to 2 and guest startup breaks because of an attempt to
>> access a non-existent MSR. Return zeros to avoid this.
>>
>> Fixes: a6c06ed1a60a ("KVM: Expose the architectural performance monitoring CPUID leaf")
>> Reported-by: Vasant Hegde <vasant.hegde@amd.com>
>> Signed-off-by: Sandipan Das <sandipan.das@amd.com>
>> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
>> Link: https://lkml.kernel.org/r/54bc7fe4cadf6bdef823bab1fba43d4891d2e1a9.1650515382.git.sandipan.das@amd.com
>> ---
>>  arch/x86/kvm/cpuid.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
>> index b24ca7f..ae1d963 100644
>> --- a/arch/x86/kvm/cpuid.c
>> +++ b/arch/x86/kvm/cpuid.c
>> @@ -887,6 +887,12 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
>>  		union cpuid10_eax eax;
>>  		union cpuid10_edx edx;
>>  
>> +		if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
>> +		    boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) {
>> +			entry->eax = entry->ebx = entry->ecx = entry->edx = 0;
>> +			break;
>> +		}
>> +
> 
> This is all fine and dandy but this patch in tip conflicts with the very
> similar patch of yours:
> 
>   5a1bde46f98b ("kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU")
> 
> which is already upstream.
> 
> So which is it? Should we zap this version in tip instead?
> 

Please remove this patch and keep commit 5a1bde46f98b instead.

- Sandipan

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

* Re: [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA
  2022-05-10  4:59   ` Sandipan Das
@ 2022-05-10  9:35     ` Peter Zijlstra
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Zijlstra @ 2022-05-10  9:35 UTC (permalink / raw)
  To: Sandipan Das
  Cc: Borislav Petkov, linux-tip-commits, Vasant Hegde, pbonzini, x86,
	linux-kernel

On Tue, May 10, 2022 at 10:29:34AM +0530, Sandipan Das wrote:
> > So which is it? Should we zap this version in tip instead?

I made it go away.

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

* [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA
@ 2022-05-04  9:23 tip-bot2 for Sandipan Das
  0 siblings, 0 replies; 5+ messages in thread
From: tip-bot2 for Sandipan Das @ 2022-05-04  9:23 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Vasant Hegde, Sandipan Das, Peter Zijlstra (Intel), x86, linux-kernel

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

Commit-ID:     202c3484768bce3f077efbbcc1eaa9cac8010093
Gitweb:        https://git.kernel.org/tip/202c3484768bce3f077efbbcc1eaa9cac8010093
Author:        Sandipan Das <sandipan.das@amd.com>
AuthorDate:    Thu, 21 Apr 2022 11:16:59 +05:30
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Wed, 04 May 2022 11:18:27 +02:00

kvm: x86/cpuid: Fix CPUID leaf 0xA

On some x86 processors, CPUID leaf 0xA provides information
on Architectural Performance Monitoring features. It
advertises a PMU version which Qemu uses to determine the
availability of additional MSRs to manage the PMCs.

Upon receiving a KVM_GET_SUPPORTED_CPUID ioctl request for
the same, the kernel constructs return values based on the
x86_pmu_capability irrespective of the vendor.

This leaf and the additional MSRs are not supported on AMD
processors. If PerfMonV2 is detected, the PMU version is
set to 2 and guest startup breaks because of an attempt to
access a non-existent MSR. Return zeros to avoid this.

Fixes: a6c06ed1a60a ("KVM: Expose the architectural performance monitoring CPUID leaf")
Reported-by: Vasant Hegde <vasant.hegde@amd.com>
Signed-off-by: Sandipan Das <sandipan.das@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/54bc7fe4cadf6bdef823bab1fba43d4891d2e1a9.1650515382.git.sandipan.das@amd.com
---
 arch/x86/kvm/cpuid.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index b24ca7f..ae1d963 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -887,6 +887,12 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
 		union cpuid10_eax eax;
 		union cpuid10_edx edx;
 
+		if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD ||
+		    boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) {
+			entry->eax = entry->ebx = entry->ecx = entry->edx = 0;
+			break;
+		}
+
 		perf_get_x86_pmu_capability(&cap);
 
 		/*

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

end of thread, other threads:[~2022-05-10  9:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-29 20:28 [tip: perf/core] kvm: x86/cpuid: Fix CPUID leaf 0xA tip-bot2 for Sandipan Das
2022-05-09 17:24 ` Borislav Petkov
2022-05-10  4:59   ` Sandipan Das
2022-05-10  9:35     ` Peter Zijlstra
2022-05-04  9:23 tip-bot2 for Sandipan Das

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.