diff options
author | Andrew Lunn <andrew@lunn.ch> | 2017-12-02 12:11:04 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-12-28 06:26:35 -0500 |
commit | 39c3fd58952d7599d367c84c1330b785d91d6088 (patch) | |
tree | 156853f464f0148928514478abf3aeca86e30397 /drivers/pinctrl/pinctrl-single.c | |
parent | beacbc68ac3e23821a681adb30b45dc55b17488d (diff) |
kernel/irq: Extend lockdep class for request mutex
The IRQ code already has support for lockdep class for the lock mutex
in an interrupt descriptor. Extend this to add a second class for the
request mutex in the descriptor. Not having a class is resulting in
false positive splats in some code paths.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: linus.walleij@linaro.org
Cc: grygorii.strashko@ti.com
Cc: f.fainelli@gmail.com
Link: https://lkml.kernel.org/r/1512234664-21555-1-git-send-email-andrew@lunn.ch
Diffstat (limited to 'drivers/pinctrl/pinctrl-single.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-single.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index e6cd8de793e2..3501491e5bfc 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c | |||
@@ -222,6 +222,9 @@ static enum pin_config_param pcs_bias[] = { | |||
222 | */ | 222 | */ |
223 | static struct lock_class_key pcs_lock_class; | 223 | static struct lock_class_key pcs_lock_class; |
224 | 224 | ||
225 | /* Class for the IRQ request mutex */ | ||
226 | static struct lock_class_key pcs_request_class; | ||
227 | |||
225 | /* | 228 | /* |
226 | * REVISIT: Reads and writes could eventually use regmap or something | 229 | * REVISIT: Reads and writes could eventually use regmap or something |
227 | * generic. But at least on omaps, some mux registers are performance | 230 | * generic. But at least on omaps, some mux registers are performance |
@@ -1486,7 +1489,7 @@ static int pcs_irqdomain_map(struct irq_domain *d, unsigned int irq, | |||
1486 | irq_set_chip_data(irq, pcs_soc); | 1489 | irq_set_chip_data(irq, pcs_soc); |
1487 | irq_set_chip_and_handler(irq, &pcs->chip, | 1490 | irq_set_chip_and_handler(irq, &pcs->chip, |
1488 | handle_level_irq); | 1491 | handle_level_irq); |
1489 | irq_set_lockdep_class(irq, &pcs_lock_class); | 1492 | irq_set_lockdep_class(irq, &pcs_lock_class, &pcs_request_class); |
1490 | irq_set_noprobe(irq); | 1493 | irq_set_noprobe(irq); |
1491 | 1494 | ||
1492 | return 0; | 1495 | return 0; |