RE: cciss broken with 2.6.22-rc2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: Hannes Reinecke [mailto:hare@xxxxxxx] 
> Sent: Tuesday, May 29, 2007 7:01 AM
> To: Miller, Mike (OS Dev); SCSI Mailing List
> Subject: cciss broken with 2.6.22-rc2
> 
> Hi Mike,
> 
> with the latest git snapshot the cciss driver hangs during 
> initialisation. Enabling debug output I get:
> 
> cciss0: <0x3230> at PCI 0000:06:00.0 IRQ 4338 using DAC 
> Sending cff0000 - down to controller
> cciss:  FIFO Empty read
> cciss:  Read cff00000 back from board
> Sending cff0000 - down to controller
> cciss:  FIFO Empty read
> cciss:  Read cff00002 back from board
> LUN Data
> --------------------------
> Sending cff0000 - down to controller
> cciss:  FIFO Empty read
> cciss:  Read cff00000 back from board
>       blocks= 286677120 block_size= 512
> Sending cff0000 - down to controller
> cciss:  FIFO Empty read
> cciss:  Read cff00002 back from board
>       heads=255, sectors=32, cylinders=35132
> 
> Sending 5103000 - down to controller
> 
> and then the machine hangs.
> I'll try to investigate, but as I'm no expert in cciss my 
> results might be limited.
> Looks like one of your recent fixes broke it; 2.6.21 worked fine.

Hannes,
Actually, it was someone else who broke the driver by making changes in msi.c. This patch fixes the hang:

From: "Mike Miller (OS Dev)" <mikem@xxxxxxxxxxxxxxxxxxxxxxx> writes:

Found what seems the problem with our vectors being listed backward. In drivers/pci/msi.c we should be using list_add_tail rather than list_add to preserve the ordering across various kernels. Please consider this for inclusion.

Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx>

diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 0e67723..d74975d 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -333,7 +333,7 @@ static int msi_capability_init(struct pci_dev *dev)
 			msi_mask_bits_reg(pos, is_64bit_address(control)),
 			maskbits);
 	}
-	list_add(&entry->list, &dev->msi_list);
+	list_add_tail(&entry->list, &dev->msi_list);
 
 	/* Configure MSI capability structure */
 	ret = arch_setup_msi_irqs(dev, 1, PCI_CAP_ID_MSI); @@ -404,7 +404,7 @@ static int msix_capability_init(struct pci_dev *dev,
 		entry->dev = dev;
 		entry->mask_base = base;
 
-		list_add(&entry->list, &dev->msi_list);
+		list_add_tail(&entry->list, &dev->msi_list);
 	}
 
 	ret = arch_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSIX);
------------------------------------------------------------------------------------------------
This patch fixes an Oops during rmmod:

Signed-off-by: Mike Miller <mike.miller@xxxxxx>
Signed-off-by: Chase Maupin <chase.maupin@xxxxxx>
Signed-off-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx>
---
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index e01380b..6632150 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -558,12 +558,12 @@ static int msi_free_irqs(struct pci_dev* dev)
 
 	list_for_each_entry_safe(entry, tmp, &dev->msi_list, list) {
 		if (entry->msi_attrib.type == PCI_CAP_ID_MSIX) {
-			if (list_is_last(&entry->list, &dev->msi_list))
-				iounmap(entry->mask_base);
-
 			writel(1, entry->mask_base + entry->msi_attrib.entry_nr
 				  * PCI_MSIX_ENTRY_SIZE
 				  + PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET);
+
+			if (list_is_last(&entry->list, &dev->msi_list))
+				iounmap(entry->mask_base);
 		}
 		list_del(&entry->list);
 		kfree(entry);
------------------------------------------------------------------------------------------------
WARNING: These patches may suffer from wordwrap as they are coming from my microsucks email client.

We found and fixed these late last week. So I hope they make into Linus' git tree ASAP.

Thanks,
mikem

> 
> Cheers,
> 
> Hannes
> -- 
> Dr. Hannes Reinecke		      zSeries & Storage
> hare@xxxxxxx			      +49 911 74053 688
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: Markus Rex, HRB 16746 (AG Nürnberg)
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux