mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-08 11:45:13 +07:00
3cf57fed21
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> |
||
---|---|---|
.. | ||
i8254.c | ||
i8254.h | ||
i8259.c | ||
irq.c | ||
irq.h | ||
Kconfig | ||
kvm_cache_regs.h | ||
kvm_svm.h | ||
lapic.c | ||
lapic.h | ||
Makefile | ||
mmu.c | ||
mmu.h | ||
paging_tmpl.h | ||
svm.c | ||
svm.h | ||
tss.h | ||
vmx.c | ||
vmx.h | ||
x86_emulate.c | ||
x86.c | ||
x86.h |