[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: ensure timer tick is resumed even on CPU driving the resume
On 05/19/2010 08:36 AM, Ian Campbell wrote: > The core suspend/resume code is run from stop_machine on CPU0 but > parts of the suspend/resume machinery (including xen_arch_resume) are > run on whichever CPU happened to schedule the xenwatch kernel thread. > > As part of the non-core resume code xen_arch_resume is called in order > to restart the timer tick on non-boot processors. The boot processor > itself is taken care of by core timekeeping code. > > xen_arch_resume uses smp_call_function which does not call the given > function on the current processor. This means that we can end up with > one CPU not receiving timer ticks if the xenwatch thread happened to > be scheduled on CPU > 0. > > Use on_each_cpu instead of smp_call_function to ensure the timer tick > is resumed everywhere. > Argh, that seems to be a pretty common trap to fall into. Looks OK (but unfortunately doesn't fix my other problem). Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx> J > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx> > Cc: Stable Kernel <stable@xxxxxxxxxx> > --- > arch/x86/xen/suspend.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c > index 987267f..a9c6611 100644 > --- a/arch/x86/xen/suspend.c > +++ b/arch/x86/xen/suspend.c > @@ -60,6 +60,6 @@ static void xen_vcpu_notify_restore(void *data) > > void xen_arch_resume(void) > { > - smp_call_function(xen_vcpu_notify_restore, > - (void *)CLOCK_EVT_NOTIFY_RESUME, 1); > + on_each_cpu(xen_vcpu_notify_restore, > + (void *)CLOCK_EVT_NOTIFY_RESUME, 1); > } > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |