Re: problems with sata_mv and MV88SX5081 under 2.6.28, fine under 2.6.17.6

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

 



Eamonn Hamilton wrote:
Hi Mark.

It bisected down to the following:

e3472cbe5c10a91c737405cd706142787736392c is first bad commit
commit e3472cbe5c10a91c737405cd706142787736392c
Author: Albert Lee <albertcc@xxxxxxxxxx>
Date:   Thu Dec 7 11:37:58 2006 +0800

libata: let ATA_FLAG_PIO_POLLING use polling pio for ATA_PROT_NODATA

Even if ATA_FLAG_PIO_POLLING is set, libata uses irq pio for the ATA_PROT_NODATA protocol. This patch let ATA_FLAG_PIO_POLLING use polling pio for the ATA_PROT_NODATA protocol.

Signed-off-by: Albert Lee <albertcc@xxxxxxxxxx>
Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>
---
..
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 8816e30..d2e6863 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4960,6 +4960,7 @@ unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
    if (ap->flags & ATA_FLAG_PIO_POLLING) {
        switch (qc->tf.protocol) {
        case ATA_PROT_PIO:
+        case ATA_PROT_NODATA:
        case ATA_PROT_ATAPI:
        case ATA_PROT_ATAPI_NODATA:
            qc->tf.flags |= ATA_TFLAG_POLLING;

..
Now, why it dies after that, I don't know, it's one flag being added.
..

Eamonn,

Have you tried testing with the latest sata_mv fix?
This fixes interrupt problems with all 8-port sata_mv chips,
including the one you have access to.

Please give this patch a try and report back.  Thanks.
The patch is against 2.6.28, but will probably apply
to several earlier kernel versions as well.

--- linux-2.6.28/drivers/ata/sata_mv.c	2009-01-13 15:57:11.000000000 -0500
+++ linux/drivers/ata/sata_mv.c	2009-01-14 16:56:38.000000000 -0500
@@ -883,7 +883,7 @@
		struct mv_host_priv *hpriv = ap->host->private_data;
		int hardport = mv_hardport_from_port(ap->port_no);
		void __iomem *hc_mmio = mv_hc_base_from_port(
-					mv_host_base(ap->host), hardport);
+					mv_host_base(ap->host), ap->port_no);
		u32 hc_irq_cause, ipending;

		/* clear EDMA event indicators, if any */
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux