linux/drivers/xen
Ian Campbell b4606f2165 xen: explicitly create/destroy stop_machine workqueues outside suspend/resume region.
I have observed cases where the implicit stop_machine_destroy() done by
stop_machine() hangs while destroying the workqueues, specifically in
kthread_stop(). This seems to be because timer ticks are not restarted
until after stop_machine() returns.

Fortunately stop_machine provides a facility to pre-create/post-destroy
the workqueues so use this to ensure that workqueues are only destroyed
after everything is really up and running again.

I only actually observed this failure with 2.6.30. It seems that newer
kernels are somehow more robust against doing kthread_stop() without timer
interrupts (I tried some backports of some likely looking candidates but
did not track down the commit which added this robustness). However this
change seems like a reasonable belt&braces thing to do.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stable Kernel <stable@kernel.org>
2009-12-03 11:14:56 -08:00
..
xenbus xen: wait up to 5 minutes for device connetion 2009-12-03 11:14:49 -08:00
xenfs headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
Kconfig Merge commit 'origin/master' into for-linus/xen/master 2009-04-07 13:34:16 -07:00
Makefile xen: make -fstack-protector work under Xen 2009-09-09 16:37:39 -07:00
balloon.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-09-22 07:51:45 -07:00
cpu_hotplug.c xen: honour VCPU availability on boot 2009-04-08 14:25:51 -07:00
events.c xen: don't leak IRQs over suspend/resume. 2009-12-03 11:14:55 -08:00
evtchn.c includecheck fix: drivers/xen, evtchn.c 2009-09-20 16:02:20 +05:30
features.c xen: clean up asm/xen/hypervisor.h 2008-12-16 21:50:31 +01:00
grant-table.c xen: clean up asm/xen/hypervisor.h 2008-12-16 21:50:31 +01:00
manage.c xen: explicitly create/destroy stop_machine workqueues outside suspend/resume region. 2009-12-03 11:14:56 -08:00
sys-hypervisor.c xen: drop kexec bits from /sys/hypervisor since kexec isn't implemented yet 2009-03-30 09:27:07 -07:00
xencomm.c xen: portability clean up and some minor clean up for xencomm.c 2008-10-23 21:54:36 +02:00