diff options
author | Chao Peng <chao.p.peng@linux.intel.com> | 2018-03-05 00:48:35 +0800 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2018-03-12 15:59:46 -0300 |
commit | e37a5c7fa459558b5020588994707fe3fdd6616e (patch) | |
tree | f74043bcb92bd0c9cdbd07f9e82d9da2f006b60b /target/i386/kvm.c | |
parent | be7773268d98176489483a315d3e2323cb0615b9 (diff) |
i386: Add Intel Processor Trace feature support
Expose Intel Processor Trace feature to guest.
To make Intel PT live migration safe and get same CPUID information
with same CPU model on diffrent host. CPUID[14] is constant in this
patch. Intel PT use EPT is first supported in IceLake, the CPUID[14]
get on this machine as default value. Intel PT would be disabled
if any machine don't support this minial feature list.
Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>
Signed-off-by: Luwei Kang <luwei.kang@intel.com>
Message-Id: <1520182116-16485-1-git-send-email-luwei.kang@intel.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'target/i386/kvm.c')
-rw-r--r-- | target/i386/kvm.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 44ee524188..f5d3d73ed6 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -869,6 +869,29 @@ int kvm_arch_init_vcpu(CPUState *cs) c = &cpuid_data.entries[cpuid_i++]; } break; + case 0x14: { + uint32_t times; + + c->function = i; + c->index = 0; + c->flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX; + cpu_x86_cpuid(env, i, 0, &c->eax, &c->ebx, &c->ecx, &c->edx); + times = c->eax; + + for (j = 1; j <= times; ++j) { + if (cpuid_i == KVM_MAX_CPUID_ENTRIES) { + fprintf(stderr, "cpuid_data is full, no space for " + "cpuid(eax:0x14,ecx:0x%x)\n", j); + abort(); + } + c = &cpuid_data.entries[cpuid_i++]; + c->function = i; + c->index = j; + c->flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX; + cpu_x86_cpuid(env, i, j, &c->eax, &c->ebx, &c->ecx, &c->edx); + } + break; + } default: c->function = i; c->flags = 0; |