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>
This commit is contained in:
Marc Zyngier 2011-11-25 17:58:19 +01:00 committed by Russell King
parent 97371fa99c
commit abdd7b91da

View File

@ -526,7 +526,8 @@ static void __init gic_pm_init(struct gic_chip_data *gic)
sizeof(u32)); sizeof(u32));
BUG_ON(!gic->saved_ppi_conf); 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 #else
static void __init gic_pm_init(struct gic_chip_data *gic) static void __init gic_pm_init(struct gic_chip_data *gic)