Re: IOMEGA IDE ZIP (ATAPI) drive

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

 



Mark Lord wrote:
> Albert Lee wrote:
> 
>> Mark Lord wrote:
>> ..
>>
>>> I patched the above in, and it was NEVER hit.
>>
>>
>> Do you mean no "wait for DRQ" messages at all?
>> Is the HSM violation still seen?
> 
> 
> The code you sent me to patch in was never hit.
> The "wait for DRQ" message therefore never gets output.
> The exact same set of HSM violation messages still appear.
> 
> Of course this makes perfect sense -- the HSM messages
> are not being generated in response to any command,
> but rather in response to ejecting a disk -- which I think
> causes the drive to generate an unsolicited event.
> 

Hi Mark,

Could you please apply the attached debug patch (against 2.6.21-rc4).
(BTW, the zip 100 must be connected to ata4.)
Hopefully we could have more clue about the HSM violation.

--
thanks,

albert


diff -Nrup linux-2.6.21-rc4/drivers/ata/libata-core.c linux-2.6.21-rc4-mod/drivers/ata/libata-core.c
--- linux-2.6.21-rc4/drivers/ata/libata-core.c	2007-03-16 08:20:01.000000000 +0800
+++ linux-2.6.21-rc4-mod/drivers/ata/libata-core.c	2007-03-20 18:04:15.000000000 +0800
@@ -4350,8 +4350,9 @@ int ata_hsm_move(struct ata_port *ap, st
 	WARN_ON(in_wq != ata_hsm_ok_in_wq(ap, qc));
 
 fsm_start:
-	DPRINTK("ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
-		ap->print_id, qc->tf.protocol, ap->hsm_task_state, status);
+	if (ap->print_id == 4)
+		printk(KERN_ERR "ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
+		       ap->print_id, qc->tf.protocol, ap->hsm_task_state, status);
 
 	switch (ap->hsm_task_state) {
 	case HSM_ST_FIRST:
@@ -5071,8 +5072,14 @@ inline unsigned int ata_host_intr (struc
 	struct ata_eh_info *ehi = &ap->eh_info;
 	u8 status, host_stat = 0;
 
-	VPRINTK("ata%u: protocol %d task_state %d\n",
-		ap->print_id, qc->tf.protocol, ap->hsm_task_state);
+	if (ap->print_id == 4) {
+		printk(KERN_ERR "ata%u: protocol %d task_state %d\n",
+		       ap->print_id, qc->tf.protocol, ap->hsm_task_state);
+
+		host_stat = ap->ops->bmdma_status(ap);
+		printk(KERN_ERR "ata%u: host_stat 0x%X\n", ap->print_id, host_stat);
+	}
+
 
 	/* Check whether we are expecting interrupt in this state */
 	switch (ap->hsm_task_state) {
@@ -5118,11 +5125,17 @@ inline unsigned int ata_host_intr (struc
 
 	/* check altstatus */
 	status = ata_altstatus(ap);
+	if (ap->print_id == 4)
+		printk(KERN_ERR "ata%u: dev_altstatus 0x%X\n",
+		       ap->print_id, status);
 	if (status & ATA_BUSY)
 		goto idle_irq;
 
 	/* check main status, clearing INTRQ */
 	status = ata_chk_status(ap);
+	if (ap->print_id == 4)
+		printk(KERN_ERR "ata%u: dev_status 0x%X\n",
+		       ap->print_id, status);
 	if (unlikely(status & ATA_BUSY))
 		goto idle_irq;
 
diff -Nrup linux-2.6.21-rc4/drivers/ata/libata-scsi.c linux-2.6.21-rc4-mod/drivers/ata/libata-scsi.c
--- linux-2.6.21-rc4/drivers/ata/libata-scsi.c	2007-03-16 08:20:01.000000000 +0800
+++ linux-2.6.21-rc4-mod/drivers/ata/libata-scsi.c	2007-03-20 18:05:38.000000000 +0800
@@ -2773,17 +2773,17 @@ static inline ata_xlat_func_t ata_get_xl
 static inline void ata_scsi_dump_cdb(struct ata_port *ap,
 				     struct scsi_cmnd *cmd)
 {
-#ifdef ATA_DEBUG
 	struct scsi_device *scsidev = cmd->device;
 	u8 *scsicmd = cmd->cmnd;
 
-	DPRINTK("CDB (%u:%d,%d,%d) %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
-		ap->print_id,
-		scsidev->channel, scsidev->id, scsidev->lun,
-		scsicmd[0], scsicmd[1], scsicmd[2], scsicmd[3],
-		scsicmd[4], scsicmd[5], scsicmd[6], scsicmd[7],
-		scsicmd[8]);
-#endif
+	if (ap->print_id == 4) {
+		printk(KERN_ERR "CDB (%u:%d,%d,%d) %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
+		       ap->print_id,
+		       scsidev->channel, scsidev->id, scsidev->lun,
+		       scsicmd[0], scsicmd[1], scsicmd[2], scsicmd[3],
+		       scsicmd[4], scsicmd[5], scsicmd[6], scsicmd[7],
+		       scsicmd[8]);
+	}
 }
 
 static inline int __ata_scsi_queuecmd(struct scsi_cmnd *scmd,

-
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