diff options
author | David Brownell <david-b@pacbell.net> | 2008-03-04 18:08:29 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-03-06 07:18:18 -0500 |
commit | 37aca70c626ce8f4e5848de2d4892b5ed74a6875 (patch) | |
tree | b3d257db13913e55ff93b6b908be69a883ee2ad4 /arch/arm | |
parent | b24061fadc2b996fd38baaf01986eac666d0c61b (diff) |
[ARM] 4848/1: at91: remove false lockdep warnings
Remove false lockdep warnings about lock recursion when declaring
IRQs as being wake-capable, by marking putting GPIO irq_desc locks
into their own class.
(Thanks to Peter Zijlstra for helping track down such a small
fix to this problem.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-at91/gpio.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index f629c2b5f0c5..ee4964abcaf5 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -490,6 +490,11 @@ postcore_initcall(at91_gpio_debugfs_init); | |||
490 | 490 | ||
491 | /*--------------------------------------------------------------------------*/ | 491 | /*--------------------------------------------------------------------------*/ |
492 | 492 | ||
493 | /* This lock class tells lockdep that GPIO irqs are in a different | ||
494 | * category than their parents, so it won't report false recursion. | ||
495 | */ | ||
496 | static struct lock_class_key gpio_lock_class; | ||
497 | |||
493 | /* | 498 | /* |
494 | * Called from the processor-specific init to enable GPIO interrupt support. | 499 | * Called from the processor-specific init to enable GPIO interrupt support. |
495 | */ | 500 | */ |
@@ -510,6 +515,8 @@ void __init at91_gpio_irq_setup(void) | |||
510 | __raw_writel(~0, this->regbase + PIO_IDR); | 515 | __raw_writel(~0, this->regbase + PIO_IDR); |
511 | 516 | ||
512 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { | 517 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { |
518 | lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class); | ||
519 | |||
513 | /* | 520 | /* |
514 | * Can use the "simple" and not "edge" handler since it's | 521 | * Can use the "simple" and not "edge" handler since it's |
515 | * shorter, and the AIC handles interrupts sanely. | 522 | * shorter, and the AIC handles interrupts sanely. |