All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 2/2] x86: don't unmask disabled irqs when migrating them
@ 2011-05-06  6:43 Tian, Kevin
  2011-05-06  9:59 ` Thomas Gleixner
  2011-08-29  4:15 ` [regression] Ideapad S10-3 does not wake up from suspend (Re: [PATCH v2 2/2] x86: don't unmask disabled irqs when migrating them) Jonathan Nieder
  0 siblings, 2 replies; 41+ messages in thread
From: Tian, Kevin @ 2011-05-06  6:43 UTC (permalink / raw)
  To: linux-kernel, mingo, hpa, tglx; +Cc: Ian Campbell, JBeulich, xen-devel

x86: don't unmask disabled irqs when migrating them

it doesn't make sense to mask/unmask a disabled irq when migrating it
from offlined cpu to another, because it's not expected to handle
any instance of it. Current mask/set_affinity/unmask steps may trigger
unexpected instance on disabled irq which then simply bug on when there
is no handler for it. One failing example is observed in Xen. Xen pvops 
guest marks a special type of irqs as disabled, which are simply used 
as a notification mechanism to wake up blocked guest in event polling
state. Absolutely unmask them may cause the notification instance 
instead injected into the guest and then cause trouble.

Signed-off-by: Fengzhe Zhang <fengzhe.zhang@intel.com>
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Ingo Molnar <mingo@redhat.com>
CC: H. Peter Anvin <hpa@zytor.com>
CC: Ian Campbell <Ian.Campbell@citrix.com>
CC: Jan Beulich <JBeulich@novell.com>

--- linux-2.6.39-rc6.orig/arch/x86/kernel/irq.c	2011-05-04 10:59:13.000000000 +0800
+++ linux-2.6.39-rc6/arch/x86/kernel/irq.c	2011-05-06 09:20:25.563963000 +0800
@@ -237,6 +237,7 @@ void fixup_irqs(void)
 	for_each_irq_desc(irq, desc) {
 		int break_affinity = 0;
 		int set_affinity = 1;
+		int do_mask;
 		const struct cpumask *affinity;
 
 		if (!desc)
@@ -268,7 +269,9 @@ void fixup_irqs(void)
 		}
 
 		chip = irq_data_get_irq_chip(data);
-		if (!irqd_can_move_in_process_context(data) && chip->irq_mask)
+		do_mask = !irqd_irq_disabled(data) &&
+			!irqd_can_move_in_process_context(data) && chip->irq_mask;
+		if (do_mask)
 			chip->irq_mask(data);
 
 		if (chip->irq_set_affinity)
@@ -276,7 +279,7 @@ void fixup_irqs(void)
 		else if (!(warned++))
 			set_affinity = 0;
 
-		if (!irqd_can_move_in_process_context(data) && chip->irq_unmask)
+		if (do_mask)
 			chip->irq_unmask(data);
 
 		raw_spin_unlock(&desc->lock);

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2012-07-15 23:24 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-06  6:43 [PATCH v2 2/2] x86: don't unmask disabled irqs when migrating them Tian, Kevin
2011-05-06  9:59 ` Thomas Gleixner
2011-05-06 12:54   ` Tian, Kevin
2011-05-06 12:54     ` Tian, Kevin
2011-05-06 13:14     ` [Xen-devel] " Tian, Kevin
2011-05-06 13:24     ` Thomas Gleixner
2011-05-06 14:04       ` Ian Campbell
2011-05-08  1:44         ` Jeremy Fitzhardinge
2011-05-08  1:44           ` Jeremy Fitzhardinge
2011-05-09  0:44           ` Tian, Kevin
2011-05-09  0:44             ` Tian, Kevin
2011-05-09  1:45             ` Jeremy Fitzhardinge
2011-05-09  1:45               ` Jeremy Fitzhardinge
2011-05-06 14:28     ` Stefano Stabellini
2011-05-06 14:28       ` Stefano Stabellini
2011-05-06 21:43       ` Tian, Kevin
2011-05-09  2:11       ` Tian, Kevin
2011-05-09 12:02         ` Stefano Stabellini
2011-05-09 12:36           ` Thomas Gleixner
2011-05-10  3:24             ` Tian, Kevin
2011-05-18 23:49               ` Tian, Kevin
2011-05-18 23:49                 ` Tian, Kevin
2011-05-19 12:08                 ` Stefano Stabellini
2011-05-19 16:18                   ` [Xen-devel] " Konrad Rzeszutek Wilk
2011-05-19 16:18                     ` Konrad Rzeszutek Wilk
2011-08-29  4:15 ` [regression] Ideapad S10-3 does not wake up from suspend (Re: [PATCH v2 2/2] x86: don't unmask disabled irqs when migrating them) Jonathan Nieder
2011-08-31  1:04   ` Dave Hansen
2011-08-31  8:22     ` Jonathan Nieder
2011-09-02  3:01       ` Serge E. Hallyn
2011-09-01  6:24   ` Tian, Kevin
2011-09-01  6:24     ` Tian, Kevin
2012-05-12 23:13     ` [regression] Ideapad S10-3 does not wake up from suspend Jonathan Nieder
2012-05-13  1:22       ` Lars Boegild Thomsen
2012-07-15 23:24         ` Jonathan Nieder
2012-04-15 14:06   ` Jonathan Nieder
2012-04-16 18:05     ` Robert Scott
2012-04-17  2:04       ` Jonathan Nieder
2012-04-18 10:03         ` Lars Boegild Thomsen
2012-04-22 16:34           ` [Xen-devel] " Pasi Kärkkäinen
2012-04-21 13:14         ` Robert Scott
2012-05-06 12:44         ` Robert Scott

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.