Patchwork powerpc/fsl-msi: use a different locklcass for the cascade interrupt

login
register
mail settings
Submitter Sebastian Siewior
Date April 2, 2013, 1:33 p.m.
Message ID <1364909616-59478-1-git-send-email-bigeasy@linutronix.de>
Download mbox | patch
Permalink /patch/233002/
State Accepted, archived
Commit 58631ad1205677c5b33f511fd5aae26eaa0c87c6
Delegated to: Kumar Gala
Headers show

Comments

Sebastian Siewior - April 2, 2013, 1:33 p.m.
lockdep thinks that it might deadlock because it grabs a lock of the
same class while calling the generic_irq_handler(). This annotation will
inform lockdep that it will not.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 arch/powerpc/sysdev/fsl_msi.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Kumar Gala - April 3, 2013, 4:46 p.m.
On Apr 2, 2013, at 8:33 AM, Sebastian Andrzej Siewior wrote:

> lockdep thinks that it might deadlock because it grabs a lock of the
> same class while calling the generic_irq_handler(). This annotation will
> inform lockdep that it will not.
> 
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
> arch/powerpc/sysdev/fsl_msi.c |    4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)

applied to next

- k

Patch

diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c
index 178c994..ab02db3 100644
--- a/arch/powerpc/sysdev/fsl_msi.c
+++ b/arch/powerpc/sysdev/fsl_msi.c
@@ -333,6 +333,8 @@  static int fsl_of_msi_remove(struct platform_device *ofdev)
 	return 0;
 }
 
+static struct lock_class_key fsl_msi_irq_class;
+
 static int fsl_msi_setup_hwirq(struct fsl_msi *msi, struct platform_device *dev,
 			       int offset, int irq_index)
 {
@@ -351,7 +353,7 @@  static int fsl_msi_setup_hwirq(struct fsl_msi *msi, struct platform_device *dev,
 		dev_err(&dev->dev, "No memory for MSI cascade data\n");
 		return -ENOMEM;
 	}
-
+	irq_set_lockdep_class(virt_msir, &fsl_msi_irq_class);
 	msi->msi_virqs[irq_index] = virt_msir;
 	cascade_data->index = offset;
 	cascade_data->msi_data = msi;