forked from luck/tmp_suning_uos_patched
460df4c1fc
The purpose of the KVM_SET_SIGNAL_MASK API is to let userspace "kick" a VCPU out of KVM_RUN through a POSIX signal. A signal is attached to a dummy signal handler; by blocking the signal outside KVM_RUN and unblocking it inside, this possible race is closed: VCPU thread service thread -------------------------------------------------------------- check flag set flag raise signal (signal handler does nothing) KVM_RUN However, one issue with KVM_SET_SIGNAL_MASK is that it has to take tsk->sighand->siglock on every KVM_RUN. This lock is often on a remote NUMA node, because it is on the node of a thread's creator. Taking this lock can be very expensive if there are many userspace exits (as is the case for SMP Windows VMs without Hyper-V reference time counter). As an alternative, we can put the flag directly in kvm_run so that KVM can see it: VCPU thread service thread -------------------------------------------------------------- raise signal signal handler set run->immediate_exit KVM_RUN check run->immediate_exit Reviewed-by: Radim Krčmář <rkrcmar@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> |
||
---|---|---|
.. | ||
alchemy | ||
ar7 | ||
ath25 | ||
ath79 | ||
bcm47xx | ||
bcm63xx | ||
bmips | ||
boot | ||
cavium-octeon | ||
cobalt | ||
configs | ||
dec | ||
emma | ||
fw | ||
generic | ||
include | ||
jazz | ||
jz4740 | ||
kernel | ||
kvm | ||
lantiq | ||
lasat | ||
lib | ||
loongson32 | ||
loongson64 | ||
math-emu | ||
mm | ||
mti-malta | ||
net | ||
netlogic | ||
oprofile | ||
paravirt | ||
pci | ||
pic32 | ||
pistachio | ||
pmcs-msp71xx | ||
pnx833x | ||
power | ||
ralink | ||
rb532 | ||
sgi-ip22 | ||
sgi-ip27 | ||
sgi-ip32 | ||
sibyte | ||
sni | ||
txx9 | ||
vdso | ||
vr41xx | ||
xilfpga | ||
Kbuild | ||
Kbuild.platforms | ||
Kconfig | ||
Kconfig.debug | ||
Makefile |