diff options
author | Marc Zyngier <Marc.Zyngier@arm.com> | 2011-11-25 17:58:19 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-11-26 21:58:54 +0000 |
commit | abdd7b91dab2f8b2e32e90e4b7e809ffb462a662 (patch) | |
tree | 550afb8ca098ee480137eb6f63e04035d90cd69a | |
parent | 97371fa99c1900a84a5220639edd726b35d73931 (diff) | |
download | op-kernel-dev-abdd7b91dab2f8b2e32e90e4b7e809ffb462a662.zip op-kernel-dev-abdd7b91dab2f8b2e32e90e4b7e809ffb462a662.tar.gz |
ARM: 7176/1: cpu_pm: register GIC PM notifier only once
When multiple GICs exist on a platform (RealView PB1176/11MP),
we must make sure the PM notifier block is only registered
once, otherwise we end up corrupting the PM notifier list.
The fix is to only register the notifier when initializing
the first GIC, as the power management functions seem
to iterate over all the registered GICs.
Tested on PB11MP and PB1176.
Reported-by: Will Deacon <will.deacon@arm.com>
Tested-by: Will Deacon <will.deacon@arm.com>
Cc: Colin Cross <ccross@android.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/common/gic.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index 0e6ae47..43240f3 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c @@ -526,7 +526,8 @@ static void __init gic_pm_init(struct gic_chip_data *gic) sizeof(u32)); BUG_ON(!gic->saved_ppi_conf); - cpu_pm_register_notifier(&gic_notifier_block); + if (gic == &gic_data[0]) + cpu_pm_register_notifier(&gic_notifier_block); } #else static void __init gic_pm_init(struct gic_chip_data *gic) |