Patch "KVM: x86: make vapics_in_nmi_mode atomic" has been added to the 4.0-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: x86: make vapics_in_nmi_mode atomic
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kvm-x86-make-vapics_in_nmi_mode-atomic.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
42720138b06301cc8a7ee8a495a6d021c4b6a9bcMon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= <[email protected]>
Date: Wed, 1 Jul 2015 15:31:49 +0200
Subject: KVM: x86: make vapics_in_nmi_mode atomic
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= <[email protected]>
commit 42720138b06301cc8a7ee8a495a6d021c4b6a9bc upstream.
Writes were a bit racy, but hard to turn into a bug at the same time. (Particularly because modern Linux doesn't use this feature anymore.)
[Actually the next patch makes it much, much easier to trigger the race
so I'm including this one for stable@ as well. - Paolo]
--- arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/i8254.c | 2 +- arch/x86/kvm/lapic.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-)
arch/x86/include/asm/kvm_host.h +1 -1
@@ -583,7 +583,7 @@ struct kvm_arch {struct kvm_pic *vpic;struct kvm_ioapic *vioapic;struct kvm_pit *vpit; -int vapics_in_nmi_mode; +atomic_t vapics_in_nmi_mode;struct mutex apic_map_lock;struct kvm_apic_map *apic_map;
arch/x86/kvm/i8254.c +1 -1
@@ -305,7 +305,7 @@ static void pit_do_work(struct kthread_w* LVT0 to NMI delivery. Other PIC interrupts are just sent to * VCPU0, and only if its LVT0 is in EXTINT mode. */ -if (kvm->arch.vapics_in_nmi_mode >0 ) +if (atomic_read (&kvm->arch.vapics_in_nmi_mode) >0 )kvm_for_each_vcpu (i, vcpu, kvm)kvm_apic_nmi_wd_deliver (vcpu); }
arch/x86/kvm/lapic.c +2 -2
@@ -1224,10 +1224,10 @@ static void apic_manage_nmi_watchdog(strif (!nmi_wd_enabled) {apic_debug ("Receive NMI setting on APIC_LVT0 " "for cpu %d\n" , apic->vcpu->vcpu_id); - apic->vcpu->kvm->arch.vapics_in_nmi_mode++; +atomic_inc (&apic->vcpu->kvm->arch.vapics_in_nmi_mode); } }else if (nmi_wd_enabled) - apic->vcpu->kvm->arch.vapics_in_nmi_mode--; +atomic_dec (&apic->vcpu->kvm->arch.vapics_in_nmi_mode); }static int apic_reg_write (struct kvm_lapic *apic,u32 reg,u32 val)
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/kvm-x86-properly-restore-lvt0.patch queue-4.0/kvm-x86-make-vapics_in_nmi_mode-atomic.patch