Commit f6eafe36 authored by Ian Campbell's avatar Ian Campbell Committed by Jeremy Fitzhardinge

xen: call clock resume notifier on all CPUs

tick_resume() is never called on secondary processors. Presumably this
is because they are offlined for suspend on native and so this is
normally taken care of in the CPU onlining path. Under Xen we keep all
CPUs online over a suspend.

This patch papers over the issue for me but I will investigate a more
generic, less hacky, way of doing to the same.

tick_suspend is also only called on the boot CPU which I presume should
be fixed too.
Signed-off-by: default avatarIan Campbell <Ian.Campbell@citrix.com>
Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stable Kernel <stable@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
parent 6aaf5d63
#include <linux/types.h> #include <linux/types.h>
#include <linux/clockchips.h>
#include <xen/interface/xen.h> #include <xen/interface/xen.h>
#include <xen/grant_table.h> #include <xen/grant_table.h>
...@@ -46,7 +47,19 @@ void xen_post_suspend(int suspend_cancelled) ...@@ -46,7 +47,19 @@ void xen_post_suspend(int suspend_cancelled)
} }
static void xen_vcpu_notify_restore(void *data)
{
unsigned long reason = (unsigned long)data;
/* Boot processor notified via generic timekeeping_resume() */
if ( smp_processor_id() == 0)
return;
clockevents_notify(reason, NULL);
}
void xen_arch_resume(void) void xen_arch_resume(void)
{ {
/* nothing */ smp_call_function(xen_vcpu_notify_restore,
(void *)CLOCK_EVT_NOTIFY_RESUME, 1);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment