linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] ipr: possible irq lock inversion dependency detected
@ 2013-05-24 14:59 wenxiong
  2013-05-24 14:59 ` [PATCH 1/1] " wenxiong
  0 siblings, 1 reply; 3+ messages in thread
From: wenxiong @ 2013-05-24 14:59 UTC (permalink / raw)
  To: James.Bottomley; +Cc: linux-scsi, brking

Hi All,

When enable lockdep, seeing "possible irq lock inversion dependency detected"
error. This patch fixed the issue.

Thanks,
Wendy
-- 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/1] ipr: possible irq lock inversion dependency detected
  2013-05-24 14:59 [PATCH 0/1] ipr: possible irq lock inversion dependency detected wenxiong
@ 2013-05-24 14:59 ` wenxiong
  2013-05-31 12:29   ` Brian King
  0 siblings, 1 reply; 3+ messages in thread
From: wenxiong @ 2013-05-24 14:59 UTC (permalink / raw)
  To: James.Bottomley; +Cc: linux-scsi, brking, Wen Xiong

[-- Attachment #1: driver_lock_patch --]
[-- Type: text/plain, Size: 2677 bytes --]

When enable lockdep, seeing "possible irq lock inversion dependency detected"
error. This patch fixes the issue.

Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
---
 drivers/scsi/ipr.c |   17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

Index: b/drivers/scsi/ipr.c
===================================================================
--- a/drivers/scsi/ipr.c	2013-05-20 09:55:23.000000000 -0500
+++ b/drivers/scsi/ipr.c	2013-05-20 10:00:34.548380858 -0500
@@ -9408,7 +9408,7 @@ static int ipr_probe_ioa(struct pci_dev 
 	void __iomem *ipr_regs;
 	int rc = PCIBIOS_SUCCESSFUL;
 	volatile u32 mask, uproc, interrupts;
-	unsigned long lock_flags;
+	unsigned long lock_flags, driver_lock_flags;
 
 	ENTER;
 
@@ -9631,9 +9631,9 @@ static int ipr_probe_ioa(struct pci_dev 
 	} else
 		ioa_cfg->reset = ipr_reset_start_bist;
 
-	spin_lock(&ipr_driver_lock);
+	spin_lock_irqsave(&ipr_driver_lock, driver_lock_flags);
 	list_add_tail(&ioa_cfg->queue, &ipr_ioa_head);
-	spin_unlock(&ipr_driver_lock);
+	spin_unlock_irqrestore(&ipr_driver_lock, driver_lock_flags);
 
 	LEAVE;
 out:
@@ -9716,6 +9716,7 @@ static void __ipr_remove(struct pci_dev 
 	unsigned long host_lock_flags = 0;
 	struct ipr_ioa_cfg *ioa_cfg = pci_get_drvdata(pdev);
 	int i;
+	unsigned long driver_lock_flags;
 	ENTER;
 
 	spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
@@ -9739,9 +9740,9 @@ static void __ipr_remove(struct pci_dev 
 	INIT_LIST_HEAD(&ioa_cfg->used_res_q);
 	spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
 
-	spin_lock(&ipr_driver_lock);
+	spin_lock_irqsave(&ipr_driver_lock, driver_lock_flags);
 	list_del(&ioa_cfg->queue);
-	spin_unlock(&ipr_driver_lock);
+	spin_unlock_irqrestore(&ipr_driver_lock, driver_lock_flags);
 
 	if (ioa_cfg->sdt_state == ABORT_DUMP)
 		ioa_cfg->sdt_state = WAIT_FOR_DUMP;
@@ -10007,12 +10008,12 @@ static int ipr_halt(struct notifier_bloc
 {
 	struct ipr_cmnd *ipr_cmd;
 	struct ipr_ioa_cfg *ioa_cfg;
-	unsigned long flags = 0;
+	unsigned long flags = 0, driver_lock_flags;
 
 	if (event != SYS_RESTART && event != SYS_HALT && event != SYS_POWER_OFF)
 		return NOTIFY_DONE;
 
-	spin_lock(&ipr_driver_lock);
+	spin_lock_irqsave(&ipr_driver_lock, driver_lock_flags);
 
 	list_for_each_entry(ioa_cfg, &ipr_ioa_head, queue) {
 		spin_lock_irqsave(ioa_cfg->host->host_lock, flags);
@@ -10030,7 +10031,7 @@ static int ipr_halt(struct notifier_bloc
 		ipr_do_req(ipr_cmd, ipr_halt_done, ipr_timeout, IPR_DEVICE_RESET_TIMEOUT);
 		spin_unlock_irqrestore(ioa_cfg->host->host_lock, flags);
 	}
-	spin_unlock(&ipr_driver_lock);
+	spin_unlock_irqrestore(&ipr_driver_lock, driver_lock_flags);
 
 	return NOTIFY_OK;
 }

-- 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/1] ipr: possible irq lock inversion dependency detected
  2013-05-24 14:59 ` [PATCH 1/1] " wenxiong
@ 2013-05-31 12:29   ` Brian King
  0 siblings, 0 replies; 3+ messages in thread
From: Brian King @ 2013-05-31 12:29 UTC (permalink / raw)
  To: wenxiong; +Cc: James.Bottomley, linux-scsi

On 05/24/2013 09:59 AM, wenxiong@linux.vnet.ibm.com wrote:
> When enable lockdep, seeing "possible irq lock inversion dependency detected"
> error. This patch fixes the issue.
> 
> Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>

Acked-by: Brian King <brking@linux.vnet.ibm.com>

-- 
Brian King
Power Linux I/O
IBM Linux Technology Center



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-05-31 12:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-24 14:59 [PATCH 0/1] ipr: possible irq lock inversion dependency detected wenxiong
2013-05-24 14:59 ` [PATCH 1/1] " wenxiong
2013-05-31 12:29   ` Brian King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).