Marcelo Tosatti wrote: > >>> QEMU/KVM: separate thread for IO handling >>> >>> Move IO processing from vcpu0 to a dedicated thread. >>> >>> This removes load on vcpu0 by allowing better cache locality and also >>> improves latency. >>> >>> We can now block signal handling for IO events, so sigtimedwait won't >>> race with handlers: >>> >>> - Currently the SIGALRM handler fails to set CPU_INTERRUPT_EXIT because >>> the "next_cpu" variable is not initialized in the KVM path, meaning that >>> processing of timer expiration might be delayed until the next vcpu0 exit. >>> >>> >> I think we call main_loop_wait() is called unconditionally after every >> signal. >> > > We exit the kvm_run() loop if CPU_INTERRUPT_EXIT is detected by pre_kvm_run(). > >
But why do we need to exit the kvm_run() loop? As I understand it, the I/O thread wakes up when the signal is queued and calls main_loop_wait() to process any events (through qemu_run_timers()). If a timer needs to wake up a vcpu, it will raise an interrupt line which will wake the vcpu up, either in the kernel or in userspace depending on -no-kvm-irqchip. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel