All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] qla1280: firmware load deadlocks kdump
@ 2010-02-08 21:21 Michael Reed
  0 siblings, 0 replies; only message in thread
From: Michael Reed @ 2010-02-08 21:21 UTC (permalink / raw)
  To: linux-scsi; +Cc: Jeremy Higdon, Tony Ernst, Jes Sorensen, Jes Sorensen


The qla1280 driver calls request_firmware() holding the host_lock.  As this lock
is released during the process of loading the firmware into the board, it can be
released (and reacquired) around the call to request_firmware().  Doing so
eliminates the dump_stack() which occurs in local_bh_enable() due to holding
a spinlock.  It also corrects the deadlock which occurs attempting to capture
a kdump with kernel options "irqpoll maxcpus=1".

Signed-off-by: Michael Reed <mdr@sgi.com>


--- linux-2.6.32.5-0.1-a/drivers/scsi/qla1280.c	2009-12-02 21:51:21.000000000 -0600
+++ linux-2.6.32.5-0.1-b/drivers/scsi/qla1280.c	2010-02-04 16:23:10.831352910 -0600
@@ -1640,8 +1640,10 @@ qla1280_load_firmware_pio(struct scsi_ql
 	uint16_t mb[MAILBOX_REGISTER_COUNT], i;
 	int err;
 
+	spin_unlock_irq(ha->host->host_lock);
 	err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname,
 			       &ha->pdev->dev);
+	spin_lock_irq(ha->host->host_lock);
 	if (err) {
 		printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
 		       ql1280_board_tbl[ha->devnum].fwname, err);
@@ -1699,8 +1701,10 @@ qla1280_load_firmware_dma(struct scsi_ql
 		return -ENOMEM;
 #endif
 
+	spin_unlock_irq(ha->host->host_lock);
 	err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname,
 			       &ha->pdev->dev);
+	spin_lock_irq(ha->host->host_lock);
 	if (err) {
 		printk(KERN_ERR "Failed to load image \"%s\" err %d\n",
 		       ql1280_board_tbl[ha->devnum].fwname, err);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-02-08 21:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-08 21:21 [PATCH 1/2] qla1280: firmware load deadlocks kdump Michael Reed

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.