diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-02-08 10:38:00 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-02-08 10:38:21 -0500 |
commit | c9a443cdf7726ce8b78c3177c6ae601ce37292fc (patch) | |
tree | 4191db70a690b8eb7c86d8c3c10f827e4f2ab32a /kernel/irq | |
parent | 285c1a2c3a5f84ce1c811ab4cb1f8a17466e1a06 (diff) | |
parent | dc5f219e88294b93009eef946251251ffffb6d60 (diff) |
Merge branch 'irq/for-xen' into irq/core
irq/for-xen contains new functionality to avoid Xen private irq
hackery. That branch has a single irq commit and is pulled by Xen to
base their new features on.
Merge it into irq/core as other patches modify the same code.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/manage.c | 11 | ||||
-rw-r--r-- | kernel/irq/pm.c | 3 |
2 files changed, 10 insertions, 4 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 538fce2db51c..a06b9b6d6b57 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -359,8 +359,17 @@ EXPORT_SYMBOL(disable_irq); | |||
359 | 359 | ||
360 | void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) | 360 | void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) |
361 | { | 361 | { |
362 | if (resume) | 362 | if (resume) { |
363 | if (!(desc->status & IRQ_SUSPENDED)) { | ||
364 | if (!desc->action) | ||
365 | return; | ||
366 | if (!(desc->action->flags & IRQF_FORCE_RESUME)) | ||
367 | return; | ||
368 | /* Pretend that it got disabled ! */ | ||
369 | desc->depth++; | ||
370 | } | ||
363 | desc->status &= ~IRQ_SUSPENDED; | 371 | desc->status &= ~IRQ_SUSPENDED; |
372 | } | ||
364 | 373 | ||
365 | switch (desc->depth) { | 374 | switch (desc->depth) { |
366 | case 0: | 375 | case 0: |
diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c index 0d4005d85b03..d6bfb89cce91 100644 --- a/kernel/irq/pm.c +++ b/kernel/irq/pm.c | |||
@@ -53,9 +53,6 @@ void resume_device_irqs(void) | |||
53 | for_each_irq_desc(irq, desc) { | 53 | for_each_irq_desc(irq, desc) { |
54 | unsigned long flags; | 54 | unsigned long flags; |
55 | 55 | ||
56 | if (!(desc->status & IRQ_SUSPENDED)) | ||
57 | continue; | ||
58 | |||
59 | raw_spin_lock_irqsave(&desc->lock, flags); | 56 | raw_spin_lock_irqsave(&desc->lock, flags); |
60 | __enable_irq(desc, irq, true); | 57 | __enable_irq(desc, irq, true); |
61 | raw_spin_unlock_irqrestore(&desc->lock, flags); | 58 | raw_spin_unlock_irqrestore(&desc->lock, flags); |