[PATCH v2 00/14] KVM: x86: change PIT discard policy and untangle related code

From: Radim KrÄmÃÅ
Date: Wed Feb 17 2016 - 14:15:09 EST


v2
- Different ordering; the important fix is first, which makes it easier
to backport as improvements of [1/14] have complex dependencies.
- Correct choice of atomics in [2/14].
- Explicit SMP barriers for lockless updates in [3/14].
- Protection against userspace races in kvm_vm_ioctl_reinject, [8/14].
- New code churn. (I tried to annotate locking, which required me to
really look at the code and I couldn't leave it alone at that point;
sorry.)

This series only works with the discard policy, do you want to "fix" NMI
in the delay policy as well?
(NMI delivery is still is going to be wrong by any standard, but will
make some sense, at the cost of ugly code: we would always inject NMI
when the timer fires and suppress NMI injection on EOI reinject.)

Anatomy of the series:
[1/14] fixes legacy NMI watchdog under discard policy.
[2-7/14] prepare for optimization of the discard policy.
[8/14] optimizes discard policy by removing notifiers.
[9-14/14] slightly improve related code.

I'm ok with dropping patches [2-14/14].

v1: http://www.spinics.net/lists/kvm/msg127017.html

Radim KrÄmÃÅ (14):
KVM: x86: change PIT discard tick policy
KVM: x86: simplify atomics in kvm_pit_ack_irq
KVM: x86: add kvm_pit_reset_reinject
KVM: x86: use atomic_t instead of pit.inject_lock
KVM: x86: tone down WARN_ON pit.state_lock
KVM: x86: pass struct kvm_pit instead of kvm in PIT
KVM: x86: remove unnecessary uses of PIT state lock
KVM: x86: remove notifiers from PIT discard policy
KVM: x86: refactor kvm_create_pit
KVM: x86: refactor kvm_free_pit
KVM: x86: remove pit and kvm from kvm_kpit_state
KVM: x86: remove pointless dereference of PIT
KVM: x86: don't assume layout of kvm_kpit_state
KVM: x86: move PIT timer function initialization

arch/x86/kvm/i8254.c | 318 +++++++++++++++++++++++----------------------------
arch/x86/kvm/i8254.h | 15 +--
arch/x86/kvm/x86.c | 52 ++++++---
3 files changed, 187 insertions(+), 198 deletions(-)

--
2.7.1