linux-stable/arch
Marcelo Tosatti 3cf57fed21 KVM: PIT: fix injection logic and count
The PIT injection logic is problematic under the following cases:

1) If there is a higher priority vector to be delivered by the time
kvm_pit_timer_intr_post is invoked ps->inject_pending won't be set.
This opens the possibility for missing many PIT event injections (say if
guest executes hlt at this point).

2) ps->inject_pending is racy with more than two vcpus. Since there's no locking
around read/dec of pt->pending, two vcpu's can inject two interrupts for a single
pt->pending count.

Fix 1 by using an irq ack notifier: only reinject when the previous irq
has been acked. Fix 2 with appropriate locking around manipulation of
pending count and irq_ack by the injection / ack paths.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
2008-10-15 10:15:17 +02:00
..
alpha Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
arm i2c/isp1301_omap: Convert to a new-style i2c driver, part 2 2008-10-14 17:30:02 +02:00
avr32 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 2008-10-13 10:08:43 -07:00
cris Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
frv
h8300
ia64 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
m32r Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
m68k arch/m68k/mm/kmap.c: introduce missing kfree 2008-10-14 10:23:27 -07:00
m68knommu
mips ide-generic: remove no longer needed ide_probe_legacy() 2008-10-13 21:39:42 +02:00
mn10300 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
parisc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-10-13 17:13:56 +01:00
powerpc KVM: powerpc: Map guest userspace with TID=0 mappings 2008-10-15 10:15:16 +02:00
s390 vfs: Use const for kernel parser table 2008-10-13 10:10:37 -07:00
sh
sparc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2008-10-13 10:07:53 -07:00
sparc64 chmc: Mark %ver register inline asm with __volatile__ 2008-10-12 23:56:12 -07:00
um Merge git://git.infradead.org/users/dwmw2/random-2.6 2008-10-13 09:59:14 -07:00
x86 KVM: PIT: fix injection logic and count 2008-10-15 10:15:17 +02:00
xtensa xtensa: remove dead CONFIG_BLK_DEV_IDE code 2008-10-13 21:39:34 +02:00
.gitignore
Kconfig Merge branch 'linus' into oprofile-v2 2008-10-13 11:05:51 +02:00