浏览代码

x86: Add IRQF_TIMER to legacy x86 timer interrupt descriptors

Right now nobody cares, but the suspend/resume code will eventually want
to suspend device interrupts without suspending the timer, and will
depend on this flag to know.

The modern x86 timer infrastructure uses the local APIC timers and never
shows up as a device interrupt at all, so it isn't affected and doesn't
need any of this.

Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds 16 年之前
父节点
当前提交
936577c61d
共有 4 个文件被更改,包括 4 次插入4 次删除
  1. 1 1
      arch/x86/kernel/time_64.c
  2. 1 1
      arch/x86/kernel/vmiclock_32.c
  3. 1 1
      arch/x86/mach-default/setup.c
  4. 1 1
      arch/x86/mach-voyager/setup.c

+ 1 - 1
arch/x86/kernel/time_64.c

@@ -115,7 +115,7 @@ unsigned long __init calibrate_cpu(void)
 
 
 static struct irqaction irq0 = {
 static struct irqaction irq0 = {
 	.handler	= timer_interrupt,
 	.handler	= timer_interrupt,
-	.flags		= IRQF_DISABLED | IRQF_IRQPOLL | IRQF_NOBALANCING,
+	.flags		= IRQF_DISABLED | IRQF_IRQPOLL | IRQF_NOBALANCING | IRQF_TIMER,
 	.mask		= CPU_MASK_NONE,
 	.mask		= CPU_MASK_NONE,
 	.name		= "timer"
 	.name		= "timer"
 };
 };

+ 1 - 1
arch/x86/kernel/vmiclock_32.c

@@ -202,7 +202,7 @@ static irqreturn_t vmi_timer_interrupt(int irq, void *dev_id)
 static struct irqaction vmi_clock_action  = {
 static struct irqaction vmi_clock_action  = {
 	.name 		= "vmi-timer",
 	.name 		= "vmi-timer",
 	.handler 	= vmi_timer_interrupt,
 	.handler 	= vmi_timer_interrupt,
-	.flags 		= IRQF_DISABLED | IRQF_NOBALANCING,
+	.flags 		= IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER,
 	.mask 		= CPU_MASK_ALL,
 	.mask 		= CPU_MASK_ALL,
 };
 };
 
 

+ 1 - 1
arch/x86/mach-default/setup.c

@@ -96,7 +96,7 @@ void __init trap_init_hook(void)
 
 
 static struct irqaction irq0  = {
 static struct irqaction irq0  = {
 	.handler = timer_interrupt,
 	.handler = timer_interrupt,
-	.flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL,
+	.flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER,
 	.mask = CPU_MASK_NONE,
 	.mask = CPU_MASK_NONE,
 	.name = "timer"
 	.name = "timer"
 };
 };

+ 1 - 1
arch/x86/mach-voyager/setup.c

@@ -56,7 +56,7 @@ void __init trap_init_hook(void)
 
 
 static struct irqaction irq0 = {
 static struct irqaction irq0 = {
 	.handler = timer_interrupt,
 	.handler = timer_interrupt,
-	.flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL,
+	.flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER,
 	.mask = CPU_MASK_NONE,
 	.mask = CPU_MASK_NONE,
 	.name = "timer"
 	.name = "timer"
 };
 };