xen-evtchn: Bind dyn evtchn:qemu-dm interrupt to next online VCPU
authorAnoob Soman <anoob.soman@citrix.com>
Wed, 7 Jun 2017 11:46:56 +0000 (12:46 +0100)
committerJuergen Gross <jgross@suse.com>
Tue, 13 Jun 2017 13:30:27 +0000 (15:30 +0200)
commitc48f64ab472389df6f48171899c9d337adfadc5b
tree5bd75e13eeea925c52dac81bc6c82fc8a2a72bdc
parent9cc91f212111cdcbefa02dcdb7dd443f224bf52c
xen-evtchn: Bind dyn evtchn:qemu-dm interrupt to next online VCPU

A HVM domian booting generates around 200K (evtchn:qemu-dm xen-dyn)
interrupts,in a short period of time. All these evtchn:qemu-dm are bound
to VCPU 0, until irqbalance sees these IRQ and moves it to a different VCPU.
In one configuration, irqbalance runs every 10 seconds, which means
irqbalance doesn't get to see these burst of interrupts and doesn't
re-balance interrupts most of the time, making all evtchn:qemu-dm to be
processed by VCPU0. This cause VCPU0 to spend most of time processing
hardirq and very little time on softirq. Moreover, if dom0 kernel PREEMPTION
is disabled, VCPU0 never runs watchdog (process context), triggering a
softlockup detection code to panic.

Binding evtchn:qemu-dm to next online VCPU, will spread hardirq
processing evenly across different CPU. Later, irqbalance will try to balance
evtchn:qemu-dm, if required.

Signed-off-by: Anoob Soman <anoob.soman@citrix.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
drivers/xen/events/events_base.c
drivers/xen/evtchn.c
include/xen/events.h