summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/paravirt.c
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-02-18 08:05:19 +0100
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>2009-03-30 08:35:38 +0200
commitb8bcfe997e46150fedcc3f5b26b846400122fdd9 (patch)
tree435f1bdfa3317e13ddcd3b87176602b597639c1b /arch/x86/kernel/paravirt.c
parentmm: disable preemption in apply_to_pte_range (diff)
downloadlinux-b8bcfe997e46150fedcc3f5b26b846400122fdd9.tar.xz
linux-b8bcfe997e46150fedcc3f5b26b846400122fdd9.zip
x86/paravirt: remove lazy mode in interrupts
Impact: simplification, robustness Make paravirt_lazy_mode() always return PARAVIRT_LAZY_NONE when in an interrupt. This prevents interrupt code from accidentally inheriting an outer lazy state, and instead does everything synchronously. Outer batched operations are left deferred. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/paravirt.c')
-rw-r--r--arch/x86/kernel/paravirt.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index 63dd358d8ee1..8ab250ac498b 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -282,6 +282,9 @@ void paravirt_leave_lazy_cpu(void)
enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
{
+ if (in_interrupt())
+ return PARAVIRT_LAZY_NONE;
+
return __get_cpu_var(paravirt_lazy_mode);
}