11_libata_debug.patch

        As usual, debug messages and error triggers.

Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>

 drivers/scsi/ahci.c        |   43 +++++++++++++++++++++++++++++++
 drivers/scsi/libata-core.c |    9 ++++++
 drivers/scsi/sata_sil.c    |   61 ++++++++++++++++++++++++++++++++++++++++++++-
 include/linux/libata.h     |    2 -
 4 files changed, 113 insertions(+), 2 deletions(-)

Index: work/drivers/scsi/ahci.c
===================================================================
--- work.orig/drivers/scsi/ahci.c       2005-07-07 22:08:37.000000000 +0900
+++ work/drivers/scsi/ahci.c    2005-07-07 22:08:37.000000000 +0900
@@ -681,11 +681,54 @@ static int ahci_qc_issue(struct ata_queu
        struct ata_port *ap = qc->ap;
        void *port_mmio = (void *) ap->ioaddr.cmd_addr;
 
+#if 0
+       if (qc->tag == 3) {
+               struct ahci_port_priv *pp = qc->ap->private_data;
+               int offset = qc->tag * AHCI_CMD_TOTAL;
+               u8 *fis = pp->cmd_tbl + offset;
+               printk("AHCI%u: FAILING %02u %p: %08x %08x %08x %08x %08x\n",
+                      ap->id, qc->tag, qc->scsicmd,
+                      ((unsigned *)fis)[0], ((unsigned *)fis)[1],
+                      ((unsigned *)fis)[2], ((unsigned *)fis)[3],
+                      ((unsigned *)fis)[4]);
+               fis[4] = 0xff;
+               fis[5] = 0xff;
+               fis[6] = 0xff;
+               fis[8] = 0xff;
+               fis[9] = 0xff;
+               fis[10] = 0xff;
+       }
+#endif
+
+#if 1
+       {
+               struct ahci_port_priv *pp = qc->ap->private_data;
+               unsigned *fis = pp->cmd_tbl + (qc->tag * AHCI_CMD_TOTAL);
+               printk("AHCI%u: FIS(tag%02u) %p: %08x %08x %08x %08x %08x\n",
+                      ap->id, qc->tag, qc->scsicmd,
+                      fis[0], fis[1], fis[2], fis[3], fis[4]);
+               if (qc->tf.command == 0xa0) {
+                       u8 *p = qc->cdb;
+                       printk("AHCI%u: PACKET: %02x %02x %02x %02x %02x %02x 
%02x %02x  %02x %02x %02x %02x %02x %02x %02x %02x\n",
+                              ap->id,
+                              p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
+                              p[8], p[9], p[10], p[11], p[12], p[13], p[14], 
p[15]);
+               }
+       }
+#endif
+
        if (qc->flags & ATA_QCFLAG_NCQ) {
                writel(1 << qc->tag, port_mmio + PORT_SCR_ACT);
                readl(port_mmio + PORT_SCR_ACT);
        }
 
+#if 0
+       if (qc->tag == 3) {
+               printk("AHCI: SKIPPING %02u\n", qc->tag);
+               return 0;
+       }
+#endif
+
        writel(1 << qc->tag, port_mmio + PORT_CMD_ISSUE);
        readl(port_mmio + PORT_CMD_ISSUE);      /* flush */
 
Index: work/drivers/scsi/libata-core.c
===================================================================
--- work.orig/drivers/scsi/libata-core.c        2005-07-07 22:08:37.000000000 
+0900
+++ work/drivers/scsi/libata-core.c     2005-07-07 22:08:37.000000000 +0900
@@ -2981,6 +2981,15 @@ static void atapi_request_sense(struct a
 
        cmd->result = SAM_STAT_CHECK_CONDITION;
 
+#if 1
+       {
+               u8 *p = cmd->sense_buffer;
+               printk("SENSE: %02x %02x %02x %02x %02x %02x %02x %02x  %02x 
%02x %02x %02x %02x %02x %02x %02x\n",
+                      p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
+                      p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]);
+       }
+#endif
+
        DPRINTK("EXIT\n");
 }
 
