From: "Radim Krčmář" <rkrcmar@redhat.com>
To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Alexander Graf <agraf@suse.de>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Gabriel L. Somlo" <gsomlo@gmail.com>
Subject: [PATCH 1/4] KVM: svm: prevent MWAIT in guest with erratum 400
Date: Wed, 3 May 2017 21:37:30 +0200 [thread overview]
Message-ID: <20170503193733.13409-2-rkrcmar@redhat.com> (raw)
In-Reply-To: <20170503193733.13409-1-rkrcmar@redhat.com>
The host might miss APIC timer interrupts if the guest enters a specific
C-state. Quoting the erratum:
400 APIC Timer Interrupt Does Not Occur in Processor C-States
Description
An APIC timer interrupt that becomes pending in low-power states C1E
or C3 will not cause the processor to enter the C0 state even if the
interrupt is enabled by Timer Local Vector Table Entry[Mask],
APIC320[16]). APIC timer functionality is otherwise unaffected.
Potential Effect on System
System hang may occur provided that the operating system has not
configured another interrupt source. APIC timer interrupts may be
delayed or, when the APIC timer is configured in rollover mode
(APIC320[17]), the APIC timer may roll over multiple times in the
low-power state with only one interrupt presented after the processor
resumes. The standard use of the APIC timer does not make this effect
significant.
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
arch/x86/kvm/x86.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h
index 612067074905..3ed7dd8737ab 100644
--- a/arch/x86/kvm/x86.h
+++ b/arch/x86/kvm/x86.h
@@ -223,8 +223,7 @@ static inline bool kvm_mwait_in_guest(void)
switch (boot_cpu_data.x86_vendor) {
case X86_VENDOR_AMD:
- /* All AMD CPUs have a working MWAIT implementation */
- return true;
+ return !boot_cpu_has_bug(X86_BUG_AMD_E400);
case X86_VENDOR_INTEL:
/* Handle Intel below */
break;
--
2.12.2
next prev parent reply other threads:[~2017-05-03 19:38 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-03 19:37 [PATCH 0/4] KVM: x86: kvm_mwait_in_guest() cleanup and fixes Radim Krčmář
2017-05-03 19:37 ` Radim Krčmář [this message]
2017-05-03 20:11 ` [PATCH 1/4] KVM: svm: prevent MWAIT in guest with erratum 400 Borislav Petkov
2017-05-04 14:02 ` Radim Krčmář
2017-05-04 16:45 ` Borislav Petkov
2017-05-03 19:37 ` [PATCH 2/4] KVM: x86: prevent MWAIT in guest with buggy MONITOR Radim Krčmář
2017-05-03 19:37 ` [PATCH 3/4] KVM: x86: drop bogus MWAIT check Radim Krčmář
2017-05-04 10:58 ` Paolo Bonzini
2017-05-04 14:33 ` Radim Krčmář
2017-05-04 18:29 ` Michael S. Tsirkin
2017-05-04 20:03 ` Radim Krčmář
2017-05-04 18:26 ` Michael S. Tsirkin
2017-05-03 19:37 ` [PATCH 4/4] KVM: x86: simplify kvm_mwait_in_guest() Radim Krčmář
2017-05-03 19:45 ` [PATCH 0/4] KVM: x86: kvm_mwait_in_guest() cleanup and fixes Alexander Graf
2017-05-04 17:56 ` Gabriel L. Somlo
2017-05-04 18:07 ` Radim Krčmář
2017-05-05 13:02 ` Gabriel L. Somlo
2017-05-06 16:48 ` Gabriel L. Somlo
2017-05-08 7:23 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170503193733.13409-2-rkrcmar@redhat.com \
--to=rkrcmar@redhat.com \
--cc=agraf@suse.de \
--cc=gsomlo@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.