Just two very small & simple patches.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJVzmylAAoJEL/70l94x66D7r0IAKd8oclVTdbo8RxR1Hg2zZev ytTm2Mjd0kgSqhTaBBUgyE900/cznYpT1xJq1/5Wwc+FP1J1QBzsDemtrQlEZIBh Zi4b7zm37K1ai7xWs6oLaXieVjiyX8vuUGO6saBw1n/ZLURgPjVzTmQMxdnYtyFX yf37rPvksnyzyctv+D9ZvdhrpD7Xd3NFNoCOSiukkeZkjb97JabDRrzpTlVmj4wu KNReYCN+iA6jZe5tEZHzCGplVrEMfHdAcoRc3GVz3oecPVZojX/NLzwlw97iN/2z mm5SVOlxbvCO7sqEQXo/db91xlP3E6Q1QGuDE21NboClbNeinC/uFJMFzpVInSI= =AD69 -----END PGP SIGNATURE----- Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm Pull KVM fixes from Paolo Bonzini: "Just two very small & simple patches" * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: KVM: x86: Use adjustment in guest cycles when handling MSR_IA32_TSC_ADJUST KVM: x86: zero IDT limit on entry to SMM
This commit is contained in:
commit
45e38cff4f
1 changed files with 6 additions and 1 deletions
|
@ -2105,7 +2105,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
|||
if (guest_cpuid_has_tsc_adjust(vcpu)) {
|
||||
if (!msr_info->host_initiated) {
|
||||
s64 adj = data - vcpu->arch.ia32_tsc_adjust_msr;
|
||||
kvm_x86_ops->adjust_tsc_offset(vcpu, adj, true);
|
||||
adjust_tsc_offset_guest(vcpu, adj);
|
||||
}
|
||||
vcpu->arch.ia32_tsc_adjust_msr = data;
|
||||
}
|
||||
|
@ -6327,6 +6327,7 @@ static void process_smi_save_state_64(struct kvm_vcpu *vcpu, char *buf)
|
|||
static void process_smi(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct kvm_segment cs, ds;
|
||||
struct desc_ptr dt;
|
||||
char buf[512];
|
||||
u32 cr0;
|
||||
|
||||
|
@ -6359,6 +6360,10 @@ static void process_smi(struct kvm_vcpu *vcpu)
|
|||
|
||||
kvm_x86_ops->set_cr4(vcpu, 0);
|
||||
|
||||
/* Undocumented: IDT limit is set to zero on entry to SMM. */
|
||||
dt.address = dt.size = 0;
|
||||
kvm_x86_ops->set_idt(vcpu, &dt);
|
||||
|
||||
__kvm_set_dr(vcpu, 7, DR7_FIXED_1);
|
||||
|
||||
cs.selector = (vcpu->arch.smbase >> 4) & 0xffff;
|
||||
|
|
Loading…
Reference in a new issue