Index: work/include/linux/libata.h
===================================================================
--- work.orig/include/linux/libata.h    2005-07-07 22:08:37.000000000 +0900
+++ work/include/linux/libata.h 2005-07-07 22:08:37.000000000 +0900
@@ -37,7 +37,7 @@
 #undef ATA_VERBOSE_DEBUG       /* yet more debugging output */
 #undef ATA_IRQ_TRAP            /* define to ack screaming irqs */
 #undef ATA_NDEBUG              /* define to disable quick runtime checks */
-#undef ATA_ENABLE_ATAPI                /* define to enable ATAPI support */
+#define ATA_ENABLE_ATAPI       /* define to enable ATAPI support */
 #undef ATA_ENABLE_PATA         /* define to enable PATA support in some
                                 * low-level drivers */
 #undef ATAPI_ENABLE_DMADIR     /* enables ATAPI DMADIR bridge support */
Index: work/drivers/scsi/sata_sil.c
===================================================================
--- work.orig/drivers/scsi/sata_sil.c   2005-07-07 22:08:35.000000000 +0900
+++ work/drivers/scsi/sata_sil.c        2005-07-07 22:08:37.000000000 +0900
@@ -138,6 +138,65 @@ static Scsi_Host_Template sil_sht = {
        .ordered_flush          = 1,
 };
 
+static int sil_qc_debug_issue(struct ata_queued_cmd *qc)
+{
+#if 1
+       {
+               static unsigned cnt = 0;
+               struct ata_port *ap = qc->ap;
+               struct ata_taskfile *tf = &qc->tf;
+
+               if (tf->command == ATA_CMD_READ_EXT) {
+                       if (++cnt % 100 == 0) {
+                               printk("SIL%u: FAILING H f=%02x n=%02x l=%02x 
m=%02x h=%02x L f=%02x n=%02x l=%02x m=%02x h=%02x C=%02x\n",
+                                      ap->id, tf->hob_feature, tf->hob_nsect,
+                                      tf->hob_lbal, tf->hob_lbam, tf->hob_lbah,
+                                      tf->feature, tf->nsect, tf->lbal,
+                                      tf->lbam, tf->lbah, tf->command);
+                               tf->hob_lbal = 0xff;
+                               tf->hob_lbam = 0xff;
+                               tf->hob_lbah = 0xff;
+                       }
+               }
+       }
+#endif
+
+#if 1
+       {
+               struct ata_port *ap = qc->ap;
+               struct ata_taskfile *tf = &qc->tf;
+               printk("SIL%u: tf %p: H f=%02x n=%02x l=%02x m=%02x h=%02x L 
f=%02x n=%02x l=%02x m=%02x h=%02x C=%02x\n",
+                      ap->id, qc->scsicmd, tf->hob_feature, tf->hob_nsect,
+                      tf->hob_lbal, tf->hob_lbam, tf->hob_lbah, tf->feature,
+                      tf->nsect, tf->lbal, tf->lbam, tf->lbah, tf->command);
+
+               if (qc->tf.command == 0xa0) {
+                       u8 *p = qc->cdb;
+                       printk("SIL%u: PACKET: %02x %02x %02x %02x %02x %02x 
%02x %02x  %02x %02x %02x %02x %02x %02x %02x %02x\n",
+                              ap->id,
+                              p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
+                              p[8], p[9], p[10], p[11], p[12], p[13], p[14], 
p[15]);
+               }
+       }
+#endif
+
+#if 0
+       {
+               static unsigned cnt = 0;
+               struct ata_port *ap = qc->ap;
+               struct ata_taskfile *tf = &qc->tf;
+
+               if (tf->command == ATA_CMD_READ_EXT) {
+                       if (++cnt % 100 == 0) {
+                               printk("SIL%u: skipping...\n", ap->id);
+                               return 0;
+                       }
+               }
+       }
+#endif
+       return ata_qc_issue_prot(qc);
+}
+
 static struct ata_port_operations sil_ops = {
        .port_disable           = ata_port_disable,
        .dev_config             = sil_dev_config,
@@ -153,7 +212,7 @@ static struct ata_port_operations sil_op
        .bmdma_stop             = ata_bmdma_stop,
        .bmdma_status           = ata_bmdma_status,
        .qc_prep                = ata_qc_prep,
-       .qc_issue               = ata_qc_issue_prot,
+       .qc_issue               = sil_qc_debug_issue,
        .error_handler          = ata_error_handler,
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,

-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to