Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git]
/
kernel
/
kernel
/
irq
/
pm.c
diff --git
a/kernel/kernel/irq/pm.c
b/kernel/kernel/irq/pm.c
index
5204a6d
..
cea1de0
100644
(file)
--- a/
kernel/kernel/irq/pm.c
+++ b/
kernel/kernel/irq/pm.c
@@
-21,7
+21,7
@@
bool irq_pm_check_wakeup(struct irq_desc *desc)
desc->istate |= IRQS_SUSPENDED | IRQS_PENDING;
desc->depth++;
irq_disable(desc);
desc->istate |= IRQS_SUSPENDED | IRQS_PENDING;
desc->depth++;
irq_disable(desc);
- pm_system_
wakeup(
);
+ pm_system_
irq_wakeup(irq_desc_get_irq(desc)
);
return true;
}
return false;
return true;
}
return false;
@@
-68,9
+68,10
@@
void irq_pm_remove_action(struct irq_desc *desc, struct irqaction *action)
desc->cond_suspend_depth--;
}
desc->cond_suspend_depth--;
}
-static bool suspend_device_irq(struct irq_desc *desc
, int irq
)
+static bool suspend_device_irq(struct irq_desc *desc)
{
{
- if (!desc->action || desc->no_suspend_depth)
+ if (!desc->action || irq_desc_is_chained(desc) ||
+ desc->no_suspend_depth)
return false;
if (irqd_is_wakeup_set(&desc->irq_data)) {
return false;
if (irqd_is_wakeup_set(&desc->irq_data)) {
@@
-85,7
+86,7
@@
static bool suspend_device_irq(struct irq_desc *desc, int irq)
}
desc->istate |= IRQS_SUSPENDED;
}
desc->istate |= IRQS_SUSPENDED;
- __disable_irq(desc
, irq
);
+ __disable_irq(desc);
/*
* Hardware which has no wakeup source configuration facility
/*
* Hardware which has no wakeup source configuration facility
@@
-123,8
+124,10
@@
void suspend_device_irqs(void)
unsigned long flags;
bool sync;
unsigned long flags;
bool sync;
+ if (irq_settings_is_nested_thread(desc))
+ continue;
raw_spin_lock_irqsave(&desc->lock, flags);
raw_spin_lock_irqsave(&desc->lock, flags);
- sync = suspend_device_irq(desc
, irq
);
+ sync = suspend_device_irq(desc);
raw_spin_unlock_irqrestore(&desc->lock, flags);
if (sync)
raw_spin_unlock_irqrestore(&desc->lock, flags);
if (sync)
@@
-133,7
+136,7
@@
void suspend_device_irqs(void)
}
EXPORT_SYMBOL_GPL(suspend_device_irqs);
}
EXPORT_SYMBOL_GPL(suspend_device_irqs);
-static void resume_irq(struct irq_desc *desc
, int irq
)
+static void resume_irq(struct irq_desc *desc)
{
irqd_clear(&desc->irq_data, IRQD_WAKEUP_ARMED);
{
irqd_clear(&desc->irq_data, IRQD_WAKEUP_ARMED);
@@
-148,7
+151,7
@@
static void resume_irq(struct irq_desc *desc, int irq)
desc->depth++;
resume:
desc->istate &= ~IRQS_SUSPENDED;
desc->depth++;
resume:
desc->istate &= ~IRQS_SUSPENDED;
- __enable_irq(desc
, irq
);
+ __enable_irq(desc);
}
static void resume_irqs(bool want_early)
}
static void resume_irqs(bool want_early)
@@
-163,9
+166,11
@@
static void resume_irqs(bool want_early)
if (!is_early && want_early)
continue;
if (!is_early && want_early)
continue;
+ if (irq_settings_is_nested_thread(desc))
+ continue;
raw_spin_lock_irqsave(&desc->lock, flags);
raw_spin_lock_irqsave(&desc->lock, flags);
- resume_irq(desc
, irq
);
+ resume_irq(desc);
raw_spin_unlock_irqrestore(&desc->lock, flags);
}
}
raw_spin_unlock_irqrestore(&desc->lock, flags);
}
}