[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor
From: |
Eduardo Habkost |
Subject: |
Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature |
Date: |
Tue, 15 Oct 2019 10:29:29 -0300 |
On Tue, Oct 15, 2019 at 12:51:48PM +0000, Kang, Luwei wrote:
> qemu> > diff --git a/target/i386/kvm.c b/target/i386/kvm.c index
> > > f9f4cd1..097c953 100644
> > > --- a/target/i386/kvm.c
> > > +++ b/target/i386/kvm.c
> > > @@ -1811,6 +1811,25 @@ static int kvm_put_msrs(X86CPU *cpu, int level)
> > > kvm_msr_entry_add(cpu, MSR_MTRRphysMask(i), mask);
> > > }
> > > }
> > > + if (env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_INTEL_PT) {
> > > + int addr_num = kvm_arch_get_supported_cpuid(kvm_state,
> > > + 0x14, 1, R_EAX) &
> > > + 0x7;
> > > +
> > > + kvm_msr_entry_add(cpu, MSR_IA32_RTIT_CTL,
> > > + env->msr_rtit_ctrl);
> > > + kvm_msr_entry_add(cpu, MSR_IA32_RTIT_STATUS,
> > > + env->msr_rtit_status);
> > > + kvm_msr_entry_add(cpu, MSR_IA32_RTIT_OUTPUT_BASE,
> > > + env->msr_rtit_output_base);
> >
> > This causes the following crash on some hosts:
> >
> > qemu-system-x86_64: error: failed to set MSR 0x560 to 0x0
> > qemu-system-x86_64: target/i386/kvm.c:2673: kvm_put_msrs: Assertion `ret
> > == cpu->kvm_msr_buf->nmsrs' failed.
> >
> > Checking for CPUID_7_0_EBX_INTEL_PT is not enough: KVM has additional
> > conditions that might prevent writing to this MSR
> > (PT_CAP_topa_output && PT_CAP_single_range_output). This causes QEMU to
> > crash if some of the conditions aren't met.
> >
> > Writing and reading this MSR (and the ones below) need to be conditional on
> > KVM_GET_MSR_INDEX_LIST.
> >
>
> Hi Eduardo,
> I found this issue can't be reproduced in upstream source code but can be
> reproduced on RHEL8.1. I haven't got the qemu source code of RHEL8.1. But
> after adding some trace in KVM, I found the KVM has reported the complete
> Intel PT CPUID information to qemu but the Intel PT CPUID (0x14) is lost when
> qemu setting the CPUID to KVM (cpuid level is 0xd). It looks like lost the
> below patch.
>
> commit f24c3a79a415042f6dc195f029a2ba7247d14cac
> Author: Luwei Kang <address@hidden>
> Date: Tue Jan 29 18:52:59 2019 -0500
> i386: extended the cpuid_level when Intel PT is enabled
>
> Intel Processor Trace required CPUID[0x14] but the cpuid_level
> have no change when create a kvm guest with
> e.g. "-cpu qemu64,+intel-pt".
Thanks for the pointer. This may avoid triggering the bug in the
default configuration, but we still need to make the MSR writing
conditional on KVM_GET_MSR_INDEX_LIST. Older machine-types have
x-intel-pt-auto-level=off, and the user may set `level` manually.
--
Eduardo
- Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Eduardo Habkost, 2019/10/11
- RE: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Kang, Luwei, 2019/10/15
- Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature,
Eduardo Habkost <=
- RE: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Kang, Luwei, 2019/10/21
- Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Eduardo Habkost, 2019/10/22
- RE: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Kang, Luwei, 2019/10/24
- Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Eduardo Habkost, 2019/10/24
- RE: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Kang, Luwei, 2019/10/24
- Re: [PATCH v4 2/2] i386: Add support to get/set/migrate Intel Processor Trace feature, Eduardo Habkost, 2019/10/24