lpm-levels: Do not disable non-sec interrupts in suspend

When the system suspend is happening, last core disables the non-sec
interrupts at QGIC by setting the GRPEN1_EL1_NS to ZERO. This prevents
the core from detecting  any non-sec interrupts and ithat would result
in the system not waking up from any of interrupts. Do not modify
GRPEN1_EL1_NS register when the system is going into suspend.

Change-Id: I7d6c5047fb4743df187fe49fba18b64db3179bc9
Signed-off-by: Murali Nalajala <mnalajal@codeaurora.org>
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
This commit is contained in:
Murali Nalajala 2015-05-19 10:26:11 -07:00 committed by Gerrit - the friendly Code Review server
parent 038b5bef76
commit d3ba44934f
3 changed files with 9 additions and 0 deletions

View File

@ -27,6 +27,8 @@ struct gic_quirk {
u32 iidr;
u32 mask;
};
extern bool from_suspend;
extern struct irq_chip gic_arch_extn;
int gic_configure_irq(unsigned int irq, unsigned int type,
void __iomem *base, void (*sync_access)(void));

View File

@ -744,6 +744,9 @@ static bool gic_dist_security_disabled(void)
static int gic_cpu_pm_notifier(struct notifier_block *self,
unsigned long cmd, void *v)
{
if (from_suspend)
return NOTIFY_OK;
if (cmd == CPU_PM_EXIT) {
if (gic_dist_security_disabled())
gic_enable_redist(true);

View File

@ -22,6 +22,8 @@
#include <linux/spinlock.h>
#include <linux/syscore_ops.h>
bool from_suspend;
static ATOMIC_NOTIFIER_HEAD(cpu_pm_notifier_chain);
static int cpu_pm_notify(enum cpu_pm_event event, int nr_to_call, int *nr_calls,
@ -184,6 +186,7 @@ static int cpu_pm_suspend(void)
{
int ret;
from_suspend = true;
ret = cpu_pm_enter();
if (ret)
return ret;
@ -194,6 +197,7 @@ static int cpu_pm_suspend(void)
static void cpu_pm_resume(void)
{
from_suspend = false;
cpu_cluster_pm_exit(0);
cpu_pm_exit();
}