diff mbox series

KVM: x86/pt: Do not advertise Intel PT Event Trace capability

Message ID 20220106085533.84356-1-likexu@tencent.com (mailing list archive)
State New, archived
Headers show
Series KVM: x86/pt: Do not advertise Intel PT Event Trace capability | expand

Commit Message

Like Xu Jan. 6, 2022, 8:55 a.m. UTC
From: Like Xu <likexu@tencent.com>

The Inte PT Event Trace capability (Intel SDM Vol3, 32.2.4 Event Tracing)
is a new CPU feature that "exposes details about the asynchronous events,
when they are generated, and when their corresponding software event
handler completes execution".

It is not possible for KVM to emulate all events including interrupts,
VM exits, VM entries, INIT, SIPI events and etc. for guests and to
emulate the simultaneous writing of Control Flow Events and Event Data
packets generated by the KVM to the guest PT buffer.

For KVM, it is best not to advertise the Event Trace feature and just
let it be a system-wide-only tracing capability.

Signed-off-by: Like Xu <likexu@tencent.com>
---
Off topic, other new PT features such as "PSB and PMI Preservation Supported"
and "TNT disable" are under investigation or awaiting host support to move on.

 arch/x86/kvm/cpuid.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Paolo Bonzini Jan. 7, 2022, 6:18 p.m. UTC | #1
On 1/6/22 09:55, Like Xu wrote:
> From: Like Xu <likexu@tencent.com>
> 
> The Inte PT Event Trace capability (Intel SDM Vol3, 32.2.4 Event Tracing)
> is a new CPU feature that "exposes details about the asynchronous events,
> when they are generated, and when their corresponding software event
> handler completes execution".
> 
> It is not possible for KVM to emulate all events including interrupts,
> VM exits, VM entries, INIT, SIPI events and etc. for guests and to
> emulate the simultaneous writing of Control Flow Events and Event Data
> packets generated by the KVM to the guest PT buffer.
> 
> For KVM, it is best not to advertise the Event Trace feature and just
> let it be a system-wide-only tracing capability.
> 
> Signed-off-by: Like Xu <likexu@tencent.com>
> ---
> Off topic, other new PT features such as "PSB and PMI Preservation Supported"
> and "TNT disable" are under investigation or awaiting host support to move on.

Yeah, I think it's better to be safe and ignore _all_ unknown capabilities.

Paolo

>   arch/x86/kvm/cpuid.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> index 0b920e12bb6d..1028c57377e9 100644
> --- a/arch/x86/kvm/cpuid.c
> +++ b/arch/x86/kvm/cpuid.c
> @@ -901,6 +901,8 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
>   			break;
>   		}
>   
> +		/* Not advertise Event Trace capability due to endless emulation */
> +		entry->ebx &= ~BIT(7);
>   		for (i = 1, max_idx = entry->eax; i <= max_idx; ++i) {
>   			if (!do_host_cpuid(array, function, i))
>   				goto out;
diff mbox series

Patch

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 0b920e12bb6d..1028c57377e9 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -901,6 +901,8 @@  static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)
 			break;
 		}
 
+		/* Not advertise Event Trace capability due to endless emulation */
+		entry->ebx &= ~BIT(7);
 		for (i = 1, max_idx = entry->eax; i <= max_idx; ++i) {
 			if (!do_host_cpuid(array, function, i))
 				goto out;