diff options
author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-03-03 12:02:02 -0500 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-03-03 12:02:02 -0500 |
commit | 8aef4857d26c46ca3d4f1a7f3a7aa4b51a72385e (patch) | |
tree | cb1665891daf2a12b4028953e86dde5072b359e7 /kernel/irq/manage.c | |
parent | f611f2da99420abc973c32cdbddbf5c365d0a20c (diff) | |
parent | dc5f219e88294b93009eef946251251ffffb6d60 (diff) |
Merge branch 'irq/for-xen' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip into HEAD
* 'irq/for-xen' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
genirq: Add IRQF_FORCE_RESUME
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 0caa59f747d..b4198ee8cfd 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -282,8 +282,17 @@ EXPORT_SYMBOL(disable_irq); void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) { - if (resume) + if (resume) { + if (!(desc->status & IRQ_SUSPENDED)) { + if (!desc->action) + return; + if (!(desc->action->flags & IRQF_FORCE_RESUME)) + return; + /* Pretend that it got disabled ! */ + desc->depth++; + } desc->status &= ~IRQ_SUSPENDED; + } switch (desc->depth) { case 0: |