ARM: OMAP: fix false lockdep warnings
authorDavid Brownell <david-b@pacbell.net>
Tue, 26 Feb 2008 19:10:50 +0000 (11:10 -0800)
committerTony Lindgren <tony@atomide.com>
Wed, 5 Mar 2008 08:23:19 +0000 (10:23 +0200)
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>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/plat-omap/gpio.c

index 56f4d1394d562bdfc652a2d7f13ee436042ed88c..9030495509f825f9b40c4ae8684af4fed040ddc6 100644 (file)
@@ -1277,6 +1277,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS];
 static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
 #endif
 
+/* This lock class tells lockdep that GPIO irqs are in a different
+ * category than their parents, so it won't report false recursion.
+ */
+static struct lock_class_key gpio_lock_class;
+
 static int __init _omap_gpio_init(void)
 {
        int i;
@@ -1450,6 +1455,7 @@ static int __init _omap_gpio_init(void)
 #endif
                for (j = bank->virtual_irq_start;
                     j < bank->virtual_irq_start + gpio_count; j++) {
+                       lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
                        set_irq_chip_data(j, bank);
                        if (bank_is_mpuio(bank))
                                set_irq_chip(j, &mpuio_irq_chip);