diff --git a/debian/changelog b/debian/changelog index 2594d6e29..686994f8f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -61,6 +61,7 @@ linux-2.6 (2.6.31~rc7-1~experimental.1) UNRELEASED; urgency=low * dvb-usb-af9005: remove firmware and disable * Add warning on upgrade to a new upstream version where the system appears to be missing necessary firmware files (closes: #541702) + * qla1280: Release spinlock when requesting firmware (closes: #543244) [ Martin Michlmayr ] * [armel/orion5x, armel/kirkwood] Set GPIO_SYSFS=y since these diff --git a/debian/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch b/debian/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch new file mode 100644 index 000000000..85d9bed27 --- /dev/null +++ b/debian/patches/bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch @@ -0,0 +1,35 @@ +commit 480c1e36532fc2783834d9582a11fbf1d493af42 +Author: Ben Hutchings +Date: Sun Aug 16 03:42:24 2009 +0100 + + qla1280: Drop host_lock while requesting firmware + + request_firmware() may sleep and it appears to be safe to release the + spinlock here. + +diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c +index 5defe5e..97cbf12 100644 +--- a/drivers/scsi/qla1280.c ++++ b/drivers/scsi/qla1280.c +@@ -1642,8 +1642,10 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha) + 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); +@@ -1701,8 +1703,10 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) + 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); diff --git a/debian/patches/series/base b/debian/patches/series/base index 33053be11..abace57c2 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -34,3 +34,4 @@ + features/arm/openrd-machtype.patch + features/arm/openrd.patch + features/arm/openrd-sata.patch ++ bugfix/all/drivers-scsi-qla1280-request-firmware-unlocked.patch